summaryrefslogtreecommitdiff
path: root/gcc/config/gcn
diff options
context:
space:
mode:
authorAndrew Stubbs <ams@codesourcery.com>2020-01-29 16:59:08 +0000
committerAndrew Stubbs <ams@codesourcery.com>2020-01-31 16:01:24 +0000
commitb92709388b9aee52db3cd7c227818e0ecccda2e5 (patch)
treea3e4ed70def6560b739b639e2cfb980f40ec18d5 /gcc/config/gcn
parent828573a573553e9c38f0431f0998de8c905f8460 (diff)
Fix conditional add LRA failure for amdgcn
Fix ICE in testcase gfortran.dg/assumed_rank_bounds_3.f90. 2020-01-31 Andrew Stubbs <ams@codesourcery.com> gcc/ * config/gcn/gcn-valu.md (addv64di3_exec): Allow one '0' in each alternative only.
Diffstat (limited to 'gcc/config/gcn')
-rw-r--r--gcc/config/gcn/gcn-valu.md11
1 files changed, 6 insertions, 5 deletions
diff --git a/gcc/config/gcn/gcn-valu.md b/gcc/config/gcn/gcn-valu.md
index 4aad835b2ef..ecdd60b8190 100644
--- a/gcc/config/gcn/gcn-valu.md
+++ b/gcc/config/gcn/gcn-valu.md
@@ -1200,13 +1200,14 @@
(set_attr "length" "8")])
(define_insn_and_split "addv64di3_exec"
- [(set (match_operand:V64DI 0 "register_operand" "= &v, &v")
+ [(set (match_operand:V64DI 0 "register_operand" "= &v, &v, &v")
(vec_merge:V64DI
(plus:V64DI
- (match_operand:V64DI 1 "register_operand" "%vDb,vDb0")
- (match_operand:V64DI 2 "gcn_alu_operand" "vDb0, vDb"))
- (match_operand:V64DI 3 "gcn_register_or_unspec_operand" " U0, U0")
- (match_operand:DI 4 "gcn_exec_reg_operand" " e, e")))
+ (match_operand:V64DI 1 "register_operand" "%vDb,vDb0,vDb")
+ (match_operand:V64DI 2 "gcn_alu_operand" "vDb0, vDb,vDb"))
+ (match_operand:V64DI 3 "gcn_register_or_unspec_operand"
+ " U, U, 0")
+ (match_operand:DI 4 "gcn_exec_reg_operand" " e, e, e")))
(clobber (reg:DI VCC_REG))]
""
"#"