GlobalISel: Move code into lowering for G_MERGE_VALUES

Currently this code exists in widenScalar for G_MERGE_VALUE
sources. I'm not sure if the existing expansion in widenScalar should
be removed or not. The widenScalar variant tries to extend to the
requested size, but this just uses the original bitwidth.
This commit is contained in:
Matt Arsenault 2020-03-29 15:51:54 -04:00 committed by Matt Arsenault
parent ee1a69824d
commit 69999605ee
15 changed files with 7020 additions and 8266 deletions

View File

@ -292,6 +292,7 @@ public:
LegalizeResult lowerFMad(MachineInstr &MI);
LegalizeResult lowerIntrinsicRound(MachineInstr &MI);
LegalizeResult lowerFFloor(MachineInstr &MI);
LegalizeResult lowerMergeValues(MachineInstr &MI);
LegalizeResult lowerUnmergeValues(MachineInstr &MI);
LegalizeResult lowerShuffleVector(MachineInstr &MI);
LegalizeResult lowerDynStackAlloc(MachineInstr &MI);

View File

@ -2544,6 +2544,8 @@ LegalizerHelper::lower(MachineInstr &MI, unsigned TypeIdx, LLT Ty) {
case G_FMINNUM:
case G_FMAXNUM:
return lowerFMinNumMaxNum(MI);
case G_MERGE_VALUES:
return lowerMergeValues(MI);
case G_UNMERGE_VALUES:
return lowerUnmergeValues(MI);
case TargetOpcode::G_SEXT_INREG: {
@ -4860,6 +4862,47 @@ LegalizerHelper::lowerFFloor(MachineInstr &MI) {
return Legalized;
}
LegalizerHelper::LegalizeResult
LegalizerHelper::lowerMergeValues(MachineInstr &MI) {
const unsigned NumOps = MI.getNumOperands();
Register DstReg = MI.getOperand(0).getReg();
Register Src0Reg = MI.getOperand(1).getReg();
LLT DstTy = MRI.getType(DstReg);
LLT SrcTy = MRI.getType(Src0Reg);
unsigned PartSize = SrcTy.getSizeInBits();
LLT WideTy = LLT::scalar(DstTy.getSizeInBits());
Register ResultReg = MIRBuilder.buildZExt(WideTy, Src0Reg).getReg(0);
for (unsigned I = 2; I != NumOps; ++I) {
const unsigned Offset = (I - 1) * PartSize;
Register SrcReg = MI.getOperand(I).getReg();
auto ZextInput = MIRBuilder.buildZExt(WideTy, SrcReg);
Register NextResult = I + 1 == NumOps && WideTy == DstTy ? DstReg :
MRI.createGenericVirtualRegister(WideTy);
auto ShiftAmt = MIRBuilder.buildConstant(WideTy, Offset);
auto Shl = MIRBuilder.buildShl(WideTy, ZextInput, ShiftAmt);
MIRBuilder.buildOr(NextResult, ResultReg, Shl);
ResultReg = NextResult;
}
if (DstTy.isPointer()) {
if (MIRBuilder.getDataLayout().isNonIntegralAddressSpace(
DstTy.getAddressSpace())) {
LLVM_DEBUG(dbgs() << "Not casting nonintegral address space\n");
return UnableToLegalize;
}
MIRBuilder.buildIntToPtr(DstReg, ResultReg);
}
MI.eraseFromParent();
return Legalized;
}
LegalizerHelper::LegalizeResult
LegalizerHelper::lowerUnmergeValues(MachineInstr &MI) {
const unsigned NumDst = MI.getNumOperands() - 1;

View File

@ -1229,12 +1229,21 @@ AMDGPULegalizerInfo::AMDGPULegalizerInfo(const GCNSubtarget &ST_,
};
auto &Builder = getActionDefinitionsBuilder(Op)
.lowerFor({{S16, V2S16}});
// FIXME: Hack until unmerge handled
if (Op == G_MERGE_VALUES) {
Builder.lowerIf([=](const LegalityQuery &Query) {
const LLT BigTy = Query.Types[BigTyIdx];
return BigTy.getSizeInBits() == 32;
});
}
Builder
// Try to widen to s16 first for small types.
// TODO: Only do this on targets with legal s16 shifts
.minScalarOrEltIf(narrowerThan(LitTyIdx, 16), LitTyIdx, S16)
.widenScalarToNextPow2(LitTyIdx, /*Min*/ 16)
.lowerFor({{S16, V2S16}})
.moreElementsIf(isSmallOddVector(BigTyIdx), oneMoreElement(BigTyIdx))
.fewerElementsIf(all(typeIs(0, S16), vectorWiderThan(1, 32),
elementTypeIs(1, S16)),

View File

@ -9,322 +9,286 @@ body: |
; TAHITI-LABEL: name: test_implicit_def_s1025
; TAHITI: [[DEF:%[0-9]+]]:_(s1024) = G_IMPLICIT_DEF
; TAHITI: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32), [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32), [[UV6:%[0-9]+]]:_(s32), [[UV7:%[0-9]+]]:_(s32), [[UV8:%[0-9]+]]:_(s32), [[UV9:%[0-9]+]]:_(s32), [[UV10:%[0-9]+]]:_(s32), [[UV11:%[0-9]+]]:_(s32), [[UV12:%[0-9]+]]:_(s32), [[UV13:%[0-9]+]]:_(s32), [[UV14:%[0-9]+]]:_(s32), [[UV15:%[0-9]+]]:_(s32), [[UV16:%[0-9]+]]:_(s32), [[UV17:%[0-9]+]]:_(s32), [[UV18:%[0-9]+]]:_(s32), [[UV19:%[0-9]+]]:_(s32), [[UV20:%[0-9]+]]:_(s32), [[UV21:%[0-9]+]]:_(s32), [[UV22:%[0-9]+]]:_(s32), [[UV23:%[0-9]+]]:_(s32), [[UV24:%[0-9]+]]:_(s32), [[UV25:%[0-9]+]]:_(s32), [[UV26:%[0-9]+]]:_(s32), [[UV27:%[0-9]+]]:_(s32), [[UV28:%[0-9]+]]:_(s32), [[UV29:%[0-9]+]]:_(s32), [[UV30:%[0-9]+]]:_(s32), [[UV31:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[DEF]](s1024)
; TAHITI: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[UV]](s32)
; TAHITI: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16
; TAHITI: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[UV]], [[C]](s32)
; TAHITI: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[LSHR]](s32)
; TAHITI: [[C1:%[0-9]+]]:_(s16) = G_CONSTANT i16 1
; TAHITI: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
; TAHITI: [[COPY:%[0-9]+]]:_(s32) = COPY [[C2]](s32)
; TAHITI: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535
; TAHITI: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
; TAHITI: [[COPY:%[0-9]+]]:_(s32) = COPY [[C1]](s32)
; TAHITI: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535
; TAHITI: [[COPY1:%[0-9]+]]:_(s32) = COPY [[UV]](s32)
; TAHITI: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C3]]
; TAHITI: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C2]]
; TAHITI: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[AND]], [[COPY]](s32)
; TAHITI: [[C4:%[0-9]+]]:_(s32) = G_CONSTANT i32 2
; TAHITI: [[COPY2:%[0-9]+]]:_(s32) = COPY [[C4]](s32)
; TAHITI: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 2
; TAHITI: [[COPY2:%[0-9]+]]:_(s32) = COPY [[C3]](s32)
; TAHITI: [[COPY3:%[0-9]+]]:_(s32) = COPY [[UV]](s32)
; TAHITI: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY3]], [[C3]]
; TAHITI: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY3]], [[C2]]
; TAHITI: [[LSHR2:%[0-9]+]]:_(s32) = G_LSHR [[AND1]], [[COPY2]](s32)
; TAHITI: [[C5:%[0-9]+]]:_(s32) = G_CONSTANT i32 3
; TAHITI: [[COPY4:%[0-9]+]]:_(s32) = COPY [[C5]](s32)
; TAHITI: [[C4:%[0-9]+]]:_(s32) = G_CONSTANT i32 3
; TAHITI: [[COPY4:%[0-9]+]]:_(s32) = COPY [[C4]](s32)
; TAHITI: [[COPY5:%[0-9]+]]:_(s32) = COPY [[UV]](s32)
; TAHITI: [[AND2:%[0-9]+]]:_(s32) = G_AND [[COPY5]], [[C3]]
; TAHITI: [[AND2:%[0-9]+]]:_(s32) = G_AND [[COPY5]], [[C2]]
; TAHITI: [[LSHR3:%[0-9]+]]:_(s32) = G_LSHR [[AND2]], [[COPY4]](s32)
; TAHITI: [[C6:%[0-9]+]]:_(s32) = G_CONSTANT i32 4
; TAHITI: [[COPY6:%[0-9]+]]:_(s32) = COPY [[C6]](s32)
; TAHITI: [[C5:%[0-9]+]]:_(s32) = G_CONSTANT i32 4
; TAHITI: [[COPY6:%[0-9]+]]:_(s32) = COPY [[C5]](s32)
; TAHITI: [[COPY7:%[0-9]+]]:_(s32) = COPY [[UV]](s32)
; TAHITI: [[AND3:%[0-9]+]]:_(s32) = G_AND [[COPY7]], [[C3]]
; TAHITI: [[AND3:%[0-9]+]]:_(s32) = G_AND [[COPY7]], [[C2]]
; TAHITI: [[LSHR4:%[0-9]+]]:_(s32) = G_LSHR [[AND3]], [[COPY6]](s32)
; TAHITI: [[C7:%[0-9]+]]:_(s32) = G_CONSTANT i32 5
; TAHITI: [[COPY8:%[0-9]+]]:_(s32) = COPY [[C7]](s32)
; TAHITI: [[C6:%[0-9]+]]:_(s32) = G_CONSTANT i32 5
; TAHITI: [[COPY8:%[0-9]+]]:_(s32) = COPY [[C6]](s32)
; TAHITI: [[COPY9:%[0-9]+]]:_(s32) = COPY [[UV]](s32)
; TAHITI: [[AND4:%[0-9]+]]:_(s32) = G_AND [[COPY9]], [[C3]]
; TAHITI: [[AND4:%[0-9]+]]:_(s32) = G_AND [[COPY9]], [[C2]]
; TAHITI: [[LSHR5:%[0-9]+]]:_(s32) = G_LSHR [[AND4]], [[COPY8]](s32)
; TAHITI: [[C8:%[0-9]+]]:_(s32) = G_CONSTANT i32 6
; TAHITI: [[COPY10:%[0-9]+]]:_(s32) = COPY [[C8]](s32)
; TAHITI: [[C7:%[0-9]+]]:_(s32) = G_CONSTANT i32 6
; TAHITI: [[COPY10:%[0-9]+]]:_(s32) = COPY [[C7]](s32)
; TAHITI: [[COPY11:%[0-9]+]]:_(s32) = COPY [[UV]](s32)
; TAHITI: [[AND5:%[0-9]+]]:_(s32) = G_AND [[COPY11]], [[C3]]
; TAHITI: [[AND5:%[0-9]+]]:_(s32) = G_AND [[COPY11]], [[C2]]
; TAHITI: [[LSHR6:%[0-9]+]]:_(s32) = G_LSHR [[AND5]], [[COPY10]](s32)
; TAHITI: [[C9:%[0-9]+]]:_(s32) = G_CONSTANT i32 7
; TAHITI: [[COPY12:%[0-9]+]]:_(s32) = COPY [[C9]](s32)
; TAHITI: [[C8:%[0-9]+]]:_(s32) = G_CONSTANT i32 7
; TAHITI: [[COPY12:%[0-9]+]]:_(s32) = COPY [[C8]](s32)
; TAHITI: [[COPY13:%[0-9]+]]:_(s32) = COPY [[UV]](s32)
; TAHITI: [[AND6:%[0-9]+]]:_(s32) = G_AND [[COPY13]], [[C3]]
; TAHITI: [[AND6:%[0-9]+]]:_(s32) = G_AND [[COPY13]], [[C2]]
; TAHITI: [[LSHR7:%[0-9]+]]:_(s32) = G_LSHR [[AND6]], [[COPY12]](s32)
; TAHITI: [[C10:%[0-9]+]]:_(s32) = G_CONSTANT i32 8
; TAHITI: [[COPY14:%[0-9]+]]:_(s32) = COPY [[C10]](s32)
; TAHITI: [[C9:%[0-9]+]]:_(s32) = G_CONSTANT i32 8
; TAHITI: [[COPY14:%[0-9]+]]:_(s32) = COPY [[C9]](s32)
; TAHITI: [[COPY15:%[0-9]+]]:_(s32) = COPY [[UV]](s32)
; TAHITI: [[AND7:%[0-9]+]]:_(s32) = G_AND [[COPY15]], [[C3]]
; TAHITI: [[AND7:%[0-9]+]]:_(s32) = G_AND [[COPY15]], [[C2]]
; TAHITI: [[LSHR8:%[0-9]+]]:_(s32) = G_LSHR [[AND7]], [[COPY14]](s32)
; TAHITI: [[C11:%[0-9]+]]:_(s32) = G_CONSTANT i32 9
; TAHITI: [[COPY16:%[0-9]+]]:_(s32) = COPY [[C11]](s32)
; TAHITI: [[C10:%[0-9]+]]:_(s32) = G_CONSTANT i32 9
; TAHITI: [[COPY16:%[0-9]+]]:_(s32) = COPY [[C10]](s32)
; TAHITI: [[COPY17:%[0-9]+]]:_(s32) = COPY [[UV]](s32)
; TAHITI: [[AND8:%[0-9]+]]:_(s32) = G_AND [[COPY17]], [[C3]]
; TAHITI: [[AND8:%[0-9]+]]:_(s32) = G_AND [[COPY17]], [[C2]]
; TAHITI: [[LSHR9:%[0-9]+]]:_(s32) = G_LSHR [[AND8]], [[COPY16]](s32)
; TAHITI: [[C12:%[0-9]+]]:_(s32) = G_CONSTANT i32 10
; TAHITI: [[COPY18:%[0-9]+]]:_(s32) = COPY [[C12]](s32)
; TAHITI: [[C11:%[0-9]+]]:_(s32) = G_CONSTANT i32 10
; TAHITI: [[COPY18:%[0-9]+]]:_(s32) = COPY [[C11]](s32)
; TAHITI: [[COPY19:%[0-9]+]]:_(s32) = COPY [[UV]](s32)
; TAHITI: [[AND9:%[0-9]+]]:_(s32) = G_AND [[COPY19]], [[C3]]
; TAHITI: [[AND9:%[0-9]+]]:_(s32) = G_AND [[COPY19]], [[C2]]
; TAHITI: [[LSHR10:%[0-9]+]]:_(s32) = G_LSHR [[AND9]], [[COPY18]](s32)
; TAHITI: [[C13:%[0-9]+]]:_(s32) = G_CONSTANT i32 11
; TAHITI: [[COPY20:%[0-9]+]]:_(s32) = COPY [[C13]](s32)
; TAHITI: [[C12:%[0-9]+]]:_(s32) = G_CONSTANT i32 11
; TAHITI: [[COPY20:%[0-9]+]]:_(s32) = COPY [[C12]](s32)
; TAHITI: [[COPY21:%[0-9]+]]:_(s32) = COPY [[UV]](s32)
; TAHITI: [[AND10:%[0-9]+]]:_(s32) = G_AND [[COPY21]], [[C3]]
; TAHITI: [[AND10:%[0-9]+]]:_(s32) = G_AND [[COPY21]], [[C2]]
; TAHITI: [[LSHR11:%[0-9]+]]:_(s32) = G_LSHR [[AND10]], [[COPY20]](s32)
; TAHITI: [[C14:%[0-9]+]]:_(s32) = G_CONSTANT i32 12
; TAHITI: [[COPY22:%[0-9]+]]:_(s32) = COPY [[C14]](s32)
; TAHITI: [[C13:%[0-9]+]]:_(s32) = G_CONSTANT i32 12
; TAHITI: [[COPY22:%[0-9]+]]:_(s32) = COPY [[C13]](s32)
; TAHITI: [[COPY23:%[0-9]+]]:_(s32) = COPY [[UV]](s32)
; TAHITI: [[AND11:%[0-9]+]]:_(s32) = G_AND [[COPY23]], [[C3]]
; TAHITI: [[AND11:%[0-9]+]]:_(s32) = G_AND [[COPY23]], [[C2]]
; TAHITI: [[LSHR12:%[0-9]+]]:_(s32) = G_LSHR [[AND11]], [[COPY22]](s32)
; TAHITI: [[C15:%[0-9]+]]:_(s32) = G_CONSTANT i32 13
; TAHITI: [[COPY24:%[0-9]+]]:_(s32) = COPY [[C15]](s32)
; TAHITI: [[C14:%[0-9]+]]:_(s32) = G_CONSTANT i32 13
; TAHITI: [[COPY24:%[0-9]+]]:_(s32) = COPY [[C14]](s32)
; TAHITI: [[COPY25:%[0-9]+]]:_(s32) = COPY [[UV]](s32)
; TAHITI: [[AND12:%[0-9]+]]:_(s32) = G_AND [[COPY25]], [[C3]]
; TAHITI: [[AND12:%[0-9]+]]:_(s32) = G_AND [[COPY25]], [[C2]]
; TAHITI: [[LSHR13:%[0-9]+]]:_(s32) = G_LSHR [[AND12]], [[COPY24]](s32)
; TAHITI: [[C16:%[0-9]+]]:_(s32) = G_CONSTANT i32 14
; TAHITI: [[COPY26:%[0-9]+]]:_(s32) = COPY [[C16]](s32)
; TAHITI: [[C15:%[0-9]+]]:_(s32) = G_CONSTANT i32 14
; TAHITI: [[COPY26:%[0-9]+]]:_(s32) = COPY [[C15]](s32)
; TAHITI: [[COPY27:%[0-9]+]]:_(s32) = COPY [[UV]](s32)
; TAHITI: [[AND13:%[0-9]+]]:_(s32) = G_AND [[COPY27]], [[C3]]
; TAHITI: [[AND13:%[0-9]+]]:_(s32) = G_AND [[COPY27]], [[C2]]
; TAHITI: [[LSHR14:%[0-9]+]]:_(s32) = G_LSHR [[AND13]], [[COPY26]](s32)
; TAHITI: [[C17:%[0-9]+]]:_(s32) = G_CONSTANT i32 15
; TAHITI: [[COPY28:%[0-9]+]]:_(s32) = COPY [[C17]](s32)
; TAHITI: [[C16:%[0-9]+]]:_(s32) = G_CONSTANT i32 15
; TAHITI: [[COPY28:%[0-9]+]]:_(s32) = COPY [[C16]](s32)
; TAHITI: [[COPY29:%[0-9]+]]:_(s32) = COPY [[UV]](s32)
; TAHITI: [[AND14:%[0-9]+]]:_(s32) = G_AND [[COPY29]], [[C3]]
; TAHITI: [[AND14:%[0-9]+]]:_(s32) = G_AND [[COPY29]], [[C2]]
; TAHITI: [[LSHR15:%[0-9]+]]:_(s32) = G_LSHR [[AND14]], [[COPY28]](s32)
; TAHITI: [[COPY30:%[0-9]+]]:_(s32) = COPY [[C2]](s32)
; TAHITI: [[COPY30:%[0-9]+]]:_(s32) = COPY [[C1]](s32)
; TAHITI: [[COPY31:%[0-9]+]]:_(s32) = COPY [[LSHR]](s32)
; TAHITI: [[AND15:%[0-9]+]]:_(s32) = G_AND [[COPY31]], [[C3]]
; TAHITI: [[AND15:%[0-9]+]]:_(s32) = G_AND [[COPY31]], [[C2]]
; TAHITI: [[LSHR16:%[0-9]+]]:_(s32) = G_LSHR [[AND15]], [[COPY30]](s32)
; TAHITI: [[COPY32:%[0-9]+]]:_(s32) = COPY [[C4]](s32)
; TAHITI: [[COPY32:%[0-9]+]]:_(s32) = COPY [[C3]](s32)
; TAHITI: [[COPY33:%[0-9]+]]:_(s32) = COPY [[LSHR]](s32)
; TAHITI: [[AND16:%[0-9]+]]:_(s32) = G_AND [[COPY33]], [[C3]]
; TAHITI: [[AND16:%[0-9]+]]:_(s32) = G_AND [[COPY33]], [[C2]]
; TAHITI: [[LSHR17:%[0-9]+]]:_(s32) = G_LSHR [[AND16]], [[COPY32]](s32)
; TAHITI: [[COPY34:%[0-9]+]]:_(s32) = COPY [[C5]](s32)
; TAHITI: [[COPY34:%[0-9]+]]:_(s32) = COPY [[C4]](s32)
; TAHITI: [[COPY35:%[0-9]+]]:_(s32) = COPY [[LSHR]](s32)
; TAHITI: [[AND17:%[0-9]+]]:_(s32) = G_AND [[COPY35]], [[C3]]
; TAHITI: [[AND17:%[0-9]+]]:_(s32) = G_AND [[COPY35]], [[C2]]
; TAHITI: [[LSHR18:%[0-9]+]]:_(s32) = G_LSHR [[AND17]], [[COPY34]](s32)
; TAHITI: [[COPY36:%[0-9]+]]:_(s32) = COPY [[C6]](s32)
; TAHITI: [[COPY36:%[0-9]+]]:_(s32) = COPY [[C5]](s32)
; TAHITI: [[COPY37:%[0-9]+]]:_(s32) = COPY [[LSHR]](s32)
; TAHITI: [[AND18:%[0-9]+]]:_(s32) = G_AND [[COPY37]], [[C3]]
; TAHITI: [[AND18:%[0-9]+]]:_(s32) = G_AND [[COPY37]], [[C2]]
; TAHITI: [[LSHR19:%[0-9]+]]:_(s32) = G_LSHR [[AND18]], [[COPY36]](s32)
; TAHITI: [[COPY38:%[0-9]+]]:_(s32) = COPY [[C7]](s32)
; TAHITI: [[COPY38:%[0-9]+]]:_(s32) = COPY [[C6]](s32)
; TAHITI: [[COPY39:%[0-9]+]]:_(s32) = COPY [[LSHR]](s32)
; TAHITI: [[AND19:%[0-9]+]]:_(s32) = G_AND [[COPY39]], [[C3]]
; TAHITI: [[AND19:%[0-9]+]]:_(s32) = G_AND [[COPY39]], [[C2]]
; TAHITI: [[LSHR20:%[0-9]+]]:_(s32) = G_LSHR [[AND19]], [[COPY38]](s32)
; TAHITI: [[COPY40:%[0-9]+]]:_(s32) = COPY [[C8]](s32)
; TAHITI: [[COPY40:%[0-9]+]]:_(s32) = COPY [[C7]](s32)
; TAHITI: [[COPY41:%[0-9]+]]:_(s32) = COPY [[LSHR]](s32)
; TAHITI: [[AND20:%[0-9]+]]:_(s32) = G_AND [[COPY41]], [[C3]]
; TAHITI: [[AND20:%[0-9]+]]:_(s32) = G_AND [[COPY41]], [[C2]]
; TAHITI: [[LSHR21:%[0-9]+]]:_(s32) = G_LSHR [[AND20]], [[COPY40]](s32)
; TAHITI: [[COPY42:%[0-9]+]]:_(s32) = COPY [[C9]](s32)
; TAHITI: [[COPY42:%[0-9]+]]:_(s32) = COPY [[C8]](s32)
; TAHITI: [[COPY43:%[0-9]+]]:_(s32) = COPY [[LSHR]](s32)
; TAHITI: [[AND21:%[0-9]+]]:_(s32) = G_AND [[COPY43]], [[C3]]
; TAHITI: [[AND21:%[0-9]+]]:_(s32) = G_AND [[COPY43]], [[C2]]
; TAHITI: [[LSHR22:%[0-9]+]]:_(s32) = G_LSHR [[AND21]], [[COPY42]](s32)
; TAHITI: [[COPY44:%[0-9]+]]:_(s32) = COPY [[C10]](s32)
; TAHITI: [[COPY44:%[0-9]+]]:_(s32) = COPY [[C9]](s32)
; TAHITI: [[COPY45:%[0-9]+]]:_(s32) = COPY [[LSHR]](s32)
; TAHITI: [[AND22:%[0-9]+]]:_(s32) = G_AND [[COPY45]], [[C3]]
; TAHITI: [[AND22:%[0-9]+]]:_(s32) = G_AND [[COPY45]], [[C2]]
; TAHITI: [[LSHR23:%[0-9]+]]:_(s32) = G_LSHR [[AND22]], [[COPY44]](s32)
; TAHITI: [[COPY46:%[0-9]+]]:_(s32) = COPY [[C11]](s32)
; TAHITI: [[COPY46:%[0-9]+]]:_(s32) = COPY [[C10]](s32)
; TAHITI: [[COPY47:%[0-9]+]]:_(s32) = COPY [[LSHR]](s32)
; TAHITI: [[AND23:%[0-9]+]]:_(s32) = G_AND [[COPY47]], [[C3]]
; TAHITI: [[AND23:%[0-9]+]]:_(s32) = G_AND [[COPY47]], [[C2]]
; TAHITI: [[LSHR24:%[0-9]+]]:_(s32) = G_LSHR [[AND23]], [[COPY46]](s32)
; TAHITI: [[COPY48:%[0-9]+]]:_(s32) = COPY [[C12]](s32)
; TAHITI: [[COPY48:%[0-9]+]]:_(s32) = COPY [[C11]](s32)
; TAHITI: [[COPY49:%[0-9]+]]:_(s32) = COPY [[LSHR]](s32)
; TAHITI: [[AND24:%[0-9]+]]:_(s32) = G_AND [[COPY49]], [[C3]]
; TAHITI: [[AND24:%[0-9]+]]:_(s32) = G_AND [[COPY49]], [[C2]]
; TAHITI: [[LSHR25:%[0-9]+]]:_(s32) = G_LSHR [[AND24]], [[COPY48]](s32)
; TAHITI: [[COPY50:%[0-9]+]]:_(s32) = COPY [[C13]](s32)
; TAHITI: [[COPY50:%[0-9]+]]:_(s32) = COPY [[C12]](s32)
; TAHITI: [[COPY51:%[0-9]+]]:_(s32) = COPY [[LSHR]](s32)
; TAHITI: [[AND25:%[0-9]+]]:_(s32) = G_AND [[COPY51]], [[C3]]
; TAHITI: [[AND25:%[0-9]+]]:_(s32) = G_AND [[COPY51]], [[C2]]
; TAHITI: [[LSHR26:%[0-9]+]]:_(s32) = G_LSHR [[AND25]], [[COPY50]](s32)
; TAHITI: [[COPY52:%[0-9]+]]:_(s32) = COPY [[C14]](s32)
; TAHITI: [[COPY52:%[0-9]+]]:_(s32) = COPY [[C13]](s32)
; TAHITI: [[COPY53:%[0-9]+]]:_(s32) = COPY [[LSHR]](s32)
; TAHITI: [[AND26:%[0-9]+]]:_(s32) = G_AND [[COPY53]], [[C3]]
; TAHITI: [[AND26:%[0-9]+]]:_(s32) = G_AND [[COPY53]], [[C2]]
; TAHITI: [[LSHR27:%[0-9]+]]:_(s32) = G_LSHR [[AND26]], [[COPY52]](s32)
; TAHITI: [[COPY54:%[0-9]+]]:_(s32) = COPY [[C15]](s32)
; TAHITI: [[COPY54:%[0-9]+]]:_(s32) = COPY [[C14]](s32)
; TAHITI: [[COPY55:%[0-9]+]]:_(s32) = COPY [[LSHR]](s32)
; TAHITI: [[AND27:%[0-9]+]]:_(s32) = G_AND [[COPY55]], [[C3]]
; TAHITI: [[AND27:%[0-9]+]]:_(s32) = G_AND [[COPY55]], [[C2]]
; TAHITI: [[LSHR28:%[0-9]+]]:_(s32) = G_LSHR [[AND27]], [[COPY54]](s32)
; TAHITI: [[COPY56:%[0-9]+]]:_(s32) = COPY [[C16]](s32)
; TAHITI: [[COPY56:%[0-9]+]]:_(s32) = COPY [[C15]](s32)
; TAHITI: [[COPY57:%[0-9]+]]:_(s32) = COPY [[LSHR]](s32)
; TAHITI: [[AND28:%[0-9]+]]:_(s32) = G_AND [[COPY57]], [[C3]]
; TAHITI: [[AND28:%[0-9]+]]:_(s32) = G_AND [[COPY57]], [[C2]]
; TAHITI: [[LSHR29:%[0-9]+]]:_(s32) = G_LSHR [[AND28]], [[COPY56]](s32)
; TAHITI: [[COPY58:%[0-9]+]]:_(s32) = COPY [[C17]](s32)
; TAHITI: [[COPY58:%[0-9]+]]:_(s32) = COPY [[C16]](s32)
; TAHITI: [[COPY59:%[0-9]+]]:_(s32) = COPY [[LSHR]](s32)
; TAHITI: [[AND29:%[0-9]+]]:_(s32) = G_AND [[COPY59]], [[C3]]
; TAHITI: [[AND29:%[0-9]+]]:_(s32) = G_AND [[COPY59]], [[C2]]
; TAHITI: [[LSHR30:%[0-9]+]]:_(s32) = G_LSHR [[AND29]], [[COPY58]](s32)
; TAHITI: [[DEF1:%[0-9]+]]:_(s64) = G_IMPLICIT_DEF
; TAHITI: [[COPY60:%[0-9]+]]:_(s16) = COPY [[TRUNC]](s16)
; TAHITI: [[AND30:%[0-9]+]]:_(s16) = G_AND [[COPY60]], [[C1]]
; TAHITI: [[COPY61:%[0-9]+]]:_(s32) = COPY [[C2]](s32)
; TAHITI: [[COPY62:%[0-9]+]]:_(s32) = COPY [[LSHR1]](s32)
; TAHITI: [[AND31:%[0-9]+]]:_(s32) = G_AND [[COPY62]], [[C2]]
; TAHITI: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND31]], [[COPY61]](s32)
; TAHITI: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[SHL]](s32)
; TAHITI: [[OR:%[0-9]+]]:_(s16) = G_OR [[AND30]], [[TRUNC2]]
; TAHITI: [[COPY63:%[0-9]+]]:_(s32) = COPY [[C4]](s32)
; TAHITI: [[COPY64:%[0-9]+]]:_(s32) = COPY [[LSHR2]](s32)
; TAHITI: [[AND32:%[0-9]+]]:_(s32) = G_AND [[COPY64]], [[C2]]
; TAHITI: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[AND32]], [[COPY63]](s32)
; TAHITI: [[TRUNC3:%[0-9]+]]:_(s16) = G_TRUNC [[SHL1]](s32)
; TAHITI: [[OR1:%[0-9]+]]:_(s16) = G_OR [[OR]], [[TRUNC3]]
; TAHITI: [[COPY65:%[0-9]+]]:_(s32) = COPY [[C5]](s32)
; TAHITI: [[COPY66:%[0-9]+]]:_(s32) = COPY [[LSHR3]](s32)
; TAHITI: [[AND33:%[0-9]+]]:_(s32) = G_AND [[COPY66]], [[C2]]
; TAHITI: [[SHL2:%[0-9]+]]:_(s32) = G_SHL [[AND33]], [[COPY65]](s32)
; TAHITI: [[TRUNC4:%[0-9]+]]:_(s16) = G_TRUNC [[SHL2]](s32)
; TAHITI: [[OR2:%[0-9]+]]:_(s16) = G_OR [[OR1]], [[TRUNC4]]
; TAHITI: [[COPY67:%[0-9]+]]:_(s32) = COPY [[C6]](s32)
; TAHITI: [[COPY68:%[0-9]+]]:_(s32) = COPY [[LSHR4]](s32)
; TAHITI: [[AND34:%[0-9]+]]:_(s32) = G_AND [[COPY68]], [[C2]]
; TAHITI: [[SHL3:%[0-9]+]]:_(s32) = G_SHL [[AND34]], [[COPY67]](s32)
; TAHITI: [[TRUNC5:%[0-9]+]]:_(s16) = G_TRUNC [[SHL3]](s32)
; TAHITI: [[OR3:%[0-9]+]]:_(s16) = G_OR [[OR2]], [[TRUNC5]]
; TAHITI: [[COPY69:%[0-9]+]]:_(s32) = COPY [[C7]](s32)
; TAHITI: [[COPY70:%[0-9]+]]:_(s32) = COPY [[LSHR5]](s32)
; TAHITI: [[AND35:%[0-9]+]]:_(s32) = G_AND [[COPY70]], [[C2]]
; TAHITI: [[SHL4:%[0-9]+]]:_(s32) = G_SHL [[AND35]], [[COPY69]](s32)
; TAHITI: [[TRUNC6:%[0-9]+]]:_(s16) = G_TRUNC [[SHL4]](s32)
; TAHITI: [[OR4:%[0-9]+]]:_(s16) = G_OR [[OR3]], [[TRUNC6]]
; TAHITI: [[COPY71:%[0-9]+]]:_(s32) = COPY [[C8]](s32)
; TAHITI: [[COPY72:%[0-9]+]]:_(s32) = COPY [[LSHR6]](s32)
; TAHITI: [[AND36:%[0-9]+]]:_(s32) = G_AND [[COPY72]], [[C2]]
; TAHITI: [[SHL5:%[0-9]+]]:_(s32) = G_SHL [[AND36]], [[COPY71]](s32)
; TAHITI: [[TRUNC7:%[0-9]+]]:_(s16) = G_TRUNC [[SHL5]](s32)
; TAHITI: [[OR5:%[0-9]+]]:_(s16) = G_OR [[OR4]], [[TRUNC7]]
; TAHITI: [[COPY73:%[0-9]+]]:_(s32) = COPY [[C9]](s32)
; TAHITI: [[COPY74:%[0-9]+]]:_(s32) = COPY [[LSHR7]](s32)
; TAHITI: [[AND37:%[0-9]+]]:_(s32) = G_AND [[COPY74]], [[C2]]
; TAHITI: [[SHL6:%[0-9]+]]:_(s32) = G_SHL [[AND37]], [[COPY73]](s32)
; TAHITI: [[TRUNC8:%[0-9]+]]:_(s16) = G_TRUNC [[SHL6]](s32)
; TAHITI: [[OR6:%[0-9]+]]:_(s16) = G_OR [[OR5]], [[TRUNC8]]
; TAHITI: [[COPY75:%[0-9]+]]:_(s32) = COPY [[C10]](s32)
; TAHITI: [[COPY76:%[0-9]+]]:_(s32) = COPY [[LSHR8]](s32)
; TAHITI: [[AND38:%[0-9]+]]:_(s32) = G_AND [[COPY76]], [[C2]]
; TAHITI: [[SHL7:%[0-9]+]]:_(s32) = G_SHL [[AND38]], [[COPY75]](s32)
; TAHITI: [[TRUNC9:%[0-9]+]]:_(s16) = G_TRUNC [[SHL7]](s32)
; TAHITI: [[OR7:%[0-9]+]]:_(s16) = G_OR [[OR6]], [[TRUNC9]]
; TAHITI: [[COPY77:%[0-9]+]]:_(s32) = COPY [[C11]](s32)
; TAHITI: [[COPY78:%[0-9]+]]:_(s32) = COPY [[LSHR9]](s32)
; TAHITI: [[AND39:%[0-9]+]]:_(s32) = G_AND [[COPY78]], [[C2]]
; TAHITI: [[SHL8:%[0-9]+]]:_(s32) = G_SHL [[AND39]], [[COPY77]](s32)
; TAHITI: [[TRUNC10:%[0-9]+]]:_(s16) = G_TRUNC [[SHL8]](s32)
; TAHITI: [[OR8:%[0-9]+]]:_(s16) = G_OR [[OR7]], [[TRUNC10]]
; TAHITI: [[COPY79:%[0-9]+]]:_(s32) = COPY [[C12]](s32)
; TAHITI: [[COPY80:%[0-9]+]]:_(s32) = COPY [[LSHR10]](s32)
; TAHITI: [[AND40:%[0-9]+]]:_(s32) = G_AND [[COPY80]], [[C2]]
; TAHITI: [[SHL9:%[0-9]+]]:_(s32) = G_SHL [[AND40]], [[COPY79]](s32)
; TAHITI: [[TRUNC11:%[0-9]+]]:_(s16) = G_TRUNC [[SHL9]](s32)
; TAHITI: [[OR9:%[0-9]+]]:_(s16) = G_OR [[OR8]], [[TRUNC11]]
; TAHITI: [[COPY81:%[0-9]+]]:_(s32) = COPY [[C13]](s32)
; TAHITI: [[COPY82:%[0-9]+]]:_(s32) = COPY [[LSHR11]](s32)
; TAHITI: [[AND41:%[0-9]+]]:_(s32) = G_AND [[COPY82]], [[C2]]
; TAHITI: [[SHL10:%[0-9]+]]:_(s32) = G_SHL [[AND41]], [[COPY81]](s32)
; TAHITI: [[TRUNC12:%[0-9]+]]:_(s16) = G_TRUNC [[SHL10]](s32)
; TAHITI: [[OR10:%[0-9]+]]:_(s16) = G_OR [[OR9]], [[TRUNC12]]
; TAHITI: [[COPY83:%[0-9]+]]:_(s32) = COPY [[C14]](s32)
; TAHITI: [[COPY84:%[0-9]+]]:_(s32) = COPY [[LSHR12]](s32)
; TAHITI: [[AND42:%[0-9]+]]:_(s32) = G_AND [[COPY84]], [[C2]]
; TAHITI: [[SHL11:%[0-9]+]]:_(s32) = G_SHL [[AND42]], [[COPY83]](s32)
; TAHITI: [[TRUNC13:%[0-9]+]]:_(s16) = G_TRUNC [[SHL11]](s32)
; TAHITI: [[OR11:%[0-9]+]]:_(s16) = G_OR [[OR10]], [[TRUNC13]]
; TAHITI: [[COPY85:%[0-9]+]]:_(s32) = COPY [[C15]](s32)
; TAHITI: [[COPY86:%[0-9]+]]:_(s32) = COPY [[LSHR13]](s32)
; TAHITI: [[AND43:%[0-9]+]]:_(s32) = G_AND [[COPY86]], [[C2]]
; TAHITI: [[SHL12:%[0-9]+]]:_(s32) = G_SHL [[AND43]], [[COPY85]](s32)
; TAHITI: [[TRUNC14:%[0-9]+]]:_(s16) = G_TRUNC [[SHL12]](s32)
; TAHITI: [[OR12:%[0-9]+]]:_(s16) = G_OR [[OR11]], [[TRUNC14]]
; TAHITI: [[COPY87:%[0-9]+]]:_(s32) = COPY [[C16]](s32)
; TAHITI: [[COPY88:%[0-9]+]]:_(s32) = COPY [[LSHR14]](s32)
; TAHITI: [[AND44:%[0-9]+]]:_(s32) = G_AND [[COPY88]], [[C2]]
; TAHITI: [[SHL13:%[0-9]+]]:_(s32) = G_SHL [[AND44]], [[COPY87]](s32)
; TAHITI: [[TRUNC15:%[0-9]+]]:_(s16) = G_TRUNC [[SHL13]](s32)
; TAHITI: [[OR13:%[0-9]+]]:_(s16) = G_OR [[OR12]], [[TRUNC15]]
; TAHITI: [[COPY89:%[0-9]+]]:_(s32) = COPY [[C17]](s32)
; TAHITI: [[COPY90:%[0-9]+]]:_(s32) = COPY [[LSHR15]](s32)
; TAHITI: [[AND45:%[0-9]+]]:_(s32) = G_AND [[COPY90]], [[C2]]
; TAHITI: [[SHL14:%[0-9]+]]:_(s32) = G_SHL [[AND45]], [[COPY89]](s32)
; TAHITI: [[TRUNC16:%[0-9]+]]:_(s16) = G_TRUNC [[SHL14]](s32)
; TAHITI: [[OR14:%[0-9]+]]:_(s16) = G_OR [[OR13]], [[TRUNC16]]
; TAHITI: [[COPY91:%[0-9]+]]:_(s16) = COPY [[TRUNC1]](s16)
; TAHITI: [[AND46:%[0-9]+]]:_(s16) = G_AND [[COPY91]], [[C1]]
; TAHITI: [[COPY92:%[0-9]+]]:_(s32) = COPY [[C2]](s32)
; TAHITI: [[COPY93:%[0-9]+]]:_(s32) = COPY [[LSHR16]](s32)
; TAHITI: [[AND47:%[0-9]+]]:_(s32) = G_AND [[COPY93]], [[C2]]
; TAHITI: [[SHL15:%[0-9]+]]:_(s32) = G_SHL [[AND47]], [[COPY92]](s32)
; TAHITI: [[TRUNC17:%[0-9]+]]:_(s16) = G_TRUNC [[SHL15]](s32)
; TAHITI: [[OR15:%[0-9]+]]:_(s16) = G_OR [[AND46]], [[TRUNC17]]
; TAHITI: [[COPY94:%[0-9]+]]:_(s32) = COPY [[LSHR17]](s32)
; TAHITI: [[AND48:%[0-9]+]]:_(s32) = G_AND [[COPY94]], [[C2]]
; TAHITI: [[SHL16:%[0-9]+]]:_(s32) = G_SHL [[AND48]], [[C4]](s32)
; TAHITI: [[TRUNC18:%[0-9]+]]:_(s16) = G_TRUNC [[SHL16]](s32)
; TAHITI: [[OR16:%[0-9]+]]:_(s16) = G_OR [[OR15]], [[TRUNC18]]
; TAHITI: [[COPY95:%[0-9]+]]:_(s32) = COPY [[LSHR18]](s32)
; TAHITI: [[AND49:%[0-9]+]]:_(s32) = G_AND [[COPY95]], [[C2]]
; TAHITI: [[SHL17:%[0-9]+]]:_(s32) = G_SHL [[AND49]], [[C5]](s32)
; TAHITI: [[TRUNC19:%[0-9]+]]:_(s16) = G_TRUNC [[SHL17]](s32)
; TAHITI: [[OR17:%[0-9]+]]:_(s16) = G_OR [[OR16]], [[TRUNC19]]
; TAHITI: [[COPY96:%[0-9]+]]:_(s32) = COPY [[LSHR19]](s32)
; TAHITI: [[AND50:%[0-9]+]]:_(s32) = G_AND [[COPY96]], [[C2]]
; TAHITI: [[SHL18:%[0-9]+]]:_(s32) = G_SHL [[AND50]], [[C6]](s32)
; TAHITI: [[TRUNC20:%[0-9]+]]:_(s16) = G_TRUNC [[SHL18]](s32)
; TAHITI: [[OR18:%[0-9]+]]:_(s16) = G_OR [[OR17]], [[TRUNC20]]
; TAHITI: [[COPY97:%[0-9]+]]:_(s32) = COPY [[LSHR20]](s32)
; TAHITI: [[AND51:%[0-9]+]]:_(s32) = G_AND [[COPY97]], [[C2]]
; TAHITI: [[SHL19:%[0-9]+]]:_(s32) = G_SHL [[AND51]], [[C7]](s32)
; TAHITI: [[TRUNC21:%[0-9]+]]:_(s16) = G_TRUNC [[SHL19]](s32)
; TAHITI: [[OR19:%[0-9]+]]:_(s16) = G_OR [[OR18]], [[TRUNC21]]
; TAHITI: [[COPY98:%[0-9]+]]:_(s32) = COPY [[LSHR21]](s32)
; TAHITI: [[AND52:%[0-9]+]]:_(s32) = G_AND [[COPY98]], [[C2]]
; TAHITI: [[SHL20:%[0-9]+]]:_(s32) = G_SHL [[AND52]], [[C8]](s32)
; TAHITI: [[TRUNC22:%[0-9]+]]:_(s16) = G_TRUNC [[SHL20]](s32)
; TAHITI: [[OR20:%[0-9]+]]:_(s16) = G_OR [[OR19]], [[TRUNC22]]
; TAHITI: [[COPY99:%[0-9]+]]:_(s32) = COPY [[LSHR22]](s32)
; TAHITI: [[AND53:%[0-9]+]]:_(s32) = G_AND [[COPY99]], [[C2]]
; TAHITI: [[SHL21:%[0-9]+]]:_(s32) = G_SHL [[AND53]], [[C9]](s32)
; TAHITI: [[TRUNC23:%[0-9]+]]:_(s16) = G_TRUNC [[SHL21]](s32)
; TAHITI: [[OR21:%[0-9]+]]:_(s16) = G_OR [[OR20]], [[TRUNC23]]
; TAHITI: [[COPY100:%[0-9]+]]:_(s32) = COPY [[LSHR23]](s32)
; TAHITI: [[AND54:%[0-9]+]]:_(s32) = G_AND [[COPY100]], [[C2]]
; TAHITI: [[SHL22:%[0-9]+]]:_(s32) = G_SHL [[AND54]], [[C10]](s32)
; TAHITI: [[TRUNC24:%[0-9]+]]:_(s16) = G_TRUNC [[SHL22]](s32)
; TAHITI: [[OR22:%[0-9]+]]:_(s16) = G_OR [[OR21]], [[TRUNC24]]
; TAHITI: [[COPY101:%[0-9]+]]:_(s32) = COPY [[LSHR24]](s32)
; TAHITI: [[AND55:%[0-9]+]]:_(s32) = G_AND [[COPY101]], [[C2]]
; TAHITI: [[SHL23:%[0-9]+]]:_(s32) = G_SHL [[AND55]], [[C11]](s32)
; TAHITI: [[TRUNC25:%[0-9]+]]:_(s16) = G_TRUNC [[SHL23]](s32)
; TAHITI: [[OR23:%[0-9]+]]:_(s16) = G_OR [[OR22]], [[TRUNC25]]
; TAHITI: [[COPY102:%[0-9]+]]:_(s32) = COPY [[LSHR25]](s32)
; TAHITI: [[AND56:%[0-9]+]]:_(s32) = G_AND [[COPY102]], [[C2]]
; TAHITI: [[SHL24:%[0-9]+]]:_(s32) = G_SHL [[AND56]], [[C12]](s32)
; TAHITI: [[TRUNC26:%[0-9]+]]:_(s16) = G_TRUNC [[SHL24]](s32)
; TAHITI: [[OR24:%[0-9]+]]:_(s16) = G_OR [[OR23]], [[TRUNC26]]
; TAHITI: [[COPY103:%[0-9]+]]:_(s32) = COPY [[LSHR26]](s32)
; TAHITI: [[AND57:%[0-9]+]]:_(s32) = G_AND [[COPY103]], [[C2]]
; TAHITI: [[SHL25:%[0-9]+]]:_(s32) = G_SHL [[AND57]], [[C13]](s32)
; TAHITI: [[TRUNC27:%[0-9]+]]:_(s16) = G_TRUNC [[SHL25]](s32)
; TAHITI: [[OR25:%[0-9]+]]:_(s16) = G_OR [[OR24]], [[TRUNC27]]
; TAHITI: [[COPY104:%[0-9]+]]:_(s32) = COPY [[LSHR27]](s32)
; TAHITI: [[AND58:%[0-9]+]]:_(s32) = G_AND [[COPY104]], [[C2]]
; TAHITI: [[SHL26:%[0-9]+]]:_(s32) = G_SHL [[AND58]], [[C14]](s32)
; TAHITI: [[TRUNC28:%[0-9]+]]:_(s16) = G_TRUNC [[SHL26]](s32)
; TAHITI: [[OR26:%[0-9]+]]:_(s16) = G_OR [[OR25]], [[TRUNC28]]
; TAHITI: [[COPY105:%[0-9]+]]:_(s32) = COPY [[LSHR28]](s32)
; TAHITI: [[AND59:%[0-9]+]]:_(s32) = G_AND [[COPY105]], [[C2]]
; TAHITI: [[SHL27:%[0-9]+]]:_(s32) = G_SHL [[AND59]], [[C15]](s32)
; TAHITI: [[TRUNC29:%[0-9]+]]:_(s16) = G_TRUNC [[SHL27]](s32)
; TAHITI: [[OR27:%[0-9]+]]:_(s16) = G_OR [[OR26]], [[TRUNC29]]
; TAHITI: [[COPY106:%[0-9]+]]:_(s32) = COPY [[LSHR29]](s32)
; TAHITI: [[AND60:%[0-9]+]]:_(s32) = G_AND [[COPY106]], [[C2]]
; TAHITI: [[SHL28:%[0-9]+]]:_(s32) = G_SHL [[AND60]], [[C16]](s32)
; TAHITI: [[TRUNC30:%[0-9]+]]:_(s16) = G_TRUNC [[SHL28]](s32)
; TAHITI: [[OR28:%[0-9]+]]:_(s16) = G_OR [[OR27]], [[TRUNC30]]
; TAHITI: [[COPY107:%[0-9]+]]:_(s32) = COPY [[LSHR30]](s32)
; TAHITI: [[AND61:%[0-9]+]]:_(s32) = G_AND [[COPY107]], [[C2]]
; TAHITI: [[SHL29:%[0-9]+]]:_(s32) = G_SHL [[AND61]], [[C17]](s32)
; TAHITI: [[TRUNC31:%[0-9]+]]:_(s16) = G_TRUNC [[SHL29]](s32)
; TAHITI: [[OR29:%[0-9]+]]:_(s16) = G_OR [[OR28]], [[TRUNC31]]
; TAHITI: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[OR14]](s16)
; TAHITI: [[ZEXT1:%[0-9]+]]:_(s32) = G_ZEXT [[OR29]](s16)
; TAHITI: [[SHL30:%[0-9]+]]:_(s32) = G_SHL [[ZEXT1]], [[C]](s32)
; TAHITI: [[OR30:%[0-9]+]]:_(s32) = G_OR [[ZEXT]], [[SHL30]]
; TAHITI: [[COPY60:%[0-9]+]]:_(s32) = COPY [[UV]](s32)
; TAHITI: [[AND30:%[0-9]+]]:_(s32) = G_AND [[COPY60]], [[C1]]
; TAHITI: [[COPY61:%[0-9]+]]:_(s32) = COPY [[LSHR1]](s32)
; TAHITI: [[AND31:%[0-9]+]]:_(s32) = G_AND [[COPY61]], [[C1]]
; TAHITI: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND31]], [[C1]](s32)
; TAHITI: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND30]], [[SHL]]
; TAHITI: [[COPY62:%[0-9]+]]:_(s32) = COPY [[LSHR2]](s32)
; TAHITI: [[AND32:%[0-9]+]]:_(s32) = G_AND [[COPY62]], [[C1]]
; TAHITI: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[AND32]], [[C3]](s32)
; TAHITI: [[OR1:%[0-9]+]]:_(s32) = G_OR [[OR]], [[SHL1]]
; TAHITI: [[COPY63:%[0-9]+]]:_(s32) = COPY [[LSHR3]](s32)
; TAHITI: [[AND33:%[0-9]+]]:_(s32) = G_AND [[COPY63]], [[C1]]
; TAHITI: [[SHL2:%[0-9]+]]:_(s32) = G_SHL [[AND33]], [[C4]](s32)
; TAHITI: [[OR2:%[0-9]+]]:_(s32) = G_OR [[OR1]], [[SHL2]]
; TAHITI: [[COPY64:%[0-9]+]]:_(s32) = COPY [[LSHR4]](s32)
; TAHITI: [[AND34:%[0-9]+]]:_(s32) = G_AND [[COPY64]], [[C1]]
; TAHITI: [[SHL3:%[0-9]+]]:_(s32) = G_SHL [[AND34]], [[C5]](s32)
; TAHITI: [[OR3:%[0-9]+]]:_(s32) = G_OR [[OR2]], [[SHL3]]
; TAHITI: [[COPY65:%[0-9]+]]:_(s32) = COPY [[LSHR5]](s32)
; TAHITI: [[AND35:%[0-9]+]]:_(s32) = G_AND [[COPY65]], [[C1]]
; TAHITI: [[SHL4:%[0-9]+]]:_(s32) = G_SHL [[AND35]], [[C6]](s32)
; TAHITI: [[OR4:%[0-9]+]]:_(s32) = G_OR [[OR3]], [[SHL4]]
; TAHITI: [[COPY66:%[0-9]+]]:_(s32) = COPY [[LSHR6]](s32)
; TAHITI: [[AND36:%[0-9]+]]:_(s32) = G_AND [[COPY66]], [[C1]]
; TAHITI: [[SHL5:%[0-9]+]]:_(s32) = G_SHL [[AND36]], [[C7]](s32)
; TAHITI: [[OR5:%[0-9]+]]:_(s32) = G_OR [[OR4]], [[SHL5]]
; TAHITI: [[COPY67:%[0-9]+]]:_(s32) = COPY [[LSHR7]](s32)
; TAHITI: [[AND37:%[0-9]+]]:_(s32) = G_AND [[COPY67]], [[C1]]
; TAHITI: [[SHL6:%[0-9]+]]:_(s32) = G_SHL [[AND37]], [[C8]](s32)
; TAHITI: [[OR6:%[0-9]+]]:_(s32) = G_OR [[OR5]], [[SHL6]]
; TAHITI: [[COPY68:%[0-9]+]]:_(s32) = COPY [[LSHR8]](s32)
; TAHITI: [[AND38:%[0-9]+]]:_(s32) = G_AND [[COPY68]], [[C1]]
; TAHITI: [[SHL7:%[0-9]+]]:_(s32) = G_SHL [[AND38]], [[C9]](s32)
; TAHITI: [[OR7:%[0-9]+]]:_(s32) = G_OR [[OR6]], [[SHL7]]
; TAHITI: [[COPY69:%[0-9]+]]:_(s32) = COPY [[LSHR9]](s32)
; TAHITI: [[AND39:%[0-9]+]]:_(s32) = G_AND [[COPY69]], [[C1]]
; TAHITI: [[SHL8:%[0-9]+]]:_(s32) = G_SHL [[AND39]], [[C10]](s32)
; TAHITI: [[OR8:%[0-9]+]]:_(s32) = G_OR [[OR7]], [[SHL8]]
; TAHITI: [[COPY70:%[0-9]+]]:_(s32) = COPY [[LSHR10]](s32)
; TAHITI: [[AND40:%[0-9]+]]:_(s32) = G_AND [[COPY70]], [[C1]]
; TAHITI: [[SHL9:%[0-9]+]]:_(s32) = G_SHL [[AND40]], [[C11]](s32)
; TAHITI: [[OR9:%[0-9]+]]:_(s32) = G_OR [[OR8]], [[SHL9]]
; TAHITI: [[COPY71:%[0-9]+]]:_(s32) = COPY [[LSHR11]](s32)
; TAHITI: [[AND41:%[0-9]+]]:_(s32) = G_AND [[COPY71]], [[C1]]
; TAHITI: [[SHL10:%[0-9]+]]:_(s32) = G_SHL [[AND41]], [[C12]](s32)
; TAHITI: [[OR10:%[0-9]+]]:_(s32) = G_OR [[OR9]], [[SHL10]]
; TAHITI: [[COPY72:%[0-9]+]]:_(s32) = COPY [[LSHR12]](s32)
; TAHITI: [[AND42:%[0-9]+]]:_(s32) = G_AND [[COPY72]], [[C1]]
; TAHITI: [[SHL11:%[0-9]+]]:_(s32) = G_SHL [[AND42]], [[C13]](s32)
; TAHITI: [[OR11:%[0-9]+]]:_(s32) = G_OR [[OR10]], [[SHL11]]
; TAHITI: [[COPY73:%[0-9]+]]:_(s32) = COPY [[LSHR13]](s32)
; TAHITI: [[AND43:%[0-9]+]]:_(s32) = G_AND [[COPY73]], [[C1]]
; TAHITI: [[SHL12:%[0-9]+]]:_(s32) = G_SHL [[AND43]], [[C14]](s32)
; TAHITI: [[OR12:%[0-9]+]]:_(s32) = G_OR [[OR11]], [[SHL12]]
; TAHITI: [[COPY74:%[0-9]+]]:_(s32) = COPY [[LSHR14]](s32)
; TAHITI: [[AND44:%[0-9]+]]:_(s32) = G_AND [[COPY74]], [[C1]]
; TAHITI: [[SHL13:%[0-9]+]]:_(s32) = G_SHL [[AND44]], [[C15]](s32)
; TAHITI: [[OR13:%[0-9]+]]:_(s32) = G_OR [[OR12]], [[SHL13]]
; TAHITI: [[COPY75:%[0-9]+]]:_(s32) = COPY [[LSHR15]](s32)
; TAHITI: [[AND45:%[0-9]+]]:_(s32) = G_AND [[COPY75]], [[C1]]
; TAHITI: [[SHL14:%[0-9]+]]:_(s32) = G_SHL [[AND45]], [[C16]](s32)
; TAHITI: [[OR14:%[0-9]+]]:_(s32) = G_OR [[OR13]], [[SHL14]]
; TAHITI: [[COPY76:%[0-9]+]]:_(s32) = COPY [[LSHR]](s32)
; TAHITI: [[AND46:%[0-9]+]]:_(s32) = G_AND [[COPY76]], [[C1]]
; TAHITI: [[SHL15:%[0-9]+]]:_(s32) = G_SHL [[AND46]], [[C]](s32)
; TAHITI: [[OR15:%[0-9]+]]:_(s32) = G_OR [[OR14]], [[SHL15]]
; TAHITI: [[COPY77:%[0-9]+]]:_(s32) = COPY [[LSHR16]](s32)
; TAHITI: [[AND47:%[0-9]+]]:_(s32) = G_AND [[COPY77]], [[C1]]
; TAHITI: [[C17:%[0-9]+]]:_(s32) = G_CONSTANT i32 17
; TAHITI: [[SHL16:%[0-9]+]]:_(s32) = G_SHL [[AND47]], [[C17]](s32)
; TAHITI: [[OR16:%[0-9]+]]:_(s32) = G_OR [[OR15]], [[SHL16]]
; TAHITI: [[COPY78:%[0-9]+]]:_(s32) = COPY [[LSHR17]](s32)
; TAHITI: [[AND48:%[0-9]+]]:_(s32) = G_AND [[COPY78]], [[C1]]
; TAHITI: [[C18:%[0-9]+]]:_(s32) = G_CONSTANT i32 18
; TAHITI: [[SHL17:%[0-9]+]]:_(s32) = G_SHL [[AND48]], [[C18]](s32)
; TAHITI: [[OR17:%[0-9]+]]:_(s32) = G_OR [[OR16]], [[SHL17]]
; TAHITI: [[COPY79:%[0-9]+]]:_(s32) = COPY [[LSHR18]](s32)
; TAHITI: [[AND49:%[0-9]+]]:_(s32) = G_AND [[COPY79]], [[C1]]
; TAHITI: [[C19:%[0-9]+]]:_(s32) = G_CONSTANT i32 19
; TAHITI: [[SHL18:%[0-9]+]]:_(s32) = G_SHL [[AND49]], [[C19]](s32)
; TAHITI: [[OR18:%[0-9]+]]:_(s32) = G_OR [[OR17]], [[SHL18]]
; TAHITI: [[COPY80:%[0-9]+]]:_(s32) = COPY [[LSHR19]](s32)
; TAHITI: [[AND50:%[0-9]+]]:_(s32) = G_AND [[COPY80]], [[C1]]
; TAHITI: [[C20:%[0-9]+]]:_(s32) = G_CONSTANT i32 20
; TAHITI: [[SHL19:%[0-9]+]]:_(s32) = G_SHL [[AND50]], [[C20]](s32)
; TAHITI: [[OR19:%[0-9]+]]:_(s32) = G_OR [[OR18]], [[SHL19]]
; TAHITI: [[COPY81:%[0-9]+]]:_(s32) = COPY [[LSHR20]](s32)
; TAHITI: [[AND51:%[0-9]+]]:_(s32) = G_AND [[COPY81]], [[C1]]
; TAHITI: [[C21:%[0-9]+]]:_(s32) = G_CONSTANT i32 21
; TAHITI: [[SHL20:%[0-9]+]]:_(s32) = G_SHL [[AND51]], [[C21]](s32)
; TAHITI: [[OR20:%[0-9]+]]:_(s32) = G_OR [[OR19]], [[SHL20]]
; TAHITI: [[COPY82:%[0-9]+]]:_(s32) = COPY [[LSHR21]](s32)
; TAHITI: [[AND52:%[0-9]+]]:_(s32) = G_AND [[COPY82]], [[C1]]
; TAHITI: [[C22:%[0-9]+]]:_(s32) = G_CONSTANT i32 22
; TAHITI: [[SHL21:%[0-9]+]]:_(s32) = G_SHL [[AND52]], [[C22]](s32)
; TAHITI: [[OR21:%[0-9]+]]:_(s32) = G_OR [[OR20]], [[SHL21]]
; TAHITI: [[COPY83:%[0-9]+]]:_(s32) = COPY [[LSHR22]](s32)
; TAHITI: [[AND53:%[0-9]+]]:_(s32) = G_AND [[COPY83]], [[C1]]
; TAHITI: [[C23:%[0-9]+]]:_(s32) = G_CONSTANT i32 23
; TAHITI: [[SHL22:%[0-9]+]]:_(s32) = G_SHL [[AND53]], [[C23]](s32)
; TAHITI: [[OR22:%[0-9]+]]:_(s32) = G_OR [[OR21]], [[SHL22]]
; TAHITI: [[COPY84:%[0-9]+]]:_(s32) = COPY [[LSHR23]](s32)
; TAHITI: [[AND54:%[0-9]+]]:_(s32) = G_AND [[COPY84]], [[C1]]
; TAHITI: [[C24:%[0-9]+]]:_(s32) = G_CONSTANT i32 24
; TAHITI: [[SHL23:%[0-9]+]]:_(s32) = G_SHL [[AND54]], [[C24]](s32)
; TAHITI: [[OR23:%[0-9]+]]:_(s32) = G_OR [[OR22]], [[SHL23]]
; TAHITI: [[COPY85:%[0-9]+]]:_(s32) = COPY [[LSHR24]](s32)
; TAHITI: [[AND55:%[0-9]+]]:_(s32) = G_AND [[COPY85]], [[C1]]
; TAHITI: [[C25:%[0-9]+]]:_(s32) = G_CONSTANT i32 25
; TAHITI: [[SHL24:%[0-9]+]]:_(s32) = G_SHL [[AND55]], [[C25]](s32)
; TAHITI: [[OR24:%[0-9]+]]:_(s32) = G_OR [[OR23]], [[SHL24]]
; TAHITI: [[COPY86:%[0-9]+]]:_(s32) = COPY [[LSHR25]](s32)
; TAHITI: [[AND56:%[0-9]+]]:_(s32) = G_AND [[COPY86]], [[C1]]
; TAHITI: [[C26:%[0-9]+]]:_(s32) = G_CONSTANT i32 26
; TAHITI: [[SHL25:%[0-9]+]]:_(s32) = G_SHL [[AND56]], [[C26]](s32)
; TAHITI: [[OR25:%[0-9]+]]:_(s32) = G_OR [[OR24]], [[SHL25]]
; TAHITI: [[COPY87:%[0-9]+]]:_(s32) = COPY [[LSHR26]](s32)
; TAHITI: [[AND57:%[0-9]+]]:_(s32) = G_AND [[COPY87]], [[C1]]
; TAHITI: [[C27:%[0-9]+]]:_(s32) = G_CONSTANT i32 27
; TAHITI: [[SHL26:%[0-9]+]]:_(s32) = G_SHL [[AND57]], [[C27]](s32)
; TAHITI: [[OR26:%[0-9]+]]:_(s32) = G_OR [[OR25]], [[SHL26]]
; TAHITI: [[COPY88:%[0-9]+]]:_(s32) = COPY [[LSHR27]](s32)
; TAHITI: [[AND58:%[0-9]+]]:_(s32) = G_AND [[COPY88]], [[C1]]
; TAHITI: [[C28:%[0-9]+]]:_(s32) = G_CONSTANT i32 28
; TAHITI: [[SHL27:%[0-9]+]]:_(s32) = G_SHL [[AND58]], [[C28]](s32)
; TAHITI: [[OR27:%[0-9]+]]:_(s32) = G_OR [[OR26]], [[SHL27]]
; TAHITI: [[COPY89:%[0-9]+]]:_(s32) = COPY [[LSHR28]](s32)
; TAHITI: [[AND59:%[0-9]+]]:_(s32) = G_AND [[COPY89]], [[C1]]
; TAHITI: [[C29:%[0-9]+]]:_(s32) = G_CONSTANT i32 29
; TAHITI: [[SHL28:%[0-9]+]]:_(s32) = G_SHL [[AND59]], [[C29]](s32)
; TAHITI: [[OR28:%[0-9]+]]:_(s32) = G_OR [[OR27]], [[SHL28]]
; TAHITI: [[COPY90:%[0-9]+]]:_(s32) = COPY [[LSHR29]](s32)
; TAHITI: [[AND60:%[0-9]+]]:_(s32) = G_AND [[COPY90]], [[C1]]
; TAHITI: [[C30:%[0-9]+]]:_(s32) = G_CONSTANT i32 30
; TAHITI: [[SHL29:%[0-9]+]]:_(s32) = G_SHL [[AND60]], [[C30]](s32)
; TAHITI: [[OR29:%[0-9]+]]:_(s32) = G_OR [[OR28]], [[SHL29]]
; TAHITI: [[COPY91:%[0-9]+]]:_(s32) = COPY [[LSHR30]](s32)
; TAHITI: [[AND61:%[0-9]+]]:_(s32) = G_AND [[COPY91]], [[C1]]
; TAHITI: [[C31:%[0-9]+]]:_(s32) = G_CONSTANT i32 31
; TAHITI: [[SHL30:%[0-9]+]]:_(s32) = G_SHL [[AND61]], [[C31]](s32)
; TAHITI: [[OR30:%[0-9]+]]:_(s32) = G_OR [[OR29]], [[SHL30]]
; TAHITI: $vgpr0 = COPY [[OR30]](s32)
; FIJI-LABEL: name: test_implicit_def_s1025
; FIJI: [[DEF:%[0-9]+]]:_(s1024) = G_IMPLICIT_DEF
@ -379,134 +343,162 @@ body: |
; FIJI: [[LSHR29:%[0-9]+]]:_(s16) = G_LSHR [[TRUNC1]], [[C14]](s16)
; FIJI: [[LSHR30:%[0-9]+]]:_(s16) = G_LSHR [[TRUNC1]], [[C15]](s16)
; FIJI: [[DEF1:%[0-9]+]]:_(s64) = G_IMPLICIT_DEF
; FIJI: [[COPY:%[0-9]+]]:_(s16) = COPY [[TRUNC]](s16)
; FIJI: [[AND:%[0-9]+]]:_(s16) = G_AND [[COPY]], [[C1]]
; FIJI: [[COPY1:%[0-9]+]]:_(s16) = COPY [[LSHR1]](s16)
; FIJI: [[AND1:%[0-9]+]]:_(s16) = G_AND [[COPY1]], [[C1]]
; FIJI: [[SHL:%[0-9]+]]:_(s16) = G_SHL [[AND1]], [[C1]](s16)
; FIJI: [[OR:%[0-9]+]]:_(s16) = G_OR [[AND]], [[SHL]]
; FIJI: [[COPY2:%[0-9]+]]:_(s16) = COPY [[LSHR2]](s16)
; FIJI: [[AND2:%[0-9]+]]:_(s16) = G_AND [[COPY2]], [[C1]]
; FIJI: [[SHL1:%[0-9]+]]:_(s16) = G_SHL [[AND2]], [[C2]](s16)
; FIJI: [[OR1:%[0-9]+]]:_(s16) = G_OR [[OR]], [[SHL1]]
; FIJI: [[COPY3:%[0-9]+]]:_(s16) = COPY [[LSHR3]](s16)
; FIJI: [[AND3:%[0-9]+]]:_(s16) = G_AND [[COPY3]], [[C1]]
; FIJI: [[SHL2:%[0-9]+]]:_(s16) = G_SHL [[AND3]], [[C3]](s16)
; FIJI: [[OR2:%[0-9]+]]:_(s16) = G_OR [[OR1]], [[SHL2]]
; FIJI: [[COPY4:%[0-9]+]]:_(s16) = COPY [[LSHR4]](s16)
; FIJI: [[AND4:%[0-9]+]]:_(s16) = G_AND [[COPY4]], [[C1]]
; FIJI: [[SHL3:%[0-9]+]]:_(s16) = G_SHL [[AND4]], [[C4]](s16)
; FIJI: [[OR3:%[0-9]+]]:_(s16) = G_OR [[OR2]], [[SHL3]]
; FIJI: [[COPY5:%[0-9]+]]:_(s16) = COPY [[LSHR5]](s16)
; FIJI: [[AND5:%[0-9]+]]:_(s16) = G_AND [[COPY5]], [[C1]]
; FIJI: [[SHL4:%[0-9]+]]:_(s16) = G_SHL [[AND5]], [[C5]](s16)
; FIJI: [[OR4:%[0-9]+]]:_(s16) = G_OR [[OR3]], [[SHL4]]
; FIJI: [[COPY6:%[0-9]+]]:_(s16) = COPY [[LSHR6]](s16)
; FIJI: [[AND6:%[0-9]+]]:_(s16) = G_AND [[COPY6]], [[C1]]
; FIJI: [[SHL5:%[0-9]+]]:_(s16) = G_SHL [[AND6]], [[C6]](s16)
; FIJI: [[OR5:%[0-9]+]]:_(s16) = G_OR [[OR4]], [[SHL5]]
; FIJI: [[COPY7:%[0-9]+]]:_(s16) = COPY [[LSHR7]](s16)
; FIJI: [[AND7:%[0-9]+]]:_(s16) = G_AND [[COPY7]], [[C1]]
; FIJI: [[SHL6:%[0-9]+]]:_(s16) = G_SHL [[AND7]], [[C7]](s16)
; FIJI: [[OR6:%[0-9]+]]:_(s16) = G_OR [[OR5]], [[SHL6]]
; FIJI: [[COPY8:%[0-9]+]]:_(s16) = COPY [[LSHR8]](s16)
; FIJI: [[AND8:%[0-9]+]]:_(s16) = G_AND [[COPY8]], [[C1]]
; FIJI: [[SHL7:%[0-9]+]]:_(s16) = G_SHL [[AND8]], [[C8]](s16)
; FIJI: [[OR7:%[0-9]+]]:_(s16) = G_OR [[OR6]], [[SHL7]]
; FIJI: [[COPY9:%[0-9]+]]:_(s16) = COPY [[LSHR9]](s16)
; FIJI: [[AND9:%[0-9]+]]:_(s16) = G_AND [[COPY9]], [[C1]]
; FIJI: [[SHL8:%[0-9]+]]:_(s16) = G_SHL [[AND9]], [[C9]](s16)
; FIJI: [[OR8:%[0-9]+]]:_(s16) = G_OR [[OR7]], [[SHL8]]
; FIJI: [[COPY10:%[0-9]+]]:_(s16) = COPY [[LSHR10]](s16)
; FIJI: [[AND10:%[0-9]+]]:_(s16) = G_AND [[COPY10]], [[C1]]
; FIJI: [[SHL9:%[0-9]+]]:_(s16) = G_SHL [[AND10]], [[C10]](s16)
; FIJI: [[OR9:%[0-9]+]]:_(s16) = G_OR [[OR8]], [[SHL9]]
; FIJI: [[COPY11:%[0-9]+]]:_(s16) = COPY [[LSHR11]](s16)
; FIJI: [[AND11:%[0-9]+]]:_(s16) = G_AND [[COPY11]], [[C1]]
; FIJI: [[SHL10:%[0-9]+]]:_(s16) = G_SHL [[AND11]], [[C11]](s16)
; FIJI: [[OR10:%[0-9]+]]:_(s16) = G_OR [[OR9]], [[SHL10]]
; FIJI: [[COPY12:%[0-9]+]]:_(s16) = COPY [[LSHR12]](s16)
; FIJI: [[AND12:%[0-9]+]]:_(s16) = G_AND [[COPY12]], [[C1]]
; FIJI: [[SHL11:%[0-9]+]]:_(s16) = G_SHL [[AND12]], [[C12]](s16)
; FIJI: [[OR11:%[0-9]+]]:_(s16) = G_OR [[OR10]], [[SHL11]]
; FIJI: [[COPY13:%[0-9]+]]:_(s16) = COPY [[LSHR13]](s16)
; FIJI: [[AND13:%[0-9]+]]:_(s16) = G_AND [[COPY13]], [[C1]]
; FIJI: [[SHL12:%[0-9]+]]:_(s16) = G_SHL [[AND13]], [[C13]](s16)
; FIJI: [[OR12:%[0-9]+]]:_(s16) = G_OR [[OR11]], [[SHL12]]
; FIJI: [[COPY14:%[0-9]+]]:_(s16) = COPY [[LSHR14]](s16)
; FIJI: [[AND14:%[0-9]+]]:_(s16) = G_AND [[COPY14]], [[C1]]
; FIJI: [[SHL13:%[0-9]+]]:_(s16) = G_SHL [[AND14]], [[C14]](s16)
; FIJI: [[OR13:%[0-9]+]]:_(s16) = G_OR [[OR12]], [[SHL13]]
; FIJI: [[COPY15:%[0-9]+]]:_(s16) = COPY [[LSHR15]](s16)
; FIJI: [[AND15:%[0-9]+]]:_(s16) = G_AND [[COPY15]], [[C1]]
; FIJI: [[SHL14:%[0-9]+]]:_(s16) = G_SHL [[AND15]], [[C15]](s16)
; FIJI: [[OR14:%[0-9]+]]:_(s16) = G_OR [[OR13]], [[SHL14]]
; FIJI: [[COPY16:%[0-9]+]]:_(s16) = COPY [[TRUNC1]](s16)
; FIJI: [[AND16:%[0-9]+]]:_(s16) = G_AND [[COPY16]], [[C1]]
; FIJI: [[COPY17:%[0-9]+]]:_(s16) = COPY [[LSHR16]](s16)
; FIJI: [[AND17:%[0-9]+]]:_(s16) = G_AND [[COPY17]], [[C1]]
; FIJI: [[SHL15:%[0-9]+]]:_(s16) = G_SHL [[AND17]], [[C1]](s16)
; FIJI: [[OR15:%[0-9]+]]:_(s16) = G_OR [[AND16]], [[SHL15]]
; FIJI: [[COPY18:%[0-9]+]]:_(s16) = COPY [[LSHR17]](s16)
; FIJI: [[AND18:%[0-9]+]]:_(s16) = G_AND [[COPY18]], [[C1]]
; FIJI: [[SHL16:%[0-9]+]]:_(s16) = G_SHL [[AND18]], [[C2]](s16)
; FIJI: [[OR16:%[0-9]+]]:_(s16) = G_OR [[OR15]], [[SHL16]]
; FIJI: [[COPY19:%[0-9]+]]:_(s16) = COPY [[LSHR18]](s16)
; FIJI: [[AND19:%[0-9]+]]:_(s16) = G_AND [[COPY19]], [[C1]]
; FIJI: [[SHL17:%[0-9]+]]:_(s16) = G_SHL [[AND19]], [[C3]](s16)
; FIJI: [[OR17:%[0-9]+]]:_(s16) = G_OR [[OR16]], [[SHL17]]
; FIJI: [[COPY20:%[0-9]+]]:_(s16) = COPY [[LSHR19]](s16)
; FIJI: [[AND20:%[0-9]+]]:_(s16) = G_AND [[COPY20]], [[C1]]
; FIJI: [[SHL18:%[0-9]+]]:_(s16) = G_SHL [[AND20]], [[C4]](s16)
; FIJI: [[OR18:%[0-9]+]]:_(s16) = G_OR [[OR17]], [[SHL18]]
; FIJI: [[COPY21:%[0-9]+]]:_(s16) = COPY [[LSHR20]](s16)
; FIJI: [[AND21:%[0-9]+]]:_(s16) = G_AND [[COPY21]], [[C1]]
; FIJI: [[SHL19:%[0-9]+]]:_(s16) = G_SHL [[AND21]], [[C5]](s16)
; FIJI: [[OR19:%[0-9]+]]:_(s16) = G_OR [[OR18]], [[SHL19]]
; FIJI: [[COPY22:%[0-9]+]]:_(s16) = COPY [[LSHR21]](s16)
; FIJI: [[AND22:%[0-9]+]]:_(s16) = G_AND [[COPY22]], [[C1]]
; FIJI: [[SHL20:%[0-9]+]]:_(s16) = G_SHL [[AND22]], [[C6]](s16)
; FIJI: [[OR20:%[0-9]+]]:_(s16) = G_OR [[OR19]], [[SHL20]]
; FIJI: [[COPY23:%[0-9]+]]:_(s16) = COPY [[LSHR22]](s16)
; FIJI: [[AND23:%[0-9]+]]:_(s16) = G_AND [[COPY23]], [[C1]]
; FIJI: [[SHL21:%[0-9]+]]:_(s16) = G_SHL [[AND23]], [[C7]](s16)
; FIJI: [[OR21:%[0-9]+]]:_(s16) = G_OR [[OR20]], [[SHL21]]
; FIJI: [[COPY24:%[0-9]+]]:_(s16) = COPY [[LSHR23]](s16)
; FIJI: [[AND24:%[0-9]+]]:_(s16) = G_AND [[COPY24]], [[C1]]
; FIJI: [[SHL22:%[0-9]+]]:_(s16) = G_SHL [[AND24]], [[C8]](s16)
; FIJI: [[OR22:%[0-9]+]]:_(s16) = G_OR [[OR21]], [[SHL22]]
; FIJI: [[COPY25:%[0-9]+]]:_(s16) = COPY [[LSHR24]](s16)
; FIJI: [[AND25:%[0-9]+]]:_(s16) = G_AND [[COPY25]], [[C1]]
; FIJI: [[SHL23:%[0-9]+]]:_(s16) = G_SHL [[AND25]], [[C9]](s16)
; FIJI: [[OR23:%[0-9]+]]:_(s16) = G_OR [[OR22]], [[SHL23]]
; FIJI: [[COPY26:%[0-9]+]]:_(s16) = COPY [[LSHR25]](s16)
; FIJI: [[AND26:%[0-9]+]]:_(s16) = G_AND [[COPY26]], [[C1]]
; FIJI: [[SHL24:%[0-9]+]]:_(s16) = G_SHL [[AND26]], [[C10]](s16)
; FIJI: [[OR24:%[0-9]+]]:_(s16) = G_OR [[OR23]], [[SHL24]]
; FIJI: [[COPY27:%[0-9]+]]:_(s16) = COPY [[LSHR26]](s16)
; FIJI: [[AND27:%[0-9]+]]:_(s16) = G_AND [[COPY27]], [[C1]]
; FIJI: [[SHL25:%[0-9]+]]:_(s16) = G_SHL [[AND27]], [[C11]](s16)
; FIJI: [[OR25:%[0-9]+]]:_(s16) = G_OR [[OR24]], [[SHL25]]
; FIJI: [[COPY28:%[0-9]+]]:_(s16) = COPY [[LSHR27]](s16)
; FIJI: [[AND28:%[0-9]+]]:_(s16) = G_AND [[COPY28]], [[C1]]
; FIJI: [[SHL26:%[0-9]+]]:_(s16) = G_SHL [[AND28]], [[C12]](s16)
; FIJI: [[OR26:%[0-9]+]]:_(s16) = G_OR [[OR25]], [[SHL26]]
; FIJI: [[COPY29:%[0-9]+]]:_(s16) = COPY [[LSHR28]](s16)
; FIJI: [[AND29:%[0-9]+]]:_(s16) = G_AND [[COPY29]], [[C1]]
; FIJI: [[SHL27:%[0-9]+]]:_(s16) = G_SHL [[AND29]], [[C13]](s16)
; FIJI: [[OR27:%[0-9]+]]:_(s16) = G_OR [[OR26]], [[SHL27]]
; FIJI: [[COPY30:%[0-9]+]]:_(s16) = COPY [[LSHR29]](s16)
; FIJI: [[AND30:%[0-9]+]]:_(s16) = G_AND [[COPY30]], [[C1]]
; FIJI: [[SHL28:%[0-9]+]]:_(s16) = G_SHL [[AND30]], [[C14]](s16)
; FIJI: [[OR28:%[0-9]+]]:_(s16) = G_OR [[OR27]], [[SHL28]]
; FIJI: [[COPY31:%[0-9]+]]:_(s16) = COPY [[LSHR30]](s16)
; FIJI: [[AND31:%[0-9]+]]:_(s16) = G_AND [[COPY31]], [[C1]]
; FIJI: [[SHL29:%[0-9]+]]:_(s16) = G_SHL [[AND31]], [[C15]](s16)
; FIJI: [[OR29:%[0-9]+]]:_(s16) = G_OR [[OR28]], [[SHL29]]
; FIJI: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[OR14]](s16)
; FIJI: [[ZEXT1:%[0-9]+]]:_(s32) = G_ZEXT [[OR29]](s16)
; FIJI: [[SHL30:%[0-9]+]]:_(s32) = G_SHL [[ZEXT1]], [[C]](s32)
; FIJI: [[OR30:%[0-9]+]]:_(s32) = G_OR [[ZEXT]], [[SHL30]]
; FIJI: [[C16:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
; FIJI: [[COPY:%[0-9]+]]:_(s32) = COPY [[UV]](s32)
; FIJI: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C16]]
; FIJI: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[LSHR1]](s16)
; FIJI: [[AND1:%[0-9]+]]:_(s32) = G_AND [[ANYEXT]], [[C16]]
; FIJI: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND1]], [[C16]](s32)
; FIJI: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]]
; FIJI: [[ANYEXT1:%[0-9]+]]:_(s32) = G_ANYEXT [[LSHR2]](s16)
; FIJI: [[AND2:%[0-9]+]]:_(s32) = G_AND [[ANYEXT1]], [[C16]]
; FIJI: [[C17:%[0-9]+]]:_(s32) = G_CONSTANT i32 2
; FIJI: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[AND2]], [[C17]](s32)
; FIJI: [[OR1:%[0-9]+]]:_(s32) = G_OR [[OR]], [[SHL1]]
; FIJI: [[ANYEXT2:%[0-9]+]]:_(s32) = G_ANYEXT [[LSHR3]](s16)
; FIJI: [[AND3:%[0-9]+]]:_(s32) = G_AND [[ANYEXT2]], [[C16]]
; FIJI: [[C18:%[0-9]+]]:_(s32) = G_CONSTANT i32 3
; FIJI: [[SHL2:%[0-9]+]]:_(s32) = G_SHL [[AND3]], [[C18]](s32)
; FIJI: [[OR2:%[0-9]+]]:_(s32) = G_OR [[OR1]], [[SHL2]]
; FIJI: [[ANYEXT3:%[0-9]+]]:_(s32) = G_ANYEXT [[LSHR4]](s16)
; FIJI: [[AND4:%[0-9]+]]:_(s32) = G_AND [[ANYEXT3]], [[C16]]
; FIJI: [[C19:%[0-9]+]]:_(s32) = G_CONSTANT i32 4
; FIJI: [[SHL3:%[0-9]+]]:_(s32) = G_SHL [[AND4]], [[C19]](s32)
; FIJI: [[OR3:%[0-9]+]]:_(s32) = G_OR [[OR2]], [[SHL3]]
; FIJI: [[ANYEXT4:%[0-9]+]]:_(s32) = G_ANYEXT [[LSHR5]](s16)
; FIJI: [[AND5:%[0-9]+]]:_(s32) = G_AND [[ANYEXT4]], [[C16]]
; FIJI: [[C20:%[0-9]+]]:_(s32) = G_CONSTANT i32 5
; FIJI: [[SHL4:%[0-9]+]]:_(s32) = G_SHL [[AND5]], [[C20]](s32)
; FIJI: [[OR4:%[0-9]+]]:_(s32) = G_OR [[OR3]], [[SHL4]]
; FIJI: [[ANYEXT5:%[0-9]+]]:_(s32) = G_ANYEXT [[LSHR6]](s16)
; FIJI: [[AND6:%[0-9]+]]:_(s32) = G_AND [[ANYEXT5]], [[C16]]
; FIJI: [[C21:%[0-9]+]]:_(s32) = G_CONSTANT i32 6
; FIJI: [[SHL5:%[0-9]+]]:_(s32) = G_SHL [[AND6]], [[C21]](s32)
; FIJI: [[OR5:%[0-9]+]]:_(s32) = G_OR [[OR4]], [[SHL5]]
; FIJI: [[ANYEXT6:%[0-9]+]]:_(s32) = G_ANYEXT [[LSHR7]](s16)
; FIJI: [[AND7:%[0-9]+]]:_(s32) = G_AND [[ANYEXT6]], [[C16]]
; FIJI: [[C22:%[0-9]+]]:_(s32) = G_CONSTANT i32 7
; FIJI: [[SHL6:%[0-9]+]]:_(s32) = G_SHL [[AND7]], [[C22]](s32)
; FIJI: [[OR6:%[0-9]+]]:_(s32) = G_OR [[OR5]], [[SHL6]]
; FIJI: [[ANYEXT7:%[0-9]+]]:_(s32) = G_ANYEXT [[LSHR8]](s16)
; FIJI: [[AND8:%[0-9]+]]:_(s32) = G_AND [[ANYEXT7]], [[C16]]
; FIJI: [[C23:%[0-9]+]]:_(s32) = G_CONSTANT i32 8
; FIJI: [[SHL7:%[0-9]+]]:_(s32) = G_SHL [[AND8]], [[C23]](s32)
; FIJI: [[OR7:%[0-9]+]]:_(s32) = G_OR [[OR6]], [[SHL7]]
; FIJI: [[ANYEXT8:%[0-9]+]]:_(s32) = G_ANYEXT [[LSHR9]](s16)
; FIJI: [[AND9:%[0-9]+]]:_(s32) = G_AND [[ANYEXT8]], [[C16]]
; FIJI: [[C24:%[0-9]+]]:_(s32) = G_CONSTANT i32 9
; FIJI: [[SHL8:%[0-9]+]]:_(s32) = G_SHL [[AND9]], [[C24]](s32)
; FIJI: [[OR8:%[0-9]+]]:_(s32) = G_OR [[OR7]], [[SHL8]]
; FIJI: [[ANYEXT9:%[0-9]+]]:_(s32) = G_ANYEXT [[LSHR10]](s16)
; FIJI: [[AND10:%[0-9]+]]:_(s32) = G_AND [[ANYEXT9]], [[C16]]
; FIJI: [[C25:%[0-9]+]]:_(s32) = G_CONSTANT i32 10
; FIJI: [[SHL9:%[0-9]+]]:_(s32) = G_SHL [[AND10]], [[C25]](s32)
; FIJI: [[OR9:%[0-9]+]]:_(s32) = G_OR [[OR8]], [[SHL9]]
; FIJI: [[ANYEXT10:%[0-9]+]]:_(s32) = G_ANYEXT [[LSHR11]](s16)
; FIJI: [[AND11:%[0-9]+]]:_(s32) = G_AND [[ANYEXT10]], [[C16]]
; FIJI: [[C26:%[0-9]+]]:_(s32) = G_CONSTANT i32 11
; FIJI: [[SHL10:%[0-9]+]]:_(s32) = G_SHL [[AND11]], [[C26]](s32)
; FIJI: [[OR10:%[0-9]+]]:_(s32) = G_OR [[OR9]], [[SHL10]]
; FIJI: [[ANYEXT11:%[0-9]+]]:_(s32) = G_ANYEXT [[LSHR12]](s16)
; FIJI: [[AND12:%[0-9]+]]:_(s32) = G_AND [[ANYEXT11]], [[C16]]
; FIJI: [[C27:%[0-9]+]]:_(s32) = G_CONSTANT i32 12
; FIJI: [[SHL11:%[0-9]+]]:_(s32) = G_SHL [[AND12]], [[C27]](s32)
; FIJI: [[OR11:%[0-9]+]]:_(s32) = G_OR [[OR10]], [[SHL11]]
; FIJI: [[ANYEXT12:%[0-9]+]]:_(s32) = G_ANYEXT [[LSHR13]](s16)
; FIJI: [[AND13:%[0-9]+]]:_(s32) = G_AND [[ANYEXT12]], [[C16]]
; FIJI: [[C28:%[0-9]+]]:_(s32) = G_CONSTANT i32 13
; FIJI: [[SHL12:%[0-9]+]]:_(s32) = G_SHL [[AND13]], [[C28]](s32)
; FIJI: [[OR12:%[0-9]+]]:_(s32) = G_OR [[OR11]], [[SHL12]]
; FIJI: [[ANYEXT13:%[0-9]+]]:_(s32) = G_ANYEXT [[LSHR14]](s16)
; FIJI: [[AND14:%[0-9]+]]:_(s32) = G_AND [[ANYEXT13]], [[C16]]
; FIJI: [[C29:%[0-9]+]]:_(s32) = G_CONSTANT i32 14
; FIJI: [[SHL13:%[0-9]+]]:_(s32) = G_SHL [[AND14]], [[C29]](s32)
; FIJI: [[OR13:%[0-9]+]]:_(s32) = G_OR [[OR12]], [[SHL13]]
; FIJI: [[ANYEXT14:%[0-9]+]]:_(s32) = G_ANYEXT [[LSHR15]](s16)
; FIJI: [[AND15:%[0-9]+]]:_(s32) = G_AND [[ANYEXT14]], [[C16]]
; FIJI: [[C30:%[0-9]+]]:_(s32) = G_CONSTANT i32 15
; FIJI: [[SHL14:%[0-9]+]]:_(s32) = G_SHL [[AND15]], [[C30]](s32)
; FIJI: [[OR14:%[0-9]+]]:_(s32) = G_OR [[OR13]], [[SHL14]]
; FIJI: [[COPY1:%[0-9]+]]:_(s32) = COPY [[LSHR]](s32)
; FIJI: [[AND16:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C16]]
; FIJI: [[SHL15:%[0-9]+]]:_(s32) = G_SHL [[AND16]], [[C]](s32)
; FIJI: [[OR15:%[0-9]+]]:_(s32) = G_OR [[OR14]], [[SHL15]]
; FIJI: [[ANYEXT15:%[0-9]+]]:_(s32) = G_ANYEXT [[LSHR16]](s16)
; FIJI: [[AND17:%[0-9]+]]:_(s32) = G_AND [[ANYEXT15]], [[C16]]
; FIJI: [[C31:%[0-9]+]]:_(s32) = G_CONSTANT i32 17
; FIJI: [[SHL16:%[0-9]+]]:_(s32) = G_SHL [[AND17]], [[C31]](s32)
; FIJI: [[OR16:%[0-9]+]]:_(s32) = G_OR [[OR15]], [[SHL16]]
; FIJI: [[ANYEXT16:%[0-9]+]]:_(s32) = G_ANYEXT [[LSHR17]](s16)
; FIJI: [[AND18:%[0-9]+]]:_(s32) = G_AND [[ANYEXT16]], [[C16]]
; FIJI: [[C32:%[0-9]+]]:_(s32) = G_CONSTANT i32 18
; FIJI: [[SHL17:%[0-9]+]]:_(s32) = G_SHL [[AND18]], [[C32]](s32)
; FIJI: [[OR17:%[0-9]+]]:_(s32) = G_OR [[OR16]], [[SHL17]]
; FIJI: [[ANYEXT17:%[0-9]+]]:_(s32) = G_ANYEXT [[LSHR18]](s16)
; FIJI: [[AND19:%[0-9]+]]:_(s32) = G_AND [[ANYEXT17]], [[C16]]
; FIJI: [[C33:%[0-9]+]]:_(s32) = G_CONSTANT i32 19
; FIJI: [[SHL18:%[0-9]+]]:_(s32) = G_SHL [[AND19]], [[C33]](s32)
; FIJI: [[OR18:%[0-9]+]]:_(s32) = G_OR [[OR17]], [[SHL18]]
; FIJI: [[ANYEXT18:%[0-9]+]]:_(s32) = G_ANYEXT [[LSHR19]](s16)
; FIJI: [[AND20:%[0-9]+]]:_(s32) = G_AND [[ANYEXT18]], [[C16]]
; FIJI: [[C34:%[0-9]+]]:_(s32) = G_CONSTANT i32 20
; FIJI: [[SHL19:%[0-9]+]]:_(s32) = G_SHL [[AND20]], [[C34]](s32)
; FIJI: [[OR19:%[0-9]+]]:_(s32) = G_OR [[OR18]], [[SHL19]]
; FIJI: [[ANYEXT19:%[0-9]+]]:_(s32) = G_ANYEXT [[LSHR20]](s16)
; FIJI: [[AND21:%[0-9]+]]:_(s32) = G_AND [[ANYEXT19]], [[C16]]
; FIJI: [[C35:%[0-9]+]]:_(s32) = G_CONSTANT i32 21
; FIJI: [[SHL20:%[0-9]+]]:_(s32) = G_SHL [[AND21]], [[C35]](s32)
; FIJI: [[OR20:%[0-9]+]]:_(s32) = G_OR [[OR19]], [[SHL20]]
; FIJI: [[ANYEXT20:%[0-9]+]]:_(s32) = G_ANYEXT [[LSHR21]](s16)
; FIJI: [[AND22:%[0-9]+]]:_(s32) = G_AND [[ANYEXT20]], [[C16]]
; FIJI: [[C36:%[0-9]+]]:_(s32) = G_CONSTANT i32 22
; FIJI: [[SHL21:%[0-9]+]]:_(s32) = G_SHL [[AND22]], [[C36]](s32)
; FIJI: [[OR21:%[0-9]+]]:_(s32) = G_OR [[OR20]], [[SHL21]]
; FIJI: [[ANYEXT21:%[0-9]+]]:_(s32) = G_ANYEXT [[LSHR22]](s16)
; FIJI: [[AND23:%[0-9]+]]:_(s32) = G_AND [[ANYEXT21]], [[C16]]
; FIJI: [[C37:%[0-9]+]]:_(s32) = G_CONSTANT i32 23
; FIJI: [[SHL22:%[0-9]+]]:_(s32) = G_SHL [[AND23]], [[C37]](s32)
; FIJI: [[OR22:%[0-9]+]]:_(s32) = G_OR [[OR21]], [[SHL22]]
; FIJI: [[ANYEXT22:%[0-9]+]]:_(s32) = G_ANYEXT [[LSHR23]](s16)
; FIJI: [[AND24:%[0-9]+]]:_(s32) = G_AND [[ANYEXT22]], [[C16]]
; FIJI: [[C38:%[0-9]+]]:_(s32) = G_CONSTANT i32 24
; FIJI: [[SHL23:%[0-9]+]]:_(s32) = G_SHL [[AND24]], [[C38]](s32)
; FIJI: [[OR23:%[0-9]+]]:_(s32) = G_OR [[OR22]], [[SHL23]]
; FIJI: [[ANYEXT23:%[0-9]+]]:_(s32) = G_ANYEXT [[LSHR24]](s16)
; FIJI: [[AND25:%[0-9]+]]:_(s32) = G_AND [[ANYEXT23]], [[C16]]
; FIJI: [[C39:%[0-9]+]]:_(s32) = G_CONSTANT i32 25
; FIJI: [[SHL24:%[0-9]+]]:_(s32) = G_SHL [[AND25]], [[C39]](s32)
; FIJI: [[OR24:%[0-9]+]]:_(s32) = G_OR [[OR23]], [[SHL24]]
; FIJI: [[ANYEXT24:%[0-9]+]]:_(s32) = G_ANYEXT [[LSHR25]](s16)
; FIJI: [[AND26:%[0-9]+]]:_(s32) = G_AND [[ANYEXT24]], [[C16]]
; FIJI: [[C40:%[0-9]+]]:_(s32) = G_CONSTANT i32 26
; FIJI: [[SHL25:%[0-9]+]]:_(s32) = G_SHL [[AND26]], [[C40]](s32)
; FIJI: [[OR25:%[0-9]+]]:_(s32) = G_OR [[OR24]], [[SHL25]]
; FIJI: [[ANYEXT25:%[0-9]+]]:_(s32) = G_ANYEXT [[LSHR26]](s16)
; FIJI: [[AND27:%[0-9]+]]:_(s32) = G_AND [[ANYEXT25]], [[C16]]
; FIJI: [[C41:%[0-9]+]]:_(s32) = G_CONSTANT i32 27
; FIJI: [[SHL26:%[0-9]+]]:_(s32) = G_SHL [[AND27]], [[C41]](s32)
; FIJI: [[OR26:%[0-9]+]]:_(s32) = G_OR [[OR25]], [[SHL26]]
; FIJI: [[ANYEXT26:%[0-9]+]]:_(s32) = G_ANYEXT [[LSHR27]](s16)
; FIJI: [[AND28:%[0-9]+]]:_(s32) = G_AND [[ANYEXT26]], [[C16]]
; FIJI: [[C42:%[0-9]+]]:_(s32) = G_CONSTANT i32 28
; FIJI: [[SHL27:%[0-9]+]]:_(s32) = G_SHL [[AND28]], [[C42]](s32)
; FIJI: [[OR27:%[0-9]+]]:_(s32) = G_OR [[OR26]], [[SHL27]]
; FIJI: [[ANYEXT27:%[0-9]+]]:_(s32) = G_ANYEXT [[LSHR28]](s16)
; FIJI: [[AND29:%[0-9]+]]:_(s32) = G_AND [[ANYEXT27]], [[C16]]
; FIJI: [[C43:%[0-9]+]]:_(s32) = G_CONSTANT i32 29
; FIJI: [[SHL28:%[0-9]+]]:_(s32) = G_SHL [[AND29]], [[C43]](s32)
; FIJI: [[OR28:%[0-9]+]]:_(s32) = G_OR [[OR27]], [[SHL28]]
; FIJI: [[ANYEXT28:%[0-9]+]]:_(s32) = G_ANYEXT [[LSHR29]](s16)
; FIJI: [[AND30:%[0-9]+]]:_(s32) = G_AND [[ANYEXT28]], [[C16]]
; FIJI: [[C44:%[0-9]+]]:_(s32) = G_CONSTANT i32 30
; FIJI: [[SHL29:%[0-9]+]]:_(s32) = G_SHL [[AND30]], [[C44]](s32)
; FIJI: [[OR29:%[0-9]+]]:_(s32) = G_OR [[OR28]], [[SHL29]]
; FIJI: [[ANYEXT29:%[0-9]+]]:_(s32) = G_ANYEXT [[LSHR30]](s16)
; FIJI: [[AND31:%[0-9]+]]:_(s32) = G_AND [[ANYEXT29]], [[C16]]
; FIJI: [[C45:%[0-9]+]]:_(s32) = G_CONSTANT i32 31
; FIJI: [[SHL30:%[0-9]+]]:_(s32) = G_SHL [[AND31]], [[C45]](s32)
; FIJI: [[OR30:%[0-9]+]]:_(s32) = G_OR [[OR29]], [[SHL30]]
; FIJI: $vgpr0 = COPY [[OR30]](s32)
%0:_(s1025) = G_IMPLICIT_DEF
%1:_(s32) = G_TRUNC %0

View File

@ -21,29 +21,24 @@ body: |
; CI: [[C3:%[0-9]+]]:_(s64) = G_CONSTANT i64 3
; CI: [[PTR_ADD2:%[0-9]+]]:_(p4) = G_PTR_ADD [[MV]], [[C3]](s64)
; CI: [[LOAD3:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD2]](p4) :: (load 1 + 3, addrspace 6)
; CI: [[C4:%[0-9]+]]:_(s16) = G_CONSTANT i16 255
; CI: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[LOAD]](s32)
; CI: [[AND:%[0-9]+]]:_(s16) = G_AND [[TRUNC]], [[C4]]
; CI: [[C5:%[0-9]+]]:_(s32) = G_CONSTANT i32 8
; CI: [[COPY1:%[0-9]+]]:_(s32) = COPY [[C5]](s32)
; CI: [[C6:%[0-9]+]]:_(s32) = G_CONSTANT i32 255
; CI: [[C4:%[0-9]+]]:_(s32) = G_CONSTANT i32 255
; CI: [[COPY1:%[0-9]+]]:_(s32) = COPY [[LOAD]](s32)
; CI: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C4]]
; CI: [[COPY2:%[0-9]+]]:_(s32) = COPY [[LOAD1]](s32)
; CI: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY2]], [[C6]]
; CI: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND1]], [[COPY1]](s32)
; CI: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[SHL]](s32)
; CI: [[OR:%[0-9]+]]:_(s16) = G_OR [[AND]], [[TRUNC1]]
; CI: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[LOAD2]](s32)
; CI: [[AND2:%[0-9]+]]:_(s16) = G_AND [[TRUNC2]], [[C4]]
; CI: [[COPY3:%[0-9]+]]:_(s32) = COPY [[LOAD3]](s32)
; CI: [[AND3:%[0-9]+]]:_(s32) = G_AND [[COPY3]], [[C6]]
; CI: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[AND3]], [[C5]](s32)
; CI: [[TRUNC3:%[0-9]+]]:_(s16) = G_TRUNC [[SHL1]](s32)
; CI: [[OR1:%[0-9]+]]:_(s16) = G_OR [[AND2]], [[TRUNC3]]
; CI: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[OR]](s16)
; CI: [[ZEXT1:%[0-9]+]]:_(s32) = G_ZEXT [[OR1]](s16)
; CI: [[C7:%[0-9]+]]:_(s32) = G_CONSTANT i32 16
; CI: [[SHL2:%[0-9]+]]:_(s32) = G_SHL [[ZEXT1]], [[C7]](s32)
; CI: [[OR2:%[0-9]+]]:_(s32) = G_OR [[ZEXT]], [[SHL2]]
; CI: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY2]], [[C4]]
; CI: [[C5:%[0-9]+]]:_(s32) = G_CONSTANT i32 8
; CI: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND1]], [[C5]](s32)
; CI: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]]
; CI: [[COPY3:%[0-9]+]]:_(s32) = COPY [[LOAD2]](s32)
; CI: [[AND2:%[0-9]+]]:_(s32) = G_AND [[COPY3]], [[C4]]
; CI: [[C6:%[0-9]+]]:_(s32) = G_CONSTANT i32 16
; CI: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[AND2]], [[C6]](s32)
; CI: [[OR1:%[0-9]+]]:_(s32) = G_OR [[OR]], [[SHL1]]
; CI: [[COPY4:%[0-9]+]]:_(s32) = COPY [[LOAD3]](s32)
; CI: [[AND3:%[0-9]+]]:_(s32) = G_AND [[COPY4]], [[C4]]
; CI: [[C7:%[0-9]+]]:_(s32) = G_CONSTANT i32 24
; CI: [[SHL2:%[0-9]+]]:_(s32) = G_SHL [[AND3]], [[C7]](s32)
; CI: [[OR2:%[0-9]+]]:_(s32) = G_OR [[OR1]], [[SHL2]]
; CI: $vgpr0 = COPY [[OR2]](s32)
%0:_(p6) = COPY $vgpr0
%1:_(s32) = G_LOAD %0 :: (load 4, align 1, addrspace 6)

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -68,29 +68,24 @@ body: |
; CI: [[C3:%[0-9]+]]:_(s64) = G_CONSTANT i64 3
; CI: [[PTR_ADD2:%[0-9]+]]:_(p4) = G_PTR_ADD [[MV]], [[C3]](s64)
; CI: [[LOAD3:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD2]](p4) :: (load 1 + 3, addrspace 6)
; CI: [[C4:%[0-9]+]]:_(s16) = G_CONSTANT i16 255
; CI: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[LOAD]](s32)
; CI: [[AND:%[0-9]+]]:_(s16) = G_AND [[TRUNC]], [[C4]]
; CI: [[C5:%[0-9]+]]:_(s32) = G_CONSTANT i32 8
; CI: [[COPY1:%[0-9]+]]:_(s32) = COPY [[C5]](s32)
; CI: [[C6:%[0-9]+]]:_(s32) = G_CONSTANT i32 255
; CI: [[C4:%[0-9]+]]:_(s32) = G_CONSTANT i32 255
; CI: [[COPY1:%[0-9]+]]:_(s32) = COPY [[LOAD]](s32)
; CI: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C4]]
; CI: [[COPY2:%[0-9]+]]:_(s32) = COPY [[LOAD1]](s32)
; CI: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY2]], [[C6]]
; CI: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND1]], [[COPY1]](s32)
; CI: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[SHL]](s32)
; CI: [[OR:%[0-9]+]]:_(s16) = G_OR [[AND]], [[TRUNC1]]
; CI: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[LOAD2]](s32)
; CI: [[AND2:%[0-9]+]]:_(s16) = G_AND [[TRUNC2]], [[C4]]
; CI: [[COPY3:%[0-9]+]]:_(s32) = COPY [[LOAD3]](s32)
; CI: [[AND3:%[0-9]+]]:_(s32) = G_AND [[COPY3]], [[C6]]
; CI: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[AND3]], [[C5]](s32)
; CI: [[TRUNC3:%[0-9]+]]:_(s16) = G_TRUNC [[SHL1]](s32)
; CI: [[OR1:%[0-9]+]]:_(s16) = G_OR [[AND2]], [[TRUNC3]]
; CI: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[OR]](s16)
; CI: [[ZEXT1:%[0-9]+]]:_(s32) = G_ZEXT [[OR1]](s16)
; CI: [[C7:%[0-9]+]]:_(s32) = G_CONSTANT i32 16
; CI: [[SHL2:%[0-9]+]]:_(s32) = G_SHL [[ZEXT1]], [[C7]](s32)
; CI: [[OR2:%[0-9]+]]:_(s32) = G_OR [[ZEXT]], [[SHL2]]
; CI: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY2]], [[C4]]
; CI: [[C5:%[0-9]+]]:_(s32) = G_CONSTANT i32 8
; CI: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND1]], [[C5]](s32)
; CI: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]]
; CI: [[COPY3:%[0-9]+]]:_(s32) = COPY [[LOAD2]](s32)
; CI: [[AND2:%[0-9]+]]:_(s32) = G_AND [[COPY3]], [[C4]]
; CI: [[C6:%[0-9]+]]:_(s32) = G_CONSTANT i32 16
; CI: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[AND2]], [[C6]](s32)
; CI: [[OR1:%[0-9]+]]:_(s32) = G_OR [[OR]], [[SHL1]]
; CI: [[COPY4:%[0-9]+]]:_(s32) = COPY [[LOAD3]](s32)
; CI: [[AND3:%[0-9]+]]:_(s32) = G_AND [[COPY4]], [[C4]]
; CI: [[C7:%[0-9]+]]:_(s32) = G_CONSTANT i32 24
; CI: [[SHL2:%[0-9]+]]:_(s32) = G_SHL [[AND3]], [[C7]](s32)
; CI: [[OR2:%[0-9]+]]:_(s32) = G_OR [[OR1]], [[SHL2]]
; CI: [[SEXT:%[0-9]+]]:_(s64) = G_SEXT [[OR2]](s32)
; CI: $vgpr0_vgpr1 = COPY [[SEXT]](s64)
%0:_(p6) = COPY $sgpr0

View File

@ -68,31 +68,26 @@ body: |
; CI: [[C3:%[0-9]+]]:_(s64) = G_CONSTANT i64 3
; CI: [[PTR_ADD2:%[0-9]+]]:_(p4) = G_PTR_ADD [[MV]], [[C3]](s64)
; CI: [[LOAD3:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD2]](p4) :: (load 1 + 3, addrspace 6)
; CI: [[C4:%[0-9]+]]:_(s16) = G_CONSTANT i16 255
; CI: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[LOAD]](s32)
; CI: [[AND:%[0-9]+]]:_(s16) = G_AND [[TRUNC]], [[C4]]
; CI: [[C5:%[0-9]+]]:_(s32) = G_CONSTANT i32 8
; CI: [[COPY1:%[0-9]+]]:_(s32) = COPY [[C5]](s32)
; CI: [[C6:%[0-9]+]]:_(s32) = G_CONSTANT i32 255
; CI: [[C4:%[0-9]+]]:_(s32) = G_CONSTANT i32 255
; CI: [[COPY1:%[0-9]+]]:_(s32) = COPY [[LOAD]](s32)
; CI: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C4]]
; CI: [[COPY2:%[0-9]+]]:_(s32) = COPY [[LOAD1]](s32)
; CI: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY2]], [[C6]]
; CI: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND1]], [[COPY1]](s32)
; CI: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[SHL]](s32)
; CI: [[OR:%[0-9]+]]:_(s16) = G_OR [[AND]], [[TRUNC1]]
; CI: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[LOAD2]](s32)
; CI: [[AND2:%[0-9]+]]:_(s16) = G_AND [[TRUNC2]], [[C4]]
; CI: [[COPY3:%[0-9]+]]:_(s32) = COPY [[LOAD3]](s32)
; CI: [[AND3:%[0-9]+]]:_(s32) = G_AND [[COPY3]], [[C6]]
; CI: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[AND3]], [[C5]](s32)
; CI: [[TRUNC3:%[0-9]+]]:_(s16) = G_TRUNC [[SHL1]](s32)
; CI: [[OR1:%[0-9]+]]:_(s16) = G_OR [[AND2]], [[TRUNC3]]
; CI: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[OR]](s16)
; CI: [[ZEXT1:%[0-9]+]]:_(s32) = G_ZEXT [[OR1]](s16)
; CI: [[C7:%[0-9]+]]:_(s32) = G_CONSTANT i32 16
; CI: [[SHL2:%[0-9]+]]:_(s32) = G_SHL [[ZEXT1]], [[C7]](s32)
; CI: [[OR2:%[0-9]+]]:_(s32) = G_OR [[ZEXT]], [[SHL2]]
; CI: [[ZEXT2:%[0-9]+]]:_(s64) = G_ZEXT [[OR2]](s32)
; CI: $vgpr0_vgpr1 = COPY [[ZEXT2]](s64)
; CI: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY2]], [[C4]]
; CI: [[C5:%[0-9]+]]:_(s32) = G_CONSTANT i32 8
; CI: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND1]], [[C5]](s32)
; CI: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]]
; CI: [[COPY3:%[0-9]+]]:_(s32) = COPY [[LOAD2]](s32)
; CI: [[AND2:%[0-9]+]]:_(s32) = G_AND [[COPY3]], [[C4]]
; CI: [[C6:%[0-9]+]]:_(s32) = G_CONSTANT i32 16
; CI: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[AND2]], [[C6]](s32)
; CI: [[OR1:%[0-9]+]]:_(s32) = G_OR [[OR]], [[SHL1]]
; CI: [[COPY4:%[0-9]+]]:_(s32) = COPY [[LOAD3]](s32)
; CI: [[AND3:%[0-9]+]]:_(s32) = G_AND [[COPY4]], [[C4]]
; CI: [[C7:%[0-9]+]]:_(s32) = G_CONSTANT i32 24
; CI: [[SHL2:%[0-9]+]]:_(s32) = G_SHL [[AND3]], [[C7]](s32)
; CI: [[OR2:%[0-9]+]]:_(s32) = G_OR [[OR1]], [[SHL2]]
; CI: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[OR2]](s32)
; CI: $vgpr0_vgpr1 = COPY [[ZEXT]](s64)
%0:_(p6) = COPY $sgpr0
%1:_(s64) = G_ZEXTLOAD %0 :: (load 4, align 1, addrspace 6)
$vgpr0_vgpr1 = COPY %1

View File

@ -44,25 +44,22 @@ define i32 @v_sdot4_cast_v4i8(<4 x i8> %a, <4 x i8> %b, i32 %c) {
; GFX906-LABEL: v_sdot4_cast_v4i8:
; GFX906: ; %bb.0:
; GFX906-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX906-NEXT: s_mov_b32 s5, 8
; GFX906-NEXT: s_movk_i32 s4, 0xff
; GFX906-NEXT: v_and_b32_e32 v1, s4, v1
; GFX906-NEXT: v_lshlrev_b16_e32 v1, 8, v1
; GFX906-NEXT: v_or_b32_sdwa v0, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD
; GFX906-NEXT: v_and_b32_e32 v1, s4, v3
; GFX906-NEXT: v_lshlrev_b16_e32 v1, 8, v1
; GFX906-NEXT: v_or_b32_sdwa v1, v2, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD
; GFX906-NEXT: v_bfe_u32 v0, v0, 0, 16
; GFX906-NEXT: v_bfe_u32 v1, v1, 0, 16
; GFX906-NEXT: v_and_b32_e32 v2, s4, v7
; GFX906-NEXT: v_lshl_or_b32 v0, v1, 16, v0
; GFX906-NEXT: v_and_b32_e32 v1, s4, v5
; GFX906-NEXT: v_lshlrev_b16_e32 v1, 8, v1
; GFX906-NEXT: v_lshlrev_b16_e32 v2, 8, v2
; GFX906-NEXT: v_or_b32_sdwa v1, v4, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD
; GFX906-NEXT: v_or_b32_sdwa v2, v6, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD
; GFX906-NEXT: v_bfe_u32 v1, v1, 0, 16
; GFX906-NEXT: v_bfe_u32 v2, v2, 0, 16
; GFX906-NEXT: v_lshl_or_b32 v1, v2, 16, v1
; GFX906-NEXT: v_lshlrev_b32_sdwa v1, s5, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:BYTE_0
; GFX906-NEXT: v_and_or_b32 v0, v0, s4, v1
; GFX906-NEXT: v_and_b32_e32 v1, s4, v2
; GFX906-NEXT: v_and_b32_e32 v2, s4, v3
; GFX906-NEXT: v_lshlrev_b32_e32 v1, 16, v1
; GFX906-NEXT: v_lshlrev_b32_e32 v2, 24, v2
; GFX906-NEXT: v_or3_b32 v0, v0, v1, v2
; GFX906-NEXT: v_lshlrev_b32_sdwa v1, s5, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:BYTE_0
; GFX906-NEXT: v_and_b32_e32 v2, s4, v6
; GFX906-NEXT: v_and_b32_e32 v3, s4, v7
; GFX906-NEXT: v_and_or_b32 v1, v4, s4, v1
; GFX906-NEXT: v_lshlrev_b32_e32 v2, 16, v2
; GFX906-NEXT: v_lshlrev_b32_e32 v3, 24, v3
; GFX906-NEXT: v_or3_b32 v1, v1, v2, v3
; GFX906-NEXT: v_dot4_i32_i8 v0, v0, v1, v8
; GFX906-NEXT: s_setpc_b64 s[30:31]
;
@ -70,22 +67,23 @@ define i32 @v_sdot4_cast_v4i8(<4 x i8> %a, <4 x i8> %b, i32 %c) {
; GFX10: ; %bb.0:
; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX10-NEXT: s_waitcnt_vscnt null, 0x0
; GFX10-NEXT: s_movk_i32 s4, 0xff
; GFX10-NEXT: s_mov_b32 s4, 8
; GFX10-NEXT: s_movk_i32 s5, 0xff
; GFX10-NEXT: ; implicit-def: $vcc_hi
; GFX10-NEXT: v_and_b32_sdwa v1, v1, s4 dst_sel:BYTE_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
; GFX10-NEXT: v_and_b32_sdwa v3, v3, s4 dst_sel:BYTE_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
; GFX10-NEXT: v_and_b32_sdwa v5, v5, s4 dst_sel:BYTE_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
; GFX10-NEXT: v_and_b32_sdwa v7, v7, s4 dst_sel:BYTE_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
; GFX10-NEXT: v_or_b32_sdwa v0, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD
; GFX10-NEXT: v_or_b32_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD
; GFX10-NEXT: v_or_b32_sdwa v2, v4, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD
; GFX10-NEXT: v_or_b32_sdwa v3, v6, v7 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD
; GFX10-NEXT: v_bfe_u32 v0, v0, 0, 16
; GFX10-NEXT: v_bfe_u32 v1, v1, 0, 16
; GFX10-NEXT: v_bfe_u32 v2, v2, 0, 16
; GFX10-NEXT: v_bfe_u32 v3, v3, 0, 16
; GFX10-NEXT: v_lshl_or_b32 v7, v1, 16, v0
; GFX10-NEXT: v_lshl_or_b32 v1, v3, 16, v2
; GFX10-NEXT: v_lshlrev_b32_sdwa v1, s4, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:BYTE_0
; GFX10-NEXT: v_and_or_b32 v0, v0, s5, v1
; GFX10-NEXT: v_and_b32_e32 v1, s5, v2
; GFX10-NEXT: v_and_b32_e32 v2, s5, v3
; GFX10-NEXT: v_lshlrev_b32_sdwa v3, s4, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:BYTE_0
; GFX10-NEXT: v_and_b32_e32 v5, s5, v6
; GFX10-NEXT: v_and_b32_e32 v6, s5, v7
; GFX10-NEXT: v_lshlrev_b32_e32 v1, 16, v1
; GFX10-NEXT: v_lshlrev_b32_e32 v2, 24, v2
; GFX10-NEXT: v_and_or_b32 v3, v4, s5, v3
; GFX10-NEXT: v_lshlrev_b32_e32 v4, 16, v5
; GFX10-NEXT: v_lshlrev_b32_e32 v5, 24, v6
; GFX10-NEXT: v_or3_b32 v7, v0, v1, v2
; GFX10-NEXT: v_or3_b32 v1, v3, v4, v5
; GFX10-NEXT: v_dot4_i32_i8 v0, v7, v1, v8
; GFX10-NEXT: s_setpc_b64 s[30:31]
%a.cast = bitcast <4 x i8> %a to i32

View File

@ -44,25 +44,22 @@ define i32 @v_udot4_cast_v4i8(<4 x i8> %a, <4 x i8> %b, i32 %c) {
; GFX906-LABEL: v_udot4_cast_v4i8:
; GFX906: ; %bb.0:
; GFX906-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX906-NEXT: s_mov_b32 s5, 8
; GFX906-NEXT: s_movk_i32 s4, 0xff
; GFX906-NEXT: v_and_b32_e32 v1, s4, v1
; GFX906-NEXT: v_lshlrev_b16_e32 v1, 8, v1
; GFX906-NEXT: v_or_b32_sdwa v0, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD
; GFX906-NEXT: v_and_b32_e32 v1, s4, v3
; GFX906-NEXT: v_lshlrev_b16_e32 v1, 8, v1
; GFX906-NEXT: v_or_b32_sdwa v1, v2, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD
; GFX906-NEXT: v_bfe_u32 v0, v0, 0, 16
; GFX906-NEXT: v_bfe_u32 v1, v1, 0, 16
; GFX906-NEXT: v_and_b32_e32 v2, s4, v7
; GFX906-NEXT: v_lshl_or_b32 v0, v1, 16, v0
; GFX906-NEXT: v_and_b32_e32 v1, s4, v5
; GFX906-NEXT: v_lshlrev_b16_e32 v1, 8, v1
; GFX906-NEXT: v_lshlrev_b16_e32 v2, 8, v2
; GFX906-NEXT: v_or_b32_sdwa v1, v4, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD
; GFX906-NEXT: v_or_b32_sdwa v2, v6, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD
; GFX906-NEXT: v_bfe_u32 v1, v1, 0, 16
; GFX906-NEXT: v_bfe_u32 v2, v2, 0, 16
; GFX906-NEXT: v_lshl_or_b32 v1, v2, 16, v1
; GFX906-NEXT: v_lshlrev_b32_sdwa v1, s5, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:BYTE_0
; GFX906-NEXT: v_and_or_b32 v0, v0, s4, v1
; GFX906-NEXT: v_and_b32_e32 v1, s4, v2
; GFX906-NEXT: v_and_b32_e32 v2, s4, v3
; GFX906-NEXT: v_lshlrev_b32_e32 v1, 16, v1
; GFX906-NEXT: v_lshlrev_b32_e32 v2, 24, v2
; GFX906-NEXT: v_or3_b32 v0, v0, v1, v2
; GFX906-NEXT: v_lshlrev_b32_sdwa v1, s5, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:BYTE_0
; GFX906-NEXT: v_and_b32_e32 v2, s4, v6
; GFX906-NEXT: v_and_b32_e32 v3, s4, v7
; GFX906-NEXT: v_and_or_b32 v1, v4, s4, v1
; GFX906-NEXT: v_lshlrev_b32_e32 v2, 16, v2
; GFX906-NEXT: v_lshlrev_b32_e32 v3, 24, v3
; GFX906-NEXT: v_or3_b32 v1, v1, v2, v3
; GFX906-NEXT: v_dot4_u32_u8 v0, v0, v1, v8
; GFX906-NEXT: s_setpc_b64 s[30:31]
;
@ -70,22 +67,23 @@ define i32 @v_udot4_cast_v4i8(<4 x i8> %a, <4 x i8> %b, i32 %c) {
; GFX10: ; %bb.0:
; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GFX10-NEXT: s_waitcnt_vscnt null, 0x0
; GFX10-NEXT: s_movk_i32 s4, 0xff
; GFX10-NEXT: s_mov_b32 s4, 8
; GFX10-NEXT: s_movk_i32 s5, 0xff
; GFX10-NEXT: ; implicit-def: $vcc_hi
; GFX10-NEXT: v_and_b32_sdwa v1, v1, s4 dst_sel:BYTE_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
; GFX10-NEXT: v_and_b32_sdwa v3, v3, s4 dst_sel:BYTE_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
; GFX10-NEXT: v_and_b32_sdwa v5, v5, s4 dst_sel:BYTE_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
; GFX10-NEXT: v_and_b32_sdwa v7, v7, s4 dst_sel:BYTE_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD
; GFX10-NEXT: v_or_b32_sdwa v0, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD
; GFX10-NEXT: v_or_b32_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD
; GFX10-NEXT: v_or_b32_sdwa v2, v4, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD
; GFX10-NEXT: v_or_b32_sdwa v3, v6, v7 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:BYTE_0 src1_sel:DWORD
; GFX10-NEXT: v_bfe_u32 v0, v0, 0, 16
; GFX10-NEXT: v_bfe_u32 v1, v1, 0, 16
; GFX10-NEXT: v_bfe_u32 v2, v2, 0, 16
; GFX10-NEXT: v_bfe_u32 v3, v3, 0, 16
; GFX10-NEXT: v_lshl_or_b32 v7, v1, 16, v0
; GFX10-NEXT: v_lshl_or_b32 v1, v3, 16, v2
; GFX10-NEXT: v_lshlrev_b32_sdwa v1, s4, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:BYTE_0
; GFX10-NEXT: v_and_or_b32 v0, v0, s5, v1
; GFX10-NEXT: v_and_b32_e32 v1, s5, v2
; GFX10-NEXT: v_and_b32_e32 v2, s5, v3
; GFX10-NEXT: v_lshlrev_b32_sdwa v3, s4, v5 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:BYTE_0
; GFX10-NEXT: v_and_b32_e32 v5, s5, v6
; GFX10-NEXT: v_and_b32_e32 v6, s5, v7
; GFX10-NEXT: v_lshlrev_b32_e32 v1, 16, v1
; GFX10-NEXT: v_lshlrev_b32_e32 v2, 24, v2
; GFX10-NEXT: v_and_or_b32 v3, v4, s5, v3
; GFX10-NEXT: v_lshlrev_b32_e32 v4, 16, v5
; GFX10-NEXT: v_lshlrev_b32_e32 v5, 24, v6
; GFX10-NEXT: v_or3_b32 v7, v0, v1, v2
; GFX10-NEXT: v_or3_b32 v1, v3, v4, v5
; GFX10-NEXT: v_dot4_u32_u8 v0, v7, v1, v8
; GFX10-NEXT: s_setpc_b64 s[30:31]
%a.cast = bitcast <4 x i8> %a to i32