From 6f41623f030d340b9f852937e9b445feec5d40e6 Mon Sep 17 00:00:00 2001 From: Kazu Hirata Date: Thu, 30 Aug 2001 17:17:17 +0000 Subject: h8300.md (zero_extendqihi2): Changes to define_expand to accomodate target-specific attributes. * config/h8300/h8300.md (zero_extendqihi2): Changes to define_expand to accomodate target-specific attributes. (anonymous zero_extendqihi2 patterns): New. From-SVN: r45290 --- gcc/config/h8300/h8300.md | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) (limited to 'gcc/config/h8300/h8300.md') diff --git a/gcc/config/h8300/h8300.md b/gcc/config/h8300/h8300.md index 8fb3271..eb7dc77 100644 --- a/gcc/config/h8300/h8300.md +++ b/gcc/config/h8300/h8300.md @@ -1604,16 +1604,32 @@ ;; EXTEND INSTRUCTIONS ;; ---------------------------------------------------------------------- -(define_insn "zero_extendqihi2" +(define_expand "zero_extendqihi2" + [(set (match_operand:HI 0 "register_operand" "") + (zero_extend:HI (match_operand:QI 1 "general_operand_src" "")))] + "" + "") + +(define_insn "" [(set (match_operand:HI 0 "register_operand" "=r,r") (zero_extend:HI (match_operand:QI 1 "general_operand_src" "0,g>")))] - "" + "TARGET_H8300" "@ mov.b #0,%t0 mov.b %R1,%s0\;mov.b #0,%t0" [(set_attr "length" "2,10") (set_attr "cc" "clobber,clobber")]) +(define_insn "" + [(set (match_operand:HI 0 "register_operand" "=r,r") + (zero_extend:HI (match_operand:QI 1 "general_operand_src" "0,g>")))] + "TARGET_H8300H || TARGET_H8300S" + "@ + extu.w %T0 + mov.b %R1,%s0\;extu.w %T0" + [(set_attr "length" "2,10") + (set_attr "cc" "set_znv,set_znv")]) + ;; The compiler can synthesize a 300H variant of this which is ;; just as efficient as one that we'd create (define_insn "zero_extendqisi2" -- cgit v1.1