From 7a1ec0141ac6c24b3f5960cf3b98e52cfacfd800 Mon Sep 17 00:00:00 2001 From: Tim Northover Date: Thu, 25 Aug 2016 17:37:35 +0000 Subject: [PATCH] GlobalISel: mark pointer constants as legal on AArch64. llvm-svn: 279759 --- llvm/lib/Target/AArch64/AArch64MachineLegalizer.cpp | 2 ++ llvm/test/CodeGen/AArch64/GlobalISel/legalize-constant.mir | 3 +++ 2 files changed, 5 insertions(+) diff --git a/llvm/lib/Target/AArch64/AArch64MachineLegalizer.cpp b/llvm/lib/Target/AArch64/AArch64MachineLegalizer.cpp index e6012aa..8ba6933 100644 --- a/llvm/lib/Target/AArch64/AArch64MachineLegalizer.cpp +++ b/llvm/lib/Target/AArch64/AArch64MachineLegalizer.cpp @@ -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); diff --git a/llvm/test/CodeGen/AArch64/GlobalISel/legalize-constant.mir b/llvm/test/CodeGen/AArch64/GlobalISel/legalize-constant.mir index 2bf6e86..b432db6 100644 --- a/llvm/test/CodeGen/AArch64/GlobalISel/legalize-constant.mir +++ b/llvm/test/CodeGen/AArch64/GlobalISel/legalize-constant.mir @@ -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 ... --- -- 2.7.4