Commit 77f7566e by Andrew Stubbs Committed by Andrew Stubbs

Implement sub-dword add/sub on amdgcn

2019-12-19  Andrew Stubbs  <ams@codesourcery.com>

	gcc/
	* config/gcn/gcn-valu.md (addv64si3<exec_clobber>): Rename to ...
	(add<mode>3<exec_clobber>): ... this, and use VEC_ALL1REG_INT_MODE.
	(addv64si3_dup<exec_clobber>): Rename to ...
	(add<mode>3_dup<exec_clobber>): ... this, and use VEC_ALL1REG_INT_MODE.
	(subv64si3<exec_clobber>): Rename to ...
	(sub<mode>3<exec_clobber>): ... this, and use VEC_ALL1REG_INT_MODE.

From-SVN: r279574
parent 2b91bb48
2019-12-19 Andrew Stubbs <ams@codesourcery.com>
* config/gcn/gcn-valu.md (addv64si3<exec_clobber>): Rename to ...
(add<mode>3<exec_clobber>): ... this, and use VEC_ALL1REG_INT_MODE.
(addv64si3_dup<exec_clobber>): Rename to ...
(add<mode>3_dup<exec_clobber>): ... this, and use VEC_ALL1REG_INT_MODE.
(subv64si3<exec_clobber>): Rename to ...
(sub<mode>3<exec_clobber>): ... this, and use VEC_ALL1REG_INT_MODE.
2019-12-19 Richard Sandiford <richard.sandiford@arm.com> 2019-12-19 Richard Sandiford <richard.sandiford@arm.com>
* config/aarch64/aarch64.c (aarch64_can_change_mode_class): * config/aarch64/aarch64.c (aarch64_can_change_mode_class):
...@@ -1036,23 +1036,23 @@ ...@@ -1036,23 +1036,23 @@
;; }}} ;; }}}
;; {{{ ALU special case: add/sub ;; {{{ ALU special case: add/sub
(define_insn "addv64si3<exec_clobber>" (define_insn "add<mode>3<exec_clobber>"
[(set (match_operand:V64SI 0 "register_operand" "= v") [(set (match_operand:VEC_ALL1REG_INT_MODE 0 "register_operand" "= v")
(plus:V64SI (plus:VEC_ALL1REG_INT_MODE
(match_operand:V64SI 1 "register_operand" "% v") (match_operand:VEC_ALL1REG_INT_MODE 1 "register_operand" "% v")
(match_operand:V64SI 2 "gcn_alu_operand" "vSvB"))) (match_operand:VEC_ALL1REG_INT_MODE 2 "gcn_alu_operand" "vSvB")))
(clobber (reg:DI VCC_REG))] (clobber (reg:DI VCC_REG))]
"" ""
"v_add%^_u32\t%0, vcc, %2, %1" "v_add%^_u32\t%0, vcc, %2, %1"
[(set_attr "type" "vop2") [(set_attr "type" "vop2")
(set_attr "length" "8")]) (set_attr "length" "8")])
(define_insn "addv64si3_dup<exec_clobber>" (define_insn "add<mode>3_dup<exec_clobber>"
[(set (match_operand:V64SI 0 "register_operand" "= v") [(set (match_operand:VEC_ALL1REG_INT_MODE 0 "register_operand" "= v")
(plus:V64SI (plus:VEC_ALL1REG_INT_MODE
(vec_duplicate:V64SI (vec_duplicate:VEC_ALL1REG_INT_MODE
(match_operand:SI 2 "gcn_alu_operand" "SvB")) (match_operand:<SCALAR_MODE> 2 "gcn_alu_operand" "SvB"))
(match_operand:V64SI 1 "register_operand" " v"))) (match_operand:VEC_ALL1REG_INT_MODE 1 "register_operand" " v")))
(clobber (reg:DI VCC_REG))] (clobber (reg:DI VCC_REG))]
"" ""
"v_add%^_u32\t%0, vcc, %2, %1" "v_add%^_u32\t%0, vcc, %2, %1"
...@@ -1158,11 +1158,11 @@ ...@@ -1158,11 +1158,11 @@
[(set_attr "type" "vop2,vop3b") [(set_attr "type" "vop2,vop3b")
(set_attr "length" "4,8")]) (set_attr "length" "4,8")])
(define_insn "subv64si3<exec_clobber>" (define_insn "sub<mode>3<exec_clobber>"
[(set (match_operand:V64SI 0 "register_operand" "= v, v") [(set (match_operand:VEC_ALL1REG_INT_MODE 0 "register_operand" "= v, v")
(minus:V64SI (minus:VEC_ALL1REG_INT_MODE
(match_operand:V64SI 1 "gcn_alu_operand" "vSvB, v") (match_operand:VEC_ALL1REG_INT_MODE 1 "gcn_alu_operand" "vSvB, v")
(match_operand:V64SI 2 "gcn_alu_operand" " v,vSvB"))) (match_operand:VEC_ALL1REG_INT_MODE 2 "gcn_alu_operand" " v,vSvB")))
(clobber (reg:DI VCC_REG))] (clobber (reg:DI VCC_REG))]
"" ""
"@ "@
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment