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).