| commit b8fc192d42af56b17b7d940e6c226f4969e0d851 |
| Author: Matt Arsenault <Matthew.Arsenault@amd.com> |
| Date: Mon Feb 17 14:40:44 2020 -0500 |
| |
| Revert "[GISel]: Fix incorrect IRTranslation while translating null pointer types" |
| |
| This reverts commit b3297ef05179e1fee616b97b1c65b58e4c7fef17. |
| |
| This change is incorrect. The current semantic of null in the IR is a |
| pointer with the bitvalue 0. It is not a cast from an integer 0, so |
| this should preserve the pointer type. |
| |
| diff --git a/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp b/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp |
| index f8129715cc6..7e4018749e1 100644 |
| --- a/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp |
| +++ b/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp |
| @@ -2179,15 +2179,9 @@ bool IRTranslator::translate(const Constant &C, Register Reg) { |
| EntryBuilder->buildFConstant(Reg, *CF); |
| else if (isa<UndefValue>(C)) |
| EntryBuilder->buildUndef(Reg); |
| - else if (isa<ConstantPointerNull>(C)) { |
| - // As we are trying to build a constant val of 0 into a pointer, |
| - // insert a cast to make them correct with respect to types. |
| - unsigned NullSize = DL->getTypeSizeInBits(C.getType()); |
| - auto *ZeroTy = Type::getIntNTy(C.getContext(), NullSize); |
| - auto *ZeroVal = ConstantInt::get(ZeroTy, 0); |
| - Register ZeroReg = getOrCreateVReg(*ZeroVal); |
| - EntryBuilder->buildCast(Reg, ZeroReg); |
| - } else if (auto GV = dyn_cast<GlobalValue>(&C)) |
| + else if (isa<ConstantPointerNull>(C)) |
| + EntryBuilder->buildConstant(Reg, 0); |
| + else if (auto GV = dyn_cast<GlobalValue>(&C)) |
| EntryBuilder->buildGlobalValue(Reg, GV); |
| else if (auto CAZ = dyn_cast<ConstantAggregateZero>(&C)) { |
| if (!CAZ->getType()->isVectorTy()) |
| diff --git a/llvm/lib/Target/AArch64/AArch64InstructionSelector.cpp b/llvm/lib/Target/AArch64/AArch64InstructionSelector.cpp |
| index ea94aca3e2f..a22d8b94a87 100644 |
| --- a/llvm/lib/Target/AArch64/AArch64InstructionSelector.cpp |
| +++ b/llvm/lib/Target/AArch64/AArch64InstructionSelector.cpp |
| @@ -1716,16 +1716,15 @@ bool AArch64InstructionSelector::earlySelect(MachineInstr &I) const { |
| |
| Register DefReg = I.getOperand(0).getReg(); |
| LLT Ty = MRI.getType(DefReg); |
| - if (Ty != LLT::scalar(64) && Ty != LLT::scalar(32)) |
| - return false; |
| - |
| - if (Ty == LLT::scalar(64)) { |
| + if (Ty.getSizeInBits() == 64) { |
| I.getOperand(1).ChangeToRegister(AArch64::XZR, false); |
| RBI.constrainGenericRegister(DefReg, AArch64::GPR64RegClass, MRI); |
| - } else { |
| + } else if (Ty.getSizeInBits() == 32) { |
| I.getOperand(1).ChangeToRegister(AArch64::WZR, false); |
| RBI.constrainGenericRegister(DefReg, AArch64::GPR32RegClass, MRI); |
| - } |
| + } else |
| + return false; |
| + |
| I.setDesc(TII.get(TargetOpcode::COPY)); |
| return true; |
| } |
| diff --git a/llvm/test/CodeGen/AArch64/GlobalISel/arm64-fallback.ll b/llvm/test/CodeGen/AArch64/GlobalISel/arm64-fallback.ll |
| index 418d09d01fd..d36b2386493 100644 |
| --- a/llvm/test/CodeGen/AArch64/GlobalISel/arm64-fallback.ll |
| +++ b/llvm/test/CodeGen/AArch64/GlobalISel/arm64-fallback.ll |
| @@ -120,7 +120,7 @@ end: |
| br label %block |
| } |
| |
| -; FALLBACK-WITH-REPORT-ERR: remark: <unknown>:0:0: unable to legalize instruction: %2:_(<2 x p0>) = G_INSERT_VECTOR_ELT %0:_, %3:_(p0), %5:_(s32) (in function: vector_of_pointers_insertelement) |
| +; FALLBACK-WITH-REPORT-ERR: remark: <unknown>:0:0: unable to legalize instruction: %2:_(<2 x p0>) = G_INSERT_VECTOR_ELT %0:_, %{{[0-9]+}}:_(p0), %{{[0-9]+}}:_(s32) (in function: vector_of_pointers_insertelement) |
| ; FALLBACK-WITH-REPORT-ERR: warning: Instruction selection used fallback path for vector_of_pointers_insertelement |
| ; FALLBACK-WITH-REPORT-OUT-LABEL: vector_of_pointers_insertelement: |
| define void @vector_of_pointers_insertelement() { |
| diff --git a/llvm/test/CodeGen/AArch64/GlobalISel/arm64-irtranslator-switch.ll b/llvm/test/CodeGen/AArch64/GlobalISel/arm64-irtranslator-switch.ll |
| index bc973b34d6f..485fa62904f 100644 |
| --- a/llvm/test/CodeGen/AArch64/GlobalISel/arm64-irtranslator-switch.ll |
| +++ b/llvm/test/CodeGen/AArch64/GlobalISel/arm64-irtranslator-switch.ll |
| @@ -285,62 +285,62 @@ define void @jt_multiple_jump_tables(%1* %arg, i32 %arg1, i32* %arg2) { |
| ; CHECK: [[C53:%[0-9]+]]:_(s32) = G_CONSTANT i32 4354 |
| ; CHECK: [[C54:%[0-9]+]]:_(s32) = G_CONSTANT i32 4355 |
| ; CHECK: [[GV:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @global |
| - ; CHECK: [[C55:%[0-9]+]]:_(s64) = G_CONSTANT i64 0 |
| - ; CHECK: [[INTTOPTR:%[0-9]+]]:_(p0) = G_INTTOPTR [[C55]](s64) |
| - ; CHECK: [[C56:%[0-9]+]]:_(s64) = G_CONSTANT i64 1 |
| - ; CHECK: [[C57:%[0-9]+]]:_(s64) = G_CONSTANT i64 2 |
| - ; CHECK: [[C58:%[0-9]+]]:_(s64) = G_CONSTANT i64 3 |
| - ; CHECK: [[C59:%[0-9]+]]:_(s64) = G_CONSTANT i64 4 |
| - ; CHECK: [[C60:%[0-9]+]]:_(s64) = G_CONSTANT i64 5 |
| - ; CHECK: [[C61:%[0-9]+]]:_(s64) = G_CONSTANT i64 6 |
| - ; CHECK: [[C62:%[0-9]+]]:_(s64) = G_CONSTANT i64 7 |
| - ; CHECK: [[C63:%[0-9]+]]:_(s64) = G_CONSTANT i64 8 |
| - ; CHECK: [[C64:%[0-9]+]]:_(s64) = G_CONSTANT i64 9 |
| - ; CHECK: [[C65:%[0-9]+]]:_(s64) = G_CONSTANT i64 10 |
| - ; CHECK: [[C66:%[0-9]+]]:_(s64) = G_CONSTANT i64 11 |
| - ; CHECK: [[C67:%[0-9]+]]:_(s64) = G_CONSTANT i64 12 |
| - ; CHECK: [[C68:%[0-9]+]]:_(s64) = G_CONSTANT i64 13 |
| - ; CHECK: [[C69:%[0-9]+]]:_(s64) = G_CONSTANT i64 14 |
| - ; CHECK: [[C70:%[0-9]+]]:_(s64) = G_CONSTANT i64 15 |
| - ; CHECK: [[C71:%[0-9]+]]:_(s64) = G_CONSTANT i64 16 |
| - ; CHECK: [[C72:%[0-9]+]]:_(s64) = G_CONSTANT i64 17 |
| - ; CHECK: [[C73:%[0-9]+]]:_(s64) = G_CONSTANT i64 18 |
| - ; CHECK: [[C74:%[0-9]+]]:_(s64) = G_CONSTANT i64 19 |
| - ; CHECK: [[C75:%[0-9]+]]:_(s64) = G_CONSTANT i64 20 |
| - ; CHECK: [[C76:%[0-9]+]]:_(s64) = G_CONSTANT i64 21 |
| - ; CHECK: [[C77:%[0-9]+]]:_(s64) = G_CONSTANT i64 22 |
| - ; CHECK: [[C78:%[0-9]+]]:_(s64) = G_CONSTANT i64 23 |
| - ; CHECK: [[C79:%[0-9]+]]:_(s64) = G_CONSTANT i64 24 |
| - ; CHECK: [[C80:%[0-9]+]]:_(s64) = G_CONSTANT i64 25 |
| - ; CHECK: [[C81:%[0-9]+]]:_(s64) = G_CONSTANT i64 26 |
| - ; CHECK: [[C82:%[0-9]+]]:_(s64) = G_CONSTANT i64 27 |
| - ; CHECK: [[C83:%[0-9]+]]:_(s64) = G_CONSTANT i64 28 |
| - ; CHECK: [[C84:%[0-9]+]]:_(s64) = G_CONSTANT i64 29 |
| - ; CHECK: [[C85:%[0-9]+]]:_(s64) = G_CONSTANT i64 30 |
| - ; CHECK: [[C86:%[0-9]+]]:_(s64) = G_CONSTANT i64 31 |
| - ; CHECK: [[C87:%[0-9]+]]:_(s64) = G_CONSTANT i64 32 |
| - ; CHECK: [[C88:%[0-9]+]]:_(s64) = G_CONSTANT i64 33 |
| - ; CHECK: [[C89:%[0-9]+]]:_(s64) = G_CONSTANT i64 34 |
| - ; CHECK: [[C90:%[0-9]+]]:_(s64) = G_CONSTANT i64 35 |
| - ; CHECK: [[C91:%[0-9]+]]:_(s64) = G_CONSTANT i64 36 |
| - ; CHECK: [[C92:%[0-9]+]]:_(s64) = G_CONSTANT i64 37 |
| - ; CHECK: [[C93:%[0-9]+]]:_(s64) = G_CONSTANT i64 38 |
| - ; CHECK: [[C94:%[0-9]+]]:_(s64) = G_CONSTANT i64 39 |
| - ; CHECK: [[C95:%[0-9]+]]:_(s64) = G_CONSTANT i64 40 |
| - ; CHECK: [[C96:%[0-9]+]]:_(s64) = G_CONSTANT i64 41 |
| - ; CHECK: [[C97:%[0-9]+]]:_(s64) = G_CONSTANT i64 42 |
| - ; CHECK: [[C98:%[0-9]+]]:_(s64) = G_CONSTANT i64 43 |
| - ; CHECK: [[C99:%[0-9]+]]:_(s64) = G_CONSTANT i64 44 |
| - ; CHECK: [[C100:%[0-9]+]]:_(s64) = G_CONSTANT i64 45 |
| - ; CHECK: [[C101:%[0-9]+]]:_(s64) = G_CONSTANT i64 46 |
| - ; CHECK: [[C102:%[0-9]+]]:_(s64) = G_CONSTANT i64 47 |
| - ; CHECK: [[C103:%[0-9]+]]:_(s64) = G_CONSTANT i64 48 |
| - ; CHECK: [[C104:%[0-9]+]]:_(s64) = G_CONSTANT i64 49 |
| - ; CHECK: [[C105:%[0-9]+]]:_(s64) = G_CONSTANT i64 50 |
| - ; CHECK: [[C106:%[0-9]+]]:_(s64) = G_CONSTANT i64 51 |
| - ; CHECK: [[C107:%[0-9]+]]:_(s64) = G_CONSTANT i64 52 |
| - ; CHECK: [[C108:%[0-9]+]]:_(s64) = G_CONSTANT i64 53 |
| - ; CHECK: [[C109:%[0-9]+]]:_(s64) = G_CONSTANT i64 54 |
| + ; CHECK: [[C55:%[0-9]+]]:_(p0) = G_CONSTANT i64 0 |
| + ; CHECK: [[C56:%[0-9]+]]:_(s64) = G_CONSTANT i64 0 |
| + ; CHECK: [[C57:%[0-9]+]]:_(s64) = G_CONSTANT i64 1 |
| + ; CHECK: [[C58:%[0-9]+]]:_(s64) = G_CONSTANT i64 2 |
| + ; CHECK: [[C59:%[0-9]+]]:_(s64) = G_CONSTANT i64 3 |
| + ; CHECK: [[C60:%[0-9]+]]:_(s64) = G_CONSTANT i64 4 |
| + ; CHECK: [[C61:%[0-9]+]]:_(s64) = G_CONSTANT i64 5 |
| + ; CHECK: [[C62:%[0-9]+]]:_(s64) = G_CONSTANT i64 6 |
| + ; CHECK: [[C63:%[0-9]+]]:_(s64) = G_CONSTANT i64 7 |
| + ; CHECK: [[C64:%[0-9]+]]:_(s64) = G_CONSTANT i64 8 |
| + ; CHECK: [[C65:%[0-9]+]]:_(s64) = G_CONSTANT i64 9 |
| + ; CHECK: [[C66:%[0-9]+]]:_(s64) = G_CONSTANT i64 10 |
| + ; CHECK: [[C67:%[0-9]+]]:_(s64) = G_CONSTANT i64 11 |
| + ; CHECK: [[C68:%[0-9]+]]:_(s64) = G_CONSTANT i64 12 |
| + ; CHECK: [[C69:%[0-9]+]]:_(s64) = G_CONSTANT i64 13 |
| + ; CHECK: [[C70:%[0-9]+]]:_(s64) = G_CONSTANT i64 14 |
| + ; CHECK: [[C71:%[0-9]+]]:_(s64) = G_CONSTANT i64 15 |
| + ; CHECK: [[C72:%[0-9]+]]:_(s64) = G_CONSTANT i64 16 |
| + ; CHECK: [[C73:%[0-9]+]]:_(s64) = G_CONSTANT i64 17 |
| + ; CHECK: [[C74:%[0-9]+]]:_(s64) = G_CONSTANT i64 18 |
| + ; CHECK: [[C75:%[0-9]+]]:_(s64) = G_CONSTANT i64 19 |
| + ; CHECK: [[C76:%[0-9]+]]:_(s64) = G_CONSTANT i64 20 |
| + ; CHECK: [[C77:%[0-9]+]]:_(s64) = G_CONSTANT i64 21 |
| + ; CHECK: [[C78:%[0-9]+]]:_(s64) = G_CONSTANT i64 22 |
| + ; CHECK: [[C79:%[0-9]+]]:_(s64) = G_CONSTANT i64 23 |
| + ; CHECK: [[C80:%[0-9]+]]:_(s64) = G_CONSTANT i64 24 |
| + ; CHECK: [[C81:%[0-9]+]]:_(s64) = G_CONSTANT i64 25 |
| + ; CHECK: [[C82:%[0-9]+]]:_(s64) = G_CONSTANT i64 26 |
| + ; CHECK: [[C83:%[0-9]+]]:_(s64) = G_CONSTANT i64 27 |
| + ; CHECK: [[C84:%[0-9]+]]:_(s64) = G_CONSTANT i64 28 |
| + ; CHECK: [[C85:%[0-9]+]]:_(s64) = G_CONSTANT i64 29 |
| + ; CHECK: [[C86:%[0-9]+]]:_(s64) = G_CONSTANT i64 30 |
| + ; CHECK: [[C87:%[0-9]+]]:_(s64) = G_CONSTANT i64 31 |
| + ; CHECK: [[C88:%[0-9]+]]:_(s64) = G_CONSTANT i64 32 |
| + ; CHECK: [[C89:%[0-9]+]]:_(s64) = G_CONSTANT i64 33 |
| + ; CHECK: [[C90:%[0-9]+]]:_(s64) = G_CONSTANT i64 34 |
| + ; CHECK: [[C91:%[0-9]+]]:_(s64) = G_CONSTANT i64 35 |
| + ; CHECK: [[C92:%[0-9]+]]:_(s64) = G_CONSTANT i64 36 |
| + ; CHECK: [[C93:%[0-9]+]]:_(s64) = G_CONSTANT i64 37 |
| + ; CHECK: [[C94:%[0-9]+]]:_(s64) = G_CONSTANT i64 38 |
| + ; CHECK: [[C95:%[0-9]+]]:_(s64) = G_CONSTANT i64 39 |
| + ; CHECK: [[C96:%[0-9]+]]:_(s64) = G_CONSTANT i64 40 |
| + ; CHECK: [[C97:%[0-9]+]]:_(s64) = G_CONSTANT i64 41 |
| + ; CHECK: [[C98:%[0-9]+]]:_(s64) = G_CONSTANT i64 42 |
| + ; CHECK: [[C99:%[0-9]+]]:_(s64) = G_CONSTANT i64 43 |
| + ; CHECK: [[C100:%[0-9]+]]:_(s64) = G_CONSTANT i64 44 |
| + ; CHECK: [[C101:%[0-9]+]]:_(s64) = G_CONSTANT i64 45 |
| + ; CHECK: [[C102:%[0-9]+]]:_(s64) = G_CONSTANT i64 46 |
| + ; CHECK: [[C103:%[0-9]+]]:_(s64) = G_CONSTANT i64 47 |
| + ; CHECK: [[C104:%[0-9]+]]:_(s64) = G_CONSTANT i64 48 |
| + ; CHECK: [[C105:%[0-9]+]]:_(s64) = G_CONSTANT i64 49 |
| + ; CHECK: [[C106:%[0-9]+]]:_(s64) = G_CONSTANT i64 50 |
| + ; CHECK: [[C107:%[0-9]+]]:_(s64) = G_CONSTANT i64 51 |
| + ; CHECK: [[C108:%[0-9]+]]:_(s64) = G_CONSTANT i64 52 |
| + ; CHECK: [[C109:%[0-9]+]]:_(s64) = G_CONSTANT i64 53 |
| + ; CHECK: [[C110:%[0-9]+]]:_(s64) = G_CONSTANT i64 54 |
| ; CHECK: [[FRAME_INDEX:%[0-9]+]]:_(p0) = G_FRAME_INDEX %stack.0.tmp |
| ; CHECK: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[C]] |
| ; CHECK: G_BRCOND [[ICMP]](s1), %bb.56 |
| @@ -778,12 +778,12 @@ define void @jt_multiple_jump_tables(%1* %arg, i32 %arg1, i32* %arg2) { |
| ; CHECK: successors: %bb.56(0x80000000) |
| ; CHECK: bb.56.bb57: |
| ; CHECK: successors: %bb.59(0x80000000) |
| - ; CHECK: [[PHI:%[0-9]+]]:_(s64) = G_PHI [[C55]](s64), %bb.1, [[C56]](s64), %bb.2, [[C57]](s64), %bb.3, [[C58]](s64), %bb.4, [[C59]](s64), %bb.5, [[C60]](s64), %bb.6, [[C61]](s64), %bb.7, [[C62]](s64), %bb.8, [[C63]](s64), %bb.9, [[C64]](s64), %bb.10, [[C65]](s64), %bb.11, [[C66]](s64), %bb.12, [[C67]](s64), %bb.13, [[C68]](s64), %bb.14, [[C69]](s64), %bb.15, [[C70]](s64), %bb.16, [[C71]](s64), %bb.17, [[C72]](s64), %bb.18, [[C73]](s64), %bb.19, [[C74]](s64), %bb.20, [[C75]](s64), %bb.21, [[C76]](s64), %bb.22, [[C77]](s64), %bb.23, [[C78]](s64), %bb.24, [[C79]](s64), %bb.25, [[C80]](s64), %bb.26, [[C81]](s64), %bb.27, [[C82]](s64), %bb.28, [[C83]](s64), %bb.29, [[C84]](s64), %bb.30, [[C85]](s64), %bb.31, [[C86]](s64), %bb.32, [[C87]](s64), %bb.33, [[C88]](s64), %bb.34, [[C89]](s64), %bb.35, [[C90]](s64), %bb.36, [[C91]](s64), %bb.37, [[C92]](s64), %bb.38, [[C93]](s64), %bb.39, [[C94]](s64), %bb.40, [[C95]](s64), %bb.41, [[C96]](s64), %bb.42, [[C97]](s64), %bb.43, [[C98]](s64), %bb.44, [[C99]](s64), %bb.45, [[C100]](s64), %bb.46, [[C101]](s64), %bb.47, [[C102]](s64), %bb.48, [[C103]](s64), %bb.49, [[C104]](s64), %bb.50, [[C105]](s64), %bb.51, [[C106]](s64), %bb.52, [[C107]](s64), %bb.53, [[C108]](s64), %bb.54, [[C109]](s64), %bb.55 |
| - ; CHECK: [[C110:%[0-9]+]]:_(s64) = G_CONSTANT i64 16 |
| - ; CHECK: [[MUL:%[0-9]+]]:_(s64) = G_MUL [[PHI]], [[C110]] |
| + ; CHECK: [[PHI:%[0-9]+]]:_(s64) = G_PHI [[C56]](s64), %bb.1, [[C57]](s64), %bb.2, [[C58]](s64), %bb.3, [[C59]](s64), %bb.4, [[C60]](s64), %bb.5, [[C61]](s64), %bb.6, [[C62]](s64), %bb.7, [[C63]](s64), %bb.8, [[C64]](s64), %bb.9, [[C65]](s64), %bb.10, [[C66]](s64), %bb.11, [[C67]](s64), %bb.12, [[C68]](s64), %bb.13, [[C69]](s64), %bb.14, [[C70]](s64), %bb.15, [[C71]](s64), %bb.16, [[C72]](s64), %bb.17, [[C73]](s64), %bb.18, [[C74]](s64), %bb.19, [[C75]](s64), %bb.20, [[C76]](s64), %bb.21, [[C77]](s64), %bb.22, [[C78]](s64), %bb.23, [[C79]](s64), %bb.24, [[C80]](s64), %bb.25, [[C81]](s64), %bb.26, [[C82]](s64), %bb.27, [[C83]](s64), %bb.28, [[C84]](s64), %bb.29, [[C85]](s64), %bb.30, [[C86]](s64), %bb.31, [[C87]](s64), %bb.32, [[C88]](s64), %bb.33, [[C89]](s64), %bb.34, [[C90]](s64), %bb.35, [[C91]](s64), %bb.36, [[C92]](s64), %bb.37, [[C93]](s64), %bb.38, [[C94]](s64), %bb.39, [[C95]](s64), %bb.40, [[C96]](s64), %bb.41, [[C97]](s64), %bb.42, [[C98]](s64), %bb.43, [[C99]](s64), %bb.44, [[C100]](s64), %bb.45, [[C101]](s64), %bb.46, [[C102]](s64), %bb.47, [[C103]](s64), %bb.48, [[C104]](s64), %bb.49, [[C105]](s64), %bb.50, [[C106]](s64), %bb.51, [[C107]](s64), %bb.52, [[C108]](s64), %bb.53, [[C109]](s64), %bb.54, [[C110]](s64), %bb.55 |
| + ; CHECK: [[C111:%[0-9]+]]:_(s64) = G_CONSTANT i64 16 |
| + ; CHECK: [[MUL:%[0-9]+]]:_(s64) = G_MUL [[PHI]], [[C111]] |
| ; CHECK: [[PTR_ADD:%[0-9]+]]:_(p0) = G_PTR_ADD [[GV]], [[MUL]](s64) |
| - ; CHECK: [[C111:%[0-9]+]]:_(s64) = G_CONSTANT i64 8 |
| - ; CHECK: [[PTR_ADD1:%[0-9]+]]:_(p0) = G_PTR_ADD [[PTR_ADD]], [[C111]](s64) |
| + ; CHECK: [[C112:%[0-9]+]]:_(s64) = G_CONSTANT i64 8 |
| + ; CHECK: [[PTR_ADD1:%[0-9]+]]:_(p0) = G_PTR_ADD [[PTR_ADD]], [[C112]](s64) |
| ; CHECK: [[LOAD:%[0-9]+]]:_(p0) = G_LOAD [[PTR_ADD1]](p0) :: (load 8 from %ir.tmp59) |
| ; CHECK: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp |
| ; CHECK: $x0 = COPY [[COPY]](p0) |
| @@ -819,7 +819,7 @@ define void @jt_multiple_jump_tables(%1* %arg, i32 %arg1, i32* %arg2) { |
| ; CHECK: RET_ReallyLR |
| ; CHECK: bb.60.bb69: |
| ; CHECK: successors: %bb.58(0x40000000), %bb.57(0x40000000) |
| - ; CHECK: [[ICMP55:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY2]](p0), [[INTTOPTR]] |
| + ; CHECK: [[ICMP55:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[COPY2]](p0), [[C55]] |
| ; CHECK: G_BRCOND [[ICMP55]](s1), %bb.58 |
| ; CHECK: G_BR %bb.57 |
| bb: |
| diff --git a/llvm/test/CodeGen/AArch64/GlobalISel/arm64-irtranslator.ll b/llvm/test/CodeGen/AArch64/GlobalISel/arm64-irtranslator.ll |
| index 4946e8a9e7d..c023b8d2f9e 100644 |
| --- a/llvm/test/CodeGen/AArch64/GlobalISel/arm64-irtranslator.ll |
| +++ b/llvm/test/CodeGen/AArch64/GlobalISel/arm64-irtranslator.ll |
| @@ -594,8 +594,7 @@ define i32 @test_urem(i32 %arg1, i32 %arg2) { |
| } |
| |
| ; CHECK-LABEL: name: test_constant_null |
| -; CHECK: [[ZERO:%[0-9]+]]:_(s64) = G_CONSTANT i64 0 |
| -; CHECK: [[NULL:%[0-9]+]]:_(p0) = G_INTTOPTR [[ZERO]] |
| +; CHECK: [[NULL:%[0-9]+]]:_(p0) = G_CONSTANT i64 0 |
| ; CHECK: $x0 = COPY [[NULL]] |
| define i8* @test_constant_null() { |
| ret i8* null |
| diff --git a/llvm/test/CodeGen/AArch64/GlobalISel/call-translator-tail-call.ll b/llvm/test/CodeGen/AArch64/GlobalISel/call-translator-tail-call.ll |
| index d028147d598..b96b1498e9f 100644 |
| --- a/llvm/test/CodeGen/AArch64/GlobalISel/call-translator-tail-call.ll |
| +++ b/llvm/test/CodeGen/AArch64/GlobalISel/call-translator-tail-call.ll |
| @@ -260,9 +260,8 @@ define void @foo(i32*) { |
| ; COMMON: bb.1 (%ir-block.1): |
| ; COMMON: liveins: $x0 |
| ; COMMON: [[COPY:%[0-9]+]]:_(p0) = COPY $x0 |
| - ; COMMON: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0 |
| - ; COMMON: [[INTTOPTR:%[0-9]+]]:_(p0) = G_INTTOPTR [[C]](s64) |
| - ; COMMON: $x0 = COPY [[INTTOPTR]](p0) |
| + ; COMMON: [[C:%[0-9]+]]:_(p0) = G_CONSTANT i64 0 |
| + ; COMMON: $x0 = COPY [[C]](p0) |
| ; COMMON: TCRETURNdi @must_callee, 0, csr_aarch64_aapcs, implicit $sp, implicit $x0 |
| musttail call void @must_callee(i8* null) |
| ret void |
| diff --git a/llvm/test/CodeGen/AArch64/GlobalISel/call-translator.ll b/llvm/test/CodeGen/AArch64/GlobalISel/call-translator.ll |
| index c1fe9782580..8a96eb8c1cb 100644 |
| --- a/llvm/test/CodeGen/AArch64/GlobalISel/call-translator.ll |
| +++ b/llvm/test/CodeGen/AArch64/GlobalISel/call-translator.ll |
| @@ -193,8 +193,7 @@ define void @test_stack_slots([8 x i64], i64 %lhs, i64 %rhs, i64* %addr) { |
| ; CHECK-LABEL: name: test_call_stack |
| ; CHECK: [[C42:%[0-9]+]]:_(s64) = G_CONSTANT i64 42 |
| ; CHECK: [[C12:%[0-9]+]]:_(s64) = G_CONSTANT i64 12 |
| -; CHECK: [[ZERO:%[0-9]+]]:_(s64) = G_CONSTANT i64 0 |
| -; CHECK: [[PTR:%[0-9]+]]:_(p0) = G_INTTOPTR [[ZERO]] |
| +; CHECK: [[PTR:%[0-9]+]]:_(p0) = G_CONSTANT i64 0 |
| ; CHECK: ADJCALLSTACKDOWN 24, 0, implicit-def $sp, implicit $sp |
| ; CHECK: [[SP:%[0-9]+]]:_(p0) = COPY $sp |
| ; CHECK: [[C42_OFFS:%[0-9]+]]:_(s64) = G_CONSTANT i64 0 |
| diff --git a/llvm/test/CodeGen/AArch64/GlobalISel/irtranslator-exceptions.ll b/llvm/test/CodeGen/AArch64/GlobalISel/irtranslator-exceptions.ll |
| index bb393e08d5f..a74e001a492 100644 |
| --- a/llvm/test/CodeGen/AArch64/GlobalISel/irtranslator-exceptions.ll |
| +++ b/llvm/test/CodeGen/AArch64/GlobalISel/irtranslator-exceptions.ll |
| @@ -59,8 +59,7 @@ continue: |
| |
| ; CHECK-LABEL: name: test_invoke_varargs |
| |
| -; CHECK: [[ZERO:%[0-9]+]]:_(s64) = G_CONSTANT i64 0 |
| -; CHECK: [[NULL:%[0-9]+]]:_(p0) = G_INTTOPTR [[ZERO]] |
| +; CHECK: [[NULL:%[0-9]+]]:_(p0) = G_CONSTANT i64 0 |
| ; CHECK: [[ANSWER:%[0-9]+]]:_(s32) = G_CONSTANT i32 42 |
| ; CHECK: [[ONE:%[0-9]+]]:_(s32) = G_FCONSTANT float 1.0 |
| |
| diff --git a/llvm/test/CodeGen/AArch64/GlobalISel/irtranslator-tbaa.ll b/llvm/test/CodeGen/AArch64/GlobalISel/irtranslator-tbaa.ll |
| index bbf57470397..33417d8a1fc 100644 |
| --- a/llvm/test/CodeGen/AArch64/GlobalISel/irtranslator-tbaa.ll |
| +++ b/llvm/test/CodeGen/AArch64/GlobalISel/irtranslator-tbaa.ll |
| @@ -8,8 +8,8 @@ bb: |
| %tmp5 = getelementptr i16, i16* null, i64 2 |
| %tmp6 = load i16, i16* %tmp1, align 2, !tbaa !0 |
| store i16 %tmp6, i16* %tmp5, align 2, !tbaa !0 |
| - ; CHECK: %5:_(s16) = G_LOAD %2(p0) :: (load 2 from %ir.tmp1, !tbaa !0) |
| - ; CHECK: G_STORE %5(s16), %4(p0) :: (store 2 into %ir.tmp5, !tbaa !0) |
| + ; CHECK: [[LOAD:%[0-9]+]]:_(s16) = G_LOAD %{{[0-9]+}}(p0) :: (load 2 from %ir.tmp1, !tbaa !0) |
| + ; CHECK: G_STORE [[LOAD]](s16), %{{[0-9]+}}(p0) :: (store 2 into %ir.tmp5, !tbaa !0) |
| ret void |
| } |
| |
| diff --git a/llvm/test/CodeGen/AArch64/GlobalISel/select-constant.mir b/llvm/test/CodeGen/AArch64/GlobalISel/select-constant.mir |
| index 822ba251bc5..e25c84958b9 100644 |
| --- a/llvm/test/CodeGen/AArch64/GlobalISel/select-constant.mir |
| +++ b/llvm/test/CodeGen/AArch64/GlobalISel/select-constant.mir |
| @@ -8,6 +8,7 @@ |
| define i16 @const_s16() { ret i16 42 } |
| define i32 @const_s32() { ret i32 42 } |
| define i64 @const_s64() { ret i64 1234567890123 } |
| + define i8* @const_p0_0() { ret i8* null } |
| |
| define i32 @fconst_s32() { ret i32 42 } |
| define i64 @fconst_s64() { ret i64 1234567890123 } |
| @@ -80,6 +81,19 @@ body: | |
| $x0 = COPY %0(s64) |
| ... |
| |
| +--- |
| +name: const_p0_0 |
| +legalized: true |
| +regBankSelected: true |
| +body: | |
| + bb.0: |
| + ; CHECK-LABEL: name: const_p0_0 |
| + ; CHECK: [[COPY:%[0-9]+]]:gpr64 = COPY $xzr |
| + ; CHECK: $x0 = COPY [[COPY]] |
| + %0:gpr(p0) = G_CONSTANT i64 0 |
| + $x0 = COPY %0 |
| +... |
| + |
| --- |
| name: fconst_s32 |
| legalized: true |
| diff --git a/llvm/test/CodeGen/AArch64/GlobalISel/translate-gep.ll b/llvm/test/CodeGen/AArch64/GlobalISel/translate-gep.ll |
| index 1f812f95aea..351b80d5e2f 100644 |
| --- a/llvm/test/CodeGen/AArch64/GlobalISel/translate-gep.ll |
| +++ b/llvm/test/CodeGen/AArch64/GlobalISel/translate-gep.ll |
| @@ -8,9 +8,8 @@ define i8* @translate_element_size1(i64 %arg) { |
| ; CHECK: bb.1 (%ir-block.0): |
| ; CHECK: liveins: $x0 |
| ; CHECK: [[COPY:%[0-9]+]]:_(s64) = COPY $x0 |
| - ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0 |
| - ; CHECK: [[INTTOPTR:%[0-9]+]]:_(p0) = G_INTTOPTR [[C]](s64) |
| - ; CHECK: [[PTR_ADD:%[0-9]+]]:_(p0) = G_PTR_ADD [[INTTOPTR]], [[COPY]](s64) |
| + ; CHECK: [[C:%[0-9]+]]:_(p0) = G_CONSTANT i64 0 |
| + ; CHECK: [[PTR_ADD:%[0-9]+]]:_(p0) = G_PTR_ADD [[C]], [[COPY]](s64) |
| ; CHECK: [[COPY1:%[0-9]+]]:_(p0) = COPY [[PTR_ADD]](p0) |
| ; CHECK: $x0 = COPY [[COPY1]](p0) |
| ; CHECK: RET_ReallyLR implicit $x0 |