diff options
| -rw-r--r-- | llvm/lib/Target/AArch64/AArch64MachineLegalizer.cpp | 2 | ||||
| -rw-r--r-- | llvm/test/CodeGen/AArch64/GlobalISel/legalize-constant.mir | 3 |
2 files changed, 5 insertions, 0 deletions
diff --git a/llvm/lib/Target/AArch64/AArch64MachineLegalizer.cpp b/llvm/lib/Target/AArch64/AArch64MachineLegalizer.cpp index e6012aa1cef..8ba69333ae0 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 2bf6e86973e..b432db629ae 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 ... --- |

