From: Bernd Schmidt Date: Fri, 29 Dec 2000 16:04:18 +0000 (+0000) Subject: Backport a few h8300 fixes to 2.95 X-Git-Tag: prereleases/gcc-2.95.3-test1~10 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1c2b068f566b388556f5aa3880a5b9ff90cda7aa;p=thirdparty%2Fgcc.git Backport a few h8300 fixes to 2.95 From-SVN: r38540 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c990d82b9b6e..0f6b231c73ec 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -6,6 +6,19 @@ * config/sparc/sparc.c (pic_address_needs_scratch): LABEL_REFs are not valid pic operands. + 2000-12-26 Kazu Hirata + * config/h8300/h8300.c (get_shift_alg): Fix a typo in the + assembly code for 12-bit ASHIFTRT in HImode. + + 2000-07-17 Kazu Hirata + * h8300.md: Fix the format of mac. + (movsi_h8300hs): Output a tab after stmac instead of a space. + + 2000-10-07 Will Cohen , Kazu Hirata + * config/h8300/h8300.md: Remove the memory alternative and correct + the insn lengths in the templates for sign extention and zero + extention. + 2000-12-22 Bernd Schmidt * calls.c (emit_call_1): Fall back to call_pop/call_value_pop if no diff --git a/gcc/config/h8300/h8300.c b/gcc/config/h8300/h8300.c index a10486f7449f..b48a68bbc549 100644 --- a/gcc/config/h8300/h8300.c +++ b/gcc/config/h8300/h8300.c @@ -2313,9 +2313,9 @@ get_shift_alg (cpu, shift_type, mode, count, assembler_p, if (TARGET_H8300) *assembler_p = "mov.b\t%t0,%s0\n\tbld\t#7,%s0\n\tsubx\t%t0,%t0\n\tshar.b\t%s0\n\tshar.b\t%s0\n\tshar.b\t%s0\n\tshar.b\t%s0"; else if (TARGET_H8300H) - *assembler_p = "mov.b\t%t0,%s0\n\textw.w\t%T0\n\tshar.b\t%s0\n\tshar.b\t%s0\n\tshar.b\t%s0\n\tshar.b\t%s0"; + *assembler_p = "mov.b\t%t0,%s0\n\texts.w\t%T0\n\tshar.b\t%s0\n\tshar.b\t%s0\n\tshar.b\t%s0\n\tshar.b\t%s0"; else if (TARGET_H8300S) - *assembler_p = "mov.b\t%t0,%s0\n\textw.w\t%T0\n\tshar.b\t#2,%s0\n\tshar.b\t#2,%s0"; + *assembler_p = "mov.b\t%t0,%s0\n\texts.w\t%T0\n\tshar.b\t#2,%s0\n\tshar.b\t#2,%s0"; *cc_valid_p = 0; return SHIFT_SPECIAL; } diff --git a/gcc/config/h8300/h8300.md b/gcc/config/h8300/h8300.md index da6519300e98..016a524d29e0 100644 --- a/gcc/config/h8300/h8300.md +++ b/gcc/config/h8300/h8300.md @@ -414,7 +414,7 @@ if (which_alternative == 7) return \"clrmac\;ldmac %1,macl\"; if (which_alternative == 8) - return \"stmac macl,%0\"; + return \"stmac macl,%0\"; if (GET_CODE (operands[1]) == CONST_INT) { int val = INTVAL (operands[1]); @@ -861,7 +861,7 @@ (sign_extend:SI (mem:HI (post_inc:SI (match_operand:SI 2 "register_operand" "r"))))))] "TARGET_H8300S" - "clrmac\;mac %2,%1" + "clrmac\;mac @%2+,@%1+" [(set_attr "length" "6") (set_attr "cc" "none_0hit")]) @@ -874,7 +874,7 @@ (post_inc:SI (match_operand:SI 2 "register_operand" "r"))))) (match_operand:SI 3 "register_operand" "0")))] "TARGET_H8300S" - "mac %2,%1" + "mac @%2+,@%1+" [(set_attr "length" "4") (set_attr "cc" "none_0hit")]) @@ -1674,7 +1674,7 @@ (define_expand "zero_extendhisi2" [(set (match_operand:SI 0 "register_operand" "") - (zero_extend:SI (match_operand:HI 1 "general_operand" "")))] + (zero_extend:SI (match_operand:HI 1 "register_operand" "")))] "" " { @@ -1709,18 +1709,16 @@ (set_attr "cc" "clobber,clobber,clobber")]) (define_insn "" - [(set (match_operand:SI 0 "register_operand" "=r,r") - (zero_extend:SI (match_operand:HI 1 "general_operand_src" "0,g>")))] + [(set (match_operand:SI 0 "register_operand" "=r") + (zero_extend:SI (match_operand:HI 1 "register_operand" "0")))] "TARGET_H8300H || TARGET_H8300S" - "@ - extu.l %S0 - mov.w %T1,%T0\;extu.l %S0" - [(set_attr "length" "2,4") - (set_attr "cc" "set_znv,set_znv")]) + "extu.l %S0" + [(set_attr "length" "2") + (set_attr "cc" "set_znv")]) (define_expand "extendqihi2" [(set (match_operand:HI 0 "register_operand" "") - (sign_extend:HI (match_operand:QI 1 "general_operand" "")))] + (sign_extend:HI (match_operand:QI 1 "register_operand" "")))] "" "") @@ -1735,14 +1733,12 @@ (set_attr "cc" "clobber,clobber")]) (define_insn "" - [(set (match_operand:HI 0 "register_operand" "=r,r") - (sign_extend:HI (match_operand:QI 1 "general_operand_src" "0,g>")))] + [(set (match_operand:HI 0 "register_operand" "=r") + (sign_extend:HI (match_operand:QI 1 "register_operand" "0")))] "TARGET_H8300H || TARGET_H8300S" - "@ - exts.w %T0 - mov.b %R1,%s0\;exts.w %T0" - [(set_attr "length" "2,4") - (set_attr "cc" "set_znv,set_znv")]) + "exts.w %T0" + [(set_attr "length" "2") + (set_attr "cc" "set_znv")]) ;; The compiler can synthesize a 300H variant of this which is ;; just as efficient as one that we'd create @@ -1758,7 +1754,7 @@ (define_expand "extendhisi2" [(set (match_operand:SI 0 "register_operand" "") - (sign_extend:SI (match_operand:HI 1 "general_operand" "")))] + (sign_extend:SI (match_operand:HI 1 "register_operand" "")))] "" " { @@ -1791,14 +1787,12 @@ (set_attr "cc" "clobber,clobber")]) (define_insn "" - [(set (match_operand:SI 0 "register_operand" "=r,r") - (sign_extend:SI (match_operand:HI 1 "general_operand_src" "0,g>")))] + [(set (match_operand:SI 0 "register_operand" "=r") + (sign_extend:SI (match_operand:HI 1 "register_operand" "0")))] "TARGET_H8300H || TARGET_H8300S" - "@ - exts.l %S0 - mov.w %T1,%T0\;exts.l %S0" - [(set_attr "length" "2,4") - (set_attr "cc" "set_znv,set_znv")]) + "exts.l %S0" + [(set_attr "length" "2") + (set_attr "cc" "set_znv")]) ;; ---------------------------------------------------------------------- ;; SHIFTS