Commit 954224d7 by Wilco Dijkstra Committed by Wilco Dijkstra

Some patterns are using '%w2' for immediate operands...

Some patterns are using '%w2' for immediate operands, which means that a zero
immediate is actually emitted as 'wzr' or 'xzr'.  This not only changes an
immediate operand into a register operand but may emit illegal instructions
from legal RTL (eg. ORR x0, SP, xzr rather than ORR x0, SP, 0).

	* config/aarch64/aarch64.md
	(add<mode>3_compareC_cconly_imm): Remove use of %w.
	(add<mode>3_compareC_imm): Likewise.
	(<optab>si3_uxtw): Split into register and immediate variants.
	(andsi3_compare0_uxtw): Likewise.
	(and<mode>3_compare0): Likewise.
	(and<mode>3nr_compare0): Likewise.
	(stack_protect_test_<mode>): Don't use %x for memory operands.

From-SVN: r236285
parent e6e89f0d
2016-05-16 Wilco Dijkstra <wdijkstr@arm.com>
* config/aarch64/aarch64.md
(add<mode>3_compareC_cconly_imm): Remove use of %w.
(add<mode>3_compareC_imm): Likewise.
(<optab>si3_uxtw): Split into register and immediate variants.
(andsi3_compare0_uxtw): Likewise.
(and<mode>3_compare0): Likewise.
(and<mode>3nr_compare0): Likewise.
(stack_protect_test_<mode>): Don't use %x for memory operands.
2016-05-16 Matthew Fortune <matthew.fortune@imgtec.com> 2016-05-16 Matthew Fortune <matthew.fortune@imgtec.com>
* config/mips/mips-cpus.def (p5600): Add multi-line brackets. * config/mips/mips-cpus.def (p5600): Add multi-line brackets.
......
...@@ -1786,7 +1786,7 @@ ...@@ -1786,7 +1786,7 @@
"aarch64_zero_extend_const_eq (<DWI>mode, operands[2], "aarch64_zero_extend_const_eq (<DWI>mode, operands[2],
<MODE>mode, operands[1])" <MODE>mode, operands[1])"
"@ "@
cmn\\t%<w>0, %<w>1 cmn\\t%<w>0, %1
cmp\\t%<w>0, #%n1" cmp\\t%<w>0, #%n1"
[(set_attr "type" "alus_imm")] [(set_attr "type" "alus_imm")]
) )
...@@ -1818,11 +1818,11 @@ ...@@ -1818,11 +1818,11 @@
"aarch64_zero_extend_const_eq (<DWI>mode, operands[3], "aarch64_zero_extend_const_eq (<DWI>mode, operands[3],
<MODE>mode, operands[2])" <MODE>mode, operands[2])"
"@ "@
adds\\t%<w>0, %<w>1, %<w>2 adds\\t%<w>0, %<w>1, %2
subs\\t%<w>0, %<w>1, #%n2" subs\\t%<w>0, %<w>1, #%n2"
[(set_attr "type" "alus_imm")] [(set_attr "type" "alus_imm")]
) )
(define_insn "add<mode>3_compareC" (define_insn "add<mode>3_compareC"
[(set (reg:CC_C CC_REGNUM) [(set (reg:CC_C CC_REGNUM)
(ne:CC_C (ne:CC_C
...@@ -3425,7 +3425,9 @@ ...@@ -3425,7 +3425,9 @@
(LOGICAL:SI (match_operand:SI 1 "register_operand" "%r,r") (LOGICAL:SI (match_operand:SI 1 "register_operand" "%r,r")
(match_operand:SI 2 "aarch64_logical_operand" "r,K"))))] (match_operand:SI 2 "aarch64_logical_operand" "r,K"))))]
"" ""
"<logical>\\t%w0, %w1, %w2" "@
<logical>\\t%w0, %w1, %w2
<logical>\\t%w0, %w1, %2"
[(set_attr "type" "logic_reg,logic_imm")] [(set_attr "type" "logic_reg,logic_imm")]
) )
...@@ -3438,7 +3440,9 @@ ...@@ -3438,7 +3440,9 @@
(set (match_operand:GPI 0 "register_operand" "=r,r") (set (match_operand:GPI 0 "register_operand" "=r,r")
(and:GPI (match_dup 1) (match_dup 2)))] (and:GPI (match_dup 1) (match_dup 2)))]
"" ""
"ands\\t%<w>0, %<w>1, %<w>2" "@
ands\\t%<w>0, %<w>1, %<w>2
ands\\t%<w>0, %<w>1, %2"
[(set_attr "type" "logics_reg,logics_imm")] [(set_attr "type" "logics_reg,logics_imm")]
) )
...@@ -3452,7 +3456,9 @@ ...@@ -3452,7 +3456,9 @@
(set (match_operand:DI 0 "register_operand" "=r,r") (set (match_operand:DI 0 "register_operand" "=r,r")
(zero_extend:DI (and:SI (match_dup 1) (match_dup 2))))] (zero_extend:DI (and:SI (match_dup 1) (match_dup 2))))]
"" ""
"ands\\t%w0, %w1, %w2" "@
ands\\t%w0, %w1, %w2
ands\\t%w0, %w1, %2"
[(set_attr "type" "logics_reg,logics_imm")] [(set_attr "type" "logics_reg,logics_imm")]
) )
...@@ -3806,7 +3812,9 @@ ...@@ -3806,7 +3812,9 @@
(match_operand:GPI 1 "aarch64_logical_operand" "r,<lconst>")) (match_operand:GPI 1 "aarch64_logical_operand" "r,<lconst>"))
(const_int 0)))] (const_int 0)))]
"" ""
"tst\\t%<w>0, %<w>1" "@
tst\\t%<w>0, %<w>1
tst\\t%<w>0, %1"
[(set_attr "type" "logics_reg,logics_imm")] [(set_attr "type" "logics_reg,logics_imm")]
) )
...@@ -5201,7 +5209,7 @@ ...@@ -5201,7 +5209,7 @@
UNSPEC_SP_TEST)) UNSPEC_SP_TEST))
(clobber (match_scratch:PTR 3 "=&r"))] (clobber (match_scratch:PTR 3 "=&r"))]
"" ""
"ldr\t%<w>3, %x1\;ldr\t%<w>0, %x2\;eor\t%<w>0, %<w>3, %<w>0" "ldr\t%<w>3, %1\;ldr\t%<w>0, %2\;eor\t%<w>0, %<w>3, %<w>0"
[(set_attr "length" "12") [(set_attr "length" "12")
(set_attr "type" "multiple")]) (set_attr "type" "multiple")])
......
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