aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Sandiford <richard.sandiford@arm.com>2019-07-06 08:26:44 +0000
committerRichard Sandiford <rsandifo@gcc.gnu.org>2019-07-06 08:26:44 +0000
commitef2df51671bb6c755302ffe8e36eae0755882ad2 (patch)
tree93c55ae89a44df72b1ba94d42e33819a12a0ba1d
parenta0cb70b7ea2b522f02a2384fbe1103d69904f916 (diff)
downloadgcc-ef2df51671bb6c755302ffe8e36eae0755882ad2.zip
gcc-ef2df51671bb6c755302ffe8e36eae0755882ad2.tar.gz
gcc-ef2df51671bb6c755302ffe8e36eae0755882ad2.tar.bz2
[s390] Fix ambiguous .md attribute uses
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
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/config/s390/s390.md4
-rw-r--r--gcc/config/s390/vx-builtins.md2
3 files changed, 11 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 1b318b9..3694a77 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,13 @@
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)
(l<rounding_insn><MODEF:mode><SWI48:mode>2): Fix ambiguous uses
of .md attributes.
diff --git a/gcc/config/s390/s390.md b/gcc/config/s390/s390.md
index d06aea9..79451d7 100644
--- a/gcc/config/s390/s390.md
+++ b/gcc/config/s390/s390.md
@@ -8821,8 +8821,8 @@
; 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")
diff --git a/gcc/config/s390/vx-builtins.md b/gcc/config/s390/vx-builtins.md
index 3020bc9..c71aae0 100644
--- a/gcc/config/s390/vx-builtins.md
+++ b/gcc/config/s390/vx-builtins.md
@@ -2046,7 +2046,7 @@
;;
; 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")))