https://gcc.gnu.org/g:34978983845fd87f29a83edd99cf16cd5f558185

commit 34978983845fd87f29a83edd99cf16cd5f558185
Author: Michael Meissner <meiss...@linux.ibm.com>
Date:   Tue Sep 9 19:18:55 2025 -0400

    Revert changes

Diff:
---
 gcc/ChangeLog.float                 | 47 ++-----------------------------------
 gcc/config/rs6000/altivec.md        | 12 +++++-----
 gcc/config/rs6000/rs6000-builtin.cc |  2 --
 gcc/config/rs6000/rs6000-modes.def  |  2 +-
 gcc/config/rs6000/rs6000.cc         | 30 +++--------------------
 gcc/config/rs6000/rs6000.h          |  7 +-----
 gcc/config/rs6000/rs6000.md         | 39 +++++++-----------------------
 gcc/config/rs6000/vector.md         | 10 ++++----
 gcc/config/rs6000/vsx.md            | 28 +++++++++++-----------
 9 files changed, 41 insertions(+), 136 deletions(-)

diff --git a/gcc/ChangeLog.float b/gcc/ChangeLog.float
index e00ce89f6cda..9da1dc3e76e2 100644
--- a/gcc/ChangeLog.float
+++ b/gcc/ChangeLog.float
@@ -1,48 +1,5 @@
-==================== Branch work221-float, patch #306 ====================
-
-Remove bfloat16 for now.
-
-2025-09-09  Michael Meissner  <meiss...@linux.ibm.com>
-
-gcc/
-
-       * config/rs6000/altivec.md (VM): Remove bfloat16 support.
-       (VM2): Likewise.
-       (VI_char): Likewise.
-       (VI_scalar): Likewise.
-       (VI_unit): Likewise.
-       (VU_char): Likewise.
-       * config/rs6000/rs6000-builtin.cc (rs6000_init_builtins): Likewise.
-       * config/rs6000/rs6000-modes.def (BFmode): Likewise.
-       * config/rs6000/rs6000.cc (rs6000_debug_reg_global): Likewise.
-       (rs6000_setup_reg_addr_masks): Likewise.
-       (rs6000_init_hard_regno_mode_ok): Likewise.
-       * config/rs6000/rs6000.h (FP16_SCALAR_P): Likewise.
-       * config/rs6000/rs6000.md (FMOVE128_GPR): Likewise.
-       (RELOAD): Likewise.
-       (extendbf<mode>2): Likewise.
-       (trunc<mode>bf2): Likewise.
-       * config/rs6000/vector.md (VEC_L): Likewise.
-       (VEC_M): Likewise.
-       (VEC_E): Likewise.
-       (VEC_base): Likewise.
-       (VEC_base_l): Likewise.
-       (V8HI_V8HF): Likewise.
-       (VSX_L): Likewise.
-       (VSX_M): Likewise.
-       (VSX_XXBR): Likewise.
-       (VSm): Likewise.
-       (VSr): Likewise.
-       (VSisa): Likewise.
-       (??r): Likewise.
-       (nW): Likewise.
-       (VSv): Likewise.
-       (VM3): Likewise.
-       (VM3_char): Likewise.
-       (vsx_extract_<mode>_store_p9): Likewise.
-       (vsx_extract_<mode>_p8): Likewise.
-
-==================== Branch work221-float, patch #305 ====================
+==================== Branch work221-float, patch #306 was reverted 
====================
+==================== Branch work221-float, patch #305 was reverted 
====================
 
 Attempt to fix bfloat16 problems.
 
diff --git a/gcc/config/rs6000/altivec.md b/gcc/config/rs6000/altivec.md
index 4c384642a624..fb960f7ba966 100644
--- a/gcc/config/rs6000/altivec.md
+++ b/gcc/config/rs6000/altivec.md
@@ -189,9 +189,9 @@
 (define_mode_iterator V [V4SI V8HI V16QI V4SF])
 ;; Vec modes for move/logical/permute ops, include vector types for move not
 ;; otherwise handled by altivec (v2df, v2di, ti)
-;; V8BF
 (define_mode_iterator VM [V4SI
                          V8HI
+                         V8BF
                          V8HF
                          V16QI
                          V4SF
@@ -203,9 +203,9 @@
                          (TF "FLOAT128_VECTOR_P (TFmode)")])
 
 ;; Like VM, except don't do TImode
-;; V8BF
 (define_mode_iterator VM2 [V4SI
                           V8HI
+                          V8BF
                           V8HF
                           V16QI
                           V4SF
@@ -226,21 +226,21 @@
                               V1TI
                               TI])
 
-;; (V8BF "h")
 (define_mode_attr VI_char [(V2DI "d")
                           (V4SI "w")
                           (V8HI "h")
+                          (V8BF "h")
                           (V8HF "h")
                           (V16QI "b")])
-;; (V8BF "BF")
 (define_mode_attr VI_scalar [(V2DI "DI")
                             (V4SI "SI")
                             (V8HI "HI")
+                            (V8BF "BF")
                             (V8HF "HF")
                             (V16QI "QI")])
-;; (V8BF "VECTOR_UNIT_ALTIVEC_P (V8BFmode)")
 (define_mode_attr VI_unit [(V16QI "VECTOR_UNIT_ALTIVEC_P (V16QImode)")
                           (V8HI "VECTOR_UNIT_ALTIVEC_P (V8HImode)")
+                          (V8BF "VECTOR_UNIT_ALTIVEC_P (V8BFmode)")
                           (V8HF "VECTOR_UNIT_ALTIVEC_P (V8HFmode)")
                           (V4SI "VECTOR_UNIT_ALTIVEC_P (V4SImode)")
                           (V2DI "VECTOR_UNIT_P8_VECTOR_P (V2DImode)")])
@@ -253,10 +253,10 @@
 (define_mode_attr VP_small_lc [(V2DI "v4si")
                               (V4SI "v8hi")
                               (V8HI "v16qi")])
-;; (V8BF "b")
 (define_mode_attr VU_char [(V2DI "w")
                           (V4SI "h")
                           (V8HI "b")
+                          (V8BF "b")
                           (V8HF "b")])
 
 ;; Vector negate
diff --git a/gcc/config/rs6000/rs6000-builtin.cc 
b/gcc/config/rs6000/rs6000-builtin.cc
index 2fede96d5b66..46c781b82568 100644
--- a/gcc/config/rs6000/rs6000-builtin.cc
+++ b/gcc/config/rs6000/rs6000-builtin.cc
@@ -761,7 +761,6 @@ rs6000_init_builtins (void)
     ieee128_float_type_node = NULL_TREE;
 
   /* __bfloat16 support.  */
-#if 0
   if (TARGET_BFLOAT16)
     {
       bfloat16_type_node = make_node (REAL_TYPE);
@@ -772,7 +771,6 @@ rs6000_init_builtins (void)
       lang_hooks.types.register_builtin_type (bfloat16_type_node,
                                              "__bfloat16");
     }
-#endif
 
   /* Vector pair and vector quad support.  */
   vector_pair_type_node = make_node (OPAQUE_TYPE);
diff --git a/gcc/config/rs6000/rs6000-modes.def 
b/gcc/config/rs6000/rs6000-modes.def
index 218c4e83954e..28eb389787ff 100644
--- a/gcc/config/rs6000/rs6000-modes.def
+++ b/gcc/config/rs6000/rs6000-modes.def
@@ -49,7 +49,7 @@ FLOAT_MODE (IF, 16, ibm_extended_format);
 FLOAT_MODE (HF, 2, ieee_half_format);
 
 /* Arm (google brain)  16-bit floating point.  */
-/* FLOAT_MODE (BF, 2, arm_bfloat_half_format); */
+FLOAT_MODE (BF, 2, arm_bfloat_half_format);
 
 /* Add any extra modes needed to represent the condition code.
 
diff --git a/gcc/config/rs6000/rs6000.cc b/gcc/config/rs6000/rs6000.cc
index 39b1e71c98a1..a350eeca6dbe 100644
--- a/gcc/config/rs6000/rs6000.cc
+++ b/gcc/config/rs6000/rs6000.cc
@@ -2258,7 +2258,7 @@ rs6000_debug_reg_global (void)
     DImode,
     TImode,
     PTImode,
-    // BFmode,
+    BFmode,
     HFmode,
     SFmode,
     DFmode,
@@ -2280,7 +2280,7 @@ rs6000_debug_reg_global (void)
     V8SImode,
     V4DImode,
     V2TImode,
-    // V8BFmode,
+    V8BFmode,
     V8HFmode,
     V4SFmode,
     V2DFmode,
@@ -2697,7 +2697,7 @@ rs6000_setup_reg_addr_masks (void)
                  && (m != E_DFmode || !TARGET_VSX)
                  && (m != E_SFmode || !TARGET_P8_VECTOR)
                  && m != E_HFmode
-                 // && m != E_BFmode
+                 && m != E_BFmode
                  && !small_int_vsx_p)
                {
                  addr_mask |= RELOAD_REG_PRE_INCDEC;
@@ -2953,14 +2953,12 @@ rs6000_init_hard_regno_mode_ok (bool global_init_p)
       rs6000_vector_align[V8HFmode] = align64;
     }
 
-#if 0
   if (TARGET_BFLOAT16)
     {
       rs6000_vector_unit[V8BFmode] = VECTOR_VSX;
       rs6000_vector_mem[V8BFmode] = VECTOR_VSX;
       rs6000_vector_align[V8BFmode] = align64;
     }
-#endif
 
   /* DFmode, see if we want to use the VSX unit.  Memory is handled
      differently, so don't set rs6000_vector_mem.  */
@@ -2991,13 +2989,11 @@ rs6000_init_hard_regno_mode_ok (bool global_init_p)
       rs6000_vector_align[HFmode] = 16;
     }
 
-#if 0
   if (TARGET_BFLOAT16)
     {
       rs6000_vector_mem[BFmode] = VECTOR_VSX;
       rs6000_vector_align[BFmode] = 16;
     }
-#endif
 
   /* Add support for vector pairs and vector quad registers.  */
   if (TARGET_MMA)
@@ -3058,10 +3054,8 @@ rs6000_init_hard_regno_mode_ok (bool global_init_p)
          reg_addr[V16QImode].reload_load  = CODE_FOR_reload_v16qi_di_load;
          reg_addr[V8HImode].reload_store  = CODE_FOR_reload_v8hi_di_store;
          reg_addr[V8HImode].reload_load   = CODE_FOR_reload_v8hi_di_load;
-#if 0
          reg_addr[V8BFmode].reload_store  = CODE_FOR_reload_v8bf_di_store;
          reg_addr[V8BFmode].reload_load   = CODE_FOR_reload_v8bf_di_load;
-#endif
          reg_addr[V8HFmode].reload_store  = CODE_FOR_reload_v8hf_di_store;
          reg_addr[V8HFmode].reload_load   = CODE_FOR_reload_v8hf_di_load;
          reg_addr[V4SImode].reload_store  = CODE_FOR_reload_v4si_di_store;
@@ -3099,13 +3093,11 @@ rs6000_init_hard_regno_mode_ok (bool global_init_p)
              reg_addr[HFmode].reload_load  = CODE_FOR_reload_hf_di_load;
            }
 
-#if 0
          if (TARGET_BFLOAT16)
            {
              reg_addr[BFmode].reload_store = CODE_FOR_reload_bf_di_store;
              reg_addr[BFmode].reload_load  = CODE_FOR_reload_bf_di_load;
            }
-#endif
 
          /* Only provide a reload handler for SDmode if lfiwzx/stfiwx are
             available.  */
@@ -3129,10 +3121,8 @@ rs6000_init_hard_regno_mode_ok (bool global_init_p)
              reg_addr[V2DImode].reload_gpr_vsx  = 
CODE_FOR_reload_gpr_from_vsxv2di;
              reg_addr[V4SFmode].reload_gpr_vsx  = 
CODE_FOR_reload_gpr_from_vsxv4sf;
              reg_addr[V4SImode].reload_gpr_vsx  = 
CODE_FOR_reload_gpr_from_vsxv4si;
-#if 0
              reg_addr[V8BFmode].reload_gpr_vsx  = 
CODE_FOR_reload_gpr_from_vsxv8bf;
              reg_addr[V8HFmode].reload_gpr_vsx  = 
CODE_FOR_reload_gpr_from_vsxv8hf;
-#endif
              reg_addr[V8HImode].reload_gpr_vsx  = 
CODE_FOR_reload_gpr_from_vsxv8hi;
              reg_addr[V16QImode].reload_gpr_vsx = 
CODE_FOR_reload_gpr_from_vsxv16qi;
              reg_addr[SFmode].reload_gpr_vsx    = 
CODE_FOR_reload_gpr_from_vsxsf;
@@ -3143,10 +3133,8 @@ rs6000_init_hard_regno_mode_ok (bool global_init_p)
              reg_addr[V2DImode].reload_vsx_gpr  = 
CODE_FOR_reload_vsx_from_gprv2di;
              reg_addr[V4SFmode].reload_vsx_gpr  = 
CODE_FOR_reload_vsx_from_gprv4sf;
              reg_addr[V4SImode].reload_vsx_gpr  = 
CODE_FOR_reload_vsx_from_gprv4si;
-#if 0
              reg_addr[V8BFmode].reload_vsx_gpr  = 
CODE_FOR_reload_vsx_from_gprv8bf;
              reg_addr[V8HFmode].reload_vsx_gpr  = 
CODE_FOR_reload_vsx_from_gprv8hf;
-#endif
              reg_addr[V8HImode].reload_vsx_gpr  = 
CODE_FOR_reload_vsx_from_gprv8hi;
              reg_addr[V16QImode].reload_vsx_gpr = 
CODE_FOR_reload_vsx_from_gprv16qi;
              reg_addr[SFmode].reload_vsx_gpr    = 
CODE_FOR_reload_vsx_from_gprsf;
@@ -3184,10 +3172,8 @@ rs6000_init_hard_regno_mode_ok (bool global_init_p)
          reg_addr[V2DImode].reload_load   = CODE_FOR_reload_v2di_si_load;
          reg_addr[V1TImode].reload_store  = CODE_FOR_reload_v1ti_si_store;
          reg_addr[V1TImode].reload_load   = CODE_FOR_reload_v1ti_si_load;
-#if 0
          reg_addr[V8BFmode].reload_store  = CODE_FOR_reload_v8bf_si_store;
          reg_addr[V8BFmode].reload_load   = CODE_FOR_reload_v8bf_si_load;
-#endif
          reg_addr[V8HFmode].reload_store  = CODE_FOR_reload_v8hf_si_store;
          reg_addr[V8HFmode].reload_load   = CODE_FOR_reload_v8hf_si_load;
          reg_addr[V4SFmode].reload_store  = CODE_FOR_reload_v4sf_si_store;
@@ -3219,13 +3205,11 @@ rs6000_init_hard_regno_mode_ok (bool global_init_p)
              reg_addr[HFmode].reload_load  = CODE_FOR_reload_hf_si_load;
            }
 
-#if 0
          if (TARGET_BFLOAT16)
            {
              reg_addr[BFmode].reload_store = CODE_FOR_reload_bf_si_store;
              reg_addr[BFmode].reload_load  = CODE_FOR_reload_bf_si_load;
            }
-#endif
 
          /* Only provide a reload handler for SDmode if lfiwzx/stfiwx are
             available.  */
@@ -3968,14 +3952,6 @@ rs6000_option_override_internal (bool global_init_p)
        }
     }
 
-  /* -mbfloat16 needs -mcpu=power10.  */
-  if (TARGET_BFLOAT16 && !TARGET_POWER10)
-    {
-      rs6000_isa_flags &= ~OPTION_MASK_BFLOAT16;
-      if ((rs6000_isa_flags_explicit & OPTION_MASK_BFLOAT16) != 0)
-       warning (0, "%qs needs at least %qs", "-mbfloat16", "-mcpu=power10");
-    }
-
   /* If hard-float/altivec/vsx were explicitly turned off then don't allow
      the -mcpu setting to enable options that conflict. */
   if ((!TARGET_HARD_FLOAT || !TARGET_ALTIVEC || !TARGET_VSX)
diff --git a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h
index 72bc3dd57928..98c3ae93fa08 100644
--- a/gcc/config/rs6000/rs6000.h
+++ b/gcc/config/rs6000/rs6000.h
@@ -572,14 +572,9 @@ extern int rs6000_vector_align[];
    convert vector __bfloat16 formats.  */
 #define TARGET_IEEE16          TARGET_P9_VECTOR
 
-#if 0
 #define FP16_SCALAR_P(MODE)                                            \
   (((MODE) == HFmode && TARGET_IEEE16)                                 \
-   || ((MODE) == BFmode && TARGET_BFLOAT16))
-
-#else
-#define FP16_SCALAR_P(MODE) ((MODE) == HFmode && TARGET_IEEE16)
-#endif
+   || ((MODE) == BFmode && TARGET_BFLOAT16 && TARGET_POWER10))
 
 /* Whether the various reciprocal divide/square root estimate instructions
    exist, and whether we should automatically generate code for the instruction
diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md
index c5c55e27191d..c6b6d7e9ad54 100644
--- a/gcc/config/rs6000/rs6000.md
+++ b/gcc/config/rs6000/rs6000.md
@@ -549,10 +549,10 @@
                                    (TD "TARGET_HARD_FLOAT")])
 
 ; Iterators for 128 bit types for direct move
-;; V8BF
 (define_mode_iterator FMOVE128_GPR [TI
                                    V16QI
                                    V8HI
+                                   V8BF
                                    V8HF
                                    V4SI
                                    V4SF
@@ -839,9 +839,8 @@
 
 ;; Reload iterator for creating the function to allocate a base register to
 ;; supplement addressing modes.
-;; V8BF BF
-(define_mode_iterator RELOAD [V16QI V8HI V8HF V4SI V2DI V4SF V2DF V1TI
-                             SF SD SI DF DD DI TI PTI KF IF TF HF
+(define_mode_iterator RELOAD [V16QI V8HI V8BF V8HF V4SI V2DI V4SF V2DF V1TI
+                             SF SD SI DF DD DI TI PTI KF IF TF BF HF
                              OO XO])
 
 ;; Iterate over smin, smax
@@ -861,8 +860,7 @@
                                     (DI "TARGET_POWERPC64")])
 
 ;; Mode iterator for supported 16-bit floating point types.
-;; (BF "TARGET_BFLOAT16")
-(define_mode_iterator FP16 [(HF "TARGET_IEEE16")])
+(define_mode_iterator FP16 [HF BF])
 
 ;; Mode iterator for floating point modes other than SF/DFmode that we
 ;; convert to/from _Float16 (HFmode) via DFmode.
@@ -5879,26 +5877,6 @@
   "xscvdphp %x0,%1"
   [(set_attr "type" "fpsimple")])
 
-;; (define_insn "extendbf<mode>2"
-;;   [(set (match_operand:SFDF 0 "vsx_register_operand" "=wa")
-;;     (float_extend:SFDF
-;;      (match_operand:BF 1 "vsx_register_operand" "wa")))]
-;;   "TARGET_BFLOAT16"
-;; {
-;;   return "foo-xscvhpdp %x0,%x1";
-;; }
-;;   [(set_attr "type" "fpsimple")])
-;; 
-;; (define_insn "trunc<mode>bf2"
-;;   [(set (match_operand:BF 0 "vsx_register_operand" "=wa")
-;;     (float_truncate:BF
-;;      (match_operand:SFDF 1 "vsx_register_operand" "wa")))]
-;;   "TARGET_BFLOAT16"
-;; {
-;;   return "foo-xscvdphp %x0,%1";
-;; }
-;;   [(set_attr "type" "fpsimple")])
-
 ;; Use DFmode to convert to/from HFmode for floating point types other
 ;; than SF/DFmode.
 (define_expand "extendhf<mode>2"
@@ -8226,7 +8204,7 @@
 (define_expand "mov<mode>"
   [(set (match_operand:FP16 0 "nonimmediate_operand")
        (match_operand:FP16 1 "any_operand"))]
-  ""
+  "FP16_SCALAR_P (<MODE>mode)"
 {
   if (MEM_P (operands[0]) && !REG_P (operands[1]))
     operands[1] = force_reg (<MODE>mode, operands[1]);
@@ -8237,7 +8215,7 @@
 (define_insn "*mov<mode>_xxspltiw"
   [(set (match_operand:FP16 0 "gpc_reg_operand" "=wa,r")
        (match_operand:FP16 1 "fp16_xxspltiw_constant" "eP,eP"))]
-  "TARGET_POWER10 && TARGET_PREFIXED"
+  "FP16_SCALAR_P (<MODE>mode) && TARGET_POWER10 && TARGET_PREFIXED"
 {
   rtx op1 = operands[1];
   const REAL_VALUE_TYPE *rtype = CONST_DOUBLE_REAL_VALUE (op1);
@@ -8260,8 +8238,9 @@
        (match_operand:FP16 1 "any_operand"
                      "wa,        Z,        wa,        r,          m,
                       r,         wa,       r,         j,          j"))]
-  "(gpc_reg_operand (operands[0], <MODE>mode)
-    || gpc_reg_operand (operands[1], <MODE>mode))"
+  "FP16_SCALAR_P (<MODE>mode)
+   && (gpc_reg_operand (operands[0], <MODE>mode)
+       || gpc_reg_operand (operands[1], <MODE>mode))"
   "@
    xxlor %x0,%x1,%x1
    lxsihzx %x0,%y1
diff --git a/gcc/config/rs6000/vector.md b/gcc/config/rs6000/vector.md
index 9f9634752cf9..0a9f092c1951 100644
--- a/gcc/config/rs6000/vector.md
+++ b/gcc/config/rs6000/vector.md
@@ -50,9 +50,9 @@
 (define_mode_iterator VEC_K [V16QI V8HI V4SI V4SF])
 
 ;; Vector logical modes
-;; V8BF
 (define_mode_iterator VEC_L [V16QI
                             V8HI
+                            V8BF
                             V8HF
                             V4SI
                             V2DI
@@ -65,11 +65,11 @@
 
 ;; Vector modes for moves.  Don't do TImode or TFmode here, since their
 ;; moves are handled elsewhere.
-;; V8BF
 (define_mode_iterator VEC_M [V16QI
                             V8HI
                             V4SI
                             V2DI
+                            V8BF
                             V8HF
                             V4SF
                             V2DF
@@ -83,11 +83,11 @@
 (define_mode_iterator VEC_C [V16QI V8HI V4SI V2DI V4SF V2DF V1TI])
 
 ;; Vector init/extract modes
-;; V8BF
 (define_mode_iterator VEC_E [V16QI
                             V8HI
                             V4SI
                             V2DI
+                            V8BF
                             V8HF
                             V4SF
                             V2DF])
@@ -99,11 +99,11 @@
 (define_mode_iterator VI [V4SI V8HI V16QI])
 
 ;; Base type from vector mode
-;; (V8BF  "BF")
 (define_mode_attr VEC_base [(V16QI "QI")
                            (V8HI  "HI")
                            (V4SI  "SI")
                            (V2DI  "DI")
+                           (V8BF  "BF")
                            (V8HF  "HF")
                            (V4SF  "SF")
                            (V2DF  "DF")
@@ -111,11 +111,11 @@
                            (TI    "TI")])
 
 ;; As above, but in lower case
-;; (V8BF  "bf")
 (define_mode_attr VEC_base_l [(V16QI "qi")
                              (V8HI  "hi")
                              (V4SI  "si")
                              (V2DI  "di")
+                             (V8BF  "bf")
                              (V8HF  "hf")
                              (V4SF  "sf")
                              (V2DF  "df")
diff --git a/gcc/config/rs6000/vsx.md b/gcc/config/rs6000/vsx.md
index a8185db949b2..be65b309c63a 100644
--- a/gcc/config/rs6000/vsx.md
+++ b/gcc/config/rs6000/vsx.md
@@ -47,14 +47,14 @@
 (define_mode_iterator VSX_F [V4SF V2DF])
 
 ;; Iterator for 8 element vectors
-;; (V8BF "TARGET_BFLOAT16")
 (define_mode_iterator V8HI_V8HF [V8HI
+                                (V8BF "TARGET_BFLOAT16")
                                 (V8HF "TARGET_IEEE16")])
 
 ;; Iterator for logical types supported by VSX
-;; (V8BF       "TARGET_BFLOAT16")
 (define_mode_iterator VSX_L [V16QI
                             V8HI
+                            (V8BF      "TARGET_BFLOAT16")
                             (V8HF      "TARGET_IEEE16")
                             V4SI
                             V2DI
@@ -66,9 +66,9 @@
                             (TF        "FLOAT128_VECTOR_P (TFmode)")])
 
 ;; Iterator for memory moves.
-;; (V8BF       "TARGET_BFLOAT16<")
 (define_mode_iterator VSX_M [V16QI
                             V8HI
+                            (V8BF      "TARGET_BFLOAT16")
                             (V8HF      "TARGET_IEEE16")
                             V4SI
                             V2DI
@@ -79,8 +79,8 @@
                             (TF        "FLOAT128_VECTOR_P (TFmode)")
                             TI])
 
-;; (V8BF  "h")
 (define_mode_attr VSX_XXBR  [(V8HI  "h")
+                            (V8BF  "h")
                             (V8HF  "h")
                             (V4SI  "w")
                             (V4SF  "w")
@@ -89,9 +89,9 @@
                             (V1TI  "q")])
 
 ;; Map into the appropriate load/store name based on the type
-;; (V8BF  "vw4")
 (define_mode_attr VSm  [(V16QI "vw4")
                        (V8HI  "vw4")
+                       (V8BF  "vw4")
                        (V8HF  "vw4")
                        (V4SI  "vw4")
                        (V4SF  "vw4")
@@ -104,9 +104,9 @@
                        (TI    "vd2")])
 
 ;; Map the register class used
-;; (V8BF  "v")
 (define_mode_attr VSr  [(V16QI "v")
                         (V8HI  "v")
+                        (V8BF  "v")
                         (V8HF  "v")
                         (V4SI  "v")
                         (V4SF  "wa")
@@ -121,9 +121,9 @@
                         (TI    "wa")])
 
 ;; What value we need in the "isa" field, to make the IEEE QP float work.
-;; (V8BF  "p10")
 (define_mode_attr VSisa        [(V16QI "*")
                         (V8HI  "*")
+                        (V8BF  "p10")
                         (V8HF  "p9v")
                         (V4SI  "*")
                         (V4SF  "*")
@@ -139,9 +139,9 @@
 
 ;; A mode attribute to disparage use of GPR registers, except for scalar
 ;; integer modes.
-;; (V8BF       "??r")
 (define_mode_attr ??r  [(V16QI "??r")
                         (V8HI  "??r")
+                        (V8BF  "??r")
                         (V8HF  "??r")
                         (V4SI  "??r")
                         (V4SF  "??r")
@@ -153,9 +153,9 @@
                         (TI    "r")])
 
 ;; A mode attribute used for 128-bit constant values.
-;; (V8BF       "W")
 (define_mode_attr nW   [(V16QI "W")
                         (V8HI  "W")
+                        (V8BF  "W")
                         (V8HF  "W")
                         (V4SI  "W")
                         (V4SF  "W")
@@ -182,9 +182,9 @@
 
 ;; Map into either s or v, depending on whether this is a scalar or vector
 ;; operation
-;; (V8BF  "v")
 (define_mode_attr VSv  [(V16QI "v")
                         (V8HI  "v")
+                        (V8BF  "v")
                         (V8HF  "v")
                         (V4SI  "v")
                         (V4SF  "v")
@@ -417,9 +417,9 @@
                                   (V2DI  "8") (V2DF "8")])
 
 ;; Like VM2 in altivec.md, just do char, short, int, long, float and double
-;; V8BF
 (define_mode_iterator VM3 [V4SI
                           V8HI
+                          V8BF
                           V8HF
                           V16QI
                           V4SF
@@ -429,10 +429,10 @@
 (define_mode_attr DI_to_TI [(V2DI "V1TI")
                            (DI   "TI")])
 
-;; (V8BF "h")
 (define_mode_attr VM3_char [(V2DI "d")
                           (V4SI "w")
                           (V8HI "h")
+                          (V8BF "h")
                           (V8HF "h")
                           (V16QI "b")
                           (V2DF  "d")
@@ -4108,7 +4108,7 @@
       && ((<MODE>mode == V16QImode
           && INTVAL (operands[2]) == (BYTES_BIG_ENDIAN ? 7 : 8))
          || ((<MODE>mode == V8HImode || <MODE>mode == V8HFmode
-              /* || <MODE>mode == V8BFmode */)
+              || <MODE>mode == V8BFmode)
              && INTVAL (operands[2]) == (BYTES_BIG_ENDIAN ? 3 : 4))))
     {
       enum machine_mode dest_mode = GET_MODE (operands[0]);
@@ -4188,7 +4188,7 @@
        vec_tmp = src;
     }
   else if (<MODE>mode == V8HImode || <MODE>mode == V8HFmode
-          /* || <MODE>mode == V8BFmode */)
+          || <MODE>mode == V8BFmode)
     {
       if (value != 3)
        emit_insn (gen_altivec_vsplth_direct (vec_tmp, src, element));

Reply via email to