aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAndrew Stubbs <ams@codesourcery.com>2020-01-06 17:10:40 +0000
committerAndrew Stubbs <ams@gcc.gnu.org>2020-01-06 17:10:40 +0000
commitd54fc770768add469f646c20c0cab4e42510d895 (patch)
tree8dd14ba4460d9410ead8f257806117cd4415b7a7 /gcc
parent2b4f0b8951cbe95e5315428e7c6687307f236e6b (diff)
downloadgcc-d54fc770768add469f646c20c0cab4e42510d895.zip
gcc-d54fc770768add469f646c20c0cab4e42510d895.tar.gz
gcc-d54fc770768add469f646c20c0cab4e42510d895.tar.bz2
Fix amdgcn issue with '0' constraints
2020-01-06 Andrew Stubbs <ams@codesourcery.com> gcc/ * config/gcn/gcn-valu.md (subv64di3): Use separate alternatives for '0' matching inputs. (subv64di3_exec): Likewise. From-SVN: r279906
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/gcn/gcn-valu.md26
2 files changed, 19 insertions, 13 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a3e5220..4ed0cd9 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2020-01-06 Andrew Stubbs <ams@codesourcery.com>
+
+ * config/gcn/gcn-valu.md (subv64di3): Use separate alternatives for
+ '0' matching inputs.
+ (subv64di3_exec): Likewise.
+
2020-01-06 Bryan Stenson <bryan@siliconvortex.com>
* config/mips/mips.c (vr4130_align_insns): Fix typo.
diff --git a/gcc/config/gcn/gcn-valu.md b/gcc/config/gcn/gcn-valu.md
index 9baef24..e301a43 100644
--- a/gcc/config/gcn/gcn-valu.md
+++ b/gcc/config/gcn/gcn-valu.md
@@ -1292,10 +1292,10 @@
(set_attr "length" "8")])
(define_insn_and_split "subv64di3"
- [(set (match_operand:V64DI 0 "register_operand" "= &v, &v")
- (minus:V64DI
- (match_operand:V64DI 1 "gcn_alu_operand" "vSvB0, v0")
- (match_operand:V64DI 2 "gcn_alu_operand" " v0,vSvB0")))
+ [(set (match_operand:V64DI 0 "register_operand" "= &v, &v, &v, &v")
+ (minus:V64DI
+ (match_operand:V64DI 1 "gcn_alu_operand" "vSvB,vSvB0, v, v0")
+ (match_operand:V64DI 2 "gcn_alu_operand" " v0, v,vSvB0,vSvB")))
(clobber (reg:DI VCC_REG))]
""
"#"
@@ -1318,17 +1318,17 @@
DONE;
}
[(set_attr "type" "vmult")
- (set_attr "length" "8,8")])
+ (set_attr "length" "8")])
(define_insn_and_split "subv64di3_exec"
- [(set (match_operand:V64DI 0 "register_operand" "= &v, &v")
- (vec_merge:V64DI
- (minus:V64DI
- (match_operand:V64DI 1 "gcn_alu_operand" "vSvB0, v0")
- (match_operand:V64DI 2 "gcn_alu_operand" " v0,vSvB0"))
+ [(set (match_operand:V64DI 0 "register_operand" "= &v, &v, &v, &v")
+ (vec_merge:V64DI
+ (minus:V64DI
+ (match_operand:V64DI 1 "gcn_alu_operand" "vSvB,vSvB0, v, v0")
+ (match_operand:V64DI 2 "gcn_alu_operand" " v0, v,vSvB0,vSvB"))
(match_operand:V64DI 3 "gcn_register_or_unspec_operand"
- " U0, U0")
- (match_operand:DI 4 "gcn_exec_reg_operand" " e, e")))
+ " U0, U0, U0, U0")
+ (match_operand:DI 4 "gcn_exec_reg_operand" " e, e, e, e")))
(clobber (reg:DI VCC_REG))]
"register_operand (operands[1], VOIDmode)
|| register_operand (operands[2], VOIDmode)"
@@ -1357,7 +1357,7 @@
DONE;
}
[(set_attr "type" "vmult")
- (set_attr "length" "8,8")])
+ (set_attr "length" "8")])
(define_insn_and_split "addv64di3_dup"
[(set (match_operand:V64DI 0 "register_operand" "= &v")