I'm OK with adding patterns in general, but I wonder if gcc would
produce better code if they were split into QImode ops earlier?

+  [(set (match_operand:HI         0 "register_operand"  "=Av")
+       (and:HI (match_operand:HI 1 "register_operand"  "0")
+               (match_operand:HI 2 "immediate_operand" "n")))
+   ]
+  "rl78_real_insns_ok ()"
+  "and\t%q0, %q2 \; and\t%Q0, %Q2"

You can't use %Q with AX and AND.

+;; operations upon pointers.  Failure to provide these patterns
+;; results in GCC generating illegal subregs, eg: (SUBREG:QI (REG:HI 33) 1)

Why is that subreg illegal?

+(define_insn "*nandhi3_virt"

Is this one just an optimization?

Reply via email to