blob: f01bf8ad318547cf2d4f0ca7892c8fb51d022241 [file] [log] [blame]
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