forked from OSchip/llvm-project
AMDGPU/GlobalISel: Introduce vcc reg bank
I'm not entirely sure this is the correct thing to do with the global isel philosophy, but I think this is necessary to handle how differently SGPRs are used normally vs. from a condition. For example, it makes sense to allow a copy from a VGPR to an SGPR, but it makes no sense to allow a copy from VGPRs to SGPRs used as select mask. This avoids regbankselecting strange code with a truncate feeding directly into a condition field. Now a copy is forced from sgpr(s1) to vcc, which is more sensible to handle. Some of these issues could probably avoided with making enough operations resulting in i1 illegal. I think we can't avoid this register bank for legality. For example, an i1 and where one source is from a truncate, and one source is a compare needs some kind of copy inserted to make sure both are in condition registers. llvm-svn: 350611
This commit is contained in:
parent
25ff893712
commit
c765240060
|
@ -16,27 +16,29 @@ namespace AMDGPU {
|
||||||
|
|
||||||
enum PartialMappingIdx {
|
enum PartialMappingIdx {
|
||||||
None = - 1,
|
None = - 1,
|
||||||
PM_SGPR1 = 1,
|
PM_SGPR1 = 2,
|
||||||
PM_SGPR16 = 5,
|
PM_SGPR16 = 6,
|
||||||
PM_SGPR32 = 6,
|
PM_SGPR32 = 7,
|
||||||
PM_SGPR64 = 7,
|
PM_SGPR64 = 8,
|
||||||
PM_SGPR128 = 8,
|
PM_SGPR128 = 9,
|
||||||
PM_SGPR256 = 9,
|
PM_SGPR256 = 10,
|
||||||
PM_SGPR512 = 10,
|
PM_SGPR512 = 11,
|
||||||
PM_VGPR1 = 11,
|
PM_VGPR1 = 12,
|
||||||
PM_VGPR16 = 15,
|
PM_VGPR16 = 16,
|
||||||
PM_VGPR32 = 16,
|
PM_VGPR32 = 17,
|
||||||
PM_VGPR64 = 17,
|
PM_VGPR64 = 18,
|
||||||
PM_VGPR128 = 18,
|
PM_VGPR128 = 19,
|
||||||
PM_VGPR256 = 19,
|
PM_VGPR256 = 20,
|
||||||
PM_VGPR512 = 20,
|
PM_VGPR512 = 21,
|
||||||
PM_SGPR96 = 21,
|
PM_SGPR96 = 22,
|
||||||
PM_VGPR96 = 22
|
PM_VGPR96 = 23
|
||||||
};
|
};
|
||||||
|
|
||||||
const RegisterBankInfo::PartialMapping PartMappings[] {
|
const RegisterBankInfo::PartialMapping PartMappings[] {
|
||||||
// StartIdx, Length, RegBank
|
// StartIdx, Length, RegBank
|
||||||
{0, 1, SCCRegBank},
|
{0, 1, SCCRegBank},
|
||||||
|
{0, 1, VCCRegBank},
|
||||||
|
|
||||||
{0, 1, SGPRRegBank}, // SGPR begin
|
{0, 1, SGPRRegBank}, // SGPR begin
|
||||||
{0, 16, SGPRRegBank},
|
{0, 16, SGPRRegBank},
|
||||||
{0, 32, SGPRRegBank},
|
{0, 32, SGPRRegBank},
|
||||||
|
@ -60,37 +62,40 @@ const RegisterBankInfo::ValueMapping ValMappings[] {
|
||||||
// SCC
|
// SCC
|
||||||
{&PartMappings[0], 1},
|
{&PartMappings[0], 1},
|
||||||
|
|
||||||
// SGPRs
|
// VCC
|
||||||
{&PartMappings[1], 1},
|
{&PartMappings[1], 1},
|
||||||
|
|
||||||
|
// SGPRs
|
||||||
|
{&PartMappings[2], 1},
|
||||||
{nullptr, 0}, // Illegal power of 2 sizes
|
{nullptr, 0}, // Illegal power of 2 sizes
|
||||||
{nullptr, 0},
|
{nullptr, 0},
|
||||||
{nullptr, 0},
|
{nullptr, 0},
|
||||||
{&PartMappings[2], 1},
|
|
||||||
{&PartMappings[3], 1},
|
{&PartMappings[3], 1},
|
||||||
{&PartMappings[4], 1},
|
{&PartMappings[4], 1},
|
||||||
{&PartMappings[5], 1},
|
{&PartMappings[5], 1},
|
||||||
{&PartMappings[6], 1},
|
{&PartMappings[6], 1},
|
||||||
{&PartMappings[7], 1},
|
{&PartMappings[7], 1},
|
||||||
|
{&PartMappings[8], 1},
|
||||||
|
|
||||||
// VGPRs
|
// VGPRs
|
||||||
{&PartMappings[8], 1},
|
|
||||||
{nullptr, 0},
|
|
||||||
{nullptr, 0},
|
|
||||||
{nullptr, 0},
|
|
||||||
{&PartMappings[9], 1},
|
{&PartMappings[9], 1},
|
||||||
|
{nullptr, 0},
|
||||||
|
{nullptr, 0},
|
||||||
|
{nullptr, 0},
|
||||||
{&PartMappings[10], 1},
|
{&PartMappings[10], 1},
|
||||||
{&PartMappings[11], 1},
|
{&PartMappings[11], 1},
|
||||||
{&PartMappings[12], 1},
|
{&PartMappings[12], 1},
|
||||||
{&PartMappings[13], 1},
|
{&PartMappings[13], 1},
|
||||||
{&PartMappings[14], 1},
|
{&PartMappings[14], 1},
|
||||||
{&PartMappings[15], 1},
|
{&PartMappings[15], 1},
|
||||||
{&PartMappings[16], 1}
|
{&PartMappings[16], 1},
|
||||||
|
{&PartMappings[17], 1}
|
||||||
};
|
};
|
||||||
|
|
||||||
enum ValueMappingIdx {
|
enum ValueMappingIdx {
|
||||||
SCCStartIdx = 0,
|
SCCStartIdx = 0,
|
||||||
SGPRStartIdx = 1,
|
SGPRStartIdx = 2,
|
||||||
VGPRStartIdx = 11
|
VGPRStartIdx = 12
|
||||||
};
|
};
|
||||||
|
|
||||||
const RegisterBankInfo::ValueMapping *getValueMapping(unsigned BankID,
|
const RegisterBankInfo::ValueMapping *getValueMapping(unsigned BankID,
|
||||||
|
@ -100,12 +105,18 @@ const RegisterBankInfo::ValueMapping *getValueMapping(unsigned BankID,
|
||||||
case 1:
|
case 1:
|
||||||
if (BankID == AMDGPU::SCCRegBankID)
|
if (BankID == AMDGPU::SCCRegBankID)
|
||||||
return &ValMappings[0];
|
return &ValMappings[0];
|
||||||
|
if (BankID == AMDGPU::VCCRegBankID)
|
||||||
|
return &ValMappings[1];
|
||||||
|
|
||||||
|
// 1-bit values not from a compare etc.
|
||||||
Idx = BankID == AMDGPU::SGPRRegBankID ? PM_SGPR1 : PM_VGPR1;
|
Idx = BankID == AMDGPU::SGPRRegBankID ? PM_SGPR1 : PM_VGPR1;
|
||||||
break;
|
break;
|
||||||
case 96:
|
case 96:
|
||||||
|
assert(BankID != AMDGPU::VCCRegBankID);
|
||||||
Idx = BankID == AMDGPU::SGPRRegBankID ? PM_SGPR96 : PM_VGPR96;
|
Idx = BankID == AMDGPU::SGPRRegBankID ? PM_SGPR96 : PM_VGPR96;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
assert(BankID != AMDGPU::VCCRegBankID);
|
||||||
Idx = BankID == AMDGPU::VGPRRegBankID ? VGPRStartIdx : SGPRStartIdx;
|
Idx = BankID == AMDGPU::VGPRRegBankID ? VGPRStartIdx : SGPRStartIdx;
|
||||||
Idx += Log2_32_Ceil(Size);
|
Idx += Log2_32_Ceil(Size);
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -75,10 +75,6 @@ unsigned AMDGPURegisterBankInfo::copyCost(const RegisterBank &Dst,
|
||||||
unsigned Size) const {
|
unsigned Size) const {
|
||||||
if (Dst.getID() == AMDGPU::SGPRRegBankID &&
|
if (Dst.getID() == AMDGPU::SGPRRegBankID &&
|
||||||
Src.getID() == AMDGPU::VGPRRegBankID) {
|
Src.getID() == AMDGPU::VGPRRegBankID) {
|
||||||
// For boolean values, we can do a v_cmp to "copy" a VGPR to VCC.
|
|
||||||
if (Size == 1)
|
|
||||||
return 1;
|
|
||||||
|
|
||||||
return std::numeric_limits<unsigned>::max();
|
return std::numeric_limits<unsigned>::max();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -86,7 +82,8 @@ unsigned AMDGPURegisterBankInfo::copyCost(const RegisterBank &Dst,
|
||||||
// the valu.
|
// the valu.
|
||||||
if (Size == 1 && Dst.getID() == AMDGPU::SCCRegBankID &&
|
if (Size == 1 && Dst.getID() == AMDGPU::SCCRegBankID &&
|
||||||
(Src.getID() == AMDGPU::SGPRRegBankID ||
|
(Src.getID() == AMDGPU::SGPRRegBankID ||
|
||||||
Src.getID() == AMDGPU::VGPRRegBankID))
|
Src.getID() == AMDGPU::VGPRRegBankID ||
|
||||||
|
Src.getID() == AMDGPU::VCCRegBankID))
|
||||||
return std::numeric_limits<unsigned>::max();
|
return std::numeric_limits<unsigned>::max();
|
||||||
|
|
||||||
return RegisterBankInfo::copyCost(Dst, Src, Size);
|
return RegisterBankInfo::copyCost(Dst, Src, Size);
|
||||||
|
@ -151,7 +148,7 @@ AMDGPURegisterBankInfo::getInstrAlternativeMappings(
|
||||||
AltMappings.push_back(&SSMapping);
|
AltMappings.push_back(&SSMapping);
|
||||||
|
|
||||||
const InstructionMapping &SVMapping = getInstructionMapping(2, 1,
|
const InstructionMapping &SVMapping = getInstructionMapping(2, 1,
|
||||||
getOperandsMapping({AMDGPU::getValueMapping(AMDGPU::SGPRRegBankID, 1),
|
getOperandsMapping({AMDGPU::getValueMapping(AMDGPU::VCCRegBankID, 1),
|
||||||
nullptr, // Predicate operand.
|
nullptr, // Predicate operand.
|
||||||
AMDGPU::getValueMapping(AMDGPU::SGPRRegBankID, Size),
|
AMDGPU::getValueMapping(AMDGPU::SGPRRegBankID, Size),
|
||||||
AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, Size)}),
|
AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, Size)}),
|
||||||
|
@ -159,7 +156,7 @@ AMDGPURegisterBankInfo::getInstrAlternativeMappings(
|
||||||
AltMappings.push_back(&SVMapping);
|
AltMappings.push_back(&SVMapping);
|
||||||
|
|
||||||
const InstructionMapping &VSMapping = getInstructionMapping(3, 1,
|
const InstructionMapping &VSMapping = getInstructionMapping(3, 1,
|
||||||
getOperandsMapping({AMDGPU::getValueMapping(AMDGPU::SGPRRegBankID, 1),
|
getOperandsMapping({AMDGPU::getValueMapping(AMDGPU::VCCRegBankID, 1),
|
||||||
nullptr, // Predicate operand.
|
nullptr, // Predicate operand.
|
||||||
AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, Size),
|
AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, Size),
|
||||||
AMDGPU::getValueMapping(AMDGPU::SGPRRegBankID, Size)}),
|
AMDGPU::getValueMapping(AMDGPU::SGPRRegBankID, Size)}),
|
||||||
|
@ -167,7 +164,7 @@ AMDGPURegisterBankInfo::getInstrAlternativeMappings(
|
||||||
AltMappings.push_back(&VSMapping);
|
AltMappings.push_back(&VSMapping);
|
||||||
|
|
||||||
const InstructionMapping &VVMapping = getInstructionMapping(4, 1,
|
const InstructionMapping &VVMapping = getInstructionMapping(4, 1,
|
||||||
getOperandsMapping({AMDGPU::getValueMapping(AMDGPU::SGPRRegBankID, 1),
|
getOperandsMapping({AMDGPU::getValueMapping(AMDGPU::VCCRegBankID, 1),
|
||||||
nullptr, // Predicate operand.
|
nullptr, // Predicate operand.
|
||||||
AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, Size),
|
AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, Size),
|
||||||
AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, Size)}),
|
AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, Size)}),
|
||||||
|
@ -188,7 +185,7 @@ AMDGPURegisterBankInfo::getInstrAlternativeMappings(
|
||||||
|
|
||||||
const InstructionMapping &VVMapping = getInstructionMapping(2, 1,
|
const InstructionMapping &VVMapping = getInstructionMapping(2, 1,
|
||||||
getOperandsMapping({AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, Size),
|
getOperandsMapping({AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, Size),
|
||||||
AMDGPU::getValueMapping(AMDGPU::SGPRRegBankID, 1),
|
AMDGPU::getValueMapping(AMDGPU::VCCRegBankID, 1),
|
||||||
AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, Size),
|
AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, Size),
|
||||||
AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, Size)}),
|
AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, Size)}),
|
||||||
4); // Num Operands
|
4); // Num Operands
|
||||||
|
@ -213,10 +210,10 @@ AMDGPURegisterBankInfo::getInstrAlternativeMappings(
|
||||||
|
|
||||||
const InstructionMapping &VVMapping = getInstructionMapping(2, 1,
|
const InstructionMapping &VVMapping = getInstructionMapping(2, 1,
|
||||||
getOperandsMapping({AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, Size),
|
getOperandsMapping({AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, Size),
|
||||||
AMDGPU::getValueMapping(AMDGPU::SGPRRegBankID, 1),
|
AMDGPU::getValueMapping(AMDGPU::VCCRegBankID, 1),
|
||||||
AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, Size),
|
AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, Size),
|
||||||
AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, Size),
|
AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, Size),
|
||||||
AMDGPU::getValueMapping(AMDGPU::SGPRRegBankID, 1)}),
|
AMDGPU::getValueMapping(AMDGPU::VCCRegBankID, 1)}),
|
||||||
5); // Num Operands
|
5); // Num Operands
|
||||||
AltMappings.push_back(&VVMapping);
|
AltMappings.push_back(&VVMapping);
|
||||||
return AltMappings;
|
return AltMappings;
|
||||||
|
@ -232,7 +229,7 @@ AMDGPURegisterBankInfo::getInstrAlternativeMappings(
|
||||||
|
|
||||||
const InstructionMapping &VMapping = getInstructionMapping(
|
const InstructionMapping &VMapping = getInstructionMapping(
|
||||||
1, 1, getOperandsMapping(
|
1, 1, getOperandsMapping(
|
||||||
{AMDGPU::getValueMapping(AMDGPU::SGPRRegBankID, 1), nullptr }),
|
{AMDGPU::getValueMapping(AMDGPU::VCCRegBankID, 1), nullptr }),
|
||||||
2); // Num Operands
|
2); // Num Operands
|
||||||
AltMappings.push_back(&VMapping);
|
AltMappings.push_back(&VMapping);
|
||||||
return AltMappings;
|
return AltMappings;
|
||||||
|
@ -306,14 +303,14 @@ AMDGPURegisterBankInfo::getDefaultMappingVOP(const MachineInstr &MI) const {
|
||||||
unsigned Size1 = getSizeInBits(Reg1, MRI, *TRI);
|
unsigned Size1 = getSizeInBits(Reg1, MRI, *TRI);
|
||||||
|
|
||||||
unsigned DefaultBankID = Size1 == 1 ?
|
unsigned DefaultBankID = Size1 == 1 ?
|
||||||
AMDGPU::SGPRRegBankID : AMDGPU::VGPRRegBankID;
|
AMDGPU::VCCRegBankID : AMDGPU::VGPRRegBankID;
|
||||||
unsigned Bank1 = getRegBankID(Reg1, MRI, *TRI, DefaultBankID);
|
unsigned Bank1 = getRegBankID(Reg1, MRI, *TRI, DefaultBankID);
|
||||||
|
|
||||||
OpdsMapping[OpdIdx++] = AMDGPU::getValueMapping(Bank1, Size1);
|
OpdsMapping[OpdIdx++] = AMDGPU::getValueMapping(Bank1, Size1);
|
||||||
|
|
||||||
for (unsigned e = MI.getNumOperands(); OpdIdx != e; ++OpdIdx) {
|
for (unsigned e = MI.getNumOperands(); OpdIdx != e; ++OpdIdx) {
|
||||||
unsigned Size = getSizeInBits(MI.getOperand(OpdIdx).getReg(), MRI, *TRI);
|
unsigned Size = getSizeInBits(MI.getOperand(OpdIdx).getReg(), MRI, *TRI);
|
||||||
unsigned BankID = Size == 1 ? AMDGPU::SGPRRegBankID : AMDGPU::VGPRRegBankID;
|
unsigned BankID = Size == 1 ? AMDGPU::VCCRegBankID : AMDGPU::VGPRRegBankID;
|
||||||
OpdsMapping[OpdIdx] = AMDGPU::getValueMapping(BankID, Size);
|
OpdsMapping[OpdIdx] = AMDGPU::getValueMapping(BankID, Size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -539,7 +536,7 @@ AMDGPURegisterBankInfo::getInstrMapping(const MachineInstr &MI) const {
|
||||||
case AMDGPU::G_FCMP: {
|
case AMDGPU::G_FCMP: {
|
||||||
unsigned Size = MRI.getType(MI.getOperand(2).getReg()).getSizeInBits();
|
unsigned Size = MRI.getType(MI.getOperand(2).getReg()).getSizeInBits();
|
||||||
unsigned Op2Bank = getRegBankID(MI.getOperand(2).getReg(), MRI, *TRI);
|
unsigned Op2Bank = getRegBankID(MI.getOperand(2).getReg(), MRI, *TRI);
|
||||||
OpdsMapping[0] = AMDGPU::getValueMapping(AMDGPU::SGPRRegBankID, 1);
|
OpdsMapping[0] = AMDGPU::getValueMapping(AMDGPU::VCCRegBankID, 1);
|
||||||
OpdsMapping[1] = nullptr; // Predicate Operand.
|
OpdsMapping[1] = nullptr; // Predicate Operand.
|
||||||
OpdsMapping[2] = AMDGPU::getValueMapping(Op2Bank, Size);
|
OpdsMapping[2] = AMDGPU::getValueMapping(Op2Bank, Size);
|
||||||
OpdsMapping[3] = AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, Size);
|
OpdsMapping[3] = AMDGPU::getValueMapping(AMDGPU::VGPRRegBankID, Size);
|
||||||
|
@ -579,7 +576,7 @@ AMDGPURegisterBankInfo::getInstrMapping(const MachineInstr &MI) const {
|
||||||
unsigned Op3Bank = getRegBankID(MI.getOperand(3).getReg(), MRI, *TRI);
|
unsigned Op3Bank = getRegBankID(MI.getOperand(3).getReg(), MRI, *TRI);
|
||||||
unsigned Op0Bank = Op2Bank == AMDGPU::SGPRRegBankID &&
|
unsigned Op0Bank = Op2Bank == AMDGPU::SGPRRegBankID &&
|
||||||
Op3Bank == AMDGPU::SGPRRegBankID ?
|
Op3Bank == AMDGPU::SGPRRegBankID ?
|
||||||
AMDGPU::SCCRegBankID : AMDGPU::SGPRRegBankID;
|
AMDGPU::SCCRegBankID : AMDGPU::VCCRegBankID;
|
||||||
OpdsMapping[0] = AMDGPU::getValueMapping(Op0Bank, 1);
|
OpdsMapping[0] = AMDGPU::getValueMapping(Op0Bank, 1);
|
||||||
OpdsMapping[1] = nullptr; // Predicate Operand.
|
OpdsMapping[1] = nullptr; // Predicate Operand.
|
||||||
OpdsMapping[2] = AMDGPU::getValueMapping(Op2Bank, Size);
|
OpdsMapping[2] = AMDGPU::getValueMapping(Op2Bank, Size);
|
||||||
|
@ -704,7 +701,7 @@ AMDGPURegisterBankInfo::getInstrMapping(const MachineInstr &MI) const {
|
||||||
Op2Bank == AMDGPU::SGPRRegBankID &&
|
Op2Bank == AMDGPU::SGPRRegBankID &&
|
||||||
Op3Bank == AMDGPU::SGPRRegBankID;
|
Op3Bank == AMDGPU::SGPRRegBankID;
|
||||||
unsigned Bank = SGPRSrcs ? AMDGPU::SGPRRegBankID : AMDGPU::VGPRRegBankID;
|
unsigned Bank = SGPRSrcs ? AMDGPU::SGPRRegBankID : AMDGPU::VGPRRegBankID;
|
||||||
Op1Bank = SGPRSrcs ? AMDGPU::SCCRegBankID : AMDGPU::SGPRRegBankID;
|
Op1Bank = SGPRSrcs ? AMDGPU::SCCRegBankID : AMDGPU::VCCRegBankID;
|
||||||
OpdsMapping[0] = AMDGPU::getValueMapping(Bank, Size);
|
OpdsMapping[0] = AMDGPU::getValueMapping(Bank, Size);
|
||||||
OpdsMapping[1] = AMDGPU::getValueMapping(Op1Bank, 1);
|
OpdsMapping[1] = AMDGPU::getValueMapping(Op1Bank, 1);
|
||||||
OpdsMapping[2] = AMDGPU::getValueMapping(Bank, Size);
|
OpdsMapping[2] = AMDGPU::getValueMapping(Bank, Size);
|
||||||
|
@ -733,7 +730,7 @@ AMDGPURegisterBankInfo::getInstrMapping(const MachineInstr &MI) const {
|
||||||
AMDGPU::SGPRRegBankID);
|
AMDGPU::SGPRRegBankID);
|
||||||
assert(MRI.getType(MI.getOperand(0).getReg()).getSizeInBits() == 1);
|
assert(MRI.getType(MI.getOperand(0).getReg()).getSizeInBits() == 1);
|
||||||
if (Bank != AMDGPU::SCCRegBankID)
|
if (Bank != AMDGPU::SCCRegBankID)
|
||||||
Bank = AMDGPU::SGPRRegBankID;
|
Bank = AMDGPU::VCCRegBankID;
|
||||||
|
|
||||||
OpdsMapping[0] = AMDGPU::getValueMapping(Bank, 1);
|
OpdsMapping[0] = AMDGPU::getValueMapping(Bank, 1);
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -15,4 +15,7 @@ def VGPRRegBank : RegisterBank<"VGPR",
|
||||||
[VGPR_32, VReg_64, VReg_96, VReg_128, VReg_256, VReg_512]
|
[VGPR_32, VReg_64, VReg_96, VReg_128, VReg_256, VReg_512]
|
||||||
>;
|
>;
|
||||||
|
|
||||||
def SCCRegBank : RegisterBank <"SCC", [SCC_CLASS ]>;
|
def SCCRegBank : RegisterBank <"SCC", [SCC_CLASS]>;
|
||||||
|
|
||||||
|
// It is helpful to distinguish conditions from ordinary SGPRs.
|
||||||
|
def VCCRegBank : RegisterBank <"VCC", [SReg_64]>;
|
||||||
|
|
|
@ -31,8 +31,9 @@ body: |
|
||||||
; CHECK-LABEL: name: wqm_vote_vcc
|
; CHECK-LABEL: name: wqm_vote_vcc
|
||||||
; CHECK: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
; CHECK: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
||||||
; CHECK: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
|
; CHECK: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
|
||||||
; CHECK: [[ICMP:%[0-9]+]]:sgpr(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]
|
; CHECK: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]
|
||||||
; CHECK: [[INT:%[0-9]+]]:sgpr(s1) = G_INTRINSIC intrinsic(@llvm.amdgcn.wqm.vote), [[ICMP]](s1)
|
; CHECK: [[COPY2:%[0-9]+]]:sgpr(s1) = COPY [[ICMP]](s1)
|
||||||
|
; CHECK: [[INT:%[0-9]+]]:sgpr(s1) = G_INTRINSIC intrinsic(@llvm.amdgcn.wqm.vote), [[COPY2]](s1)
|
||||||
%0:_(s32) = COPY $vgpr0
|
%0:_(s32) = COPY $vgpr0
|
||||||
%1:_(s32) = COPY $vgpr1
|
%1:_(s32) = COPY $vgpr1
|
||||||
%2:_(s1) = G_ICMP intpred(ne), %0, %1
|
%2:_(s1) = G_ICMP intpred(ne), %0, %1
|
||||||
|
|
|
@ -104,9 +104,11 @@ body: |
|
||||||
; CHECK: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
; CHECK: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
||||||
; CHECK: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
|
; CHECK: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
|
||||||
; CHECK: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i64 0
|
; CHECK: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i64 0
|
||||||
; CHECK: [[ICMP:%[0-9]+]]:sgpr(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[C]]
|
; CHECK: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[C]]
|
||||||
; CHECK: [[ICMP1:%[0-9]+]]:sgpr(s1) = G_ICMP intpred(ne), [[COPY1]](s32), [[C]]
|
; CHECK: [[ICMP1:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY1]](s32), [[C]]
|
||||||
; CHECK: [[AND:%[0-9]+]]:sgpr(s1) = G_AND [[ICMP]], [[ICMP1]]
|
; CHECK: [[COPY2:%[0-9]+]]:sgpr(s1) = COPY [[ICMP]](s1)
|
||||||
|
; CHECK: [[COPY3:%[0-9]+]]:sgpr(s1) = COPY [[ICMP1]](s1)
|
||||||
|
; CHECK: [[AND:%[0-9]+]]:sgpr(s1) = G_AND [[COPY2]], [[COPY3]]
|
||||||
; CHECK: S_NOP 0, implicit [[AND]](s1)
|
; CHECK: S_NOP 0, implicit [[AND]](s1)
|
||||||
%0:_(s32) = COPY $vgpr0
|
%0:_(s32) = COPY $vgpr0
|
||||||
%1:_(s32) = COPY $vgpr1
|
%1:_(s32) = COPY $vgpr1
|
||||||
|
@ -129,9 +131,10 @@ body: |
|
||||||
; CHECK: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
; CHECK: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
||||||
; CHECK: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i64 0
|
; CHECK: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i64 0
|
||||||
; CHECK: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[C]]
|
; CHECK: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[C]]
|
||||||
; CHECK: [[ICMP1:%[0-9]+]]:sgpr(s1) = G_ICMP intpred(ne), [[COPY1]](s32), [[C]]
|
; CHECK: [[ICMP1:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY1]](s32), [[C]]
|
||||||
; CHECK: [[COPY2:%[0-9]+]]:sgpr(s1) = COPY [[ICMP]](s1)
|
; CHECK: [[COPY2:%[0-9]+]]:sgpr(s1) = COPY [[ICMP]](s1)
|
||||||
; CHECK: [[AND:%[0-9]+]]:sgpr(s1) = G_AND [[COPY2]], [[ICMP1]]
|
; CHECK: [[COPY3:%[0-9]+]]:sgpr(s1) = COPY [[ICMP1]](s1)
|
||||||
|
; CHECK: [[AND:%[0-9]+]]:sgpr(s1) = G_AND [[COPY2]], [[COPY3]]
|
||||||
; CHECK: S_NOP 0, implicit [[AND]](s1)
|
; CHECK: S_NOP 0, implicit [[AND]](s1)
|
||||||
%0:_(s32) = COPY $sgpr0
|
%0:_(s32) = COPY $sgpr0
|
||||||
%1:_(s32) = COPY $vgpr0
|
%1:_(s32) = COPY $vgpr0
|
||||||
|
@ -196,8 +199,9 @@ body: |
|
||||||
; CHECK: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
|
; CHECK: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
|
||||||
; CHECK: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
; CHECK: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
||||||
; CHECK: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY]](s32)
|
; CHECK: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY]](s32)
|
||||||
; CHECK: [[ICMP:%[0-9]+]]:sgpr(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]
|
; CHECK: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]
|
||||||
; CHECK: [[AND:%[0-9]+]]:sgpr(s1) = G_AND [[TRUNC]], [[ICMP]]
|
; CHECK: [[COPY2:%[0-9]+]]:sgpr(s1) = COPY [[ICMP]](s1)
|
||||||
|
; CHECK: [[AND:%[0-9]+]]:sgpr(s1) = G_AND [[TRUNC]], [[COPY2]]
|
||||||
; CHECK: S_NOP 0, implicit [[AND]](s1)
|
; CHECK: S_NOP 0, implicit [[AND]](s1)
|
||||||
%0:_(s32) = COPY $sgpr0
|
%0:_(s32) = COPY $sgpr0
|
||||||
%1:_(s32) = COPY $vgpr0
|
%1:_(s32) = COPY $vgpr0
|
||||||
|
|
|
@ -11,7 +11,7 @@ body: |
|
||||||
; CHECK: successors: %bb.1(0x80000000)
|
; CHECK: successors: %bb.1(0x80000000)
|
||||||
; CHECK: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
; CHECK: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
||||||
; CHECK: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
|
; CHECK: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
|
||||||
; CHECK: [[ICMP:%[0-9]+]]:sgpr(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]
|
; CHECK: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]
|
||||||
; CHECK: G_BRCOND [[ICMP]](s1), %bb.1
|
; CHECK: G_BRCOND [[ICMP]](s1), %bb.1
|
||||||
; CHECK: bb.1:
|
; CHECK: bb.1:
|
||||||
bb.0.entry:
|
bb.0.entry:
|
||||||
|
@ -57,7 +57,8 @@ body: |
|
||||||
; CHECK: successors: %bb.1(0x80000000)
|
; CHECK: successors: %bb.1(0x80000000)
|
||||||
; CHECK: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
|
; CHECK: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
|
||||||
; CHECK: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY]](s32)
|
; CHECK: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY]](s32)
|
||||||
; CHECK: G_BRCOND [[TRUNC]](s1), %bb.1
|
; CHECK: [[COPY1:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1)
|
||||||
|
; CHECK: G_BRCOND [[COPY1]](s1), %bb.1
|
||||||
; CHECK: bb.1:
|
; CHECK: bb.1:
|
||||||
bb.0.entry:
|
bb.0.entry:
|
||||||
successors: %bb.1
|
successors: %bb.1
|
||||||
|
@ -78,7 +79,7 @@ body: |
|
||||||
; CHECK: successors: %bb.1(0x80000000)
|
; CHECK: successors: %bb.1(0x80000000)
|
||||||
; CHECK: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
; CHECK: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
||||||
; CHECK: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY]](s32)
|
; CHECK: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY]](s32)
|
||||||
; CHECK: [[COPY1:%[0-9]+]]:sgpr(s1) = COPY [[TRUNC]](s1)
|
; CHECK: [[COPY1:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1)
|
||||||
; CHECK: G_BRCOND [[COPY1]](s1), %bb.1
|
; CHECK: G_BRCOND [[COPY1]](s1), %bb.1
|
||||||
; CHECK: bb.1:
|
; CHECK: bb.1:
|
||||||
bb.0.entry:
|
bb.0.entry:
|
||||||
|
@ -106,7 +107,7 @@ body: |
|
||||||
; CHECK: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY]](s32)
|
; CHECK: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY]](s32)
|
||||||
; CHECK: bb.1:
|
; CHECK: bb.1:
|
||||||
; CHECK: successors: %bb.1(0x40000000), %bb.2(0x40000000)
|
; CHECK: successors: %bb.1(0x40000000), %bb.2(0x40000000)
|
||||||
; CHECK: [[COPY1:%[0-9]+]]:sgpr(s1) = COPY [[TRUNC]](s1)
|
; CHECK: [[COPY1:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1)
|
||||||
; CHECK: G_BRCOND [[COPY1]](s1), %bb.1
|
; CHECK: G_BRCOND [[COPY1]](s1), %bb.1
|
||||||
; CHECK: bb.2:
|
; CHECK: bb.2:
|
||||||
bb.0.entry:
|
bb.0.entry:
|
||||||
|
@ -134,7 +135,7 @@ body: |
|
||||||
; CHECK: bb.1:
|
; CHECK: bb.1:
|
||||||
; CHECK: successors: %bb.1(0x40000000), %bb.2(0x40000000)
|
; CHECK: successors: %bb.1(0x40000000), %bb.2(0x40000000)
|
||||||
; CHECK: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY]](s32)
|
; CHECK: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY]](s32)
|
||||||
; CHECK: [[COPY1:%[0-9]+]]:sgpr(s1) = COPY [[TRUNC]](s1)
|
; CHECK: [[COPY1:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1)
|
||||||
; CHECK: G_BRCOND [[COPY1]](s1), %bb.1
|
; CHECK: G_BRCOND [[COPY1]](s1), %bb.1
|
||||||
; CHECK: bb.2:
|
; CHECK: bb.2:
|
||||||
bb.0.entry:
|
bb.0.entry:
|
||||||
|
@ -162,7 +163,7 @@ body: |
|
||||||
; CHECK: successors: %bb.1(0x40000000), %bb.2(0x40000000)
|
; CHECK: successors: %bb.1(0x40000000), %bb.2(0x40000000)
|
||||||
; CHECK: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY]](s32)
|
; CHECK: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY]](s32)
|
||||||
; CHECK: S_NOP 0
|
; CHECK: S_NOP 0
|
||||||
; CHECK: [[COPY1:%[0-9]+]]:sgpr(s1) = COPY [[TRUNC]](s1)
|
; CHECK: [[COPY1:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1)
|
||||||
; CHECK: G_BRCOND [[COPY1]](s1), %bb.1
|
; CHECK: G_BRCOND [[COPY1]](s1), %bb.1
|
||||||
; CHECK: bb.2:
|
; CHECK: bb.2:
|
||||||
bb.0.entry:
|
bb.0.entry:
|
||||||
|
|
|
@ -13,7 +13,7 @@ body: |
|
||||||
; CHECK: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
|
; CHECK: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
|
||||||
; CHECK: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
|
; CHECK: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
|
||||||
; CHECK: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)
|
; CHECK: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)
|
||||||
; CHECK: [[FCMP:%[0-9]+]]:sgpr(s1) = G_FCMP floatpred(uge), [[COPY]](s32), [[COPY2]]
|
; CHECK: [[FCMP:%[0-9]+]]:vcc(s1) = G_FCMP floatpred(uge), [[COPY]](s32), [[COPY2]]
|
||||||
%0:_(s32) = COPY $sgpr0
|
%0:_(s32) = COPY $sgpr0
|
||||||
%1:_(s32) = COPY $sgpr1
|
%1:_(s32) = COPY $sgpr1
|
||||||
%2:_(s1) = G_FCMP floatpred(uge), %0(s32), %1
|
%2:_(s1) = G_FCMP floatpred(uge), %0(s32), %1
|
||||||
|
@ -29,7 +29,7 @@ body: |
|
||||||
; CHECK-LABEL: name: fcmp_sv
|
; CHECK-LABEL: name: fcmp_sv
|
||||||
; CHECK: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
|
; CHECK: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
|
||||||
; CHECK: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
; CHECK: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
||||||
; CHECK: [[FCMP:%[0-9]+]]:sgpr(s1) = G_FCMP floatpred(uge), [[COPY]](s32), [[COPY1]]
|
; CHECK: [[FCMP:%[0-9]+]]:vcc(s1) = G_FCMP floatpred(uge), [[COPY]](s32), [[COPY1]]
|
||||||
%0:_(s32) = COPY $sgpr0
|
%0:_(s32) = COPY $sgpr0
|
||||||
%1:_(s32) = COPY $vgpr0
|
%1:_(s32) = COPY $vgpr0
|
||||||
%2:_(s1) = G_FCMP floatpred(uge), %0, %1
|
%2:_(s1) = G_FCMP floatpred(uge), %0, %1
|
||||||
|
@ -46,7 +46,7 @@ body: |
|
||||||
; CHECK: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
|
; CHECK: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
|
||||||
; CHECK: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
; CHECK: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
||||||
; CHECK: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)
|
; CHECK: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)
|
||||||
; CHECK: [[FCMP:%[0-9]+]]:sgpr(s1) = G_FCMP floatpred(uge), [[COPY1]](s32), [[COPY2]]
|
; CHECK: [[FCMP:%[0-9]+]]:vcc(s1) = G_FCMP floatpred(uge), [[COPY1]](s32), [[COPY2]]
|
||||||
%0:_(s32) = COPY $sgpr0
|
%0:_(s32) = COPY $sgpr0
|
||||||
%1:_(s32) = COPY $vgpr0
|
%1:_(s32) = COPY $vgpr0
|
||||||
%2:_(s1) = G_FCMP floatpred(uge), %1, %0
|
%2:_(s1) = G_FCMP floatpred(uge), %1, %0
|
||||||
|
@ -62,7 +62,7 @@ body: |
|
||||||
; CHECK-LABEL: name: fcmp_vv
|
; CHECK-LABEL: name: fcmp_vv
|
||||||
; CHECK: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
; CHECK: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
||||||
; CHECK: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
|
; CHECK: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
|
||||||
; CHECK: [[ICMP:%[0-9]+]]:sgpr(s1) = G_ICMP floatpred(uge), [[COPY]](s32), [[COPY1]]
|
; CHECK: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP floatpred(uge), [[COPY]](s32), [[COPY1]]
|
||||||
%0:_(s32) = COPY $vgpr0
|
%0:_(s32) = COPY $vgpr0
|
||||||
%1:_(s32) = COPY $vgpr1
|
%1:_(s32) = COPY $vgpr1
|
||||||
%2:_(s1) = G_ICMP floatpred(uge), %0, %1
|
%2:_(s1) = G_ICMP floatpred(uge), %0, %1
|
||||||
|
|
|
@ -28,7 +28,7 @@ body: |
|
||||||
; CHECK-LABEL: name: icmp_sv
|
; CHECK-LABEL: name: icmp_sv
|
||||||
; CHECK: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
|
; CHECK: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
|
||||||
; CHECK: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
; CHECK: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
||||||
; CHECK: [[ICMP:%[0-9]+]]:sgpr(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]
|
; CHECK: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]
|
||||||
%0:_(s32) = COPY $sgpr0
|
%0:_(s32) = COPY $sgpr0
|
||||||
%1:_(s32) = COPY $vgpr0
|
%1:_(s32) = COPY $vgpr0
|
||||||
%2:_(s1) = G_ICMP intpred(ne), %0, %1
|
%2:_(s1) = G_ICMP intpred(ne), %0, %1
|
||||||
|
@ -44,7 +44,7 @@ body: |
|
||||||
; CHECK-LABEL: name: icmp_vs
|
; CHECK-LABEL: name: icmp_vs
|
||||||
; CHECK: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
|
; CHECK: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
|
||||||
; CHECK: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
; CHECK: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
||||||
; CHECK: [[ICMP:%[0-9]+]]:sgpr(s1) = G_ICMP intpred(ne), [[COPY1]](s32), [[COPY]]
|
; CHECK: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY1]](s32), [[COPY]]
|
||||||
%0:_(s32) = COPY $sgpr0
|
%0:_(s32) = COPY $sgpr0
|
||||||
%1:_(s32) = COPY $vgpr0
|
%1:_(s32) = COPY $vgpr0
|
||||||
%2:_(s1) = G_ICMP intpred(ne), %1, %0
|
%2:_(s1) = G_ICMP intpred(ne), %1, %0
|
||||||
|
@ -60,7 +60,7 @@ body: |
|
||||||
; CHECK-LABEL: name: icmp_vv
|
; CHECK-LABEL: name: icmp_vv
|
||||||
; CHECK: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
; CHECK: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
||||||
; CHECK: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
|
; CHECK: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
|
||||||
; CHECK: [[ICMP:%[0-9]+]]:sgpr(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]
|
; CHECK: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]
|
||||||
%0:_(s32) = COPY $vgpr0
|
%0:_(s32) = COPY $vgpr0
|
||||||
%1:_(s32) = COPY $vgpr1
|
%1:_(s32) = COPY $vgpr1
|
||||||
%2:_(s1) = G_ICMP intpred(ne), %0, %1
|
%2:_(s1) = G_ICMP intpred(ne), %0, %1
|
||||||
|
|
|
@ -45,8 +45,8 @@ body: |
|
||||||
; FAST: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i64 0
|
; FAST: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i64 0
|
||||||
; FAST: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(eq), [[COPY2]](s32), [[C]]
|
; FAST: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(eq), [[COPY2]](s32), [[C]]
|
||||||
; FAST: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)
|
; FAST: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)
|
||||||
; FAST: [[COPY4:%[0-9]+]]:sgpr(s1) = COPY [[ICMP]](s1)
|
; FAST: [[COPY4:%[0-9]+]]:vcc(s1) = COPY [[ICMP]](s1)
|
||||||
; FAST: [[SADDE:%[0-9]+]]:vgpr(s32), [[SADDE1:%[0-9]+]]:sgpr(s1) = G_SADDE [[COPY]], [[COPY3]], [[COPY4]]
|
; FAST: [[SADDE:%[0-9]+]]:vgpr(s32), [[SADDE1:%[0-9]+]]:vcc(s1) = G_SADDE [[COPY]], [[COPY3]], [[COPY4]]
|
||||||
; GREEDY-LABEL: name: sadde_s32_vss
|
; GREEDY-LABEL: name: sadde_s32_vss
|
||||||
; GREEDY: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
; GREEDY: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
||||||
; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
|
; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
|
||||||
|
@ -54,8 +54,8 @@ body: |
|
||||||
; GREEDY: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i64 0
|
; GREEDY: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i64 0
|
||||||
; GREEDY: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(eq), [[COPY2]](s32), [[C]]
|
; GREEDY: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(eq), [[COPY2]](s32), [[C]]
|
||||||
; GREEDY: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)
|
; GREEDY: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)
|
||||||
; GREEDY: [[COPY4:%[0-9]+]]:sgpr(s1) = COPY [[ICMP]](s1)
|
; GREEDY: [[COPY4:%[0-9]+]]:vcc(s1) = COPY [[ICMP]](s1)
|
||||||
; GREEDY: [[SADDE:%[0-9]+]]:vgpr(s32), [[SADDE1:%[0-9]+]]:sgpr(s1) = G_SADDE [[COPY]], [[COPY3]], [[COPY4]]
|
; GREEDY: [[SADDE:%[0-9]+]]:vgpr(s32), [[SADDE1:%[0-9]+]]:vcc(s1) = G_SADDE [[COPY]], [[COPY3]], [[COPY4]]
|
||||||
%0:_(s32) = COPY $vgpr0
|
%0:_(s32) = COPY $vgpr0
|
||||||
%1:_(s32) = COPY $sgpr0
|
%1:_(s32) = COPY $sgpr0
|
||||||
%2:_(s32) = COPY $sgpr1
|
%2:_(s32) = COPY $sgpr1
|
||||||
|
@ -77,8 +77,8 @@ body: |
|
||||||
; FAST: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY2]](s32)
|
; FAST: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY2]](s32)
|
||||||
; FAST: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)
|
; FAST: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)
|
||||||
; FAST: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)
|
; FAST: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)
|
||||||
; FAST: [[COPY5:%[0-9]+]]:sgpr(s1) = COPY [[TRUNC]](s1)
|
; FAST: [[COPY5:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1)
|
||||||
; FAST: [[SADDE:%[0-9]+]]:vgpr(s32), [[SADDE1:%[0-9]+]]:sgpr(s1) = G_SADDE [[COPY3]], [[COPY4]], [[COPY5]]
|
; FAST: [[SADDE:%[0-9]+]]:vgpr(s32), [[SADDE1:%[0-9]+]]:vcc(s1) = G_SADDE [[COPY3]], [[COPY4]], [[COPY5]]
|
||||||
; GREEDY-LABEL: name: sadde_s32_ssv
|
; GREEDY-LABEL: name: sadde_s32_ssv
|
||||||
; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
|
; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
|
||||||
; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
|
; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
|
||||||
|
@ -86,8 +86,8 @@ body: |
|
||||||
; GREEDY: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY2]](s32)
|
; GREEDY: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY2]](s32)
|
||||||
; GREEDY: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)
|
; GREEDY: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)
|
||||||
; GREEDY: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)
|
; GREEDY: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)
|
||||||
; GREEDY: [[COPY5:%[0-9]+]]:sgpr(s1) = COPY [[TRUNC]](s1)
|
; GREEDY: [[COPY5:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1)
|
||||||
; GREEDY: [[SADDE:%[0-9]+]]:vgpr(s32), [[SADDE1:%[0-9]+]]:sgpr(s1) = G_SADDE [[COPY3]], [[COPY4]], [[COPY5]]
|
; GREEDY: [[SADDE:%[0-9]+]]:vgpr(s32), [[SADDE1:%[0-9]+]]:vcc(s1) = G_SADDE [[COPY3]], [[COPY4]], [[COPY5]]
|
||||||
%0:_(s32) = COPY $sgpr0
|
%0:_(s32) = COPY $sgpr0
|
||||||
%1:_(s32) = COPY $sgpr1
|
%1:_(s32) = COPY $sgpr1
|
||||||
%2:_(s32) = COPY $vgpr0
|
%2:_(s32) = COPY $vgpr0
|
||||||
|
@ -107,13 +107,15 @@ body: |
|
||||||
; FAST: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
|
; FAST: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
|
||||||
; FAST: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
|
; FAST: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
|
||||||
; FAST: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY2]](s32)
|
; FAST: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY2]](s32)
|
||||||
; FAST: [[SADDE:%[0-9]+]]:vgpr(s32), [[SADDE1:%[0-9]+]]:sgpr(s1) = G_SADDE [[COPY]], [[COPY1]], [[TRUNC]]
|
; FAST: [[COPY3:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1)
|
||||||
|
; FAST: [[SADDE:%[0-9]+]]:vgpr(s32), [[SADDE1:%[0-9]+]]:vcc(s1) = G_SADDE [[COPY]], [[COPY1]], [[COPY3]]
|
||||||
; GREEDY-LABEL: name: sadde_s32_vvs
|
; GREEDY-LABEL: name: sadde_s32_vvs
|
||||||
; GREEDY: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
; GREEDY: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
||||||
; GREEDY: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
|
; GREEDY: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
|
||||||
; GREEDY: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
|
; GREEDY: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
|
||||||
; GREEDY: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY2]](s32)
|
; GREEDY: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY2]](s32)
|
||||||
; GREEDY: [[SADDE:%[0-9]+]]:vgpr(s32), [[SADDE1:%[0-9]+]]:sgpr(s1) = G_SADDE [[COPY]], [[COPY1]], [[TRUNC]]
|
; GREEDY: [[COPY3:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1)
|
||||||
|
; GREEDY: [[SADDE:%[0-9]+]]:vgpr(s32), [[SADDE1:%[0-9]+]]:vcc(s1) = G_SADDE [[COPY]], [[COPY1]], [[COPY3]]
|
||||||
%0:_(s32) = COPY $vgpr0
|
%0:_(s32) = COPY $vgpr0
|
||||||
%1:_(s32) = COPY $vgpr1
|
%1:_(s32) = COPY $vgpr1
|
||||||
%2:_(s32) = COPY $sgpr0
|
%2:_(s32) = COPY $sgpr0
|
||||||
|
@ -142,7 +144,8 @@ body: |
|
||||||
; GREEDY: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY2]](s32)
|
; GREEDY: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY2]](s32)
|
||||||
; GREEDY: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)
|
; GREEDY: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)
|
||||||
; GREEDY: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)
|
; GREEDY: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)
|
||||||
; GREEDY: [[SADDE:%[0-9]+]]:vgpr(s32), [[SADDE1:%[0-9]+]]:sgpr(s1) = G_SADDE [[COPY3]], [[COPY4]], [[TRUNC]]
|
; GREEDY: [[COPY5:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1)
|
||||||
|
; GREEDY: [[SADDE:%[0-9]+]]:vgpr(s32), [[SADDE1:%[0-9]+]]:vcc(s1) = G_SADDE [[COPY3]], [[COPY4]], [[COPY5]]
|
||||||
%0:_(s32) = COPY $sgpr0
|
%0:_(s32) = COPY $sgpr0
|
||||||
%1:_(s32) = COPY $sgpr1
|
%1:_(s32) = COPY $sgpr1
|
||||||
%2:_(s32) = COPY $sgpr2
|
%2:_(s32) = COPY $sgpr2
|
||||||
|
|
|
@ -28,7 +28,7 @@ body: |
|
||||||
; CHECK: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
|
; CHECK: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
|
||||||
; CHECK: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
; CHECK: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
||||||
; CHECK: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)
|
; CHECK: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)
|
||||||
; CHECK: [[SADDO:%[0-9]+]]:vgpr(s32), [[SADDO1:%[0-9]+]]:sgpr(s1) = G_SADDO [[COPY2]], [[COPY1]]
|
; CHECK: [[SADDO:%[0-9]+]]:vgpr(s32), [[SADDO1:%[0-9]+]]:vcc(s1) = G_SADDO [[COPY2]], [[COPY1]]
|
||||||
%0:_(s32) = COPY $sgpr0
|
%0:_(s32) = COPY $sgpr0
|
||||||
%1:_(s32) = COPY $vgpr0
|
%1:_(s32) = COPY $vgpr0
|
||||||
%2:_(s32), %3:_(s1) = G_SADDO %0, %1
|
%2:_(s32), %3:_(s1) = G_SADDO %0, %1
|
||||||
|
@ -45,7 +45,7 @@ body: |
|
||||||
; CHECK: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
; CHECK: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
||||||
; CHECK: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
|
; CHECK: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
|
||||||
; CHECK: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)
|
; CHECK: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)
|
||||||
; CHECK: [[SADDO:%[0-9]+]]:vgpr(s32), [[SADDO1:%[0-9]+]]:sgpr(s1) = G_SADDO [[COPY]], [[COPY2]]
|
; CHECK: [[SADDO:%[0-9]+]]:vgpr(s32), [[SADDO1:%[0-9]+]]:vcc(s1) = G_SADDO [[COPY]], [[COPY2]]
|
||||||
%0:_(s32) = COPY $vgpr0
|
%0:_(s32) = COPY $vgpr0
|
||||||
%1:_(s32) = COPY $sgpr0
|
%1:_(s32) = COPY $sgpr0
|
||||||
%2:_(s32), %3:_(s1) = G_SADDO %0, %1
|
%2:_(s32), %3:_(s1) = G_SADDO %0, %1
|
||||||
|
@ -61,7 +61,7 @@ body: |
|
||||||
; CHECK-LABEL: name: saddo_s32_vv
|
; CHECK-LABEL: name: saddo_s32_vv
|
||||||
; CHECK: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
; CHECK: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
||||||
; CHECK: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
|
; CHECK: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
|
||||||
; CHECK: [[SADDO:%[0-9]+]]:vgpr(s32), [[SADDO1:%[0-9]+]]:sgpr(s1) = G_SADDO [[COPY]], [[COPY1]]
|
; CHECK: [[SADDO:%[0-9]+]]:vgpr(s32), [[SADDO1:%[0-9]+]]:vcc(s1) = G_SADDO [[COPY]], [[COPY1]]
|
||||||
%0:_(s32) = COPY $vgpr0
|
%0:_(s32) = COPY $vgpr0
|
||||||
%1:_(s32) = COPY $vgpr1
|
%1:_(s32) = COPY $vgpr1
|
||||||
%2:_(s32), %3:_(s1) = G_SADDO %0, %1
|
%2:_(s32), %3:_(s1) = G_SADDO %0, %1
|
||||||
|
|
|
@ -2,7 +2,6 @@
|
||||||
# RUN: llc -march=amdgcn -mcpu=fiji -run-pass=regbankselect -global-isel %s -verify-machineinstrs -o - -regbankselect-fast | FileCheck %s
|
# RUN: llc -march=amdgcn -mcpu=fiji -run-pass=regbankselect -global-isel %s -verify-machineinstrs -o - -regbankselect-fast | FileCheck %s
|
||||||
# RUN: llc -march=amdgcn -mcpu=fiji -run-pass=regbankselect -global-isel %s -verify-machineinstrs -o - -regbankselect-greedy | FileCheck %s
|
# RUN: llc -march=amdgcn -mcpu=fiji -run-pass=regbankselect -global-isel %s -verify-machineinstrs -o - -regbankselect-greedy | FileCheck %s
|
||||||
|
|
||||||
|
|
||||||
---
|
---
|
||||||
name: select_sss
|
name: select_sss
|
||||||
legalized: true
|
legalized: true
|
||||||
|
@ -36,7 +35,7 @@ body: |
|
||||||
; CHECK: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr2
|
; CHECK: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr2
|
||||||
; CHECK: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
; CHECK: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
||||||
; CHECK: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]
|
; CHECK: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]
|
||||||
; CHECK: [[COPY4:%[0-9]+]]:sgpr(s1) = COPY [[ICMP]](s1)
|
; CHECK: [[COPY4:%[0-9]+]]:vcc(s1) = COPY [[ICMP]](s1)
|
||||||
; CHECK: [[COPY5:%[0-9]+]]:vgpr(s32) = COPY [[COPY2]](s32)
|
; CHECK: [[COPY5:%[0-9]+]]:vgpr(s32) = COPY [[COPY2]](s32)
|
||||||
; CHECK: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY4]](s1), [[COPY5]], [[COPY3]]
|
; CHECK: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY4]](s1), [[COPY5]], [[COPY3]]
|
||||||
%0:_(s32) = COPY $sgpr0
|
%0:_(s32) = COPY $sgpr0
|
||||||
|
@ -60,7 +59,7 @@ body: |
|
||||||
; CHECK: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr2
|
; CHECK: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr2
|
||||||
; CHECK: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
; CHECK: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
||||||
; CHECK: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]
|
; CHECK: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]
|
||||||
; CHECK: [[COPY4:%[0-9]+]]:sgpr(s1) = COPY [[ICMP]](s1)
|
; CHECK: [[COPY4:%[0-9]+]]:vcc(s1) = COPY [[ICMP]](s1)
|
||||||
; CHECK: [[COPY5:%[0-9]+]]:vgpr(s32) = COPY [[COPY2]](s32)
|
; CHECK: [[COPY5:%[0-9]+]]:vgpr(s32) = COPY [[COPY2]](s32)
|
||||||
; CHECK: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY4]](s1), [[COPY3]], [[COPY5]]
|
; CHECK: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY4]](s1), [[COPY3]], [[COPY5]]
|
||||||
%0:_(s32) = COPY $sgpr0
|
%0:_(s32) = COPY $sgpr0
|
||||||
|
@ -83,7 +82,7 @@ body: |
|
||||||
; CHECK: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
; CHECK: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
||||||
; CHECK: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
|
; CHECK: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
|
||||||
; CHECK: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]
|
; CHECK: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]
|
||||||
; CHECK: [[COPY4:%[0-9]+]]:sgpr(s1) = COPY [[ICMP]](s1)
|
; CHECK: [[COPY4:%[0-9]+]]:vcc(s1) = COPY [[ICMP]](s1)
|
||||||
; CHECK: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY4]](s1), [[COPY2]], [[COPY3]]
|
; CHECK: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY4]](s1), [[COPY2]], [[COPY3]]
|
||||||
%0:_(s32) = COPY $sgpr0
|
%0:_(s32) = COPY $sgpr0
|
||||||
%1:_(s32) = COPY $sgpr1
|
%1:_(s32) = COPY $sgpr1
|
||||||
|
@ -104,7 +103,7 @@ body: |
|
||||||
; CHECK: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
|
; CHECK: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
|
||||||
; CHECK: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
; CHECK: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
||||||
; CHECK: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
|
; CHECK: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
|
||||||
; CHECK: [[ICMP:%[0-9]+]]:sgpr(s1) = G_ICMP intpred(ne), [[COPY2]](s32), [[COPY3]]
|
; CHECK: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY2]](s32), [[COPY3]]
|
||||||
; CHECK: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)
|
; CHECK: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)
|
||||||
; CHECK: [[COPY5:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)
|
; CHECK: [[COPY5:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)
|
||||||
; CHECK: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[COPY4]], [[COPY5]]
|
; CHECK: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[COPY4]], [[COPY5]]
|
||||||
|
@ -127,7 +126,7 @@ body: |
|
||||||
; CHECK: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
; CHECK: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
||||||
; CHECK: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
|
; CHECK: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
|
||||||
; CHECK: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY $vgpr2
|
; CHECK: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY $vgpr2
|
||||||
; CHECK: [[ICMP:%[0-9]+]]:sgpr(s1) = G_ICMP intpred(ne), [[COPY1]](s32), [[COPY2]]
|
; CHECK: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY1]](s32), [[COPY2]]
|
||||||
; CHECK: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)
|
; CHECK: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)
|
||||||
; CHECK: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[COPY4]], [[COPY3]]
|
; CHECK: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[COPY4]], [[COPY3]]
|
||||||
%0:_(s32) = COPY $sgpr0
|
%0:_(s32) = COPY $sgpr0
|
||||||
|
@ -149,7 +148,7 @@ body: |
|
||||||
; CHECK: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
; CHECK: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
||||||
; CHECK: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
|
; CHECK: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
|
||||||
; CHECK: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY $vgpr2
|
; CHECK: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY $vgpr2
|
||||||
; CHECK: [[ICMP:%[0-9]+]]:sgpr(s1) = G_ICMP intpred(ne), [[COPY1]](s32), [[COPY2]]
|
; CHECK: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY1]](s32), [[COPY2]]
|
||||||
; CHECK: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)
|
; CHECK: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)
|
||||||
; CHECK: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[COPY3]], [[COPY4]]
|
; CHECK: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[COPY3]], [[COPY4]]
|
||||||
%0:_(s32) = COPY $sgpr0
|
%0:_(s32) = COPY $sgpr0
|
||||||
|
@ -171,7 +170,7 @@ body: |
|
||||||
; CHECK: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
|
; CHECK: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
|
||||||
; CHECK: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr2
|
; CHECK: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr2
|
||||||
; CHECK: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY $vgpr3
|
; CHECK: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY $vgpr3
|
||||||
; CHECK: [[ICMP:%[0-9]+]]:sgpr(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]
|
; CHECK: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]
|
||||||
; CHECK: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[COPY2]], [[COPY3]]
|
; CHECK: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[COPY2]], [[COPY3]]
|
||||||
%0:_(s32) = COPY $vgpr0
|
%0:_(s32) = COPY $vgpr0
|
||||||
%1:_(s32) = COPY $vgpr1
|
%1:_(s32) = COPY $vgpr1
|
||||||
|
|
|
@ -45,8 +45,8 @@ body: |
|
||||||
; FAST: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i64 0
|
; FAST: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i64 0
|
||||||
; FAST: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(eq), [[COPY2]](s32), [[C]]
|
; FAST: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(eq), [[COPY2]](s32), [[C]]
|
||||||
; FAST: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)
|
; FAST: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)
|
||||||
; FAST: [[COPY4:%[0-9]+]]:sgpr(s1) = COPY [[ICMP]](s1)
|
; FAST: [[COPY4:%[0-9]+]]:vcc(s1) = COPY [[ICMP]](s1)
|
||||||
; FAST: [[SSUBE:%[0-9]+]]:vgpr(s32), [[SSUBE1:%[0-9]+]]:sgpr(s1) = G_SSUBE [[COPY]], [[COPY3]], [[COPY4]]
|
; FAST: [[SSUBE:%[0-9]+]]:vgpr(s32), [[SSUBE1:%[0-9]+]]:vcc(s1) = G_SSUBE [[COPY]], [[COPY3]], [[COPY4]]
|
||||||
; GREEDY-LABEL: name: ssube_s32_vss
|
; GREEDY-LABEL: name: ssube_s32_vss
|
||||||
; GREEDY: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
; GREEDY: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
||||||
; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
|
; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
|
||||||
|
@ -54,8 +54,8 @@ body: |
|
||||||
; GREEDY: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i64 0
|
; GREEDY: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i64 0
|
||||||
; GREEDY: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(eq), [[COPY2]](s32), [[C]]
|
; GREEDY: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(eq), [[COPY2]](s32), [[C]]
|
||||||
; GREEDY: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)
|
; GREEDY: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)
|
||||||
; GREEDY: [[COPY4:%[0-9]+]]:sgpr(s1) = COPY [[ICMP]](s1)
|
; GREEDY: [[COPY4:%[0-9]+]]:vcc(s1) = COPY [[ICMP]](s1)
|
||||||
; GREEDY: [[SSUBE:%[0-9]+]]:vgpr(s32), [[SSUBE1:%[0-9]+]]:sgpr(s1) = G_SSUBE [[COPY]], [[COPY3]], [[COPY4]]
|
; GREEDY: [[SSUBE:%[0-9]+]]:vgpr(s32), [[SSUBE1:%[0-9]+]]:vcc(s1) = G_SSUBE [[COPY]], [[COPY3]], [[COPY4]]
|
||||||
%0:_(s32) = COPY $vgpr0
|
%0:_(s32) = COPY $vgpr0
|
||||||
%1:_(s32) = COPY $sgpr0
|
%1:_(s32) = COPY $sgpr0
|
||||||
%2:_(s32) = COPY $sgpr1
|
%2:_(s32) = COPY $sgpr1
|
||||||
|
@ -77,8 +77,8 @@ body: |
|
||||||
; FAST: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY2]](s32)
|
; FAST: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY2]](s32)
|
||||||
; FAST: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)
|
; FAST: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)
|
||||||
; FAST: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)
|
; FAST: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)
|
||||||
; FAST: [[COPY5:%[0-9]+]]:sgpr(s1) = COPY [[TRUNC]](s1)
|
; FAST: [[COPY5:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1)
|
||||||
; FAST: [[SSUBE:%[0-9]+]]:vgpr(s32), [[SSUBE1:%[0-9]+]]:sgpr(s1) = G_SSUBE [[COPY3]], [[COPY4]], [[COPY5]]
|
; FAST: [[SSUBE:%[0-9]+]]:vgpr(s32), [[SSUBE1:%[0-9]+]]:vcc(s1) = G_SSUBE [[COPY3]], [[COPY4]], [[COPY5]]
|
||||||
; GREEDY-LABEL: name: ssube_s32_ssv
|
; GREEDY-LABEL: name: ssube_s32_ssv
|
||||||
; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
|
; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
|
||||||
; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
|
; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
|
||||||
|
@ -86,8 +86,8 @@ body: |
|
||||||
; GREEDY: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY2]](s32)
|
; GREEDY: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY2]](s32)
|
||||||
; GREEDY: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)
|
; GREEDY: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)
|
||||||
; GREEDY: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)
|
; GREEDY: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)
|
||||||
; GREEDY: [[COPY5:%[0-9]+]]:sgpr(s1) = COPY [[TRUNC]](s1)
|
; GREEDY: [[COPY5:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1)
|
||||||
; GREEDY: [[SSUBE:%[0-9]+]]:vgpr(s32), [[SSUBE1:%[0-9]+]]:sgpr(s1) = G_SSUBE [[COPY3]], [[COPY4]], [[COPY5]]
|
; GREEDY: [[SSUBE:%[0-9]+]]:vgpr(s32), [[SSUBE1:%[0-9]+]]:vcc(s1) = G_SSUBE [[COPY3]], [[COPY4]], [[COPY5]]
|
||||||
%0:_(s32) = COPY $sgpr0
|
%0:_(s32) = COPY $sgpr0
|
||||||
%1:_(s32) = COPY $sgpr1
|
%1:_(s32) = COPY $sgpr1
|
||||||
%2:_(s32) = COPY $vgpr0
|
%2:_(s32) = COPY $vgpr0
|
||||||
|
@ -107,13 +107,15 @@ body: |
|
||||||
; FAST: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
|
; FAST: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
|
||||||
; FAST: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
|
; FAST: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
|
||||||
; FAST: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY2]](s32)
|
; FAST: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY2]](s32)
|
||||||
; FAST: [[SSUBE:%[0-9]+]]:vgpr(s32), [[SSUBE1:%[0-9]+]]:sgpr(s1) = G_SSUBE [[COPY]], [[COPY1]], [[TRUNC]]
|
; FAST: [[COPY3:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1)
|
||||||
|
; FAST: [[SSUBE:%[0-9]+]]:vgpr(s32), [[SSUBE1:%[0-9]+]]:vcc(s1) = G_SSUBE [[COPY]], [[COPY1]], [[COPY3]]
|
||||||
; GREEDY-LABEL: name: ssube_s32_vvs
|
; GREEDY-LABEL: name: ssube_s32_vvs
|
||||||
; GREEDY: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
; GREEDY: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
||||||
; GREEDY: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
|
; GREEDY: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
|
||||||
; GREEDY: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
|
; GREEDY: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
|
||||||
; GREEDY: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY2]](s32)
|
; GREEDY: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY2]](s32)
|
||||||
; GREEDY: [[SSUBE:%[0-9]+]]:vgpr(s32), [[SSUBE1:%[0-9]+]]:sgpr(s1) = G_SSUBE [[COPY]], [[COPY1]], [[TRUNC]]
|
; GREEDY: [[COPY3:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1)
|
||||||
|
; GREEDY: [[SSUBE:%[0-9]+]]:vgpr(s32), [[SSUBE1:%[0-9]+]]:vcc(s1) = G_SSUBE [[COPY]], [[COPY1]], [[COPY3]]
|
||||||
%0:_(s32) = COPY $vgpr0
|
%0:_(s32) = COPY $vgpr0
|
||||||
%1:_(s32) = COPY $vgpr1
|
%1:_(s32) = COPY $vgpr1
|
||||||
%2:_(s32) = COPY $sgpr0
|
%2:_(s32) = COPY $sgpr0
|
||||||
|
@ -142,7 +144,8 @@ body: |
|
||||||
; GREEDY: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY2]](s32)
|
; GREEDY: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY2]](s32)
|
||||||
; GREEDY: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)
|
; GREEDY: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)
|
||||||
; GREEDY: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)
|
; GREEDY: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)
|
||||||
; GREEDY: [[SSUBE:%[0-9]+]]:vgpr(s32), [[SSUBE1:%[0-9]+]]:sgpr(s1) = G_SSUBE [[COPY3]], [[COPY4]], [[TRUNC]]
|
; GREEDY: [[COPY5:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1)
|
||||||
|
; GREEDY: [[SSUBE:%[0-9]+]]:vgpr(s32), [[SSUBE1:%[0-9]+]]:vcc(s1) = G_SSUBE [[COPY3]], [[COPY4]], [[COPY5]]
|
||||||
%0:_(s32) = COPY $sgpr0
|
%0:_(s32) = COPY $sgpr0
|
||||||
%1:_(s32) = COPY $sgpr1
|
%1:_(s32) = COPY $sgpr1
|
||||||
%2:_(s32) = COPY $sgpr2
|
%2:_(s32) = COPY $sgpr2
|
||||||
|
|
|
@ -29,7 +29,7 @@ body: |
|
||||||
; CHECK: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
|
; CHECK: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
|
||||||
; CHECK: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
; CHECK: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
||||||
; CHECK: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)
|
; CHECK: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)
|
||||||
; CHECK: [[SSUBO:%[0-9]+]]:vgpr(s32), [[SSUBO1:%[0-9]+]]:sgpr(s1) = G_SSUBO [[COPY2]], [[COPY1]]
|
; CHECK: [[SSUBO:%[0-9]+]]:vgpr(s32), [[SSUBO1:%[0-9]+]]:vcc(s1) = G_SSUBO [[COPY2]], [[COPY1]]
|
||||||
%0:_(s32) = COPY $sgpr0
|
%0:_(s32) = COPY $sgpr0
|
||||||
%1:_(s32) = COPY $vgpr0
|
%1:_(s32) = COPY $vgpr0
|
||||||
%2:_(s32), %3:_(s1) = G_SSUBO %0, %1
|
%2:_(s32), %3:_(s1) = G_SSUBO %0, %1
|
||||||
|
@ -46,7 +46,7 @@ body: |
|
||||||
; CHECK: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
; CHECK: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
||||||
; CHECK: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
|
; CHECK: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
|
||||||
; CHECK: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)
|
; CHECK: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)
|
||||||
; CHECK: [[SSUBO:%[0-9]+]]:vgpr(s32), [[SSUBO1:%[0-9]+]]:sgpr(s1) = G_SSUBO [[COPY]], [[COPY2]]
|
; CHECK: [[SSUBO:%[0-9]+]]:vgpr(s32), [[SSUBO1:%[0-9]+]]:vcc(s1) = G_SSUBO [[COPY]], [[COPY2]]
|
||||||
%0:_(s32) = COPY $vgpr0
|
%0:_(s32) = COPY $vgpr0
|
||||||
%1:_(s32) = COPY $sgpr0
|
%1:_(s32) = COPY $sgpr0
|
||||||
%2:_(s32), %3:_(s1) = G_SSUBO %0, %1
|
%2:_(s32), %3:_(s1) = G_SSUBO %0, %1
|
||||||
|
@ -62,7 +62,7 @@ body: |
|
||||||
; CHECK-LABEL: name: ssubo_s32_vv
|
; CHECK-LABEL: name: ssubo_s32_vv
|
||||||
; CHECK: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
; CHECK: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
||||||
; CHECK: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
|
; CHECK: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
|
||||||
; CHECK: [[SSUBO:%[0-9]+]]:vgpr(s32), [[SSUBO1:%[0-9]+]]:sgpr(s1) = G_SSUBO [[COPY]], [[COPY1]]
|
; CHECK: [[SSUBO:%[0-9]+]]:vgpr(s32), [[SSUBO1:%[0-9]+]]:vcc(s1) = G_SSUBO [[COPY]], [[COPY1]]
|
||||||
%0:_(s32) = COPY $vgpr0
|
%0:_(s32) = COPY $vgpr0
|
||||||
%1:_(s32) = COPY $vgpr1
|
%1:_(s32) = COPY $vgpr1
|
||||||
%2:_(s32), %3:_(s1) = G_SSUBO %0, %1
|
%2:_(s32), %3:_(s1) = G_SSUBO %0, %1
|
||||||
|
|
|
@ -44,8 +44,8 @@ body: |
|
||||||
; FAST: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i64 0
|
; FAST: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i64 0
|
||||||
; FAST: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(eq), [[COPY2]](s32), [[C]]
|
; FAST: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(eq), [[COPY2]](s32), [[C]]
|
||||||
; FAST: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)
|
; FAST: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)
|
||||||
; FAST: [[COPY4:%[0-9]+]]:sgpr(s1) = COPY [[ICMP]](s1)
|
; FAST: [[COPY4:%[0-9]+]]:vcc(s1) = COPY [[ICMP]](s1)
|
||||||
; FAST: [[UADDE:%[0-9]+]]:vgpr(s32), [[UADDE1:%[0-9]+]]:sgpr(s1) = G_UADDE [[COPY]], [[COPY3]], [[COPY4]]
|
; FAST: [[UADDE:%[0-9]+]]:vgpr(s32), [[UADDE1:%[0-9]+]]:vcc(s1) = G_UADDE [[COPY]], [[COPY3]], [[COPY4]]
|
||||||
; GREEDY-LABEL: name: uadde_s32_vss
|
; GREEDY-LABEL: name: uadde_s32_vss
|
||||||
; GREEDY: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
; GREEDY: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
||||||
; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
|
; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
|
||||||
|
@ -53,8 +53,8 @@ body: |
|
||||||
; GREEDY: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i64 0
|
; GREEDY: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i64 0
|
||||||
; GREEDY: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(eq), [[COPY2]](s32), [[C]]
|
; GREEDY: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(eq), [[COPY2]](s32), [[C]]
|
||||||
; GREEDY: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)
|
; GREEDY: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)
|
||||||
; GREEDY: [[COPY4:%[0-9]+]]:sgpr(s1) = COPY [[ICMP]](s1)
|
; GREEDY: [[COPY4:%[0-9]+]]:vcc(s1) = COPY [[ICMP]](s1)
|
||||||
; GREEDY: [[UADDE:%[0-9]+]]:vgpr(s32), [[UADDE1:%[0-9]+]]:sgpr(s1) = G_UADDE [[COPY]], [[COPY3]], [[COPY4]]
|
; GREEDY: [[UADDE:%[0-9]+]]:vgpr(s32), [[UADDE1:%[0-9]+]]:vcc(s1) = G_UADDE [[COPY]], [[COPY3]], [[COPY4]]
|
||||||
%0:_(s32) = COPY $vgpr0
|
%0:_(s32) = COPY $vgpr0
|
||||||
%1:_(s32) = COPY $sgpr0
|
%1:_(s32) = COPY $sgpr0
|
||||||
%2:_(s32) = COPY $sgpr1
|
%2:_(s32) = COPY $sgpr1
|
||||||
|
@ -76,8 +76,8 @@ body: |
|
||||||
; FAST: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY2]](s32)
|
; FAST: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY2]](s32)
|
||||||
; FAST: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)
|
; FAST: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)
|
||||||
; FAST: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)
|
; FAST: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)
|
||||||
; FAST: [[COPY5:%[0-9]+]]:sgpr(s1) = COPY [[TRUNC]](s1)
|
; FAST: [[COPY5:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1)
|
||||||
; FAST: [[UADDE:%[0-9]+]]:vgpr(s32), [[UADDE1:%[0-9]+]]:sgpr(s1) = G_UADDE [[COPY3]], [[COPY4]], [[COPY5]]
|
; FAST: [[UADDE:%[0-9]+]]:vgpr(s32), [[UADDE1:%[0-9]+]]:vcc(s1) = G_UADDE [[COPY3]], [[COPY4]], [[COPY5]]
|
||||||
; GREEDY-LABEL: name: uadde_s32_ssv
|
; GREEDY-LABEL: name: uadde_s32_ssv
|
||||||
; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
|
; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
|
||||||
; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
|
; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
|
||||||
|
@ -85,8 +85,8 @@ body: |
|
||||||
; GREEDY: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY2]](s32)
|
; GREEDY: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY2]](s32)
|
||||||
; GREEDY: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)
|
; GREEDY: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)
|
||||||
; GREEDY: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)
|
; GREEDY: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)
|
||||||
; GREEDY: [[COPY5:%[0-9]+]]:sgpr(s1) = COPY [[TRUNC]](s1)
|
; GREEDY: [[COPY5:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1)
|
||||||
; GREEDY: [[UADDE:%[0-9]+]]:vgpr(s32), [[UADDE1:%[0-9]+]]:sgpr(s1) = G_UADDE [[COPY3]], [[COPY4]], [[COPY5]]
|
; GREEDY: [[UADDE:%[0-9]+]]:vgpr(s32), [[UADDE1:%[0-9]+]]:vcc(s1) = G_UADDE [[COPY3]], [[COPY4]], [[COPY5]]
|
||||||
%0:_(s32) = COPY $sgpr0
|
%0:_(s32) = COPY $sgpr0
|
||||||
%1:_(s32) = COPY $sgpr1
|
%1:_(s32) = COPY $sgpr1
|
||||||
%2:_(s32) = COPY $vgpr0
|
%2:_(s32) = COPY $vgpr0
|
||||||
|
@ -106,13 +106,15 @@ body: |
|
||||||
; FAST: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
|
; FAST: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
|
||||||
; FAST: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
|
; FAST: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
|
||||||
; FAST: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY2]](s32)
|
; FAST: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY2]](s32)
|
||||||
; FAST: [[UADDE:%[0-9]+]]:vgpr(s32), [[UADDE1:%[0-9]+]]:sgpr(s1) = G_UADDE [[COPY]], [[COPY1]], [[TRUNC]]
|
; FAST: [[COPY3:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1)
|
||||||
|
; FAST: [[UADDE:%[0-9]+]]:vgpr(s32), [[UADDE1:%[0-9]+]]:vcc(s1) = G_UADDE [[COPY]], [[COPY1]], [[COPY3]]
|
||||||
; GREEDY-LABEL: name: uadde_s32_vvs
|
; GREEDY-LABEL: name: uadde_s32_vvs
|
||||||
; GREEDY: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
; GREEDY: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
||||||
; GREEDY: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
|
; GREEDY: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
|
||||||
; GREEDY: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
|
; GREEDY: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
|
||||||
; GREEDY: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY2]](s32)
|
; GREEDY: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY2]](s32)
|
||||||
; GREEDY: [[UADDE:%[0-9]+]]:vgpr(s32), [[UADDE1:%[0-9]+]]:sgpr(s1) = G_UADDE [[COPY]], [[COPY1]], [[TRUNC]]
|
; GREEDY: [[COPY3:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1)
|
||||||
|
; GREEDY: [[UADDE:%[0-9]+]]:vgpr(s32), [[UADDE1:%[0-9]+]]:vcc(s1) = G_UADDE [[COPY]], [[COPY1]], [[COPY3]]
|
||||||
%0:_(s32) = COPY $vgpr0
|
%0:_(s32) = COPY $vgpr0
|
||||||
%1:_(s32) = COPY $vgpr1
|
%1:_(s32) = COPY $vgpr1
|
||||||
%2:_(s32) = COPY $sgpr0
|
%2:_(s32) = COPY $sgpr0
|
||||||
|
@ -141,7 +143,8 @@ body: |
|
||||||
; GREEDY: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY2]](s32)
|
; GREEDY: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY2]](s32)
|
||||||
; GREEDY: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)
|
; GREEDY: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)
|
||||||
; GREEDY: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)
|
; GREEDY: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)
|
||||||
; GREEDY: [[UADDE:%[0-9]+]]:vgpr(s32), [[UADDE1:%[0-9]+]]:sgpr(s1) = G_UADDE [[COPY3]], [[COPY4]], [[TRUNC]]
|
; GREEDY: [[COPY5:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1)
|
||||||
|
; GREEDY: [[UADDE:%[0-9]+]]:vgpr(s32), [[UADDE1:%[0-9]+]]:vcc(s1) = G_UADDE [[COPY3]], [[COPY4]], [[COPY5]]
|
||||||
%0:_(s32) = COPY $sgpr0
|
%0:_(s32) = COPY $sgpr0
|
||||||
%1:_(s32) = COPY $sgpr1
|
%1:_(s32) = COPY $sgpr1
|
||||||
%2:_(s32) = COPY $sgpr2
|
%2:_(s32) = COPY $sgpr2
|
||||||
|
|
|
@ -29,7 +29,7 @@ body: |
|
||||||
; CHECK: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
|
; CHECK: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
|
||||||
; CHECK: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
; CHECK: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
||||||
; CHECK: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)
|
; CHECK: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)
|
||||||
; CHECK: [[UADDO:%[0-9]+]]:vgpr(s32), [[UADDO1:%[0-9]+]]:sgpr(s1) = G_UADDO [[COPY2]], [[COPY1]]
|
; CHECK: [[UADDO:%[0-9]+]]:vgpr(s32), [[UADDO1:%[0-9]+]]:vcc(s1) = G_UADDO [[COPY2]], [[COPY1]]
|
||||||
%0:_(s32) = COPY $sgpr0
|
%0:_(s32) = COPY $sgpr0
|
||||||
%1:_(s32) = COPY $vgpr0
|
%1:_(s32) = COPY $vgpr0
|
||||||
%2:_(s32), %3:_(s1) = G_UADDO %0, %1
|
%2:_(s32), %3:_(s1) = G_UADDO %0, %1
|
||||||
|
@ -46,7 +46,7 @@ body: |
|
||||||
; CHECK: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
; CHECK: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
||||||
; CHECK: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
|
; CHECK: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
|
||||||
; CHECK: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)
|
; CHECK: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)
|
||||||
; CHECK: [[UADDO:%[0-9]+]]:vgpr(s32), [[UADDO1:%[0-9]+]]:sgpr(s1) = G_UADDO [[COPY]], [[COPY2]]
|
; CHECK: [[UADDO:%[0-9]+]]:vgpr(s32), [[UADDO1:%[0-9]+]]:vcc(s1) = G_UADDO [[COPY]], [[COPY2]]
|
||||||
%0:_(s32) = COPY $vgpr0
|
%0:_(s32) = COPY $vgpr0
|
||||||
%1:_(s32) = COPY $sgpr0
|
%1:_(s32) = COPY $sgpr0
|
||||||
%2:_(s32), %3:_(s1) = G_UADDO %0, %1
|
%2:_(s32), %3:_(s1) = G_UADDO %0, %1
|
||||||
|
@ -62,7 +62,7 @@ body: |
|
||||||
; CHECK-LABEL: name: uaddo_s32_vv
|
; CHECK-LABEL: name: uaddo_s32_vv
|
||||||
; CHECK: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
; CHECK: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
||||||
; CHECK: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
|
; CHECK: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
|
||||||
; CHECK: [[UADDO:%[0-9]+]]:vgpr(s32), [[UADDO1:%[0-9]+]]:sgpr(s1) = G_UADDO [[COPY]], [[COPY1]]
|
; CHECK: [[UADDO:%[0-9]+]]:vgpr(s32), [[UADDO1:%[0-9]+]]:vcc(s1) = G_UADDO [[COPY]], [[COPY1]]
|
||||||
%0:_(s32) = COPY $vgpr0
|
%0:_(s32) = COPY $vgpr0
|
||||||
%1:_(s32) = COPY $vgpr1
|
%1:_(s32) = COPY $vgpr1
|
||||||
%2:_(s32), %3:_(s1) = G_UADDO %0, %1
|
%2:_(s32), %3:_(s1) = G_UADDO %0, %1
|
||||||
|
|
|
@ -45,8 +45,8 @@ body: |
|
||||||
; FAST: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i64 0
|
; FAST: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i64 0
|
||||||
; FAST: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(eq), [[COPY2]](s32), [[C]]
|
; FAST: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(eq), [[COPY2]](s32), [[C]]
|
||||||
; FAST: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)
|
; FAST: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)
|
||||||
; FAST: [[COPY4:%[0-9]+]]:sgpr(s1) = COPY [[ICMP]](s1)
|
; FAST: [[COPY4:%[0-9]+]]:vcc(s1) = COPY [[ICMP]](s1)
|
||||||
; FAST: [[USUBE:%[0-9]+]]:vgpr(s32), [[USUBE1:%[0-9]+]]:sgpr(s1) = G_USUBE [[COPY]], [[COPY3]], [[COPY4]]
|
; FAST: [[USUBE:%[0-9]+]]:vgpr(s32), [[USUBE1:%[0-9]+]]:vcc(s1) = G_USUBE [[COPY]], [[COPY3]], [[COPY4]]
|
||||||
; GREEDY-LABEL: name: usube_s32_vss
|
; GREEDY-LABEL: name: usube_s32_vss
|
||||||
; GREEDY: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
; GREEDY: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
||||||
; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
|
; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
|
||||||
|
@ -54,8 +54,8 @@ body: |
|
||||||
; GREEDY: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i64 0
|
; GREEDY: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i64 0
|
||||||
; GREEDY: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(eq), [[COPY2]](s32), [[C]]
|
; GREEDY: [[ICMP:%[0-9]+]]:scc(s1) = G_ICMP intpred(eq), [[COPY2]](s32), [[C]]
|
||||||
; GREEDY: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)
|
; GREEDY: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)
|
||||||
; GREEDY: [[COPY4:%[0-9]+]]:sgpr(s1) = COPY [[ICMP]](s1)
|
; GREEDY: [[COPY4:%[0-9]+]]:vcc(s1) = COPY [[ICMP]](s1)
|
||||||
; GREEDY: [[USUBE:%[0-9]+]]:vgpr(s32), [[USUBE1:%[0-9]+]]:sgpr(s1) = G_USUBE [[COPY]], [[COPY3]], [[COPY4]]
|
; GREEDY: [[USUBE:%[0-9]+]]:vgpr(s32), [[USUBE1:%[0-9]+]]:vcc(s1) = G_USUBE [[COPY]], [[COPY3]], [[COPY4]]
|
||||||
%0:_(s32) = COPY $vgpr0
|
%0:_(s32) = COPY $vgpr0
|
||||||
%1:_(s32) = COPY $sgpr0
|
%1:_(s32) = COPY $sgpr0
|
||||||
%2:_(s32) = COPY $sgpr1
|
%2:_(s32) = COPY $sgpr1
|
||||||
|
@ -77,8 +77,8 @@ body: |
|
||||||
; FAST: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY2]](s32)
|
; FAST: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY2]](s32)
|
||||||
; FAST: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)
|
; FAST: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)
|
||||||
; FAST: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)
|
; FAST: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)
|
||||||
; FAST: [[COPY5:%[0-9]+]]:sgpr(s1) = COPY [[TRUNC]](s1)
|
; FAST: [[COPY5:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1)
|
||||||
; FAST: [[USUBE:%[0-9]+]]:vgpr(s32), [[USUBE1:%[0-9]+]]:sgpr(s1) = G_USUBE [[COPY3]], [[COPY4]], [[COPY5]]
|
; FAST: [[USUBE:%[0-9]+]]:vgpr(s32), [[USUBE1:%[0-9]+]]:vcc(s1) = G_USUBE [[COPY3]], [[COPY4]], [[COPY5]]
|
||||||
; GREEDY-LABEL: name: usube_s32_ssv
|
; GREEDY-LABEL: name: usube_s32_ssv
|
||||||
; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
|
; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
|
||||||
; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
|
; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
|
||||||
|
@ -86,8 +86,8 @@ body: |
|
||||||
; GREEDY: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY2]](s32)
|
; GREEDY: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY2]](s32)
|
||||||
; GREEDY: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)
|
; GREEDY: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)
|
||||||
; GREEDY: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)
|
; GREEDY: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)
|
||||||
; GREEDY: [[COPY5:%[0-9]+]]:sgpr(s1) = COPY [[TRUNC]](s1)
|
; GREEDY: [[COPY5:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1)
|
||||||
; GREEDY: [[USUBE:%[0-9]+]]:vgpr(s32), [[USUBE1:%[0-9]+]]:sgpr(s1) = G_USUBE [[COPY3]], [[COPY4]], [[COPY5]]
|
; GREEDY: [[USUBE:%[0-9]+]]:vgpr(s32), [[USUBE1:%[0-9]+]]:vcc(s1) = G_USUBE [[COPY3]], [[COPY4]], [[COPY5]]
|
||||||
%0:_(s32) = COPY $sgpr0
|
%0:_(s32) = COPY $sgpr0
|
||||||
%1:_(s32) = COPY $sgpr1
|
%1:_(s32) = COPY $sgpr1
|
||||||
%2:_(s32) = COPY $vgpr0
|
%2:_(s32) = COPY $vgpr0
|
||||||
|
@ -107,13 +107,15 @@ body: |
|
||||||
; FAST: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
|
; FAST: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
|
||||||
; FAST: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
|
; FAST: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
|
||||||
; FAST: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY2]](s32)
|
; FAST: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY2]](s32)
|
||||||
; FAST: [[USUBE:%[0-9]+]]:vgpr(s32), [[USUBE1:%[0-9]+]]:sgpr(s1) = G_USUBE [[COPY]], [[COPY1]], [[TRUNC]]
|
; FAST: [[COPY3:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1)
|
||||||
|
; FAST: [[USUBE:%[0-9]+]]:vgpr(s32), [[USUBE1:%[0-9]+]]:vcc(s1) = G_USUBE [[COPY]], [[COPY1]], [[COPY3]]
|
||||||
; GREEDY-LABEL: name: usube_s32_vvs
|
; GREEDY-LABEL: name: usube_s32_vvs
|
||||||
; GREEDY: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
; GREEDY: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
||||||
; GREEDY: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
|
; GREEDY: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
|
||||||
; GREEDY: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
|
; GREEDY: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
|
||||||
; GREEDY: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY2]](s32)
|
; GREEDY: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY2]](s32)
|
||||||
; GREEDY: [[USUBE:%[0-9]+]]:vgpr(s32), [[USUBE1:%[0-9]+]]:sgpr(s1) = G_USUBE [[COPY]], [[COPY1]], [[TRUNC]]
|
; GREEDY: [[COPY3:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1)
|
||||||
|
; GREEDY: [[USUBE:%[0-9]+]]:vgpr(s32), [[USUBE1:%[0-9]+]]:vcc(s1) = G_USUBE [[COPY]], [[COPY1]], [[COPY3]]
|
||||||
%0:_(s32) = COPY $vgpr0
|
%0:_(s32) = COPY $vgpr0
|
||||||
%1:_(s32) = COPY $vgpr1
|
%1:_(s32) = COPY $vgpr1
|
||||||
%2:_(s32) = COPY $sgpr0
|
%2:_(s32) = COPY $sgpr0
|
||||||
|
@ -142,7 +144,8 @@ body: |
|
||||||
; GREEDY: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY2]](s32)
|
; GREEDY: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY2]](s32)
|
||||||
; GREEDY: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)
|
; GREEDY: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)
|
||||||
; GREEDY: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)
|
; GREEDY: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)
|
||||||
; GREEDY: [[USUBE:%[0-9]+]]:vgpr(s32), [[USUBE1:%[0-9]+]]:sgpr(s1) = G_USUBE [[COPY3]], [[COPY4]], [[TRUNC]]
|
; GREEDY: [[COPY5:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1)
|
||||||
|
; GREEDY: [[USUBE:%[0-9]+]]:vgpr(s32), [[USUBE1:%[0-9]+]]:vcc(s1) = G_USUBE [[COPY3]], [[COPY4]], [[COPY5]]
|
||||||
%0:_(s32) = COPY $sgpr0
|
%0:_(s32) = COPY $sgpr0
|
||||||
%1:_(s32) = COPY $sgpr1
|
%1:_(s32) = COPY $sgpr1
|
||||||
%2:_(s32) = COPY $sgpr2
|
%2:_(s32) = COPY $sgpr2
|
||||||
|
|
|
@ -29,7 +29,7 @@ body: |
|
||||||
; CHECK: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
|
; CHECK: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
|
||||||
; CHECK: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
; CHECK: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
||||||
; CHECK: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)
|
; CHECK: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32)
|
||||||
; CHECK: [[USUBO:%[0-9]+]]:vgpr(s32), [[USUBO1:%[0-9]+]]:sgpr(s1) = G_USUBO [[COPY2]], [[COPY1]]
|
; CHECK: [[USUBO:%[0-9]+]]:vgpr(s32), [[USUBO1:%[0-9]+]]:vcc(s1) = G_USUBO [[COPY2]], [[COPY1]]
|
||||||
%0:_(s32) = COPY $sgpr0
|
%0:_(s32) = COPY $sgpr0
|
||||||
%1:_(s32) = COPY $vgpr0
|
%1:_(s32) = COPY $vgpr0
|
||||||
%2:_(s32), %3:_(s1) = G_USUBO %0, %1
|
%2:_(s32), %3:_(s1) = G_USUBO %0, %1
|
||||||
|
@ -46,7 +46,7 @@ body: |
|
||||||
; CHECK: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
; CHECK: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
||||||
; CHECK: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
|
; CHECK: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
|
||||||
; CHECK: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)
|
; CHECK: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)
|
||||||
; CHECK: [[USUBO:%[0-9]+]]:vgpr(s32), [[USUBO1:%[0-9]+]]:sgpr(s1) = G_USUBO [[COPY]], [[COPY2]]
|
; CHECK: [[USUBO:%[0-9]+]]:vgpr(s32), [[USUBO1:%[0-9]+]]:vcc(s1) = G_USUBO [[COPY]], [[COPY2]]
|
||||||
%0:_(s32) = COPY $vgpr0
|
%0:_(s32) = COPY $vgpr0
|
||||||
%1:_(s32) = COPY $sgpr0
|
%1:_(s32) = COPY $sgpr0
|
||||||
%2:_(s32), %3:_(s1) = G_USUBO %0, %1
|
%2:_(s32), %3:_(s1) = G_USUBO %0, %1
|
||||||
|
@ -62,7 +62,7 @@ body: |
|
||||||
; CHECK-LABEL: name: usubo_s32_vv
|
; CHECK-LABEL: name: usubo_s32_vv
|
||||||
; CHECK: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
; CHECK: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
|
||||||
; CHECK: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
|
; CHECK: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
|
||||||
; CHECK: [[USUBO:%[0-9]+]]:vgpr(s32), [[USUBO1:%[0-9]+]]:sgpr(s1) = G_USUBO [[COPY]], [[COPY1]]
|
; CHECK: [[USUBO:%[0-9]+]]:vgpr(s32), [[USUBO1:%[0-9]+]]:vcc(s1) = G_USUBO [[COPY]], [[COPY1]]
|
||||||
%0:_(s32) = COPY $vgpr0
|
%0:_(s32) = COPY $vgpr0
|
||||||
%1:_(s32) = COPY $vgpr1
|
%1:_(s32) = COPY $vgpr1
|
||||||
%2:_(s32), %3:_(s1) = G_USUBO %0, %1
|
%2:_(s32), %3:_(s1) = G_USUBO %0, %1
|
||||||
|
|
Loading…
Reference in New Issue