mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-11-01 15:17:25 +00:00
R600/SI: Remove VReg_32 register class
Use VGPR_32 register class instead. These two register classes were identical and having separate classes was causing SIInstrInfo::isLegalOperands() to be overly conservative in some cases. This change is necessary to prevent future paches from missing a folding opportunity in fneg-fabs.ll. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@225382 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -44,7 +44,7 @@ SITargetLowering::SITargetLowering(TargetMachine &TM) :
|
||||
addRegisterClass(MVT::v64i8, &AMDGPU::SReg_512RegClass);
|
||||
|
||||
addRegisterClass(MVT::i32, &AMDGPU::SReg_32RegClass);
|
||||
addRegisterClass(MVT::f32, &AMDGPU::VReg_32RegClass);
|
||||
addRegisterClass(MVT::f32, &AMDGPU::VGPR_32RegClass);
|
||||
|
||||
addRegisterClass(MVT::f64, &AMDGPU::VReg_64RegClass);
|
||||
addRegisterClass(MVT::v2i32, &AMDGPU::SReg_64RegClass);
|
||||
@@ -876,13 +876,13 @@ SDValue SITargetLowering::LowerINTRINSIC_WO_CHAIN(SDValue Op,
|
||||
return CreateLiveInRegister(DAG, &AMDGPU::SReg_32RegClass,
|
||||
TRI->getPreloadedValue(MF, SIRegisterInfo::TGID_Z), VT);
|
||||
case Intrinsic::r600_read_tidig_x:
|
||||
return CreateLiveInRegister(DAG, &AMDGPU::VReg_32RegClass,
|
||||
return CreateLiveInRegister(DAG, &AMDGPU::VGPR_32RegClass,
|
||||
TRI->getPreloadedValue(MF, SIRegisterInfo::TIDIG_X), VT);
|
||||
case Intrinsic::r600_read_tidig_y:
|
||||
return CreateLiveInRegister(DAG, &AMDGPU::VReg_32RegClass,
|
||||
return CreateLiveInRegister(DAG, &AMDGPU::VGPR_32RegClass,
|
||||
TRI->getPreloadedValue(MF, SIRegisterInfo::TIDIG_Y), VT);
|
||||
case Intrinsic::r600_read_tidig_z:
|
||||
return CreateLiveInRegister(DAG, &AMDGPU::VReg_32RegClass,
|
||||
return CreateLiveInRegister(DAG, &AMDGPU::VGPR_32RegClass,
|
||||
TRI->getPreloadedValue(MF, SIRegisterInfo::TIDIG_Z), VT);
|
||||
case AMDGPUIntrinsic::SI_load_const: {
|
||||
SDValue Ops[] = {
|
||||
@@ -2013,7 +2013,7 @@ void SITargetLowering::adjustWritemask(MachineSDNode *&Node,
|
||||
// If we only got one lane, replace it with a copy
|
||||
// (if NewDmask has only one bit set...)
|
||||
if (NewDmask && (NewDmask & (NewDmask-1)) == 0) {
|
||||
SDValue RC = DAG.getTargetConstant(AMDGPU::VReg_32RegClassID, MVT::i32);
|
||||
SDValue RC = DAG.getTargetConstant(AMDGPU::VGPR_32RegClassID, MVT::i32);
|
||||
SDNode *Copy = DAG.getMachineNode(TargetOpcode::COPY_TO_REGCLASS,
|
||||
SDLoc(), Users[Lane]->getValueType(0),
|
||||
SDValue(Node, 0), RC);
|
||||
@@ -2101,7 +2101,7 @@ void SITargetLowering::AdjustInstrPostInstrSelection(MachineInstr *MI,
|
||||
const TargetRegisterClass *RC;
|
||||
switch (BitsSet) {
|
||||
default: return;
|
||||
case 1: RC = &AMDGPU::VReg_32RegClass; break;
|
||||
case 1: RC = &AMDGPU::VGPR_32RegClass; break;
|
||||
case 2: RC = &AMDGPU::VReg_64RegClass; break;
|
||||
case 3: RC = &AMDGPU::VReg_96RegClass; break;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user