[llvm] [PowerPC] Remove NoInfsFPMath uses (PR #163029)
via llvm-commits
llvm-commits at lists.llvm.org
Thu Nov 27 03:05:21 PST 2025
https://github.com/paperchalice updated https://github.com/llvm/llvm-project/pull/163029
>From f7e611c1ef4c2a1af9174d9e3a0d00dd38df67ea Mon Sep 17 00:00:00 2001
From: PaperChalice <liujunchang97 at outlook.com>
Date: Sun, 12 Oct 2025 09:43:43 +0800
Subject: [PATCH] [PowerPC] Remove NoInfsFPMath uses
---
llvm/lib/Target/PowerPC/PPCISelLowering.cpp | 2 +-
llvm/test/CodeGen/PowerPC/change-no-infs.ll | 67 -
llvm/test/CodeGen/PowerPC/fsel.ll | 195 ++-
llvm/test/CodeGen/PowerPC/scalar-equal.ll | 100 +-
llvm/test/CodeGen/PowerPC/scalar_cmp.ll | 1404 +++++++------------
5 files changed, 647 insertions(+), 1121 deletions(-)
delete mode 100644 llvm/test/CodeGen/PowerPC/change-no-infs.ll
diff --git a/llvm/lib/Target/PowerPC/PPCISelLowering.cpp b/llvm/lib/Target/PowerPC/PPCISelLowering.cpp
index dd233e236e17f..0a8b4cee74558 100644
--- a/llvm/lib/Target/PowerPC/PPCISelLowering.cpp
+++ b/llvm/lib/Target/PowerPC/PPCISelLowering.cpp
@@ -8326,7 +8326,7 @@ SDValue PPCTargetLowering::LowerSELECT_CC(SDValue Op, SelectionDAG &DAG) const {
// general, fsel-based lowering of select is a finite-math-only optimization.
// For more information, see section F.3 of the 2.06 ISA specification.
// With ISA 3.0
- if ((!DAG.getTarget().Options.NoInfsFPMath && !Flags.hasNoInfs()) ||
+ if (!Flags.hasNoInfs() ||
(!DAG.getTarget().Options.NoNaNsFPMath && !Flags.hasNoNaNs()) ||
ResVT == MVT::f128)
return Op;
diff --git a/llvm/test/CodeGen/PowerPC/change-no-infs.ll b/llvm/test/CodeGen/PowerPC/change-no-infs.ll
deleted file mode 100644
index 0cd5eb5408e3e..0000000000000
--- a/llvm/test/CodeGen/PowerPC/change-no-infs.ll
+++ /dev/null
@@ -1,67 +0,0 @@
-; Check that we can enable/disable NoInfsFPMath and NoNaNsInFPMath via function
-; attributes. An attribute on one function should not magically apply to the
-; next one.
-
-; RUN: llc < %s -mtriple=powerpc64-unknown-unknown -mcpu=pwr7 -mattr=-vsx \
-; RUN: | FileCheck %s --check-prefix=CHECK --check-prefix=SAFE
-
-; RUN: llc < %s -mtriple=powerpc64-unknown-unknown -mcpu=pwr7 -mattr=-vsx \
-; RUN: -enable-no-infs-fp-math -enable-no-nans-fp-math \
-; RUN: | FileCheck %s --check-prefix=CHECK --check-prefix=UNSAFE
-
-; The fcmp+select in these functions should be converted to a fsel instruction
-; when both NoInfsFPMath and NoNaNsInFPMath are enabled.
-
-; CHECK-LABEL: default0:
-define double @default0(double %a, double %y, double %z) {
-entry:
-; SAFE-NOT: fsel
-; UNSAFE: fsel
- %cmp = fcmp ult double %a, 0.000000e+00
- %z.y = select i1 %cmp, double %z, double %y
- ret double %z.y
-}
-
-; CHECK-LABEL: unsafe_math_off:
-define double @unsafe_math_off(double %a, double %y, double %z) #0 #2 {
-entry:
-; SAFE-NOT: fsel
-; UNSAFE-NOT: fsel
- %cmp = fcmp ult double %a, 0.000000e+00
- %z.y = select i1 %cmp, double %z, double %y
- ret double %z.y
-}
-
-; CHECK-LABEL: default1:
-define double @default1(double %a, double %y, double %z) {
-; SAFE-NOT: fsel
-; UNSAFE: fsel
- %cmp = fcmp ult double %a, 0.000000e+00
- %z.y = select i1 %cmp, double %z, double %y
- ret double %z.y
-}
-
-; CHECK-LABEL: unsafe_math_on:
-define double @unsafe_math_on(double %a, double %y, double %z) #1 #3 {
-entry:
-; SAFE-NOT: fsel
-; UNSAFE-NOT: fsel
- %cmp = fcmp ult double %a, 0.000000e+00
- %z.y = select i1 %cmp, double %z, double %y
- ret double %z.y
-}
-
-; CHECK-LABEL: default2:
-define double @default2(double %a, double %y, double %z) {
-; SAFE-NOT: fsel
-; UNSAFE: fsel
- %cmp = fcmp ult double %a, 0.000000e+00
- %z.y = select i1 %cmp, double %z, double %y
- ret double %z.y
-}
-
-attributes #0 = { "no-infs-fp-math"="false" }
-attributes #1 = { "no-nans-fp-math"="false" }
-
-attributes #2 = { "no-infs-fp-math"="false" }
-attributes #3 = { "no-infs-fp-math"="true" }
diff --git a/llvm/test/CodeGen/PowerPC/fsel.ll b/llvm/test/CodeGen/PowerPC/fsel.ll
index dea442d8404e1..c60bd4f32d663 100644
--- a/llvm/test/CodeGen/PowerPC/fsel.ll
+++ b/llvm/test/CodeGen/PowerPC/fsel.ll
@@ -1,6 +1,5 @@
; RUN: llc -verify-machineinstrs < %s -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr7 -mattr=-vsx | FileCheck %s
-; RUN: llc -verify-machineinstrs < %s -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr7 -enable-no-infs-fp-math -enable-no-nans-fp-math -mattr=-vsx | FileCheck -check-prefix=CHECK-FM %s
-; RUN: llc -verify-machineinstrs < %s -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr7 -enable-no-infs-fp-math -enable-no-nans-fp-math -mattr=+vsx | FileCheck -check-prefix=CHECK-FM-VSX %s
+; RUN: llc -verify-machineinstrs < %s -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr7 -enable-no-nans-fp-math -mattr=+vsx | FileCheck -check-prefix=CHECK-VSX %s
target datalayout = "E-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-f128:128:128-v128:128:128-n32:64"
target triple = "powerpc64-unknown-linux-gnu"
@@ -13,14 +12,21 @@ entry:
; CHECK: @zerocmp1
; CHECK-NOT: fsel
; CHECK: blr
+}
+
+define double @zerocmp1_finite(double %a, double %y, double %z) #0 {
+entry:
+ %cmp = fcmp ninf nnan ult double %a, 0.000000e+00
+ %z.y = select i1 %cmp, double %z, double %y
+ ret double %z.y
-; CHECK-FM: @zerocmp1
-; CHECK-FM: fsel 1, 1, 2, 3
-; CHECK-FM: blr
+; CHECK: @zerocmp1_finite
+; CHECK: fsel 1, 1, 2, 3
+; CHECK: blr
-; CHECK-FM-VSX: @zerocmp1
-; CHECK-FM-VSX: fsel 1, 1, 2, 3
-; CHECK-FM-VSX: blr
+; CHECK-VSX: @zerocmp1_finite
+; CHECK-VSX: fsel 1, 1, 2, 3
+; CHECK-VSX: blr
}
define double @zerocmp2(double %a, double %y, double %z) #0 {
@@ -32,16 +38,23 @@ entry:
; CHECK: @zerocmp2
; CHECK-NOT: fsel
; CHECK: blr
+}
+
+define double @zerocmp2_finite(double %a, double %y, double %z) #0 {
+entry:
+ %cmp = fcmp ninf nnan ogt double %a, 0.000000e+00
+ %y.z = select i1 %cmp, double %y, double %z
+ ret double %y.z
-; CHECK-FM: @zerocmp2
-; CHECK-FM: fneg [[REG:[0-9]+]], 1
-; CHECK-FM: fsel 1, [[REG]], 3, 2
-; CHECK-FM: blr
+; CHECK: @zerocmp2_finite
+; CHECK: fneg [[REG:[0-9]+]], 1
+; CHECK: fsel 1, [[REG]], 3, 2
+; CHECK: blr
-; CHECK-FM-VSX: @zerocmp2
-; CHECK-FM-VSX: xsnegdp [[REG:[0-9]+]], 1
-; CHECK-FM-VSX: fsel 1, [[REG]], 3, 2
-; CHECK-FM-VSX: blr
+; CHECK-VSX: @zerocmp2_finite
+; CHECK-VSX: xsnegdp [[REG:[0-9]+]], 1
+; CHECK-VSX: fsel 1, [[REG]], 3, 2
+; CHECK-VSX: blr
}
define double @zerocmp3(double %a, double %y, double %z) #0 {
@@ -53,18 +66,25 @@ entry:
; CHECK: @zerocmp3
; CHECK-NOT: fsel
; CHECK: blr
+}
+
+define double @zerocmp3_finite(double %a, double %y, double %z) #0 {
+entry:
+ %cmp = fcmp ninf nnan oeq double %a, 0.000000e+00
+ %y.z = select i1 %cmp, double %y, double %z
+ ret double %y.z
-; CHECK-FM: @zerocmp3
-; CHECK-FM: fsel [[REG:[0-9]+]], 1, 2, 3
-; CHECK-FM: fneg [[REG2:[0-9]+]], 1
-; CHECK-FM: fsel 1, [[REG2]], [[REG]], 3
-; CHECK-FM: blr
+; CHECK: @zerocmp3_finite
+; CHECK: fsel [[REG:[0-9]+]], 1, 2, 3
+; CHECK: fneg [[REG2:[0-9]+]], 1
+; CHECK: fsel 1, [[REG2]], [[REG]], 3
+; CHECK: blr
-; CHECK-FM-VSX: @zerocmp3
-; CHECK-FM-VSX: fsel [[REG:[0-9]+]], 1, 2, 3
-; CHECK-FM-VSX: xsnegdp [[REG2:[0-9]+]], 1
-; CHECK-FM-VSX: fsel 1, [[REG2]], [[REG]], 3
-; CHECK-FM-VSX: blr
+; CHECK-VSX: @zerocmp3_finite
+; CHECK-VSX: fsel [[REG:[0-9]+]], 1, 2, 3
+; CHECK-VSX: xsnegdp [[REG2:[0-9]+]], 1
+; CHECK-VSX: fsel 1, [[REG2]], [[REG]], 3
+; CHECK-VSX: blr
}
define double @min1(double %a, double %b) #0 {
@@ -76,16 +96,23 @@ entry:
; CHECK: @min1
; CHECK-NOT: fsel
; CHECK: blr
+}
+
+define double @min1_finite(double %a, double %b) #0 {
+entry:
+ %cmp = fcmp ninf nnan ole double %a, %b
+ %cond = select i1 %cmp, double %a, double %b
+ ret double %cond
-; CHECK-FM: @min1
-; CHECK-FM: fsub [[REG:[0-9]+]], 2, 1
-; CHECK-FM: fsel 1, [[REG]], 1, 2
-; CHECK-FM: blr
+; CHECK: @min1_finite
+; CHECK: fsub [[REG:[0-9]+]], 2, 1
+; CHECK: fsel 1, [[REG]], 1, 2
+; CHECK: blr
-; CHECK-FM-VSX: @min1
-; CHECK-FM-VSX: xssubdp [[REG:[0-9]+]], 2, 1
-; CHECK-FM-VSX: fsel 1, [[REG]], 1, 2
-; CHECK-FM-VSX: blr
+; CHECK-VSX: @min1_finite
+; CHECK-VSX: xssubdp [[REG:[0-9]+]], 2, 1
+; CHECK-VSX: fsel 1, [[REG]], 1, 2
+; CHECK-VSX: blr
}
define double @max1(double %a, double %b) #0 {
@@ -97,16 +124,23 @@ entry:
; CHECK: @max1
; CHECK-NOT: fsel
; CHECK: blr
+}
+
+define double @max1_finite(double %a, double %b) #0 {
+entry:
+ %cmp = fcmp ninf nnan oge double %a, %b
+ %cond = select i1 %cmp, double %a, double %b
+ ret double %cond
-; CHECK-FM: @max1
-; CHECK-FM: fsub [[REG:[0-9]+]], 1, 2
-; CHECK-FM: fsel 1, [[REG]], 1, 2
-; CHECK-FM: blr
+; CHECK: @max1_finite
+; CHECK: fsub [[REG:[0-9]+]], 1, 2
+; CHECK: fsel 1, [[REG]], 1, 2
+; CHECK: blr
-; CHECK-FM-VSX: @max1
-; CHECK-FM-VSX: xssubdp [[REG:[0-9]+]], 1, 2
-; CHECK-FM-VSX: fsel 1, [[REG]], 1, 2
-; CHECK-FM-VSX: blr
+; CHECK-VSX: @max1_finite
+; CHECK-VSX: xssubdp [[REG:[0-9]+]], 1, 2
+; CHECK-VSX: fsel 1, [[REG]], 1, 2
+; CHECK-VSX: blr
}
define double @cmp1(double %a, double %b, double %y, double %z) #0 {
@@ -118,16 +152,23 @@ entry:
; CHECK: @cmp1
; CHECK-NOT: fsel
; CHECK: blr
+}
+
+define double @cmp1_finite(double %a, double %b, double %y, double %z) #0 {
+entry:
+ %cmp = fcmp ninf nnan ult double %a, %b
+ %z.y = select i1 %cmp, double %z, double %y
+ ret double %z.y
-; CHECK-FM: @cmp1
-; CHECK-FM: fsub [[REG:[0-9]+]], 1, 2
-; CHECK-FM: fsel 1, [[REG]], 3, 4
-; CHECK-FM: blr
+; CHECK: @cmp1_finite
+; CHECK: fsub [[REG:[0-9]+]], 1, 2
+; CHECK: fsel 1, [[REG]], 3, 4
+; CHECK: blr
-; CHECK-FM-VSX: @cmp1
-; CHECK-FM-VSX: xssubdp [[REG:[0-9]+]], 1, 2
-; CHECK-FM-VSX: fsel 1, [[REG]], 3, 4
-; CHECK-FM-VSX: blr
+; CHECK-VSX: @cmp1_finite
+; CHECK-VSX: xssubdp [[REG:[0-9]+]], 1, 2
+; CHECK-VSX: fsel 1, [[REG]], 3, 4
+; CHECK-VSX: blr
}
define double @cmp2(double %a, double %b, double %y, double %z) #0 {
@@ -139,16 +180,23 @@ entry:
; CHECK: @cmp2
; CHECK-NOT: fsel
; CHECK: blr
+}
+
+define double @cmp2_finite(double %a, double %b, double %y, double %z) #0 {
+entry:
+ %cmp = fcmp ninf nnan ogt double %a, %b
+ %y.z = select i1 %cmp, double %y, double %z
+ ret double %y.z
-; CHECK-FM: @cmp2
-; CHECK-FM: fsub [[REG:[0-9]+]], 2, 1
-; CHECK-FM: fsel 1, [[REG]], 4, 3
-; CHECK-FM: blr
+; CHECK: @cmp2_finite
+; CHECK: fsub [[REG:[0-9]+]], 2, 1
+; CHECK: fsel 1, [[REG]], 4, 3
+; CHECK: blr
-; CHECK-FM-VSX: @cmp2
-; CHECK-FM-VSX: xssubdp [[REG:[0-9]+]], 2, 1
-; CHECK-FM-VSX: fsel 1, [[REG]], 4, 3
-; CHECK-FM-VSX: blr
+; CHECK-VSX: @cmp2_finite
+; CHECK-VSX: xssubdp [[REG:[0-9]+]], 2, 1
+; CHECK-VSX: fsel 1, [[REG]], 4, 3
+; CHECK-VSX: blr
}
define double @cmp3(double %a, double %b, double %y, double %z) #0 {
@@ -160,20 +208,27 @@ entry:
; CHECK: @cmp3
; CHECK-NOT: fsel
; CHECK: blr
+}
+
+define double @cmp3_finite(double %a, double %b, double %y, double %z) #0 {
+entry:
+ %cmp = fcmp ninf nnan oeq double %a, %b
+ %y.z = select i1 %cmp, double %y, double %z
+ ret double %y.z
-; CHECK-FM: @cmp3
-; CHECK-FM: fsub [[REG:[0-9]+]], 1, 2
-; CHECK-FM: fsel [[REG2:[0-9]+]], [[REG]], 3, 4
-; CHECK-FM: fneg [[REG3:[0-9]+]], [[REG]]
-; CHECK-FM: fsel 1, [[REG3]], [[REG2]], 4
-; CHECK-FM: blr
+; CHECK: @cmp3_finite
+; CHECK: fsub [[REG:[0-9]+]], 1, 2
+; CHECK: fsel [[REG2:[0-9]+]], [[REG]], 3, 4
+; CHECK: fneg [[REG3:[0-9]+]], [[REG]]
+; CHECK: fsel 1, [[REG3]], [[REG2]], 4
+; CHECK: blr
-; CHECK-FM-VSX: @cmp3
-; CHECK-FM-VSX: xssubdp [[REG:[0-9]+]], 1, 2
-; CHECK-FM-VSX: fsel [[REG2:[0-9]+]], [[REG]], 3, 4
-; CHECK-FM-VSX: xsnegdp [[REG3:[0-9]+]], [[REG]]
-; CHECK-FM-VSX: fsel 1, [[REG3]], [[REG2]], 4
-; CHECK-FM-VSX: blr
+; CHECK-VSX: @cmp3_finite
+; CHECK-VSX: xssubdp [[REG:[0-9]+]], 1, 2
+; CHECK-VSX: fsel [[REG2:[0-9]+]], [[REG]], 3, 4
+; CHECK-VSX: xsnegdp [[REG3:[0-9]+]], [[REG]]
+; CHECK-VSX: fsel 1, [[REG3]], [[REG2]], 4
+; CHECK-VSX: blr
}
attributes #0 = { nounwind readnone }
diff --git a/llvm/test/CodeGen/PowerPC/scalar-equal.ll b/llvm/test/CodeGen/PowerPC/scalar-equal.ll
index c0b11b47236a9..45ab7dfc52a35 100644
--- a/llvm/test/CodeGen/PowerPC/scalar-equal.ll
+++ b/llvm/test/CodeGen/PowerPC/scalar-equal.ll
@@ -11,47 +11,31 @@
; RUN: --check-prefix=FAST-P9
; RUN: llc -mcpu=pwr9 -ppc-asm-full-reg-names -verify-machineinstrs \
; RUN: -mtriple=powerpc64le-unknown-unknown < %s | FileCheck %s \
-; RUN: --check-prefix=NO-FAST-P9
+; RUN: --check-prefix=P9
; RUN: llc -mcpu=pwr8 -ppc-asm-full-reg-names -verify-machineinstrs \
; RUN: -mtriple=powerpc64le-unknown-unknown < %s | FileCheck %s \
-; RUN: --check-prefix=NO-FAST-P8
+; RUN: --check-prefix=P8
define double @testoeq(double %a, double %b, double %c, double %d) {
-; FAST-P8-LABEL: testoeq:
-; FAST-P8: # %bb.0: # %entry
-; FAST-P8-NEXT: xssubdp f0, f1, f2
-; FAST-P8-NEXT: fsel f1, f0, f3, f4
-; FAST-P8-NEXT: xsnegdp f0, f0
-; FAST-P8-NEXT: fsel f1, f0, f1, f4
-; FAST-P8-NEXT: blr
+; P9-LABEL: testoeq:
+; P9: # %bb.0: # %entry
+; P9-NEXT: xscmpudp cr0, f1, f2
+; P9-NEXT: beq cr0, .LBB0_2
+; P9-NEXT: # %bb.1: # %entry
+; P9-NEXT: fmr f3, f4
+; P9-NEXT: .LBB0_2: # %entry
+; P9-NEXT: fmr f1, f3
+; P9-NEXT: blr
;
-; FAST-P9-LABEL: testoeq:
-; FAST-P9: # %bb.0: # %entry
-; FAST-P9-NEXT: xssubdp f0, f1, f2
-; FAST-P9-NEXT: fsel f1, f0, f3, f4
-; FAST-P9-NEXT: xsnegdp f0, f0
-; FAST-P9-NEXT: fsel f1, f0, f1, f4
-; FAST-P9-NEXT: blr
-;
-; NO-FAST-P9-LABEL: testoeq:
-; NO-FAST-P9: # %bb.0: # %entry
-; NO-FAST-P9-NEXT: xscmpudp cr0, f1, f2
-; NO-FAST-P9-NEXT: beq cr0, .LBB0_2
-; NO-FAST-P9-NEXT: # %bb.1: # %entry
-; NO-FAST-P9-NEXT: fmr f3, f4
-; NO-FAST-P9-NEXT: .LBB0_2: # %entry
-; NO-FAST-P9-NEXT: fmr f1, f3
-; NO-FAST-P9-NEXT: blr
-;
-; NO-FAST-P8-LABEL: testoeq:
-; NO-FAST-P8: # %bb.0: # %entry
-; NO-FAST-P8-NEXT: xscmpudp cr0, f1, f2
-; NO-FAST-P8-NEXT: beq cr0, .LBB0_2
-; NO-FAST-P8-NEXT: # %bb.1: # %entry
-; NO-FAST-P8-NEXT: fmr f3, f4
-; NO-FAST-P8-NEXT: .LBB0_2: # %entry
-; NO-FAST-P8-NEXT: fmr f1, f3
-; NO-FAST-P8-NEXT: blr
+; P8-LABEL: testoeq:
+; P8: # %bb.0: # %entry
+; P8-NEXT: xscmpudp cr0, f1, f2
+; P8-NEXT: beq cr0, .LBB0_2
+; P8-NEXT: # %bb.1: # %entry
+; P8-NEXT: fmr f3, f4
+; P8-NEXT: .LBB0_2: # %entry
+; P8-NEXT: fmr f1, f3
+; P8-NEXT: blr
entry:
%cmp = fcmp oeq double %a, %b
%cond = select i1 %cmp, double %c, double %d
@@ -59,37 +43,21 @@ entry:
}
define double @testoeq_fast(double %a, double %b, double %c, double %d) {
-; FAST-P8-LABEL: testoeq_fast:
-; FAST-P8: # %bb.0: # %entry
-; FAST-P8-NEXT: xssubdp f0, f1, f2
-; FAST-P8-NEXT: fsel f1, f0, f3, f4
-; FAST-P8-NEXT: xsnegdp f0, f0
-; FAST-P8-NEXT: fsel f1, f0, f1, f4
-; FAST-P8-NEXT: blr
-;
-; FAST-P9-LABEL: testoeq_fast:
-; FAST-P9: # %bb.0: # %entry
-; FAST-P9-NEXT: xssubdp f0, f1, f2
-; FAST-P9-NEXT: fsel f1, f0, f3, f4
-; FAST-P9-NEXT: xsnegdp f0, f0
-; FAST-P9-NEXT: fsel f1, f0, f1, f4
-; FAST-P9-NEXT: blr
-;
-; NO-FAST-P9-LABEL: testoeq_fast:
-; NO-FAST-P9: # %bb.0: # %entry
-; NO-FAST-P9-NEXT: xssubdp f0, f1, f2
-; NO-FAST-P9-NEXT: fsel f1, f0, f3, f4
-; NO-FAST-P9-NEXT: xsnegdp f0, f0
-; NO-FAST-P9-NEXT: fsel f1, f0, f1, f4
-; NO-FAST-P9-NEXT: blr
+; P9-LABEL: testoeq_fast:
+; P9: # %bb.0: # %entry
+; P9-NEXT: xssubdp f0, f1, f2
+; P9-NEXT: fsel f1, f0, f3, f4
+; P9-NEXT: xsnegdp f0, f0
+; P9-NEXT: fsel f1, f0, f1, f4
+; P9-NEXT: blr
;
-; NO-FAST-P8-LABEL: testoeq_fast:
-; NO-FAST-P8: # %bb.0: # %entry
-; NO-FAST-P8-NEXT: xssubdp f0, f1, f2
-; NO-FAST-P8-NEXT: fsel f1, f0, f3, f4
-; NO-FAST-P8-NEXT: xsnegdp f0, f0
-; NO-FAST-P8-NEXT: fsel f1, f0, f1, f4
-; NO-FAST-P8-NEXT: blr
+; P8-LABEL: testoeq_fast:
+; P8: # %bb.0: # %entry
+; P8-NEXT: xssubdp f0, f1, f2
+; P8-NEXT: fsel f1, f0, f3, f4
+; P8-NEXT: xsnegdp f0, f0
+; P8-NEXT: fsel f1, f0, f1, f4
+; P8-NEXT: blr
entry:
%cmp = fcmp nnan ninf nsz oeq double %a, %b
%cond = select nnan ninf nsz i1 %cmp, double %c, double %d
diff --git a/llvm/test/CodeGen/PowerPC/scalar_cmp.ll b/llvm/test/CodeGen/PowerPC/scalar_cmp.ll
index 881d1f4c4093b..0e488a7b28c36 100644
--- a/llvm/test/CodeGen/PowerPC/scalar_cmp.ll
+++ b/llvm/test/CodeGen/PowerPC/scalar_cmp.ll
@@ -1,58 +1,36 @@
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
; RUN: llc -mcpu=pwr8 -ppc-asm-full-reg-names \
; RUN: -verify-machineinstrs --enable-no-signed-zeros-fp-math \
-; RUN: --enable-no-nans-fp-math --enable-no-infs-fp-math \
+; RUN: --enable-no-nans-fp-math \
; RUN: -mtriple=powerpc64le-unknown-unknown < %s | FileCheck %s \
-; RUN: --check-prefix=FAST-P8
+; RUN: --check-prefix=P8
; RUN: llc -mcpu=pwr9 -ppc-asm-full-reg-names \
; RUN: -verify-machineinstrs --enable-no-signed-zeros-fp-math \
-; RUN: --enable-no-nans-fp-math --enable-no-infs-fp-math \
+; RUN: --enable-no-nans-fp-math \
; RUN: -mtriple=powerpc64le-unknown-unknown < %s | FileCheck %s \
-; RUN: --check-prefix=FAST-P9
-; RUN: llc -mcpu=pwr8 -ppc-asm-full-reg-names -verify-machineinstrs \
-; RUN: -mtriple=powerpc64le-unknown-unknown < %s | FileCheck %s \
-; RUN: --check-prefix=NO-FAST-P8
-; RUN: llc -mcpu=pwr9 -ppc-asm-full-reg-names -verify-machineinstrs \
-; RUN: -mtriple=powerpc64le-unknown-unknown < %s | FileCheck %s \
-; RUN: --check-prefix=NO-FAST-P9
+; RUN: --check-prefix=P9
; Test oeq
define float @select_oeq_float(float %a, float %b, float %c, float %d) {
-; FAST-P8-LABEL: select_oeq_float:
-; FAST-P8: # %bb.0: # %entry
-; FAST-P8-NEXT: xssubsp f0, f1, f2
-; FAST-P8-NEXT: xsnegdp f1, f0
-; FAST-P8-NEXT: fsel f0, f0, f3, f4
-; FAST-P8-NEXT: fsel f1, f1, f0, f4
-; FAST-P8-NEXT: blr
-;
-; FAST-P9-LABEL: select_oeq_float:
-; FAST-P9: # %bb.0: # %entry
-; FAST-P9-NEXT: xssubsp f0, f1, f2
-; FAST-P9-NEXT: xsnegdp f1, f0
-; FAST-P9-NEXT: fsel f0, f0, f3, f4
-; FAST-P9-NEXT: fsel f1, f1, f0, f4
-; FAST-P9-NEXT: blr
-;
-; NO-FAST-P8-LABEL: select_oeq_float:
-; NO-FAST-P8: # %bb.0: # %entry
-; NO-FAST-P8-NEXT: fcmpu cr0, f1, f2
-; NO-FAST-P8-NEXT: beq cr0, .LBB0_2
-; NO-FAST-P8-NEXT: # %bb.1: # %entry
-; NO-FAST-P8-NEXT: fmr f3, f4
-; NO-FAST-P8-NEXT: .LBB0_2: # %entry
-; NO-FAST-P8-NEXT: fmr f1, f3
-; NO-FAST-P8-NEXT: blr
-;
-; NO-FAST-P9-LABEL: select_oeq_float:
-; NO-FAST-P9: # %bb.0: # %entry
-; NO-FAST-P9-NEXT: fcmpu cr0, f1, f2
-; NO-FAST-P9-NEXT: beq cr0, .LBB0_2
-; NO-FAST-P9-NEXT: # %bb.1: # %entry
-; NO-FAST-P9-NEXT: fmr f3, f4
-; NO-FAST-P9-NEXT: .LBB0_2: # %entry
-; NO-FAST-P9-NEXT: fmr f1, f3
-; NO-FAST-P9-NEXT: blr
+; P8-LABEL: select_oeq_float:
+; P8: # %bb.0: # %entry
+; P8-NEXT: fcmpu cr0, f1, f2
+; P8-NEXT: beq cr0, .LBB0_2
+; P8-NEXT: # %bb.1: # %entry
+; P8-NEXT: fmr f3, f4
+; P8-NEXT: .LBB0_2: # %entry
+; P8-NEXT: fmr f1, f3
+; P8-NEXT: blr
+;
+; P9-LABEL: select_oeq_float:
+; P9: # %bb.0: # %entry
+; P9-NEXT: fcmpu cr0, f1, f2
+; P9-NEXT: beq cr0, .LBB0_2
+; P9-NEXT: # %bb.1: # %entry
+; P9-NEXT: fmr f3, f4
+; P9-NEXT: .LBB0_2: # %entry
+; P9-NEXT: fmr f1, f3
+; P9-NEXT: blr
entry:
%cmp = fcmp oeq float %a, %b
%cond = select i1 %cmp, float %c, float %d
@@ -60,41 +38,25 @@ entry:
}
define float @select_oeq_float_nsz(float %a, float %b, float %c, float %d) {
-; FAST-P8-LABEL: select_oeq_float_nsz:
-; FAST-P8: # %bb.0: # %entry
-; FAST-P8-NEXT: xssubsp f0, f2, f1
-; FAST-P8-NEXT: xssubsp f1, f1, f2
-; FAST-P8-NEXT: fsel f1, f1, f3, f4
-; FAST-P8-NEXT: fsel f1, f0, f1, f4
-; FAST-P8-NEXT: blr
-;
-; FAST-P9-LABEL: select_oeq_float_nsz:
-; FAST-P9: # %bb.0: # %entry
-; FAST-P9-NEXT: xssubsp f0, f2, f1
-; FAST-P9-NEXT: xssubsp f1, f1, f2
-; FAST-P9-NEXT: fsel f1, f1, f3, f4
-; FAST-P9-NEXT: fsel f1, f0, f1, f4
-; FAST-P9-NEXT: blr
-;
-; NO-FAST-P8-LABEL: select_oeq_float_nsz:
-; NO-FAST-P8: # %bb.0: # %entry
-; NO-FAST-P8-NEXT: fcmpu cr0, f1, f2
-; NO-FAST-P8-NEXT: beq cr0, .LBB1_2
-; NO-FAST-P8-NEXT: # %bb.1: # %entry
-; NO-FAST-P8-NEXT: fmr f3, f4
-; NO-FAST-P8-NEXT: .LBB1_2: # %entry
-; NO-FAST-P8-NEXT: fmr f1, f3
-; NO-FAST-P8-NEXT: blr
-;
-; NO-FAST-P9-LABEL: select_oeq_float_nsz:
-; NO-FAST-P9: # %bb.0: # %entry
-; NO-FAST-P9-NEXT: fcmpu cr0, f1, f2
-; NO-FAST-P9-NEXT: beq cr0, .LBB1_2
-; NO-FAST-P9-NEXT: # %bb.1: # %entry
-; NO-FAST-P9-NEXT: fmr f3, f4
-; NO-FAST-P9-NEXT: .LBB1_2: # %entry
-; NO-FAST-P9-NEXT: fmr f1, f3
-; NO-FAST-P9-NEXT: blr
+; P8-LABEL: select_oeq_float_nsz:
+; P8: # %bb.0: # %entry
+; P8-NEXT: fcmpu cr0, f1, f2
+; P8-NEXT: beq cr0, .LBB1_2
+; P8-NEXT: # %bb.1: # %entry
+; P8-NEXT: fmr f3, f4
+; P8-NEXT: .LBB1_2: # %entry
+; P8-NEXT: fmr f1, f3
+; P8-NEXT: blr
+;
+; P9-LABEL: select_oeq_float_nsz:
+; P9: # %bb.0: # %entry
+; P9-NEXT: fcmpu cr0, f1, f2
+; P9-NEXT: beq cr0, .LBB1_2
+; P9-NEXT: # %bb.1: # %entry
+; P9-NEXT: fmr f3, f4
+; P9-NEXT: .LBB1_2: # %entry
+; P9-NEXT: fmr f1, f3
+; P9-NEXT: blr
entry:
%cmp = fcmp nsz oeq float %a, %b
%cond = select i1 %cmp, float %c, float %d
@@ -102,41 +64,25 @@ entry:
}
define double @select_oeq_double(double %a, double %b, double %c, double %d) {
-; FAST-P8-LABEL: select_oeq_double:
-; FAST-P8: # %bb.0: # %entry
-; FAST-P8-NEXT: xssubdp f0, f1, f2
-; FAST-P8-NEXT: fsel f1, f0, f3, f4
-; FAST-P8-NEXT: xsnegdp f0, f0
-; FAST-P8-NEXT: fsel f1, f0, f1, f4
-; FAST-P8-NEXT: blr
-;
-; FAST-P9-LABEL: select_oeq_double:
-; FAST-P9: # %bb.0: # %entry
-; FAST-P9-NEXT: xssubdp f0, f1, f2
-; FAST-P9-NEXT: fsel f1, f0, f3, f4
-; FAST-P9-NEXT: xsnegdp f0, f0
-; FAST-P9-NEXT: fsel f1, f0, f1, f4
-; FAST-P9-NEXT: blr
-;
-; NO-FAST-P8-LABEL: select_oeq_double:
-; NO-FAST-P8: # %bb.0: # %entry
-; NO-FAST-P8-NEXT: xscmpudp cr0, f1, f2
-; NO-FAST-P8-NEXT: beq cr0, .LBB2_2
-; NO-FAST-P8-NEXT: # %bb.1: # %entry
-; NO-FAST-P8-NEXT: fmr f3, f4
-; NO-FAST-P8-NEXT: .LBB2_2: # %entry
-; NO-FAST-P8-NEXT: fmr f1, f3
-; NO-FAST-P8-NEXT: blr
-;
-; NO-FAST-P9-LABEL: select_oeq_double:
-; NO-FAST-P9: # %bb.0: # %entry
-; NO-FAST-P9-NEXT: xscmpudp cr0, f1, f2
-; NO-FAST-P9-NEXT: beq cr0, .LBB2_2
-; NO-FAST-P9-NEXT: # %bb.1: # %entry
-; NO-FAST-P9-NEXT: fmr f3, f4
-; NO-FAST-P9-NEXT: .LBB2_2: # %entry
-; NO-FAST-P9-NEXT: fmr f1, f3
-; NO-FAST-P9-NEXT: blr
+; P8-LABEL: select_oeq_double:
+; P8: # %bb.0: # %entry
+; P8-NEXT: xscmpudp cr0, f1, f2
+; P8-NEXT: beq cr0, .LBB2_2
+; P8-NEXT: # %bb.1: # %entry
+; P8-NEXT: fmr f3, f4
+; P8-NEXT: .LBB2_2: # %entry
+; P8-NEXT: fmr f1, f3
+; P8-NEXT: blr
+;
+; P9-LABEL: select_oeq_double:
+; P9: # %bb.0: # %entry
+; P9-NEXT: xscmpudp cr0, f1, f2
+; P9-NEXT: beq cr0, .LBB2_2
+; P9-NEXT: # %bb.1: # %entry
+; P9-NEXT: fmr f3, f4
+; P9-NEXT: .LBB2_2: # %entry
+; P9-NEXT: fmr f1, f3
+; P9-NEXT: blr
entry:
%cmp = fcmp oeq double %a, %b
%cond = select i1 %cmp, double %c, double %d
@@ -144,37 +90,21 @@ entry:
}
define float @select_fast_oeq_float(float %a, float %b, float %c, float %d) {
-; FAST-P8-LABEL: select_fast_oeq_float:
-; FAST-P8: # %bb.0: # %entry
-; FAST-P8-NEXT: xssubsp f0, f2, f1
-; FAST-P8-NEXT: xssubsp f1, f1, f2
-; FAST-P8-NEXT: fsel f1, f1, f3, f4
-; FAST-P8-NEXT: fsel f1, f0, f1, f4
-; FAST-P8-NEXT: blr
-;
-; FAST-P9-LABEL: select_fast_oeq_float:
-; FAST-P9: # %bb.0: # %entry
-; FAST-P9-NEXT: xssubsp f0, f2, f1
-; FAST-P9-NEXT: xssubsp f1, f1, f2
-; FAST-P9-NEXT: fsel f1, f1, f3, f4
-; FAST-P9-NEXT: fsel f1, f0, f1, f4
-; FAST-P9-NEXT: blr
-;
-; NO-FAST-P8-LABEL: select_fast_oeq_float:
-; NO-FAST-P8: # %bb.0: # %entry
-; NO-FAST-P8-NEXT: xssubsp f0, f2, f1
-; NO-FAST-P8-NEXT: xssubsp f1, f1, f2
-; NO-FAST-P8-NEXT: fsel f1, f1, f3, f4
-; NO-FAST-P8-NEXT: fsel f1, f0, f1, f4
-; NO-FAST-P8-NEXT: blr
-;
-; NO-FAST-P9-LABEL: select_fast_oeq_float:
-; NO-FAST-P9: # %bb.0: # %entry
-; NO-FAST-P9-NEXT: xssubsp f0, f2, f1
-; NO-FAST-P9-NEXT: xssubsp f1, f1, f2
-; NO-FAST-P9-NEXT: fsel f1, f1, f3, f4
-; NO-FAST-P9-NEXT: fsel f1, f0, f1, f4
-; NO-FAST-P9-NEXT: blr
+; P8-LABEL: select_fast_oeq_float:
+; P8: # %bb.0: # %entry
+; P8-NEXT: xssubsp f0, f2, f1
+; P8-NEXT: xssubsp f1, f1, f2
+; P8-NEXT: fsel f1, f1, f3, f4
+; P8-NEXT: fsel f1, f0, f1, f4
+; P8-NEXT: blr
+;
+; P9-LABEL: select_fast_oeq_float:
+; P9: # %bb.0: # %entry
+; P9-NEXT: xssubsp f0, f2, f1
+; P9-NEXT: xssubsp f1, f1, f2
+; P9-NEXT: fsel f1, f1, f3, f4
+; P9-NEXT: fsel f1, f0, f1, f4
+; P9-NEXT: blr
entry:
%cmp = fcmp nnan ninf nsz oeq float %a, %b
%cond = select i1 %cmp, float %c, float %d
@@ -182,37 +112,21 @@ entry:
}
define double @select_fast_oeq_double(double %a, double %b, double %c, double %d) {
-; FAST-P8-LABEL: select_fast_oeq_double:
-; FAST-P8: # %bb.0: # %entry
-; FAST-P8-NEXT: xssubdp f0, f1, f2
-; FAST-P8-NEXT: fsel f1, f0, f3, f4
-; FAST-P8-NEXT: xsnegdp f0, f0
-; FAST-P8-NEXT: fsel f1, f0, f1, f4
-; FAST-P8-NEXT: blr
-;
-; FAST-P9-LABEL: select_fast_oeq_double:
-; FAST-P9: # %bb.0: # %entry
-; FAST-P9-NEXT: xssubdp f0, f1, f2
-; FAST-P9-NEXT: fsel f1, f0, f3, f4
-; FAST-P9-NEXT: xsnegdp f0, f0
-; FAST-P9-NEXT: fsel f1, f0, f1, f4
-; FAST-P9-NEXT: blr
-;
-; NO-FAST-P8-LABEL: select_fast_oeq_double:
-; NO-FAST-P8: # %bb.0: # %entry
-; NO-FAST-P8-NEXT: xssubdp f0, f1, f2
-; NO-FAST-P8-NEXT: fsel f1, f0, f3, f4
-; NO-FAST-P8-NEXT: xsnegdp f0, f0
-; NO-FAST-P8-NEXT: fsel f1, f0, f1, f4
-; NO-FAST-P8-NEXT: blr
-;
-; NO-FAST-P9-LABEL: select_fast_oeq_double:
-; NO-FAST-P9: # %bb.0: # %entry
-; NO-FAST-P9-NEXT: xssubdp f0, f1, f2
-; NO-FAST-P9-NEXT: fsel f1, f0, f3, f4
-; NO-FAST-P9-NEXT: xsnegdp f0, f0
-; NO-FAST-P9-NEXT: fsel f1, f0, f1, f4
-; NO-FAST-P9-NEXT: blr
+; P8-LABEL: select_fast_oeq_double:
+; P8: # %bb.0: # %entry
+; P8-NEXT: xssubdp f0, f1, f2
+; P8-NEXT: fsel f1, f0, f3, f4
+; P8-NEXT: xsnegdp f0, f0
+; P8-NEXT: fsel f1, f0, f1, f4
+; P8-NEXT: blr
+;
+; P9-LABEL: select_fast_oeq_double:
+; P9: # %bb.0: # %entry
+; P9-NEXT: xssubdp f0, f1, f2
+; P9-NEXT: fsel f1, f0, f3, f4
+; P9-NEXT: xsnegdp f0, f0
+; P9-NEXT: fsel f1, f0, f1, f4
+; P9-NEXT: blr
entry:
%cmp = fcmp nnan ninf nsz oeq double %a, %b
%cond = select i1 %cmp, double %c, double %d
@@ -222,43 +136,25 @@ entry:
; Test one
define float @select_one_float(float %a, float %b, float %c, float %d) {
-; FAST-P8-LABEL: select_one_float:
-; FAST-P8: # %bb.0: # %entry
-; FAST-P8-NEXT: xssubsp f0, f1, f2
-; FAST-P8-NEXT: xsnegdp f1, f0
-; FAST-P8-NEXT: fsel f0, f0, f4, f3
-; FAST-P8-NEXT: fsel f1, f1, f0, f3
-; FAST-P8-NEXT: blr
-;
-; FAST-P9-LABEL: select_one_float:
-; FAST-P9: # %bb.0: # %entry
-; FAST-P9-NEXT: xssubsp f0, f1, f2
-; FAST-P9-NEXT: xsnegdp f1, f0
-; FAST-P9-NEXT: fsel f0, f0, f4, f3
-; FAST-P9-NEXT: fsel f1, f1, f0, f3
-; FAST-P9-NEXT: blr
-;
-; NO-FAST-P8-LABEL: select_one_float:
-; NO-FAST-P8: # %bb.0: # %entry
-; NO-FAST-P8-NEXT: fcmpu cr0, f1, f2
-; NO-FAST-P8-NEXT: crnor 4*cr5+lt, un, eq
-; NO-FAST-P8-NEXT: bc 12, 4*cr5+lt, .LBB5_2
-; NO-FAST-P8-NEXT: # %bb.1: # %entry
-; NO-FAST-P8-NEXT: fmr f3, f4
-; NO-FAST-P8-NEXT: .LBB5_2: # %entry
-; NO-FAST-P8-NEXT: fmr f1, f3
-; NO-FAST-P8-NEXT: blr
-;
-; NO-FAST-P9-LABEL: select_one_float:
-; NO-FAST-P9: # %bb.0: # %entry
-; NO-FAST-P9-NEXT: fcmpu cr0, f1, f2
-; NO-FAST-P9-NEXT: crnor 4*cr5+lt, un, eq
-; NO-FAST-P9-NEXT: bc 12, 4*cr5+lt, .LBB5_2
-; NO-FAST-P9-NEXT: # %bb.1: # %entry
-; NO-FAST-P9-NEXT: fmr f3, f4
-; NO-FAST-P9-NEXT: .LBB5_2: # %entry
-; NO-FAST-P9-NEXT: fmr f1, f3
-; NO-FAST-P9-NEXT: blr
+; P8-LABEL: select_one_float:
+; P8: # %bb.0: # %entry
+; P8-NEXT: fcmpu cr0, f1, f2
+; P8-NEXT: bne cr0, .LBB5_2
+; P8-NEXT: # %bb.1: # %entry
+; P8-NEXT: fmr f3, f4
+; P8-NEXT: .LBB5_2: # %entry
+; P8-NEXT: fmr f1, f3
+; P8-NEXT: blr
+;
+; P9-LABEL: select_one_float:
+; P9: # %bb.0: # %entry
+; P9-NEXT: fcmpu cr0, f1, f2
+; P9-NEXT: bne cr0, .LBB5_2
+; P9-NEXT: # %bb.1: # %entry
+; P9-NEXT: fmr f3, f4
+; P9-NEXT: .LBB5_2: # %entry
+; P9-NEXT: fmr f1, f3
+; P9-NEXT: blr
entry:
%cmp = fcmp one float %a, %b
%cond = select i1 %cmp, float %c, float %d
@@ -266,43 +162,25 @@ entry:
}
define float @select_one_float_nsz(float %a, float %b, float %c, float %d) {
-; FAST-P8-LABEL: select_one_float_nsz:
-; FAST-P8: # %bb.0: # %entry
-; FAST-P8-NEXT: xssubsp f0, f2, f1
-; FAST-P8-NEXT: xssubsp f1, f1, f2
-; FAST-P8-NEXT: fsel f1, f1, f4, f3
-; FAST-P8-NEXT: fsel f1, f0, f1, f3
-; FAST-P8-NEXT: blr
-;
-; FAST-P9-LABEL: select_one_float_nsz:
-; FAST-P9: # %bb.0: # %entry
-; FAST-P9-NEXT: xssubsp f0, f2, f1
-; FAST-P9-NEXT: xssubsp f1, f1, f2
-; FAST-P9-NEXT: fsel f1, f1, f4, f3
-; FAST-P9-NEXT: fsel f1, f0, f1, f3
-; FAST-P9-NEXT: blr
-;
-; NO-FAST-P8-LABEL: select_one_float_nsz:
-; NO-FAST-P8: # %bb.0: # %entry
-; NO-FAST-P8-NEXT: fcmpu cr0, f1, f2
-; NO-FAST-P8-NEXT: crnor 4*cr5+lt, un, eq
-; NO-FAST-P8-NEXT: bc 12, 4*cr5+lt, .LBB6_2
-; NO-FAST-P8-NEXT: # %bb.1: # %entry
-; NO-FAST-P8-NEXT: fmr f3, f4
-; NO-FAST-P8-NEXT: .LBB6_2: # %entry
-; NO-FAST-P8-NEXT: fmr f1, f3
-; NO-FAST-P8-NEXT: blr
-;
-; NO-FAST-P9-LABEL: select_one_float_nsz:
-; NO-FAST-P9: # %bb.0: # %entry
-; NO-FAST-P9-NEXT: fcmpu cr0, f1, f2
-; NO-FAST-P9-NEXT: crnor 4*cr5+lt, un, eq
-; NO-FAST-P9-NEXT: bc 12, 4*cr5+lt, .LBB6_2
-; NO-FAST-P9-NEXT: # %bb.1: # %entry
-; NO-FAST-P9-NEXT: fmr f3, f4
-; NO-FAST-P9-NEXT: .LBB6_2: # %entry
-; NO-FAST-P9-NEXT: fmr f1, f3
-; NO-FAST-P9-NEXT: blr
+; P8-LABEL: select_one_float_nsz:
+; P8: # %bb.0: # %entry
+; P8-NEXT: fcmpu cr0, f1, f2
+; P8-NEXT: bne cr0, .LBB6_2
+; P8-NEXT: # %bb.1: # %entry
+; P8-NEXT: fmr f3, f4
+; P8-NEXT: .LBB6_2: # %entry
+; P8-NEXT: fmr f1, f3
+; P8-NEXT: blr
+;
+; P9-LABEL: select_one_float_nsz:
+; P9: # %bb.0: # %entry
+; P9-NEXT: fcmpu cr0, f1, f2
+; P9-NEXT: bne cr0, .LBB6_2
+; P9-NEXT: # %bb.1: # %entry
+; P9-NEXT: fmr f3, f4
+; P9-NEXT: .LBB6_2: # %entry
+; P9-NEXT: fmr f1, f3
+; P9-NEXT: blr
entry:
%cmp = fcmp nsz one float %a, %b
%cond = select i1 %cmp, float %c, float %d
@@ -310,43 +188,25 @@ entry:
}
define double @select_one_double(double %a, double %b, double %c, double %d) {
-; FAST-P8-LABEL: select_one_double:
-; FAST-P8: # %bb.0: # %entry
-; FAST-P8-NEXT: xssubdp f0, f1, f2
-; FAST-P8-NEXT: fsel f1, f0, f4, f3
-; FAST-P8-NEXT: xsnegdp f0, f0
-; FAST-P8-NEXT: fsel f1, f0, f1, f3
-; FAST-P8-NEXT: blr
-;
-; FAST-P9-LABEL: select_one_double:
-; FAST-P9: # %bb.0: # %entry
-; FAST-P9-NEXT: xssubdp f0, f1, f2
-; FAST-P9-NEXT: fsel f1, f0, f4, f3
-; FAST-P9-NEXT: xsnegdp f0, f0
-; FAST-P9-NEXT: fsel f1, f0, f1, f3
-; FAST-P9-NEXT: blr
-;
-; NO-FAST-P8-LABEL: select_one_double:
-; NO-FAST-P8: # %bb.0: # %entry
-; NO-FAST-P8-NEXT: fcmpu cr0, f1, f2
-; NO-FAST-P8-NEXT: crnor 4*cr5+lt, un, eq
-; NO-FAST-P8-NEXT: bc 12, 4*cr5+lt, .LBB7_2
-; NO-FAST-P8-NEXT: # %bb.1: # %entry
-; NO-FAST-P8-NEXT: fmr f3, f4
-; NO-FAST-P8-NEXT: .LBB7_2: # %entry
-; NO-FAST-P8-NEXT: fmr f1, f3
-; NO-FAST-P8-NEXT: blr
-;
-; NO-FAST-P9-LABEL: select_one_double:
-; NO-FAST-P9: # %bb.0: # %entry
-; NO-FAST-P9-NEXT: fcmpu cr0, f1, f2
-; NO-FAST-P9-NEXT: crnor 4*cr5+lt, un, eq
-; NO-FAST-P9-NEXT: bc 12, 4*cr5+lt, .LBB7_2
-; NO-FAST-P9-NEXT: # %bb.1: # %entry
-; NO-FAST-P9-NEXT: fmr f3, f4
-; NO-FAST-P9-NEXT: .LBB7_2: # %entry
-; NO-FAST-P9-NEXT: fmr f1, f3
-; NO-FAST-P9-NEXT: blr
+; P8-LABEL: select_one_double:
+; P8: # %bb.0: # %entry
+; P8-NEXT: xscmpudp cr0, f1, f2
+; P8-NEXT: bne cr0, .LBB7_2
+; P8-NEXT: # %bb.1: # %entry
+; P8-NEXT: fmr f3, f4
+; P8-NEXT: .LBB7_2: # %entry
+; P8-NEXT: fmr f1, f3
+; P8-NEXT: blr
+;
+; P9-LABEL: select_one_double:
+; P9: # %bb.0: # %entry
+; P9-NEXT: xscmpudp cr0, f1, f2
+; P9-NEXT: bne cr0, .LBB7_2
+; P9-NEXT: # %bb.1: # %entry
+; P9-NEXT: fmr f3, f4
+; P9-NEXT: .LBB7_2: # %entry
+; P9-NEXT: fmr f1, f3
+; P9-NEXT: blr
entry:
%cmp = fcmp one double %a, %b
%cond = select i1 %cmp, double %c, double %d
@@ -354,37 +214,21 @@ entry:
}
define float @select_fast_one_float(float %a, float %b, float %c, float %d) {
-; FAST-P8-LABEL: select_fast_one_float:
-; FAST-P8: # %bb.0: # %entry
-; FAST-P8-NEXT: xssubsp f0, f2, f1
-; FAST-P8-NEXT: xssubsp f1, f1, f2
-; FAST-P8-NEXT: fsel f1, f1, f4, f3
-; FAST-P8-NEXT: fsel f1, f0, f1, f3
-; FAST-P8-NEXT: blr
-;
-; FAST-P9-LABEL: select_fast_one_float:
-; FAST-P9: # %bb.0: # %entry
-; FAST-P9-NEXT: xssubsp f0, f2, f1
-; FAST-P9-NEXT: xssubsp f1, f1, f2
-; FAST-P9-NEXT: fsel f1, f1, f4, f3
-; FAST-P9-NEXT: fsel f1, f0, f1, f3
-; FAST-P9-NEXT: blr
-;
-; NO-FAST-P8-LABEL: select_fast_one_float:
-; NO-FAST-P8: # %bb.0: # %entry
-; NO-FAST-P8-NEXT: xssubsp f0, f2, f1
-; NO-FAST-P8-NEXT: xssubsp f1, f1, f2
-; NO-FAST-P8-NEXT: fsel f1, f1, f4, f3
-; NO-FAST-P8-NEXT: fsel f1, f0, f1, f3
-; NO-FAST-P8-NEXT: blr
-;
-; NO-FAST-P9-LABEL: select_fast_one_float:
-; NO-FAST-P9: # %bb.0: # %entry
-; NO-FAST-P9-NEXT: xssubsp f0, f2, f1
-; NO-FAST-P9-NEXT: xssubsp f1, f1, f2
-; NO-FAST-P9-NEXT: fsel f1, f1, f4, f3
-; NO-FAST-P9-NEXT: fsel f1, f0, f1, f3
-; NO-FAST-P9-NEXT: blr
+; P8-LABEL: select_fast_one_float:
+; P8: # %bb.0: # %entry
+; P8-NEXT: xssubsp f0, f2, f1
+; P8-NEXT: xssubsp f1, f1, f2
+; P8-NEXT: fsel f1, f1, f4, f3
+; P8-NEXT: fsel f1, f0, f1, f3
+; P8-NEXT: blr
+;
+; P9-LABEL: select_fast_one_float:
+; P9: # %bb.0: # %entry
+; P9-NEXT: xssubsp f0, f2, f1
+; P9-NEXT: xssubsp f1, f1, f2
+; P9-NEXT: fsel f1, f1, f4, f3
+; P9-NEXT: fsel f1, f0, f1, f3
+; P9-NEXT: blr
entry:
%cmp = fcmp nnan ninf nsz one float %a, %b
%cond = select i1 %cmp, float %c, float %d
@@ -392,37 +236,21 @@ entry:
}
define double @select_fast_one_double(double %a, double %b, double %c, double %d) {
-; FAST-P8-LABEL: select_fast_one_double:
-; FAST-P8: # %bb.0: # %entry
-; FAST-P8-NEXT: xssubdp f0, f1, f2
-; FAST-P8-NEXT: fsel f1, f0, f4, f3
-; FAST-P8-NEXT: xsnegdp f0, f0
-; FAST-P8-NEXT: fsel f1, f0, f1, f3
-; FAST-P8-NEXT: blr
-;
-; FAST-P9-LABEL: select_fast_one_double:
-; FAST-P9: # %bb.0: # %entry
-; FAST-P9-NEXT: xssubdp f0, f1, f2
-; FAST-P9-NEXT: fsel f1, f0, f4, f3
-; FAST-P9-NEXT: xsnegdp f0, f0
-; FAST-P9-NEXT: fsel f1, f0, f1, f3
-; FAST-P9-NEXT: blr
-;
-; NO-FAST-P8-LABEL: select_fast_one_double:
-; NO-FAST-P8: # %bb.0: # %entry
-; NO-FAST-P8-NEXT: xssubdp f0, f1, f2
-; NO-FAST-P8-NEXT: fsel f1, f0, f4, f3
-; NO-FAST-P8-NEXT: xsnegdp f0, f0
-; NO-FAST-P8-NEXT: fsel f1, f0, f1, f3
-; NO-FAST-P8-NEXT: blr
-;
-; NO-FAST-P9-LABEL: select_fast_one_double:
-; NO-FAST-P9: # %bb.0: # %entry
-; NO-FAST-P9-NEXT: xssubdp f0, f1, f2
-; NO-FAST-P9-NEXT: fsel f1, f0, f4, f3
-; NO-FAST-P9-NEXT: xsnegdp f0, f0
-; NO-FAST-P9-NEXT: fsel f1, f0, f1, f3
-; NO-FAST-P9-NEXT: blr
+; P8-LABEL: select_fast_one_double:
+; P8: # %bb.0: # %entry
+; P8-NEXT: xssubdp f0, f1, f2
+; P8-NEXT: fsel f1, f0, f4, f3
+; P8-NEXT: xsnegdp f0, f0
+; P8-NEXT: fsel f1, f0, f1, f3
+; P8-NEXT: blr
+;
+; P9-LABEL: select_fast_one_double:
+; P9: # %bb.0: # %entry
+; P9-NEXT: xssubdp f0, f1, f2
+; P9-NEXT: fsel f1, f0, f4, f3
+; P9-NEXT: xsnegdp f0, f0
+; P9-NEXT: fsel f1, f0, f1, f3
+; P9-NEXT: blr
entry:
%cmp = fcmp nnan ninf nsz one double %a, %b
%cond = select i1 %cmp, double %c, double %d
@@ -432,39 +260,25 @@ entry:
; Test oge
define float @select_oge_float(float %a, float %b, float %c, float %d) {
-; FAST-P8-LABEL: select_oge_float:
-; FAST-P8: # %bb.0: # %entry
-; FAST-P8-NEXT: xssubsp f0, f1, f2
-; FAST-P8-NEXT: fsel f1, f0, f3, f4
-; FAST-P8-NEXT: blr
-;
-; FAST-P9-LABEL: select_oge_float:
-; FAST-P9: # %bb.0: # %entry
-; FAST-P9-NEXT: xssubsp f0, f1, f2
-; FAST-P9-NEXT: fsel f1, f0, f3, f4
-; FAST-P9-NEXT: blr
-;
-; NO-FAST-P8-LABEL: select_oge_float:
-; NO-FAST-P8: # %bb.0: # %entry
-; NO-FAST-P8-NEXT: fcmpu cr0, f1, f2
-; NO-FAST-P8-NEXT: crnor 4*cr5+lt, un, lt
-; NO-FAST-P8-NEXT: bc 12, 4*cr5+lt, .LBB10_2
-; NO-FAST-P8-NEXT: # %bb.1: # %entry
-; NO-FAST-P8-NEXT: fmr f3, f4
-; NO-FAST-P8-NEXT: .LBB10_2: # %entry
-; NO-FAST-P8-NEXT: fmr f1, f3
-; NO-FAST-P8-NEXT: blr
-;
-; NO-FAST-P9-LABEL: select_oge_float:
-; NO-FAST-P9: # %bb.0: # %entry
-; NO-FAST-P9-NEXT: fcmpu cr0, f1, f2
-; NO-FAST-P9-NEXT: crnor 4*cr5+lt, un, lt
-; NO-FAST-P9-NEXT: bc 12, 4*cr5+lt, .LBB10_2
-; NO-FAST-P9-NEXT: # %bb.1: # %entry
-; NO-FAST-P9-NEXT: fmr f3, f4
-; NO-FAST-P9-NEXT: .LBB10_2: # %entry
-; NO-FAST-P9-NEXT: fmr f1, f3
-; NO-FAST-P9-NEXT: blr
+; P8-LABEL: select_oge_float:
+; P8: # %bb.0: # %entry
+; P8-NEXT: fcmpu cr0, f1, f2
+; P8-NEXT: bge cr0, .LBB10_2
+; P8-NEXT: # %bb.1: # %entry
+; P8-NEXT: fmr f3, f4
+; P8-NEXT: .LBB10_2: # %entry
+; P8-NEXT: fmr f1, f3
+; P8-NEXT: blr
+;
+; P9-LABEL: select_oge_float:
+; P9: # %bb.0: # %entry
+; P9-NEXT: fcmpu cr0, f1, f2
+; P9-NEXT: bge cr0, .LBB10_2
+; P9-NEXT: # %bb.1: # %entry
+; P9-NEXT: fmr f3, f4
+; P9-NEXT: .LBB10_2: # %entry
+; P9-NEXT: fmr f1, f3
+; P9-NEXT: blr
entry:
%cmp = fcmp oge float %a, %b
%cond = select i1 %cmp, float %c, float %d
@@ -472,39 +286,25 @@ entry:
}
define double @select_oge_double(double %a, double %b, double %c, double %d) {
-; FAST-P8-LABEL: select_oge_double:
-; FAST-P8: # %bb.0: # %entry
-; FAST-P8-NEXT: xssubdp f0, f1, f2
-; FAST-P8-NEXT: fsel f1, f0, f3, f4
-; FAST-P8-NEXT: blr
-;
-; FAST-P9-LABEL: select_oge_double:
-; FAST-P9: # %bb.0: # %entry
-; FAST-P9-NEXT: xssubdp f0, f1, f2
-; FAST-P9-NEXT: fsel f1, f0, f3, f4
-; FAST-P9-NEXT: blr
-;
-; NO-FAST-P8-LABEL: select_oge_double:
-; NO-FAST-P8: # %bb.0: # %entry
-; NO-FAST-P8-NEXT: fcmpu cr0, f1, f2
-; NO-FAST-P8-NEXT: crnor 4*cr5+lt, un, lt
-; NO-FAST-P8-NEXT: bc 12, 4*cr5+lt, .LBB11_2
-; NO-FAST-P8-NEXT: # %bb.1: # %entry
-; NO-FAST-P8-NEXT: fmr f3, f4
-; NO-FAST-P8-NEXT: .LBB11_2: # %entry
-; NO-FAST-P8-NEXT: fmr f1, f3
-; NO-FAST-P8-NEXT: blr
-;
-; NO-FAST-P9-LABEL: select_oge_double:
-; NO-FAST-P9: # %bb.0: # %entry
-; NO-FAST-P9-NEXT: fcmpu cr0, f1, f2
-; NO-FAST-P9-NEXT: crnor 4*cr5+lt, un, lt
-; NO-FAST-P9-NEXT: bc 12, 4*cr5+lt, .LBB11_2
-; NO-FAST-P9-NEXT: # %bb.1: # %entry
-; NO-FAST-P9-NEXT: fmr f3, f4
-; NO-FAST-P9-NEXT: .LBB11_2: # %entry
-; NO-FAST-P9-NEXT: fmr f1, f3
-; NO-FAST-P9-NEXT: blr
+; P8-LABEL: select_oge_double:
+; P8: # %bb.0: # %entry
+; P8-NEXT: xscmpudp cr0, f1, f2
+; P8-NEXT: bge cr0, .LBB11_2
+; P8-NEXT: # %bb.1: # %entry
+; P8-NEXT: fmr f3, f4
+; P8-NEXT: .LBB11_2: # %entry
+; P8-NEXT: fmr f1, f3
+; P8-NEXT: blr
+;
+; P9-LABEL: select_oge_double:
+; P9: # %bb.0: # %entry
+; P9-NEXT: xscmpudp cr0, f1, f2
+; P9-NEXT: bge cr0, .LBB11_2
+; P9-NEXT: # %bb.1: # %entry
+; P9-NEXT: fmr f3, f4
+; P9-NEXT: .LBB11_2: # %entry
+; P9-NEXT: fmr f1, f3
+; P9-NEXT: blr
entry:
%cmp = fcmp oge double %a, %b
%cond = select i1 %cmp, double %c, double %d
@@ -512,29 +312,17 @@ entry:
}
define float @select_fast_oge_float(float %a, float %b, float %c, float %d) {
-; FAST-P8-LABEL: select_fast_oge_float:
-; FAST-P8: # %bb.0: # %entry
-; FAST-P8-NEXT: xssubsp f0, f1, f2
-; FAST-P8-NEXT: fsel f1, f0, f3, f4
-; FAST-P8-NEXT: blr
-;
-; FAST-P9-LABEL: select_fast_oge_float:
-; FAST-P9: # %bb.0: # %entry
-; FAST-P9-NEXT: xssubsp f0, f1, f2
-; FAST-P9-NEXT: fsel f1, f0, f3, f4
-; FAST-P9-NEXT: blr
-;
-; NO-FAST-P8-LABEL: select_fast_oge_float:
-; NO-FAST-P8: # %bb.0: # %entry
-; NO-FAST-P8-NEXT: xssubsp f0, f1, f2
-; NO-FAST-P8-NEXT: fsel f1, f0, f3, f4
-; NO-FAST-P8-NEXT: blr
-;
-; NO-FAST-P9-LABEL: select_fast_oge_float:
-; NO-FAST-P9: # %bb.0: # %entry
-; NO-FAST-P9-NEXT: xssubsp f0, f1, f2
-; NO-FAST-P9-NEXT: fsel f1, f0, f3, f4
-; NO-FAST-P9-NEXT: blr
+; P8-LABEL: select_fast_oge_float:
+; P8: # %bb.0: # %entry
+; P8-NEXT: xssubsp f0, f1, f2
+; P8-NEXT: fsel f1, f0, f3, f4
+; P8-NEXT: blr
+;
+; P9-LABEL: select_fast_oge_float:
+; P9: # %bb.0: # %entry
+; P9-NEXT: xssubsp f0, f1, f2
+; P9-NEXT: fsel f1, f0, f3, f4
+; P9-NEXT: blr
entry:
%cmp = fcmp nnan ninf nsz oge float %a, %b
%cond = select i1 %cmp, float %c, float %d
@@ -542,29 +330,17 @@ entry:
}
define double @select_fast_oge_double(double %a, double %b, double %c, double %d) {
-; FAST-P8-LABEL: select_fast_oge_double:
-; FAST-P8: # %bb.0: # %entry
-; FAST-P8-NEXT: xssubdp f0, f1, f2
-; FAST-P8-NEXT: fsel f1, f0, f3, f4
-; FAST-P8-NEXT: blr
-;
-; FAST-P9-LABEL: select_fast_oge_double:
-; FAST-P9: # %bb.0: # %entry
-; FAST-P9-NEXT: xssubdp f0, f1, f2
-; FAST-P9-NEXT: fsel f1, f0, f3, f4
-; FAST-P9-NEXT: blr
-;
-; NO-FAST-P8-LABEL: select_fast_oge_double:
-; NO-FAST-P8: # %bb.0: # %entry
-; NO-FAST-P8-NEXT: xssubdp f0, f1, f2
-; NO-FAST-P8-NEXT: fsel f1, f0, f3, f4
-; NO-FAST-P8-NEXT: blr
-;
-; NO-FAST-P9-LABEL: select_fast_oge_double:
-; NO-FAST-P9: # %bb.0: # %entry
-; NO-FAST-P9-NEXT: xssubdp f0, f1, f2
-; NO-FAST-P9-NEXT: fsel f1, f0, f3, f4
-; NO-FAST-P9-NEXT: blr
+; P8-LABEL: select_fast_oge_double:
+; P8: # %bb.0: # %entry
+; P8-NEXT: xssubdp f0, f1, f2
+; P8-NEXT: fsel f1, f0, f3, f4
+; P8-NEXT: blr
+;
+; P9-LABEL: select_fast_oge_double:
+; P9: # %bb.0: # %entry
+; P9-NEXT: xssubdp f0, f1, f2
+; P9-NEXT: fsel f1, f0, f3, f4
+; P9-NEXT: blr
entry:
%cmp = fcmp nnan ninf nsz oge double %a, %b
%cond = select i1 %cmp, double %c, double %d
@@ -574,37 +350,25 @@ entry:
; Test olt
define float @select_olt_float(float %a, float %b, float %c, float %d) {
-; FAST-P8-LABEL: select_olt_float:
-; FAST-P8: # %bb.0: # %entry
-; FAST-P8-NEXT: xssubsp f0, f1, f2
-; FAST-P8-NEXT: fsel f1, f0, f4, f3
-; FAST-P8-NEXT: blr
-;
-; FAST-P9-LABEL: select_olt_float:
-; FAST-P9: # %bb.0: # %entry
-; FAST-P9-NEXT: xssubsp f0, f1, f2
-; FAST-P9-NEXT: fsel f1, f0, f4, f3
-; FAST-P9-NEXT: blr
-;
-; NO-FAST-P8-LABEL: select_olt_float:
-; NO-FAST-P8: # %bb.0: # %entry
-; NO-FAST-P8-NEXT: fcmpu cr0, f1, f2
-; NO-FAST-P8-NEXT: blt cr0, .LBB14_2
-; NO-FAST-P8-NEXT: # %bb.1: # %entry
-; NO-FAST-P8-NEXT: fmr f3, f4
-; NO-FAST-P8-NEXT: .LBB14_2: # %entry
-; NO-FAST-P8-NEXT: fmr f1, f3
-; NO-FAST-P8-NEXT: blr
-;
-; NO-FAST-P9-LABEL: select_olt_float:
-; NO-FAST-P9: # %bb.0: # %entry
-; NO-FAST-P9-NEXT: fcmpu cr0, f1, f2
-; NO-FAST-P9-NEXT: blt cr0, .LBB14_2
-; NO-FAST-P9-NEXT: # %bb.1: # %entry
-; NO-FAST-P9-NEXT: fmr f3, f4
-; NO-FAST-P9-NEXT: .LBB14_2: # %entry
-; NO-FAST-P9-NEXT: fmr f1, f3
-; NO-FAST-P9-NEXT: blr
+; P8-LABEL: select_olt_float:
+; P8: # %bb.0: # %entry
+; P8-NEXT: fcmpu cr0, f1, f2
+; P8-NEXT: blt cr0, .LBB14_2
+; P8-NEXT: # %bb.1: # %entry
+; P8-NEXT: fmr f3, f4
+; P8-NEXT: .LBB14_2: # %entry
+; P8-NEXT: fmr f1, f3
+; P8-NEXT: blr
+;
+; P9-LABEL: select_olt_float:
+; P9: # %bb.0: # %entry
+; P9-NEXT: fcmpu cr0, f1, f2
+; P9-NEXT: blt cr0, .LBB14_2
+; P9-NEXT: # %bb.1: # %entry
+; P9-NEXT: fmr f3, f4
+; P9-NEXT: .LBB14_2: # %entry
+; P9-NEXT: fmr f1, f3
+; P9-NEXT: blr
entry:
%cmp = fcmp olt float %a, %b
%cond = select i1 %cmp, float %c, float %d
@@ -612,37 +376,25 @@ entry:
}
define double @select_olt_double(double %a, double %b, double %c, double %d) {
-; FAST-P8-LABEL: select_olt_double:
-; FAST-P8: # %bb.0: # %entry
-; FAST-P8-NEXT: xssubdp f0, f1, f2
-; FAST-P8-NEXT: fsel f1, f0, f4, f3
-; FAST-P8-NEXT: blr
-;
-; FAST-P9-LABEL: select_olt_double:
-; FAST-P9: # %bb.0: # %entry
-; FAST-P9-NEXT: xssubdp f0, f1, f2
-; FAST-P9-NEXT: fsel f1, f0, f4, f3
-; FAST-P9-NEXT: blr
-;
-; NO-FAST-P8-LABEL: select_olt_double:
-; NO-FAST-P8: # %bb.0: # %entry
-; NO-FAST-P8-NEXT: xscmpudp cr0, f1, f2
-; NO-FAST-P8-NEXT: blt cr0, .LBB15_2
-; NO-FAST-P8-NEXT: # %bb.1: # %entry
-; NO-FAST-P8-NEXT: fmr f3, f4
-; NO-FAST-P8-NEXT: .LBB15_2: # %entry
-; NO-FAST-P8-NEXT: fmr f1, f3
-; NO-FAST-P8-NEXT: blr
-;
-; NO-FAST-P9-LABEL: select_olt_double:
-; NO-FAST-P9: # %bb.0: # %entry
-; NO-FAST-P9-NEXT: xscmpudp cr0, f1, f2
-; NO-FAST-P9-NEXT: blt cr0, .LBB15_2
-; NO-FAST-P9-NEXT: # %bb.1: # %entry
-; NO-FAST-P9-NEXT: fmr f3, f4
-; NO-FAST-P9-NEXT: .LBB15_2: # %entry
-; NO-FAST-P9-NEXT: fmr f1, f3
-; NO-FAST-P9-NEXT: blr
+; P8-LABEL: select_olt_double:
+; P8: # %bb.0: # %entry
+; P8-NEXT: xscmpudp cr0, f1, f2
+; P8-NEXT: blt cr0, .LBB15_2
+; P8-NEXT: # %bb.1: # %entry
+; P8-NEXT: fmr f3, f4
+; P8-NEXT: .LBB15_2: # %entry
+; P8-NEXT: fmr f1, f3
+; P8-NEXT: blr
+;
+; P9-LABEL: select_olt_double:
+; P9: # %bb.0: # %entry
+; P9-NEXT: xscmpudp cr0, f1, f2
+; P9-NEXT: blt cr0, .LBB15_2
+; P9-NEXT: # %bb.1: # %entry
+; P9-NEXT: fmr f3, f4
+; P9-NEXT: .LBB15_2: # %entry
+; P9-NEXT: fmr f1, f3
+; P9-NEXT: blr
entry:
%cmp = fcmp olt double %a, %b
%cond = select i1 %cmp, double %c, double %d
@@ -650,29 +402,17 @@ entry:
}
define float @select_fast_olt_float(float %a, float %b, float %c, float %d) {
-; FAST-P8-LABEL: select_fast_olt_float:
-; FAST-P8: # %bb.0: # %entry
-; FAST-P8-NEXT: xssubsp f0, f1, f2
-; FAST-P8-NEXT: fsel f1, f0, f4, f3
-; FAST-P8-NEXT: blr
-;
-; FAST-P9-LABEL: select_fast_olt_float:
-; FAST-P9: # %bb.0: # %entry
-; FAST-P9-NEXT: xssubsp f0, f1, f2
-; FAST-P9-NEXT: fsel f1, f0, f4, f3
-; FAST-P9-NEXT: blr
-;
-; NO-FAST-P8-LABEL: select_fast_olt_float:
-; NO-FAST-P8: # %bb.0: # %entry
-; NO-FAST-P8-NEXT: xssubsp f0, f1, f2
-; NO-FAST-P8-NEXT: fsel f1, f0, f4, f3
-; NO-FAST-P8-NEXT: blr
-;
-; NO-FAST-P9-LABEL: select_fast_olt_float:
-; NO-FAST-P9: # %bb.0: # %entry
-; NO-FAST-P9-NEXT: xssubsp f0, f1, f2
-; NO-FAST-P9-NEXT: fsel f1, f0, f4, f3
-; NO-FAST-P9-NEXT: blr
+; P8-LABEL: select_fast_olt_float:
+; P8: # %bb.0: # %entry
+; P8-NEXT: xssubsp f0, f1, f2
+; P8-NEXT: fsel f1, f0, f4, f3
+; P8-NEXT: blr
+;
+; P9-LABEL: select_fast_olt_float:
+; P9: # %bb.0: # %entry
+; P9-NEXT: xssubsp f0, f1, f2
+; P9-NEXT: fsel f1, f0, f4, f3
+; P9-NEXT: blr
entry:
%cmp = fcmp ninf nnan nsz olt float %a, %b
%cond = select i1 %cmp, float %c, float %d
@@ -680,29 +420,17 @@ entry:
}
define double @select_fast_olt_double(double %a, double %b, double %c, double %d) {
-; FAST-P8-LABEL: select_fast_olt_double:
-; FAST-P8: # %bb.0: # %entry
-; FAST-P8-NEXT: xssubdp f0, f1, f2
-; FAST-P8-NEXT: fsel f1, f0, f4, f3
-; FAST-P8-NEXT: blr
-;
-; FAST-P9-LABEL: select_fast_olt_double:
-; FAST-P9: # %bb.0: # %entry
-; FAST-P9-NEXT: xssubdp f0, f1, f2
-; FAST-P9-NEXT: fsel f1, f0, f4, f3
-; FAST-P9-NEXT: blr
-;
-; NO-FAST-P8-LABEL: select_fast_olt_double:
-; NO-FAST-P8: # %bb.0: # %entry
-; NO-FAST-P8-NEXT: xssubdp f0, f1, f2
-; NO-FAST-P8-NEXT: fsel f1, f0, f4, f3
-; NO-FAST-P8-NEXT: blr
-;
-; NO-FAST-P9-LABEL: select_fast_olt_double:
-; NO-FAST-P9: # %bb.0: # %entry
-; NO-FAST-P9-NEXT: xssubdp f0, f1, f2
-; NO-FAST-P9-NEXT: fsel f1, f0, f4, f3
-; NO-FAST-P9-NEXT: blr
+; P8-LABEL: select_fast_olt_double:
+; P8: # %bb.0: # %entry
+; P8-NEXT: xssubdp f0, f1, f2
+; P8-NEXT: fsel f1, f0, f4, f3
+; P8-NEXT: blr
+;
+; P9-LABEL: select_fast_olt_double:
+; P9: # %bb.0: # %entry
+; P9-NEXT: xssubdp f0, f1, f2
+; P9-NEXT: fsel f1, f0, f4, f3
+; P9-NEXT: blr
entry:
%cmp = fcmp nnan ninf nsz olt double %a, %b
%cond = select i1 %cmp, double %c, double %d
@@ -712,37 +440,25 @@ entry:
; Test ogt
define float @select_ogt_float(float %a, float %b, float %c, float %d) {
-; FAST-P8-LABEL: select_ogt_float:
-; FAST-P8: # %bb.0: # %entry
-; FAST-P8-NEXT: xssubsp f0, f2, f1
-; FAST-P8-NEXT: fsel f1, f0, f4, f3
-; FAST-P8-NEXT: blr
-;
-; FAST-P9-LABEL: select_ogt_float:
-; FAST-P9: # %bb.0: # %entry
-; FAST-P9-NEXT: xssubsp f0, f2, f1
-; FAST-P9-NEXT: fsel f1, f0, f4, f3
-; FAST-P9-NEXT: blr
-;
-; NO-FAST-P8-LABEL: select_ogt_float:
-; NO-FAST-P8: # %bb.0: # %entry
-; NO-FAST-P8-NEXT: fcmpu cr0, f1, f2
-; NO-FAST-P8-NEXT: bgt cr0, .LBB18_2
-; NO-FAST-P8-NEXT: # %bb.1: # %entry
-; NO-FAST-P8-NEXT: fmr f3, f4
-; NO-FAST-P8-NEXT: .LBB18_2: # %entry
-; NO-FAST-P8-NEXT: fmr f1, f3
-; NO-FAST-P8-NEXT: blr
-;
-; NO-FAST-P9-LABEL: select_ogt_float:
-; NO-FAST-P9: # %bb.0: # %entry
-; NO-FAST-P9-NEXT: fcmpu cr0, f1, f2
-; NO-FAST-P9-NEXT: bgt cr0, .LBB18_2
-; NO-FAST-P9-NEXT: # %bb.1: # %entry
-; NO-FAST-P9-NEXT: fmr f3, f4
-; NO-FAST-P9-NEXT: .LBB18_2: # %entry
-; NO-FAST-P9-NEXT: fmr f1, f3
-; NO-FAST-P9-NEXT: blr
+; P8-LABEL: select_ogt_float:
+; P8: # %bb.0: # %entry
+; P8-NEXT: fcmpu cr0, f1, f2
+; P8-NEXT: bgt cr0, .LBB18_2
+; P8-NEXT: # %bb.1: # %entry
+; P8-NEXT: fmr f3, f4
+; P8-NEXT: .LBB18_2: # %entry
+; P8-NEXT: fmr f1, f3
+; P8-NEXT: blr
+;
+; P9-LABEL: select_ogt_float:
+; P9: # %bb.0: # %entry
+; P9-NEXT: fcmpu cr0, f1, f2
+; P9-NEXT: bgt cr0, .LBB18_2
+; P9-NEXT: # %bb.1: # %entry
+; P9-NEXT: fmr f3, f4
+; P9-NEXT: .LBB18_2: # %entry
+; P9-NEXT: fmr f1, f3
+; P9-NEXT: blr
entry:
%cmp = fcmp ogt float %a, %b
%cond = select i1 %cmp, float %c, float %d
@@ -750,37 +466,25 @@ entry:
}
define double @select_ogt_double(double %a, double %b, double %c, double %d) {
-; FAST-P8-LABEL: select_ogt_double:
-; FAST-P8: # %bb.0: # %entry
-; FAST-P8-NEXT: xssubdp f0, f2, f1
-; FAST-P8-NEXT: fsel f1, f0, f4, f3
-; FAST-P8-NEXT: blr
-;
-; FAST-P9-LABEL: select_ogt_double:
-; FAST-P9: # %bb.0: # %entry
-; FAST-P9-NEXT: xssubdp f0, f2, f1
-; FAST-P9-NEXT: fsel f1, f0, f4, f3
-; FAST-P9-NEXT: blr
-;
-; NO-FAST-P8-LABEL: select_ogt_double:
-; NO-FAST-P8: # %bb.0: # %entry
-; NO-FAST-P8-NEXT: xscmpudp cr0, f1, f2
-; NO-FAST-P8-NEXT: bgt cr0, .LBB19_2
-; NO-FAST-P8-NEXT: # %bb.1: # %entry
-; NO-FAST-P8-NEXT: fmr f3, f4
-; NO-FAST-P8-NEXT: .LBB19_2: # %entry
-; NO-FAST-P8-NEXT: fmr f1, f3
-; NO-FAST-P8-NEXT: blr
-;
-; NO-FAST-P9-LABEL: select_ogt_double:
-; NO-FAST-P9: # %bb.0: # %entry
-; NO-FAST-P9-NEXT: xscmpudp cr0, f1, f2
-; NO-FAST-P9-NEXT: bgt cr0, .LBB19_2
-; NO-FAST-P9-NEXT: # %bb.1: # %entry
-; NO-FAST-P9-NEXT: fmr f3, f4
-; NO-FAST-P9-NEXT: .LBB19_2: # %entry
-; NO-FAST-P9-NEXT: fmr f1, f3
-; NO-FAST-P9-NEXT: blr
+; P8-LABEL: select_ogt_double:
+; P8: # %bb.0: # %entry
+; P8-NEXT: xscmpudp cr0, f1, f2
+; P8-NEXT: bgt cr0, .LBB19_2
+; P8-NEXT: # %bb.1: # %entry
+; P8-NEXT: fmr f3, f4
+; P8-NEXT: .LBB19_2: # %entry
+; P8-NEXT: fmr f1, f3
+; P8-NEXT: blr
+;
+; P9-LABEL: select_ogt_double:
+; P9: # %bb.0: # %entry
+; P9-NEXT: xscmpudp cr0, f1, f2
+; P9-NEXT: bgt cr0, .LBB19_2
+; P9-NEXT: # %bb.1: # %entry
+; P9-NEXT: fmr f3, f4
+; P9-NEXT: .LBB19_2: # %entry
+; P9-NEXT: fmr f1, f3
+; P9-NEXT: blr
entry:
%cmp = fcmp ogt double %a, %b
%cond = select i1 %cmp, double %c, double %d
@@ -788,29 +492,17 @@ entry:
}
define float @select_fast_ogt_float(float %a, float %b, float %c, float %d) {
-; FAST-P8-LABEL: select_fast_ogt_float:
-; FAST-P8: # %bb.0: # %entry
-; FAST-P8-NEXT: xssubsp f0, f2, f1
-; FAST-P8-NEXT: fsel f1, f0, f4, f3
-; FAST-P8-NEXT: blr
-;
-; FAST-P9-LABEL: select_fast_ogt_float:
-; FAST-P9: # %bb.0: # %entry
-; FAST-P9-NEXT: xssubsp f0, f2, f1
-; FAST-P9-NEXT: fsel f1, f0, f4, f3
-; FAST-P9-NEXT: blr
-;
-; NO-FAST-P8-LABEL: select_fast_ogt_float:
-; NO-FAST-P8: # %bb.0: # %entry
-; NO-FAST-P8-NEXT: xssubsp f0, f2, f1
-; NO-FAST-P8-NEXT: fsel f1, f0, f4, f3
-; NO-FAST-P8-NEXT: blr
-;
-; NO-FAST-P9-LABEL: select_fast_ogt_float:
-; NO-FAST-P9: # %bb.0: # %entry
-; NO-FAST-P9-NEXT: xssubsp f0, f2, f1
-; NO-FAST-P9-NEXT: fsel f1, f0, f4, f3
-; NO-FAST-P9-NEXT: blr
+; P8-LABEL: select_fast_ogt_float:
+; P8: # %bb.0: # %entry
+; P8-NEXT: xssubsp f0, f2, f1
+; P8-NEXT: fsel f1, f0, f4, f3
+; P8-NEXT: blr
+;
+; P9-LABEL: select_fast_ogt_float:
+; P9: # %bb.0: # %entry
+; P9-NEXT: xssubsp f0, f2, f1
+; P9-NEXT: fsel f1, f0, f4, f3
+; P9-NEXT: blr
entry:
%cmp = fcmp nnan ninf nsz ogt float %a, %b
%cond = select i1 %cmp, float %c, float %d
@@ -818,29 +510,17 @@ entry:
}
define double @select_fast_ogt_double(double %a, double %b, double %c, double %d) {
-; FAST-P8-LABEL: select_fast_ogt_double:
-; FAST-P8: # %bb.0: # %entry
-; FAST-P8-NEXT: xssubdp f0, f2, f1
-; FAST-P8-NEXT: fsel f1, f0, f4, f3
-; FAST-P8-NEXT: blr
-;
-; FAST-P9-LABEL: select_fast_ogt_double:
-; FAST-P9: # %bb.0: # %entry
-; FAST-P9-NEXT: xssubdp f0, f2, f1
-; FAST-P9-NEXT: fsel f1, f0, f4, f3
-; FAST-P9-NEXT: blr
-;
-; NO-FAST-P8-LABEL: select_fast_ogt_double:
-; NO-FAST-P8: # %bb.0: # %entry
-; NO-FAST-P8-NEXT: xssubdp f0, f2, f1
-; NO-FAST-P8-NEXT: fsel f1, f0, f4, f3
-; NO-FAST-P8-NEXT: blr
-;
-; NO-FAST-P9-LABEL: select_fast_ogt_double:
-; NO-FAST-P9: # %bb.0: # %entry
-; NO-FAST-P9-NEXT: xssubdp f0, f2, f1
-; NO-FAST-P9-NEXT: fsel f1, f0, f4, f3
-; NO-FAST-P9-NEXT: blr
+; P8-LABEL: select_fast_ogt_double:
+; P8: # %bb.0: # %entry
+; P8-NEXT: xssubdp f0, f2, f1
+; P8-NEXT: fsel f1, f0, f4, f3
+; P8-NEXT: blr
+;
+; P9-LABEL: select_fast_ogt_double:
+; P9: # %bb.0: # %entry
+; P9-NEXT: xssubdp f0, f2, f1
+; P9-NEXT: fsel f1, f0, f4, f3
+; P9-NEXT: blr
entry:
%cmp = fcmp nnan ninf nsz ogt double %a, %b
%cond = select i1 %cmp, double %c, double %d
@@ -850,39 +530,25 @@ entry:
; Test ole
define float @select_ole_float(float %a, float %b, float %c, float %d) {
-; FAST-P8-LABEL: select_ole_float:
-; FAST-P8: # %bb.0: # %entry
-; FAST-P8-NEXT: xssubsp f0, f2, f1
-; FAST-P8-NEXT: fsel f1, f0, f3, f4
-; FAST-P8-NEXT: blr
-;
-; FAST-P9-LABEL: select_ole_float:
-; FAST-P9: # %bb.0: # %entry
-; FAST-P9-NEXT: xssubsp f0, f2, f1
-; FAST-P9-NEXT: fsel f1, f0, f3, f4
-; FAST-P9-NEXT: blr
-;
-; NO-FAST-P8-LABEL: select_ole_float:
-; NO-FAST-P8: # %bb.0: # %entry
-; NO-FAST-P8-NEXT: fcmpu cr0, f1, f2
-; NO-FAST-P8-NEXT: crnor 4*cr5+lt, un, gt
-; NO-FAST-P8-NEXT: bc 12, 4*cr5+lt, .LBB22_2
-; NO-FAST-P8-NEXT: # %bb.1: # %entry
-; NO-FAST-P8-NEXT: fmr f3, f4
-; NO-FAST-P8-NEXT: .LBB22_2: # %entry
-; NO-FAST-P8-NEXT: fmr f1, f3
-; NO-FAST-P8-NEXT: blr
-;
-; NO-FAST-P9-LABEL: select_ole_float:
-; NO-FAST-P9: # %bb.0: # %entry
-; NO-FAST-P9-NEXT: fcmpu cr0, f1, f2
-; NO-FAST-P9-NEXT: crnor 4*cr5+lt, un, gt
-; NO-FAST-P9-NEXT: bc 12, 4*cr5+lt, .LBB22_2
-; NO-FAST-P9-NEXT: # %bb.1: # %entry
-; NO-FAST-P9-NEXT: fmr f3, f4
-; NO-FAST-P9-NEXT: .LBB22_2: # %entry
-; NO-FAST-P9-NEXT: fmr f1, f3
-; NO-FAST-P9-NEXT: blr
+; P8-LABEL: select_ole_float:
+; P8: # %bb.0: # %entry
+; P8-NEXT: fcmpu cr0, f1, f2
+; P8-NEXT: ble cr0, .LBB22_2
+; P8-NEXT: # %bb.1: # %entry
+; P8-NEXT: fmr f3, f4
+; P8-NEXT: .LBB22_2: # %entry
+; P8-NEXT: fmr f1, f3
+; P8-NEXT: blr
+;
+; P9-LABEL: select_ole_float:
+; P9: # %bb.0: # %entry
+; P9-NEXT: fcmpu cr0, f1, f2
+; P9-NEXT: ble cr0, .LBB22_2
+; P9-NEXT: # %bb.1: # %entry
+; P9-NEXT: fmr f3, f4
+; P9-NEXT: .LBB22_2: # %entry
+; P9-NEXT: fmr f1, f3
+; P9-NEXT: blr
entry:
%cmp = fcmp ole float %a, %b
%cond = select i1 %cmp, float %c, float %d
@@ -890,39 +556,25 @@ entry:
}
define double @select_ole_double(double %a, double %b, double %c, double %d) {
-; FAST-P8-LABEL: select_ole_double:
-; FAST-P8: # %bb.0: # %entry
-; FAST-P8-NEXT: xssubdp f0, f2, f1
-; FAST-P8-NEXT: fsel f1, f0, f3, f4
-; FAST-P8-NEXT: blr
-;
-; FAST-P9-LABEL: select_ole_double:
-; FAST-P9: # %bb.0: # %entry
-; FAST-P9-NEXT: xssubdp f0, f2, f1
-; FAST-P9-NEXT: fsel f1, f0, f3, f4
-; FAST-P9-NEXT: blr
-;
-; NO-FAST-P8-LABEL: select_ole_double:
-; NO-FAST-P8: # %bb.0: # %entry
-; NO-FAST-P8-NEXT: fcmpu cr0, f1, f2
-; NO-FAST-P8-NEXT: crnor 4*cr5+lt, un, gt
-; NO-FAST-P8-NEXT: bc 12, 4*cr5+lt, .LBB23_2
-; NO-FAST-P8-NEXT: # %bb.1: # %entry
-; NO-FAST-P8-NEXT: fmr f3, f4
-; NO-FAST-P8-NEXT: .LBB23_2: # %entry
-; NO-FAST-P8-NEXT: fmr f1, f3
-; NO-FAST-P8-NEXT: blr
-;
-; NO-FAST-P9-LABEL: select_ole_double:
-; NO-FAST-P9: # %bb.0: # %entry
-; NO-FAST-P9-NEXT: fcmpu cr0, f1, f2
-; NO-FAST-P9-NEXT: crnor 4*cr5+lt, un, gt
-; NO-FAST-P9-NEXT: bc 12, 4*cr5+lt, .LBB23_2
-; NO-FAST-P9-NEXT: # %bb.1: # %entry
-; NO-FAST-P9-NEXT: fmr f3, f4
-; NO-FAST-P9-NEXT: .LBB23_2: # %entry
-; NO-FAST-P9-NEXT: fmr f1, f3
-; NO-FAST-P9-NEXT: blr
+; P8-LABEL: select_ole_double:
+; P8: # %bb.0: # %entry
+; P8-NEXT: xscmpudp cr0, f1, f2
+; P8-NEXT: ble cr0, .LBB23_2
+; P8-NEXT: # %bb.1: # %entry
+; P8-NEXT: fmr f3, f4
+; P8-NEXT: .LBB23_2: # %entry
+; P8-NEXT: fmr f1, f3
+; P8-NEXT: blr
+;
+; P9-LABEL: select_ole_double:
+; P9: # %bb.0: # %entry
+; P9-NEXT: xscmpudp cr0, f1, f2
+; P9-NEXT: ble cr0, .LBB23_2
+; P9-NEXT: # %bb.1: # %entry
+; P9-NEXT: fmr f3, f4
+; P9-NEXT: .LBB23_2: # %entry
+; P9-NEXT: fmr f1, f3
+; P9-NEXT: blr
entry:
%cmp = fcmp ole double %a, %b
%cond = select i1 %cmp, double %c, double %d
@@ -930,29 +582,17 @@ entry:
}
define float @select_fast_ole_float(float %a, float %b, float %c, float %d) {
-; FAST-P8-LABEL: select_fast_ole_float:
-; FAST-P8: # %bb.0: # %entry
-; FAST-P8-NEXT: xssubsp f0, f2, f1
-; FAST-P8-NEXT: fsel f1, f0, f3, f4
-; FAST-P8-NEXT: blr
-;
-; FAST-P9-LABEL: select_fast_ole_float:
-; FAST-P9: # %bb.0: # %entry
-; FAST-P9-NEXT: xssubsp f0, f2, f1
-; FAST-P9-NEXT: fsel f1, f0, f3, f4
-; FAST-P9-NEXT: blr
-;
-; NO-FAST-P8-LABEL: select_fast_ole_float:
-; NO-FAST-P8: # %bb.0: # %entry
-; NO-FAST-P8-NEXT: xssubsp f0, f2, f1
-; NO-FAST-P8-NEXT: fsel f1, f0, f3, f4
-; NO-FAST-P8-NEXT: blr
-;
-; NO-FAST-P9-LABEL: select_fast_ole_float:
-; NO-FAST-P9: # %bb.0: # %entry
-; NO-FAST-P9-NEXT: xssubsp f0, f2, f1
-; NO-FAST-P9-NEXT: fsel f1, f0, f3, f4
-; NO-FAST-P9-NEXT: blr
+; P8-LABEL: select_fast_ole_float:
+; P8: # %bb.0: # %entry
+; P8-NEXT: xssubsp f0, f2, f1
+; P8-NEXT: fsel f1, f0, f3, f4
+; P8-NEXT: blr
+;
+; P9-LABEL: select_fast_ole_float:
+; P9: # %bb.0: # %entry
+; P9-NEXT: xssubsp f0, f2, f1
+; P9-NEXT: fsel f1, f0, f3, f4
+; P9-NEXT: blr
entry:
%cmp = fcmp nnan ninf nsz ole float %a, %b
%cond = select i1 %cmp, float %c, float %d
@@ -960,29 +600,17 @@ entry:
}
define double @select_fast_ole_double(double %a, double %b, double %c, double %d) {
-; FAST-P8-LABEL: select_fast_ole_double:
-; FAST-P8: # %bb.0: # %entry
-; FAST-P8-NEXT: xssubdp f0, f2, f1
-; FAST-P8-NEXT: fsel f1, f0, f3, f4
-; FAST-P8-NEXT: blr
-;
-; FAST-P9-LABEL: select_fast_ole_double:
-; FAST-P9: # %bb.0: # %entry
-; FAST-P9-NEXT: xssubdp f0, f2, f1
-; FAST-P9-NEXT: fsel f1, f0, f3, f4
-; FAST-P9-NEXT: blr
-;
-; NO-FAST-P8-LABEL: select_fast_ole_double:
-; NO-FAST-P8: # %bb.0: # %entry
-; NO-FAST-P8-NEXT: xssubdp f0, f2, f1
-; NO-FAST-P8-NEXT: fsel f1, f0, f3, f4
-; NO-FAST-P8-NEXT: blr
-;
-; NO-FAST-P9-LABEL: select_fast_ole_double:
-; NO-FAST-P9: # %bb.0: # %entry
-; NO-FAST-P9-NEXT: xssubdp f0, f2, f1
-; NO-FAST-P9-NEXT: fsel f1, f0, f3, f4
-; NO-FAST-P9-NEXT: blr
+; P8-LABEL: select_fast_ole_double:
+; P8: # %bb.0: # %entry
+; P8-NEXT: xssubdp f0, f2, f1
+; P8-NEXT: fsel f1, f0, f3, f4
+; P8-NEXT: blr
+;
+; P9-LABEL: select_fast_ole_double:
+; P9: # %bb.0: # %entry
+; P9-NEXT: xssubdp f0, f2, f1
+; P9-NEXT: fsel f1, f0, f3, f4
+; P9-NEXT: blr
entry:
%cmp = fcmp nnan ninf nsz ole double %a, %b
%cond = select i1 %cmp, double %c, double %d
@@ -991,51 +619,29 @@ entry:
; Test RHS is 1.000000e+00
define double @onecmp1(double %a, double %y, double %z) {
-; FAST-P8-LABEL: onecmp1:
-; FAST-P8: # %bb.0: # %entry
-; FAST-P8-NEXT: vspltisw v2, -1
-; FAST-P8-NEXT: xvcvsxwdp vs0, vs34
-; FAST-P8-NEXT: xsadddp f0, f1, f0
-; FAST-P8-NEXT: fsel f1, f0, f2, f3
-; FAST-P8-NEXT: blr
-;
-; FAST-P9-LABEL: onecmp1:
-; FAST-P9: # %bb.0: # %entry
-; FAST-P9-NEXT: vspltisw v2, -1
-; FAST-P9-NEXT: xvcvsxwdp vs0, vs34
-; FAST-P9-NEXT: xsadddp f0, f1, f0
-; FAST-P9-NEXT: fsel f1, f0, f2, f3
-; FAST-P9-NEXT: blr
-;
-; NO-FAST-P8-LABEL: onecmp1:
-; NO-FAST-P8: # %bb.0: # %entry
-; NO-FAST-P8-NEXT: vspltisw v2, 1
-; NO-FAST-P8-NEXT: xvcvsxwdp vs0, vs34
-; NO-FAST-P8-NEXT: fcmpu cr0, f1, f0
-; NO-FAST-P8-NEXT: bc 12, lt, .LBB26_3
-; NO-FAST-P8-NEXT: # %bb.1: # %entry
-; NO-FAST-P8-NEXT: fcmpu cr0, f1, f1
-; NO-FAST-P8-NEXT: bc 12, un, .LBB26_3
-; NO-FAST-P8-NEXT: # %bb.2: # %entry
-; NO-FAST-P8-NEXT: fmr f3, f2
-; NO-FAST-P8-NEXT: .LBB26_3: # %entry
-; NO-FAST-P8-NEXT: fmr f1, f3
-; NO-FAST-P8-NEXT: blr
-;
-; NO-FAST-P9-LABEL: onecmp1:
-; NO-FAST-P9: # %bb.0: # %entry
-; NO-FAST-P9-NEXT: vspltisw v2, 1
-; NO-FAST-P9-NEXT: xvcvsxwdp vs0, vs34
-; NO-FAST-P9-NEXT: fcmpu cr0, f1, f0
-; NO-FAST-P9-NEXT: bc 12, lt, .LBB26_3
-; NO-FAST-P9-NEXT: # %bb.1: # %entry
-; NO-FAST-P9-NEXT: fcmpu cr0, f1, f1
-; NO-FAST-P9-NEXT: bc 12, un, .LBB26_3
-; NO-FAST-P9-NEXT: # %bb.2: # %entry
-; NO-FAST-P9-NEXT: fmr f3, f2
-; NO-FAST-P9-NEXT: .LBB26_3: # %entry
-; NO-FAST-P9-NEXT: fmr f1, f3
-; NO-FAST-P9-NEXT: blr
+; P8-LABEL: onecmp1:
+; P8: # %bb.0: # %entry
+; P8-NEXT: vspltisw v2, 1
+; P8-NEXT: xvcvsxwdp vs0, vs34
+; P8-NEXT: xscmpudp cr0, f1, f0
+; P8-NEXT: blt cr0, .LBB26_2
+; P8-NEXT: # %bb.1: # %entry
+; P8-NEXT: fmr f3, f2
+; P8-NEXT: .LBB26_2: # %entry
+; P8-NEXT: fmr f1, f3
+; P8-NEXT: blr
+;
+; P9-LABEL: onecmp1:
+; P9: # %bb.0: # %entry
+; P9-NEXT: vspltisw v2, 1
+; P9-NEXT: xvcvsxwdp vs0, vs34
+; P9-NEXT: xscmpudp cr0, f1, f0
+; P9-NEXT: blt cr0, .LBB26_2
+; P9-NEXT: # %bb.1: # %entry
+; P9-NEXT: fmr f3, f2
+; P9-NEXT: .LBB26_2: # %entry
+; P9-NEXT: fmr f1, f3
+; P9-NEXT: blr
entry:
%cmp = fcmp ult double %a, 1.000000e+00
%z.y = select i1 %cmp, double %z, double %y
@@ -1043,45 +649,29 @@ entry:
}
define double @onecmp2(double %a, double %y, double %z) {
-; FAST-P8-LABEL: onecmp2:
-; FAST-P8: # %bb.0: # %entry
-; FAST-P8-NEXT: vspltisw v2, 1
-; FAST-P8-NEXT: xvcvsxwdp vs0, vs34
-; FAST-P8-NEXT: xssubdp f0, f0, f1
-; FAST-P8-NEXT: fsel f1, f0, f3, f2
-; FAST-P8-NEXT: blr
-;
-; FAST-P9-LABEL: onecmp2:
-; FAST-P9: # %bb.0: # %entry
-; FAST-P9-NEXT: vspltisw v2, 1
-; FAST-P9-NEXT: xvcvsxwdp vs0, vs34
-; FAST-P9-NEXT: xssubdp f0, f0, f1
-; FAST-P9-NEXT: fsel f1, f0, f3, f2
-; FAST-P9-NEXT: blr
-;
-; NO-FAST-P8-LABEL: onecmp2:
-; NO-FAST-P8: # %bb.0: # %entry
-; NO-FAST-P8-NEXT: vspltisw v2, 1
-; NO-FAST-P8-NEXT: xvcvsxwdp vs0, vs34
-; NO-FAST-P8-NEXT: xscmpudp cr0, f1, f0
-; NO-FAST-P8-NEXT: bgt cr0, .LBB27_2
-; NO-FAST-P8-NEXT: # %bb.1: # %entry
-; NO-FAST-P8-NEXT: fmr f2, f3
-; NO-FAST-P8-NEXT: .LBB27_2: # %entry
-; NO-FAST-P8-NEXT: fmr f1, f2
-; NO-FAST-P8-NEXT: blr
-;
-; NO-FAST-P9-LABEL: onecmp2:
-; NO-FAST-P9: # %bb.0: # %entry
-; NO-FAST-P9-NEXT: vspltisw v2, 1
-; NO-FAST-P9-NEXT: xvcvsxwdp vs0, vs34
-; NO-FAST-P9-NEXT: xscmpudp cr0, f1, f0
-; NO-FAST-P9-NEXT: bgt cr0, .LBB27_2
-; NO-FAST-P9-NEXT: # %bb.1: # %entry
-; NO-FAST-P9-NEXT: fmr f2, f3
-; NO-FAST-P9-NEXT: .LBB27_2: # %entry
-; NO-FAST-P9-NEXT: fmr f1, f2
-; NO-FAST-P9-NEXT: blr
+; P8-LABEL: onecmp2:
+; P8: # %bb.0: # %entry
+; P8-NEXT: vspltisw v2, 1
+; P8-NEXT: xvcvsxwdp vs0, vs34
+; P8-NEXT: xscmpudp cr0, f1, f0
+; P8-NEXT: bgt cr0, .LBB27_2
+; P8-NEXT: # %bb.1: # %entry
+; P8-NEXT: fmr f2, f3
+; P8-NEXT: .LBB27_2: # %entry
+; P8-NEXT: fmr f1, f2
+; P8-NEXT: blr
+;
+; P9-LABEL: onecmp2:
+; P9: # %bb.0: # %entry
+; P9-NEXT: vspltisw v2, 1
+; P9-NEXT: xvcvsxwdp vs0, vs34
+; P9-NEXT: xscmpudp cr0, f1, f0
+; P9-NEXT: bgt cr0, .LBB27_2
+; P9-NEXT: # %bb.1: # %entry
+; P9-NEXT: fmr f2, f3
+; P9-NEXT: .LBB27_2: # %entry
+; P9-NEXT: fmr f1, f2
+; P9-NEXT: blr
entry:
%cmp = fcmp ogt double %a, 1.000000e+00
%y.z = select i1 %cmp, double %y, double %z
@@ -1089,49 +679,29 @@ entry:
}
define double @onecmp3(double %a, double %y, double %z) {
-; FAST-P8-LABEL: onecmp3:
-; FAST-P8: # %bb.0: # %entry
-; FAST-P8-NEXT: vspltisw v2, -1
-; FAST-P8-NEXT: xvcvsxwdp vs0, vs34
-; FAST-P8-NEXT: xsadddp f0, f1, f0
-; FAST-P8-NEXT: fsel f1, f0, f2, f3
-; FAST-P8-NEXT: xsnegdp f0, f0
-; FAST-P8-NEXT: fsel f1, f0, f1, f3
-; FAST-P8-NEXT: blr
-;
-; FAST-P9-LABEL: onecmp3:
-; FAST-P9: # %bb.0: # %entry
-; FAST-P9-NEXT: vspltisw v2, -1
-; FAST-P9-NEXT: xvcvsxwdp vs0, vs34
-; FAST-P9-NEXT: xsadddp f0, f1, f0
-; FAST-P9-NEXT: fsel f1, f0, f2, f3
-; FAST-P9-NEXT: xsnegdp f0, f0
-; FAST-P9-NEXT: fsel f1, f0, f1, f3
-; FAST-P9-NEXT: blr
-;
-; NO-FAST-P8-LABEL: onecmp3:
-; NO-FAST-P8: # %bb.0: # %entry
-; NO-FAST-P8-NEXT: vspltisw v2, 1
-; NO-FAST-P8-NEXT: xvcvsxwdp vs0, vs34
-; NO-FAST-P8-NEXT: xscmpudp cr0, f1, f0
-; NO-FAST-P8-NEXT: beq cr0, .LBB28_2
-; NO-FAST-P8-NEXT: # %bb.1: # %entry
-; NO-FAST-P8-NEXT: fmr f2, f3
-; NO-FAST-P8-NEXT: .LBB28_2: # %entry
-; NO-FAST-P8-NEXT: fmr f1, f2
-; NO-FAST-P8-NEXT: blr
-;
-; NO-FAST-P9-LABEL: onecmp3:
-; NO-FAST-P9: # %bb.0: # %entry
-; NO-FAST-P9-NEXT: vspltisw v2, 1
-; NO-FAST-P9-NEXT: xvcvsxwdp vs0, vs34
-; NO-FAST-P9-NEXT: xscmpudp cr0, f1, f0
-; NO-FAST-P9-NEXT: beq cr0, .LBB28_2
-; NO-FAST-P9-NEXT: # %bb.1: # %entry
-; NO-FAST-P9-NEXT: fmr f2, f3
-; NO-FAST-P9-NEXT: .LBB28_2: # %entry
-; NO-FAST-P9-NEXT: fmr f1, f2
-; NO-FAST-P9-NEXT: blr
+; P8-LABEL: onecmp3:
+; P8: # %bb.0: # %entry
+; P8-NEXT: vspltisw v2, 1
+; P8-NEXT: xvcvsxwdp vs0, vs34
+; P8-NEXT: xscmpudp cr0, f1, f0
+; P8-NEXT: beq cr0, .LBB28_2
+; P8-NEXT: # %bb.1: # %entry
+; P8-NEXT: fmr f2, f3
+; P8-NEXT: .LBB28_2: # %entry
+; P8-NEXT: fmr f1, f2
+; P8-NEXT: blr
+;
+; P9-LABEL: onecmp3:
+; P9: # %bb.0: # %entry
+; P9-NEXT: vspltisw v2, 1
+; P9-NEXT: xvcvsxwdp vs0, vs34
+; P9-NEXT: xscmpudp cr0, f1, f0
+; P9-NEXT: beq cr0, .LBB28_2
+; P9-NEXT: # %bb.1: # %entry
+; P9-NEXT: fmr f2, f3
+; P9-NEXT: .LBB28_2: # %entry
+; P9-NEXT: fmr f1, f2
+; P9-NEXT: blr
entry:
%cmp = fcmp oeq double %a, 1.000000e+00
%y.z = select i1 %cmp, double %y, double %z
More information about the llvm-commits
mailing list