[s390] Fix ambiguous .md attribute uses
authorRichard Sandiford <richard.sandiford@arm.com>
Sat, 6 Jul 2019 08:26:44 +0000 (08:26 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Sat, 6 Jul 2019 08:26:44 +0000 (08:26 +0000)
This patch is part of a series that fixes ambiguous attribute
uses in .md files, i.e. cases in which attributes didn't use
<ITER:ATTR> to specify an iterator, and in which <ATTR> could
have different values depending on the iterator chosen.

The vx-builtins.md part changes the choice of <mode> from the
implicit <VFCMP:mode> to an explicit <VF_HW:mode> (i.e. from the
mode of the comparison result to the mode of the operands being
compared).  That seemed like the intended behaviour given later
patterns like vec_cmpeq<mode>_cc.

The use of BFP in the s390.md LNDFR pattern looks like a typo,
since the operand to (abs ...) has to have the same mode as the result.
The only effect before this series was to create some extra variants
that would never match, making it harmless apart from very minor code
bloat.

2019-07-06  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
* config/s390/s390.md (*negabs<FP:mode>2_nocc): Use FP for
operand 1.
* config/s390/vx-builtins.md (*vec_cmp<insn_cmp><mode>_cconly):
Make the choice of <mode> explicit, giving...
(*vec_cmp<insn_cmp><VF_HW:mode>_cconly): ...this.

From-SVN: r273162

gcc/ChangeLog
gcc/config/s390/s390.md
gcc/config/s390/vx-builtins.md

index 1b318b9f7c96e20c49fbe994af8de70daf18ec7a..3694a7716f84ea26532bc25526b226fec9caadd1 100644 (file)
@@ -1,3 +1,11 @@
+2019-07-06  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * config/s390/s390.md (*negabs<FP:mode>2_nocc): Use FP for
+       operand 1.
+       * config/s390/vx-builtins.md (*vec_cmp<insn_cmp><mode>_cconly):
+       Make the choice of <mode> explicit, giving...
+       (*vec_cmp<insn_cmp><VF_HW:mode>_cconly): ...this.
+
 2019-07-06  Richard Sandiford  <richard.sandiford@arm.com>
 
        * config/i386/i386.md (*fop_<X87MODEF:mode>_3_i387)
index d06aea93128795742eaccf6a20ef34f6fc31a133..79451d7aef36bcae31cc1b1125c6c115bbc9536e 100644 (file)
 
 ; lndfr
 (define_insn "*negabs<mode>2_nocc"
-  [(set (match_operand:FP 0 "register_operand"                  "=f")
-        (neg:FP (abs:FP (match_operand:BFP 1 "register_operand" "<fT0>"))))]
+  [(set (match_operand:FP 0 "register_operand"                 "=f")
+        (neg:FP (abs:FP (match_operand:FP 1 "register_operand" "<fT0>"))))]
   "TARGET_DFP"
   "lndfr\t%0,%1"
   [(set_attr "op_type"  "RRE")
index 3020bc94d3e4447c0196b1ff746bd15df32cfa8b..c71aae032ee2e3bcda0ac048708d09f9b1b0fbf0 100644 (file)
 ;;
 
 ; vfcesbs, vfcedbs, wfcexbs, vfchsbs, vfchdbs, wfchxbs, vfchesbs, vfchedbs, wfchexbs
-(define_insn "*vec_cmp<insn_cmp><mode>_cconly"
+(define_insn "*vec_cmp<insn_cmp><VF_HW:mode>_cconly"
   [(set (reg:VFCMP CC_REGNUM)
        (compare:VFCMP (match_operand:VF_HW 0 "register_operand" "v")
                       (match_operand:VF_HW 1 "register_operand" "v")))