From: Tim Northover Date: Fri, 26 Aug 2016 17:46:19 +0000 (+0000) Subject: GlobalISel: mark G_FCMP legal on float & double. X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=30bd36e3fc17dcc05a9cfc30f24eb714ba8e9a01;p=platform%2Fupstream%2Fllvm.git GlobalISel: mark G_FCMP legal on float & double. llvm-svn: 279844 --- diff --git a/llvm/lib/Target/AArch64/AArch64MachineLegalizer.cpp b/llvm/lib/Target/AArch64/AArch64MachineLegalizer.cpp index fef98c9..ec5f591 100644 --- a/llvm/lib/Target/AArch64/AArch64MachineLegalizer.cpp +++ b/llvm/lib/Target/AArch64/AArch64MachineLegalizer.cpp @@ -97,6 +97,10 @@ AArch64MachineLegalizer::AArch64MachineLegalizer() { setAction({G_ICMP, 1, Ty}, WidenScalar); } + setAction({G_FCMP, s1}, Legal); + setAction({G_FCMP, 1, s32}, Legal); + setAction({G_FCMP, 1, s64}, Legal); + // Extensions for (auto Ty : { s1, s8, s16, s32, s64 }) { setAction({G_ZEXT, Ty}, Legal); diff --git a/llvm/test/CodeGen/AArch64/GlobalISel/legalize-fcmp.mir b/llvm/test/CodeGen/AArch64/GlobalISel/legalize-fcmp.mir new file mode 100644 index 0000000..9a6e90b --- /dev/null +++ b/llvm/test/CodeGen/AArch64/GlobalISel/legalize-fcmp.mir @@ -0,0 +1,35 @@ +# RUN: llc -O0 -run-pass=legalize-mir -global-isel %s -o - 2>&1 | FileCheck %s + +--- | + target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128" + target triple = "aarch64-apple-ios" + define void @test_icmp() { + entry: + ret void + } +... + +--- +name: test_icmp +registers: + - { id: 0, class: _ } + - { id: 1, class: _ } + - { id: 2, class: _ } + - { id: 3, class: _ } + - { id: 4, class: _ } + - { id: 5, class: _ } +body: | + bb.0.entry: + liveins: %x0, %x1, %x2, %x3 + %0(64) = COPY %x0 + %1(64) = COPY %x0 + + %2(8) = G_TRUNC { s32, s64 } %0 + %3(8) = G_TRUNC { s32, s64 } %1 + + ; CHECK: %4(1) = G_FCMP { s1, s64 } floatpred(oge), %0, %1 + %4(1) = G_FCMP { s1, s64 } floatpred(oge), %0, %1 + + ; CHECK: %5(1) = G_FCMP { s1, s32 } floatpred(uno), %2, %3 + %5(1) = G_FCMP { s1, s32 } floatpred(uno), %2, %3 +...