@@ -5651,24 +5651,9 @@ unsigned SIInstrInfo::buildExtractSubReg(
5651
5651
DebugLoc DL = MI->getDebugLoc ();
5652
5652
Register SubReg = MRI.createVirtualRegister (SubRC);
5653
5653
5654
- if (SuperReg.getSubReg () == AMDGPU::NoSubRegister) {
5655
- BuildMI (*MBB, MI, DL, get (TargetOpcode::COPY), SubReg)
5656
- .addReg (SuperReg.getReg (), 0 , SubIdx);
5657
- return SubReg;
5658
- }
5659
-
5660
- // Just in case the super register is itself a sub-register, copy it to a new
5661
- // value so we don't need to worry about merging its subreg index with the
5662
- // SubIdx passed to this function. The register coalescer should be able to
5663
- // eliminate this extra copy.
5664
- Register NewSuperReg = MRI.createVirtualRegister (SuperRC);
5665
-
5666
- BuildMI (*MBB, MI, DL, get (TargetOpcode::COPY), NewSuperReg)
5667
- .addReg (SuperReg.getReg (), 0 , SuperReg.getSubReg ());
5668
-
5654
+ unsigned NewSubIdx = RI.composeSubRegIndices (SuperReg.getSubReg (), SubIdx);
5669
5655
BuildMI (*MBB, MI, DL, get (TargetOpcode::COPY), SubReg)
5670
- .addReg (NewSuperReg, 0 , SubIdx);
5671
-
5656
+ .addReg (SuperReg.getReg (), 0 , NewSubIdx);
5672
5657
return SubReg;
5673
5658
}
5674
5659
0 commit comments