This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Difficulty matching machine description to target - any way to specify a minimum register width ?


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~


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]