Difficulty matching machine description to target - any way to specify a minimum register width ?
Richard Henderson
rth@redhat.com
Thu Jan 5 22:38:00 GMT 2012
On 01/05/2012 10:33 PM, Paul S wrote:
> (define_insn "addqi3i"
> [(set (match_operand:HI 0 "register_operand" "=r")
> (plus:HI (match_operand:HI 1 "register_operand" "%0")
> (sign_extend:HI (match_operand:QI 2 "memory_operand" "m"))))]
Two things are wrong with this pattern:
(1) % is incorrect because the operands are not the same mode.
That's probably the root cause of all your failures.
(2) Embedded operands are canonically first in commutative operands.
So this should be
[(set (match_operand:HI 0 "register_operand" "=r")
(plus:HI (sign_extend:HI (match_operand:QI 1 "memory_operand" "m"))
(match_operand:HI 2 "register_operand" "0")))]
r~
More information about the Gcc
mailing list