From: Tim Northover Date: Fri, 26 Aug 2016 17:46:03 +0000 (+0000) Subject: GlobalISel: mark selects legal X-Git-Tag: android-x86-7.1-r4~28012 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=3c47a67a886ab34402a3a135221125fa1ca94eb1;p=android-x86%2Fexternal-llvm.git GlobalISel: mark selects legal git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@279840 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Target/AArch64/AArch64MachineLegalizer.cpp b/lib/Target/AArch64/AArch64MachineLegalizer.cpp index 98935d1f5a2..1a329361dab 100644 --- a/lib/Target/AArch64/AArch64MachineLegalizer.cpp +++ b/lib/Target/AArch64/AArch64MachineLegalizer.cpp @@ -141,6 +141,12 @@ AArch64MachineLegalizer::AArch64MachineLegalizer() { for (auto Ty : {s1, s8, s16}) setAction({G_BRCOND, Ty}, WidenScalar); + // Select + for (auto Ty : {s1, s8, s16, s32, s64}) + setAction({G_SELECT, Ty}, Legal); + + setAction({G_SELECT, 1, s1}, Legal); + // Pointer-handling setAction({G_FRAME_INDEX, p0}, Legal); diff --git a/test/CodeGen/AArch64/GlobalISel/legalize-simple.mir b/test/CodeGen/AArch64/GlobalISel/legalize-simple.mir index ceed2b0a9de..900ff3e0c9e 100644 --- a/test/CodeGen/AArch64/GlobalISel/legalize-simple.mir +++ b/test/CodeGen/AArch64/GlobalISel/legalize-simple.mir @@ -39,6 +39,11 @@ registers: - { id: 22, class: _ } - { id: 23, class: _ } - { id: 24, class: _ } + - { id: 25, class: _ } + - { id: 26, class: _ } + - { id: 27, class: _ } + - { id: 28, class: _ } + - { id: 29, class: _ } body: | bb.0.entry: liveins: %x0, %x1, %x2, %x3 @@ -101,4 +106,15 @@ body: | %22(64) = G_SITOFP { s64, s16 } %7 %23(64) = G_UITOFP { s64, s32 } %4 %24(64) = G_SITOFP { s64, s64 } %0 + + ; CHECK: %25(1) = G_SELECT { s1, s1 } %10, %10, %5 + ; CHECK: %26(8) = G_SELECT { s8, s1 } %10, %6, %11 + ; CHECK: %27(16) = G_SELECT { s16, s1 } %10, %12, %7 + ; CHECK: %28(32) = G_SELECT { s32, s1 } %10, %15, %16 + ; CHECK: %29(64) = G_SELECT { s64, s1 } %10, %9, %24 + %25(1) = G_SELECT { s1, s1 } %10, %10, %5 + %26(8) = G_SELECT { s8, s1 } %10, %6, %11 + %27(16) = G_SELECT { s16, s1 } %10, %12, %7 + %28(32) = G_SELECT { s32, s1 } %10, %15, %16 + %29(64) = G_SELECT { s64, s1 } %10, %9, %24 ...