[llvm] r307639 - [ARM] GlobalISel: Fix oversight in G_FCMP legalization
Diana Picus via llvm-commits
llvm-commits at lists.llvm.org
Tue Jul 11 02:43:51 PDT 2017
Author: rovka
Date: Tue Jul 11 02:43:51 2017
New Revision: 307639
URL: http://llvm.org/viewvc/llvm-project?rev=307639&view=rev
Log:
[ARM] GlobalISel: Fix oversight in G_FCMP legalization
We used to forget to erase the original instruction when replacing a
G_FCMP true/false. Fix this bug and make sure the tests check for it.
Modified:
llvm/trunk/lib/Target/ARM/ARMLegalizerInfo.cpp
llvm/trunk/test/CodeGen/ARM/GlobalISel/arm-legalize-fp.mir
Modified: llvm/trunk/lib/Target/ARM/ARMLegalizerInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMLegalizerInfo.cpp?rev=307639&r1=307638&r2=307639&view=diff
==============================================================================
--- llvm/trunk/lib/Target/ARM/ARMLegalizerInfo.cpp (original)
+++ llvm/trunk/lib/Target/ARM/ARMLegalizerInfo.cpp Tue Jul 11 02:43:51 2017
@@ -295,6 +295,7 @@ bool ARMLegalizerInfo::legalizeCustom(Ma
"Predicate needs libcalls, but none specified");
MIRBuilder.buildConstant(OriginalResult,
Predicate == CmpInst::FCMP_TRUE ? 1 : 0);
+ MI.eraseFromParent();
return true;
}
Modified: llvm/trunk/test/CodeGen/ARM/GlobalISel/arm-legalize-fp.mir
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/ARM/GlobalISel/arm-legalize-fp.mir?rev=307639&r1=307638&r2=307639&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/ARM/GlobalISel/arm-legalize-fp.mir (original)
+++ llvm/trunk/test/CodeGen/ARM/GlobalISel/arm-legalize-fp.mir Tue Jul 11 02:43:51 2017
@@ -337,8 +337,10 @@ body: |
; CHECK-DAG: [[Y:%[0-9]+]](s32) = COPY %r1
%2(s1) = G_FCMP floatpred(true), %0(s32), %1
; HARD: [[R:%[0-9]+]](s1) = G_FCMP floatpred(true), [[X]](s32), [[Y]]
+ ; SOFT-NOT: G_FCMP
; SOFT: [[REXT:%[0-9]+]](s32) = G_CONSTANT i32 -1
; SOFT: [[R:%[0-9]+]](s1) = G_TRUNC [[REXT]](s32)
+ ; SOFT-NOT: G_FCMP
%3(s32) = G_ZEXT %2(s1)
; CHECK: [[REXT:%[0-9]+]](s32) = G_ZEXT [[R]](s1)
%r0 = COPY %3(s32)
@@ -368,8 +370,10 @@ body: |
; CHECK-DAG: [[Y:%[0-9]+]](s32) = COPY %r1
%2(s1) = G_FCMP floatpred(false), %0(s32), %1
; HARD: [[R:%[0-9]+]](s1) = G_FCMP floatpred(false), [[X]](s32), [[Y]]
+ ; SOFT-NOT: G_FCMP
; SOFT: [[REXT:%[0-9]+]](s32) = G_CONSTANT i32 0
; SOFT: [[R:%[0-9]+]](s1) = G_TRUNC [[REXT]](s32)
+ ; SOFT-NOT: G_FCMP
%3(s32) = G_ZEXT %2(s1)
; CHECK: [[REXT:%[0-9]+]](s32) = G_ZEXT [[R]](s1)
%r0 = COPY %3(s32)
@@ -984,8 +988,10 @@ body: |
; HARD-DAG: [[Y:%[0-9]+]](s64) = G_MERGE_VALUES [[Y0]](s32), [[Y1]](s32)
%6(s1) = G_FCMP floatpred(true), %4(s64), %5
; HARD: [[R:%[0-9]+]](s1) = G_FCMP floatpred(true), [[X]](s64), [[Y]]
+ ; SOFT-NOT: G_FCMP
; SOFT: [[REXT:%[0-9]+]](s32) = G_CONSTANT i32 -1
; SOFT: [[R:%[0-9]+]](s1) = G_TRUNC [[REXT]](s32)
+ ; SOFT-NOT: G_FCMP
%7(s32) = G_ZEXT %6(s1)
; CHECK: [[REXT:%[0-9]+]](s32) = G_ZEXT [[R]](s1)
%r0 = COPY %7(s32)
@@ -1027,8 +1033,10 @@ body: |
; HARD-DAG: [[Y:%[0-9]+]](s64) = G_MERGE_VALUES [[Y0]](s32), [[Y1]](s32)
%6(s1) = G_FCMP floatpred(false), %4(s64), %5
; HARD: [[R:%[0-9]+]](s1) = G_FCMP floatpred(false), [[X]](s64), [[Y]]
+ ; SOFT-NOT: G_FCMP
; SOFT: [[REXT:%[0-9]+]](s32) = G_CONSTANT i32 0
; SOFT: [[R:%[0-9]+]](s1) = G_TRUNC [[REXT]](s32)
+ ; SOFT-NOT: G_FCMP
%7(s32) = G_ZEXT %6(s1)
; CHECK: [[REXT:%[0-9]+]](s32) = G_ZEXT [[R]](s1)
%r0 = COPY %7(s32)
More information about the llvm-commits
mailing list