Index: llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp =================================================================== --- llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp +++ llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp @@ -2179,15 +2179,9 @@ EntryBuilder->buildFConstant(Reg, *CF); else if (isa(C)) EntryBuilder->buildUndef(Reg); - else if (isa(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(&C)) + else if (isa(C)) + EntryBuilder->buildConstant(Reg, 0); + else if (auto GV = dyn_cast(&C)) EntryBuilder->buildGlobalValue(Reg, GV); else if (auto CAZ = dyn_cast(&C)) { if (!CAZ->getType()->isVectorTy()) Index: llvm/lib/Target/AArch64/AArch64InstructionSelector.cpp =================================================================== --- llvm/lib/Target/AArch64/AArch64InstructionSelector.cpp +++ llvm/lib/Target/AArch64/AArch64InstructionSelector.cpp @@ -1716,16 +1716,15 @@ 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; } Index: llvm/test/CodeGen/AArch64/GlobalISel/arm64-fallback.ll =================================================================== --- llvm/test/CodeGen/AArch64/GlobalISel/arm64-fallback.ll +++ llvm/test/CodeGen/AArch64/GlobalISel/arm64-fallback.ll @@ -120,7 +120,7 @@ br label %block } -; FALLBACK-WITH-REPORT-ERR: remark: :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: :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() { Index: llvm/test/CodeGen/AArch64/GlobalISel/arm64-irtranslator-switch.ll =================================================================== --- llvm/test/CodeGen/AArch64/GlobalISel/arm64-irtranslator-switch.ll +++ llvm/test/CodeGen/AArch64/GlobalISel/arm64-irtranslator-switch.ll @@ -285,62 +285,62 @@ ; 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 @@ ; 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 @@ ; 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: Index: llvm/test/CodeGen/AArch64/GlobalISel/arm64-irtranslator.ll =================================================================== --- llvm/test/CodeGen/AArch64/GlobalISel/arm64-irtranslator.ll +++ llvm/test/CodeGen/AArch64/GlobalISel/arm64-irtranslator.ll @@ -594,8 +594,7 @@ } ; 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 Index: llvm/test/CodeGen/AArch64/GlobalISel/call-translator-tail-call.ll =================================================================== --- llvm/test/CodeGen/AArch64/GlobalISel/call-translator-tail-call.ll +++ llvm/test/CodeGen/AArch64/GlobalISel/call-translator-tail-call.ll @@ -260,9 +260,8 @@ ; 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 Index: llvm/test/CodeGen/AArch64/GlobalISel/call-translator.ll =================================================================== --- llvm/test/CodeGen/AArch64/GlobalISel/call-translator.ll +++ llvm/test/CodeGen/AArch64/GlobalISel/call-translator.ll @@ -193,8 +193,7 @@ ; 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 Index: llvm/test/CodeGen/AArch64/GlobalISel/irtranslator-exceptions.ll =================================================================== --- llvm/test/CodeGen/AArch64/GlobalISel/irtranslator-exceptions.ll +++ llvm/test/CodeGen/AArch64/GlobalISel/irtranslator-exceptions.ll @@ -59,8 +59,7 @@ ; 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 Index: llvm/test/CodeGen/AArch64/GlobalISel/irtranslator-tbaa.ll =================================================================== --- llvm/test/CodeGen/AArch64/GlobalISel/irtranslator-tbaa.ll +++ llvm/test/CodeGen/AArch64/GlobalISel/irtranslator-tbaa.ll @@ -8,8 +8,8 @@ %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 } Index: llvm/test/CodeGen/AArch64/GlobalISel/select-constant.mir =================================================================== --- llvm/test/CodeGen/AArch64/GlobalISel/select-constant.mir +++ 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 @@ $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 Index: llvm/test/CodeGen/AArch64/GlobalISel/translate-gep.ll =================================================================== --- llvm/test/CodeGen/AArch64/GlobalISel/translate-gep.ll +++ llvm/test/CodeGen/AArch64/GlobalISel/translate-gep.ll @@ -8,9 +8,8 @@ ; 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