GlobalISel: mark pointer constants as legal on AArch64.
authorTim Northover <tnorthover@apple.com>
Thu, 25 Aug 2016 17:37:35 +0000 (17:37 +0000)
committerTim Northover <tnorthover@apple.com>
Thu, 25 Aug 2016 17:37:35 +0000 (17:37 +0000)
llvm-svn: 279759

llvm/lib/Target/AArch64/AArch64MachineLegalizer.cpp
llvm/test/CodeGen/AArch64/GlobalISel/legalize-constant.mir

index e6012aa..8ba6933 100644 (file)
@@ -72,6 +72,8 @@ AArch64MachineLegalizer::AArch64MachineLegalizer() {
     setAction({TargetOpcode::G_FCONSTANT, Ty}, Legal);
   }
 
+  setAction({G_CONSTANT, p0}, Legal);
+
   for (auto Ty : {s1, s8, s16})
     setAction({TargetOpcode::G_CONSTANT, Ty}, WidenScalar);
 
index 2bf6e86..b432db6 100644 (file)
@@ -21,6 +21,7 @@ registers:
   - { id: 2, class: _ }
   - { id: 3, class: _ }
   - { id: 4, class: _ }
+  - { id: 5, class: _ }
 body: |
   bb.0.entry:
     ; CHECK-LABEL: name: test_constant
@@ -32,12 +33,14 @@ body: |
     ; CHECK: %2(16) = G_TRUNC { s16, s32 } [[TMP]]
     ; CHECK: %3(32) = G_CONSTANT s32 -1
     ; CHECK: %4(64) = G_CONSTANT s64 1
+    ; CHECK: %5(64) = G_CONSTANT p0 0
 
     %0(1) = G_CONSTANT s1 0
     %1(8) = G_CONSTANT s8 42
     %2(16) = G_CONSTANT s16 65535
     %3(32) = G_CONSTANT s32 -1
     %4(64) = G_CONSTANT s64 1
+    %5(64) = G_CONSTANT p0 0
 ...
 
 ---