Index: llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp =================================================================== --- llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp +++ llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp @@ -226,6 +226,23 @@ LLT GCDTy = getGCDType(getGCDType(ResultTy, LeftoverTy), PartTy); for (auto PartReg : concat(PartRegs, LeftoverRegs)) extractGCDType(GCDRegs, GCDTy, PartReg); + + LLT LCMTy = getLCMType(ResultTy, LeftoverTy); + // Check if G_CONCAT_VECTORS or G_BUILD_VECTOR would be illegal for the types + // passed in LegalizerHelper::buildLCMMergePieces(), and if so avoid that. + if (LCMTy.isVector()) { + if (GCDTy.isVector() && + !LI.isLegalOrCustom({TargetOpcode::G_CONCAT_VECTORS, {LCMTy, GCDTy}})) { + MIRBuilder.buildConcatVectors(DstReg, GCDRegs); + return; + } + if (!GCDTy.isVector() && + !LI.isLegalOrCustom({TargetOpcode::G_BUILD_VECTOR, {LCMTy, GCDTy}})) { + MIRBuilder.buildBuildVector(DstReg, GCDRegs); + return; + } + } + LLT ResultLCMTy = buildLCMMergePieces(ResultTy, LeftoverTy, GCDTy, GCDRegs); buildWidenedRemergeToDst(DstReg, ResultLCMTy, GCDRegs); } Index: llvm/test/CodeGen/AMDGPU/GlobalISel/legalize-load-global.mir =================================================================== --- llvm/test/CodeGen/AMDGPU/GlobalISel/legalize-load-global.mir +++ llvm/test/CodeGen/AMDGPU/GlobalISel/legalize-load-global.mir @@ -9753,30 +9753,14 @@ ; SI: [[LOAD5:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD4]](p1) :: (load (s16) from unknown-address + 10, addrspace 1) ; SI: [[PTR_ADD5:%[0-9]+]]:_(p1) = G_PTR_ADD [[PTR_ADD3]], [[C1]](s64) ; SI: [[LOAD6:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD5]](p1) :: (load (s16) from unknown-address + 12, addrspace 1) - ; SI: [[DEF:%[0-9]+]]:_(<2 x s16>) = G_IMPLICIT_DEF - ; SI: [[DEF1:%[0-9]+]]:_(<4 x s16>) = G_IMPLICIT_DEF - ; SI: [[DEF2:%[0-9]+]]:_(<4 x s16>) = G_IMPLICIT_DEF - ; SI: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[DEF1]](<4 x s16>) + ; SI: [[DEF:%[0-9]+]]:_(s16) = G_IMPLICIT_DEF + ; SI: [[DEF1:%[0-9]+]]:_(<2 x s16>) = G_IMPLICIT_DEF + ; SI: [[DEF2:%[0-9]+]]:_(<8 x s16>) = G_IMPLICIT_DEF + ; SI: [[DEF3:%[0-9]+]]:_(<8 x s16>) = G_IMPLICIT_DEF + ; SI: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>), [[UV2:%[0-9]+]]:_(<2 x s16>), [[UV3:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[DEF2]](<8 x s16>) ; SI: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[UV]](<2 x s16>) ; SI: [[C4:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 ; SI: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST]], [[C4]](s32) - ; SI: [[BITCAST1:%[0-9]+]]:_(s32) = G_BITCAST [[UV1]](<2 x s16>) - ; SI: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST1]], [[C4]](s32) - ; SI: [[UV2:%[0-9]+]]:_(<2 x s16>), [[UV3:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[DEF1]](<4 x s16>) - ; SI: [[BITCAST2:%[0-9]+]]:_(s32) = G_BITCAST [[UV2]](<2 x s16>) - ; SI: [[LSHR2:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST2]], [[C4]](s32) - ; SI: [[BITCAST3:%[0-9]+]]:_(s32) = G_BITCAST [[UV3]](<2 x s16>) - ; SI: [[LSHR3:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST3]], [[C4]](s32) - ; SI: [[UV4:%[0-9]+]]:_(<2 x s16>), [[UV5:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[DEF1]](<4 x s16>) - ; SI: [[BITCAST4:%[0-9]+]]:_(s32) = G_BITCAST [[UV4]](<2 x s16>) - ; SI: [[LSHR4:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST4]], [[C4]](s32) - ; SI: [[BITCAST5:%[0-9]+]]:_(s32) = G_BITCAST [[UV5]](<2 x s16>) - ; SI: [[LSHR5:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST5]], [[C4]](s32) - ; SI: [[UV6:%[0-9]+]]:_(<2 x s16>), [[UV7:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[DEF1]](<4 x s16>) - ; SI: [[BITCAST6:%[0-9]+]]:_(s32) = G_BITCAST [[UV6]](<2 x s16>) - ; SI: [[LSHR6:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST6]], [[C4]](s32) - ; SI: [[BITCAST7:%[0-9]+]]:_(s32) = G_BITCAST [[UV7]](<2 x s16>) - ; SI: [[LSHR7:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST7]], [[C4]](s32) ; SI: [[C5:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535 ; SI: [[COPY1:%[0-9]+]]:_(s32) = COPY [[LOAD]](s32) ; SI: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C5]] @@ -9784,113 +9768,32 @@ ; SI: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY2]], [[C5]] ; SI: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND1]], [[C4]](s32) ; SI: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]] - ; SI: [[BITCAST8:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32) + ; SI: [[BITCAST1:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32) ; SI: [[COPY3:%[0-9]+]]:_(s32) = COPY [[LOAD2]](s32) ; SI: [[AND2:%[0-9]+]]:_(s32) = G_AND [[COPY3]], [[C5]] ; SI: [[COPY4:%[0-9]+]]:_(s32) = COPY [[LOAD3]](s32) ; SI: [[AND3:%[0-9]+]]:_(s32) = G_AND [[COPY4]], [[C5]] ; SI: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[AND3]], [[C4]](s32) ; SI: [[OR1:%[0-9]+]]:_(s32) = G_OR [[AND2]], [[SHL1]] - ; SI: [[BITCAST9:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR1]](s32) + ; SI: [[BITCAST2:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR1]](s32) ; SI: [[COPY5:%[0-9]+]]:_(s32) = COPY [[LOAD4]](s32) ; SI: [[AND4:%[0-9]+]]:_(s32) = G_AND [[COPY5]], [[C5]] ; SI: [[COPY6:%[0-9]+]]:_(s32) = COPY [[LOAD5]](s32) ; SI: [[AND5:%[0-9]+]]:_(s32) = G_AND [[COPY6]], [[C5]] ; SI: [[SHL2:%[0-9]+]]:_(s32) = G_SHL [[AND5]], [[C4]](s32) ; SI: [[OR2:%[0-9]+]]:_(s32) = G_OR [[AND4]], [[SHL2]] - ; SI: [[BITCAST10:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR2]](s32) + ; SI: [[BITCAST3:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR2]](s32) ; SI: [[COPY7:%[0-9]+]]:_(s32) = COPY [[LOAD6]](s32) ; SI: [[AND6:%[0-9]+]]:_(s32) = G_AND [[COPY7]], [[C5]] - ; SI: [[C6:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 - ; SI: [[COPY8:%[0-9]+]]:_(s32) = COPY [[C6]](s32) - ; SI: [[SHL3:%[0-9]+]]:_(s32) = G_SHL [[COPY8]], [[C4]](s32) + ; SI: [[COPY8:%[0-9]+]]:_(s32) = COPY [[BITCAST]](s32) + ; SI: [[AND7:%[0-9]+]]:_(s32) = G_AND [[COPY8]], [[C5]] + ; SI: [[SHL3:%[0-9]+]]:_(s32) = G_SHL [[AND7]], [[C4]](s32) ; SI: [[OR3:%[0-9]+]]:_(s32) = G_OR [[AND6]], [[SHL3]] - ; SI: [[BITCAST11:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR3]](s32) - ; SI: [[COPY9:%[0-9]+]]:_(s32) = COPY [[C6]](s32) - ; SI: [[COPY10:%[0-9]+]]:_(s32) = COPY [[BITCAST]](s32) - ; SI: [[AND7:%[0-9]+]]:_(s32) = G_AND [[COPY10]], [[C5]] - ; SI: [[SHL4:%[0-9]+]]:_(s32) = G_SHL [[AND7]], [[C4]](s32) - ; SI: [[OR4:%[0-9]+]]:_(s32) = G_OR [[COPY9]], [[SHL4]] - ; SI: [[BITCAST12:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR4]](s32) - ; SI: [[COPY11:%[0-9]+]]:_(s32) = COPY [[LSHR]](s32) - ; SI: [[AND8:%[0-9]+]]:_(s32) = G_AND [[COPY11]], [[C5]] - ; SI: [[COPY12:%[0-9]+]]:_(s32) = COPY [[BITCAST1]](s32) - ; SI: [[AND9:%[0-9]+]]:_(s32) = G_AND [[COPY12]], [[C5]] - ; SI: [[SHL5:%[0-9]+]]:_(s32) = G_SHL [[AND9]], [[C4]](s32) - ; SI: [[OR5:%[0-9]+]]:_(s32) = G_OR [[AND8]], [[SHL5]] - ; SI: [[BITCAST13:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR5]](s32) - ; SI: [[COPY13:%[0-9]+]]:_(s32) = COPY [[BITCAST2]](s32) - ; SI: [[AND10:%[0-9]+]]:_(s32) = G_AND [[COPY13]], [[C5]] - ; SI: [[COPY14:%[0-9]+]]:_(s32) = COPY [[LSHR2]](s32) - ; SI: [[AND11:%[0-9]+]]:_(s32) = G_AND [[COPY14]], [[C5]] - ; SI: [[SHL6:%[0-9]+]]:_(s32) = G_SHL [[AND11]], [[C4]](s32) - ; SI: [[OR6:%[0-9]+]]:_(s32) = G_OR [[AND10]], [[SHL6]] - ; SI: [[BITCAST14:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR6]](s32) - ; SI: [[COPY15:%[0-9]+]]:_(s32) = COPY [[BITCAST3]](s32) - ; SI: [[AND12:%[0-9]+]]:_(s32) = G_AND [[COPY15]], [[C5]] - ; SI: [[COPY16:%[0-9]+]]:_(s32) = COPY [[BITCAST4]](s32) - ; SI: [[AND13:%[0-9]+]]:_(s32) = G_AND [[COPY16]], [[C5]] - ; SI: [[SHL7:%[0-9]+]]:_(s32) = G_SHL [[AND13]], [[C4]](s32) - ; SI: [[OR7:%[0-9]+]]:_(s32) = G_OR [[AND12]], [[SHL7]] - ; SI: [[BITCAST15:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR7]](s32) - ; SI: [[COPY17:%[0-9]+]]:_(s32) = COPY [[LSHR4]](s32) - ; SI: [[AND14:%[0-9]+]]:_(s32) = G_AND [[COPY17]], [[C5]] - ; SI: [[COPY18:%[0-9]+]]:_(s32) = COPY [[BITCAST5]](s32) - ; SI: [[AND15:%[0-9]+]]:_(s32) = G_AND [[COPY18]], [[C5]] - ; SI: [[SHL8:%[0-9]+]]:_(s32) = G_SHL [[AND15]], [[C4]](s32) - ; SI: [[OR8:%[0-9]+]]:_(s32) = G_OR [[AND14]], [[SHL8]] - ; SI: [[BITCAST16:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR8]](s32) - ; SI: [[COPY19:%[0-9]+]]:_(s32) = COPY [[BITCAST6]](s32) - ; SI: [[AND16:%[0-9]+]]:_(s32) = G_AND [[COPY19]], [[C5]] - ; SI: [[COPY20:%[0-9]+]]:_(s32) = COPY [[LSHR6]](s32) - ; SI: [[AND17:%[0-9]+]]:_(s32) = G_AND [[COPY20]], [[C5]] - ; SI: [[SHL9:%[0-9]+]]:_(s32) = G_SHL [[AND17]], [[C4]](s32) - ; SI: [[OR9:%[0-9]+]]:_(s32) = G_OR [[AND16]], [[SHL9]] - ; SI: [[BITCAST17:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR9]](s32) - ; SI: [[COPY21:%[0-9]+]]:_(s32) = COPY [[BITCAST7]](s32) - ; SI: [[AND18:%[0-9]+]]:_(s32) = G_AND [[COPY21]], [[C5]] - ; SI: [[SHL10:%[0-9]+]]:_(s32) = G_SHL [[C6]], [[C4]](s32) - ; SI: [[OR10:%[0-9]+]]:_(s32) = G_OR [[AND18]], [[SHL10]] - ; SI: [[BITCAST18:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR10]](s32) - ; SI: [[CONCAT_VECTORS:%[0-9]+]]:_(<42 x s16>) = G_CONCAT_VECTORS [[BITCAST8]](<2 x s16>), [[BITCAST9]](<2 x s16>), [[BITCAST10]](<2 x s16>), [[BITCAST11]](<2 x s16>), [[BITCAST12]](<2 x s16>), [[BITCAST13]](<2 x s16>), [[BITCAST14]](<2 x s16>), [[BITCAST15]](<2 x s16>), [[BITCAST16]](<2 x s16>), [[BITCAST17]](<2 x s16>), [[BITCAST18]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>) - ; SI: [[DEF3:%[0-9]+]]:_(<22 x s16>) = G_IMPLICIT_DEF - ; SI: [[DEF4:%[0-9]+]]:_(<8 x s16>) = G_IMPLICIT_DEF - ; SI: [[DEF5:%[0-9]+]]:_(<8 x s16>) = G_IMPLICIT_DEF - ; SI: [[UV8:%[0-9]+]]:_(<2 x s16>), [[UV9:%[0-9]+]]:_(<2 x s16>), [[UV10:%[0-9]+]]:_(<2 x s16>), [[UV11:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[DEF4]](<8 x s16>) - ; SI: [[BITCAST19:%[0-9]+]]:_(s32) = G_BITCAST [[UV8]](<2 x s16>) - ; SI: [[LSHR8:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST19]], [[C4]](s32) - ; SI: [[COPY22:%[0-9]+]]:_(s32) = COPY [[LOAD]](s32) - ; SI: [[AND19:%[0-9]+]]:_(s32) = G_AND [[COPY22]], [[C5]] - ; SI: [[COPY23:%[0-9]+]]:_(s32) = COPY [[LOAD1]](s32) - ; SI: [[AND20:%[0-9]+]]:_(s32) = G_AND [[COPY23]], [[C5]] - ; SI: [[SHL11:%[0-9]+]]:_(s32) = G_SHL [[AND20]], [[C4]](s32) - ; SI: [[OR11:%[0-9]+]]:_(s32) = G_OR [[AND19]], [[SHL11]] - ; SI: [[BITCAST20:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR11]](s32) - ; SI: [[COPY24:%[0-9]+]]:_(s32) = COPY [[LOAD2]](s32) - ; SI: [[AND21:%[0-9]+]]:_(s32) = G_AND [[COPY24]], [[C5]] - ; SI: [[COPY25:%[0-9]+]]:_(s32) = COPY [[LOAD3]](s32) - ; SI: [[AND22:%[0-9]+]]:_(s32) = G_AND [[COPY25]], [[C5]] - ; SI: [[SHL12:%[0-9]+]]:_(s32) = G_SHL [[AND22]], [[C4]](s32) - ; SI: [[OR12:%[0-9]+]]:_(s32) = G_OR [[AND21]], [[SHL12]] - ; SI: [[BITCAST21:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR12]](s32) - ; SI: [[COPY26:%[0-9]+]]:_(s32) = COPY [[LOAD4]](s32) - ; SI: [[AND23:%[0-9]+]]:_(s32) = G_AND [[COPY26]], [[C5]] - ; SI: [[COPY27:%[0-9]+]]:_(s32) = COPY [[LOAD5]](s32) - ; SI: [[AND24:%[0-9]+]]:_(s32) = G_AND [[COPY27]], [[C5]] - ; SI: [[SHL13:%[0-9]+]]:_(s32) = G_SHL [[AND24]], [[C4]](s32) - ; SI: [[OR13:%[0-9]+]]:_(s32) = G_OR [[AND23]], [[SHL13]] - ; SI: [[BITCAST22:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR13]](s32) - ; SI: [[COPY28:%[0-9]+]]:_(s32) = COPY [[LOAD6]](s32) - ; SI: [[AND25:%[0-9]+]]:_(s32) = G_AND [[COPY28]], [[C5]] - ; SI: [[COPY29:%[0-9]+]]:_(s32) = COPY [[BITCAST19]](s32) - ; SI: [[AND26:%[0-9]+]]:_(s32) = G_AND [[COPY29]], [[C5]] - ; SI: [[SHL14:%[0-9]+]]:_(s32) = G_SHL [[AND26]], [[C4]](s32) - ; SI: [[OR14:%[0-9]+]]:_(s32) = G_OR [[AND25]], [[SHL14]] - ; SI: [[BITCAST23:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR14]](s32) - ; SI: $vgpr0 = COPY [[BITCAST20]](<2 x s16>) - ; SI: $vgpr1 = COPY [[BITCAST21]](<2 x s16>) - ; SI: $vgpr2 = COPY [[BITCAST22]](<2 x s16>) - ; SI: $vgpr3 = COPY [[BITCAST23]](<2 x s16>) + ; SI: [[BITCAST4:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR3]](s32) + ; SI: $vgpr0 = COPY [[BITCAST1]](<2 x s16>) + ; SI: $vgpr1 = COPY [[BITCAST2]](<2 x s16>) + ; SI: $vgpr2 = COPY [[BITCAST3]](<2 x s16>) + ; SI: $vgpr3 = COPY [[BITCAST4]](<2 x s16>) ; CI-HSA-LABEL: name: test_load_global_v7s16_align2 ; CI-HSA: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 ; CI-HSA: [[LOAD:%[0-9]+]]:_(<7 x s16>) = G_LOAD [[COPY]](p1) :: (load (<7 x s16>), align 2, addrspace 1) @@ -9923,30 +9826,14 @@ ; CI-MESA: [[LOAD5:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD4]](p1) :: (load (s16) from unknown-address + 10, addrspace 1) ; CI-MESA: [[PTR_ADD5:%[0-9]+]]:_(p1) = G_PTR_ADD [[PTR_ADD3]], [[C1]](s64) ; CI-MESA: [[LOAD6:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD5]](p1) :: (load (s16) from unknown-address + 12, addrspace 1) - ; CI-MESA: [[DEF:%[0-9]+]]:_(<2 x s16>) = G_IMPLICIT_DEF - ; CI-MESA: [[DEF1:%[0-9]+]]:_(<4 x s16>) = G_IMPLICIT_DEF - ; CI-MESA: [[DEF2:%[0-9]+]]:_(<4 x s16>) = G_IMPLICIT_DEF - ; CI-MESA: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[DEF1]](<4 x s16>) + ; CI-MESA: [[DEF:%[0-9]+]]:_(s16) = G_IMPLICIT_DEF + ; CI-MESA: [[DEF1:%[0-9]+]]:_(<2 x s16>) = G_IMPLICIT_DEF + ; CI-MESA: [[DEF2:%[0-9]+]]:_(<8 x s16>) = G_IMPLICIT_DEF + ; CI-MESA: [[DEF3:%[0-9]+]]:_(<8 x s16>) = G_IMPLICIT_DEF + ; CI-MESA: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>), [[UV2:%[0-9]+]]:_(<2 x s16>), [[UV3:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[DEF2]](<8 x s16>) ; CI-MESA: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[UV]](<2 x s16>) ; CI-MESA: [[C4:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 ; CI-MESA: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST]], [[C4]](s32) - ; CI-MESA: [[BITCAST1:%[0-9]+]]:_(s32) = G_BITCAST [[UV1]](<2 x s16>) - ; CI-MESA: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST1]], [[C4]](s32) - ; CI-MESA: [[UV2:%[0-9]+]]:_(<2 x s16>), [[UV3:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[DEF1]](<4 x s16>) - ; CI-MESA: [[BITCAST2:%[0-9]+]]:_(s32) = G_BITCAST [[UV2]](<2 x s16>) - ; CI-MESA: [[LSHR2:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST2]], [[C4]](s32) - ; CI-MESA: [[BITCAST3:%[0-9]+]]:_(s32) = G_BITCAST [[UV3]](<2 x s16>) - ; CI-MESA: [[LSHR3:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST3]], [[C4]](s32) - ; CI-MESA: [[UV4:%[0-9]+]]:_(<2 x s16>), [[UV5:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[DEF1]](<4 x s16>) - ; CI-MESA: [[BITCAST4:%[0-9]+]]:_(s32) = G_BITCAST [[UV4]](<2 x s16>) - ; CI-MESA: [[LSHR4:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST4]], [[C4]](s32) - ; CI-MESA: [[BITCAST5:%[0-9]+]]:_(s32) = G_BITCAST [[UV5]](<2 x s16>) - ; CI-MESA: [[LSHR5:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST5]], [[C4]](s32) - ; CI-MESA: [[UV6:%[0-9]+]]:_(<2 x s16>), [[UV7:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[DEF1]](<4 x s16>) - ; CI-MESA: [[BITCAST6:%[0-9]+]]:_(s32) = G_BITCAST [[UV6]](<2 x s16>) - ; CI-MESA: [[LSHR6:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST6]], [[C4]](s32) - ; CI-MESA: [[BITCAST7:%[0-9]+]]:_(s32) = G_BITCAST [[UV7]](<2 x s16>) - ; CI-MESA: [[LSHR7:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST7]], [[C4]](s32) ; CI-MESA: [[C5:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535 ; CI-MESA: [[COPY1:%[0-9]+]]:_(s32) = COPY [[LOAD]](s32) ; CI-MESA: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C5]] @@ -9954,113 +9841,32 @@ ; CI-MESA: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY2]], [[C5]] ; CI-MESA: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND1]], [[C4]](s32) ; CI-MESA: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]] - ; CI-MESA: [[BITCAST8:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32) + ; CI-MESA: [[BITCAST1:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32) ; CI-MESA: [[COPY3:%[0-9]+]]:_(s32) = COPY [[LOAD2]](s32) ; CI-MESA: [[AND2:%[0-9]+]]:_(s32) = G_AND [[COPY3]], [[C5]] ; CI-MESA: [[COPY4:%[0-9]+]]:_(s32) = COPY [[LOAD3]](s32) ; CI-MESA: [[AND3:%[0-9]+]]:_(s32) = G_AND [[COPY4]], [[C5]] ; CI-MESA: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[AND3]], [[C4]](s32) ; CI-MESA: [[OR1:%[0-9]+]]:_(s32) = G_OR [[AND2]], [[SHL1]] - ; CI-MESA: [[BITCAST9:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR1]](s32) + ; CI-MESA: [[BITCAST2:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR1]](s32) ; CI-MESA: [[COPY5:%[0-9]+]]:_(s32) = COPY [[LOAD4]](s32) ; CI-MESA: [[AND4:%[0-9]+]]:_(s32) = G_AND [[COPY5]], [[C5]] ; CI-MESA: [[COPY6:%[0-9]+]]:_(s32) = COPY [[LOAD5]](s32) ; CI-MESA: [[AND5:%[0-9]+]]:_(s32) = G_AND [[COPY6]], [[C5]] ; CI-MESA: [[SHL2:%[0-9]+]]:_(s32) = G_SHL [[AND5]], [[C4]](s32) ; CI-MESA: [[OR2:%[0-9]+]]:_(s32) = G_OR [[AND4]], [[SHL2]] - ; CI-MESA: [[BITCAST10:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR2]](s32) + ; CI-MESA: [[BITCAST3:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR2]](s32) ; CI-MESA: [[COPY7:%[0-9]+]]:_(s32) = COPY [[LOAD6]](s32) ; CI-MESA: [[AND6:%[0-9]+]]:_(s32) = G_AND [[COPY7]], [[C5]] - ; CI-MESA: [[C6:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 - ; CI-MESA: [[COPY8:%[0-9]+]]:_(s32) = COPY [[C6]](s32) - ; CI-MESA: [[SHL3:%[0-9]+]]:_(s32) = G_SHL [[COPY8]], [[C4]](s32) + ; CI-MESA: [[COPY8:%[0-9]+]]:_(s32) = COPY [[BITCAST]](s32) + ; CI-MESA: [[AND7:%[0-9]+]]:_(s32) = G_AND [[COPY8]], [[C5]] + ; CI-MESA: [[SHL3:%[0-9]+]]:_(s32) = G_SHL [[AND7]], [[C4]](s32) ; CI-MESA: [[OR3:%[0-9]+]]:_(s32) = G_OR [[AND6]], [[SHL3]] - ; CI-MESA: [[BITCAST11:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR3]](s32) - ; CI-MESA: [[COPY9:%[0-9]+]]:_(s32) = COPY [[C6]](s32) - ; CI-MESA: [[COPY10:%[0-9]+]]:_(s32) = COPY [[BITCAST]](s32) - ; CI-MESA: [[AND7:%[0-9]+]]:_(s32) = G_AND [[COPY10]], [[C5]] - ; CI-MESA: [[SHL4:%[0-9]+]]:_(s32) = G_SHL [[AND7]], [[C4]](s32) - ; CI-MESA: [[OR4:%[0-9]+]]:_(s32) = G_OR [[COPY9]], [[SHL4]] - ; CI-MESA: [[BITCAST12:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR4]](s32) - ; CI-MESA: [[COPY11:%[0-9]+]]:_(s32) = COPY [[LSHR]](s32) - ; CI-MESA: [[AND8:%[0-9]+]]:_(s32) = G_AND [[COPY11]], [[C5]] - ; CI-MESA: [[COPY12:%[0-9]+]]:_(s32) = COPY [[BITCAST1]](s32) - ; CI-MESA: [[AND9:%[0-9]+]]:_(s32) = G_AND [[COPY12]], [[C5]] - ; CI-MESA: [[SHL5:%[0-9]+]]:_(s32) = G_SHL [[AND9]], [[C4]](s32) - ; CI-MESA: [[OR5:%[0-9]+]]:_(s32) = G_OR [[AND8]], [[SHL5]] - ; CI-MESA: [[BITCAST13:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR5]](s32) - ; CI-MESA: [[COPY13:%[0-9]+]]:_(s32) = COPY [[BITCAST2]](s32) - ; CI-MESA: [[AND10:%[0-9]+]]:_(s32) = G_AND [[COPY13]], [[C5]] - ; CI-MESA: [[COPY14:%[0-9]+]]:_(s32) = COPY [[LSHR2]](s32) - ; CI-MESA: [[AND11:%[0-9]+]]:_(s32) = G_AND [[COPY14]], [[C5]] - ; CI-MESA: [[SHL6:%[0-9]+]]:_(s32) = G_SHL [[AND11]], [[C4]](s32) - ; CI-MESA: [[OR6:%[0-9]+]]:_(s32) = G_OR [[AND10]], [[SHL6]] - ; CI-MESA: [[BITCAST14:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR6]](s32) - ; CI-MESA: [[COPY15:%[0-9]+]]:_(s32) = COPY [[BITCAST3]](s32) - ; CI-MESA: [[AND12:%[0-9]+]]:_(s32) = G_AND [[COPY15]], [[C5]] - ; CI-MESA: [[COPY16:%[0-9]+]]:_(s32) = COPY [[BITCAST4]](s32) - ; CI-MESA: [[AND13:%[0-9]+]]:_(s32) = G_AND [[COPY16]], [[C5]] - ; CI-MESA: [[SHL7:%[0-9]+]]:_(s32) = G_SHL [[AND13]], [[C4]](s32) - ; CI-MESA: [[OR7:%[0-9]+]]:_(s32) = G_OR [[AND12]], [[SHL7]] - ; CI-MESA: [[BITCAST15:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR7]](s32) - ; CI-MESA: [[COPY17:%[0-9]+]]:_(s32) = COPY [[LSHR4]](s32) - ; CI-MESA: [[AND14:%[0-9]+]]:_(s32) = G_AND [[COPY17]], [[C5]] - ; CI-MESA: [[COPY18:%[0-9]+]]:_(s32) = COPY [[BITCAST5]](s32) - ; CI-MESA: [[AND15:%[0-9]+]]:_(s32) = G_AND [[COPY18]], [[C5]] - ; CI-MESA: [[SHL8:%[0-9]+]]:_(s32) = G_SHL [[AND15]], [[C4]](s32) - ; CI-MESA: [[OR8:%[0-9]+]]:_(s32) = G_OR [[AND14]], [[SHL8]] - ; CI-MESA: [[BITCAST16:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR8]](s32) - ; CI-MESA: [[COPY19:%[0-9]+]]:_(s32) = COPY [[BITCAST6]](s32) - ; CI-MESA: [[AND16:%[0-9]+]]:_(s32) = G_AND [[COPY19]], [[C5]] - ; CI-MESA: [[COPY20:%[0-9]+]]:_(s32) = COPY [[LSHR6]](s32) - ; CI-MESA: [[AND17:%[0-9]+]]:_(s32) = G_AND [[COPY20]], [[C5]] - ; CI-MESA: [[SHL9:%[0-9]+]]:_(s32) = G_SHL [[AND17]], [[C4]](s32) - ; CI-MESA: [[OR9:%[0-9]+]]:_(s32) = G_OR [[AND16]], [[SHL9]] - ; CI-MESA: [[BITCAST17:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR9]](s32) - ; CI-MESA: [[COPY21:%[0-9]+]]:_(s32) = COPY [[BITCAST7]](s32) - ; CI-MESA: [[AND18:%[0-9]+]]:_(s32) = G_AND [[COPY21]], [[C5]] - ; CI-MESA: [[SHL10:%[0-9]+]]:_(s32) = G_SHL [[C6]], [[C4]](s32) - ; CI-MESA: [[OR10:%[0-9]+]]:_(s32) = G_OR [[AND18]], [[SHL10]] - ; CI-MESA: [[BITCAST18:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR10]](s32) - ; CI-MESA: [[CONCAT_VECTORS:%[0-9]+]]:_(<42 x s16>) = G_CONCAT_VECTORS [[BITCAST8]](<2 x s16>), [[BITCAST9]](<2 x s16>), [[BITCAST10]](<2 x s16>), [[BITCAST11]](<2 x s16>), [[BITCAST12]](<2 x s16>), [[BITCAST13]](<2 x s16>), [[BITCAST14]](<2 x s16>), [[BITCAST15]](<2 x s16>), [[BITCAST16]](<2 x s16>), [[BITCAST17]](<2 x s16>), [[BITCAST18]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>) - ; CI-MESA: [[DEF3:%[0-9]+]]:_(<22 x s16>) = G_IMPLICIT_DEF - ; CI-MESA: [[DEF4:%[0-9]+]]:_(<8 x s16>) = G_IMPLICIT_DEF - ; CI-MESA: [[DEF5:%[0-9]+]]:_(<8 x s16>) = G_IMPLICIT_DEF - ; CI-MESA: [[UV8:%[0-9]+]]:_(<2 x s16>), [[UV9:%[0-9]+]]:_(<2 x s16>), [[UV10:%[0-9]+]]:_(<2 x s16>), [[UV11:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[DEF4]](<8 x s16>) - ; CI-MESA: [[BITCAST19:%[0-9]+]]:_(s32) = G_BITCAST [[UV8]](<2 x s16>) - ; CI-MESA: [[LSHR8:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST19]], [[C4]](s32) - ; CI-MESA: [[COPY22:%[0-9]+]]:_(s32) = COPY [[LOAD]](s32) - ; CI-MESA: [[AND19:%[0-9]+]]:_(s32) = G_AND [[COPY22]], [[C5]] - ; CI-MESA: [[COPY23:%[0-9]+]]:_(s32) = COPY [[LOAD1]](s32) - ; CI-MESA: [[AND20:%[0-9]+]]:_(s32) = G_AND [[COPY23]], [[C5]] - ; CI-MESA: [[SHL11:%[0-9]+]]:_(s32) = G_SHL [[AND20]], [[C4]](s32) - ; CI-MESA: [[OR11:%[0-9]+]]:_(s32) = G_OR [[AND19]], [[SHL11]] - ; CI-MESA: [[BITCAST20:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR11]](s32) - ; CI-MESA: [[COPY24:%[0-9]+]]:_(s32) = COPY [[LOAD2]](s32) - ; CI-MESA: [[AND21:%[0-9]+]]:_(s32) = G_AND [[COPY24]], [[C5]] - ; CI-MESA: [[COPY25:%[0-9]+]]:_(s32) = COPY [[LOAD3]](s32) - ; CI-MESA: [[AND22:%[0-9]+]]:_(s32) = G_AND [[COPY25]], [[C5]] - ; CI-MESA: [[SHL12:%[0-9]+]]:_(s32) = G_SHL [[AND22]], [[C4]](s32) - ; CI-MESA: [[OR12:%[0-9]+]]:_(s32) = G_OR [[AND21]], [[SHL12]] - ; CI-MESA: [[BITCAST21:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR12]](s32) - ; CI-MESA: [[COPY26:%[0-9]+]]:_(s32) = COPY [[LOAD4]](s32) - ; CI-MESA: [[AND23:%[0-9]+]]:_(s32) = G_AND [[COPY26]], [[C5]] - ; CI-MESA: [[COPY27:%[0-9]+]]:_(s32) = COPY [[LOAD5]](s32) - ; CI-MESA: [[AND24:%[0-9]+]]:_(s32) = G_AND [[COPY27]], [[C5]] - ; CI-MESA: [[SHL13:%[0-9]+]]:_(s32) = G_SHL [[AND24]], [[C4]](s32) - ; CI-MESA: [[OR13:%[0-9]+]]:_(s32) = G_OR [[AND23]], [[SHL13]] - ; CI-MESA: [[BITCAST22:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR13]](s32) - ; CI-MESA: [[COPY28:%[0-9]+]]:_(s32) = COPY [[LOAD6]](s32) - ; CI-MESA: [[AND25:%[0-9]+]]:_(s32) = G_AND [[COPY28]], [[C5]] - ; CI-MESA: [[COPY29:%[0-9]+]]:_(s32) = COPY [[BITCAST19]](s32) - ; CI-MESA: [[AND26:%[0-9]+]]:_(s32) = G_AND [[COPY29]], [[C5]] - ; CI-MESA: [[SHL14:%[0-9]+]]:_(s32) = G_SHL [[AND26]], [[C4]](s32) - ; CI-MESA: [[OR14:%[0-9]+]]:_(s32) = G_OR [[AND25]], [[SHL14]] - ; CI-MESA: [[BITCAST23:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR14]](s32) - ; CI-MESA: $vgpr0 = COPY [[BITCAST20]](<2 x s16>) - ; CI-MESA: $vgpr1 = COPY [[BITCAST21]](<2 x s16>) - ; CI-MESA: $vgpr2 = COPY [[BITCAST22]](<2 x s16>) - ; CI-MESA: $vgpr3 = COPY [[BITCAST23]](<2 x s16>) + ; CI-MESA: [[BITCAST4:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR3]](s32) + ; CI-MESA: $vgpr0 = COPY [[BITCAST1]](<2 x s16>) + ; CI-MESA: $vgpr1 = COPY [[BITCAST2]](<2 x s16>) + ; CI-MESA: $vgpr2 = COPY [[BITCAST3]](<2 x s16>) + ; CI-MESA: $vgpr3 = COPY [[BITCAST4]](<2 x s16>) ; VI-LABEL: name: test_load_global_v7s16_align2 ; VI: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 ; VI: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[COPY]](p1) :: (load (s16), addrspace 1) @@ -10080,30 +9886,14 @@ ; VI: [[LOAD5:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD4]](p1) :: (load (s16) from unknown-address + 10, addrspace 1) ; VI: [[PTR_ADD5:%[0-9]+]]:_(p1) = G_PTR_ADD [[PTR_ADD3]], [[C1]](s64) ; VI: [[LOAD6:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD5]](p1) :: (load (s16) from unknown-address + 12, addrspace 1) - ; VI: [[DEF:%[0-9]+]]:_(<2 x s16>) = G_IMPLICIT_DEF - ; VI: [[DEF1:%[0-9]+]]:_(<4 x s16>) = G_IMPLICIT_DEF - ; VI: [[DEF2:%[0-9]+]]:_(<4 x s16>) = G_IMPLICIT_DEF - ; VI: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[DEF1]](<4 x s16>) + ; VI: [[DEF:%[0-9]+]]:_(s16) = G_IMPLICIT_DEF + ; VI: [[DEF1:%[0-9]+]]:_(<2 x s16>) = G_IMPLICIT_DEF + ; VI: [[DEF2:%[0-9]+]]:_(<8 x s16>) = G_IMPLICIT_DEF + ; VI: [[DEF3:%[0-9]+]]:_(<8 x s16>) = G_IMPLICIT_DEF + ; VI: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>), [[UV2:%[0-9]+]]:_(<2 x s16>), [[UV3:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[DEF2]](<8 x s16>) ; VI: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[UV]](<2 x s16>) ; VI: [[C4:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 ; VI: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST]], [[C4]](s32) - ; VI: [[BITCAST1:%[0-9]+]]:_(s32) = G_BITCAST [[UV1]](<2 x s16>) - ; VI: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST1]], [[C4]](s32) - ; VI: [[UV2:%[0-9]+]]:_(<2 x s16>), [[UV3:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[DEF1]](<4 x s16>) - ; VI: [[BITCAST2:%[0-9]+]]:_(s32) = G_BITCAST [[UV2]](<2 x s16>) - ; VI: [[LSHR2:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST2]], [[C4]](s32) - ; VI: [[BITCAST3:%[0-9]+]]:_(s32) = G_BITCAST [[UV3]](<2 x s16>) - ; VI: [[LSHR3:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST3]], [[C4]](s32) - ; VI: [[UV4:%[0-9]+]]:_(<2 x s16>), [[UV5:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[DEF1]](<4 x s16>) - ; VI: [[BITCAST4:%[0-9]+]]:_(s32) = G_BITCAST [[UV4]](<2 x s16>) - ; VI: [[LSHR4:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST4]], [[C4]](s32) - ; VI: [[BITCAST5:%[0-9]+]]:_(s32) = G_BITCAST [[UV5]](<2 x s16>) - ; VI: [[LSHR5:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST5]], [[C4]](s32) - ; VI: [[UV6:%[0-9]+]]:_(<2 x s16>), [[UV7:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[DEF1]](<4 x s16>) - ; VI: [[BITCAST6:%[0-9]+]]:_(s32) = G_BITCAST [[UV6]](<2 x s16>) - ; VI: [[LSHR6:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST6]], [[C4]](s32) - ; VI: [[BITCAST7:%[0-9]+]]:_(s32) = G_BITCAST [[UV7]](<2 x s16>) - ; VI: [[LSHR7:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST7]], [[C4]](s32) ; VI: [[C5:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535 ; VI: [[COPY1:%[0-9]+]]:_(s32) = COPY [[LOAD]](s32) ; VI: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C5]] @@ -10111,113 +9901,32 @@ ; VI: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY2]], [[C5]] ; VI: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND1]], [[C4]](s32) ; VI: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]] - ; VI: [[BITCAST8:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32) + ; VI: [[BITCAST1:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32) ; VI: [[COPY3:%[0-9]+]]:_(s32) = COPY [[LOAD2]](s32) ; VI: [[AND2:%[0-9]+]]:_(s32) = G_AND [[COPY3]], [[C5]] ; VI: [[COPY4:%[0-9]+]]:_(s32) = COPY [[LOAD3]](s32) ; VI: [[AND3:%[0-9]+]]:_(s32) = G_AND [[COPY4]], [[C5]] ; VI: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[AND3]], [[C4]](s32) ; VI: [[OR1:%[0-9]+]]:_(s32) = G_OR [[AND2]], [[SHL1]] - ; VI: [[BITCAST9:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR1]](s32) + ; VI: [[BITCAST2:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR1]](s32) ; VI: [[COPY5:%[0-9]+]]:_(s32) = COPY [[LOAD4]](s32) ; VI: [[AND4:%[0-9]+]]:_(s32) = G_AND [[COPY5]], [[C5]] ; VI: [[COPY6:%[0-9]+]]:_(s32) = COPY [[LOAD5]](s32) ; VI: [[AND5:%[0-9]+]]:_(s32) = G_AND [[COPY6]], [[C5]] ; VI: [[SHL2:%[0-9]+]]:_(s32) = G_SHL [[AND5]], [[C4]](s32) ; VI: [[OR2:%[0-9]+]]:_(s32) = G_OR [[AND4]], [[SHL2]] - ; VI: [[BITCAST10:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR2]](s32) + ; VI: [[BITCAST3:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR2]](s32) ; VI: [[COPY7:%[0-9]+]]:_(s32) = COPY [[LOAD6]](s32) ; VI: [[AND6:%[0-9]+]]:_(s32) = G_AND [[COPY7]], [[C5]] - ; VI: [[C6:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 - ; VI: [[COPY8:%[0-9]+]]:_(s32) = COPY [[C6]](s32) - ; VI: [[SHL3:%[0-9]+]]:_(s32) = G_SHL [[COPY8]], [[C4]](s32) + ; VI: [[COPY8:%[0-9]+]]:_(s32) = COPY [[BITCAST]](s32) + ; VI: [[AND7:%[0-9]+]]:_(s32) = G_AND [[COPY8]], [[C5]] + ; VI: [[SHL3:%[0-9]+]]:_(s32) = G_SHL [[AND7]], [[C4]](s32) ; VI: [[OR3:%[0-9]+]]:_(s32) = G_OR [[AND6]], [[SHL3]] - ; VI: [[BITCAST11:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR3]](s32) - ; VI: [[COPY9:%[0-9]+]]:_(s32) = COPY [[C6]](s32) - ; VI: [[COPY10:%[0-9]+]]:_(s32) = COPY [[BITCAST]](s32) - ; VI: [[AND7:%[0-9]+]]:_(s32) = G_AND [[COPY10]], [[C5]] - ; VI: [[SHL4:%[0-9]+]]:_(s32) = G_SHL [[AND7]], [[C4]](s32) - ; VI: [[OR4:%[0-9]+]]:_(s32) = G_OR [[COPY9]], [[SHL4]] - ; VI: [[BITCAST12:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR4]](s32) - ; VI: [[COPY11:%[0-9]+]]:_(s32) = COPY [[LSHR]](s32) - ; VI: [[AND8:%[0-9]+]]:_(s32) = G_AND [[COPY11]], [[C5]] - ; VI: [[COPY12:%[0-9]+]]:_(s32) = COPY [[BITCAST1]](s32) - ; VI: [[AND9:%[0-9]+]]:_(s32) = G_AND [[COPY12]], [[C5]] - ; VI: [[SHL5:%[0-9]+]]:_(s32) = G_SHL [[AND9]], [[C4]](s32) - ; VI: [[OR5:%[0-9]+]]:_(s32) = G_OR [[AND8]], [[SHL5]] - ; VI: [[BITCAST13:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR5]](s32) - ; VI: [[COPY13:%[0-9]+]]:_(s32) = COPY [[BITCAST2]](s32) - ; VI: [[AND10:%[0-9]+]]:_(s32) = G_AND [[COPY13]], [[C5]] - ; VI: [[COPY14:%[0-9]+]]:_(s32) = COPY [[LSHR2]](s32) - ; VI: [[AND11:%[0-9]+]]:_(s32) = G_AND [[COPY14]], [[C5]] - ; VI: [[SHL6:%[0-9]+]]:_(s32) = G_SHL [[AND11]], [[C4]](s32) - ; VI: [[OR6:%[0-9]+]]:_(s32) = G_OR [[AND10]], [[SHL6]] - ; VI: [[BITCAST14:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR6]](s32) - ; VI: [[COPY15:%[0-9]+]]:_(s32) = COPY [[BITCAST3]](s32) - ; VI: [[AND12:%[0-9]+]]:_(s32) = G_AND [[COPY15]], [[C5]] - ; VI: [[COPY16:%[0-9]+]]:_(s32) = COPY [[BITCAST4]](s32) - ; VI: [[AND13:%[0-9]+]]:_(s32) = G_AND [[COPY16]], [[C5]] - ; VI: [[SHL7:%[0-9]+]]:_(s32) = G_SHL [[AND13]], [[C4]](s32) - ; VI: [[OR7:%[0-9]+]]:_(s32) = G_OR [[AND12]], [[SHL7]] - ; VI: [[BITCAST15:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR7]](s32) - ; VI: [[COPY17:%[0-9]+]]:_(s32) = COPY [[LSHR4]](s32) - ; VI: [[AND14:%[0-9]+]]:_(s32) = G_AND [[COPY17]], [[C5]] - ; VI: [[COPY18:%[0-9]+]]:_(s32) = COPY [[BITCAST5]](s32) - ; VI: [[AND15:%[0-9]+]]:_(s32) = G_AND [[COPY18]], [[C5]] - ; VI: [[SHL8:%[0-9]+]]:_(s32) = G_SHL [[AND15]], [[C4]](s32) - ; VI: [[OR8:%[0-9]+]]:_(s32) = G_OR [[AND14]], [[SHL8]] - ; VI: [[BITCAST16:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR8]](s32) - ; VI: [[COPY19:%[0-9]+]]:_(s32) = COPY [[BITCAST6]](s32) - ; VI: [[AND16:%[0-9]+]]:_(s32) = G_AND [[COPY19]], [[C5]] - ; VI: [[COPY20:%[0-9]+]]:_(s32) = COPY [[LSHR6]](s32) - ; VI: [[AND17:%[0-9]+]]:_(s32) = G_AND [[COPY20]], [[C5]] - ; VI: [[SHL9:%[0-9]+]]:_(s32) = G_SHL [[AND17]], [[C4]](s32) - ; VI: [[OR9:%[0-9]+]]:_(s32) = G_OR [[AND16]], [[SHL9]] - ; VI: [[BITCAST17:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR9]](s32) - ; VI: [[COPY21:%[0-9]+]]:_(s32) = COPY [[BITCAST7]](s32) - ; VI: [[AND18:%[0-9]+]]:_(s32) = G_AND [[COPY21]], [[C5]] - ; VI: [[SHL10:%[0-9]+]]:_(s32) = G_SHL [[C6]], [[C4]](s32) - ; VI: [[OR10:%[0-9]+]]:_(s32) = G_OR [[AND18]], [[SHL10]] - ; VI: [[BITCAST18:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR10]](s32) - ; VI: [[CONCAT_VECTORS:%[0-9]+]]:_(<42 x s16>) = G_CONCAT_VECTORS [[BITCAST8]](<2 x s16>), [[BITCAST9]](<2 x s16>), [[BITCAST10]](<2 x s16>), [[BITCAST11]](<2 x s16>), [[BITCAST12]](<2 x s16>), [[BITCAST13]](<2 x s16>), [[BITCAST14]](<2 x s16>), [[BITCAST15]](<2 x s16>), [[BITCAST16]](<2 x s16>), [[BITCAST17]](<2 x s16>), [[BITCAST18]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>) - ; VI: [[DEF3:%[0-9]+]]:_(<22 x s16>) = G_IMPLICIT_DEF - ; VI: [[DEF4:%[0-9]+]]:_(<8 x s16>) = G_IMPLICIT_DEF - ; VI: [[DEF5:%[0-9]+]]:_(<8 x s16>) = G_IMPLICIT_DEF - ; VI: [[UV8:%[0-9]+]]:_(<2 x s16>), [[UV9:%[0-9]+]]:_(<2 x s16>), [[UV10:%[0-9]+]]:_(<2 x s16>), [[UV11:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[DEF4]](<8 x s16>) - ; VI: [[BITCAST19:%[0-9]+]]:_(s32) = G_BITCAST [[UV8]](<2 x s16>) - ; VI: [[LSHR8:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST19]], [[C4]](s32) - ; VI: [[COPY22:%[0-9]+]]:_(s32) = COPY [[LOAD]](s32) - ; VI: [[AND19:%[0-9]+]]:_(s32) = G_AND [[COPY22]], [[C5]] - ; VI: [[COPY23:%[0-9]+]]:_(s32) = COPY [[LOAD1]](s32) - ; VI: [[AND20:%[0-9]+]]:_(s32) = G_AND [[COPY23]], [[C5]] - ; VI: [[SHL11:%[0-9]+]]:_(s32) = G_SHL [[AND20]], [[C4]](s32) - ; VI: [[OR11:%[0-9]+]]:_(s32) = G_OR [[AND19]], [[SHL11]] - ; VI: [[BITCAST20:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR11]](s32) - ; VI: [[COPY24:%[0-9]+]]:_(s32) = COPY [[LOAD2]](s32) - ; VI: [[AND21:%[0-9]+]]:_(s32) = G_AND [[COPY24]], [[C5]] - ; VI: [[COPY25:%[0-9]+]]:_(s32) = COPY [[LOAD3]](s32) - ; VI: [[AND22:%[0-9]+]]:_(s32) = G_AND [[COPY25]], [[C5]] - ; VI: [[SHL12:%[0-9]+]]:_(s32) = G_SHL [[AND22]], [[C4]](s32) - ; VI: [[OR12:%[0-9]+]]:_(s32) = G_OR [[AND21]], [[SHL12]] - ; VI: [[BITCAST21:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR12]](s32) - ; VI: [[COPY26:%[0-9]+]]:_(s32) = COPY [[LOAD4]](s32) - ; VI: [[AND23:%[0-9]+]]:_(s32) = G_AND [[COPY26]], [[C5]] - ; VI: [[COPY27:%[0-9]+]]:_(s32) = COPY [[LOAD5]](s32) - ; VI: [[AND24:%[0-9]+]]:_(s32) = G_AND [[COPY27]], [[C5]] - ; VI: [[SHL13:%[0-9]+]]:_(s32) = G_SHL [[AND24]], [[C4]](s32) - ; VI: [[OR13:%[0-9]+]]:_(s32) = G_OR [[AND23]], [[SHL13]] - ; VI: [[BITCAST22:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR13]](s32) - ; VI: [[COPY28:%[0-9]+]]:_(s32) = COPY [[LOAD6]](s32) - ; VI: [[AND25:%[0-9]+]]:_(s32) = G_AND [[COPY28]], [[C5]] - ; VI: [[COPY29:%[0-9]+]]:_(s32) = COPY [[BITCAST19]](s32) - ; VI: [[AND26:%[0-9]+]]:_(s32) = G_AND [[COPY29]], [[C5]] - ; VI: [[SHL14:%[0-9]+]]:_(s32) = G_SHL [[AND26]], [[C4]](s32) - ; VI: [[OR14:%[0-9]+]]:_(s32) = G_OR [[AND25]], [[SHL14]] - ; VI: [[BITCAST23:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR14]](s32) - ; VI: $vgpr0 = COPY [[BITCAST20]](<2 x s16>) - ; VI: $vgpr1 = COPY [[BITCAST21]](<2 x s16>) - ; VI: $vgpr2 = COPY [[BITCAST22]](<2 x s16>) - ; VI: $vgpr3 = COPY [[BITCAST23]](<2 x s16>) + ; VI: [[BITCAST4:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR3]](s32) + ; VI: $vgpr0 = COPY [[BITCAST1]](<2 x s16>) + ; VI: $vgpr1 = COPY [[BITCAST2]](<2 x s16>) + ; VI: $vgpr2 = COPY [[BITCAST3]](<2 x s16>) + ; VI: $vgpr3 = COPY [[BITCAST4]](<2 x s16>) ; GFX9-HSA-LABEL: name: test_load_global_v7s16_align2 ; GFX9-HSA: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 ; GFX9-HSA: [[LOAD:%[0-9]+]]:_(<7 x s16>) = G_LOAD [[COPY]](p1) :: (load (<7 x s16>), align 2, addrspace 1) @@ -10250,30 +9959,14 @@ ; GFX9-MESA: [[LOAD5:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD4]](p1) :: (load (s16) from unknown-address + 10, addrspace 1) ; GFX9-MESA: [[PTR_ADD5:%[0-9]+]]:_(p1) = G_PTR_ADD [[PTR_ADD3]], [[C1]](s64) ; GFX9-MESA: [[LOAD6:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD5]](p1) :: (load (s16) from unknown-address + 12, addrspace 1) - ; GFX9-MESA: [[DEF:%[0-9]+]]:_(<2 x s16>) = G_IMPLICIT_DEF - ; GFX9-MESA: [[DEF1:%[0-9]+]]:_(<4 x s16>) = G_IMPLICIT_DEF - ; GFX9-MESA: [[DEF2:%[0-9]+]]:_(<4 x s16>) = G_IMPLICIT_DEF - ; GFX9-MESA: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[DEF1]](<4 x s16>) + ; GFX9-MESA: [[DEF:%[0-9]+]]:_(s16) = G_IMPLICIT_DEF + ; GFX9-MESA: [[DEF1:%[0-9]+]]:_(<2 x s16>) = G_IMPLICIT_DEF + ; GFX9-MESA: [[DEF2:%[0-9]+]]:_(<8 x s16>) = G_IMPLICIT_DEF + ; GFX9-MESA: [[DEF3:%[0-9]+]]:_(<8 x s16>) = G_IMPLICIT_DEF + ; GFX9-MESA: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>), [[UV2:%[0-9]+]]:_(<2 x s16>), [[UV3:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[DEF2]](<8 x s16>) ; GFX9-MESA: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[UV]](<2 x s16>) ; GFX9-MESA: [[C4:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 ; GFX9-MESA: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST]], [[C4]](s32) - ; GFX9-MESA: [[BITCAST1:%[0-9]+]]:_(s32) = G_BITCAST [[UV1]](<2 x s16>) - ; GFX9-MESA: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST1]], [[C4]](s32) - ; GFX9-MESA: [[UV2:%[0-9]+]]:_(<2 x s16>), [[UV3:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[DEF1]](<4 x s16>) - ; GFX9-MESA: [[BITCAST2:%[0-9]+]]:_(s32) = G_BITCAST [[UV2]](<2 x s16>) - ; GFX9-MESA: [[LSHR2:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST2]], [[C4]](s32) - ; GFX9-MESA: [[BITCAST3:%[0-9]+]]:_(s32) = G_BITCAST [[UV3]](<2 x s16>) - ; GFX9-MESA: [[LSHR3:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST3]], [[C4]](s32) - ; GFX9-MESA: [[UV4:%[0-9]+]]:_(<2 x s16>), [[UV5:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[DEF1]](<4 x s16>) - ; GFX9-MESA: [[BITCAST4:%[0-9]+]]:_(s32) = G_BITCAST [[UV4]](<2 x s16>) - ; GFX9-MESA: [[LSHR4:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST4]], [[C4]](s32) - ; GFX9-MESA: [[BITCAST5:%[0-9]+]]:_(s32) = G_BITCAST [[UV5]](<2 x s16>) - ; GFX9-MESA: [[LSHR5:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST5]], [[C4]](s32) - ; GFX9-MESA: [[UV6:%[0-9]+]]:_(<2 x s16>), [[UV7:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[DEF1]](<4 x s16>) - ; GFX9-MESA: [[BITCAST6:%[0-9]+]]:_(s32) = G_BITCAST [[UV6]](<2 x s16>) - ; GFX9-MESA: [[LSHR6:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST6]], [[C4]](s32) - ; GFX9-MESA: [[BITCAST7:%[0-9]+]]:_(s32) = G_BITCAST [[UV7]](<2 x s16>) - ; GFX9-MESA: [[LSHR7:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST7]], [[C4]](s32) ; GFX9-MESA: [[COPY1:%[0-9]+]]:_(s32) = COPY [[LOAD]](s32) ; GFX9-MESA: [[COPY2:%[0-9]+]]:_(s32) = COPY [[LOAD1]](s32) ; GFX9-MESA: [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY1]](s32), [[COPY2]](s32) @@ -10284,52 +9977,12 @@ ; GFX9-MESA: [[COPY6:%[0-9]+]]:_(s32) = COPY [[LOAD5]](s32) ; GFX9-MESA: [[BUILD_VECTOR_TRUNC2:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY5]](s32), [[COPY6]](s32) ; GFX9-MESA: [[COPY7:%[0-9]+]]:_(s32) = COPY [[LOAD6]](s32) - ; GFX9-MESA: [[DEF3:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF - ; GFX9-MESA: [[COPY8:%[0-9]+]]:_(s32) = COPY [[DEF3]](s32) + ; GFX9-MESA: [[COPY8:%[0-9]+]]:_(s32) = COPY [[BITCAST]](s32) ; GFX9-MESA: [[BUILD_VECTOR_TRUNC3:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY7]](s32), [[COPY8]](s32) - ; GFX9-MESA: [[COPY9:%[0-9]+]]:_(s32) = COPY [[DEF3]](s32) - ; GFX9-MESA: [[COPY10:%[0-9]+]]:_(s32) = COPY [[BITCAST]](s32) - ; GFX9-MESA: [[BUILD_VECTOR_TRUNC4:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY9]](s32), [[COPY10]](s32) - ; GFX9-MESA: [[COPY11:%[0-9]+]]:_(s32) = COPY [[LSHR]](s32) - ; GFX9-MESA: [[COPY12:%[0-9]+]]:_(s32) = COPY [[BITCAST1]](s32) - ; GFX9-MESA: [[BUILD_VECTOR_TRUNC5:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY11]](s32), [[COPY12]](s32) - ; GFX9-MESA: [[COPY13:%[0-9]+]]:_(s32) = COPY [[BITCAST2]](s32) - ; GFX9-MESA: [[COPY14:%[0-9]+]]:_(s32) = COPY [[LSHR2]](s32) - ; GFX9-MESA: [[BUILD_VECTOR_TRUNC6:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY13]](s32), [[COPY14]](s32) - ; GFX9-MESA: [[COPY15:%[0-9]+]]:_(s32) = COPY [[BITCAST3]](s32) - ; GFX9-MESA: [[COPY16:%[0-9]+]]:_(s32) = COPY [[BITCAST4]](s32) - ; GFX9-MESA: [[BUILD_VECTOR_TRUNC7:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY15]](s32), [[COPY16]](s32) - ; GFX9-MESA: [[COPY17:%[0-9]+]]:_(s32) = COPY [[LSHR4]](s32) - ; GFX9-MESA: [[COPY18:%[0-9]+]]:_(s32) = COPY [[BITCAST5]](s32) - ; GFX9-MESA: [[BUILD_VECTOR_TRUNC8:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY17]](s32), [[COPY18]](s32) - ; GFX9-MESA: [[COPY19:%[0-9]+]]:_(s32) = COPY [[BITCAST6]](s32) - ; GFX9-MESA: [[COPY20:%[0-9]+]]:_(s32) = COPY [[LSHR6]](s32) - ; GFX9-MESA: [[BUILD_VECTOR_TRUNC9:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY19]](s32), [[COPY20]](s32) - ; GFX9-MESA: [[COPY21:%[0-9]+]]:_(s32) = COPY [[BITCAST7]](s32) - ; GFX9-MESA: [[BUILD_VECTOR_TRUNC10:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY21]](s32), [[DEF3]](s32) - ; GFX9-MESA: [[CONCAT_VECTORS:%[0-9]+]]:_(<42 x s16>) = G_CONCAT_VECTORS [[BUILD_VECTOR_TRUNC]](<2 x s16>), [[BUILD_VECTOR_TRUNC1]](<2 x s16>), [[BUILD_VECTOR_TRUNC2]](<2 x s16>), [[BUILD_VECTOR_TRUNC3]](<2 x s16>), [[BUILD_VECTOR_TRUNC4]](<2 x s16>), [[BUILD_VECTOR_TRUNC5]](<2 x s16>), [[BUILD_VECTOR_TRUNC6]](<2 x s16>), [[BUILD_VECTOR_TRUNC7]](<2 x s16>), [[BUILD_VECTOR_TRUNC8]](<2 x s16>), [[BUILD_VECTOR_TRUNC9]](<2 x s16>), [[BUILD_VECTOR_TRUNC10]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>) - ; GFX9-MESA: [[DEF4:%[0-9]+]]:_(<22 x s16>) = G_IMPLICIT_DEF - ; GFX9-MESA: [[DEF5:%[0-9]+]]:_(<8 x s16>) = G_IMPLICIT_DEF - ; GFX9-MESA: [[DEF6:%[0-9]+]]:_(<8 x s16>) = G_IMPLICIT_DEF - ; GFX9-MESA: [[UV8:%[0-9]+]]:_(<2 x s16>), [[UV9:%[0-9]+]]:_(<2 x s16>), [[UV10:%[0-9]+]]:_(<2 x s16>), [[UV11:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[DEF5]](<8 x s16>) - ; GFX9-MESA: [[BITCAST8:%[0-9]+]]:_(s32) = G_BITCAST [[UV8]](<2 x s16>) - ; GFX9-MESA: [[LSHR8:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST8]], [[C4]](s32) - ; GFX9-MESA: [[COPY22:%[0-9]+]]:_(s32) = COPY [[LOAD]](s32) - ; GFX9-MESA: [[COPY23:%[0-9]+]]:_(s32) = COPY [[LOAD1]](s32) - ; GFX9-MESA: [[BUILD_VECTOR_TRUNC11:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY22]](s32), [[COPY23]](s32) - ; GFX9-MESA: [[COPY24:%[0-9]+]]:_(s32) = COPY [[LOAD2]](s32) - ; GFX9-MESA: [[COPY25:%[0-9]+]]:_(s32) = COPY [[LOAD3]](s32) - ; GFX9-MESA: [[BUILD_VECTOR_TRUNC12:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY24]](s32), [[COPY25]](s32) - ; GFX9-MESA: [[COPY26:%[0-9]+]]:_(s32) = COPY [[LOAD4]](s32) - ; GFX9-MESA: [[COPY27:%[0-9]+]]:_(s32) = COPY [[LOAD5]](s32) - ; GFX9-MESA: [[BUILD_VECTOR_TRUNC13:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY26]](s32), [[COPY27]](s32) - ; GFX9-MESA: [[COPY28:%[0-9]+]]:_(s32) = COPY [[LOAD6]](s32) - ; GFX9-MESA: [[COPY29:%[0-9]+]]:_(s32) = COPY [[BITCAST8]](s32) - ; GFX9-MESA: [[BUILD_VECTOR_TRUNC14:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY28]](s32), [[COPY29]](s32) - ; GFX9-MESA: $vgpr0 = COPY [[BUILD_VECTOR_TRUNC11]](<2 x s16>) - ; GFX9-MESA: $vgpr1 = COPY [[BUILD_VECTOR_TRUNC12]](<2 x s16>) - ; GFX9-MESA: $vgpr2 = COPY [[BUILD_VECTOR_TRUNC13]](<2 x s16>) - ; GFX9-MESA: $vgpr3 = COPY [[BUILD_VECTOR_TRUNC14]](<2 x s16>) + ; GFX9-MESA: $vgpr0 = COPY [[BUILD_VECTOR_TRUNC]](<2 x s16>) + ; GFX9-MESA: $vgpr1 = COPY [[BUILD_VECTOR_TRUNC1]](<2 x s16>) + ; GFX9-MESA: $vgpr2 = COPY [[BUILD_VECTOR_TRUNC2]](<2 x s16>) + ; GFX9-MESA: $vgpr3 = COPY [[BUILD_VECTOR_TRUNC3]](<2 x s16>) %0:_(p1) = COPY $vgpr0_vgpr1 %1:_(<7 x s16>) = G_LOAD %0 :: (load (<7 x s16>), align 2, addrspace 1) %2:_(<7 x s16>) = G_IMPLICIT_DEF @@ -10439,130 +10092,40 @@ ; SI: [[SHL6:%[0-9]+]]:_(s32) = G_SHL [[AND13]], [[COPY12]](s32) ; SI: [[TRUNC13:%[0-9]+]]:_(s16) = G_TRUNC [[SHL6]](s32) ; SI: [[OR6:%[0-9]+]]:_(s16) = G_OR [[AND12]], [[TRUNC13]] - ; SI: [[DEF:%[0-9]+]]:_(<2 x s16>) = G_IMPLICIT_DEF - ; SI: [[DEF1:%[0-9]+]]:_(<4 x s16>) = G_IMPLICIT_DEF - ; SI: [[DEF2:%[0-9]+]]:_(<4 x s16>) = G_IMPLICIT_DEF - ; SI: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[DEF1]](<4 x s16>) + ; SI: [[DEF:%[0-9]+]]:_(s16) = G_IMPLICIT_DEF + ; SI: [[DEF1:%[0-9]+]]:_(<2 x s16>) = G_IMPLICIT_DEF + ; SI: [[DEF2:%[0-9]+]]:_(<8 x s16>) = G_IMPLICIT_DEF + ; SI: [[DEF3:%[0-9]+]]:_(<8 x s16>) = G_IMPLICIT_DEF + ; SI: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>), [[UV2:%[0-9]+]]:_(<2 x s16>), [[UV3:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[DEF2]](<8 x s16>) ; SI: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[UV]](<2 x s16>) ; SI: [[C7:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 ; SI: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST]], [[C7]](s32) - ; SI: [[BITCAST1:%[0-9]+]]:_(s32) = G_BITCAST [[UV1]](<2 x s16>) - ; SI: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST1]], [[C7]](s32) - ; SI: [[UV2:%[0-9]+]]:_(<2 x s16>), [[UV3:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[DEF1]](<4 x s16>) - ; SI: [[BITCAST2:%[0-9]+]]:_(s32) = G_BITCAST [[UV2]](<2 x s16>) - ; SI: [[LSHR2:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST2]], [[C7]](s32) - ; SI: [[BITCAST3:%[0-9]+]]:_(s32) = G_BITCAST [[UV3]](<2 x s16>) - ; SI: [[LSHR3:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST3]], [[C7]](s32) - ; SI: [[UV4:%[0-9]+]]:_(<2 x s16>), [[UV5:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[DEF1]](<4 x s16>) - ; SI: [[BITCAST4:%[0-9]+]]:_(s32) = G_BITCAST [[UV4]](<2 x s16>) - ; SI: [[LSHR4:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST4]], [[C7]](s32) - ; SI: [[BITCAST5:%[0-9]+]]:_(s32) = G_BITCAST [[UV5]](<2 x s16>) - ; SI: [[LSHR5:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST5]], [[C7]](s32) - ; SI: [[UV6:%[0-9]+]]:_(<2 x s16>), [[UV7:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[DEF1]](<4 x s16>) - ; SI: [[BITCAST6:%[0-9]+]]:_(s32) = G_BITCAST [[UV6]](<2 x s16>) - ; SI: [[LSHR6:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST6]], [[C7]](s32) - ; SI: [[BITCAST7:%[0-9]+]]:_(s32) = G_BITCAST [[UV7]](<2 x s16>) - ; SI: [[LSHR7:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST7]], [[C7]](s32) ; SI: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[OR]](s16) ; SI: [[ZEXT1:%[0-9]+]]:_(s32) = G_ZEXT [[OR1]](s16) ; SI: [[SHL7:%[0-9]+]]:_(s32) = G_SHL [[ZEXT1]], [[C7]](s32) ; SI: [[OR7:%[0-9]+]]:_(s32) = G_OR [[ZEXT]], [[SHL7]] - ; SI: [[BITCAST8:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR7]](s32) + ; SI: [[BITCAST1:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR7]](s32) ; SI: [[ZEXT2:%[0-9]+]]:_(s32) = G_ZEXT [[OR2]](s16) ; SI: [[ZEXT3:%[0-9]+]]:_(s32) = G_ZEXT [[OR3]](s16) ; SI: [[SHL8:%[0-9]+]]:_(s32) = G_SHL [[ZEXT3]], [[C7]](s32) ; SI: [[OR8:%[0-9]+]]:_(s32) = G_OR [[ZEXT2]], [[SHL8]] - ; SI: [[BITCAST9:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR8]](s32) + ; SI: [[BITCAST2:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR8]](s32) ; SI: [[ZEXT4:%[0-9]+]]:_(s32) = G_ZEXT [[OR4]](s16) ; SI: [[ZEXT5:%[0-9]+]]:_(s32) = G_ZEXT [[OR5]](s16) ; SI: [[SHL9:%[0-9]+]]:_(s32) = G_SHL [[ZEXT5]], [[C7]](s32) ; SI: [[OR9:%[0-9]+]]:_(s32) = G_OR [[ZEXT4]], [[SHL9]] - ; SI: [[BITCAST10:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR9]](s32) + ; SI: [[BITCAST3:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR9]](s32) ; SI: [[ZEXT6:%[0-9]+]]:_(s32) = G_ZEXT [[OR6]](s16) - ; SI: [[C8:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 - ; SI: [[COPY14:%[0-9]+]]:_(s32) = COPY [[C8]](s32) - ; SI: [[SHL10:%[0-9]+]]:_(s32) = G_SHL [[COPY14]], [[C7]](s32) + ; SI: [[C8:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535 + ; SI: [[COPY14:%[0-9]+]]:_(s32) = COPY [[BITCAST]](s32) + ; SI: [[AND14:%[0-9]+]]:_(s32) = G_AND [[COPY14]], [[C8]] + ; SI: [[SHL10:%[0-9]+]]:_(s32) = G_SHL [[AND14]], [[C7]](s32) ; SI: [[OR10:%[0-9]+]]:_(s32) = G_OR [[ZEXT6]], [[SHL10]] - ; SI: [[BITCAST11:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR10]](s32) - ; SI: [[COPY15:%[0-9]+]]:_(s32) = COPY [[C8]](s32) - ; SI: [[C9:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535 - ; SI: [[COPY16:%[0-9]+]]:_(s32) = COPY [[BITCAST]](s32) - ; SI: [[AND14:%[0-9]+]]:_(s32) = G_AND [[COPY16]], [[C9]] - ; SI: [[SHL11:%[0-9]+]]:_(s32) = G_SHL [[AND14]], [[C7]](s32) - ; SI: [[OR11:%[0-9]+]]:_(s32) = G_OR [[COPY15]], [[SHL11]] - ; SI: [[BITCAST12:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR11]](s32) - ; SI: [[COPY17:%[0-9]+]]:_(s32) = COPY [[LSHR]](s32) - ; SI: [[AND15:%[0-9]+]]:_(s32) = G_AND [[COPY17]], [[C9]] - ; SI: [[COPY18:%[0-9]+]]:_(s32) = COPY [[BITCAST1]](s32) - ; SI: [[AND16:%[0-9]+]]:_(s32) = G_AND [[COPY18]], [[C9]] - ; SI: [[SHL12:%[0-9]+]]:_(s32) = G_SHL [[AND16]], [[C7]](s32) - ; SI: [[OR12:%[0-9]+]]:_(s32) = G_OR [[AND15]], [[SHL12]] - ; SI: [[BITCAST13:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR12]](s32) - ; SI: [[COPY19:%[0-9]+]]:_(s32) = COPY [[BITCAST2]](s32) - ; SI: [[AND17:%[0-9]+]]:_(s32) = G_AND [[COPY19]], [[C9]] - ; SI: [[COPY20:%[0-9]+]]:_(s32) = COPY [[LSHR2]](s32) - ; SI: [[AND18:%[0-9]+]]:_(s32) = G_AND [[COPY20]], [[C9]] - ; SI: [[SHL13:%[0-9]+]]:_(s32) = G_SHL [[AND18]], [[C7]](s32) - ; SI: [[OR13:%[0-9]+]]:_(s32) = G_OR [[AND17]], [[SHL13]] - ; SI: [[BITCAST14:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR13]](s32) - ; SI: [[COPY21:%[0-9]+]]:_(s32) = COPY [[BITCAST3]](s32) - ; SI: [[AND19:%[0-9]+]]:_(s32) = G_AND [[COPY21]], [[C9]] - ; SI: [[COPY22:%[0-9]+]]:_(s32) = COPY [[BITCAST4]](s32) - ; SI: [[AND20:%[0-9]+]]:_(s32) = G_AND [[COPY22]], [[C9]] - ; SI: [[SHL14:%[0-9]+]]:_(s32) = G_SHL [[AND20]], [[C7]](s32) - ; SI: [[OR14:%[0-9]+]]:_(s32) = G_OR [[AND19]], [[SHL14]] - ; SI: [[BITCAST15:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR14]](s32) - ; SI: [[COPY23:%[0-9]+]]:_(s32) = COPY [[LSHR4]](s32) - ; SI: [[AND21:%[0-9]+]]:_(s32) = G_AND [[COPY23]], [[C9]] - ; SI: [[COPY24:%[0-9]+]]:_(s32) = COPY [[BITCAST5]](s32) - ; SI: [[AND22:%[0-9]+]]:_(s32) = G_AND [[COPY24]], [[C9]] - ; SI: [[SHL15:%[0-9]+]]:_(s32) = G_SHL [[AND22]], [[C7]](s32) - ; SI: [[OR15:%[0-9]+]]:_(s32) = G_OR [[AND21]], [[SHL15]] - ; SI: [[BITCAST16:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR15]](s32) - ; SI: [[COPY25:%[0-9]+]]:_(s32) = COPY [[BITCAST6]](s32) - ; SI: [[AND23:%[0-9]+]]:_(s32) = G_AND [[COPY25]], [[C9]] - ; SI: [[COPY26:%[0-9]+]]:_(s32) = COPY [[LSHR6]](s32) - ; SI: [[AND24:%[0-9]+]]:_(s32) = G_AND [[COPY26]], [[C9]] - ; SI: [[SHL16:%[0-9]+]]:_(s32) = G_SHL [[AND24]], [[C7]](s32) - ; SI: [[OR16:%[0-9]+]]:_(s32) = G_OR [[AND23]], [[SHL16]] - ; SI: [[BITCAST17:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR16]](s32) - ; SI: [[COPY27:%[0-9]+]]:_(s32) = COPY [[BITCAST7]](s32) - ; SI: [[AND25:%[0-9]+]]:_(s32) = G_AND [[COPY27]], [[C9]] - ; SI: [[SHL17:%[0-9]+]]:_(s32) = G_SHL [[C8]], [[C7]](s32) - ; SI: [[OR17:%[0-9]+]]:_(s32) = G_OR [[AND25]], [[SHL17]] - ; SI: [[BITCAST18:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR17]](s32) - ; SI: [[CONCAT_VECTORS:%[0-9]+]]:_(<42 x s16>) = G_CONCAT_VECTORS [[BITCAST8]](<2 x s16>), [[BITCAST9]](<2 x s16>), [[BITCAST10]](<2 x s16>), [[BITCAST11]](<2 x s16>), [[BITCAST12]](<2 x s16>), [[BITCAST13]](<2 x s16>), [[BITCAST14]](<2 x s16>), [[BITCAST15]](<2 x s16>), [[BITCAST16]](<2 x s16>), [[BITCAST17]](<2 x s16>), [[BITCAST18]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>) - ; SI: [[DEF3:%[0-9]+]]:_(<22 x s16>) = G_IMPLICIT_DEF - ; SI: [[DEF4:%[0-9]+]]:_(<8 x s16>) = G_IMPLICIT_DEF - ; SI: [[DEF5:%[0-9]+]]:_(<8 x s16>) = G_IMPLICIT_DEF - ; SI: [[UV8:%[0-9]+]]:_(<2 x s16>), [[UV9:%[0-9]+]]:_(<2 x s16>), [[UV10:%[0-9]+]]:_(<2 x s16>), [[UV11:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[DEF4]](<8 x s16>) - ; SI: [[BITCAST19:%[0-9]+]]:_(s32) = G_BITCAST [[UV8]](<2 x s16>) - ; SI: [[LSHR8:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST19]], [[C7]](s32) - ; SI: [[ZEXT7:%[0-9]+]]:_(s32) = G_ZEXT [[OR]](s16) - ; SI: [[ZEXT8:%[0-9]+]]:_(s32) = G_ZEXT [[OR1]](s16) - ; SI: [[SHL18:%[0-9]+]]:_(s32) = G_SHL [[ZEXT8]], [[C7]](s32) - ; SI: [[OR18:%[0-9]+]]:_(s32) = G_OR [[ZEXT7]], [[SHL18]] - ; SI: [[BITCAST20:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR18]](s32) - ; SI: [[ZEXT9:%[0-9]+]]:_(s32) = G_ZEXT [[OR2]](s16) - ; SI: [[ZEXT10:%[0-9]+]]:_(s32) = G_ZEXT [[OR3]](s16) - ; SI: [[SHL19:%[0-9]+]]:_(s32) = G_SHL [[ZEXT10]], [[C7]](s32) - ; SI: [[OR19:%[0-9]+]]:_(s32) = G_OR [[ZEXT9]], [[SHL19]] - ; SI: [[BITCAST21:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR19]](s32) - ; SI: [[ZEXT11:%[0-9]+]]:_(s32) = G_ZEXT [[OR4]](s16) - ; SI: [[ZEXT12:%[0-9]+]]:_(s32) = G_ZEXT [[OR5]](s16) - ; SI: [[SHL20:%[0-9]+]]:_(s32) = G_SHL [[ZEXT12]], [[C7]](s32) - ; SI: [[OR20:%[0-9]+]]:_(s32) = G_OR [[ZEXT11]], [[SHL20]] - ; SI: [[BITCAST22:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR20]](s32) - ; SI: [[ZEXT13:%[0-9]+]]:_(s32) = G_ZEXT [[OR6]](s16) - ; SI: [[COPY28:%[0-9]+]]:_(s32) = COPY [[BITCAST19]](s32) - ; SI: [[AND26:%[0-9]+]]:_(s32) = G_AND [[COPY28]], [[C9]] - ; SI: [[SHL21:%[0-9]+]]:_(s32) = G_SHL [[AND26]], [[C7]](s32) - ; SI: [[OR21:%[0-9]+]]:_(s32) = G_OR [[ZEXT13]], [[SHL21]] - ; SI: [[BITCAST23:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR21]](s32) - ; SI: $vgpr0 = COPY [[BITCAST20]](<2 x s16>) - ; SI: $vgpr1 = COPY [[BITCAST21]](<2 x s16>) - ; SI: $vgpr2 = COPY [[BITCAST22]](<2 x s16>) - ; SI: $vgpr3 = COPY [[BITCAST23]](<2 x s16>) + ; SI: [[BITCAST4:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR10]](s32) + ; SI: $vgpr0 = COPY [[BITCAST1]](<2 x s16>) + ; SI: $vgpr1 = COPY [[BITCAST2]](<2 x s16>) + ; SI: $vgpr2 = COPY [[BITCAST3]](<2 x s16>) + ; SI: $vgpr3 = COPY [[BITCAST4]](<2 x s16>) ; CI-HSA-LABEL: name: test_load_global_v7s16_align1 ; CI-HSA: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 ; CI-HSA: [[LOAD:%[0-9]+]]:_(<7 x s16>) = G_LOAD [[COPY]](p1) :: (load (<7 x s16>), align 1, addrspace 1) @@ -10667,130 +10230,40 @@ ; CI-MESA: [[SHL6:%[0-9]+]]:_(s32) = G_SHL [[AND13]], [[COPY12]](s32) ; CI-MESA: [[TRUNC13:%[0-9]+]]:_(s16) = G_TRUNC [[SHL6]](s32) ; CI-MESA: [[OR6:%[0-9]+]]:_(s16) = G_OR [[AND12]], [[TRUNC13]] - ; CI-MESA: [[DEF:%[0-9]+]]:_(<2 x s16>) = G_IMPLICIT_DEF - ; CI-MESA: [[DEF1:%[0-9]+]]:_(<4 x s16>) = G_IMPLICIT_DEF - ; CI-MESA: [[DEF2:%[0-9]+]]:_(<4 x s16>) = G_IMPLICIT_DEF - ; CI-MESA: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[DEF1]](<4 x s16>) + ; CI-MESA: [[DEF:%[0-9]+]]:_(s16) = G_IMPLICIT_DEF + ; CI-MESA: [[DEF1:%[0-9]+]]:_(<2 x s16>) = G_IMPLICIT_DEF + ; CI-MESA: [[DEF2:%[0-9]+]]:_(<8 x s16>) = G_IMPLICIT_DEF + ; CI-MESA: [[DEF3:%[0-9]+]]:_(<8 x s16>) = G_IMPLICIT_DEF + ; CI-MESA: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>), [[UV2:%[0-9]+]]:_(<2 x s16>), [[UV3:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[DEF2]](<8 x s16>) ; CI-MESA: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[UV]](<2 x s16>) ; CI-MESA: [[C7:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 ; CI-MESA: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST]], [[C7]](s32) - ; CI-MESA: [[BITCAST1:%[0-9]+]]:_(s32) = G_BITCAST [[UV1]](<2 x s16>) - ; CI-MESA: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST1]], [[C7]](s32) - ; CI-MESA: [[UV2:%[0-9]+]]:_(<2 x s16>), [[UV3:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[DEF1]](<4 x s16>) - ; CI-MESA: [[BITCAST2:%[0-9]+]]:_(s32) = G_BITCAST [[UV2]](<2 x s16>) - ; CI-MESA: [[LSHR2:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST2]], [[C7]](s32) - ; CI-MESA: [[BITCAST3:%[0-9]+]]:_(s32) = G_BITCAST [[UV3]](<2 x s16>) - ; CI-MESA: [[LSHR3:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST3]], [[C7]](s32) - ; CI-MESA: [[UV4:%[0-9]+]]:_(<2 x s16>), [[UV5:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[DEF1]](<4 x s16>) - ; CI-MESA: [[BITCAST4:%[0-9]+]]:_(s32) = G_BITCAST [[UV4]](<2 x s16>) - ; CI-MESA: [[LSHR4:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST4]], [[C7]](s32) - ; CI-MESA: [[BITCAST5:%[0-9]+]]:_(s32) = G_BITCAST [[UV5]](<2 x s16>) - ; CI-MESA: [[LSHR5:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST5]], [[C7]](s32) - ; CI-MESA: [[UV6:%[0-9]+]]:_(<2 x s16>), [[UV7:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[DEF1]](<4 x s16>) - ; CI-MESA: [[BITCAST6:%[0-9]+]]:_(s32) = G_BITCAST [[UV6]](<2 x s16>) - ; CI-MESA: [[LSHR6:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST6]], [[C7]](s32) - ; CI-MESA: [[BITCAST7:%[0-9]+]]:_(s32) = G_BITCAST [[UV7]](<2 x s16>) - ; CI-MESA: [[LSHR7:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST7]], [[C7]](s32) ; CI-MESA: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[OR]](s16) ; CI-MESA: [[ZEXT1:%[0-9]+]]:_(s32) = G_ZEXT [[OR1]](s16) ; CI-MESA: [[SHL7:%[0-9]+]]:_(s32) = G_SHL [[ZEXT1]], [[C7]](s32) ; CI-MESA: [[OR7:%[0-9]+]]:_(s32) = G_OR [[ZEXT]], [[SHL7]] - ; CI-MESA: [[BITCAST8:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR7]](s32) + ; CI-MESA: [[BITCAST1:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR7]](s32) ; CI-MESA: [[ZEXT2:%[0-9]+]]:_(s32) = G_ZEXT [[OR2]](s16) ; CI-MESA: [[ZEXT3:%[0-9]+]]:_(s32) = G_ZEXT [[OR3]](s16) ; CI-MESA: [[SHL8:%[0-9]+]]:_(s32) = G_SHL [[ZEXT3]], [[C7]](s32) ; CI-MESA: [[OR8:%[0-9]+]]:_(s32) = G_OR [[ZEXT2]], [[SHL8]] - ; CI-MESA: [[BITCAST9:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR8]](s32) + ; CI-MESA: [[BITCAST2:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR8]](s32) ; CI-MESA: [[ZEXT4:%[0-9]+]]:_(s32) = G_ZEXT [[OR4]](s16) ; CI-MESA: [[ZEXT5:%[0-9]+]]:_(s32) = G_ZEXT [[OR5]](s16) ; CI-MESA: [[SHL9:%[0-9]+]]:_(s32) = G_SHL [[ZEXT5]], [[C7]](s32) ; CI-MESA: [[OR9:%[0-9]+]]:_(s32) = G_OR [[ZEXT4]], [[SHL9]] - ; CI-MESA: [[BITCAST10:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR9]](s32) + ; CI-MESA: [[BITCAST3:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR9]](s32) ; CI-MESA: [[ZEXT6:%[0-9]+]]:_(s32) = G_ZEXT [[OR6]](s16) - ; CI-MESA: [[C8:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 - ; CI-MESA: [[COPY14:%[0-9]+]]:_(s32) = COPY [[C8]](s32) - ; CI-MESA: [[SHL10:%[0-9]+]]:_(s32) = G_SHL [[COPY14]], [[C7]](s32) + ; CI-MESA: [[C8:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535 + ; CI-MESA: [[COPY14:%[0-9]+]]:_(s32) = COPY [[BITCAST]](s32) + ; CI-MESA: [[AND14:%[0-9]+]]:_(s32) = G_AND [[COPY14]], [[C8]] + ; CI-MESA: [[SHL10:%[0-9]+]]:_(s32) = G_SHL [[AND14]], [[C7]](s32) ; CI-MESA: [[OR10:%[0-9]+]]:_(s32) = G_OR [[ZEXT6]], [[SHL10]] - ; CI-MESA: [[BITCAST11:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR10]](s32) - ; CI-MESA: [[COPY15:%[0-9]+]]:_(s32) = COPY [[C8]](s32) - ; CI-MESA: [[C9:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535 - ; CI-MESA: [[COPY16:%[0-9]+]]:_(s32) = COPY [[BITCAST]](s32) - ; CI-MESA: [[AND14:%[0-9]+]]:_(s32) = G_AND [[COPY16]], [[C9]] - ; CI-MESA: [[SHL11:%[0-9]+]]:_(s32) = G_SHL [[AND14]], [[C7]](s32) - ; CI-MESA: [[OR11:%[0-9]+]]:_(s32) = G_OR [[COPY15]], [[SHL11]] - ; CI-MESA: [[BITCAST12:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR11]](s32) - ; CI-MESA: [[COPY17:%[0-9]+]]:_(s32) = COPY [[LSHR]](s32) - ; CI-MESA: [[AND15:%[0-9]+]]:_(s32) = G_AND [[COPY17]], [[C9]] - ; CI-MESA: [[COPY18:%[0-9]+]]:_(s32) = COPY [[BITCAST1]](s32) - ; CI-MESA: [[AND16:%[0-9]+]]:_(s32) = G_AND [[COPY18]], [[C9]] - ; CI-MESA: [[SHL12:%[0-9]+]]:_(s32) = G_SHL [[AND16]], [[C7]](s32) - ; CI-MESA: [[OR12:%[0-9]+]]:_(s32) = G_OR [[AND15]], [[SHL12]] - ; CI-MESA: [[BITCAST13:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR12]](s32) - ; CI-MESA: [[COPY19:%[0-9]+]]:_(s32) = COPY [[BITCAST2]](s32) - ; CI-MESA: [[AND17:%[0-9]+]]:_(s32) = G_AND [[COPY19]], [[C9]] - ; CI-MESA: [[COPY20:%[0-9]+]]:_(s32) = COPY [[LSHR2]](s32) - ; CI-MESA: [[AND18:%[0-9]+]]:_(s32) = G_AND [[COPY20]], [[C9]] - ; CI-MESA: [[SHL13:%[0-9]+]]:_(s32) = G_SHL [[AND18]], [[C7]](s32) - ; CI-MESA: [[OR13:%[0-9]+]]:_(s32) = G_OR [[AND17]], [[SHL13]] - ; CI-MESA: [[BITCAST14:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR13]](s32) - ; CI-MESA: [[COPY21:%[0-9]+]]:_(s32) = COPY [[BITCAST3]](s32) - ; CI-MESA: [[AND19:%[0-9]+]]:_(s32) = G_AND [[COPY21]], [[C9]] - ; CI-MESA: [[COPY22:%[0-9]+]]:_(s32) = COPY [[BITCAST4]](s32) - ; CI-MESA: [[AND20:%[0-9]+]]:_(s32) = G_AND [[COPY22]], [[C9]] - ; CI-MESA: [[SHL14:%[0-9]+]]:_(s32) = G_SHL [[AND20]], [[C7]](s32) - ; CI-MESA: [[OR14:%[0-9]+]]:_(s32) = G_OR [[AND19]], [[SHL14]] - ; CI-MESA: [[BITCAST15:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR14]](s32) - ; CI-MESA: [[COPY23:%[0-9]+]]:_(s32) = COPY [[LSHR4]](s32) - ; CI-MESA: [[AND21:%[0-9]+]]:_(s32) = G_AND [[COPY23]], [[C9]] - ; CI-MESA: [[COPY24:%[0-9]+]]:_(s32) = COPY [[BITCAST5]](s32) - ; CI-MESA: [[AND22:%[0-9]+]]:_(s32) = G_AND [[COPY24]], [[C9]] - ; CI-MESA: [[SHL15:%[0-9]+]]:_(s32) = G_SHL [[AND22]], [[C7]](s32) - ; CI-MESA: [[OR15:%[0-9]+]]:_(s32) = G_OR [[AND21]], [[SHL15]] - ; CI-MESA: [[BITCAST16:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR15]](s32) - ; CI-MESA: [[COPY25:%[0-9]+]]:_(s32) = COPY [[BITCAST6]](s32) - ; CI-MESA: [[AND23:%[0-9]+]]:_(s32) = G_AND [[COPY25]], [[C9]] - ; CI-MESA: [[COPY26:%[0-9]+]]:_(s32) = COPY [[LSHR6]](s32) - ; CI-MESA: [[AND24:%[0-9]+]]:_(s32) = G_AND [[COPY26]], [[C9]] - ; CI-MESA: [[SHL16:%[0-9]+]]:_(s32) = G_SHL [[AND24]], [[C7]](s32) - ; CI-MESA: [[OR16:%[0-9]+]]:_(s32) = G_OR [[AND23]], [[SHL16]] - ; CI-MESA: [[BITCAST17:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR16]](s32) - ; CI-MESA: [[COPY27:%[0-9]+]]:_(s32) = COPY [[BITCAST7]](s32) - ; CI-MESA: [[AND25:%[0-9]+]]:_(s32) = G_AND [[COPY27]], [[C9]] - ; CI-MESA: [[SHL17:%[0-9]+]]:_(s32) = G_SHL [[C8]], [[C7]](s32) - ; CI-MESA: [[OR17:%[0-9]+]]:_(s32) = G_OR [[AND25]], [[SHL17]] - ; CI-MESA: [[BITCAST18:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR17]](s32) - ; CI-MESA: [[CONCAT_VECTORS:%[0-9]+]]:_(<42 x s16>) = G_CONCAT_VECTORS [[BITCAST8]](<2 x s16>), [[BITCAST9]](<2 x s16>), [[BITCAST10]](<2 x s16>), [[BITCAST11]](<2 x s16>), [[BITCAST12]](<2 x s16>), [[BITCAST13]](<2 x s16>), [[BITCAST14]](<2 x s16>), [[BITCAST15]](<2 x s16>), [[BITCAST16]](<2 x s16>), [[BITCAST17]](<2 x s16>), [[BITCAST18]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>) - ; CI-MESA: [[DEF3:%[0-9]+]]:_(<22 x s16>) = G_IMPLICIT_DEF - ; CI-MESA: [[DEF4:%[0-9]+]]:_(<8 x s16>) = G_IMPLICIT_DEF - ; CI-MESA: [[DEF5:%[0-9]+]]:_(<8 x s16>) = G_IMPLICIT_DEF - ; CI-MESA: [[UV8:%[0-9]+]]:_(<2 x s16>), [[UV9:%[0-9]+]]:_(<2 x s16>), [[UV10:%[0-9]+]]:_(<2 x s16>), [[UV11:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[DEF4]](<8 x s16>) - ; CI-MESA: [[BITCAST19:%[0-9]+]]:_(s32) = G_BITCAST [[UV8]](<2 x s16>) - ; CI-MESA: [[LSHR8:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST19]], [[C7]](s32) - ; CI-MESA: [[ZEXT7:%[0-9]+]]:_(s32) = G_ZEXT [[OR]](s16) - ; CI-MESA: [[ZEXT8:%[0-9]+]]:_(s32) = G_ZEXT [[OR1]](s16) - ; CI-MESA: [[SHL18:%[0-9]+]]:_(s32) = G_SHL [[ZEXT8]], [[C7]](s32) - ; CI-MESA: [[OR18:%[0-9]+]]:_(s32) = G_OR [[ZEXT7]], [[SHL18]] - ; CI-MESA: [[BITCAST20:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR18]](s32) - ; CI-MESA: [[ZEXT9:%[0-9]+]]:_(s32) = G_ZEXT [[OR2]](s16) - ; CI-MESA: [[ZEXT10:%[0-9]+]]:_(s32) = G_ZEXT [[OR3]](s16) - ; CI-MESA: [[SHL19:%[0-9]+]]:_(s32) = G_SHL [[ZEXT10]], [[C7]](s32) - ; CI-MESA: [[OR19:%[0-9]+]]:_(s32) = G_OR [[ZEXT9]], [[SHL19]] - ; CI-MESA: [[BITCAST21:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR19]](s32) - ; CI-MESA: [[ZEXT11:%[0-9]+]]:_(s32) = G_ZEXT [[OR4]](s16) - ; CI-MESA: [[ZEXT12:%[0-9]+]]:_(s32) = G_ZEXT [[OR5]](s16) - ; CI-MESA: [[SHL20:%[0-9]+]]:_(s32) = G_SHL [[ZEXT12]], [[C7]](s32) - ; CI-MESA: [[OR20:%[0-9]+]]:_(s32) = G_OR [[ZEXT11]], [[SHL20]] - ; CI-MESA: [[BITCAST22:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR20]](s32) - ; CI-MESA: [[ZEXT13:%[0-9]+]]:_(s32) = G_ZEXT [[OR6]](s16) - ; CI-MESA: [[COPY28:%[0-9]+]]:_(s32) = COPY [[BITCAST19]](s32) - ; CI-MESA: [[AND26:%[0-9]+]]:_(s32) = G_AND [[COPY28]], [[C9]] - ; CI-MESA: [[SHL21:%[0-9]+]]:_(s32) = G_SHL [[AND26]], [[C7]](s32) - ; CI-MESA: [[OR21:%[0-9]+]]:_(s32) = G_OR [[ZEXT13]], [[SHL21]] - ; CI-MESA: [[BITCAST23:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR21]](s32) - ; CI-MESA: $vgpr0 = COPY [[BITCAST20]](<2 x s16>) - ; CI-MESA: $vgpr1 = COPY [[BITCAST21]](<2 x s16>) - ; CI-MESA: $vgpr2 = COPY [[BITCAST22]](<2 x s16>) - ; CI-MESA: $vgpr3 = COPY [[BITCAST23]](<2 x s16>) + ; CI-MESA: [[BITCAST4:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR10]](s32) + ; CI-MESA: $vgpr0 = COPY [[BITCAST1]](<2 x s16>) + ; CI-MESA: $vgpr1 = COPY [[BITCAST2]](<2 x s16>) + ; CI-MESA: $vgpr2 = COPY [[BITCAST3]](<2 x s16>) + ; CI-MESA: $vgpr3 = COPY [[BITCAST4]](<2 x s16>) ; VI-LABEL: name: test_load_global_v7s16_align1 ; VI: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 ; VI: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[COPY]](p1) :: (load (s8), addrspace 1) @@ -10868,130 +10341,40 @@ ; VI: [[AND13:%[0-9]+]]:_(s16) = G_AND [[TRUNC13]], [[C1]] ; VI: [[SHL6:%[0-9]+]]:_(s16) = G_SHL [[AND13]], [[C2]](s16) ; VI: [[OR6:%[0-9]+]]:_(s16) = G_OR [[AND12]], [[SHL6]] - ; VI: [[DEF:%[0-9]+]]:_(<2 x s16>) = G_IMPLICIT_DEF - ; VI: [[DEF1:%[0-9]+]]:_(<4 x s16>) = G_IMPLICIT_DEF - ; VI: [[DEF2:%[0-9]+]]:_(<4 x s16>) = G_IMPLICIT_DEF - ; VI: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[DEF1]](<4 x s16>) + ; VI: [[DEF:%[0-9]+]]:_(s16) = G_IMPLICIT_DEF + ; VI: [[DEF1:%[0-9]+]]:_(<2 x s16>) = G_IMPLICIT_DEF + ; VI: [[DEF2:%[0-9]+]]:_(<8 x s16>) = G_IMPLICIT_DEF + ; VI: [[DEF3:%[0-9]+]]:_(<8 x s16>) = G_IMPLICIT_DEF + ; VI: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>), [[UV2:%[0-9]+]]:_(<2 x s16>), [[UV3:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[DEF2]](<8 x s16>) ; VI: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[UV]](<2 x s16>) ; VI: [[C6:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 ; VI: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST]], [[C6]](s32) - ; VI: [[BITCAST1:%[0-9]+]]:_(s32) = G_BITCAST [[UV1]](<2 x s16>) - ; VI: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST1]], [[C6]](s32) - ; VI: [[UV2:%[0-9]+]]:_(<2 x s16>), [[UV3:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[DEF1]](<4 x s16>) - ; VI: [[BITCAST2:%[0-9]+]]:_(s32) = G_BITCAST [[UV2]](<2 x s16>) - ; VI: [[LSHR2:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST2]], [[C6]](s32) - ; VI: [[BITCAST3:%[0-9]+]]:_(s32) = G_BITCAST [[UV3]](<2 x s16>) - ; VI: [[LSHR3:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST3]], [[C6]](s32) - ; VI: [[UV4:%[0-9]+]]:_(<2 x s16>), [[UV5:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[DEF1]](<4 x s16>) - ; VI: [[BITCAST4:%[0-9]+]]:_(s32) = G_BITCAST [[UV4]](<2 x s16>) - ; VI: [[LSHR4:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST4]], [[C6]](s32) - ; VI: [[BITCAST5:%[0-9]+]]:_(s32) = G_BITCAST [[UV5]](<2 x s16>) - ; VI: [[LSHR5:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST5]], [[C6]](s32) - ; VI: [[UV6:%[0-9]+]]:_(<2 x s16>), [[UV7:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[DEF1]](<4 x s16>) - ; VI: [[BITCAST6:%[0-9]+]]:_(s32) = G_BITCAST [[UV6]](<2 x s16>) - ; VI: [[LSHR6:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST6]], [[C6]](s32) - ; VI: [[BITCAST7:%[0-9]+]]:_(s32) = G_BITCAST [[UV7]](<2 x s16>) - ; VI: [[LSHR7:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST7]], [[C6]](s32) ; VI: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[OR]](s16) ; VI: [[ZEXT1:%[0-9]+]]:_(s32) = G_ZEXT [[OR1]](s16) ; VI: [[SHL7:%[0-9]+]]:_(s32) = G_SHL [[ZEXT1]], [[C6]](s32) ; VI: [[OR7:%[0-9]+]]:_(s32) = G_OR [[ZEXT]], [[SHL7]] - ; VI: [[BITCAST8:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR7]](s32) + ; VI: [[BITCAST1:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR7]](s32) ; VI: [[ZEXT2:%[0-9]+]]:_(s32) = G_ZEXT [[OR2]](s16) ; VI: [[ZEXT3:%[0-9]+]]:_(s32) = G_ZEXT [[OR3]](s16) ; VI: [[SHL8:%[0-9]+]]:_(s32) = G_SHL [[ZEXT3]], [[C6]](s32) ; VI: [[OR8:%[0-9]+]]:_(s32) = G_OR [[ZEXT2]], [[SHL8]] - ; VI: [[BITCAST9:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR8]](s32) + ; VI: [[BITCAST2:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR8]](s32) ; VI: [[ZEXT4:%[0-9]+]]:_(s32) = G_ZEXT [[OR4]](s16) ; VI: [[ZEXT5:%[0-9]+]]:_(s32) = G_ZEXT [[OR5]](s16) ; VI: [[SHL9:%[0-9]+]]:_(s32) = G_SHL [[ZEXT5]], [[C6]](s32) ; VI: [[OR9:%[0-9]+]]:_(s32) = G_OR [[ZEXT4]], [[SHL9]] - ; VI: [[BITCAST10:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR9]](s32) + ; VI: [[BITCAST3:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR9]](s32) ; VI: [[ZEXT6:%[0-9]+]]:_(s32) = G_ZEXT [[OR6]](s16) - ; VI: [[C7:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 - ; VI: [[COPY1:%[0-9]+]]:_(s32) = COPY [[C7]](s32) - ; VI: [[SHL10:%[0-9]+]]:_(s32) = G_SHL [[COPY1]], [[C6]](s32) + ; VI: [[C7:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535 + ; VI: [[COPY1:%[0-9]+]]:_(s32) = COPY [[BITCAST]](s32) + ; VI: [[AND14:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C7]] + ; VI: [[SHL10:%[0-9]+]]:_(s32) = G_SHL [[AND14]], [[C6]](s32) ; VI: [[OR10:%[0-9]+]]:_(s32) = G_OR [[ZEXT6]], [[SHL10]] - ; VI: [[BITCAST11:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR10]](s32) - ; VI: [[COPY2:%[0-9]+]]:_(s32) = COPY [[C7]](s32) - ; VI: [[C8:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535 - ; VI: [[COPY3:%[0-9]+]]:_(s32) = COPY [[BITCAST]](s32) - ; VI: [[AND14:%[0-9]+]]:_(s32) = G_AND [[COPY3]], [[C8]] - ; VI: [[SHL11:%[0-9]+]]:_(s32) = G_SHL [[AND14]], [[C6]](s32) - ; VI: [[OR11:%[0-9]+]]:_(s32) = G_OR [[COPY2]], [[SHL11]] - ; VI: [[BITCAST12:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR11]](s32) - ; VI: [[COPY4:%[0-9]+]]:_(s32) = COPY [[LSHR]](s32) - ; VI: [[AND15:%[0-9]+]]:_(s32) = G_AND [[COPY4]], [[C8]] - ; VI: [[COPY5:%[0-9]+]]:_(s32) = COPY [[BITCAST1]](s32) - ; VI: [[AND16:%[0-9]+]]:_(s32) = G_AND [[COPY5]], [[C8]] - ; VI: [[SHL12:%[0-9]+]]:_(s32) = G_SHL [[AND16]], [[C6]](s32) - ; VI: [[OR12:%[0-9]+]]:_(s32) = G_OR [[AND15]], [[SHL12]] - ; VI: [[BITCAST13:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR12]](s32) - ; VI: [[COPY6:%[0-9]+]]:_(s32) = COPY [[BITCAST2]](s32) - ; VI: [[AND17:%[0-9]+]]:_(s32) = G_AND [[COPY6]], [[C8]] - ; VI: [[COPY7:%[0-9]+]]:_(s32) = COPY [[LSHR2]](s32) - ; VI: [[AND18:%[0-9]+]]:_(s32) = G_AND [[COPY7]], [[C8]] - ; VI: [[SHL13:%[0-9]+]]:_(s32) = G_SHL [[AND18]], [[C6]](s32) - ; VI: [[OR13:%[0-9]+]]:_(s32) = G_OR [[AND17]], [[SHL13]] - ; VI: [[BITCAST14:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR13]](s32) - ; VI: [[COPY8:%[0-9]+]]:_(s32) = COPY [[BITCAST3]](s32) - ; VI: [[AND19:%[0-9]+]]:_(s32) = G_AND [[COPY8]], [[C8]] - ; VI: [[COPY9:%[0-9]+]]:_(s32) = COPY [[BITCAST4]](s32) - ; VI: [[AND20:%[0-9]+]]:_(s32) = G_AND [[COPY9]], [[C8]] - ; VI: [[SHL14:%[0-9]+]]:_(s32) = G_SHL [[AND20]], [[C6]](s32) - ; VI: [[OR14:%[0-9]+]]:_(s32) = G_OR [[AND19]], [[SHL14]] - ; VI: [[BITCAST15:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR14]](s32) - ; VI: [[COPY10:%[0-9]+]]:_(s32) = COPY [[LSHR4]](s32) - ; VI: [[AND21:%[0-9]+]]:_(s32) = G_AND [[COPY10]], [[C8]] - ; VI: [[COPY11:%[0-9]+]]:_(s32) = COPY [[BITCAST5]](s32) - ; VI: [[AND22:%[0-9]+]]:_(s32) = G_AND [[COPY11]], [[C8]] - ; VI: [[SHL15:%[0-9]+]]:_(s32) = G_SHL [[AND22]], [[C6]](s32) - ; VI: [[OR15:%[0-9]+]]:_(s32) = G_OR [[AND21]], [[SHL15]] - ; VI: [[BITCAST16:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR15]](s32) - ; VI: [[COPY12:%[0-9]+]]:_(s32) = COPY [[BITCAST6]](s32) - ; VI: [[AND23:%[0-9]+]]:_(s32) = G_AND [[COPY12]], [[C8]] - ; VI: [[COPY13:%[0-9]+]]:_(s32) = COPY [[LSHR6]](s32) - ; VI: [[AND24:%[0-9]+]]:_(s32) = G_AND [[COPY13]], [[C8]] - ; VI: [[SHL16:%[0-9]+]]:_(s32) = G_SHL [[AND24]], [[C6]](s32) - ; VI: [[OR16:%[0-9]+]]:_(s32) = G_OR [[AND23]], [[SHL16]] - ; VI: [[BITCAST17:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR16]](s32) - ; VI: [[COPY14:%[0-9]+]]:_(s32) = COPY [[BITCAST7]](s32) - ; VI: [[AND25:%[0-9]+]]:_(s32) = G_AND [[COPY14]], [[C8]] - ; VI: [[SHL17:%[0-9]+]]:_(s32) = G_SHL [[C7]], [[C6]](s32) - ; VI: [[OR17:%[0-9]+]]:_(s32) = G_OR [[AND25]], [[SHL17]] - ; VI: [[BITCAST18:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR17]](s32) - ; VI: [[CONCAT_VECTORS:%[0-9]+]]:_(<42 x s16>) = G_CONCAT_VECTORS [[BITCAST8]](<2 x s16>), [[BITCAST9]](<2 x s16>), [[BITCAST10]](<2 x s16>), [[BITCAST11]](<2 x s16>), [[BITCAST12]](<2 x s16>), [[BITCAST13]](<2 x s16>), [[BITCAST14]](<2 x s16>), [[BITCAST15]](<2 x s16>), [[BITCAST16]](<2 x s16>), [[BITCAST17]](<2 x s16>), [[BITCAST18]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>) - ; VI: [[DEF3:%[0-9]+]]:_(<22 x s16>) = G_IMPLICIT_DEF - ; VI: [[DEF4:%[0-9]+]]:_(<8 x s16>) = G_IMPLICIT_DEF - ; VI: [[DEF5:%[0-9]+]]:_(<8 x s16>) = G_IMPLICIT_DEF - ; VI: [[UV8:%[0-9]+]]:_(<2 x s16>), [[UV9:%[0-9]+]]:_(<2 x s16>), [[UV10:%[0-9]+]]:_(<2 x s16>), [[UV11:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[DEF4]](<8 x s16>) - ; VI: [[BITCAST19:%[0-9]+]]:_(s32) = G_BITCAST [[UV8]](<2 x s16>) - ; VI: [[LSHR8:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST19]], [[C6]](s32) - ; VI: [[ZEXT7:%[0-9]+]]:_(s32) = G_ZEXT [[OR]](s16) - ; VI: [[ZEXT8:%[0-9]+]]:_(s32) = G_ZEXT [[OR1]](s16) - ; VI: [[SHL18:%[0-9]+]]:_(s32) = G_SHL [[ZEXT8]], [[C6]](s32) - ; VI: [[OR18:%[0-9]+]]:_(s32) = G_OR [[ZEXT7]], [[SHL18]] - ; VI: [[BITCAST20:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR18]](s32) - ; VI: [[ZEXT9:%[0-9]+]]:_(s32) = G_ZEXT [[OR2]](s16) - ; VI: [[ZEXT10:%[0-9]+]]:_(s32) = G_ZEXT [[OR3]](s16) - ; VI: [[SHL19:%[0-9]+]]:_(s32) = G_SHL [[ZEXT10]], [[C6]](s32) - ; VI: [[OR19:%[0-9]+]]:_(s32) = G_OR [[ZEXT9]], [[SHL19]] - ; VI: [[BITCAST21:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR19]](s32) - ; VI: [[ZEXT11:%[0-9]+]]:_(s32) = G_ZEXT [[OR4]](s16) - ; VI: [[ZEXT12:%[0-9]+]]:_(s32) = G_ZEXT [[OR5]](s16) - ; VI: [[SHL20:%[0-9]+]]:_(s32) = G_SHL [[ZEXT12]], [[C6]](s32) - ; VI: [[OR20:%[0-9]+]]:_(s32) = G_OR [[ZEXT11]], [[SHL20]] - ; VI: [[BITCAST22:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR20]](s32) - ; VI: [[ZEXT13:%[0-9]+]]:_(s32) = G_ZEXT [[OR6]](s16) - ; VI: [[COPY15:%[0-9]+]]:_(s32) = COPY [[BITCAST19]](s32) - ; VI: [[AND26:%[0-9]+]]:_(s32) = G_AND [[COPY15]], [[C8]] - ; VI: [[SHL21:%[0-9]+]]:_(s32) = G_SHL [[AND26]], [[C6]](s32) - ; VI: [[OR21:%[0-9]+]]:_(s32) = G_OR [[ZEXT13]], [[SHL21]] - ; VI: [[BITCAST23:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR21]](s32) - ; VI: $vgpr0 = COPY [[BITCAST20]](<2 x s16>) - ; VI: $vgpr1 = COPY [[BITCAST21]](<2 x s16>) - ; VI: $vgpr2 = COPY [[BITCAST22]](<2 x s16>) - ; VI: $vgpr3 = COPY [[BITCAST23]](<2 x s16>) + ; VI: [[BITCAST4:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR10]](s32) + ; VI: $vgpr0 = COPY [[BITCAST1]](<2 x s16>) + ; VI: $vgpr1 = COPY [[BITCAST2]](<2 x s16>) + ; VI: $vgpr2 = COPY [[BITCAST3]](<2 x s16>) + ; VI: $vgpr3 = COPY [[BITCAST4]](<2 x s16>) ; GFX9-HSA-LABEL: name: test_load_global_v7s16_align1 ; GFX9-HSA: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 ; GFX9-HSA: [[LOAD:%[0-9]+]]:_(<7 x s16>) = G_LOAD [[COPY]](p1) :: (load (<7 x s16>), align 1, addrspace 1) @@ -11082,30 +10465,14 @@ ; GFX9-MESA: [[AND13:%[0-9]+]]:_(s16) = G_AND [[TRUNC13]], [[C1]] ; GFX9-MESA: [[SHL6:%[0-9]+]]:_(s16) = G_SHL [[AND13]], [[C2]](s16) ; GFX9-MESA: [[OR6:%[0-9]+]]:_(s16) = G_OR [[AND12]], [[SHL6]] - ; GFX9-MESA: [[DEF:%[0-9]+]]:_(<2 x s16>) = G_IMPLICIT_DEF - ; GFX9-MESA: [[DEF1:%[0-9]+]]:_(<4 x s16>) = G_IMPLICIT_DEF - ; GFX9-MESA: [[DEF2:%[0-9]+]]:_(<4 x s16>) = G_IMPLICIT_DEF - ; GFX9-MESA: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[DEF1]](<4 x s16>) + ; GFX9-MESA: [[DEF:%[0-9]+]]:_(s16) = G_IMPLICIT_DEF + ; GFX9-MESA: [[DEF1:%[0-9]+]]:_(<2 x s16>) = G_IMPLICIT_DEF + ; GFX9-MESA: [[DEF2:%[0-9]+]]:_(<8 x s16>) = G_IMPLICIT_DEF + ; GFX9-MESA: [[DEF3:%[0-9]+]]:_(<8 x s16>) = G_IMPLICIT_DEF + ; GFX9-MESA: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>), [[UV2:%[0-9]+]]:_(<2 x s16>), [[UV3:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[DEF2]](<8 x s16>) ; GFX9-MESA: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[UV]](<2 x s16>) ; GFX9-MESA: [[C6:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 ; GFX9-MESA: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST]], [[C6]](s32) - ; GFX9-MESA: [[BITCAST1:%[0-9]+]]:_(s32) = G_BITCAST [[UV1]](<2 x s16>) - ; GFX9-MESA: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST1]], [[C6]](s32) - ; GFX9-MESA: [[UV2:%[0-9]+]]:_(<2 x s16>), [[UV3:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[DEF1]](<4 x s16>) - ; GFX9-MESA: [[BITCAST2:%[0-9]+]]:_(s32) = G_BITCAST [[UV2]](<2 x s16>) - ; GFX9-MESA: [[LSHR2:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST2]], [[C6]](s32) - ; GFX9-MESA: [[BITCAST3:%[0-9]+]]:_(s32) = G_BITCAST [[UV3]](<2 x s16>) - ; GFX9-MESA: [[LSHR3:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST3]], [[C6]](s32) - ; GFX9-MESA: [[UV4:%[0-9]+]]:_(<2 x s16>), [[UV5:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[DEF1]](<4 x s16>) - ; GFX9-MESA: [[BITCAST4:%[0-9]+]]:_(s32) = G_BITCAST [[UV4]](<2 x s16>) - ; GFX9-MESA: [[LSHR4:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST4]], [[C6]](s32) - ; GFX9-MESA: [[BITCAST5:%[0-9]+]]:_(s32) = G_BITCAST [[UV5]](<2 x s16>) - ; GFX9-MESA: [[LSHR5:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST5]], [[C6]](s32) - ; GFX9-MESA: [[UV6:%[0-9]+]]:_(<2 x s16>), [[UV7:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[DEF1]](<4 x s16>) - ; GFX9-MESA: [[BITCAST6:%[0-9]+]]:_(s32) = G_BITCAST [[UV6]](<2 x s16>) - ; GFX9-MESA: [[LSHR6:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST6]], [[C6]](s32) - ; GFX9-MESA: [[BITCAST7:%[0-9]+]]:_(s32) = G_BITCAST [[UV7]](<2 x s16>) - ; GFX9-MESA: [[LSHR7:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST7]], [[C6]](s32) ; GFX9-MESA: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[OR]](s16) ; GFX9-MESA: [[ANYEXT1:%[0-9]+]]:_(s32) = G_ANYEXT [[OR1]](s16) ; GFX9-MESA: [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[ANYEXT]](s32), [[ANYEXT1]](s32) @@ -11116,52 +10483,12 @@ ; GFX9-MESA: [[ANYEXT5:%[0-9]+]]:_(s32) = G_ANYEXT [[OR5]](s16) ; GFX9-MESA: [[BUILD_VECTOR_TRUNC2:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[ANYEXT4]](s32), [[ANYEXT5]](s32) ; GFX9-MESA: [[ANYEXT6:%[0-9]+]]:_(s32) = G_ANYEXT [[OR6]](s16) - ; GFX9-MESA: [[DEF3:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF - ; GFX9-MESA: [[COPY1:%[0-9]+]]:_(s32) = COPY [[DEF3]](s32) + ; GFX9-MESA: [[COPY1:%[0-9]+]]:_(s32) = COPY [[BITCAST]](s32) ; GFX9-MESA: [[BUILD_VECTOR_TRUNC3:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[ANYEXT6]](s32), [[COPY1]](s32) - ; GFX9-MESA: [[COPY2:%[0-9]+]]:_(s32) = COPY [[DEF3]](s32) - ; GFX9-MESA: [[COPY3:%[0-9]+]]:_(s32) = COPY [[BITCAST]](s32) - ; GFX9-MESA: [[BUILD_VECTOR_TRUNC4:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY2]](s32), [[COPY3]](s32) - ; GFX9-MESA: [[COPY4:%[0-9]+]]:_(s32) = COPY [[LSHR]](s32) - ; GFX9-MESA: [[COPY5:%[0-9]+]]:_(s32) = COPY [[BITCAST1]](s32) - ; GFX9-MESA: [[BUILD_VECTOR_TRUNC5:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY4]](s32), [[COPY5]](s32) - ; GFX9-MESA: [[COPY6:%[0-9]+]]:_(s32) = COPY [[BITCAST2]](s32) - ; GFX9-MESA: [[COPY7:%[0-9]+]]:_(s32) = COPY [[LSHR2]](s32) - ; GFX9-MESA: [[BUILD_VECTOR_TRUNC6:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY6]](s32), [[COPY7]](s32) - ; GFX9-MESA: [[COPY8:%[0-9]+]]:_(s32) = COPY [[BITCAST3]](s32) - ; GFX9-MESA: [[COPY9:%[0-9]+]]:_(s32) = COPY [[BITCAST4]](s32) - ; GFX9-MESA: [[BUILD_VECTOR_TRUNC7:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY8]](s32), [[COPY9]](s32) - ; GFX9-MESA: [[COPY10:%[0-9]+]]:_(s32) = COPY [[LSHR4]](s32) - ; GFX9-MESA: [[COPY11:%[0-9]+]]:_(s32) = COPY [[BITCAST5]](s32) - ; GFX9-MESA: [[BUILD_VECTOR_TRUNC8:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY10]](s32), [[COPY11]](s32) - ; GFX9-MESA: [[COPY12:%[0-9]+]]:_(s32) = COPY [[BITCAST6]](s32) - ; GFX9-MESA: [[COPY13:%[0-9]+]]:_(s32) = COPY [[LSHR6]](s32) - ; GFX9-MESA: [[BUILD_VECTOR_TRUNC9:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY12]](s32), [[COPY13]](s32) - ; GFX9-MESA: [[COPY14:%[0-9]+]]:_(s32) = COPY [[BITCAST7]](s32) - ; GFX9-MESA: [[BUILD_VECTOR_TRUNC10:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY14]](s32), [[DEF3]](s32) - ; GFX9-MESA: [[CONCAT_VECTORS:%[0-9]+]]:_(<42 x s16>) = G_CONCAT_VECTORS [[BUILD_VECTOR_TRUNC]](<2 x s16>), [[BUILD_VECTOR_TRUNC1]](<2 x s16>), [[BUILD_VECTOR_TRUNC2]](<2 x s16>), [[BUILD_VECTOR_TRUNC3]](<2 x s16>), [[BUILD_VECTOR_TRUNC4]](<2 x s16>), [[BUILD_VECTOR_TRUNC5]](<2 x s16>), [[BUILD_VECTOR_TRUNC6]](<2 x s16>), [[BUILD_VECTOR_TRUNC7]](<2 x s16>), [[BUILD_VECTOR_TRUNC8]](<2 x s16>), [[BUILD_VECTOR_TRUNC9]](<2 x s16>), [[BUILD_VECTOR_TRUNC10]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>), [[DEF]](<2 x s16>) - ; GFX9-MESA: [[DEF4:%[0-9]+]]:_(<22 x s16>) = G_IMPLICIT_DEF - ; GFX9-MESA: [[DEF5:%[0-9]+]]:_(<8 x s16>) = G_IMPLICIT_DEF - ; GFX9-MESA: [[DEF6:%[0-9]+]]:_(<8 x s16>) = G_IMPLICIT_DEF - ; GFX9-MESA: [[UV8:%[0-9]+]]:_(<2 x s16>), [[UV9:%[0-9]+]]:_(<2 x s16>), [[UV10:%[0-9]+]]:_(<2 x s16>), [[UV11:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[DEF5]](<8 x s16>) - ; GFX9-MESA: [[BITCAST8:%[0-9]+]]:_(s32) = G_BITCAST [[UV8]](<2 x s16>) - ; GFX9-MESA: [[LSHR8:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST8]], [[C6]](s32) - ; GFX9-MESA: [[ANYEXT7:%[0-9]+]]:_(s32) = G_ANYEXT [[OR]](s16) - ; GFX9-MESA: [[ANYEXT8:%[0-9]+]]:_(s32) = G_ANYEXT [[OR1]](s16) - ; GFX9-MESA: [[BUILD_VECTOR_TRUNC11:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[ANYEXT7]](s32), [[ANYEXT8]](s32) - ; GFX9-MESA: [[ANYEXT9:%[0-9]+]]:_(s32) = G_ANYEXT [[OR2]](s16) - ; GFX9-MESA: [[ANYEXT10:%[0-9]+]]:_(s32) = G_ANYEXT [[OR3]](s16) - ; GFX9-MESA: [[BUILD_VECTOR_TRUNC12:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[ANYEXT9]](s32), [[ANYEXT10]](s32) - ; GFX9-MESA: [[ANYEXT11:%[0-9]+]]:_(s32) = G_ANYEXT [[OR4]](s16) - ; GFX9-MESA: [[ANYEXT12:%[0-9]+]]:_(s32) = G_ANYEXT [[OR5]](s16) - ; GFX9-MESA: [[BUILD_VECTOR_TRUNC13:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[ANYEXT11]](s32), [[ANYEXT12]](s32) - ; GFX9-MESA: [[ANYEXT13:%[0-9]+]]:_(s32) = G_ANYEXT [[OR6]](s16) - ; GFX9-MESA: [[COPY15:%[0-9]+]]:_(s32) = COPY [[BITCAST8]](s32) - ; GFX9-MESA: [[BUILD_VECTOR_TRUNC14:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[ANYEXT13]](s32), [[COPY15]](s32) - ; GFX9-MESA: $vgpr0 = COPY [[BUILD_VECTOR_TRUNC11]](<2 x s16>) - ; GFX9-MESA: $vgpr1 = COPY [[BUILD_VECTOR_TRUNC12]](<2 x s16>) - ; GFX9-MESA: $vgpr2 = COPY [[BUILD_VECTOR_TRUNC13]](<2 x s16>) - ; GFX9-MESA: $vgpr3 = COPY [[BUILD_VECTOR_TRUNC14]](<2 x s16>) + ; GFX9-MESA: $vgpr0 = COPY [[BUILD_VECTOR_TRUNC]](<2 x s16>) + ; GFX9-MESA: $vgpr1 = COPY [[BUILD_VECTOR_TRUNC1]](<2 x s16>) + ; GFX9-MESA: $vgpr2 = COPY [[BUILD_VECTOR_TRUNC2]](<2 x s16>) + ; GFX9-MESA: $vgpr3 = COPY [[BUILD_VECTOR_TRUNC3]](<2 x s16>) %0:_(p1) = COPY $vgpr0_vgpr1 %1:_(<7 x s16>) = G_LOAD %0 :: (load (<7 x s16>), align 1, addrspace 1) %2:_(<7 x s16>) = G_IMPLICIT_DEF @@ -18564,3 +17891,1101 @@ %1:_(<8 x s4>) = G_LOAD %0 :: (load (<8 x s4>), align 4, addrspace 1) $vgpr0 = COPY %1 ... + +--- +name: test_load_global_v11s32_align4 +body: | + bb.0: + liveins: $sgpr0_sgpr1 + + ; SI-LABEL: name: test_load_global_v11s32_align4 + ; SI: [[COPY:%[0-9]+]]:_(p1) = COPY $sgpr0_sgpr1 + ; SI: [[LOAD:%[0-9]+]]:_(<8 x s32>) = G_LOAD [[COPY]](p1) :: (load (<8 x s32>), align 4, addrspace 1) + ; SI: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 32 + ; SI: [[PTR_ADD:%[0-9]+]]:_(p1) = G_PTR_ADD [[COPY]], [[C]](s64) + ; SI: [[LOAD1:%[0-9]+]]:_(<2 x s32>) = G_LOAD [[PTR_ADD]](p1) :: (load (<2 x s32>) from unknown-address + 32, align 4, addrspace 1) + ; SI: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 8 + ; SI: [[PTR_ADD1:%[0-9]+]]:_(p1) = G_PTR_ADD [[PTR_ADD]], [[C1]](s64) + ; SI: [[LOAD2:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD1]](p1) :: (load (s32) from unknown-address + 40, addrspace 1) + ; SI: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[LOAD1]](<2 x s32>) + ; SI: [[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) = G_UNMERGE_VALUES [[LOAD]](<8 x s32>) + ; SI: [[COPY1:%[0-9]+]]:_(s32) = COPY [[UV2]](s32) + ; SI: [[COPY2:%[0-9]+]]:_(s32) = COPY [[UV3]](s32) + ; SI: [[COPY3:%[0-9]+]]:_(s32) = COPY [[UV4]](s32) + ; SI: [[COPY4:%[0-9]+]]:_(s32) = COPY [[UV5]](s32) + ; SI: [[COPY5:%[0-9]+]]:_(s32) = COPY [[UV6]](s32) + ; SI: [[COPY6:%[0-9]+]]:_(s32) = COPY [[UV7]](s32) + ; SI: [[COPY7:%[0-9]+]]:_(s32) = COPY [[UV8]](s32) + ; SI: [[COPY8:%[0-9]+]]:_(s32) = COPY [[UV9]](s32) + ; SI: [[COPY9:%[0-9]+]]:_(s32) = COPY [[UV]](s32) + ; SI: [[COPY10:%[0-9]+]]:_(s32) = COPY [[UV1]](s32) + ; SI: [[COPY11:%[0-9]+]]:_(s32) = COPY [[LOAD2]](s32) + ; SI: $vgpr0 = COPY [[COPY1]](s32) + ; SI: $vgpr1 = COPY [[COPY2]](s32) + ; SI: $vgpr2 = COPY [[COPY3]](s32) + ; SI: $vgpr3 = COPY [[COPY4]](s32) + ; SI: $vgpr4 = COPY [[COPY5]](s32) + ; SI: $vgpr5 = COPY [[COPY6]](s32) + ; SI: $vgpr6 = COPY [[COPY7]](s32) + ; SI: $vgpr7 = COPY [[COPY8]](s32) + ; SI: $vgpr8 = COPY [[COPY9]](s32) + ; SI: $vgpr9 = COPY [[COPY10]](s32) + ; SI: $vgpr10 = COPY [[COPY11]](s32) + ; CI-HSA-LABEL: name: test_load_global_v11s32_align4 + ; CI-HSA: [[COPY:%[0-9]+]]:_(p1) = COPY $sgpr0_sgpr1 + ; CI-HSA: [[LOAD:%[0-9]+]]:_(<8 x s32>) = G_LOAD [[COPY]](p1) :: (load (<8 x s32>), align 4, addrspace 1) + ; CI-HSA: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 32 + ; CI-HSA: [[PTR_ADD:%[0-9]+]]:_(p1) = G_PTR_ADD [[COPY]], [[C]](s64) + ; CI-HSA: [[LOAD1:%[0-9]+]]:_(<3 x s32>) = G_LOAD [[PTR_ADD]](p1) :: (load (<3 x s32>) from unknown-address + 32, align 4, addrspace 1) + ; CI-HSA: [[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) = G_UNMERGE_VALUES [[LOAD]](<8 x s32>) + ; CI-HSA: [[UV8:%[0-9]+]]:_(s32), [[UV9:%[0-9]+]]:_(s32), [[UV10:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[LOAD1]](<3 x s32>) + ; CI-HSA: [[COPY1:%[0-9]+]]:_(s32) = COPY [[UV]](s32) + ; CI-HSA: [[COPY2:%[0-9]+]]:_(s32) = COPY [[UV1]](s32) + ; CI-HSA: [[COPY3:%[0-9]+]]:_(s32) = COPY [[UV2]](s32) + ; CI-HSA: [[COPY4:%[0-9]+]]:_(s32) = COPY [[UV3]](s32) + ; CI-HSA: [[COPY5:%[0-9]+]]:_(s32) = COPY [[UV4]](s32) + ; CI-HSA: [[COPY6:%[0-9]+]]:_(s32) = COPY [[UV5]](s32) + ; CI-HSA: [[COPY7:%[0-9]+]]:_(s32) = COPY [[UV6]](s32) + ; CI-HSA: [[COPY8:%[0-9]+]]:_(s32) = COPY [[UV7]](s32) + ; CI-HSA: [[COPY9:%[0-9]+]]:_(s32) = COPY [[UV8]](s32) + ; CI-HSA: [[COPY10:%[0-9]+]]:_(s32) = COPY [[UV9]](s32) + ; CI-HSA: [[COPY11:%[0-9]+]]:_(s32) = COPY [[UV10]](s32) + ; CI-HSA: $vgpr0 = COPY [[COPY1]](s32) + ; CI-HSA: $vgpr1 = COPY [[COPY2]](s32) + ; CI-HSA: $vgpr2 = COPY [[COPY3]](s32) + ; CI-HSA: $vgpr3 = COPY [[COPY4]](s32) + ; CI-HSA: $vgpr4 = COPY [[COPY5]](s32) + ; CI-HSA: $vgpr5 = COPY [[COPY6]](s32) + ; CI-HSA: $vgpr6 = COPY [[COPY7]](s32) + ; CI-HSA: $vgpr7 = COPY [[COPY8]](s32) + ; CI-HSA: $vgpr8 = COPY [[COPY9]](s32) + ; CI-HSA: $vgpr9 = COPY [[COPY10]](s32) + ; CI-HSA: $vgpr10 = COPY [[COPY11]](s32) + ; CI-MESA-LABEL: name: test_load_global_v11s32_align4 + ; CI-MESA: [[COPY:%[0-9]+]]:_(p1) = COPY $sgpr0_sgpr1 + ; CI-MESA: [[LOAD:%[0-9]+]]:_(<8 x s32>) = G_LOAD [[COPY]](p1) :: (load (<8 x s32>), align 4, addrspace 1) + ; CI-MESA: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 32 + ; CI-MESA: [[PTR_ADD:%[0-9]+]]:_(p1) = G_PTR_ADD [[COPY]], [[C]](s64) + ; CI-MESA: [[LOAD1:%[0-9]+]]:_(<3 x s32>) = G_LOAD [[PTR_ADD]](p1) :: (load (<3 x s32>) from unknown-address + 32, align 4, addrspace 1) + ; CI-MESA: [[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) = G_UNMERGE_VALUES [[LOAD]](<8 x s32>) + ; CI-MESA: [[UV8:%[0-9]+]]:_(s32), [[UV9:%[0-9]+]]:_(s32), [[UV10:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[LOAD1]](<3 x s32>) + ; CI-MESA: [[COPY1:%[0-9]+]]:_(s32) = COPY [[UV]](s32) + ; CI-MESA: [[COPY2:%[0-9]+]]:_(s32) = COPY [[UV1]](s32) + ; CI-MESA: [[COPY3:%[0-9]+]]:_(s32) = COPY [[UV2]](s32) + ; CI-MESA: [[COPY4:%[0-9]+]]:_(s32) = COPY [[UV3]](s32) + ; CI-MESA: [[COPY5:%[0-9]+]]:_(s32) = COPY [[UV4]](s32) + ; CI-MESA: [[COPY6:%[0-9]+]]:_(s32) = COPY [[UV5]](s32) + ; CI-MESA: [[COPY7:%[0-9]+]]:_(s32) = COPY [[UV6]](s32) + ; CI-MESA: [[COPY8:%[0-9]+]]:_(s32) = COPY [[UV7]](s32) + ; CI-MESA: [[COPY9:%[0-9]+]]:_(s32) = COPY [[UV8]](s32) + ; CI-MESA: [[COPY10:%[0-9]+]]:_(s32) = COPY [[UV9]](s32) + ; CI-MESA: [[COPY11:%[0-9]+]]:_(s32) = COPY [[UV10]](s32) + ; CI-MESA: $vgpr0 = COPY [[COPY1]](s32) + ; CI-MESA: $vgpr1 = COPY [[COPY2]](s32) + ; CI-MESA: $vgpr2 = COPY [[COPY3]](s32) + ; CI-MESA: $vgpr3 = COPY [[COPY4]](s32) + ; CI-MESA: $vgpr4 = COPY [[COPY5]](s32) + ; CI-MESA: $vgpr5 = COPY [[COPY6]](s32) + ; CI-MESA: $vgpr6 = COPY [[COPY7]](s32) + ; CI-MESA: $vgpr7 = COPY [[COPY8]](s32) + ; CI-MESA: $vgpr8 = COPY [[COPY9]](s32) + ; CI-MESA: $vgpr9 = COPY [[COPY10]](s32) + ; CI-MESA: $vgpr10 = COPY [[COPY11]](s32) + ; VI-LABEL: name: test_load_global_v11s32_align4 + ; VI: [[COPY:%[0-9]+]]:_(p1) = COPY $sgpr0_sgpr1 + ; VI: [[LOAD:%[0-9]+]]:_(<8 x s32>) = G_LOAD [[COPY]](p1) :: (load (<8 x s32>), align 4, addrspace 1) + ; VI: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 32 + ; VI: [[PTR_ADD:%[0-9]+]]:_(p1) = G_PTR_ADD [[COPY]], [[C]](s64) + ; VI: [[LOAD1:%[0-9]+]]:_(<3 x s32>) = G_LOAD [[PTR_ADD]](p1) :: (load (<3 x s32>) from unknown-address + 32, align 4, addrspace 1) + ; VI: [[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) = G_UNMERGE_VALUES [[LOAD]](<8 x s32>) + ; VI: [[UV8:%[0-9]+]]:_(s32), [[UV9:%[0-9]+]]:_(s32), [[UV10:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[LOAD1]](<3 x s32>) + ; VI: [[COPY1:%[0-9]+]]:_(s32) = COPY [[UV]](s32) + ; VI: [[COPY2:%[0-9]+]]:_(s32) = COPY [[UV1]](s32) + ; VI: [[COPY3:%[0-9]+]]:_(s32) = COPY [[UV2]](s32) + ; VI: [[COPY4:%[0-9]+]]:_(s32) = COPY [[UV3]](s32) + ; VI: [[COPY5:%[0-9]+]]:_(s32) = COPY [[UV4]](s32) + ; VI: [[COPY6:%[0-9]+]]:_(s32) = COPY [[UV5]](s32) + ; VI: [[COPY7:%[0-9]+]]:_(s32) = COPY [[UV6]](s32) + ; VI: [[COPY8:%[0-9]+]]:_(s32) = COPY [[UV7]](s32) + ; VI: [[COPY9:%[0-9]+]]:_(s32) = COPY [[UV8]](s32) + ; VI: [[COPY10:%[0-9]+]]:_(s32) = COPY [[UV9]](s32) + ; VI: [[COPY11:%[0-9]+]]:_(s32) = COPY [[UV10]](s32) + ; VI: $vgpr0 = COPY [[COPY1]](s32) + ; VI: $vgpr1 = COPY [[COPY2]](s32) + ; VI: $vgpr2 = COPY [[COPY3]](s32) + ; VI: $vgpr3 = COPY [[COPY4]](s32) + ; VI: $vgpr4 = COPY [[COPY5]](s32) + ; VI: $vgpr5 = COPY [[COPY6]](s32) + ; VI: $vgpr6 = COPY [[COPY7]](s32) + ; VI: $vgpr7 = COPY [[COPY8]](s32) + ; VI: $vgpr8 = COPY [[COPY9]](s32) + ; VI: $vgpr9 = COPY [[COPY10]](s32) + ; VI: $vgpr10 = COPY [[COPY11]](s32) + ; GFX9-HSA-LABEL: name: test_load_global_v11s32_align4 + ; GFX9-HSA: [[COPY:%[0-9]+]]:_(p1) = COPY $sgpr0_sgpr1 + ; GFX9-HSA: [[LOAD:%[0-9]+]]:_(<8 x s32>) = G_LOAD [[COPY]](p1) :: (load (<8 x s32>), align 4, addrspace 1) + ; GFX9-HSA: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 32 + ; GFX9-HSA: [[PTR_ADD:%[0-9]+]]:_(p1) = G_PTR_ADD [[COPY]], [[C]](s64) + ; GFX9-HSA: [[LOAD1:%[0-9]+]]:_(<3 x s32>) = G_LOAD [[PTR_ADD]](p1) :: (load (<3 x s32>) from unknown-address + 32, align 4, addrspace 1) + ; GFX9-HSA: [[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) = G_UNMERGE_VALUES [[LOAD]](<8 x s32>) + ; GFX9-HSA: [[UV8:%[0-9]+]]:_(s32), [[UV9:%[0-9]+]]:_(s32), [[UV10:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[LOAD1]](<3 x s32>) + ; GFX9-HSA: [[COPY1:%[0-9]+]]:_(s32) = COPY [[UV]](s32) + ; GFX9-HSA: [[COPY2:%[0-9]+]]:_(s32) = COPY [[UV1]](s32) + ; GFX9-HSA: [[COPY3:%[0-9]+]]:_(s32) = COPY [[UV2]](s32) + ; GFX9-HSA: [[COPY4:%[0-9]+]]:_(s32) = COPY [[UV3]](s32) + ; GFX9-HSA: [[COPY5:%[0-9]+]]:_(s32) = COPY [[UV4]](s32) + ; GFX9-HSA: [[COPY6:%[0-9]+]]:_(s32) = COPY [[UV5]](s32) + ; GFX9-HSA: [[COPY7:%[0-9]+]]:_(s32) = COPY [[UV6]](s32) + ; GFX9-HSA: [[COPY8:%[0-9]+]]:_(s32) = COPY [[UV7]](s32) + ; GFX9-HSA: [[COPY9:%[0-9]+]]:_(s32) = COPY [[UV8]](s32) + ; GFX9-HSA: [[COPY10:%[0-9]+]]:_(s32) = COPY [[UV9]](s32) + ; GFX9-HSA: [[COPY11:%[0-9]+]]:_(s32) = COPY [[UV10]](s32) + ; GFX9-HSA: $vgpr0 = COPY [[COPY1]](s32) + ; GFX9-HSA: $vgpr1 = COPY [[COPY2]](s32) + ; GFX9-HSA: $vgpr2 = COPY [[COPY3]](s32) + ; GFX9-HSA: $vgpr3 = COPY [[COPY4]](s32) + ; GFX9-HSA: $vgpr4 = COPY [[COPY5]](s32) + ; GFX9-HSA: $vgpr5 = COPY [[COPY6]](s32) + ; GFX9-HSA: $vgpr6 = COPY [[COPY7]](s32) + ; GFX9-HSA: $vgpr7 = COPY [[COPY8]](s32) + ; GFX9-HSA: $vgpr8 = COPY [[COPY9]](s32) + ; GFX9-HSA: $vgpr9 = COPY [[COPY10]](s32) + ; GFX9-HSA: $vgpr10 = COPY [[COPY11]](s32) + ; GFX9-MESA-LABEL: name: test_load_global_v11s32_align4 + ; GFX9-MESA: [[COPY:%[0-9]+]]:_(p1) = COPY $sgpr0_sgpr1 + ; GFX9-MESA: [[LOAD:%[0-9]+]]:_(<8 x s32>) = G_LOAD [[COPY]](p1) :: (load (<8 x s32>), align 4, addrspace 1) + ; GFX9-MESA: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 32 + ; GFX9-MESA: [[PTR_ADD:%[0-9]+]]:_(p1) = G_PTR_ADD [[COPY]], [[C]](s64) + ; GFX9-MESA: [[LOAD1:%[0-9]+]]:_(<3 x s32>) = G_LOAD [[PTR_ADD]](p1) :: (load (<3 x s32>) from unknown-address + 32, align 4, addrspace 1) + ; GFX9-MESA: [[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) = G_UNMERGE_VALUES [[LOAD]](<8 x s32>) + ; GFX9-MESA: [[UV8:%[0-9]+]]:_(s32), [[UV9:%[0-9]+]]:_(s32), [[UV10:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[LOAD1]](<3 x s32>) + ; GFX9-MESA: [[COPY1:%[0-9]+]]:_(s32) = COPY [[UV]](s32) + ; GFX9-MESA: [[COPY2:%[0-9]+]]:_(s32) = COPY [[UV1]](s32) + ; GFX9-MESA: [[COPY3:%[0-9]+]]:_(s32) = COPY [[UV2]](s32) + ; GFX9-MESA: [[COPY4:%[0-9]+]]:_(s32) = COPY [[UV3]](s32) + ; GFX9-MESA: [[COPY5:%[0-9]+]]:_(s32) = COPY [[UV4]](s32) + ; GFX9-MESA: [[COPY6:%[0-9]+]]:_(s32) = COPY [[UV5]](s32) + ; GFX9-MESA: [[COPY7:%[0-9]+]]:_(s32) = COPY [[UV6]](s32) + ; GFX9-MESA: [[COPY8:%[0-9]+]]:_(s32) = COPY [[UV7]](s32) + ; GFX9-MESA: [[COPY9:%[0-9]+]]:_(s32) = COPY [[UV8]](s32) + ; GFX9-MESA: [[COPY10:%[0-9]+]]:_(s32) = COPY [[UV9]](s32) + ; GFX9-MESA: [[COPY11:%[0-9]+]]:_(s32) = COPY [[UV10]](s32) + ; GFX9-MESA: $vgpr0 = COPY [[COPY1]](s32) + ; GFX9-MESA: $vgpr1 = COPY [[COPY2]](s32) + ; GFX9-MESA: $vgpr2 = COPY [[COPY3]](s32) + ; GFX9-MESA: $vgpr3 = COPY [[COPY4]](s32) + ; GFX9-MESA: $vgpr4 = COPY [[COPY5]](s32) + ; GFX9-MESA: $vgpr5 = COPY [[COPY6]](s32) + ; GFX9-MESA: $vgpr6 = COPY [[COPY7]](s32) + ; GFX9-MESA: $vgpr7 = COPY [[COPY8]](s32) + ; GFX9-MESA: $vgpr8 = COPY [[COPY9]](s32) + ; GFX9-MESA: $vgpr9 = COPY [[COPY10]](s32) + ; GFX9-MESA: $vgpr10 = COPY [[COPY11]](s32) + %0:_(p1) = COPY $sgpr0_sgpr1 + %1:_(<11 x s32>) = G_LOAD %0(p1) :: (load 44, align 4, addrspace 1) + %2:_(s32) = G_EXTRACT %1, 0 + %3:_(s32) = G_EXTRACT %1, 32 + %4:_(s32) = G_EXTRACT %1, 64 + %5:_(s32) = G_EXTRACT %1, 96 + %6:_(s32) = G_EXTRACT %1, 128 + %7:_(s32) = G_EXTRACT %1, 160 + %8:_(s32) = G_EXTRACT %1, 192 + %9:_(s32) = G_EXTRACT %1, 224 + %10:_(s32) = G_EXTRACT %1, 256 + %11:_(s32) = G_EXTRACT %1, 288 + %12:_(s32) = G_EXTRACT %1, 320 + $vgpr0 = COPY %2 + $vgpr1 = COPY %3 + $vgpr2 = COPY %4 + $vgpr3 = COPY %5 + $vgpr4 = COPY %6 + $vgpr5 = COPY %7 + $vgpr6 = COPY %8 + $vgpr7 = COPY %9 + $vgpr8 = COPY %10 + $vgpr9 = COPY %11 + $vgpr10 = COPY %12 +... + +--- +name: test_load_global_v13s32_align4 +body: | + bb.0: + liveins: $sgpr0_sgpr1 + + ; SI-LABEL: name: test_load_global_v13s32_align4 + ; SI: [[COPY:%[0-9]+]]:_(s64) = COPY $sgpr0_sgpr1 + ; SI: [[INTTOPTR:%[0-9]+]]:_(p1) = G_INTTOPTR [[COPY]](s64) + ; SI: [[LOAD:%[0-9]+]]:_(<8 x s32>) = G_LOAD [[INTTOPTR]](p1) :: (load (<8 x s32>), align 4, addrspace 1) + ; SI: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 32 + ; SI: [[PTR_ADD:%[0-9]+]]:_(p1) = G_PTR_ADD [[INTTOPTR]], [[C]](s64) + ; SI: [[LOAD1:%[0-9]+]]:_(<4 x s32>) = G_LOAD [[PTR_ADD]](p1) :: (load (<4 x s32>) from unknown-address + 32, align 4, addrspace 1) + ; SI: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 16 + ; SI: [[PTR_ADD1:%[0-9]+]]:_(p1) = G_PTR_ADD [[PTR_ADD]], [[C1]](s64) + ; SI: [[LOAD2:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD1]](p1) :: (load (s32) from unknown-address + 48, addrspace 1) + ; SI: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[LOAD1]](<4 x s32>) + ; SI: [[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) = G_UNMERGE_VALUES [[LOAD]](<8 x s32>) + ; SI: [[COPY1:%[0-9]+]]:_(s32) = COPY [[UV4]](s32) + ; SI: [[COPY2:%[0-9]+]]:_(s32) = COPY [[UV5]](s32) + ; SI: [[COPY3:%[0-9]+]]:_(s32) = COPY [[UV6]](s32) + ; SI: [[COPY4:%[0-9]+]]:_(s32) = COPY [[UV7]](s32) + ; SI: [[COPY5:%[0-9]+]]:_(s32) = COPY [[UV8]](s32) + ; SI: [[COPY6:%[0-9]+]]:_(s32) = COPY [[UV9]](s32) + ; SI: [[COPY7:%[0-9]+]]:_(s32) = COPY [[UV10]](s32) + ; SI: [[COPY8:%[0-9]+]]:_(s32) = COPY [[UV11]](s32) + ; SI: [[COPY9:%[0-9]+]]:_(s32) = COPY [[UV]](s32) + ; SI: [[COPY10:%[0-9]+]]:_(s32) = COPY [[UV1]](s32) + ; SI: [[COPY11:%[0-9]+]]:_(s32) = COPY [[UV2]](s32) + ; SI: [[COPY12:%[0-9]+]]:_(s32) = COPY [[UV3]](s32) + ; SI: [[COPY13:%[0-9]+]]:_(s32) = COPY [[LOAD2]](s32) + ; SI: $vgpr0 = COPY [[COPY1]](s32) + ; SI: $vgpr1 = COPY [[COPY2]](s32) + ; SI: $vgpr2 = COPY [[COPY3]](s32) + ; SI: $vgpr3 = COPY [[COPY4]](s32) + ; SI: $vgpr4 = COPY [[COPY5]](s32) + ; SI: $vgpr5 = COPY [[COPY6]](s32) + ; SI: $vgpr6 = COPY [[COPY7]](s32) + ; SI: $vgpr7 = COPY [[COPY8]](s32) + ; SI: $vgpr8 = COPY [[COPY9]](s32) + ; SI: $vgpr9 = COPY [[COPY10]](s32) + ; SI: $vgpr10 = COPY [[COPY11]](s32) + ; SI: $vgpr11 = COPY [[COPY12]](s32) + ; SI: $vgpr12 = COPY [[COPY13]](s32) + ; CI-HSA-LABEL: name: test_load_global_v13s32_align4 + ; CI-HSA: [[COPY:%[0-9]+]]:_(s64) = COPY $sgpr0_sgpr1 + ; CI-HSA: [[INTTOPTR:%[0-9]+]]:_(p1) = G_INTTOPTR [[COPY]](s64) + ; CI-HSA: [[LOAD:%[0-9]+]]:_(<8 x s32>) = G_LOAD [[INTTOPTR]](p1) :: (load (<8 x s32>), align 4, addrspace 1) + ; CI-HSA: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 32 + ; CI-HSA: [[PTR_ADD:%[0-9]+]]:_(p1) = G_PTR_ADD [[INTTOPTR]], [[C]](s64) + ; CI-HSA: [[LOAD1:%[0-9]+]]:_(<4 x s32>) = G_LOAD [[PTR_ADD]](p1) :: (load (<4 x s32>) from unknown-address + 32, align 4, addrspace 1) + ; CI-HSA: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 16 + ; CI-HSA: [[PTR_ADD1:%[0-9]+]]:_(p1) = G_PTR_ADD [[PTR_ADD]], [[C1]](s64) + ; CI-HSA: [[LOAD2:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD1]](p1) :: (load (s32) from unknown-address + 48, addrspace 1) + ; CI-HSA: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[LOAD1]](<4 x s32>) + ; CI-HSA: [[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) = G_UNMERGE_VALUES [[LOAD]](<8 x s32>) + ; CI-HSA: [[COPY1:%[0-9]+]]:_(s32) = COPY [[UV4]](s32) + ; CI-HSA: [[COPY2:%[0-9]+]]:_(s32) = COPY [[UV5]](s32) + ; CI-HSA: [[COPY3:%[0-9]+]]:_(s32) = COPY [[UV6]](s32) + ; CI-HSA: [[COPY4:%[0-9]+]]:_(s32) = COPY [[UV7]](s32) + ; CI-HSA: [[COPY5:%[0-9]+]]:_(s32) = COPY [[UV8]](s32) + ; CI-HSA: [[COPY6:%[0-9]+]]:_(s32) = COPY [[UV9]](s32) + ; CI-HSA: [[COPY7:%[0-9]+]]:_(s32) = COPY [[UV10]](s32) + ; CI-HSA: [[COPY8:%[0-9]+]]:_(s32) = COPY [[UV11]](s32) + ; CI-HSA: [[COPY9:%[0-9]+]]:_(s32) = COPY [[UV]](s32) + ; CI-HSA: [[COPY10:%[0-9]+]]:_(s32) = COPY [[UV1]](s32) + ; CI-HSA: [[COPY11:%[0-9]+]]:_(s32) = COPY [[UV2]](s32) + ; CI-HSA: [[COPY12:%[0-9]+]]:_(s32) = COPY [[UV3]](s32) + ; CI-HSA: [[COPY13:%[0-9]+]]:_(s32) = COPY [[LOAD2]](s32) + ; CI-HSA: $vgpr0 = COPY [[COPY1]](s32) + ; CI-HSA: $vgpr1 = COPY [[COPY2]](s32) + ; CI-HSA: $vgpr2 = COPY [[COPY3]](s32) + ; CI-HSA: $vgpr3 = COPY [[COPY4]](s32) + ; CI-HSA: $vgpr4 = COPY [[COPY5]](s32) + ; CI-HSA: $vgpr5 = COPY [[COPY6]](s32) + ; CI-HSA: $vgpr6 = COPY [[COPY7]](s32) + ; CI-HSA: $vgpr7 = COPY [[COPY8]](s32) + ; CI-HSA: $vgpr8 = COPY [[COPY9]](s32) + ; CI-HSA: $vgpr9 = COPY [[COPY10]](s32) + ; CI-HSA: $vgpr10 = COPY [[COPY11]](s32) + ; CI-HSA: $vgpr11 = COPY [[COPY12]](s32) + ; CI-HSA: $vgpr12 = COPY [[COPY13]](s32) + ; CI-MESA-LABEL: name: test_load_global_v13s32_align4 + ; CI-MESA: [[COPY:%[0-9]+]]:_(s64) = COPY $sgpr0_sgpr1 + ; CI-MESA: [[INTTOPTR:%[0-9]+]]:_(p1) = G_INTTOPTR [[COPY]](s64) + ; CI-MESA: [[LOAD:%[0-9]+]]:_(<8 x s32>) = G_LOAD [[INTTOPTR]](p1) :: (load (<8 x s32>), align 4, addrspace 1) + ; CI-MESA: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 32 + ; CI-MESA: [[PTR_ADD:%[0-9]+]]:_(p1) = G_PTR_ADD [[INTTOPTR]], [[C]](s64) + ; CI-MESA: [[LOAD1:%[0-9]+]]:_(<4 x s32>) = G_LOAD [[PTR_ADD]](p1) :: (load (<4 x s32>) from unknown-address + 32, align 4, addrspace 1) + ; CI-MESA: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 16 + ; CI-MESA: [[PTR_ADD1:%[0-9]+]]:_(p1) = G_PTR_ADD [[PTR_ADD]], [[C1]](s64) + ; CI-MESA: [[LOAD2:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD1]](p1) :: (load (s32) from unknown-address + 48, addrspace 1) + ; CI-MESA: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[LOAD1]](<4 x s32>) + ; CI-MESA: [[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) = G_UNMERGE_VALUES [[LOAD]](<8 x s32>) + ; CI-MESA: [[COPY1:%[0-9]+]]:_(s32) = COPY [[UV4]](s32) + ; CI-MESA: [[COPY2:%[0-9]+]]:_(s32) = COPY [[UV5]](s32) + ; CI-MESA: [[COPY3:%[0-9]+]]:_(s32) = COPY [[UV6]](s32) + ; CI-MESA: [[COPY4:%[0-9]+]]:_(s32) = COPY [[UV7]](s32) + ; CI-MESA: [[COPY5:%[0-9]+]]:_(s32) = COPY [[UV8]](s32) + ; CI-MESA: [[COPY6:%[0-9]+]]:_(s32) = COPY [[UV9]](s32) + ; CI-MESA: [[COPY7:%[0-9]+]]:_(s32) = COPY [[UV10]](s32) + ; CI-MESA: [[COPY8:%[0-9]+]]:_(s32) = COPY [[UV11]](s32) + ; CI-MESA: [[COPY9:%[0-9]+]]:_(s32) = COPY [[UV]](s32) + ; CI-MESA: [[COPY10:%[0-9]+]]:_(s32) = COPY [[UV1]](s32) + ; CI-MESA: [[COPY11:%[0-9]+]]:_(s32) = COPY [[UV2]](s32) + ; CI-MESA: [[COPY12:%[0-9]+]]:_(s32) = COPY [[UV3]](s32) + ; CI-MESA: [[COPY13:%[0-9]+]]:_(s32) = COPY [[LOAD2]](s32) + ; CI-MESA: $vgpr0 = COPY [[COPY1]](s32) + ; CI-MESA: $vgpr1 = COPY [[COPY2]](s32) + ; CI-MESA: $vgpr2 = COPY [[COPY3]](s32) + ; CI-MESA: $vgpr3 = COPY [[COPY4]](s32) + ; CI-MESA: $vgpr4 = COPY [[COPY5]](s32) + ; CI-MESA: $vgpr5 = COPY [[COPY6]](s32) + ; CI-MESA: $vgpr6 = COPY [[COPY7]](s32) + ; CI-MESA: $vgpr7 = COPY [[COPY8]](s32) + ; CI-MESA: $vgpr8 = COPY [[COPY9]](s32) + ; CI-MESA: $vgpr9 = COPY [[COPY10]](s32) + ; CI-MESA: $vgpr10 = COPY [[COPY11]](s32) + ; CI-MESA: $vgpr11 = COPY [[COPY12]](s32) + ; CI-MESA: $vgpr12 = COPY [[COPY13]](s32) + ; VI-LABEL: name: test_load_global_v13s32_align4 + ; VI: [[COPY:%[0-9]+]]:_(s64) = COPY $sgpr0_sgpr1 + ; VI: [[INTTOPTR:%[0-9]+]]:_(p1) = G_INTTOPTR [[COPY]](s64) + ; VI: [[LOAD:%[0-9]+]]:_(<8 x s32>) = G_LOAD [[INTTOPTR]](p1) :: (load (<8 x s32>), align 4, addrspace 1) + ; VI: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 32 + ; VI: [[PTR_ADD:%[0-9]+]]:_(p1) = G_PTR_ADD [[INTTOPTR]], [[C]](s64) + ; VI: [[LOAD1:%[0-9]+]]:_(<4 x s32>) = G_LOAD [[PTR_ADD]](p1) :: (load (<4 x s32>) from unknown-address + 32, align 4, addrspace 1) + ; VI: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 16 + ; VI: [[PTR_ADD1:%[0-9]+]]:_(p1) = G_PTR_ADD [[PTR_ADD]], [[C1]](s64) + ; VI: [[LOAD2:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD1]](p1) :: (load (s32) from unknown-address + 48, addrspace 1) + ; VI: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[LOAD1]](<4 x s32>) + ; VI: [[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) = G_UNMERGE_VALUES [[LOAD]](<8 x s32>) + ; VI: [[COPY1:%[0-9]+]]:_(s32) = COPY [[UV4]](s32) + ; VI: [[COPY2:%[0-9]+]]:_(s32) = COPY [[UV5]](s32) + ; VI: [[COPY3:%[0-9]+]]:_(s32) = COPY [[UV6]](s32) + ; VI: [[COPY4:%[0-9]+]]:_(s32) = COPY [[UV7]](s32) + ; VI: [[COPY5:%[0-9]+]]:_(s32) = COPY [[UV8]](s32) + ; VI: [[COPY6:%[0-9]+]]:_(s32) = COPY [[UV9]](s32) + ; VI: [[COPY7:%[0-9]+]]:_(s32) = COPY [[UV10]](s32) + ; VI: [[COPY8:%[0-9]+]]:_(s32) = COPY [[UV11]](s32) + ; VI: [[COPY9:%[0-9]+]]:_(s32) = COPY [[UV]](s32) + ; VI: [[COPY10:%[0-9]+]]:_(s32) = COPY [[UV1]](s32) + ; VI: [[COPY11:%[0-9]+]]:_(s32) = COPY [[UV2]](s32) + ; VI: [[COPY12:%[0-9]+]]:_(s32) = COPY [[UV3]](s32) + ; VI: [[COPY13:%[0-9]+]]:_(s32) = COPY [[LOAD2]](s32) + ; VI: $vgpr0 = COPY [[COPY1]](s32) + ; VI: $vgpr1 = COPY [[COPY2]](s32) + ; VI: $vgpr2 = COPY [[COPY3]](s32) + ; VI: $vgpr3 = COPY [[COPY4]](s32) + ; VI: $vgpr4 = COPY [[COPY5]](s32) + ; VI: $vgpr5 = COPY [[COPY6]](s32) + ; VI: $vgpr6 = COPY [[COPY7]](s32) + ; VI: $vgpr7 = COPY [[COPY8]](s32) + ; VI: $vgpr8 = COPY [[COPY9]](s32) + ; VI: $vgpr9 = COPY [[COPY10]](s32) + ; VI: $vgpr10 = COPY [[COPY11]](s32) + ; VI: $vgpr11 = COPY [[COPY12]](s32) + ; VI: $vgpr12 = COPY [[COPY13]](s32) + ; GFX9-HSA-LABEL: name: test_load_global_v13s32_align4 + ; GFX9-HSA: [[COPY:%[0-9]+]]:_(s64) = COPY $sgpr0_sgpr1 + ; GFX9-HSA: [[INTTOPTR:%[0-9]+]]:_(p1) = G_INTTOPTR [[COPY]](s64) + ; GFX9-HSA: [[LOAD:%[0-9]+]]:_(<8 x s32>) = G_LOAD [[INTTOPTR]](p1) :: (load (<8 x s32>), align 4, addrspace 1) + ; GFX9-HSA: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 32 + ; GFX9-HSA: [[PTR_ADD:%[0-9]+]]:_(p1) = G_PTR_ADD [[INTTOPTR]], [[C]](s64) + ; GFX9-HSA: [[LOAD1:%[0-9]+]]:_(<4 x s32>) = G_LOAD [[PTR_ADD]](p1) :: (load (<4 x s32>) from unknown-address + 32, align 4, addrspace 1) + ; GFX9-HSA: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 16 + ; GFX9-HSA: [[PTR_ADD1:%[0-9]+]]:_(p1) = G_PTR_ADD [[PTR_ADD]], [[C1]](s64) + ; GFX9-HSA: [[LOAD2:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD1]](p1) :: (load (s32) from unknown-address + 48, addrspace 1) + ; GFX9-HSA: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[LOAD1]](<4 x s32>) + ; GFX9-HSA: [[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) = G_UNMERGE_VALUES [[LOAD]](<8 x s32>) + ; GFX9-HSA: [[COPY1:%[0-9]+]]:_(s32) = COPY [[UV4]](s32) + ; GFX9-HSA: [[COPY2:%[0-9]+]]:_(s32) = COPY [[UV5]](s32) + ; GFX9-HSA: [[COPY3:%[0-9]+]]:_(s32) = COPY [[UV6]](s32) + ; GFX9-HSA: [[COPY4:%[0-9]+]]:_(s32) = COPY [[UV7]](s32) + ; GFX9-HSA: [[COPY5:%[0-9]+]]:_(s32) = COPY [[UV8]](s32) + ; GFX9-HSA: [[COPY6:%[0-9]+]]:_(s32) = COPY [[UV9]](s32) + ; GFX9-HSA: [[COPY7:%[0-9]+]]:_(s32) = COPY [[UV10]](s32) + ; GFX9-HSA: [[COPY8:%[0-9]+]]:_(s32) = COPY [[UV11]](s32) + ; GFX9-HSA: [[COPY9:%[0-9]+]]:_(s32) = COPY [[UV]](s32) + ; GFX9-HSA: [[COPY10:%[0-9]+]]:_(s32) = COPY [[UV1]](s32) + ; GFX9-HSA: [[COPY11:%[0-9]+]]:_(s32) = COPY [[UV2]](s32) + ; GFX9-HSA: [[COPY12:%[0-9]+]]:_(s32) = COPY [[UV3]](s32) + ; GFX9-HSA: [[COPY13:%[0-9]+]]:_(s32) = COPY [[LOAD2]](s32) + ; GFX9-HSA: $vgpr0 = COPY [[COPY1]](s32) + ; GFX9-HSA: $vgpr1 = COPY [[COPY2]](s32) + ; GFX9-HSA: $vgpr2 = COPY [[COPY3]](s32) + ; GFX9-HSA: $vgpr3 = COPY [[COPY4]](s32) + ; GFX9-HSA: $vgpr4 = COPY [[COPY5]](s32) + ; GFX9-HSA: $vgpr5 = COPY [[COPY6]](s32) + ; GFX9-HSA: $vgpr6 = COPY [[COPY7]](s32) + ; GFX9-HSA: $vgpr7 = COPY [[COPY8]](s32) + ; GFX9-HSA: $vgpr8 = COPY [[COPY9]](s32) + ; GFX9-HSA: $vgpr9 = COPY [[COPY10]](s32) + ; GFX9-HSA: $vgpr10 = COPY [[COPY11]](s32) + ; GFX9-HSA: $vgpr11 = COPY [[COPY12]](s32) + ; GFX9-HSA: $vgpr12 = COPY [[COPY13]](s32) + ; GFX9-MESA-LABEL: name: test_load_global_v13s32_align4 + ; GFX9-MESA: [[COPY:%[0-9]+]]:_(s64) = COPY $sgpr0_sgpr1 + ; GFX9-MESA: [[INTTOPTR:%[0-9]+]]:_(p1) = G_INTTOPTR [[COPY]](s64) + ; GFX9-MESA: [[LOAD:%[0-9]+]]:_(<8 x s32>) = G_LOAD [[INTTOPTR]](p1) :: (load (<8 x s32>), align 4, addrspace 1) + ; GFX9-MESA: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 32 + ; GFX9-MESA: [[PTR_ADD:%[0-9]+]]:_(p1) = G_PTR_ADD [[INTTOPTR]], [[C]](s64) + ; GFX9-MESA: [[LOAD1:%[0-9]+]]:_(<4 x s32>) = G_LOAD [[PTR_ADD]](p1) :: (load (<4 x s32>) from unknown-address + 32, align 4, addrspace 1) + ; GFX9-MESA: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 16 + ; GFX9-MESA: [[PTR_ADD1:%[0-9]+]]:_(p1) = G_PTR_ADD [[PTR_ADD]], [[C1]](s64) + ; GFX9-MESA: [[LOAD2:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD1]](p1) :: (load (s32) from unknown-address + 48, addrspace 1) + ; GFX9-MESA: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[LOAD1]](<4 x s32>) + ; GFX9-MESA: [[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) = G_UNMERGE_VALUES [[LOAD]](<8 x s32>) + ; GFX9-MESA: [[COPY1:%[0-9]+]]:_(s32) = COPY [[UV4]](s32) + ; GFX9-MESA: [[COPY2:%[0-9]+]]:_(s32) = COPY [[UV5]](s32) + ; GFX9-MESA: [[COPY3:%[0-9]+]]:_(s32) = COPY [[UV6]](s32) + ; GFX9-MESA: [[COPY4:%[0-9]+]]:_(s32) = COPY [[UV7]](s32) + ; GFX9-MESA: [[COPY5:%[0-9]+]]:_(s32) = COPY [[UV8]](s32) + ; GFX9-MESA: [[COPY6:%[0-9]+]]:_(s32) = COPY [[UV9]](s32) + ; GFX9-MESA: [[COPY7:%[0-9]+]]:_(s32) = COPY [[UV10]](s32) + ; GFX9-MESA: [[COPY8:%[0-9]+]]:_(s32) = COPY [[UV11]](s32) + ; GFX9-MESA: [[COPY9:%[0-9]+]]:_(s32) = COPY [[UV]](s32) + ; GFX9-MESA: [[COPY10:%[0-9]+]]:_(s32) = COPY [[UV1]](s32) + ; GFX9-MESA: [[COPY11:%[0-9]+]]:_(s32) = COPY [[UV2]](s32) + ; GFX9-MESA: [[COPY12:%[0-9]+]]:_(s32) = COPY [[UV3]](s32) + ; GFX9-MESA: [[COPY13:%[0-9]+]]:_(s32) = COPY [[LOAD2]](s32) + ; GFX9-MESA: $vgpr0 = COPY [[COPY1]](s32) + ; GFX9-MESA: $vgpr1 = COPY [[COPY2]](s32) + ; GFX9-MESA: $vgpr2 = COPY [[COPY3]](s32) + ; GFX9-MESA: $vgpr3 = COPY [[COPY4]](s32) + ; GFX9-MESA: $vgpr4 = COPY [[COPY5]](s32) + ; GFX9-MESA: $vgpr5 = COPY [[COPY6]](s32) + ; GFX9-MESA: $vgpr6 = COPY [[COPY7]](s32) + ; GFX9-MESA: $vgpr7 = COPY [[COPY8]](s32) + ; GFX9-MESA: $vgpr8 = COPY [[COPY9]](s32) + ; GFX9-MESA: $vgpr9 = COPY [[COPY10]](s32) + ; GFX9-MESA: $vgpr10 = COPY [[COPY11]](s32) + ; GFX9-MESA: $vgpr11 = COPY [[COPY12]](s32) + ; GFX9-MESA: $vgpr12 = COPY [[COPY13]](s32) + %0:_(s64) = COPY $sgpr0_sgpr1 + %1:_(p1) = G_INTTOPTR %0(s64) + %2:_(<13 x s32>) = G_LOAD %1(p1) :: (load 52, align 4, addrspace 1) + %3:_(s32) = G_EXTRACT %2, 0 + %4:_(s32) = G_EXTRACT %2, 32 + %5:_(s32) = G_EXTRACT %2, 64 + %6:_(s32) = G_EXTRACT %2, 96 + %7:_(s32) = G_EXTRACT %2, 128 + %8:_(s32) = G_EXTRACT %2, 160 + %9:_(s32) = G_EXTRACT %2, 192 + %10:_(s32) = G_EXTRACT %2, 224 + %11:_(s32) = G_EXTRACT %2, 256 + %12:_(s32) = G_EXTRACT %2, 288 + %13:_(s32) = G_EXTRACT %2, 320 + %14:_(s32) = G_EXTRACT %2, 352 + %15:_(s32) = G_EXTRACT %2, 384 + $vgpr0 = COPY %3 + $vgpr1 = COPY %4 + $vgpr2 = COPY %5 + $vgpr3 = COPY %6 + $vgpr4 = COPY %7 + $vgpr5 = COPY %8 + $vgpr6 = COPY %9 + $vgpr7 = COPY %10 + $vgpr8 = COPY %11 + $vgpr9 = COPY %12 + $vgpr10 = COPY %13 + $vgpr11 = COPY %14 + $vgpr12 = COPY %15 +... + +--- +name: test_load_global_v14s32_align4 +body: | + bb.0: + liveins: $sgpr0_sgpr1 + + ; SI-LABEL: name: test_load_global_v14s32_align4 + ; SI: [[COPY:%[0-9]+]]:_(s64) = COPY $sgpr0_sgpr1 + ; SI: [[INTTOPTR:%[0-9]+]]:_(p1) = G_INTTOPTR [[COPY]](s64) + ; SI: [[LOAD:%[0-9]+]]:_(<8 x s32>) = G_LOAD [[INTTOPTR]](p1) :: (load (<8 x s32>), align 4, addrspace 1) + ; SI: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 32 + ; SI: [[PTR_ADD:%[0-9]+]]:_(p1) = G_PTR_ADD [[INTTOPTR]], [[C]](s64) + ; SI: [[LOAD1:%[0-9]+]]:_(<4 x s32>) = G_LOAD [[PTR_ADD]](p1) :: (load (<4 x s32>) from unknown-address + 32, align 4, addrspace 1) + ; SI: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 16 + ; SI: [[PTR_ADD1:%[0-9]+]]:_(p1) = G_PTR_ADD [[PTR_ADD]], [[C1]](s64) + ; SI: [[LOAD2:%[0-9]+]]:_(<2 x s32>) = G_LOAD [[PTR_ADD1]](p1) :: (load (<2 x s32>) from unknown-address + 48, align 4, addrspace 1) + ; SI: [[UV:%[0-9]+]]:_(<2 x s32>), [[UV1:%[0-9]+]]:_(<2 x s32>) = G_UNMERGE_VALUES [[LOAD1]](<4 x s32>) + ; SI: [[UV2:%[0-9]+]]:_(<2 x s32>), [[UV3:%[0-9]+]]:_(<2 x s32>), [[UV4:%[0-9]+]]:_(<2 x s32>), [[UV5:%[0-9]+]]:_(<2 x s32>) = G_UNMERGE_VALUES [[LOAD]](<8 x s32>) + ; SI: [[EXTRACT:%[0-9]+]]:_(s32) = G_EXTRACT [[UV2]](<2 x s32>), 0 + ; SI: [[EXTRACT1:%[0-9]+]]:_(s32) = G_EXTRACT [[UV2]](<2 x s32>), 32 + ; SI: [[EXTRACT2:%[0-9]+]]:_(s32) = G_EXTRACT [[UV3]](<2 x s32>), 0 + ; SI: [[EXTRACT3:%[0-9]+]]:_(s32) = G_EXTRACT [[UV3]](<2 x s32>), 32 + ; SI: [[EXTRACT4:%[0-9]+]]:_(s32) = G_EXTRACT [[UV4]](<2 x s32>), 0 + ; SI: [[EXTRACT5:%[0-9]+]]:_(s32) = G_EXTRACT [[UV4]](<2 x s32>), 32 + ; SI: [[EXTRACT6:%[0-9]+]]:_(s32) = G_EXTRACT [[UV5]](<2 x s32>), 0 + ; SI: [[EXTRACT7:%[0-9]+]]:_(s32) = G_EXTRACT [[UV5]](<2 x s32>), 32 + ; SI: [[EXTRACT8:%[0-9]+]]:_(s32) = G_EXTRACT [[UV]](<2 x s32>), 0 + ; SI: [[EXTRACT9:%[0-9]+]]:_(s32) = G_EXTRACT [[UV]](<2 x s32>), 32 + ; SI: [[EXTRACT10:%[0-9]+]]:_(s32) = G_EXTRACT [[UV1]](<2 x s32>), 0 + ; SI: [[EXTRACT11:%[0-9]+]]:_(s32) = G_EXTRACT [[UV1]](<2 x s32>), 32 + ; SI: [[EXTRACT12:%[0-9]+]]:_(s32) = G_EXTRACT [[LOAD2]](<2 x s32>), 0 + ; SI: [[EXTRACT13:%[0-9]+]]:_(s32) = G_EXTRACT [[LOAD2]](<2 x s32>), 32 + ; SI: $vgpr0 = COPY [[EXTRACT]](s32) + ; SI: $vgpr1 = COPY [[EXTRACT1]](s32) + ; SI: $vgpr2 = COPY [[EXTRACT2]](s32) + ; SI: $vgpr3 = COPY [[EXTRACT3]](s32) + ; SI: $vgpr4 = COPY [[EXTRACT4]](s32) + ; SI: $vgpr5 = COPY [[EXTRACT5]](s32) + ; SI: $vgpr6 = COPY [[EXTRACT6]](s32) + ; SI: $vgpr7 = COPY [[EXTRACT7]](s32) + ; SI: $vgpr8 = COPY [[EXTRACT8]](s32) + ; SI: $vgpr9 = COPY [[EXTRACT9]](s32) + ; SI: $vgpr10 = COPY [[EXTRACT10]](s32) + ; SI: $vgpr11 = COPY [[EXTRACT11]](s32) + ; SI: $vgpr12 = COPY [[EXTRACT12]](s32) + ; SI: $vgpr13 = COPY [[EXTRACT13]](s32) + ; CI-HSA-LABEL: name: test_load_global_v14s32_align4 + ; CI-HSA: [[COPY:%[0-9]+]]:_(s64) = COPY $sgpr0_sgpr1 + ; CI-HSA: [[INTTOPTR:%[0-9]+]]:_(p1) = G_INTTOPTR [[COPY]](s64) + ; CI-HSA: [[LOAD:%[0-9]+]]:_(<8 x s32>) = G_LOAD [[INTTOPTR]](p1) :: (load (<8 x s32>), align 4, addrspace 1) + ; CI-HSA: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 32 + ; CI-HSA: [[PTR_ADD:%[0-9]+]]:_(p1) = G_PTR_ADD [[INTTOPTR]], [[C]](s64) + ; CI-HSA: [[LOAD1:%[0-9]+]]:_(<4 x s32>) = G_LOAD [[PTR_ADD]](p1) :: (load (<4 x s32>) from unknown-address + 32, align 4, addrspace 1) + ; CI-HSA: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 16 + ; CI-HSA: [[PTR_ADD1:%[0-9]+]]:_(p1) = G_PTR_ADD [[PTR_ADD]], [[C1]](s64) + ; CI-HSA: [[LOAD2:%[0-9]+]]:_(<2 x s32>) = G_LOAD [[PTR_ADD1]](p1) :: (load (<2 x s32>) from unknown-address + 48, align 4, addrspace 1) + ; CI-HSA: [[UV:%[0-9]+]]:_(<2 x s32>), [[UV1:%[0-9]+]]:_(<2 x s32>) = G_UNMERGE_VALUES [[LOAD1]](<4 x s32>) + ; CI-HSA: [[UV2:%[0-9]+]]:_(<2 x s32>), [[UV3:%[0-9]+]]:_(<2 x s32>), [[UV4:%[0-9]+]]:_(<2 x s32>), [[UV5:%[0-9]+]]:_(<2 x s32>) = G_UNMERGE_VALUES [[LOAD]](<8 x s32>) + ; CI-HSA: [[EXTRACT:%[0-9]+]]:_(s32) = G_EXTRACT [[UV2]](<2 x s32>), 0 + ; CI-HSA: [[EXTRACT1:%[0-9]+]]:_(s32) = G_EXTRACT [[UV2]](<2 x s32>), 32 + ; CI-HSA: [[EXTRACT2:%[0-9]+]]:_(s32) = G_EXTRACT [[UV3]](<2 x s32>), 0 + ; CI-HSA: [[EXTRACT3:%[0-9]+]]:_(s32) = G_EXTRACT [[UV3]](<2 x s32>), 32 + ; CI-HSA: [[EXTRACT4:%[0-9]+]]:_(s32) = G_EXTRACT [[UV4]](<2 x s32>), 0 + ; CI-HSA: [[EXTRACT5:%[0-9]+]]:_(s32) = G_EXTRACT [[UV4]](<2 x s32>), 32 + ; CI-HSA: [[EXTRACT6:%[0-9]+]]:_(s32) = G_EXTRACT [[UV5]](<2 x s32>), 0 + ; CI-HSA: [[EXTRACT7:%[0-9]+]]:_(s32) = G_EXTRACT [[UV5]](<2 x s32>), 32 + ; CI-HSA: [[EXTRACT8:%[0-9]+]]:_(s32) = G_EXTRACT [[UV]](<2 x s32>), 0 + ; CI-HSA: [[EXTRACT9:%[0-9]+]]:_(s32) = G_EXTRACT [[UV]](<2 x s32>), 32 + ; CI-HSA: [[EXTRACT10:%[0-9]+]]:_(s32) = G_EXTRACT [[UV1]](<2 x s32>), 0 + ; CI-HSA: [[EXTRACT11:%[0-9]+]]:_(s32) = G_EXTRACT [[UV1]](<2 x s32>), 32 + ; CI-HSA: [[EXTRACT12:%[0-9]+]]:_(s32) = G_EXTRACT [[LOAD2]](<2 x s32>), 0 + ; CI-HSA: [[EXTRACT13:%[0-9]+]]:_(s32) = G_EXTRACT [[LOAD2]](<2 x s32>), 32 + ; CI-HSA: $vgpr0 = COPY [[EXTRACT]](s32) + ; CI-HSA: $vgpr1 = COPY [[EXTRACT1]](s32) + ; CI-HSA: $vgpr2 = COPY [[EXTRACT2]](s32) + ; CI-HSA: $vgpr3 = COPY [[EXTRACT3]](s32) + ; CI-HSA: $vgpr4 = COPY [[EXTRACT4]](s32) + ; CI-HSA: $vgpr5 = COPY [[EXTRACT5]](s32) + ; CI-HSA: $vgpr6 = COPY [[EXTRACT6]](s32) + ; CI-HSA: $vgpr7 = COPY [[EXTRACT7]](s32) + ; CI-HSA: $vgpr8 = COPY [[EXTRACT8]](s32) + ; CI-HSA: $vgpr9 = COPY [[EXTRACT9]](s32) + ; CI-HSA: $vgpr10 = COPY [[EXTRACT10]](s32) + ; CI-HSA: $vgpr11 = COPY [[EXTRACT11]](s32) + ; CI-HSA: $vgpr12 = COPY [[EXTRACT12]](s32) + ; CI-HSA: $vgpr13 = COPY [[EXTRACT13]](s32) + ; CI-MESA-LABEL: name: test_load_global_v14s32_align4 + ; CI-MESA: [[COPY:%[0-9]+]]:_(s64) = COPY $sgpr0_sgpr1 + ; CI-MESA: [[INTTOPTR:%[0-9]+]]:_(p1) = G_INTTOPTR [[COPY]](s64) + ; CI-MESA: [[LOAD:%[0-9]+]]:_(<8 x s32>) = G_LOAD [[INTTOPTR]](p1) :: (load (<8 x s32>), align 4, addrspace 1) + ; CI-MESA: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 32 + ; CI-MESA: [[PTR_ADD:%[0-9]+]]:_(p1) = G_PTR_ADD [[INTTOPTR]], [[C]](s64) + ; CI-MESA: [[LOAD1:%[0-9]+]]:_(<4 x s32>) = G_LOAD [[PTR_ADD]](p1) :: (load (<4 x s32>) from unknown-address + 32, align 4, addrspace 1) + ; CI-MESA: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 16 + ; CI-MESA: [[PTR_ADD1:%[0-9]+]]:_(p1) = G_PTR_ADD [[PTR_ADD]], [[C1]](s64) + ; CI-MESA: [[LOAD2:%[0-9]+]]:_(<2 x s32>) = G_LOAD [[PTR_ADD1]](p1) :: (load (<2 x s32>) from unknown-address + 48, align 4, addrspace 1) + ; CI-MESA: [[UV:%[0-9]+]]:_(<2 x s32>), [[UV1:%[0-9]+]]:_(<2 x s32>) = G_UNMERGE_VALUES [[LOAD1]](<4 x s32>) + ; CI-MESA: [[UV2:%[0-9]+]]:_(<2 x s32>), [[UV3:%[0-9]+]]:_(<2 x s32>), [[UV4:%[0-9]+]]:_(<2 x s32>), [[UV5:%[0-9]+]]:_(<2 x s32>) = G_UNMERGE_VALUES [[LOAD]](<8 x s32>) + ; CI-MESA: [[EXTRACT:%[0-9]+]]:_(s32) = G_EXTRACT [[UV2]](<2 x s32>), 0 + ; CI-MESA: [[EXTRACT1:%[0-9]+]]:_(s32) = G_EXTRACT [[UV2]](<2 x s32>), 32 + ; CI-MESA: [[EXTRACT2:%[0-9]+]]:_(s32) = G_EXTRACT [[UV3]](<2 x s32>), 0 + ; CI-MESA: [[EXTRACT3:%[0-9]+]]:_(s32) = G_EXTRACT [[UV3]](<2 x s32>), 32 + ; CI-MESA: [[EXTRACT4:%[0-9]+]]:_(s32) = G_EXTRACT [[UV4]](<2 x s32>), 0 + ; CI-MESA: [[EXTRACT5:%[0-9]+]]:_(s32) = G_EXTRACT [[UV4]](<2 x s32>), 32 + ; CI-MESA: [[EXTRACT6:%[0-9]+]]:_(s32) = G_EXTRACT [[UV5]](<2 x s32>), 0 + ; CI-MESA: [[EXTRACT7:%[0-9]+]]:_(s32) = G_EXTRACT [[UV5]](<2 x s32>), 32 + ; CI-MESA: [[EXTRACT8:%[0-9]+]]:_(s32) = G_EXTRACT [[UV]](<2 x s32>), 0 + ; CI-MESA: [[EXTRACT9:%[0-9]+]]:_(s32) = G_EXTRACT [[UV]](<2 x s32>), 32 + ; CI-MESA: [[EXTRACT10:%[0-9]+]]:_(s32) = G_EXTRACT [[UV1]](<2 x s32>), 0 + ; CI-MESA: [[EXTRACT11:%[0-9]+]]:_(s32) = G_EXTRACT [[UV1]](<2 x s32>), 32 + ; CI-MESA: [[EXTRACT12:%[0-9]+]]:_(s32) = G_EXTRACT [[LOAD2]](<2 x s32>), 0 + ; CI-MESA: [[EXTRACT13:%[0-9]+]]:_(s32) = G_EXTRACT [[LOAD2]](<2 x s32>), 32 + ; CI-MESA: $vgpr0 = COPY [[EXTRACT]](s32) + ; CI-MESA: $vgpr1 = COPY [[EXTRACT1]](s32) + ; CI-MESA: $vgpr2 = COPY [[EXTRACT2]](s32) + ; CI-MESA: $vgpr3 = COPY [[EXTRACT3]](s32) + ; CI-MESA: $vgpr4 = COPY [[EXTRACT4]](s32) + ; CI-MESA: $vgpr5 = COPY [[EXTRACT5]](s32) + ; CI-MESA: $vgpr6 = COPY [[EXTRACT6]](s32) + ; CI-MESA: $vgpr7 = COPY [[EXTRACT7]](s32) + ; CI-MESA: $vgpr8 = COPY [[EXTRACT8]](s32) + ; CI-MESA: $vgpr9 = COPY [[EXTRACT9]](s32) + ; CI-MESA: $vgpr10 = COPY [[EXTRACT10]](s32) + ; CI-MESA: $vgpr11 = COPY [[EXTRACT11]](s32) + ; CI-MESA: $vgpr12 = COPY [[EXTRACT12]](s32) + ; CI-MESA: $vgpr13 = COPY [[EXTRACT13]](s32) + ; VI-LABEL: name: test_load_global_v14s32_align4 + ; VI: [[COPY:%[0-9]+]]:_(s64) = COPY $sgpr0_sgpr1 + ; VI: [[INTTOPTR:%[0-9]+]]:_(p1) = G_INTTOPTR [[COPY]](s64) + ; VI: [[LOAD:%[0-9]+]]:_(<8 x s32>) = G_LOAD [[INTTOPTR]](p1) :: (load (<8 x s32>), align 4, addrspace 1) + ; VI: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 32 + ; VI: [[PTR_ADD:%[0-9]+]]:_(p1) = G_PTR_ADD [[INTTOPTR]], [[C]](s64) + ; VI: [[LOAD1:%[0-9]+]]:_(<4 x s32>) = G_LOAD [[PTR_ADD]](p1) :: (load (<4 x s32>) from unknown-address + 32, align 4, addrspace 1) + ; VI: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 16 + ; VI: [[PTR_ADD1:%[0-9]+]]:_(p1) = G_PTR_ADD [[PTR_ADD]], [[C1]](s64) + ; VI: [[LOAD2:%[0-9]+]]:_(<2 x s32>) = G_LOAD [[PTR_ADD1]](p1) :: (load (<2 x s32>) from unknown-address + 48, align 4, addrspace 1) + ; VI: [[UV:%[0-9]+]]:_(<2 x s32>), [[UV1:%[0-9]+]]:_(<2 x s32>) = G_UNMERGE_VALUES [[LOAD1]](<4 x s32>) + ; VI: [[UV2:%[0-9]+]]:_(<2 x s32>), [[UV3:%[0-9]+]]:_(<2 x s32>), [[UV4:%[0-9]+]]:_(<2 x s32>), [[UV5:%[0-9]+]]:_(<2 x s32>) = G_UNMERGE_VALUES [[LOAD]](<8 x s32>) + ; VI: [[EXTRACT:%[0-9]+]]:_(s32) = G_EXTRACT [[UV2]](<2 x s32>), 0 + ; VI: [[EXTRACT1:%[0-9]+]]:_(s32) = G_EXTRACT [[UV2]](<2 x s32>), 32 + ; VI: [[EXTRACT2:%[0-9]+]]:_(s32) = G_EXTRACT [[UV3]](<2 x s32>), 0 + ; VI: [[EXTRACT3:%[0-9]+]]:_(s32) = G_EXTRACT [[UV3]](<2 x s32>), 32 + ; VI: [[EXTRACT4:%[0-9]+]]:_(s32) = G_EXTRACT [[UV4]](<2 x s32>), 0 + ; VI: [[EXTRACT5:%[0-9]+]]:_(s32) = G_EXTRACT [[UV4]](<2 x s32>), 32 + ; VI: [[EXTRACT6:%[0-9]+]]:_(s32) = G_EXTRACT [[UV5]](<2 x s32>), 0 + ; VI: [[EXTRACT7:%[0-9]+]]:_(s32) = G_EXTRACT [[UV5]](<2 x s32>), 32 + ; VI: [[EXTRACT8:%[0-9]+]]:_(s32) = G_EXTRACT [[UV]](<2 x s32>), 0 + ; VI: [[EXTRACT9:%[0-9]+]]:_(s32) = G_EXTRACT [[UV]](<2 x s32>), 32 + ; VI: [[EXTRACT10:%[0-9]+]]:_(s32) = G_EXTRACT [[UV1]](<2 x s32>), 0 + ; VI: [[EXTRACT11:%[0-9]+]]:_(s32) = G_EXTRACT [[UV1]](<2 x s32>), 32 + ; VI: [[EXTRACT12:%[0-9]+]]:_(s32) = G_EXTRACT [[LOAD2]](<2 x s32>), 0 + ; VI: [[EXTRACT13:%[0-9]+]]:_(s32) = G_EXTRACT [[LOAD2]](<2 x s32>), 32 + ; VI: $vgpr0 = COPY [[EXTRACT]](s32) + ; VI: $vgpr1 = COPY [[EXTRACT1]](s32) + ; VI: $vgpr2 = COPY [[EXTRACT2]](s32) + ; VI: $vgpr3 = COPY [[EXTRACT3]](s32) + ; VI: $vgpr4 = COPY [[EXTRACT4]](s32) + ; VI: $vgpr5 = COPY [[EXTRACT5]](s32) + ; VI: $vgpr6 = COPY [[EXTRACT6]](s32) + ; VI: $vgpr7 = COPY [[EXTRACT7]](s32) + ; VI: $vgpr8 = COPY [[EXTRACT8]](s32) + ; VI: $vgpr9 = COPY [[EXTRACT9]](s32) + ; VI: $vgpr10 = COPY [[EXTRACT10]](s32) + ; VI: $vgpr11 = COPY [[EXTRACT11]](s32) + ; VI: $vgpr12 = COPY [[EXTRACT12]](s32) + ; VI: $vgpr13 = COPY [[EXTRACT13]](s32) + ; GFX9-HSA-LABEL: name: test_load_global_v14s32_align4 + ; GFX9-HSA: [[COPY:%[0-9]+]]:_(s64) = COPY $sgpr0_sgpr1 + ; GFX9-HSA: [[INTTOPTR:%[0-9]+]]:_(p1) = G_INTTOPTR [[COPY]](s64) + ; GFX9-HSA: [[LOAD:%[0-9]+]]:_(<8 x s32>) = G_LOAD [[INTTOPTR]](p1) :: (load (<8 x s32>), align 4, addrspace 1) + ; GFX9-HSA: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 32 + ; GFX9-HSA: [[PTR_ADD:%[0-9]+]]:_(p1) = G_PTR_ADD [[INTTOPTR]], [[C]](s64) + ; GFX9-HSA: [[LOAD1:%[0-9]+]]:_(<4 x s32>) = G_LOAD [[PTR_ADD]](p1) :: (load (<4 x s32>) from unknown-address + 32, align 4, addrspace 1) + ; GFX9-HSA: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 16 + ; GFX9-HSA: [[PTR_ADD1:%[0-9]+]]:_(p1) = G_PTR_ADD [[PTR_ADD]], [[C1]](s64) + ; GFX9-HSA: [[LOAD2:%[0-9]+]]:_(<2 x s32>) = G_LOAD [[PTR_ADD1]](p1) :: (load (<2 x s32>) from unknown-address + 48, align 4, addrspace 1) + ; GFX9-HSA: [[UV:%[0-9]+]]:_(<2 x s32>), [[UV1:%[0-9]+]]:_(<2 x s32>) = G_UNMERGE_VALUES [[LOAD1]](<4 x s32>) + ; GFX9-HSA: [[UV2:%[0-9]+]]:_(<2 x s32>), [[UV3:%[0-9]+]]:_(<2 x s32>), [[UV4:%[0-9]+]]:_(<2 x s32>), [[UV5:%[0-9]+]]:_(<2 x s32>) = G_UNMERGE_VALUES [[LOAD]](<8 x s32>) + ; GFX9-HSA: [[EXTRACT:%[0-9]+]]:_(s32) = G_EXTRACT [[UV2]](<2 x s32>), 0 + ; GFX9-HSA: [[EXTRACT1:%[0-9]+]]:_(s32) = G_EXTRACT [[UV2]](<2 x s32>), 32 + ; GFX9-HSA: [[EXTRACT2:%[0-9]+]]:_(s32) = G_EXTRACT [[UV3]](<2 x s32>), 0 + ; GFX9-HSA: [[EXTRACT3:%[0-9]+]]:_(s32) = G_EXTRACT [[UV3]](<2 x s32>), 32 + ; GFX9-HSA: [[EXTRACT4:%[0-9]+]]:_(s32) = G_EXTRACT [[UV4]](<2 x s32>), 0 + ; GFX9-HSA: [[EXTRACT5:%[0-9]+]]:_(s32) = G_EXTRACT [[UV4]](<2 x s32>), 32 + ; GFX9-HSA: [[EXTRACT6:%[0-9]+]]:_(s32) = G_EXTRACT [[UV5]](<2 x s32>), 0 + ; GFX9-HSA: [[EXTRACT7:%[0-9]+]]:_(s32) = G_EXTRACT [[UV5]](<2 x s32>), 32 + ; GFX9-HSA: [[EXTRACT8:%[0-9]+]]:_(s32) = G_EXTRACT [[UV]](<2 x s32>), 0 + ; GFX9-HSA: [[EXTRACT9:%[0-9]+]]:_(s32) = G_EXTRACT [[UV]](<2 x s32>), 32 + ; GFX9-HSA: [[EXTRACT10:%[0-9]+]]:_(s32) = G_EXTRACT [[UV1]](<2 x s32>), 0 + ; GFX9-HSA: [[EXTRACT11:%[0-9]+]]:_(s32) = G_EXTRACT [[UV1]](<2 x s32>), 32 + ; GFX9-HSA: [[EXTRACT12:%[0-9]+]]:_(s32) = G_EXTRACT [[LOAD2]](<2 x s32>), 0 + ; GFX9-HSA: [[EXTRACT13:%[0-9]+]]:_(s32) = G_EXTRACT [[LOAD2]](<2 x s32>), 32 + ; GFX9-HSA: $vgpr0 = COPY [[EXTRACT]](s32) + ; GFX9-HSA: $vgpr1 = COPY [[EXTRACT1]](s32) + ; GFX9-HSA: $vgpr2 = COPY [[EXTRACT2]](s32) + ; GFX9-HSA: $vgpr3 = COPY [[EXTRACT3]](s32) + ; GFX9-HSA: $vgpr4 = COPY [[EXTRACT4]](s32) + ; GFX9-HSA: $vgpr5 = COPY [[EXTRACT5]](s32) + ; GFX9-HSA: $vgpr6 = COPY [[EXTRACT6]](s32) + ; GFX9-HSA: $vgpr7 = COPY [[EXTRACT7]](s32) + ; GFX9-HSA: $vgpr8 = COPY [[EXTRACT8]](s32) + ; GFX9-HSA: $vgpr9 = COPY [[EXTRACT9]](s32) + ; GFX9-HSA: $vgpr10 = COPY [[EXTRACT10]](s32) + ; GFX9-HSA: $vgpr11 = COPY [[EXTRACT11]](s32) + ; GFX9-HSA: $vgpr12 = COPY [[EXTRACT12]](s32) + ; GFX9-HSA: $vgpr13 = COPY [[EXTRACT13]](s32) + ; GFX9-MESA-LABEL: name: test_load_global_v14s32_align4 + ; GFX9-MESA: [[COPY:%[0-9]+]]:_(s64) = COPY $sgpr0_sgpr1 + ; GFX9-MESA: [[INTTOPTR:%[0-9]+]]:_(p1) = G_INTTOPTR [[COPY]](s64) + ; GFX9-MESA: [[LOAD:%[0-9]+]]:_(<8 x s32>) = G_LOAD [[INTTOPTR]](p1) :: (load (<8 x s32>), align 4, addrspace 1) + ; GFX9-MESA: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 32 + ; GFX9-MESA: [[PTR_ADD:%[0-9]+]]:_(p1) = G_PTR_ADD [[INTTOPTR]], [[C]](s64) + ; GFX9-MESA: [[LOAD1:%[0-9]+]]:_(<4 x s32>) = G_LOAD [[PTR_ADD]](p1) :: (load (<4 x s32>) from unknown-address + 32, align 4, addrspace 1) + ; GFX9-MESA: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 16 + ; GFX9-MESA: [[PTR_ADD1:%[0-9]+]]:_(p1) = G_PTR_ADD [[PTR_ADD]], [[C1]](s64) + ; GFX9-MESA: [[LOAD2:%[0-9]+]]:_(<2 x s32>) = G_LOAD [[PTR_ADD1]](p1) :: (load (<2 x s32>) from unknown-address + 48, align 4, addrspace 1) + ; GFX9-MESA: [[UV:%[0-9]+]]:_(<2 x s32>), [[UV1:%[0-9]+]]:_(<2 x s32>) = G_UNMERGE_VALUES [[LOAD1]](<4 x s32>) + ; GFX9-MESA: [[UV2:%[0-9]+]]:_(<2 x s32>), [[UV3:%[0-9]+]]:_(<2 x s32>), [[UV4:%[0-9]+]]:_(<2 x s32>), [[UV5:%[0-9]+]]:_(<2 x s32>) = G_UNMERGE_VALUES [[LOAD]](<8 x s32>) + ; GFX9-MESA: [[EXTRACT:%[0-9]+]]:_(s32) = G_EXTRACT [[UV2]](<2 x s32>), 0 + ; GFX9-MESA: [[EXTRACT1:%[0-9]+]]:_(s32) = G_EXTRACT [[UV2]](<2 x s32>), 32 + ; GFX9-MESA: [[EXTRACT2:%[0-9]+]]:_(s32) = G_EXTRACT [[UV3]](<2 x s32>), 0 + ; GFX9-MESA: [[EXTRACT3:%[0-9]+]]:_(s32) = G_EXTRACT [[UV3]](<2 x s32>), 32 + ; GFX9-MESA: [[EXTRACT4:%[0-9]+]]:_(s32) = G_EXTRACT [[UV4]](<2 x s32>), 0 + ; GFX9-MESA: [[EXTRACT5:%[0-9]+]]:_(s32) = G_EXTRACT [[UV4]](<2 x s32>), 32 + ; GFX9-MESA: [[EXTRACT6:%[0-9]+]]:_(s32) = G_EXTRACT [[UV5]](<2 x s32>), 0 + ; GFX9-MESA: [[EXTRACT7:%[0-9]+]]:_(s32) = G_EXTRACT [[UV5]](<2 x s32>), 32 + ; GFX9-MESA: [[EXTRACT8:%[0-9]+]]:_(s32) = G_EXTRACT [[UV]](<2 x s32>), 0 + ; GFX9-MESA: [[EXTRACT9:%[0-9]+]]:_(s32) = G_EXTRACT [[UV]](<2 x s32>), 32 + ; GFX9-MESA: [[EXTRACT10:%[0-9]+]]:_(s32) = G_EXTRACT [[UV1]](<2 x s32>), 0 + ; GFX9-MESA: [[EXTRACT11:%[0-9]+]]:_(s32) = G_EXTRACT [[UV1]](<2 x s32>), 32 + ; GFX9-MESA: [[EXTRACT12:%[0-9]+]]:_(s32) = G_EXTRACT [[LOAD2]](<2 x s32>), 0 + ; GFX9-MESA: [[EXTRACT13:%[0-9]+]]:_(s32) = G_EXTRACT [[LOAD2]](<2 x s32>), 32 + ; GFX9-MESA: $vgpr0 = COPY [[EXTRACT]](s32) + ; GFX9-MESA: $vgpr1 = COPY [[EXTRACT1]](s32) + ; GFX9-MESA: $vgpr2 = COPY [[EXTRACT2]](s32) + ; GFX9-MESA: $vgpr3 = COPY [[EXTRACT3]](s32) + ; GFX9-MESA: $vgpr4 = COPY [[EXTRACT4]](s32) + ; GFX9-MESA: $vgpr5 = COPY [[EXTRACT5]](s32) + ; GFX9-MESA: $vgpr6 = COPY [[EXTRACT6]](s32) + ; GFX9-MESA: $vgpr7 = COPY [[EXTRACT7]](s32) + ; GFX9-MESA: $vgpr8 = COPY [[EXTRACT8]](s32) + ; GFX9-MESA: $vgpr9 = COPY [[EXTRACT9]](s32) + ; GFX9-MESA: $vgpr10 = COPY [[EXTRACT10]](s32) + ; GFX9-MESA: $vgpr11 = COPY [[EXTRACT11]](s32) + ; GFX9-MESA: $vgpr12 = COPY [[EXTRACT12]](s32) + ; GFX9-MESA: $vgpr13 = COPY [[EXTRACT13]](s32) + %0:_(s64) = COPY $sgpr0_sgpr1 + %1:_(p1) = G_INTTOPTR %0(s64) + %2:_(<14 x s32>) = G_LOAD %1(p1) :: (load 56, align 4, addrspace 1) + %3:_(s32) = G_EXTRACT %2, 0 + %4:_(s32) = G_EXTRACT %2, 32 + %5:_(s32) = G_EXTRACT %2, 64 + %6:_(s32) = G_EXTRACT %2, 96 + %7:_(s32) = G_EXTRACT %2, 128 + %8:_(s32) = G_EXTRACT %2, 160 + %9:_(s32) = G_EXTRACT %2, 192 + %10:_(s32) = G_EXTRACT %2, 224 + %11:_(s32) = G_EXTRACT %2, 256 + %12:_(s32) = G_EXTRACT %2, 288 + %13:_(s32) = G_EXTRACT %2, 320 + %14:_(s32) = G_EXTRACT %2, 352 + %15:_(s32) = G_EXTRACT %2, 384 + %16:_(s32) = G_EXTRACT %2, 416 + $vgpr0 = COPY %3 + $vgpr1 = COPY %4 + $vgpr2 = COPY %5 + $vgpr3 = COPY %6 + $vgpr4 = COPY %7 + $vgpr5 = COPY %8 + $vgpr6 = COPY %9 + $vgpr7 = COPY %10 + $vgpr8 = COPY %11 + $vgpr9 = COPY %12 + $vgpr10 = COPY %13 + $vgpr11 = COPY %14 + $vgpr12 = COPY %15 + $vgpr13 = COPY %16 +... + + +--- +name: test_load_global_v15s32_align4 +body: | + bb.0: + liveins: $sgpr0_sgpr1 + + ; SI-LABEL: name: test_load_global_v15s32_align4 + ; SI: [[COPY:%[0-9]+]]:_(s64) = COPY $sgpr0_sgpr1 + ; SI: [[INTTOPTR:%[0-9]+]]:_(p1) = G_INTTOPTR [[COPY]](s64) + ; SI: [[LOAD:%[0-9]+]]:_(<8 x s32>) = G_LOAD [[INTTOPTR]](p1) :: (load (<8 x s32>), align 4, addrspace 1) + ; SI: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 32 + ; SI: [[PTR_ADD:%[0-9]+]]:_(p1) = G_PTR_ADD [[INTTOPTR]], [[C]](s64) + ; SI: [[LOAD1:%[0-9]+]]:_(<4 x s32>) = G_LOAD [[PTR_ADD]](p1) :: (load (<4 x s32>) from unknown-address + 32, align 4, addrspace 1) + ; SI: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 16 + ; SI: [[PTR_ADD1:%[0-9]+]]:_(p1) = G_PTR_ADD [[PTR_ADD]], [[C1]](s64) + ; SI: [[LOAD2:%[0-9]+]]:_(<2 x s32>) = G_LOAD [[PTR_ADD1]](p1) :: (load (<2 x s32>) from unknown-address + 48, align 4, addrspace 1) + ; SI: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 8 + ; SI: [[PTR_ADD2:%[0-9]+]]:_(p1) = G_PTR_ADD [[PTR_ADD1]], [[C2]](s64) + ; SI: [[LOAD3:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD2]](p1) :: (load (s32) from unknown-address + 56, addrspace 1) + ; SI: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[LOAD2]](<2 x s32>) + ; SI: [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32), [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[LOAD1]](<4 x s32>) + ; SI: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF + ; SI: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[UV2]](s32), [[UV3]](s32), [[UV4]](s32) + ; SI: [[BUILD_VECTOR1:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[UV5]](s32), [[UV]](s32), [[UV1]](s32) + ; SI: [[BUILD_VECTOR2:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[LOAD3]](s32), [[DEF]](s32), [[DEF]](s32) + ; SI: [[DEF1:%[0-9]+]]:_(<3 x s32>) = G_IMPLICIT_DEF + ; SI: [[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) = G_UNMERGE_VALUES [[LOAD]](<8 x s32>) + ; SI: [[BUILD_VECTOR3:%[0-9]+]]:_(<15 x s32>) = G_BUILD_VECTOR [[UV6]](s32), [[UV7]](s32), [[UV8]](s32), [[UV9]](s32), [[UV10]](s32), [[UV11]](s32), [[UV12]](s32), [[UV13]](s32), [[UV2]](s32), [[UV3]](s32), [[UV4]](s32), [[UV5]](s32), [[UV]](s32), [[UV1]](s32), [[LOAD3]](s32) + ; SI: [[COPY1:%[0-9]+]]:_(s32) = COPY [[UV6]](s32) + ; SI: [[COPY2:%[0-9]+]]:_(s32) = COPY [[UV7]](s32) + ; SI: [[COPY3:%[0-9]+]]:_(s32) = COPY [[UV8]](s32) + ; SI: [[COPY4:%[0-9]+]]:_(s32) = COPY [[UV9]](s32) + ; SI: [[COPY5:%[0-9]+]]:_(s32) = COPY [[UV10]](s32) + ; SI: [[COPY6:%[0-9]+]]:_(s32) = COPY [[UV11]](s32) + ; SI: [[COPY7:%[0-9]+]]:_(s32) = COPY [[UV12]](s32) + ; SI: [[COPY8:%[0-9]+]]:_(s32) = COPY [[UV13]](s32) + ; SI: [[COPY9:%[0-9]+]]:_(s32) = COPY [[UV2]](s32) + ; SI: [[COPY10:%[0-9]+]]:_(s32) = COPY [[UV3]](s32) + ; SI: [[COPY11:%[0-9]+]]:_(s32) = COPY [[UV4]](s32) + ; SI: [[COPY12:%[0-9]+]]:_(s32) = COPY [[UV5]](s32) + ; SI: [[EXTRACT:%[0-9]+]]:_(s32) = G_EXTRACT [[BUILD_VECTOR3]](<15 x s32>), 388 + ; SI: [[COPY13:%[0-9]+]]:_(s32) = COPY [[UV1]](s32) + ; SI: [[COPY14:%[0-9]+]]:_(s32) = COPY [[LOAD3]](s32) + ; SI: $vgpr0 = COPY [[COPY1]](s32) + ; SI: $vgpr1 = COPY [[COPY2]](s32) + ; SI: $vgpr2 = COPY [[COPY3]](s32) + ; SI: $vgpr3 = COPY [[COPY4]](s32) + ; SI: $vgpr4 = COPY [[COPY5]](s32) + ; SI: $vgpr5 = COPY [[COPY6]](s32) + ; SI: $vgpr6 = COPY [[COPY7]](s32) + ; SI: $vgpr7 = COPY [[COPY8]](s32) + ; SI: $vgpr8 = COPY [[COPY9]](s32) + ; SI: $vgpr9 = COPY [[COPY10]](s32) + ; SI: $vgpr10 = COPY [[COPY11]](s32) + ; SI: $vgpr11 = COPY [[COPY12]](s32) + ; SI: $vgpr12 = COPY [[EXTRACT]](s32) + ; SI: $vgpr13 = COPY [[COPY13]](s32) + ; SI: $vgpr14 = COPY [[COPY14]](s32) + ; CI-HSA-LABEL: name: test_load_global_v15s32_align4 + ; CI-HSA: [[COPY:%[0-9]+]]:_(s64) = COPY $sgpr0_sgpr1 + ; CI-HSA: [[INTTOPTR:%[0-9]+]]:_(p1) = G_INTTOPTR [[COPY]](s64) + ; CI-HSA: [[LOAD:%[0-9]+]]:_(<8 x s32>) = G_LOAD [[INTTOPTR]](p1) :: (load (<8 x s32>), align 4, addrspace 1) + ; CI-HSA: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 32 + ; CI-HSA: [[PTR_ADD:%[0-9]+]]:_(p1) = G_PTR_ADD [[INTTOPTR]], [[C]](s64) + ; CI-HSA: [[LOAD1:%[0-9]+]]:_(<4 x s32>) = G_LOAD [[PTR_ADD]](p1) :: (load (<4 x s32>) from unknown-address + 32, align 4, addrspace 1) + ; CI-HSA: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 16 + ; CI-HSA: [[PTR_ADD1:%[0-9]+]]:_(p1) = G_PTR_ADD [[PTR_ADD]], [[C1]](s64) + ; CI-HSA: [[LOAD2:%[0-9]+]]:_(<3 x s32>) = G_LOAD [[PTR_ADD1]](p1) :: (load (<3 x s32>) from unknown-address + 48, align 4, addrspace 1) + ; CI-HSA: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[LOAD1]](<4 x s32>) + ; CI-HSA: [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32), [[UV6:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[LOAD2]](<3 x s32>) + ; CI-HSA: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF + ; CI-HSA: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[UV]](s32), [[UV1]](s32), [[UV2]](s32) + ; CI-HSA: [[BUILD_VECTOR1:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[UV3]](s32), [[UV4]](s32), [[UV5]](s32) + ; CI-HSA: [[BUILD_VECTOR2:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[UV6]](s32), [[DEF]](s32), [[DEF]](s32) + ; CI-HSA: [[DEF1:%[0-9]+]]:_(<3 x s32>) = G_IMPLICIT_DEF + ; CI-HSA: [[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) = G_UNMERGE_VALUES [[LOAD]](<8 x s32>) + ; CI-HSA: [[BUILD_VECTOR3:%[0-9]+]]:_(<15 x s32>) = G_BUILD_VECTOR [[UV7]](s32), [[UV8]](s32), [[UV9]](s32), [[UV10]](s32), [[UV11]](s32), [[UV12]](s32), [[UV13]](s32), [[UV14]](s32), [[UV]](s32), [[UV1]](s32), [[UV2]](s32), [[UV3]](s32), [[UV4]](s32), [[UV5]](s32), [[UV6]](s32) + ; CI-HSA: [[COPY1:%[0-9]+]]:_(s32) = COPY [[UV7]](s32) + ; CI-HSA: [[COPY2:%[0-9]+]]:_(s32) = COPY [[UV8]](s32) + ; CI-HSA: [[COPY3:%[0-9]+]]:_(s32) = COPY [[UV9]](s32) + ; CI-HSA: [[COPY4:%[0-9]+]]:_(s32) = COPY [[UV10]](s32) + ; CI-HSA: [[COPY5:%[0-9]+]]:_(s32) = COPY [[UV11]](s32) + ; CI-HSA: [[COPY6:%[0-9]+]]:_(s32) = COPY [[UV12]](s32) + ; CI-HSA: [[COPY7:%[0-9]+]]:_(s32) = COPY [[UV13]](s32) + ; CI-HSA: [[COPY8:%[0-9]+]]:_(s32) = COPY [[UV14]](s32) + ; CI-HSA: [[COPY9:%[0-9]+]]:_(s32) = COPY [[UV]](s32) + ; CI-HSA: [[COPY10:%[0-9]+]]:_(s32) = COPY [[UV1]](s32) + ; CI-HSA: [[COPY11:%[0-9]+]]:_(s32) = COPY [[UV2]](s32) + ; CI-HSA: [[COPY12:%[0-9]+]]:_(s32) = COPY [[UV3]](s32) + ; CI-HSA: [[EXTRACT:%[0-9]+]]:_(s32) = G_EXTRACT [[BUILD_VECTOR3]](<15 x s32>), 388 + ; CI-HSA: [[COPY13:%[0-9]+]]:_(s32) = COPY [[UV5]](s32) + ; CI-HSA: [[COPY14:%[0-9]+]]:_(s32) = COPY [[UV6]](s32) + ; CI-HSA: $vgpr0 = COPY [[COPY1]](s32) + ; CI-HSA: $vgpr1 = COPY [[COPY2]](s32) + ; CI-HSA: $vgpr2 = COPY [[COPY3]](s32) + ; CI-HSA: $vgpr3 = COPY [[COPY4]](s32) + ; CI-HSA: $vgpr4 = COPY [[COPY5]](s32) + ; CI-HSA: $vgpr5 = COPY [[COPY6]](s32) + ; CI-HSA: $vgpr6 = COPY [[COPY7]](s32) + ; CI-HSA: $vgpr7 = COPY [[COPY8]](s32) + ; CI-HSA: $vgpr8 = COPY [[COPY9]](s32) + ; CI-HSA: $vgpr9 = COPY [[COPY10]](s32) + ; CI-HSA: $vgpr10 = COPY [[COPY11]](s32) + ; CI-HSA: $vgpr11 = COPY [[COPY12]](s32) + ; CI-HSA: $vgpr12 = COPY [[EXTRACT]](s32) + ; CI-HSA: $vgpr13 = COPY [[COPY13]](s32) + ; CI-HSA: $vgpr14 = COPY [[COPY14]](s32) + ; CI-MESA-LABEL: name: test_load_global_v15s32_align4 + ; CI-MESA: [[COPY:%[0-9]+]]:_(s64) = COPY $sgpr0_sgpr1 + ; CI-MESA: [[INTTOPTR:%[0-9]+]]:_(p1) = G_INTTOPTR [[COPY]](s64) + ; CI-MESA: [[LOAD:%[0-9]+]]:_(<8 x s32>) = G_LOAD [[INTTOPTR]](p1) :: (load (<8 x s32>), align 4, addrspace 1) + ; CI-MESA: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 32 + ; CI-MESA: [[PTR_ADD:%[0-9]+]]:_(p1) = G_PTR_ADD [[INTTOPTR]], [[C]](s64) + ; CI-MESA: [[LOAD1:%[0-9]+]]:_(<4 x s32>) = G_LOAD [[PTR_ADD]](p1) :: (load (<4 x s32>) from unknown-address + 32, align 4, addrspace 1) + ; CI-MESA: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 16 + ; CI-MESA: [[PTR_ADD1:%[0-9]+]]:_(p1) = G_PTR_ADD [[PTR_ADD]], [[C1]](s64) + ; CI-MESA: [[LOAD2:%[0-9]+]]:_(<3 x s32>) = G_LOAD [[PTR_ADD1]](p1) :: (load (<3 x s32>) from unknown-address + 48, align 4, addrspace 1) + ; CI-MESA: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[LOAD1]](<4 x s32>) + ; CI-MESA: [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32), [[UV6:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[LOAD2]](<3 x s32>) + ; CI-MESA: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF + ; CI-MESA: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[UV]](s32), [[UV1]](s32), [[UV2]](s32) + ; CI-MESA: [[BUILD_VECTOR1:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[UV3]](s32), [[UV4]](s32), [[UV5]](s32) + ; CI-MESA: [[BUILD_VECTOR2:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[UV6]](s32), [[DEF]](s32), [[DEF]](s32) + ; CI-MESA: [[DEF1:%[0-9]+]]:_(<3 x s32>) = G_IMPLICIT_DEF + ; CI-MESA: [[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) = G_UNMERGE_VALUES [[LOAD]](<8 x s32>) + ; CI-MESA: [[BUILD_VECTOR3:%[0-9]+]]:_(<15 x s32>) = G_BUILD_VECTOR [[UV7]](s32), [[UV8]](s32), [[UV9]](s32), [[UV10]](s32), [[UV11]](s32), [[UV12]](s32), [[UV13]](s32), [[UV14]](s32), [[UV]](s32), [[UV1]](s32), [[UV2]](s32), [[UV3]](s32), [[UV4]](s32), [[UV5]](s32), [[UV6]](s32) + ; CI-MESA: [[COPY1:%[0-9]+]]:_(s32) = COPY [[UV7]](s32) + ; CI-MESA: [[COPY2:%[0-9]+]]:_(s32) = COPY [[UV8]](s32) + ; CI-MESA: [[COPY3:%[0-9]+]]:_(s32) = COPY [[UV9]](s32) + ; CI-MESA: [[COPY4:%[0-9]+]]:_(s32) = COPY [[UV10]](s32) + ; CI-MESA: [[COPY5:%[0-9]+]]:_(s32) = COPY [[UV11]](s32) + ; CI-MESA: [[COPY6:%[0-9]+]]:_(s32) = COPY [[UV12]](s32) + ; CI-MESA: [[COPY7:%[0-9]+]]:_(s32) = COPY [[UV13]](s32) + ; CI-MESA: [[COPY8:%[0-9]+]]:_(s32) = COPY [[UV14]](s32) + ; CI-MESA: [[COPY9:%[0-9]+]]:_(s32) = COPY [[UV]](s32) + ; CI-MESA: [[COPY10:%[0-9]+]]:_(s32) = COPY [[UV1]](s32) + ; CI-MESA: [[COPY11:%[0-9]+]]:_(s32) = COPY [[UV2]](s32) + ; CI-MESA: [[COPY12:%[0-9]+]]:_(s32) = COPY [[UV3]](s32) + ; CI-MESA: [[EXTRACT:%[0-9]+]]:_(s32) = G_EXTRACT [[BUILD_VECTOR3]](<15 x s32>), 388 + ; CI-MESA: [[COPY13:%[0-9]+]]:_(s32) = COPY [[UV5]](s32) + ; CI-MESA: [[COPY14:%[0-9]+]]:_(s32) = COPY [[UV6]](s32) + ; CI-MESA: $vgpr0 = COPY [[COPY1]](s32) + ; CI-MESA: $vgpr1 = COPY [[COPY2]](s32) + ; CI-MESA: $vgpr2 = COPY [[COPY3]](s32) + ; CI-MESA: $vgpr3 = COPY [[COPY4]](s32) + ; CI-MESA: $vgpr4 = COPY [[COPY5]](s32) + ; CI-MESA: $vgpr5 = COPY [[COPY6]](s32) + ; CI-MESA: $vgpr6 = COPY [[COPY7]](s32) + ; CI-MESA: $vgpr7 = COPY [[COPY8]](s32) + ; CI-MESA: $vgpr8 = COPY [[COPY9]](s32) + ; CI-MESA: $vgpr9 = COPY [[COPY10]](s32) + ; CI-MESA: $vgpr10 = COPY [[COPY11]](s32) + ; CI-MESA: $vgpr11 = COPY [[COPY12]](s32) + ; CI-MESA: $vgpr12 = COPY [[EXTRACT]](s32) + ; CI-MESA: $vgpr13 = COPY [[COPY13]](s32) + ; CI-MESA: $vgpr14 = COPY [[COPY14]](s32) + ; VI-LABEL: name: test_load_global_v15s32_align4 + ; VI: [[COPY:%[0-9]+]]:_(s64) = COPY $sgpr0_sgpr1 + ; VI: [[INTTOPTR:%[0-9]+]]:_(p1) = G_INTTOPTR [[COPY]](s64) + ; VI: [[LOAD:%[0-9]+]]:_(<8 x s32>) = G_LOAD [[INTTOPTR]](p1) :: (load (<8 x s32>), align 4, addrspace 1) + ; VI: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 32 + ; VI: [[PTR_ADD:%[0-9]+]]:_(p1) = G_PTR_ADD [[INTTOPTR]], [[C]](s64) + ; VI: [[LOAD1:%[0-9]+]]:_(<4 x s32>) = G_LOAD [[PTR_ADD]](p1) :: (load (<4 x s32>) from unknown-address + 32, align 4, addrspace 1) + ; VI: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 16 + ; VI: [[PTR_ADD1:%[0-9]+]]:_(p1) = G_PTR_ADD [[PTR_ADD]], [[C1]](s64) + ; VI: [[LOAD2:%[0-9]+]]:_(<3 x s32>) = G_LOAD [[PTR_ADD1]](p1) :: (load (<3 x s32>) from unknown-address + 48, align 4, addrspace 1) + ; VI: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[LOAD1]](<4 x s32>) + ; VI: [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32), [[UV6:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[LOAD2]](<3 x s32>) + ; VI: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF + ; VI: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[UV]](s32), [[UV1]](s32), [[UV2]](s32) + ; VI: [[BUILD_VECTOR1:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[UV3]](s32), [[UV4]](s32), [[UV5]](s32) + ; VI: [[BUILD_VECTOR2:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[UV6]](s32), [[DEF]](s32), [[DEF]](s32) + ; VI: [[DEF1:%[0-9]+]]:_(<3 x s32>) = G_IMPLICIT_DEF + ; VI: [[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) = G_UNMERGE_VALUES [[LOAD]](<8 x s32>) + ; VI: [[BUILD_VECTOR3:%[0-9]+]]:_(<15 x s32>) = G_BUILD_VECTOR [[UV7]](s32), [[UV8]](s32), [[UV9]](s32), [[UV10]](s32), [[UV11]](s32), [[UV12]](s32), [[UV13]](s32), [[UV14]](s32), [[UV]](s32), [[UV1]](s32), [[UV2]](s32), [[UV3]](s32), [[UV4]](s32), [[UV5]](s32), [[UV6]](s32) + ; VI: [[COPY1:%[0-9]+]]:_(s32) = COPY [[UV7]](s32) + ; VI: [[COPY2:%[0-9]+]]:_(s32) = COPY [[UV8]](s32) + ; VI: [[COPY3:%[0-9]+]]:_(s32) = COPY [[UV9]](s32) + ; VI: [[COPY4:%[0-9]+]]:_(s32) = COPY [[UV10]](s32) + ; VI: [[COPY5:%[0-9]+]]:_(s32) = COPY [[UV11]](s32) + ; VI: [[COPY6:%[0-9]+]]:_(s32) = COPY [[UV12]](s32) + ; VI: [[COPY7:%[0-9]+]]:_(s32) = COPY [[UV13]](s32) + ; VI: [[COPY8:%[0-9]+]]:_(s32) = COPY [[UV14]](s32) + ; VI: [[COPY9:%[0-9]+]]:_(s32) = COPY [[UV]](s32) + ; VI: [[COPY10:%[0-9]+]]:_(s32) = COPY [[UV1]](s32) + ; VI: [[COPY11:%[0-9]+]]:_(s32) = COPY [[UV2]](s32) + ; VI: [[COPY12:%[0-9]+]]:_(s32) = COPY [[UV3]](s32) + ; VI: [[EXTRACT:%[0-9]+]]:_(s32) = G_EXTRACT [[BUILD_VECTOR3]](<15 x s32>), 388 + ; VI: [[COPY13:%[0-9]+]]:_(s32) = COPY [[UV5]](s32) + ; VI: [[COPY14:%[0-9]+]]:_(s32) = COPY [[UV6]](s32) + ; VI: $vgpr0 = COPY [[COPY1]](s32) + ; VI: $vgpr1 = COPY [[COPY2]](s32) + ; VI: $vgpr2 = COPY [[COPY3]](s32) + ; VI: $vgpr3 = COPY [[COPY4]](s32) + ; VI: $vgpr4 = COPY [[COPY5]](s32) + ; VI: $vgpr5 = COPY [[COPY6]](s32) + ; VI: $vgpr6 = COPY [[COPY7]](s32) + ; VI: $vgpr7 = COPY [[COPY8]](s32) + ; VI: $vgpr8 = COPY [[COPY9]](s32) + ; VI: $vgpr9 = COPY [[COPY10]](s32) + ; VI: $vgpr10 = COPY [[COPY11]](s32) + ; VI: $vgpr11 = COPY [[COPY12]](s32) + ; VI: $vgpr12 = COPY [[EXTRACT]](s32) + ; VI: $vgpr13 = COPY [[COPY13]](s32) + ; VI: $vgpr14 = COPY [[COPY14]](s32) + ; GFX9-HSA-LABEL: name: test_load_global_v15s32_align4 + ; GFX9-HSA: [[COPY:%[0-9]+]]:_(s64) = COPY $sgpr0_sgpr1 + ; GFX9-HSA: [[INTTOPTR:%[0-9]+]]:_(p1) = G_INTTOPTR [[COPY]](s64) + ; GFX9-HSA: [[LOAD:%[0-9]+]]:_(<8 x s32>) = G_LOAD [[INTTOPTR]](p1) :: (load (<8 x s32>), align 4, addrspace 1) + ; GFX9-HSA: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 32 + ; GFX9-HSA: [[PTR_ADD:%[0-9]+]]:_(p1) = G_PTR_ADD [[INTTOPTR]], [[C]](s64) + ; GFX9-HSA: [[LOAD1:%[0-9]+]]:_(<4 x s32>) = G_LOAD [[PTR_ADD]](p1) :: (load (<4 x s32>) from unknown-address + 32, align 4, addrspace 1) + ; GFX9-HSA: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 16 + ; GFX9-HSA: [[PTR_ADD1:%[0-9]+]]:_(p1) = G_PTR_ADD [[PTR_ADD]], [[C1]](s64) + ; GFX9-HSA: [[LOAD2:%[0-9]+]]:_(<3 x s32>) = G_LOAD [[PTR_ADD1]](p1) :: (load (<3 x s32>) from unknown-address + 48, align 4, addrspace 1) + ; GFX9-HSA: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[LOAD1]](<4 x s32>) + ; GFX9-HSA: [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32), [[UV6:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[LOAD2]](<3 x s32>) + ; GFX9-HSA: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF + ; GFX9-HSA: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[UV]](s32), [[UV1]](s32), [[UV2]](s32) + ; GFX9-HSA: [[BUILD_VECTOR1:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[UV3]](s32), [[UV4]](s32), [[UV5]](s32) + ; GFX9-HSA: [[BUILD_VECTOR2:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[UV6]](s32), [[DEF]](s32), [[DEF]](s32) + ; GFX9-HSA: [[DEF1:%[0-9]+]]:_(<3 x s32>) = G_IMPLICIT_DEF + ; GFX9-HSA: [[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) = G_UNMERGE_VALUES [[LOAD]](<8 x s32>) + ; GFX9-HSA: [[BUILD_VECTOR3:%[0-9]+]]:_(<15 x s32>) = G_BUILD_VECTOR [[UV7]](s32), [[UV8]](s32), [[UV9]](s32), [[UV10]](s32), [[UV11]](s32), [[UV12]](s32), [[UV13]](s32), [[UV14]](s32), [[UV]](s32), [[UV1]](s32), [[UV2]](s32), [[UV3]](s32), [[UV4]](s32), [[UV5]](s32), [[UV6]](s32) + ; GFX9-HSA: [[COPY1:%[0-9]+]]:_(s32) = COPY [[UV7]](s32) + ; GFX9-HSA: [[COPY2:%[0-9]+]]:_(s32) = COPY [[UV8]](s32) + ; GFX9-HSA: [[COPY3:%[0-9]+]]:_(s32) = COPY [[UV9]](s32) + ; GFX9-HSA: [[COPY4:%[0-9]+]]:_(s32) = COPY [[UV10]](s32) + ; GFX9-HSA: [[COPY5:%[0-9]+]]:_(s32) = COPY [[UV11]](s32) + ; GFX9-HSA: [[COPY6:%[0-9]+]]:_(s32) = COPY [[UV12]](s32) + ; GFX9-HSA: [[COPY7:%[0-9]+]]:_(s32) = COPY [[UV13]](s32) + ; GFX9-HSA: [[COPY8:%[0-9]+]]:_(s32) = COPY [[UV14]](s32) + ; GFX9-HSA: [[COPY9:%[0-9]+]]:_(s32) = COPY [[UV]](s32) + ; GFX9-HSA: [[COPY10:%[0-9]+]]:_(s32) = COPY [[UV1]](s32) + ; GFX9-HSA: [[COPY11:%[0-9]+]]:_(s32) = COPY [[UV2]](s32) + ; GFX9-HSA: [[COPY12:%[0-9]+]]:_(s32) = COPY [[UV3]](s32) + ; GFX9-HSA: [[EXTRACT:%[0-9]+]]:_(s32) = G_EXTRACT [[BUILD_VECTOR3]](<15 x s32>), 388 + ; GFX9-HSA: [[COPY13:%[0-9]+]]:_(s32) = COPY [[UV5]](s32) + ; GFX9-HSA: [[COPY14:%[0-9]+]]:_(s32) = COPY [[UV6]](s32) + ; GFX9-HSA: $vgpr0 = COPY [[COPY1]](s32) + ; GFX9-HSA: $vgpr1 = COPY [[COPY2]](s32) + ; GFX9-HSA: $vgpr2 = COPY [[COPY3]](s32) + ; GFX9-HSA: $vgpr3 = COPY [[COPY4]](s32) + ; GFX9-HSA: $vgpr4 = COPY [[COPY5]](s32) + ; GFX9-HSA: $vgpr5 = COPY [[COPY6]](s32) + ; GFX9-HSA: $vgpr6 = COPY [[COPY7]](s32) + ; GFX9-HSA: $vgpr7 = COPY [[COPY8]](s32) + ; GFX9-HSA: $vgpr8 = COPY [[COPY9]](s32) + ; GFX9-HSA: $vgpr9 = COPY [[COPY10]](s32) + ; GFX9-HSA: $vgpr10 = COPY [[COPY11]](s32) + ; GFX9-HSA: $vgpr11 = COPY [[COPY12]](s32) + ; GFX9-HSA: $vgpr12 = COPY [[EXTRACT]](s32) + ; GFX9-HSA: $vgpr13 = COPY [[COPY13]](s32) + ; GFX9-HSA: $vgpr14 = COPY [[COPY14]](s32) + ; GFX9-MESA-LABEL: name: test_load_global_v15s32_align4 + ; GFX9-MESA: [[COPY:%[0-9]+]]:_(s64) = COPY $sgpr0_sgpr1 + ; GFX9-MESA: [[INTTOPTR:%[0-9]+]]:_(p1) = G_INTTOPTR [[COPY]](s64) + ; GFX9-MESA: [[LOAD:%[0-9]+]]:_(<8 x s32>) = G_LOAD [[INTTOPTR]](p1) :: (load (<8 x s32>), align 4, addrspace 1) + ; GFX9-MESA: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 32 + ; GFX9-MESA: [[PTR_ADD:%[0-9]+]]:_(p1) = G_PTR_ADD [[INTTOPTR]], [[C]](s64) + ; GFX9-MESA: [[LOAD1:%[0-9]+]]:_(<4 x s32>) = G_LOAD [[PTR_ADD]](p1) :: (load (<4 x s32>) from unknown-address + 32, align 4, addrspace 1) + ; GFX9-MESA: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 16 + ; GFX9-MESA: [[PTR_ADD1:%[0-9]+]]:_(p1) = G_PTR_ADD [[PTR_ADD]], [[C1]](s64) + ; GFX9-MESA: [[LOAD2:%[0-9]+]]:_(<3 x s32>) = G_LOAD [[PTR_ADD1]](p1) :: (load (<3 x s32>) from unknown-address + 48, align 4, addrspace 1) + ; GFX9-MESA: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[LOAD1]](<4 x s32>) + ; GFX9-MESA: [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32), [[UV6:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[LOAD2]](<3 x s32>) + ; GFX9-MESA: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF + ; GFX9-MESA: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[UV]](s32), [[UV1]](s32), [[UV2]](s32) + ; GFX9-MESA: [[BUILD_VECTOR1:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[UV3]](s32), [[UV4]](s32), [[UV5]](s32) + ; GFX9-MESA: [[BUILD_VECTOR2:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[UV6]](s32), [[DEF]](s32), [[DEF]](s32) + ; GFX9-MESA: [[DEF1:%[0-9]+]]:_(<3 x s32>) = G_IMPLICIT_DEF + ; GFX9-MESA: [[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) = G_UNMERGE_VALUES [[LOAD]](<8 x s32>) + ; GFX9-MESA: [[BUILD_VECTOR3:%[0-9]+]]:_(<15 x s32>) = G_BUILD_VECTOR [[UV7]](s32), [[UV8]](s32), [[UV9]](s32), [[UV10]](s32), [[UV11]](s32), [[UV12]](s32), [[UV13]](s32), [[UV14]](s32), [[UV]](s32), [[UV1]](s32), [[UV2]](s32), [[UV3]](s32), [[UV4]](s32), [[UV5]](s32), [[UV6]](s32) + ; GFX9-MESA: [[COPY1:%[0-9]+]]:_(s32) = COPY [[UV7]](s32) + ; GFX9-MESA: [[COPY2:%[0-9]+]]:_(s32) = COPY [[UV8]](s32) + ; GFX9-MESA: [[COPY3:%[0-9]+]]:_(s32) = COPY [[UV9]](s32) + ; GFX9-MESA: [[COPY4:%[0-9]+]]:_(s32) = COPY [[UV10]](s32) + ; GFX9-MESA: [[COPY5:%[0-9]+]]:_(s32) = COPY [[UV11]](s32) + ; GFX9-MESA: [[COPY6:%[0-9]+]]:_(s32) = COPY [[UV12]](s32) + ; GFX9-MESA: [[COPY7:%[0-9]+]]:_(s32) = COPY [[UV13]](s32) + ; GFX9-MESA: [[COPY8:%[0-9]+]]:_(s32) = COPY [[UV14]](s32) + ; GFX9-MESA: [[COPY9:%[0-9]+]]:_(s32) = COPY [[UV]](s32) + ; GFX9-MESA: [[COPY10:%[0-9]+]]:_(s32) = COPY [[UV1]](s32) + ; GFX9-MESA: [[COPY11:%[0-9]+]]:_(s32) = COPY [[UV2]](s32) + ; GFX9-MESA: [[COPY12:%[0-9]+]]:_(s32) = COPY [[UV3]](s32) + ; GFX9-MESA: [[EXTRACT:%[0-9]+]]:_(s32) = G_EXTRACT [[BUILD_VECTOR3]](<15 x s32>), 388 + ; GFX9-MESA: [[COPY13:%[0-9]+]]:_(s32) = COPY [[UV5]](s32) + ; GFX9-MESA: [[COPY14:%[0-9]+]]:_(s32) = COPY [[UV6]](s32) + ; GFX9-MESA: $vgpr0 = COPY [[COPY1]](s32) + ; GFX9-MESA: $vgpr1 = COPY [[COPY2]](s32) + ; GFX9-MESA: $vgpr2 = COPY [[COPY3]](s32) + ; GFX9-MESA: $vgpr3 = COPY [[COPY4]](s32) + ; GFX9-MESA: $vgpr4 = COPY [[COPY5]](s32) + ; GFX9-MESA: $vgpr5 = COPY [[COPY6]](s32) + ; GFX9-MESA: $vgpr6 = COPY [[COPY7]](s32) + ; GFX9-MESA: $vgpr7 = COPY [[COPY8]](s32) + ; GFX9-MESA: $vgpr8 = COPY [[COPY9]](s32) + ; GFX9-MESA: $vgpr9 = COPY [[COPY10]](s32) + ; GFX9-MESA: $vgpr10 = COPY [[COPY11]](s32) + ; GFX9-MESA: $vgpr11 = COPY [[COPY12]](s32) + ; GFX9-MESA: $vgpr12 = COPY [[EXTRACT]](s32) + ; GFX9-MESA: $vgpr13 = COPY [[COPY13]](s32) + ; GFX9-MESA: $vgpr14 = COPY [[COPY14]](s32) + %0:_(s64) = COPY $sgpr0_sgpr1 + %1:_(p1) = G_INTTOPTR %0(s64) + %2:_(<15 x s32>) = G_LOAD %1(p1) :: (load 60, align 4, addrspace 1) + %3:_(s32) = G_EXTRACT %2, 0 + %4:_(s32) = G_EXTRACT %2, 32 + %5:_(s32) = G_EXTRACT %2, 64 + %6:_(s32) = G_EXTRACT %2, 96 + %7:_(s32) = G_EXTRACT %2, 128 + %8:_(s32) = G_EXTRACT %2, 160 + %9:_(s32) = G_EXTRACT %2, 192 + %10:_(s32) = G_EXTRACT %2, 224 + %11:_(s32) = G_EXTRACT %2, 256 + %12:_(s32) = G_EXTRACT %2, 288 + %13:_(s32) = G_EXTRACT %2, 320 + %14:_(s32) = G_EXTRACT %2, 352 + %15:_(s32) = G_EXTRACT %2, 388 + %16:_(s32) = G_EXTRACT %2, 416 + %17:_(s32) = G_EXTRACT %2, 448 + $vgpr0 = COPY %3 + $vgpr1 = COPY %4 + $vgpr2 = COPY %5 + $vgpr3 = COPY %6 + $vgpr4 = COPY %7 + $vgpr5 = COPY %8 + $vgpr6 = COPY %9 + $vgpr7 = COPY %10 + $vgpr8 = COPY %11 + $vgpr9 = COPY %12 + $vgpr10 = COPY %13 + $vgpr11 = COPY %14 + $vgpr12 = COPY %15 + $vgpr13 = COPY %16 + $vgpr14 = COPY %17 +...