public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc(refs/users/meissner/heads/work048)] Revert patch.
@ 2021-04-19 15:31 Michael Meissner
0 siblings, 0 replies; 2+ messages in thread
From: Michael Meissner @ 2021-04-19 15:31 UTC (permalink / raw)
To: gcc-cvs
https://gcc.gnu.org/g:dea3e1ae50dbb42a1f340edf38448ba1441c3b1d
commit dea3e1ae50dbb42a1f340edf38448ba1441c3b1d
Author: Michael Meissner <meissner@linux.ibm.com>
Date: Mon Apr 19 11:31:01 2021 -0400
Revert patch.
gcc/
2021-04-15 Michael Meissner <meissner@linux.ibm.com>
Revert patch.
* config/rs6000/altivec.md (UNSPEC_XXBLEND): Move to vsx.md.
(VM3): Move to vsx.md and rename to VBLEND.
(VM3_char): Move to vsx.md and rename to VBLEND_char.
(xxblend_<mode>): Move to vsx.md.
* config/rs6000/vsx.md (UNSPEC_XXEVAL): Move from altivec.md.
(VBLEND): Move from altivec.md and rename VM3 to VBLEND.
(VBLEND_char): Move from altivec.md and rename VM3_char to
VBLEND_char.
(xxblend_<mode>): Move from altivec.md. Use vsx_register_operand
instead of register operand. Change the insn type from vecsimple
to vecperm.
Diff:
---
gcc/config/rs6000/altivec.md | 27 +++++++++++++++++++++++++++
gcc/config/rs6000/vsx.md | 26 --------------------------
2 files changed, 27 insertions(+), 26 deletions(-)
diff --git a/gcc/config/rs6000/altivec.md b/gcc/config/rs6000/altivec.md
index ed79a6b85cd..a1ba10b0275 100644
--- a/gcc/config/rs6000/altivec.md
+++ b/gcc/config/rs6000/altivec.md
@@ -175,6 +175,7 @@
UNSPEC_VSTRIL
UNSPEC_SLDB
UNSPEC_SRDB
+ UNSPEC_XXBLEND
])
(define_c_enum "unspecv"
@@ -215,6 +216,21 @@
(KF "FLOAT128_VECTOR_P (KFmode)")
(TF "FLOAT128_VECTOR_P (TFmode)")])
+;; Like VM2, just do char, short, int, long, float and double
+(define_mode_iterator VM3 [V4SI
+ V8HI
+ V16QI
+ V4SF
+ V2DF
+ V2DI])
+
+(define_mode_attr VM3_char [(V2DI "d")
+ (V4SI "w")
+ (V8HI "h")
+ (V16QI "b")
+ (V2DF "d")
+ (V4SF "w")])
+
;; Map the Vector convert single precision to double precision for integer
;; versus floating point
(define_mode_attr VS_sxwsp [(V4SI "sxw") (V4SF "sp")])
@@ -799,6 +815,17 @@
"vs<SLDB_lr>dbi %0,%1,%2,%3"
[(set_attr "type" "vecsimple")])
+(define_insn "xxblend_<mode>"
+ [(set (match_operand:VM3 0 "register_operand" "=wa")
+ (unspec:VM3 [(match_operand:VM3 1 "register_operand" "wa")
+ (match_operand:VM3 2 "register_operand" "wa")
+ (match_operand:VM3 3 "register_operand" "wa")]
+ UNSPEC_XXBLEND))]
+ "TARGET_POWER10"
+ "xxblendv<VM3_char> %x0,%x1,%x2,%x3"
+ [(set_attr "type" "vecsimple")
+ (set_attr "prefixed" "yes")])
+
(define_expand "vstrir_<mode>"
[(set (match_operand:VIshort 0 "altivec_register_operand")
(unspec:VIshort [(match_operand:VIshort 1 "altivec_register_operand")]
diff --git a/gcc/config/rs6000/vsx.md b/gcc/config/rs6000/vsx.md
index c1e453dd9ff..0e5fb21d234 100644
--- a/gcc/config/rs6000/vsx.md
+++ b/gcc/config/rs6000/vsx.md
@@ -271,19 +271,6 @@
;; and Vector Integer Multiply/Divide/Modulo Instructions
(define_mode_iterator VIlong [V2DI V4SI])
-;; Modes for XXBLEND
-(define_mode_iterator VBLEND [V16QI V8HI V4SI V4SF V2DF V2DI])
-
-;; XXBLEND type
-(define_mode_attr VBLEND_char [(V16QI "b")
- (V8HI "h")
- (V4SI "w")
- (V4SF "w")
- (V2DF "d")
- (V2DI "d")])
-
-
-
;; Constants for creating unspecs
(define_c_enum "unspec"
[UNSPEC_VSX_CONCAT
@@ -387,7 +374,6 @@
UNSPEC_XXSPLTI32DX_CONST
UNSPEC_XXPERMX
UNSPEC_XXEVAL
- UNSPEC_XXBLEND
])
(define_int_iterator XVCVBF16 [UNSPEC_VSX_XVCVSPBF16
@@ -6536,15 +6522,3 @@
"xxeval %0,%1,%2,%3,%4"
[(set_attr "type" "vecperm")
(set_attr "prefixed" "yes")])
-
-;; XXBLEND built-in function support.
-(define_insn "xxblend_<mode>"
- [(set (match_operand:VBLEND 0 "vsx_register_operand" "=wa")
- (unspec:VBLEND [(match_operand:VBLEND 1 "vsx_register_operand" "wa")
- (match_operand:VBLEND 2 "vsx_register_operand" "wa")
- (match_operand:VBLEND 3 "vsx_register_operand" "wa")]
- UNSPEC_XXBLEND))]
- "TARGET_POWER10"
- "xxblendv<Blenc_char> %x0,%x1,%x2,%x3"
- [(set_attr "type" "vecperm")
- (set_attr "prefixed" "yes")])
^ permalink raw reply [flat|nested] 2+ messages in thread
* [gcc(refs/users/meissner/heads/work048)] Revert patch.
@ 2021-04-14 22:33 Michael Meissner
0 siblings, 0 replies; 2+ messages in thread
From: Michael Meissner @ 2021-04-14 22:33 UTC (permalink / raw)
To: gcc-cvs
https://gcc.gnu.org/g:4c3d14b2323d5c55718af3b4b9b0f7457fbcb679
commit 4c3d14b2323d5c55718af3b4b9b0f7457fbcb679
Author: Michael Meissner <meissner@linux.ibm.com>
Date: Wed Apr 14 18:33:14 2021 -0400
Revert patch.
gcc/
2021-04-14 Michael Meissner <meissner@linux.ibm.com>
Revert patch.
* config/rs6000/rs6000.c (have_compare_and_set_mask): Add IEEE
128-bit floating point types.
* config/rs6000/rs6000.md (FPMASK): New iterator.
(FPMASK2): New iterator.
(Fv mode attribute): Add KFmode and TFmode.
(mov<FPMASK:mode><FPMASK2:mode>cc_fpmask): Replace
mov<SFDF:mode><SFDF2:mode>cc_p9. Add IEEE 128-bit fp support.
(mov<FPMASK:mode><FPMASK2:mode>cc_invert_fpmask): Replace
mov<SFDF:mode><SFDF2:mode>cc_invert_p9. Add IEEE 128-bit fp
support.
(fpmask<mode>): Add IEEE 128-bit fp support. Enable generator to
build te RTL.
(xxsel<mode>): Add IEEE 128-bit fp support. Enable generator to
build te RTL.
gcc/testsuite/
2021-04-14 Michael Meissner <meissner@linux.ibm.com>
Revert patch.
* gcc.target/powerpc/float128-cmove.c: New test.
* gcc.target/powerpc/float128-minmax-3.c: New test.
Diff:
---
gcc/config/rs6000/rs6000.c | 8 +-
gcc/config/rs6000/rs6000.md | 190 +++++++--------------
gcc/testsuite/gcc.target/powerpc/float128-cmove.c | 93 ----------
.../gcc.target/powerpc/float128-minmax-3.c | 15 --
4 files changed, 66 insertions(+), 240 deletions(-)
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index fecdcf6e01e..8d00f99e9fd 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -15706,8 +15706,8 @@ rs6000_emit_vector_cond_expr (rtx dest, rtx op_true, rtx op_false,
return 1;
}
-/* Possibly emit the xsmaxc{dp,qp} and xsminc{dp,qp} instructions to emit a
- maximum or minimum with "C" semantics.
+/* Possibly emit the xsmaxcdp and xsmincdp instructions to emit a maximum or
+ minimum with "C" semantics.
Unless you use -ffast-math, you can't use these instructions to replace
conditions that implicitly reverse the condition because the comparison
@@ -15843,10 +15843,6 @@ have_compare_and_set_mask (machine_mode mode)
case E_DFmode:
return TARGET_P9_MINMAX;
- case E_KFmode:
- case E_TFmode:
- return (TARGET_POWER10 && TARGET_FLOAT128_HW && FLOAT128_IEEE_P (mode));
-
default:
break;
}
diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md
index 33f3e7c2159..17b2fdc1cdd 100644
--- a/gcc/config/rs6000/rs6000.md
+++ b/gcc/config/rs6000/rs6000.md
@@ -575,23 +575,6 @@
; And again, for when we need two FP modes in a pattern.
(define_mode_iterator SFDF2 [SF DF])
-; Floating scalars that supports the set compare mask instruction.
-(define_mode_iterator FPMASK [SF
- DF
- (KF "(TARGET_POWER10 && TARGET_FLOAT128_HW
- && FLOAT128_IEEE_P (KFmode))")
- (TF "(TARGET_POWER10 && TARGET_FLOAT128_HW
- && FLOAT128_IEEE_P (TFmode))")])
-
-; And again, for patterns that need two (potentially) different floating point
-; scalars that support the set compare mask instruction.
-(define_mode_iterator FPMASK2 [SF
- DF
- (KF "(TARGET_POWER10 && TARGET_FLOAT128_HW
- && FLOAT128_IEEE_P (KFmode))")
- (TF "(TARGET_POWER10 && TARGET_FLOAT128_HW
- && FLOAT128_IEEE_P (TFmode))")])
-
; A generic s/d attribute, for sp/dp for example.
(define_mode_attr sd [(SF "s") (DF "d")
(V4SF "s") (V2DF "d")])
@@ -625,13 +608,8 @@
; SF/DF constraint for arithmetic on VSX registers using instructions added in
; ISA 2.06 (power7). This includes instructions that normally target DF mode,
; but are used on SFmode, since internally SFmode values are kept in the DFmode
-; format. Also include IEEE 128-bit instructions which are restricted to the
-; Altivec registers.
-(define_mode_attr Fv [(SF "wa")
- (DF "wa")
- (DI "wa")
- (KF "v")
- (TF "v")])
+; format.
+(define_mode_attr Fv [(SF "wa") (DF "wa") (DI "wa")])
; Which isa is needed for those float instructions?
(define_mode_attr Fisa [(SF "p8v") (DF "*") (DI "*")])
@@ -5338,10 +5316,10 @@
;; Floating point conditional move
(define_expand "mov<mode>cc"
- [(set (match_operand:FPMASK 0 "gpc_reg_operand")
- (if_then_else:FPMASK (match_operand 1 "comparison_operator")
- (match_operand:FPMASK 2 "gpc_reg_operand")
- (match_operand:FPMASK 3 "gpc_reg_operand")))]
+ [(set (match_operand:SFDF 0 "gpc_reg_operand")
+ (if_then_else:SFDF (match_operand 1 "comparison_operator")
+ (match_operand:SFDF 2 "gpc_reg_operand")
+ (match_operand:SFDF 3 "gpc_reg_operand")))]
"TARGET_HARD_FLOAT && TARGET_PPC_GFXOPT"
{
if (rs6000_emit_cmove (operands[0], operands[1], operands[2], operands[3]))
@@ -5361,132 +5339,92 @@
"fsel %0,%1,%2,%3"
[(set_attr "type" "fp")])
-(define_insn_and_split "*mov<FPMASK:mode><FPMASK2:mode>cc_fpmask"
- [(set (match_operand:FPMASK 0 "vsx_register_operand" "=<FPMASK:Fv>")
- (if_then_else:FPMASK
+(define_insn_and_split "*mov<SFDF:mode><SFDF2:mode>cc_p9"
+ [(set (match_operand:SFDF 0 "vsx_register_operand" "=&<SFDF:Fv>,<SFDF:Fv>")
+ (if_then_else:SFDF
(match_operator:CCFP 1 "fpmask_comparison_operator"
- [(match_operand:FPMASK2 2 "vsx_register_operand" "<FPMASK2:Fv>")
- (match_operand:FPMASK2 3 "vsx_register_operand" "<FPMASK2:Fv>")])
- (match_operand:FPMASK 4 "vsx_register_operand" "<FPMASK:Fv>")
- (match_operand:FPMASK 5 "vsx_register_operand" "<FPMASK:Fv>")))
- (clobber (match_scratch:V2DI 6 "=&<FPMASK2:Fv>"))]
+ [(match_operand:SFDF2 2 "vsx_register_operand" "<SFDF2:Fv>,<SFDF2:Fv>")
+ (match_operand:SFDF2 3 "vsx_register_operand" "<SFDF2:Fv>,<SFDF2:Fv>")])
+ (match_operand:SFDF 4 "vsx_register_operand" "<SFDF:Fv>,<SFDF:Fv>")
+ (match_operand:SFDF 5 "vsx_register_operand" "<SFDF:Fv>,<SFDF:Fv>")))
+ (clobber (match_scratch:V2DI 6 "=0,&wa"))]
"TARGET_P9_MINMAX"
"#"
"&& 1"
- [(pc)]
+ [(set (match_dup 6)
+ (if_then_else:V2DI (match_dup 1)
+ (match_dup 7)
+ (match_dup 8)))
+ (set (match_dup 0)
+ (if_then_else:SFDF (ne (match_dup 6)
+ (match_dup 8))
+ (match_dup 4)
+ (match_dup 5)))]
{
- rtx dest = operands[0];
- rtx cmp = operands[1];
- rtx cmp_op1 = operands[2];
- rtx cmp_op2 = operands[3];
- rtx move_t = operands[4];
- rtx move_f = operands[5];
- rtx mask_reg = operands[6];
- rtx mask_m1 = CONSTM1_RTX (V2DImode);
- rtx mask_0 = CONST0_RTX (V2DImode);
- machine_mode move_mode = <FPMASK:MODE>mode;
- machine_mode compare_mode = <FPMASK2:MODE>mode;
-
- if (GET_CODE (mask_reg) == SCRATCH)
- mask_reg = gen_reg_rtx (V2DImode);
+ if (GET_CODE (operands[6]) == SCRATCH)
+ operands[6] = gen_reg_rtx (V2DImode);
- /* Emit the compare and set mask instruction. */
- emit_insn (gen_fpmask<FPMASK2:mode> (mask_reg, cmp, cmp_op1, cmp_op2,
- mask_m1, mask_0));
-
- /* If we have a 64-bit comparison, but an 128-bit move, we need to extend the
- mask. Because we are using the splat builtin to extend the V2DImode, we
- need to use element 1 on little endian systems. */
- if (!FLOAT128_IEEE_P (compare_mode) && FLOAT128_IEEE_P (move_mode))
- {
- rtx element = WORDS_BIG_ENDIAN ? const0_rtx : const1_rtx;
- emit_insn (gen_vsx_xxspltd_v2di (mask_reg, mask_reg, element));
- }
-
- /* Now emit the XXSEL insn. */
- emit_insn (gen_xxsel<FPMASK:mode> (dest, mask_reg, mask_0, move_t, move_f));
- DONE;
+ operands[7] = CONSTM1_RTX (V2DImode);
+ operands[8] = CONST0_RTX (V2DImode);
}
- ;; length is 12 in case we need to add XXPERMDI
- [(set_attr "length" "12")
+ [(set_attr "length" "8")
(set_attr "type" "vecperm")])
;; Handle inverting the fpmask comparisons.
-(define_insn_and_split "*mov<FPMASK:mode><FPMASK2:mode>cc_invert_fpmask"
- [(set (match_operand:FPMASK 0 "vsx_register_operand" "=<FPMASK:Fv>")
- (if_then_else:FPMASK
+(define_insn_and_split "*mov<SFDF:mode><SFDF2:mode>cc_invert_p9"
+ [(set (match_operand:SFDF 0 "vsx_register_operand" "=&<SFDF:Fv>,<SFDF:Fv>")
+ (if_then_else:SFDF
(match_operator:CCFP 1 "invert_fpmask_comparison_operator"
- [(match_operand:FPMASK2 2 "vsx_register_operand" "<FPMASK2:Fv>")
- (match_operand:FPMASK2 3 "vsx_register_operand" "<FPMASK2:Fv>")])
- (match_operand:FPMASK 4 "vsx_register_operand" "<FPMASK:Fv>")
- (match_operand:FPMASK 5 "vsx_register_operand" "<FPMASK:Fv>")))
- (clobber (match_scratch:V2DI 6 "=&<FPMASK2:Fv>"))]
+ [(match_operand:SFDF2 2 "vsx_register_operand" "<SFDF2:Fv>,<SFDF2:Fv>")
+ (match_operand:SFDF2 3 "vsx_register_operand" "<SFDF2:Fv>,<SFDF2:Fv>")])
+ (match_operand:SFDF 4 "vsx_register_operand" "<SFDF:Fv>,<SFDF:Fv>")
+ (match_operand:SFDF 5 "vsx_register_operand" "<SFDF:Fv>,<SFDF:Fv>")))
+ (clobber (match_scratch:V2DI 6 "=0,&wa"))]
"TARGET_P9_MINMAX"
"#"
"&& 1"
- [(pc)]
+ [(set (match_dup 6)
+ (if_then_else:V2DI (match_dup 9)
+ (match_dup 7)
+ (match_dup 8)))
+ (set (match_dup 0)
+ (if_then_else:SFDF (ne (match_dup 6)
+ (match_dup 8))
+ (match_dup 5)
+ (match_dup 4)))]
{
- rtx dest = operands[0];
- rtx old_cmp = operands[1];
- rtx cmp_op1 = operands[2];
- rtx cmp_op2 = operands[3];
- enum rtx_code cond = reverse_condition_maybe_unordered (GET_CODE (old_cmp));
- rtx cmp_rev = gen_rtx_fmt_ee (cond, CCFPmode, cmp_op1, cmp_op2);
- rtx move_f = operands[4];
- rtx move_t = operands[5];
- rtx mask_reg = operands[6];
- rtx mask_m1 = CONSTM1_RTX (V2DImode);
- rtx mask_0 = CONST0_RTX (V2DImode);
- machine_mode move_mode = <FPMASK:MODE>mode;
- machine_mode compare_mode = <FPMASK2:MODE>mode;
+ rtx op1 = operands[1];
+ enum rtx_code cond = reverse_condition_maybe_unordered (GET_CODE (op1));
- if (GET_CODE (mask_reg) == SCRATCH)
- mask_reg = gen_reg_rtx (V2DImode);
+ if (GET_CODE (operands[6]) == SCRATCH)
+ operands[6] = gen_reg_rtx (V2DImode);
- /* Emit the compare and set mask instruction. */
- emit_insn (gen_fpmask<FPMASK2:mode> (mask_reg, cmp_rev, cmp_op1, cmp_op2,
- mask_m1, mask_0));
+ operands[7] = CONSTM1_RTX (V2DImode);
+ operands[8] = CONST0_RTX (V2DImode);
- /* If we have a 64-bit comparison, but an 128-bit move, we need to extend the
- mask. Because we are using the splat builtin to extend the V2DImode, we
- need to use element 1 on little endian systems. */
- if (!FLOAT128_IEEE_P (compare_mode) && FLOAT128_IEEE_P (move_mode))
- {
- rtx element = WORDS_BIG_ENDIAN ? const0_rtx : const1_rtx;
- emit_insn (gen_vsx_xxspltd_v2di (mask_reg, mask_reg, element));
- }
-
- /* Now emit the XXSEL insn. */
- emit_insn (gen_xxsel<FPMASK:mode> (dest, mask_reg, mask_0, move_t, move_f));
- DONE;
+ operands[9] = gen_rtx_fmt_ee (cond, CCFPmode, operands[2], operands[3]);
}
- ;; length is 12 in case we need to add XXPERMDI
- [(set_attr "length" "12")
+ [(set_attr "length" "8")
(set_attr "type" "vecperm")])
-(define_insn "fpmask<mode>"
- [(set (match_operand:V2DI 0 "vsx_register_operand" "=<Fv>")
+(define_insn "*fpmask<mode>"
+ [(set (match_operand:V2DI 0 "vsx_register_operand" "=wa")
(if_then_else:V2DI
(match_operator:CCFP 1 "fpmask_comparison_operator"
- [(match_operand:FPMASK 2 "vsx_register_operand" "<Fv>")
- (match_operand:FPMASK 3 "vsx_register_operand" "<Fv>")])
+ [(match_operand:SFDF 2 "vsx_register_operand" "<Fv>")
+ (match_operand:SFDF 3 "vsx_register_operand" "<Fv>")])
(match_operand:V2DI 4 "all_ones_constant" "")
(match_operand:V2DI 5 "zero_constant" "")))]
"TARGET_P9_MINMAX"
-{
- return (FLOAT128_IEEE_P (<MODE>mode)
- ? "xscmp%V1qp %0,%2,%3"
- : "xscmp%V1dp %x0,%x2,%x3");
-}
+ "xscmp%V1dp %x0,%x2,%x3"
[(set_attr "type" "fpcompare")])
-(define_insn "xxsel<mode>"
- [(set (match_operand:FPMASK 0 "vsx_register_operand" "=wa")
- (if_then_else:FPMASK
- (ne (match_operand:V2DI 1 "vsx_register_operand" "wa")
- (match_operand:V2DI 2 "zero_constant" ""))
- (match_operand:FPMASK 3 "vsx_register_operand" "wa")
- (match_operand:FPMASK 4 "vsx_register_operand" "wa")))]
+(define_insn "*xxsel<mode>"
+ [(set (match_operand:SFDF 0 "vsx_register_operand" "=<Fv>")
+ (if_then_else:SFDF (ne (match_operand:V2DI 1 "vsx_register_operand" "wa")
+ (match_operand:V2DI 2 "zero_constant" ""))
+ (match_operand:SFDF 3 "vsx_register_operand" "<Fv>")
+ (match_operand:SFDF 4 "vsx_register_operand" "<Fv>")))]
"TARGET_P9_MINMAX"
"xxsel %x0,%x4,%x3,%x1"
[(set_attr "type" "vecmove")])
diff --git a/gcc/testsuite/gcc.target/powerpc/float128-cmove.c b/gcc/testsuite/gcc.target/powerpc/float128-cmove.c
deleted file mode 100644
index 639d5a77087..00000000000
--- a/gcc/testsuite/gcc.target/powerpc/float128-cmove.c
+++ /dev/null
@@ -1,93 +0,0 @@
-/* { dg-do compile } */
-/* { dg-require-effective-target ppc_float128_hw } */
-/* { dg-require-effective-target power10_ok } */
-/* { dg-options "-mdejagnu-cpu=power10 -O2" } */
-/* { dg-final { scan-assembler {\mxscmpeq[dq]p\M} } } */
-/* { dg-final { scan-assembler {\mxxpermdi\M} } } */
-/* { dg-final { scan-assembler {\mxxsel\M} } } */
-/* { dg-final { scan-assembler-not {\mxscmpu[dq]p\M} } } */
-/* { dg-final { scan-assembler-not {\mfcmp[uo]\M} } } */
-/* { dg-final { scan-assembler-not {\mfsel\M} } } */
-
-/* This series of tests tests whether you can do a conditional move where the
- test is one floating point type, and the result is another floating point
- type.
-
- If the comparison type is SF/DFmode, and the move type is IEEE 128-bit
- floating point, we have to duplicate the mask in the lower 64-bits with
- XXPERMDI because XSCMPEQDP clears the bottom 64-bits of the mask register.
-
- Going the other way (IEEE 128-bit comparsion, 64-bit move) is fine as the
- mask word will be 128-bits. */
-
-float
-eq_f_d (float a, float b, double x, double y)
-{
- return (x == y) ? a : b;
-}
-
-double
-eq_d_f (double a, double b, float x, float y)
-{
- return (x == y) ? a : b;
-}
-
-float
-eq_f_f128 (float a, float b, __float128 x, __float128 y)
-{
- return (x == y) ? a : b;
-}
-
-double
-eq_d_f128 (double a, double b, __float128 x, __float128 y)
-{
- return (x == y) ? a : b;
-}
-
-__float128
-eq_f128_f (__float128 a, __float128 b, float x, float y)
-{
- return (x == y) ? a : b;
-}
-
-__float128
-eq_f128_d (__float128 a, __float128 b, double x, double y)
-{
- return (x != y) ? a : b;
-}
-
-float
-ne_f_d (float a, float b, double x, double y)
-{
- return (x != y) ? a : b;
-}
-
-double
-ne_d_f (double a, double b, float x, float y)
-{
- return (x != y) ? a : b;
-}
-
-float
-ne_f_f128 (float a, float b, __float128 x, __float128 y)
-{
- return (x != y) ? a : b;
-}
-
-double
-ne_d_f128 (double a, double b, __float128 x, __float128 y)
-{
- return (x != y) ? a : b;
-}
-
-__float128
-ne_f128_f (__float128 a, __float128 b, float x, float y)
-{
- return (x != y) ? a : b;
-}
-
-__float128
-ne_f128_d (__float128 a, __float128 b, double x, double y)
-{
- return (x != y) ? a : b;
-}
diff --git a/gcc/testsuite/gcc.target/powerpc/float128-minmax-3.c b/gcc/testsuite/gcc.target/powerpc/float128-minmax-3.c
deleted file mode 100644
index 6f7627c0f2a..00000000000
--- a/gcc/testsuite/gcc.target/powerpc/float128-minmax-3.c
+++ /dev/null
@@ -1,15 +0,0 @@
-/* { dg-require-effective-target ppc_float128_hw } */
-/* { dg-require-effective-target power10_ok } */
-/* { dg-options "-mdejagnu-cpu=power10 -O2" } */
-
-#ifndef TYPE
-#define TYPE _Float128
-#endif
-
-/* Test that the fminf128/fmaxf128 functions generate if/then/else and not a
- call. */
-TYPE f128_min (TYPE a, TYPE b) { return (a < b) ? a : b; }
-TYPE f128_max (TYPE a, TYPE b) { return (b > a) ? b : a; }
-
-/* { dg-final { scan-assembler {\mxsmaxcqp\M} } } */
-/* { dg-final { scan-assembler {\mxsmincqp\M} } } */
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2021-04-19 15:31 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-04-19 15:31 [gcc(refs/users/meissner/heads/work048)] Revert patch Michael Meissner
-- strict thread matches above, loose matches on Subject: below --
2021-04-14 22:33 Michael Meissner
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).