diff options
author | olegendo <olegendo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-03-20 00:37:19 +0000 |
---|---|---|
committer | olegendo <olegendo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-03-20 00:37:19 +0000 |
commit | a0554dde33669b04d75b05178a9b7c8c7740ef1c (patch) | |
tree | ffa705b82dab65831e27602463b712d7f212b9e7 | |
parent | 65e2e10e95c5d17c887be7e8bf1ee12d1dbea66c (diff) | |
download | gcc-a0554dde33669b04d75b05178a9b7c8c7740ef1c.tar.gz |
* config/sh/sh.md: Use braced string notation where applicable.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@185555 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/config/sh/sh.md | 1335 |
2 files changed, 593 insertions, 746 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 258bda905ac..019b0f8e67a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2012-03-20 Oleg Endo <olegendo@gcc.gnu.org> + + * config/sh/sh.md: Use braced string notation where applicable. + 2012-03-19 Uros Bizjak <ubizjak@gmail.com> * config/i386/i386.md (allocate_stack): Simplify. diff --git a/gcc/config/sh/sh.md b/gcc/config/sh/sh.md index 31160b0d1d4..302480eafaf 100644 --- a/gcc/config/sh/sh.md +++ b/gcc/config/sh/sh.md @@ -682,11 +682,10 @@ && CONST_OK_FOR_K08 (INTVAL (operands[3]))" [(set (reg:SI T_REG) (eq:SI (and:SI (match_dup 0) (match_dup 3)) (const_int 0)))] - " { if (GET_MODE (operands[0]) == QImode) operands[0] = simplify_gen_subreg (SImode, operands[0], QImode, 0); -}") +}) ;; Extract single bit, negate and store it in the T bit. ;; Not used for SH4A. @@ -793,14 +792,16 @@ (pc))) (clobber (reg:SI T_REG))] "" - "if (TARGET_SHMEDIA) - emit_jump_insn (gen_cbranchint4_media (operands[0], operands[1], - operands[2], operands[3])); - else if (TARGET_CBRANCHDI4) - expand_cbranchsi4 (operands, LAST_AND_UNUSED_RTX_CODE, -1); - else - sh_emit_compare_and_branch (operands, SImode); - DONE;") +{ + if (TARGET_SHMEDIA) + emit_jump_insn (gen_cbranchint4_media (operands[0], operands[1], + operands[2], operands[3])); + else if (TARGET_CBRANCHDI4) + expand_cbranchsi4 (operands, LAST_AND_UNUSED_RTX_CODE, -1); + else + sh_emit_compare_and_branch (operands, SImode); + DONE; +}) ;; ------------------------------------------------------------------------- ;; SImode unsigned integer comparisons @@ -814,11 +815,10 @@ "cmp/hs %1,%0" "&& operands[1] == CONST0_RTX (SImode)" [(pc)] - " { emit_insn (gen_sett ()); DONE; -}" +} [(set_attr "type" "mt_group")]) (define_insn "cmpgtusi_t" @@ -850,7 +850,6 @@ (clobber (match_dup 4)) (clobber (reg:SI T_REG))] "TARGET_CBRANCHDI4 || TARGET_SH2 || TARGET_SHMEDIA" - " { enum rtx_code comparison; @@ -879,7 +878,7 @@ = gen_rtx_fmt_ee (comparison, VOIDmode, operands[1], operands[2]); operands[4] = gen_rtx_SCRATCH (SImode); } -}") +}) (define_insn_and_split "cbranchdi4_i" [(set (pc) @@ -894,12 +893,11 @@ "#" "&& reload_completed" [(pc)] - " { if (!expand_cbranchdi4 (operands, GET_CODE (operands[0]))) FAIL; DONE; -}") +}) ;; ------------------------------------------------------------------------- ;; DImode signed integer comparisons @@ -941,7 +939,6 @@ (pc))) (set (reg:SI T_REG) (eq:SI (match_dup 4) (match_dup 5))) (match_dup 6)] - " { operands[2] = gen_rtx_REG (SImode, @@ -955,7 +952,7 @@ operands[4] = gen_lowpart (SImode, operands[0]); operands[5] = gen_lowpart (SImode, operands[1]); operands[6] = gen_label_rtx (); -}") +}) (define_insn "cmpgtdi_t" [(set (reg:SI T_REG) @@ -1095,11 +1092,10 @@ "TARGET_SHMEDIA && peep2_reg_dead_p (2, operands[0])" [(set (match_dup 2) (if_then_else:DI (match_dup 3) (match_dup 0) (match_dup 2)))] - " { operands[3] = gen_rtx_fmt_ee (reverse_condition (GET_CODE (operands[3])), VOIDmode, operands[1], CONST0_RTX (DImode)); -}") +}) (define_peephole2 [(set (match_operand:DI 0 "general_movdst_operand" "") @@ -1121,7 +1117,6 @@ (match_operand:DI 2 "register_operand" "") (match_operand:DI 3 "register_operand" "")))] "TARGET_SHMEDIA" - " { if ((GET_CODE (operands[1]) == EQ || GET_CODE (operands[1]) == NE) && GET_MODE (XEXP (operands[1], 0)) == DImode @@ -1139,7 +1134,7 @@ if (!operands[1]) FAIL; } -}") +}) ;; Add SImode variants for cmveq / cmvne to compensate for not promoting ;; SImode to DImode. @@ -1174,11 +1169,10 @@ "TARGET_SHMEDIA && peep2_reg_dead_p (2, operands[0])" [(set (match_dup 2) (if_then_else:SI (match_dup 3) (match_dup 0) (match_dup 2)))] - " { operands[3] = gen_rtx_fmt_ee (reverse_condition (GET_CODE (operands[3])), VOIDmode, operands[1], CONST0_RTX (SImode)); -}") +}) (define_peephole2 [(set (match_operand:SI 0 "general_movdst_operand" "") @@ -1193,10 +1187,9 @@ && (!REG_P (operands[1]) || GENERAL_REGISTER_P (REGNO (operands[1])))" [(set (match_dup 2) (if_then_else:SI (match_dup 4) (match_dup 1) (match_dup 2)))] - " { replace_rtx (operands[4], operands[0], operands[1]); -}") +}) (define_peephole2 [(set (match_operand 0 "any_register_operand" "") @@ -1217,7 +1210,6 @@ == REGNO_REG_CLASS (REGNO (operands[0])))" [(set (match_dup 0) (match_dup 3)) (set (match_dup 4) (match_dup 5))] - " { rtx set1, set2, insn2; rtx replacements[4]; @@ -1269,7 +1261,7 @@ FAIL; } DONE; -}") +}) ;; The register allocator is rather clumsy in handling multi-way conditional ;; moves, so allow the combiner to make them, and we split them up after @@ -1287,7 +1279,6 @@ "#" "TARGET_SHMEDIA && reload_completed" [(pc)] - " { emit_insn (gen_movsicc_false (operands[0], operands[1], operands[2], operands[3])); @@ -1295,7 +1286,7 @@ emit_insn (gen_movsicc_false (operands[0], operands[5], operands[4], operands[0])); DONE; -}") +}) (define_insn "*movsicc_t_false" [(set (match_operand:SI 0 "arith_reg_dest" "=r,r") @@ -1329,7 +1320,6 @@ (match_operand:SI 2 "arith_reg_or_0_operand" "") (match_operand:SI 3 "arith_reg_operand" "")))] "TARGET_SHMEDIA || TARGET_PRETEND_CMOVE" - " { if ((GET_CODE (operands[1]) == EQ || GET_CODE (operands[1]) == NE) && GET_MODE (XEXP (operands[1], 0)) == SImode @@ -1377,7 +1367,7 @@ if (!operands[1]) FAIL; } -}") +}) (define_expand "movqicc" [(set (match_operand:QI 0 "register_operand" "") @@ -1385,14 +1375,13 @@ (match_operand:QI 2 "register_operand" "") (match_operand:QI 3 "register_operand" "")))] "TARGET_SHMEDIA" - " { operands[0] = simplify_gen_subreg (SImode, operands[0], QImode, 0); operands[2] = simplify_gen_subreg (SImode, operands[2], QImode, 0); operands[3] = simplify_gen_subreg (SImode, operands[3], QImode, 0); emit (gen_movsicc (operands[0], operands[1], operands[2], operands[3])); DONE; -}") +}) ;; ------------------------------------------------------------------------- ;; Addition instructions @@ -1403,7 +1392,6 @@ (plus:DI (match_operand:DI 1 "arith_reg_operand" "") (match_operand:DI 2 "arith_operand" "")))] "" - " { if (TARGET_SH1) { @@ -1413,7 +1401,7 @@ emit_insn (gen_adddi3_compact (operands[0], operands[1], operands[2])); DONE; } -}") +}) (define_insn "*adddi3_media" [(set (match_operand:DI 0 "arith_reg_dest" "=r,r") @@ -1462,7 +1450,6 @@ (clobber (reg:SI T_REG))] "TARGET_SH1 && reload_completed" [(const_int 0)] - " { rtx high0, high2, low0 = gen_lowpart (SImode, operands[0]); high0 = gen_rtx_REG (SImode, @@ -1475,7 +1462,7 @@ emit_insn (gen_addc (low0, low0, gen_lowpart (SImode, operands[2]))); emit_insn (gen_addc1 (high0, high0, high2)); DONE; -}") +}) (define_insn "addc" [(set (match_operand:SI 0 "arith_reg_dest" "=r") @@ -1503,11 +1490,10 @@ (plus:SI (match_operand:SI 1 "arith_operand" "") (match_operand:SI 2 "arith_operand" "")))] "" - " { if (TARGET_SHMEDIA) operands[1] = force_reg (SImode, operands[1]); -}") +}) (define_insn "addsi3_media" [(set (match_operand:SI 0 "arith_reg_dest" "=r,r") @@ -1550,7 +1536,6 @@ (minus:DI (match_operand:DI 1 "arith_reg_or_0_operand" "") (match_operand:DI 2 "arith_reg_operand" "")))] "" - " { if (TARGET_SH1) { @@ -1558,7 +1543,7 @@ emit_insn (gen_subdi3_compact (operands[0], operands[1], operands[2])); DONE; } -}") +}) (define_insn "*subdi3_media" [(set (match_operand:DI 0 "arith_reg_dest" "=r") @@ -1593,7 +1578,6 @@ (clobber (reg:SI T_REG))] "TARGET_SH1 && reload_completed" [(const_int 0)] - " { rtx high0, high2, low0 = gen_lowpart (SImode, operands[0]); high0 = gen_rtx_REG (SImode, @@ -1606,7 +1590,7 @@ emit_insn (gen_subc (low0, low0, gen_lowpart (SImode, operands[2]))); emit_insn (gen_subc1 (high0, high0, high2)); DONE; -}") +}) (define_insn "subc" [(set (match_operand:SI 0 "arith_reg_dest" "=r") @@ -1692,7 +1676,6 @@ (minus:SI (match_operand:SI 1 "arith_operand" "") (match_operand:SI 2 "arith_reg_operand" "")))] "" - " { if (TARGET_SH1 && CONST_INT_P (operands[1])) { @@ -1708,7 +1691,7 @@ if (operands[1] != const0_rtx && GET_CODE (operands[1]) != SUBREG) operands[1] = force_reg (SImode, operands[1]); } -}") +}) ;; ------------------------------------------------------------------------- ;; Division instructions @@ -1793,7 +1776,6 @@ (set (match_operand:SI 0 "register_operand" "") (truncate:SI (match_dup 8)))] "TARGET_SHMEDIA_FPU" - " { operands[3] = gen_reg_rtx (DImode); operands[4] = gen_reg_rtx (DImode); @@ -1801,7 +1783,7 @@ operands[6] = gen_reg_rtx (DFmode); operands[7] = gen_reg_rtx (DFmode); operands[8] = gen_reg_rtx (DImode); -}") +}) (define_insn "udivsi3_i4" [(set (match_operand:SI 0 "register_operand" "=y") @@ -1868,7 +1850,6 @@ (clobber (reg:SI R4_REG)) (use (match_dup 3))])] "" - " { rtx last; @@ -1892,12 +1873,12 @@ emit_move_insn (operands[0], operands[2]); DONE; } - function_symbol (operands[3], \"__udivsi3_i4i\", SFUNC_GOT); + function_symbol (operands[3], "__udivsi3_i4i", SFUNC_GOT); last = gen_udivsi3_i4_int (operands[0], operands[3]); } else if (TARGET_DIVIDE_CALL_FP) { - function_symbol (operands[3], \"__udivsi3_i4\", SFUNC_STATIC); + function_symbol (operands[3], "__udivsi3_i4", SFUNC_STATIC); if (TARGET_FPU_SINGLE) last = gen_udivsi3_i4_single (operands[0], operands[3]); else @@ -1920,7 +1901,7 @@ else if (TARGET_SH5) { function_symbol (operands[3], - TARGET_FPU_ANY ? \"__udivsi3_i4\" : \"__udivsi3\", + TARGET_FPU_ANY ? "__udivsi3_i4" : "__udivsi3", SFUNC_STATIC); if (TARGET_SHMEDIA) @@ -1932,14 +1913,14 @@ } else { - function_symbol (operands[3], \"__udivsi3\", SFUNC_STATIC); + function_symbol (operands[3], "__udivsi3", SFUNC_STATIC); last = gen_udivsi3_i1 (operands[0], operands[3]); } emit_move_insn (gen_rtx_REG (SImode, 4), operands[1]); emit_move_insn (gen_rtx_REG (SImode, 5), operands[2]); emit_insn (last); DONE; -}") +}) (define_insn "divsi3_sh2a" [(set (match_operand:SI 0 "arith_reg_dest" "=r") @@ -2042,7 +2023,6 @@ "#" "&& (high_life_started || reload_completed)" [(pc)] - " { const char *name = sh_divsi3_libfunc; enum sh_function_kind kind = SFUNC_GOT; @@ -2057,7 +2037,7 @@ if (GET_CODE (x) != UNSPEC || XINT (x, 1) != UNSPEC_DIV_INV_M1) break; x = XVECEXP (x, 0, 0); - name = \"__sdivsi3_2\"; + name = "__sdivsi3_2"; kind = SFUNC_STATIC; emit_move_insn (gen_rtx_REG (DImode, R20_REG), x); break; @@ -2065,7 +2045,7 @@ sym = function_symbol (NULL, name, kind); emit_insn (gen_divsi3_media_2 (operands[0], sym)); DONE; -}" +} [(set_attr "highpart" "must_split")]) (define_expand "divsi3_i4_media" @@ -2075,12 +2055,11 @@ (set (match_operand:SI 0 "register_operand" "=r") (fix:SI (match_dup 5)))] "TARGET_SHMEDIA_FPU" - " { operands[3] = gen_reg_rtx (DFmode); operands[4] = gen_reg_rtx (DFmode); operands[5] = gen_reg_rtx (DFmode); -}") +}) (define_insn "divsi3_i4" [(set (match_operand:SI 0 "register_operand" "=y") @@ -2137,7 +2116,6 @@ (clobber (reg:SI R3_REG)) (use (match_dup 3))])] "" - " { rtx last; @@ -2197,13 +2175,13 @@ divisor = force_reg (SImode, divisor); if (flag_pic && Pmode != DImode) { - tab_base = gen_rtx_SYMBOL_REF (Pmode, \"__div_table\"); + tab_base = gen_rtx_SYMBOL_REF (Pmode, "__div_table"); tab_base = gen_datalabel_ref (tab_base); tab_base = force_reg (DImode, gen_rtx_SIGN_EXTEND (DImode, tab_base)); } else { - tab_base = gen_rtx_SYMBOL_REF (DImode, \"__div_table\"); + tab_base = gen_rtx_SYMBOL_REF (DImode, "__div_table"); tab_base = gen_datalabel_ref (tab_base); tab_base = force_reg (DImode, tab_base); } @@ -2254,14 +2232,14 @@ { if (TARGET_DIVIDE_CALL2) { - rtx tab_base = gen_rtx_SYMBOL_REF (Pmode, \"__div_table\"); + rtx tab_base = gen_rtx_SYMBOL_REF (Pmode, "__div_table"); tab_base = gen_datalabel_ref (tab_base); emit_move_insn (gen_rtx_REG (Pmode, R20_REG), tab_base); } if (TARGET_FPU_ANY && TARGET_SH1) function_symbol (operands[3], sh_divsi3_libfunc, SFUNC_STATIC); else if (TARGET_DIVIDE_CALL2) - function_symbol (operands[3], \"__sdivsi3_2\", SFUNC_STATIC); + function_symbol (operands[3], "__sdivsi3_2", SFUNC_STATIC); else function_symbol (operands[3], sh_divsi3_libfunc, SFUNC_GOT); @@ -2282,7 +2260,7 @@ emit_move_insn (gen_rtx_REG (SImode, 5), operands[2]); emit_insn (last); DONE; -}") +}) ;; operands: scratch, tab_base, tab_ix ;; These are unspecs because we could generate an indexed addressing mode @@ -2323,7 +2301,6 @@ (clobber (match_operand:DI 4 "register_operand" "=r")) (clobber (match_operand:DI 5 "register_operand" "=r"))] "TARGET_SHMEDIA" - " { /* tab_base: r20 @@ -2352,7 +2329,7 @@ norm32: r25 emit_insn (gen_ashrdi3_media (scratch0, scratch0, GEN_INT (24))); emit_insn (gen_subdisi3_media (inv0, scratch1, scratch0)); DONE; -}") +}) ;; operands: inv1, tab_base, tab_ix, norm32 (define_insn_and_split "divsi_inv_m1" @@ -2370,7 +2347,6 @@ norm32: r25 "#" "&& !can_create_pseudo_p ()" [(pc)] - " { /* inv0: r19 muls.l r19, r19, r18 // u0.28 @@ -2400,7 +2376,7 @@ norm32: r25 emit_insn (gen_subdi3 (scratch1, scratch0, scratch1)); emit_insn (gen_ashrdisi3_media_opaque (inv1, scratch1, GEN_INT (28))); DONE; -}") +}) ;; operands: inv2, norm32, inv1, i92 (define_insn_and_split "divsi_inv_m2" @@ -2414,7 +2390,6 @@ norm32: r25 "#" "&& !can_create_pseudo_p ()" [(pc)] - " { /* muls.l r18, r25, r0 // s2.60 @@ -2436,7 +2411,7 @@ norm32: r25 emit_insn (gen_mulsidi3_media (scratch0, scratch0_si, inv1)); emit_insn (gen_ashrdisi3_media_opaque (inv2, scratch0, GEN_INT (30))); DONE; -}") +}) (define_insn_and_split "divsi_inv_m3" [(set (match_operand:SI 0 "register_operand" "=r") @@ -2458,7 +2433,6 @@ norm32: r25 "#" "&& !can_create_pseudo_p ()" [(pc)] - " { /* r0: result r1: shift r4: dividend r18: inv1 r19: inv2 @@ -2496,7 +2470,7 @@ norm32: r25 emit_insn (gen_ashrdi3_media (scratch0, scratch0, shift)); emit_insn (gen_subdisi3_media (result, scratch0, scratch2)); DONE; -}") +}) ;; operands: quotient, dividend, inv1, inv2, shift, i2p27, i43 ;; inv1: tab_base, tab_ix, norm32 @@ -2531,7 +2505,6 @@ norm32: r25 "#" "&& !can_create_pseudo_p ()" [(pc)] - " { rtx result = operands[0]; rtx dividend = operands[1]; @@ -2605,7 +2578,7 @@ norm32: r25 emit_insn (gen_ashrdi3_media (scratch2, scratch2, shift)); emit_insn (gen_subdisi3_media (result, scratch2, scratch3)); DONE; -}") +}) (define_insn "divsi_inv20" [(set (match_operand:DI 0 "register_operand" "=&r") @@ -2624,7 +2597,6 @@ norm32: r25 (clobber (match_operand:SI 9 "register_operand" "=r"))] "TARGET_SHMEDIA && (TARGET_DIVIDE_INV20U || TARGET_DIVIDE_INV20L)" - "* { /* operands: %0 div_result, %1 norm32, %2 inv1, %3 dividend, %4 dividend_nsb, %5 result_sign, %6 i43, %12 i2p27, @@ -2646,18 +2618,18 @@ label: int likely = TARGET_DIVIDE_INV20L; - if (! likely) output_asm_insn (\"muls.l\t%2, %1 , %8\", operands); - output_asm_insn (\"muls.l\t%2, %3, %0\;xor\t%12, %5, %7\", operands); + if (! likely) output_asm_insn ("muls.l\t%2, %1 , %8", operands); + output_asm_insn ("muls.l\t%2, %3, %0\;xor\t%12, %5, %7", operands); output_asm_insn (likely - ? \"bge/l\t%4, %6, %10\;muls.l\t%2, %1 , %8\" - : \"bge/u\t%4, %6, %10\", operands); - output_asm_insn (\"shari\t%8, 16, %8\;muls.l\t%8, %2, %8\", operands); - if (! likely) output_asm_insn (\"sub\t%0, %7, %0\", operands); - output_asm_insn (\"shari\t%3, 14, %9\;shari\t%8, 30, %8\", operands); + ? "bge/l\t%4, %6, %10\;muls.l\t%2, %1 , %8" + : "bge/u\t%4, %6, %10", operands); + output_asm_insn ("shari\t%8, 16, %8\;muls.l\t%8, %2, %8", operands); + if (! likely) output_asm_insn ("sub\t%0, %7, %0", operands); + output_asm_insn ("shari\t%3, 14, %9\;shari\t%8, 30, %8", operands); return (likely - ? \"muls.l\t%8, %9, %8\;sub\t%0, %8, %0\n%11:\tadd\t%0, %7, %0\" - : \"muls.l\t%8, %9, %7\n%11:\tsub\t%0, %7, %0\"); -}") + ? "muls.l\t%8, %9, %8\;sub\t%0, %8, %0\n%11:\tadd\t%0, %7, %0" + : "muls.l\t%8, %9, %7\n%11:\tsub\t%0, %7, %0"); +}) (define_insn_and_split "divsi_inv_fp" [(set (match_operand:SI 0 "general_movdst_operand" "=rf") @@ -2705,7 +2677,6 @@ label: (set (match_dup 8) (fix:SI (match_dup 11))) (set (match_dup 0) (match_dup 8))] - " { if (! fp_arith_reg_operand (operands[1], SImode)) { @@ -2717,7 +2688,7 @@ label: emit_move_insn (operands[8], operands[2]); operands[2] = operands[8]; } -}" +} [(set_attr "highpart" "must_split")]) ;; ------------------------------------------------------------------------- @@ -2753,7 +2724,6 @@ label: (set (match_operand:SI 0 "arith_reg_operand" "") (reg:SI MACL_REG))] "TARGET_SH1" - " { rtx insn, macl; @@ -2772,7 +2742,7 @@ label: emit_libcall_block (insn, operands[0], macl, SET_SRC (single_set (insn))); DONE; -}") +}) (define_expand "umulhisi3" [(set (reg:SI MACL_REG) @@ -2783,7 +2753,6 @@ label: (set (match_operand:SI 0 "arith_reg_operand" "") (reg:SI MACL_REG))] "TARGET_SH1" - " { rtx insn, macl; @@ -2802,7 +2771,7 @@ label: emit_libcall_block (insn, operands[0], macl, SET_SRC (single_set (insn))); DONE; -}") +}) ;; mulsi3 on the SH2 can be done in one instruction, on the SH1 we generate ;; a call to a routine which clobbers known registers. @@ -2861,13 +2830,12 @@ label: (set (match_operand:SI 0 "arith_reg_operand" "") (reg:SI MACL_REG))] "TARGET_SH1" - " { if (!TARGET_SH2) { /* The address must be set outside the libcall, since it goes into a pseudo. */ - rtx sym = function_symbol (NULL, \"__mulsi3\", SFUNC_STATIC); + rtx sym = function_symbol (NULL, "__mulsi3", SFUNC_STATIC); rtx addr = force_reg (SImode, sym); rtx insns = gen_mulsi3_call (operands[0], operands[1], operands[2], addr); @@ -2884,7 +2852,7 @@ label: emit_insn (gen_movsi_i ((operands[0]), macl)); } DONE; -}") +}) (define_insn "mulsidi3_i" [(set (reg:SI MACH_REG) @@ -2906,15 +2874,13 @@ label: (mult:DI (sign_extend:DI (match_operand:SI 1 "arith_reg_operand" "r")) (sign_extend:DI (match_operand:SI 2 "arith_reg_operand" "r"))))] "TARGET_SH2 || TARGET_SHMEDIA" - " { if (TARGET_SH2) { - emit_insn (gen_mulsidi3_compact (operands[0], operands[1], - operands[2])); - DONE; + emit_insn (gen_mulsidi3_compact (operands[0], operands[1], operands[2])); + DONE; } -}") +}) (define_insn "mulsidi3_media" [(set (match_operand:DI 0 "arith_reg_dest" "=r") @@ -2944,7 +2910,6 @@ label: (clobber (reg:SI MACL_REG))] "TARGET_SH2" [(const_int 0)] - " { rtx low_dst = gen_lowpart (SImode, operands[0]); rtx high_dst = gen_highpart (SImode, operands[0]); @@ -2956,7 +2921,7 @@ label: /* We need something to tag the possible REG_EQUAL notes on to. */ emit_move_insn (operands[0], operands[0]); DONE; -}") +}) (define_insn "umulsidi3_i" [(set (reg:SI MACH_REG) @@ -2978,15 +2943,13 @@ label: (mult:DI (zero_extend:DI (match_operand:SI 1 "arith_reg_operand" "r")) (zero_extend:DI (match_operand:SI 2 "arith_reg_operand" "r"))))] "TARGET_SH2 || TARGET_SHMEDIA" - " { if (TARGET_SH2) { - emit_insn (gen_umulsidi3_compact (operands[0], operands[1], - operands[2])); - DONE; + emit_insn (gen_umulsidi3_compact (operands[0], operands[1], operands[2])); + DONE; } -}") +}) (define_insn "umulsidi3_media" [(set (match_operand:DI 0 "arith_reg_dest" "=r") @@ -3015,7 +2978,6 @@ label: (clobber (reg:SI MACL_REG))] "TARGET_SH2" [(const_int 0)] - " { rtx low_dst = gen_lowpart (SImode, operands[0]); rtx high_dst = gen_highpart (SImode, operands[0]); @@ -3027,7 +2989,7 @@ label: /* We need something to tag the possible REG_EQUAL notes on to. */ emit_move_insn (operands[0], operands[0]); DONE; -}") +}) (define_insn "smulsi3_highpart_i" [(set (reg:SI MACH_REG) @@ -3055,7 +3017,6 @@ label: (set (match_operand:SI 0 "arith_reg_operand" "") (reg:SI MACH_REG))] "TARGET_SH2" - " { rtx insn, mach; @@ -3074,7 +3035,7 @@ label: emit_libcall_block (insn, operands[0], mach, SET_SRC (single_set (insn))); DONE; -}") +}) (define_insn "umulsi3_highpart_i" [(set (reg:SI MACH_REG) @@ -3102,7 +3063,6 @@ label: (set (match_operand:SI 0 "arith_reg_operand" "") (reg:SI MACH_REG))] "TARGET_SH2" - " { rtx insn, mach; @@ -3116,7 +3076,7 @@ label: emit_libcall_block (insn, operands[0], mach, SET_SRC (single_set (insn))); DONE; -}") +}) (define_insn_and_split "muldi3" [(set (match_operand:DI 0 "arith_reg_dest" "=r") @@ -3128,7 +3088,6 @@ label: "#" "reload_completed" [(const_int 0)] - " { rtx op3_v2si, op2_v2si; @@ -3156,7 +3115,7 @@ label: emit_insn (gen_adddi3 (operands[0], operands[3], operands[0])); emit_insn (gen_adddi3 (operands[0], operands[4], operands[0])); DONE; -}") +}) ;; ------------------------------------------------------------------------- @@ -3299,13 +3258,12 @@ label: "#" "&& reload_completed" [(set (match_dup 0) (match_dup 3))] - " { operands[3] = gen_rtx_fmt_ee (GET_CODE (operands[3]), DImode, simplify_gen_subreg (DImode, operands[1], SImode, 0), simplify_gen_subreg (DImode, operands[2], SImode, 0)); -}") +}) (define_insn_and_split "*logical_sidisi3" [(set (match_operand:SI 0 "arith_reg_dest" "=r,r") @@ -3374,7 +3332,6 @@ label: "TARGET_SHMEDIA" [(set (match_dup 5) (match_dup 4)) (set (match_dup 0) (sign_extend:DI (match_dup 5)))] -" { enum machine_mode inmode = GET_MODE (operands[1]); int offset = 0; @@ -3388,7 +3345,7 @@ label: if (! TARGET_LITTLE_ENDIAN) offset += 8 - GET_MODE_SIZE (inmode); operands[5] = gen_rtx_SUBREG (inmode, operands[0], offset); -}") +}) ;; ------------------------------------------------------------------------- ;; Shifts and rotates @@ -3406,14 +3363,13 @@ label: (rotate:DI (match_operand:DI 1 "arith_reg_operand" "r") (match_operand:HI 2 "mextr_bit_offset" "i")))] "TARGET_SHMEDIA" - "* { static char templ[16]; - sprintf (templ, \"mextr%d\\t%%1,%%1,%%0\", + sprintf (templ, "mextr%d\\t%%1,%%1,%%0", 8 - (int) (INTVAL (operands[2]) >> 3)); return templ; -}" +} [(set_attr "type" "arith_media")]) (define_expand "rotrdi3" @@ -3421,20 +3377,22 @@ label: (rotatert:DI (match_operand:DI 1 "arith_reg_operand" "r") (match_operand:HI 2 "mextr_bit_offset" "i")))] "TARGET_SHMEDIA" - "if (! mextr_bit_offset (operands[2], HImode)) FAIL;") +{ + if (! mextr_bit_offset (operands[2], HImode)) + FAIL; +}) (define_insn "rotrdi3_mextr" [(set (match_operand:DI 0 "arith_reg_dest" "=r") (rotatert:DI (match_operand:DI 1 "arith_reg_operand" "r") (match_operand:HI 2 "mextr_bit_offset" "i")))] "TARGET_SHMEDIA" - "* { static char templ[16]; - sprintf (templ, \"mextr%d\\t%%1,%%1,%%0\", (int) INTVAL (operands[2]) >> 3); + sprintf (templ, "mextr%d\\t%%1,%%1,%%0", (int) INTVAL (operands[2]) >> 3); return templ; -}" +} [(set_attr "type" "arith_media")]) (define_split @@ -3446,13 +3404,12 @@ label: (clobber (match_operand:DI 3 "register_operand" ""))] "TARGET_SHMEDIA" [(match_dup 4) (match_dup 5)] - " { operands[4] = ((TARGET_LITTLE_ENDIAN ? gen_ldhi_q : gen_ldlo_q) (operands[3], operands[1])); operands[5] = gen_mextr_rl (operands[0], operands[3], operands[2], GEN_INT (56), GEN_INT (8)); -}") +}) (define_insn "rotlsi3_1" [(set (match_operand:SI 0 "arith_reg_dest" "=r") @@ -3486,7 +3443,6 @@ label: (rotate:SI (match_operand:SI 1 "arith_reg_operand" "") (match_operand:SI 2 "immediate_operand" "")))] "TARGET_SH1" - " { static const char rot_tab[] = { 000, 000, 000, 000, 000, 000, 010, 001, @@ -3535,7 +3491,7 @@ label: emit_insn (gen_rotlsi3_31 (operands[0], operands[0])); DONE; -}") +}) (define_insn "*rotlhi3_8" [(set (match_operand:HI 0 "arith_reg_dest" "=r") @@ -3550,11 +3506,10 @@ label: (rotate:HI (match_operand:HI 1 "arith_reg_operand" "") (match_operand:HI 2 "immediate_operand" "")))] "TARGET_SH1" - " { if (!CONST_INT_P (operands[2]) || INTVAL (operands[2]) != 8) FAIL; -}") +}) ;; ;; shift left @@ -3582,7 +3537,9 @@ label: (parallel [(set (match_dup 0) (ashift:SI (match_dup 1) (match_dup 3))) (clobber (match_dup 4))])] - "operands[4] = gen_rtx_SCRATCH (SImode);" +{ + operands[4] = gen_rtx_SCRATCH (SImode); +} [(set_attr "length" "*,*,*,4") (set_attr "type" "dyn_shift,arith,arith,arith")]) @@ -3620,11 +3577,10 @@ label: (clobber (reg:SI T_REG))] "TARGET_SH1 && reload_completed" [(use (reg:SI R0_REG))] - " { gen_shifty_op (ASHIFT, operands); DONE; -}") +}) (define_insn "ashlsi3_media" [(set (match_operand:SI 0 "arith_reg_dest" "=r,r") @@ -3643,7 +3599,6 @@ label: (match_operand:SI 2 "nonmemory_operand" ""))) (clobber (reg:SI T_REG))])] "" - " { if (TARGET_SHMEDIA) { @@ -3660,7 +3615,7 @@ label: } if (! immediate_operand (operands[2], GET_MODE (operands[2]))) FAIL; -}") +}) (define_insn "*ashlhi3_n" [(set (match_operand:HI 0 "arith_reg_dest" "=r") @@ -3683,7 +3638,6 @@ label: (match_operand:SI 2 "nonmemory_operand" ""))) (clobber (reg:SI T_REG))])] "TARGET_SH1" - " { if (!CONST_INT_P (operands[2])) FAIL; @@ -3691,7 +3645,7 @@ label: operands. Make sure operands[1] is a HImode register here. */ if (!arith_reg_operand (operands[1], HImode)) operands[1] = copy_to_mode_reg (HImode, operands[1]); -}") +}) (define_split [(set (match_operand:HI 0 "arith_reg_dest" "") @@ -3700,15 +3654,14 @@ label: (clobber (reg:SI T_REG))] "TARGET_SH1 && reload_completed" [(use (reg:SI R0_REG))] - " { gen_shifty_hi_op (ASHIFT, operands); DONE; -}") +}) -; -; arithmetic shift right -; +;; +;; arithmetic shift right +;; (define_insn "ashrsi3_k" [(set (match_operand:SI 0 "arith_reg_dest" "=r") @@ -3742,7 +3695,9 @@ label: "TARGET_SH1" [(set (match_dup 0) (rotate:SI (match_dup 1) (const_int 16))) (set (match_dup 0) (sign_extend:SI (match_dup 2)))] - "operands[2] = gen_lowpart (HImode, operands[0]);") +{ + operands[2] = gen_lowpart (HImode, operands[0]); +}) ;; ??? This should be a define expand. @@ -3762,12 +3717,11 @@ label: (clobber (reg:SI T_REG))] "TARGET_SH1" [(const_int 0)] - " { emit_insn (gen_ashlsi_c (operands[0], operands[1])); emit_insn (gen_mov_neg_si_t (copy_rtx (operands[0]))); DONE; -}") +}) (define_peephole2 [(set (match_operand:SI 0 "arith_reg_dest" "") (const_int 0)) @@ -3777,11 +3731,10 @@ label: && peep2_reg_dead_p (2, operands[0]) && peep2_reg_dead_p (2, operands[1])" [(const_int 0)] - " { emit_insn (gen_ashlsi_c (operands[1], operands[1])); DONE; -}") +}) (define_insn "ashlsi_c" [(set (match_operand:SI 0 "arith_reg_dest" "=r") @@ -3837,7 +3790,6 @@ label: (match_operand:SI 2 "nonmemory_operand" ""))) (clobber (reg:SI T_REG))])] "" - " { if (TARGET_SHMEDIA) { @@ -3848,7 +3800,7 @@ label: DONE; else FAIL; -}") +}) ;; logical shift right @@ -3904,11 +3856,10 @@ label: (clobber (reg:SI T_REG))] "TARGET_SH1 && reload_completed" [(use (reg:SI R0_REG))] - " { gen_shifty_op (LSHIFTRT, operands); DONE; -}") +}) (define_insn "lshrsi3_media" [(set (match_operand:SI 0 "arith_reg_dest" "=r,r") @@ -3927,7 +3878,6 @@ label: (match_operand:SI 2 "nonmemory_operand" ""))) (clobber (reg:SI T_REG))])] "" - " { if (TARGET_SHMEDIA) { @@ -3947,7 +3897,7 @@ label: } if (! immediate_operand (operands[2], GET_MODE (operands[2]))) FAIL; -}") +}) ;; ??? This should be a define expand. @@ -3968,7 +3918,6 @@ label: (ashift:DI (match_operand:DI 1 "arith_reg_operand" "r") (match_operand:DI 2 "const_int_operand" "n")))] "TARGET_SH1 && INTVAL (operands[2]) < 32" - " { int low_word = (TARGET_LITTLE_ENDIAN ? 0 : 1); int high_word = (TARGET_LITTLE_ENDIAN ? 1 : 0); @@ -3987,7 +3936,7 @@ label: emit_insn (gen_iorsi3 (high_dst, tmp0, tmp1)); emit_move_insn (operands[0], dst); DONE; -}") +}) (define_insn "ashldi3_media" [(set (match_operand:DI 0 "arith_reg_dest" "=r,r") @@ -4014,28 +3963,25 @@ label: (match_operand:DI 2 "immediate_operand" ""))) (clobber (reg:SI T_REG))])] "" - " { if (TARGET_SHMEDIA) { emit_insn (gen_ashldi3_media (operands[0], operands[1], operands[2])); DONE; } - if (CONST_INT_P (operands[2]) - && INTVAL (operands[2]) == 1) + if (CONST_INT_P (operands[2]) && INTVAL (operands[2]) == 1) { emit_insn (gen_ashldi3_k (operands[0], operands[1])); DONE; } - else if (CONST_INT_P (operands[2]) - && INTVAL (operands[2]) < 32) + else if (CONST_INT_P (operands[2]) && INTVAL (operands[2]) < 32) { emit_insn (gen_ashldi3_std (operands[0], operands[1], operands[2])); DONE; } else FAIL; -}") +}) ;; ??? This should be a define expand. @@ -4076,17 +4022,15 @@ label: (match_operand:DI 2 "immediate_operand" ""))) (clobber (reg:SI T_REG))])] "" - " { if (TARGET_SHMEDIA) { emit_insn (gen_lshrdi3_media (operands[0], operands[1], operands[2])); DONE; } - if (!CONST_INT_P (operands[2]) - || INTVAL (operands[2]) != 1) + if (!CONST_INT_P (operands[2]) || INTVAL (operands[2]) != 1) FAIL; -}") +}) ;; ??? This should be a define expand. @@ -4145,17 +4089,15 @@ label: (match_operand:DI 2 "immediate_operand" ""))) (clobber (reg:SI T_REG))])] "" - " { if (TARGET_SHMEDIA) { emit_insn (gen_ashrdi3_media (operands[0], operands[1], operands[2])); DONE; } - if (!CONST_INT_P (operands[2]) - || INTVAL (operands[2]) != 1) + if (!CONST_INT_P (operands[2]) || INTVAL (operands[2]) != 1) FAIL; -}") +}) ;; combined left/right shift @@ -4166,8 +4108,11 @@ label: (match_operand:SI 3 "const_int_operand" "")))] "TARGET_SH1 && reload_completed && (unsigned)INTVAL (operands[2]) < 32" [(use (reg:SI R0_REG))] - "if (gen_shl_and (operands[0], operands[2], operands[3], operands[1])) FAIL; - DONE;") +{ + if (gen_shl_and (operands[0], operands[2], operands[3], operands[1])) + FAIL; + DONE; +}) (define_split [(set (match_operand:SI 0 "register_operand" "") @@ -4177,8 +4122,11 @@ label: (clobber (reg:SI T_REG))] "TARGET_SH1 && reload_completed && (unsigned)INTVAL (operands[2]) < 32" [(use (reg:SI R0_REG))] - "if (gen_shl_and (operands[0], operands[2], operands[3], operands[1])) FAIL; - DONE;") +{ + if (gen_shl_and (operands[0], operands[2], operands[3], operands[1])) + FAIL; + DONE; +}) (define_insn "" [(set (match_operand:SI 0 "register_operand" "=r") @@ -4187,7 +4135,7 @@ label: (match_operand:SI 3 "const_int_operand" "n"))) (clobber (reg:SI T_REG))] "TARGET_SH1 && shl_and_kind (operands[2], operands[3], 0) == 1" - "#" + "#" [(set (attr "length") (cond [(eq (symbol_ref "shl_and_length (insn)") (const_int 2)) (const_string "4") @@ -4213,7 +4161,7 @@ label: (match_operand:SI 3 "const_int_operand" "n"))) (clobber (reg:SI T_REG))] "TARGET_SH1 && shl_and_kind (operands[2], operands[3], 0) == 2" - "#" + "#" [(set (attr "length") (cond [(eq (symbol_ref "shl_and_length (insn)") (const_int 2)) (const_string "4") @@ -4266,7 +4214,6 @@ label: (clobber (reg:SI T_REG))] "TARGET_SH1" [(use (reg:SI R0_REG))] - " { rtx and_source = operands[rtx_equal_p (operands[0], operands[1]) ? 3 : 1]; @@ -4283,7 +4230,7 @@ label: gen_shifty_op (LSHIFTRT, operands); } DONE; -}") +}) ;; signed left/right shift combination. (define_split @@ -4296,8 +4243,11 @@ label: (clobber (reg:SI T_REG))] "TARGET_SH1" [(use (reg:SI R0_REG))] - "if (gen_shl_sext (operands[0], operands[2], operands[3], operands[1])) FAIL; - DONE;") +{ + if (gen_shl_sext (operands[0], operands[2], operands[3], operands[1])) + FAIL; + DONE; +}) (define_insn "shl_sext_ext" [(set (match_operand:SI 0 "register_operand" "=r") @@ -4422,7 +4372,6 @@ label: "#" "TARGET_SH1" [(const_int 0)] - " { int low_word = (TARGET_LITTLE_ENDIAN ? 0 : 1); int high_word = (TARGET_LITTLE_ENDIAN ? 1 : 0); @@ -4437,7 +4386,7 @@ label: emit_insn (gen_negc (low_dst, low_src)); emit_insn (gen_negc (high_dst, high_src)); DONE; -}") +}) (define_insn "negsi2" [(set (match_operand:SI 0 "arith_reg_dest" "=r") @@ -4473,13 +4422,12 @@ label: "#" "TARGET_SH1" [(const_int 0)] - " { emit_insn (gen_cmpgesi_t (operands[1], const0_rtx)); emit_insn (gen_negsi_cond (operands[0], operands[1], operands[1], const1_rtx)); DONE; -}") +}) (define_insn_and_split "*negabssi2" [(set (match_operand:SI 0 "arith_reg_dest" "=r") @@ -4488,13 +4436,12 @@ label: "#" "TARGET_SH1" [(const_int 0)] - " { emit_insn (gen_cmpgesi_t (operands[1], const0_rtx)); emit_insn (gen_negsi_cond (operands[0], operands[1], operands[1], const0_rtx)); DONE; -}") +}) ;; The SH4 202 can do zero-offset branches without pipeline stalls. ;; This can be used as some kind of conditional execution, which is useful @@ -4515,7 +4462,6 @@ label: bf\\t0f\;neg\\t%2,%0\\n0:" "!TARGET_HARD_SH4" [(const_int 0)] - " { rtx skip_neg_label = gen_label_rtx (); @@ -4528,7 +4474,7 @@ label: emit_label_after (skip_neg_label, emit_insn (gen_negsi2 (operands[0], operands[1]))); DONE; -}" +} [(set_attr "type" "arith") ;; poor approximation (set_attr "length" "4")]) @@ -4640,11 +4586,10 @@ label: "TARGET_SHMEDIA && reload_completed" [(set (match_dup 0) (ashift:DI (subreg:DI (match_dup 1) 0) (const_int 48))) (set (match_dup 0) (lshiftrt:DI (match_dup 0) (const_int 48)))] - " { if (GET_CODE (operands[1]) == TRUNCATE) operands[1] = XEXP (operands[1], 0); -}") +}) ;; ??? when a truncated input to a zero_extend is reloaded, reload will ;; reload the entire truncate expression. @@ -4655,7 +4600,9 @@ label: "#" "TARGET_SHMEDIA && reload_completed" [(set (match_dup 0) (match_dup 1))] - "operands[0] = gen_rtx_REG (DImode, true_regnum (operands[0]));") +{ + operands[0] = gen_rtx_REG (DImode, true_regnum (operands[0])); +}) (define_insn "zero_extendqidi2" [(set (match_operand:DI 0 "register_operand" "=r,r") @@ -4674,11 +4621,10 @@ label: [(set (match_operand:SI 0 "arith_reg_operand" "") (zero_extend:SI (match_operand:HI 1 "general_extend_operand" "")))] "" - " { if (! TARGET_SHMEDIA && ! arith_reg_operand (operands[1], HImode)) operands[1] = copy_to_mode_reg (HImode, operands[1]); -}") +}) (define_insn "*zero_extendhisi2_compact" [(set (match_operand:SI 0 "arith_reg_dest" "=r") @@ -4706,7 +4652,6 @@ label: "TARGET_SHMEDIA && reload_completed" [(set (match_dup 0) (ashift:SI (match_dup 2) (const_int 16))) (set (match_dup 0) (lshiftrt:SI (match_dup 0) (const_int 16)))] - " { rtx op1 = operands[1]; @@ -4715,17 +4660,16 @@ label: operands[2] = simplify_gen_subreg (SImode, op1, GET_MODE (op1), subreg_lowpart_offset (SImode, GET_MODE (op1))); -}") +}) (define_expand "zero_extendqisi2" [(set (match_operand:SI 0 "arith_reg_operand" "") (zero_extend:SI (match_operand:QI 1 "general_extend_operand" "")))] "" - " { if (! TARGET_SHMEDIA && ! arith_reg_operand (operands[1], QImode)) operands[1] = copy_to_mode_reg (QImode, operands[1]); -}") +}) (define_insn "*zero_extendqisi2_compact" [(set (match_operand:SI 0 "arith_reg_dest" "=r") @@ -4795,11 +4739,10 @@ label: "TARGET_SHMEDIA && reload_completed" [(set (match_dup 0) (ashift:DI (subreg:DI (match_dup 1) 0) (const_int 48))) (set (match_dup 0) (ashiftrt:DI (match_dup 0) (const_int 48)))] - " { if (GET_CODE (operands[1]) == TRUNCATE) operands[1] = XEXP (operands[1], 0); -}") +}) (define_insn "extendqidi2" [(set (match_operand:DI 0 "register_operand" "=r,r") @@ -4820,11 +4763,10 @@ label: "TARGET_SHMEDIA && reload_completed" [(set (match_dup 0) (ashift:DI (subreg:DI (match_dup 1) 0) (const_int 56))) (set (match_dup 0) (ashiftrt:DI (match_dup 0) (const_int 56)))] - " { if (GET_CODE (operands[1]) == TRUNCATE) operands[1] = XEXP (operands[1], 0); -}") +}) (define_expand "extendhisi2" [(set (match_operand:SI 0 "arith_reg_dest" "=r,r") @@ -4860,7 +4802,6 @@ label: "TARGET_SHMEDIA && reload_completed" [(set (match_dup 0) (ashift:SI (match_dup 2) (const_int 16))) (set (match_dup 0) (ashiftrt:SI (match_dup 0) (const_int 16)))] - " { rtx op1 = operands[1]; if (GET_CODE (op1) == TRUNCATE) @@ -4868,7 +4809,7 @@ label: operands[2] = simplify_gen_subreg (SImode, op1, GET_MODE (op1), subreg_lowpart_offset (SImode, GET_MODE (op1))); -}") +}) (define_expand "extendqisi2" [(set (match_operand:SI 0 "arith_reg_dest" "") @@ -4941,7 +4882,6 @@ label: "TARGET_SHMEDIA && reload_completed" [(set (match_dup 0) (ashift:SI (match_dup 2) (const_int 24))) (set (match_dup 0) (ashiftrt:SI (match_dup 0) (const_int 24)))] - " { rtx op1 = operands[1]; if (GET_CODE (op1) == TRUNCATE) @@ -4949,7 +4889,7 @@ label: operands[2] = simplify_gen_subreg (SImode, op1, GET_MODE (op1), subreg_lowpart_offset (SImode, GET_MODE (op1))); -}") +}) (define_expand "extendqihi2" [(set (match_operand:HI 0 "arith_reg_dest" "") @@ -4964,9 +4904,9 @@ label: "exts.b %1,%0" [(set_attr "type" "arith")]) -/* It would seem useful to combine the truncXi patterns into the movXi - patterns, but unary operators are ignored when matching constraints, - so we need separate patterns. */ +;; It would seem useful to combine the truncXi patterns into the movXi +;; patterns, but unary operators are ignored when matching constraints, +;; so we need separate patterns. (define_insn "truncdisi2" [(set (match_operand:SI 0 "general_movdst_operand" "=r,m,m,f,r,f") (truncate:SI (match_operand:DI 1 "register_operand" "r,r,f,r,f,f")))] @@ -5085,7 +5025,6 @@ label: (define_expand "push_fpscr" [(const_int 0)] "TARGET_SH2E" - " { rtx insn = emit_insn (gen_fpu_switch (gen_frame_mem (PSImode, gen_rtx_PRE_DEC (Pmode, @@ -5093,12 +5032,11 @@ label: get_fpscr_rtx ())); add_reg_note (insn, REG_INC, stack_pointer_rtx); DONE; -}") +}) (define_expand "pop_fpscr" [(const_int 0)] "TARGET_SH2E" - " { rtx insn = emit_insn (gen_fpu_switch (get_fpscr_rtx (), gen_frame_mem (PSImode, @@ -5106,7 +5044,7 @@ label: stack_pointer_rtx)))); add_reg_note (insn, REG_INC, stack_pointer_rtx); DONE; -}") +}) ;; These two patterns can happen as the result of optimization, when ;; comparisons get simplified to a move of zero or 1 into the T reg. @@ -5270,11 +5208,10 @@ label: "#" "&& ! currently_expanding_to_rtl" [(set (match_dup 0) (match_dup 1))] - " { if (TARGET_SHCOMPACT && crtl->saves_all_registers) operands[1] = gen_frame_mem (SImode, return_address_pointer_rtx); -}") +}) ;; The '?'s in the following constraints may not reflect the time taken ;; to perform the move. They are there to discourage the use of floating- @@ -5344,7 +5281,6 @@ label: (const_int 0)] UNSPEC_EXTRACT_U16))))] "TARGET_SHMEDIA && reload_completed && MOVI_SHORI_BASE_OPERAND_P (operands[1])" - " { if (GET_CODE (operands[1]) == LABEL_REF && GET_CODE (XEXP (operands[1], 0)) == CODE_LABEL) @@ -5363,7 +5299,7 @@ label: && (GET_CODE (XEXP (XVECEXP (unspec, 0, 0), 0)) == CODE_LABEL)) LABEL_NUSES (XEXP (XVECEXP (unspec, 0, 0), 0)) += 2; } -}") +}) (define_expand "movsi_const_16bit" [(set (match_operand:SI 0 "arith_reg_operand" "=r") @@ -5379,14 +5315,13 @@ label: "TARGET_SHMEDIA && reload_completed && MOVI_SHORI_BASE_OPERAND_P (operands[1])" [(const_int 0)] - " { rtx insn = emit_insn (gen_movsi_const (operands[0], operands[1])); set_unique_reg_note (insn, REG_EQUAL, copy_rtx (operands[1])); DONE; -}") +}) (define_split [(set (match_operand:SI 0 "register_operand" "") @@ -5401,14 +5336,16 @@ label: [(set (match_operand:SI 0 "general_movdst_operand" "") (match_operand:SI 1 "general_movsrc_operand" ""))] "" - "{ if (prepare_move_operands (operands, SImode)) DONE; }") +{ + if (prepare_move_operands (operands, SImode)) + DONE; +}) (define_expand "ic_invalidate_line" [(parallel [(unspec_volatile [(match_operand:SI 0 "register_operand" "+r") (match_dup 1)] UNSPEC_ICACHE) (clobber (scratch:SI))])] "TARGET_HARD_SH4 || TARGET_SH5" - " { if (TARGET_SHMEDIA) { @@ -5417,7 +5354,7 @@ label: } else if (TARGET_SHCOMPACT) { - operands[1] = function_symbol (NULL, \"__ic_invalidate\", SFUNC_STATIC); + operands[1] = function_symbol (NULL, "__ic_invalidate", SFUNC_STATIC); operands[1] = force_reg (Pmode, operands[1]); emit_insn (gen_ic_invalidate_line_compact (operands[0], operands[1])); DONE; @@ -5430,7 +5367,7 @@ label: operands[0] = force_reg (Pmode, operands[0]); operands[1] = force_reg (Pmode, GEN_INT (trunc_int_for_mode (0xf0000008, Pmode))); -}") +}) ;; The address %0 is assumed to be 4-aligned at least. Thus, by ORing ;; 0xf0000008, we get the low-oder bits *1*00 (binary), which fits @@ -5480,19 +5417,18 @@ label: (match_operand:SI 1 "" "") (match_operand:SI 2 "" "")] "TARGET_SHCOMPACT" - " { rtx sfun, tramp; tramp = force_reg (Pmode, operands[0]); - sfun = force_reg (Pmode, function_symbol (NULL, \"__init_trampoline\", + sfun = force_reg (Pmode, function_symbol (NULL, "__init_trampoline", SFUNC_STATIC)); emit_move_insn (gen_rtx_REG (SImode, R2_REG), operands[1]); emit_move_insn (gen_rtx_REG (SImode, R3_REG), operands[2]); emit_insn (gen_initialize_trampoline_compact (tramp, sfun)); DONE; -}") +}) (define_insn "initialize_trampoline_compact" [(unspec_volatile [(match_operand:SI 0 "register_operand" "z") @@ -5510,7 +5446,10 @@ label: [(set (match_operand:QI 0 "general_operand" "") (match_operand:QI 1 "general_operand" ""))] "" - "{ if (prepare_move_operands (operands, QImode)) DONE; }") +{ + if (prepare_move_operands (operands, QImode)) + DONE; +}) ;; If movqi_reg_reg is specified as an alternative of movqi, movqi will be ;; selected to copy QImode regs. If one of them happens to be allocated @@ -5614,7 +5553,6 @@ label: (set (match_operand:QI 0 "arith_reg_operand" "=r") (truncate:QI (match_dup 3)))] "TARGET_SHMEDIA" - " { rtx inner = XEXP (operands[1], 0); int regno = REGNO (inner); @@ -5622,7 +5560,7 @@ label: regno += HARD_REGNO_NREGS (regno, GET_MODE (inner)) - 1; operands[1] = gen_rtx_REG (SImode, regno); operands[3] = gen_rtx_REG (DImode, REGNO (operands[2])); -}") +}) ;; When storing r0, we have to avoid reg+reg addressing. (define_insn "movhi_i" @@ -5675,7 +5613,10 @@ label: [(set (match_operand:HI 0 "general_movdst_operand" "") (match_operand:HI 1 "general_movsrc_operand" ""))] "" - "{ if (prepare_move_operands (operands, HImode)) DONE; }") +{ + if (prepare_move_operands (operands, HImode)) + DONE; +}) (define_expand "reload_inhi" [(set (match_operand:SI 2 "" "=&r") @@ -5683,7 +5624,6 @@ label: (set (match_operand:HI 0 "arith_reg_operand" "=r") (truncate:HI (match_dup 3)))] "TARGET_SHMEDIA" - " { rtx inner = XEXP (operands[1], 0); int regno = REGNO (inner); @@ -5691,7 +5631,7 @@ label: regno += HARD_REGNO_NREGS (regno, GET_MODE (inner)) - 1; operands[1] = gen_rtx_REG (SImode, regno); operands[3] = gen_rtx_REG (DImode, REGNO (operands[2])); -}") +}) ;; x/r can be created by inlining/cse, e.g. for execute/961213-1.c ;; compiled with -m2 -ml -O3 -funroll-loops @@ -5714,7 +5654,6 @@ label: "TARGET_SH1 && reload_completed" [(set (match_dup 2) (match_dup 3)) (set (match_dup 4) (match_dup 5))] - " { int regno; @@ -5758,7 +5697,7 @@ label: if (operands[2] == 0 || operands[3] == 0 || operands[4] == 0 || operands[5] == 0) FAIL; -}") +}) ;; The '?'s in the following constraints may not reflect the time taken ;; to perform the move. They are there to discourage the use of floating- @@ -5820,7 +5759,6 @@ label: "TARGET_SHMEDIA && reload_completed && MOVI_SHORI_BASE_OPERAND_P (operands[1])" [(set (match_dup 0) (match_dup 1))] - " { rtx insn; @@ -5832,7 +5770,7 @@ label: set_unique_reg_note (insn, REG_EQUAL, copy_rtx (operands[1])); DONE; -}") +}) (define_expand "movdi_const" [(set (match_operand:DI 0 "arith_reg_operand" "=r") @@ -5852,10 +5790,9 @@ label: (const_int 0)] UNSPEC_EXTRACT_U16))))] "TARGET_SHMEDIA64 && reload_completed && MOVI_SHORI_BASE_OPERAND_P (operands[1])" - " { sh_mark_label (operands[1], 4); -}") +}) (define_expand "movdi_const_32bit" [(set (match_operand:DI 0 "arith_reg_operand" "=r") @@ -5867,10 +5804,9 @@ label: (const_int 0)] UNSPEC_EXTRACT_U16))))] "TARGET_SHMEDIA32 && reload_completed && MOVI_SHORI_BASE_OPERAND_P (operands[1])" - " { sh_mark_label (operands[1], 2); -}") +}) (define_expand "movdi_const_16bit" [(set (match_operand:DI 0 "arith_reg_operand" "=r") @@ -5888,7 +5824,6 @@ label: && ! satisfies_constraint_I16 (operands[1])" [(set (match_dup 0) (match_dup 2)) (match_dup 1)] - " { unsigned HOST_WIDE_INT val = INTVAL (operands[1]); unsigned HOST_WIDE_INT low = val; @@ -5985,7 +5920,7 @@ label: } while (0); operands[2] = GEN_INT (val2); -}") +}) (define_split [(set (match_operand:DI 0 "ext_dest_operand" "") @@ -5995,7 +5930,6 @@ label: [(set (match_dup 0) (match_dup 2)) (set (match_dup 0) (ior:DI (ashift:DI (match_dup 0) (const_int 16)) (match_dup 1)))] - " { unsigned HOST_WIDE_INT low = CONST_DOUBLE_LOW (operands[1]); unsigned HOST_WIDE_INT high = CONST_DOUBLE_HIGH (operands[1]); @@ -6022,7 +5956,7 @@ label: operands[2] = GEN_INT (low); else operands[2] = immed_double_const (low, high, DImode); -}") +}) (define_insn "shori_media" [(set (match_operand:DI 0 "ext_dest_operand" "=r,r") @@ -6047,7 +5981,10 @@ label: [(set (match_operand:DI 0 "general_movdst_operand" "") (match_operand:DI 1 "general_movsrc_operand" ""))] "" - "{ if (prepare_move_operands (operands, DImode)) DONE; }") +{ + if (prepare_move_operands (operands, DImode)) + DONE; +}) (define_insn "movdf_media" [(set (match_operand:DF 0 "general_movdst_operand" "=f,f,r,r,r,f,m,r,m") @@ -6085,7 +6022,6 @@ label: (match_operand:DF 1 "immediate_operand" ""))] "TARGET_SHMEDIA && reload_completed" [(set (match_dup 3) (match_dup 2))] - " { int endian = WORDS_BIG_ENDIAN ? 1 : 0; long values[2]; @@ -6106,7 +6042,7 @@ label: } operands[3] = gen_rtx_REG (DImode, true_regnum (operands[0])); -}") +}) ;; ??? This should be a define expand. @@ -6120,7 +6056,9 @@ label: || (REG_P (operands[1]) && REGNO (operands[1]) == 3)) && (arith_reg_operand (operands[0], DFmode) || arith_reg_operand (operands[1], DFmode))" - "* return output_movedouble (insn, operands, DFmode);" +{ + return output_movedouble (insn, operands, DFmode); +} [(set_attr "length" "4") (set_attr "type" "move,pcload,load,store")]) @@ -6192,7 +6130,6 @@ label: "(TARGET_SH4 || TARGET_SH2A_DOUBLE) && reload_completed && (true_regnum (operands[0]) < 16) != (true_regnum (operands[1]) < 16)" [(const_int 0)] - " { rtx insn, tos; @@ -6219,7 +6156,7 @@ label: else add_reg_note (insn, REG_INC, stack_pointer_rtx); DONE; -}") +}) ;; local-alloc sometimes allocates scratch registers even when not required, ;; so we must be prepared to handle these. @@ -6235,7 +6172,6 @@ label: && true_regnum (operands[0]) < 16 && true_regnum (operands[1]) < 16" [(set (match_dup 0) (match_dup 1))] - " { /* If this was a reg <-> mem operation with base + index reg addressing, we have to handle this in a special way. */ @@ -6295,7 +6231,7 @@ label: DONE; } } -}") +}) ;; Split away the clobber of r0 after machine_dependent_reorg has fixed pcloads. (define_split @@ -6345,7 +6281,6 @@ label: && FP_OR_XD_REGISTER_P (true_regnum (operands[0])) && FP_OR_XD_REGISTER_P (true_regnum (operands[1]))" [(const_int 0)] - " { int dst = true_regnum (operands[0]), src = true_regnum (operands[1]); emit_insn (gen_movsf_ie (gen_rtx_REG (SFmode, dst), @@ -6353,7 +6288,7 @@ label: emit_insn (gen_movsf_ie (gen_rtx_REG (SFmode, dst + 1), gen_rtx_REG (SFmode, src + 1), operands[2])); DONE; -}") +}) (define_split [(set (match_operand:DF 0 "register_operand" "") @@ -6364,7 +6299,6 @@ label: && FP_OR_XD_REGISTER_P (true_regnum (operands[0])) && find_regno_note (insn, REG_DEAD, true_regnum (operands[1]))" [(const_int 0)] - " { int regno = true_regnum (operands[0]); rtx insn; @@ -6380,7 +6314,7 @@ label: change_address (mem, SFmode, NULL_RTX), operands[2])); DONE; -}") +}) (define_split [(set (match_operand:DF 0 "register_operand" "") @@ -6530,7 +6464,6 @@ label: "TARGET_SH1 && reload_completed" [(set (match_dup 2) (match_dup 3)) (set (match_dup 4) (match_dup 5))] - " { int regno; @@ -6574,7 +6507,7 @@ label: if (operands[2] == 0 || operands[3] == 0 || operands[4] == 0 || operands[5] == 0) FAIL; -}") +}) ;; If a base address generated by LEGITIMIZE_ADDRESS for SImode is ;; used only once, let combine add in the index again. @@ -6586,7 +6519,6 @@ label: "TARGET_SH1 && ! reload_in_progress && ! reload_completed && ALLOW_INDEXED_ADDRESS" [(use (reg:SI R0_REG))] - " { rtx addr, reg, const_int; @@ -6605,7 +6537,7 @@ label: change_address (operands[1], VOIDmode, gen_rtx_PLUS (SImode, reg, operands[2]))); DONE; -}") +}) (define_split [(set (match_operand:SI 1 "" "") @@ -6614,7 +6546,6 @@ label: "TARGET_SH1 && ! reload_in_progress && ! reload_completed && ALLOW_INDEXED_ADDRESS" [(use (reg:SI R0_REG))] - " { rtx addr, reg, const_int; @@ -6633,15 +6564,15 @@ label: gen_rtx_PLUS (SImode, reg, operands[2])), operands[0]); DONE; -}") +}) (define_expand "movdf" [(set (match_operand:DF 0 "general_movdst_operand" "") (match_operand:DF 1 "general_movsrc_operand" ""))] "" - " { - if (prepare_move_operands (operands, DFmode)) DONE; + if (prepare_move_operands (operands, DFmode)) + DONE; if (TARGET_SHMEDIA) { if (TARGET_SHMEDIA_FPU) @@ -6655,7 +6586,7 @@ label: emit_df_insn (gen_movdf_i4 (operands[0], operands[1], get_fpscr_rtx ())); DONE; } -}") +}) ;;This is incompatible with the way gcc uses subregs. ;;(define_insn "movv2sf_i" @@ -6677,65 +6608,59 @@ label: "#" "TARGET_SHMEDIA_FPU && reload_completed" [(set (match_dup 0) (match_dup 1))] - " { operands[0] = simplify_gen_subreg (DFmode, operands[0], V2SFmode, 0); operands[1] = simplify_gen_subreg (DFmode, operands[1], V2SFmode, 0); -}") +}) (define_expand "movv2sf" [(set (match_operand:V2SF 0 "general_movdst_operand" "") (match_operand:V2SF 1 "nonimmediate_operand" ""))] "TARGET_SHMEDIA_FPU" - " { if (prepare_move_operands (operands, V2SFmode)) DONE; -}") +}) (define_expand "addv2sf3" [(match_operand:V2SF 0 "fp_arith_reg_operand" "") (match_operand:V2SF 1 "fp_arith_reg_operand" "") (match_operand:V2SF 2 "fp_arith_reg_operand" "")] "TARGET_SHMEDIA_FPU" - " { sh_expand_binop_v2sf (PLUS, operands[0], operands[1], operands[2]); DONE; -}") +}) (define_expand "subv2sf3" [(match_operand:V2SF 0 "fp_arith_reg_operand" "") (match_operand:V2SF 1 "fp_arith_reg_operand" "") (match_operand:V2SF 2 "fp_arith_reg_operand" "")] "TARGET_SHMEDIA_FPU" - " { sh_expand_binop_v2sf (MINUS, operands[0], operands[1], operands[2]); DONE; -}") +}) (define_expand "mulv2sf3" [(match_operand:V2SF 0 "fp_arith_reg_operand" "") (match_operand:V2SF 1 "fp_arith_reg_operand" "") (match_operand:V2SF 2 "fp_arith_reg_operand" "")] "TARGET_SHMEDIA_FPU" - " { sh_expand_binop_v2sf (MULT, operands[0], operands[1], operands[2]); DONE; -}") +}) (define_expand "divv2sf3" [(match_operand:V2SF 0 "fp_arith_reg_operand" "") (match_operand:V2SF 1 "fp_arith_reg_operand" "") (match_operand:V2SF 2 "fp_arith_reg_operand" "")] "TARGET_SHMEDIA_FPU" - " { sh_expand_binop_v2sf (DIV, operands[0], operands[1], operands[2]); DONE; -}") +}) (define_insn_and_split "*movv4sf_i" [(set (match_operand:V4SF 0 "general_movdst_operand" "=f,rf,r,m,mf") @@ -6744,7 +6669,6 @@ label: "#" "&& reload_completed" [(const_int 0)] - " { int i; @@ -6768,18 +6692,17 @@ label: } DONE; -}" +} [(set_attr "length" "8")]) (define_expand "movv4sf" [(set (match_operand:V4SF 0 "nonimmediate_operand" "") (match_operand:V4SF 1 "general_operand" ""))] "TARGET_SHMEDIA_FPU" - " { if (prepare_move_operands (operands, V4SFmode)) DONE; -}") +}) (define_insn_and_split "*movv16sf_i" [(set (match_operand:V16SF 0 "nonimmediate_operand" "=f,f,m") @@ -6788,7 +6711,6 @@ label: "#" "&& reload_completed" [(const_int 0)] - " { int i; @@ -6818,18 +6740,17 @@ label: } DONE; -}" +} [(set_attr "length" "32")]) (define_expand "movv16sf" [(set (match_operand:V16SF 0 "nonimmediate_operand" "=f,f,m") (match_operand:V16SF 1 "nonimmediate_operand" "f,m,f"))] "TARGET_SHMEDIA_FPU" - " { if (prepare_move_operands (operands, V16SFmode)) DONE; -}") +}) (define_insn "movsf_media" [(set (match_operand:SF 0 "general_movdst_operand" "=f,f,r,r,r,f,m,r,m") @@ -6876,7 +6797,6 @@ label: "TARGET_SHMEDIA && reload_completed && ! FP_REGISTER_P (true_regnum (operands[0]))" [(set (match_dup 3) (match_dup 2))] - " { long values; REAL_VALUE_TYPE value; @@ -6886,7 +6806,7 @@ label: operands[2] = GEN_INT (values); operands[3] = gen_rtx_REG (DImode, true_regnum (operands[0])); -}") +}) (define_insn "movsf_i" [(set (match_operand:SF 0 "general_movdst_operand" "=r,r,r,r,m,l,r") @@ -6918,7 +6838,6 @@ label: "f,r,G,H,FQ,mf,f,FQ,mr,r,y,f,>,fr,y,r,y,>,y")) (use (match_operand:PSI 2 "fpscr_operand" "c,c,c,c,c,c,c,c,c,c,c,c,c,c,c,c,c,c,c")) (clobber (match_scratch:SI 3 "=X,X,Bsc,Bsc,&z,X,X,X,X,X,X,X,X,y,X,X,X,X,X"))] - "TARGET_SH2E && (arith_reg_operand (operands[0], SFmode) || arith_reg_operand (operands[1], SFmode) @@ -7001,7 +6920,6 @@ label: [(set (match_operand:SF 0 "general_movdst_operand" "") (match_operand:SF 1 "general_movsrc_operand" ""))] "" - " { if (prepare_move_operands (operands, SFmode)) DONE; @@ -7018,7 +6936,7 @@ label: emit_sf_insn (gen_movsf_ie (operands[0], operands[1], get_fpscr_rtx ())); DONE; } -}") +}) (define_insn "mov_nop" [(set (match_operand 0 "any_register_operand" "") (match_dup 0))] @@ -7045,7 +6963,6 @@ label: (define_expand "ptabs" [(set (match_operand 0 "" "=b") (match_operand 1 "" "r"))] "TARGET_SHMEDIA" - " { if (!TARGET_PT_FIXED) { @@ -7067,7 +6984,7 @@ label: gen_rtx_fmt_e (TARGET_SHMEDIA32 ? SIGN_EXTEND : TRUNCATE, PDImode, operands[1]))); } -}") +}) ;; expanded by ptabs expander. (define_insn "*extendsipdi_media" @@ -7128,7 +7045,9 @@ label: (label_ref (match_operand 0 "" "")) (pc)))] "TARGET_SH1" - "* return output_branch (1, insn, operands);" +{ + return output_branch (1, insn, operands); +} [(set_attr "type" "cbranch")]) (define_insn "branch_false" @@ -7136,7 +7055,9 @@ label: (label_ref (match_operand 0 "" "")) (pc)))] "TARGET_SH1" - "* return output_branch (0, insn, operands);" +{ + return output_branch (0, insn, operands); +} [(set_attr "type" "cbranch")]) ;; Patterns to prevent reorg from re-combining a condbranch with a branch @@ -7185,7 +7106,6 @@ label: (match_operand 3 "" "") (pc)))] "TARGET_SHMEDIA" - " { enum machine_mode mode = GET_MODE (operands[1]); if (mode == VOIDmode) @@ -7221,7 +7141,7 @@ label: break; } operands[3] = gen_rtx_LABEL_REF (Pmode, operands[3]); -}") +}) (define_expand "cbranchfp4_media" [(set (pc) @@ -7231,7 +7151,6 @@ label: (match_operand 3 "" "") (pc)))] "TARGET_SHMEDIA" - " { rtx tmp = gen_reg_rtx (SImode); rtx cmp; @@ -7250,7 +7169,7 @@ label: operands[1] = tmp; operands[2] = const0_rtx; operands[3] = gen_rtx_LABEL_REF (Pmode, operands[3]); -}") +}) (define_insn "*beq_media_i" [(set (pc) @@ -7344,14 +7263,12 @@ label: "TARGET_SHMEDIA && TARGET_LITTLE_ENDIAN" [(set (match_dup 4) (ashift:SI (match_dup 1) (match_dup 5))) (set (pc) (if_then_else (match_dup 6) (match_dup 0) (pc)))] - - " { operands[5] = GEN_INT (31 - INTVAL (operands[2])); operands[6] = (GET_CODE (operands[3]) == EQ ? gen_rtx_GE (VOIDmode, operands[4], const0_rtx) : gen_rtx_GT (VOIDmode, const0_rtx, operands[4])); -}") +}) ; operand 0 is the loop count pseudo register ; operand 1 is the number of loop iterations or 0 if it is unknown @@ -7369,12 +7286,10 @@ label: (plus:SI (match_dup 0) (const_int -1))) (clobber (reg:SI T_REG))])] "TARGET_SH2" - " { if (GET_MODE (operands[0]) != SImode) FAIL; -} -") +}) (define_insn_and_split "doloop_end_split" [(set (pc) @@ -7394,7 +7309,7 @@ label: (set (pc) (if_then_else (eq (reg:SI T_REG) (const_int 0)) (label_ref (match_dup 1)) (pc)))] -"" + "" [(set_attr "type" "cbranch")]) @@ -7406,14 +7321,13 @@ label: [(set (pc) (label_ref (match_operand 0 "" "")))] "TARGET_SH1 && !find_reg_note (insn, REG_CROSSING_JUMP, NULL_RTX)" - "* { /* The length is 16 if the delay slot is unfilled. */ if (get_attr_length(insn) > 4) return output_far_jump(insn, operands[0]); else - return \"bra %l0%#\"; -}" + return "bra %l0%#"; +} [(set_attr "type" "jump") (set_attr "needs_delay_slot" "yes")]) @@ -7441,7 +7355,6 @@ label: [(set (pc) (label_ref (match_operand 0 "" "")))] "" - " { if (TARGET_SH1) emit_jump_insn (gen_jump_compact (operands[0])); @@ -7453,7 +7366,7 @@ label: operands[0]))); } DONE; -}") +}) (define_insn "force_mode_for_call" [(use (reg:PSI FPSCR_REG))] @@ -7470,14 +7383,12 @@ label: (use (reg:PSI FPSCR_REG)) (clobber (reg:SI PR_REG))] "TARGET_SH1" - "* - { - if (TARGET_SH2A && (dbr_sequence_length () == 0)) - return \"jsr/n\\t@%0\"; - else - return \"jsr\\t@%0%#\"; - }" - +{ + if (TARGET_SH2A && (dbr_sequence_length () == 0)) + return "jsr/n\\t@%0"; + else + return "jsr\\t@%0%#"; +} [(set_attr "type" "call") (set (attr "fp_mode") (if_then_else (eq_attr "fpu_single" "yes") @@ -7495,14 +7406,13 @@ label: (use (reg:PSI FPSCR_REG)) (clobber (reg:SI PR_REG))] "TARGET_SH2A && sh2a_is_function_vector_call (operands[0])" - "* { unsigned HOST_WIDE_INT vect_num; vect_num = sh2a_get_function_vector_number (operands[0]); operands[2] = GEN_INT (vect_num * 4); - return \"jsr/n\\t@@(%O2,tbr)\"; -}" + return "jsr/n\\t@@(%O2,tbr)"; +} [(set_attr "type" "call") (set (attr "fp_mode") (if_then_else (eq_attr "fpu_single" "yes") @@ -7539,7 +7449,6 @@ label: "#" "reload_completed" [(const_int 0)] - " { rtx lab = PATTERN (gen_call_site ()); @@ -7549,7 +7458,7 @@ label: emit_insn (gen_symPLT_label2reg (operands[2], operands[0], lab)); emit_call_insn (gen_calli_pcrel (operands[2], operands[1], copy_rtx (lab))); DONE; -}" +} [(set_attr "type" "call") (set (attr "fp_mode") (if_then_else (eq_attr "fpu_single" "yes") @@ -7605,13 +7514,12 @@ label: (use (reg:PSI FPSCR_REG)) (clobber (reg:SI PR_REG))] "TARGET_SH1" - "* - { - if (TARGET_SH2A && (dbr_sequence_length () == 0)) - return \"jsr/n\\t@%1\"; - else - return \"jsr\\t@%1%#\"; - }" +{ + if (TARGET_SH2A && (dbr_sequence_length () == 0)) + return "jsr/n\\t@%1"; + else + return "jsr\\t@%1%#"; +} [(set_attr "type" "call") (set (attr "fp_mode") (if_then_else (eq_attr "fpu_single" "yes") @@ -7630,14 +7538,13 @@ label: (use (reg:PSI FPSCR_REG)) (clobber (reg:SI PR_REG))] "TARGET_SH2A && sh2a_is_function_vector_call (operands[1])" - "* { unsigned HOST_WIDE_INT vect_num; vect_num = sh2a_get_function_vector_number (operands[1]); operands[3] = GEN_INT (vect_num * 4); - return \"jsr/n\\t@@(%O3,tbr)\"; -}" + return "jsr/n\\t@@(%O3,tbr)"; +} [(set_attr "type" "call") (set (attr "fp_mode") (if_then_else (eq_attr "fpu_single" "yes") @@ -7674,7 +7581,6 @@ label: "#" "reload_completed" [(const_int 0)] - " { rtx lab = PATTERN (gen_call_site ()); @@ -7685,7 +7591,7 @@ label: emit_call_insn (gen_call_valuei_pcrel (operands[0], operands[3], operands[2], copy_rtx (lab))); DONE; -}" +} [(set_attr "type" "call") (set (attr "fp_mode") (if_then_else (eq_attr "fpu_single" "yes") @@ -7744,7 +7650,6 @@ label: (use (reg:PSI FPSCR_REG)) (clobber (reg:SI PR_REG))])] "" - " { if (TARGET_SHMEDIA) { @@ -7781,8 +7686,7 @@ label: emit_insn (gen_force_mode_for_call ()); operands[0] - = function_symbol (NULL, \"__GCC_shcompact_call_trampoline\", - SFUNC_GOT); + = function_symbol (NULL, "__GCC_shcompact_call_trampoline", SFUNC_GOT); operands[0] = force_reg (SImode, operands[0]); emit_move_insn (r0, func); @@ -7832,7 +7736,7 @@ label: emit_call_insn (gen_calli (operands[0], operands[1])); DONE; -}") +}) (define_insn "call_pop_compact" [(call (mem:SI (match_operand:SI 0 "arith_reg_operand" "r")) @@ -7878,7 +7782,6 @@ label: (set (reg:SI SP_REG) (plus:SI (reg:SI SP_REG) (match_operand 3 "" "")))])] "TARGET_SHCOMPACT" - " { rtx cookie_rtx; long cookie; @@ -7910,7 +7813,7 @@ label: run out of registers when adjusting fpscr for the call. */ emit_insn (gen_force_mode_for_call ()); - operands[0] = function_symbol (NULL, \"__GCC_shcompact_call_trampoline\", + operands[0] = function_symbol (NULL, "__GCC_shcompact_call_trampoline", SFUNC_GOT); operands[0] = force_reg (SImode, operands[0]); @@ -7925,7 +7828,7 @@ label: (operands[0], operands[1], operands[2], operands[3])); DONE; -}") +}) (define_expand "call_value" [(parallel [(set (match_operand 0 "arith_reg_operand" "") @@ -7935,7 +7838,6 @@ label: (use (reg:PSI FPSCR_REG)) (clobber (reg:SI PR_REG))])] "" - " { if (TARGET_SHMEDIA) { @@ -7973,8 +7875,7 @@ label: emit_insn (gen_force_mode_for_call ()); operands[1] - = function_symbol (NULL, \"__GCC_shcompact_call_trampoline\", - SFUNC_GOT); + = function_symbol (NULL, "__GCC_shcompact_call_trampoline", SFUNC_GOT); operands[1] = force_reg (SImode, operands[1]); emit_move_insn (r0, func); @@ -8024,7 +7925,7 @@ label: emit_call_insn (gen_call_valuei (operands[0], operands[1], operands[2])); DONE; -}") +}) (define_insn "sibcalli" [(call (mem:SI (match_operand:SI 0 "register_operand" "k")) @@ -8079,7 +7980,6 @@ label: "#" "reload_completed" [(const_int 0)] - " { rtx lab = PATTERN (gen_call_site ()); rtx call_insn; @@ -8089,7 +7989,7 @@ label: copy_rtx (lab))); SIBLING_CALL_P (call_insn) = 1; DONE; -}" +} [(set_attr "needs_delay_slot" "yes") (set (attr "fp_mode") (if_then_else (eq_attr "fpu_single" "yes") @@ -8132,7 +8032,6 @@ label: (use (reg:PSI FPSCR_REG)) (return)])] "" - " { if (TARGET_SHMEDIA) { @@ -8179,8 +8078,7 @@ label: emit_insn (gen_force_mode_for_call ()); operands[0] - = function_symbol (NULL, \"__GCC_shcompact_call_trampoline\", - SFUNC_GOT); + = function_symbol (NULL, "__GCC_shcompact_call_trampoline", SFUNC_GOT); operands[0] = force_reg (SImode, operands[0]); /* We don't need a return trampoline, since the callee will @@ -8222,7 +8120,7 @@ label: emit_call_insn (gen_sibcalli (operands[0], operands[1])); DONE; -}") +}) (define_insn "sibcall_valuei" [(set (match_operand 0 "" "=rf") @@ -8264,7 +8162,6 @@ label: "#" "reload_completed" [(const_int 0)] - " { rtx lab = PATTERN (gen_call_site ()); rtx call_insn; @@ -8276,7 +8173,7 @@ label: copy_rtx (lab))); SIBLING_CALL_P (call_insn) = 1; DONE; -}" +} [(set_attr "needs_delay_slot" "yes") (set (attr "fp_mode") (if_then_else (eq_attr "fpu_single" "yes") @@ -8322,7 +8219,6 @@ label: (use (reg:PSI FPSCR_REG)) (return)])] "" - " { if (TARGET_SHMEDIA) { @@ -8370,8 +8266,7 @@ label: emit_insn (gen_force_mode_for_call ()); operands[1] - = function_symbol (NULL, \"__GCC_shcompact_call_trampoline\", - SFUNC_GOT); + = function_symbol (NULL, "__GCC_shcompact_call_trampoline", SFUNC_GOT); operands[1] = force_reg (SImode, operands[1]); /* We don't need a return trampoline, since the callee will @@ -8416,7 +8311,7 @@ label: emit_call_insn (gen_sibcall_valuei (operands[0], operands[1], operands[2])); DONE; -}") +}) (define_insn "call_value_pop_compact" [(set (match_operand 0 "" "=rf") @@ -8465,7 +8360,6 @@ label: (set (reg:SI SP_REG) (plus:SI (reg:SI SP_REG) (match_operand 4 "" "")))])] "TARGET_SHCOMPACT" - " { rtx cookie_rtx; long cookie; @@ -8498,7 +8392,7 @@ label: run out of registers when adjusting fpscr for the call. */ emit_insn (gen_force_mode_for_call ()); - operands[1] = function_symbol (NULL, \"__GCC_shcompact_call_trampoline\", + operands[1] = function_symbol (NULL, "__GCC_shcompact_call_trampoline", SFUNC_GOT); operands[1] = force_reg (SImode, operands[1]); @@ -8515,12 +8409,11 @@ label: operands[3], operands[4])); DONE; -}") +}) (define_expand "sibcall_epilogue" [(return)] "" - " { sh_expand_epilogue (1); if (TARGET_SHCOMPACT) @@ -8547,7 +8440,7 @@ label: } } DONE; -}") +}) (define_insn "indirect_jump_compact" [(set (pc) @@ -8561,11 +8454,10 @@ label: [(set (pc) (match_operand 0 "register_operand" ""))] "" - " { if (GET_MODE (operands[0]) != Pmode) operands[0] = gen_rtx_SUBREG (Pmode, operands[0], 0); -}") +}) ;; The use of operand 1 / 2 helps us distinguish case table jumps ;; which can be present in structured code from indirect jumps which can not @@ -8608,7 +8500,6 @@ label: (match_operand 1 "" "") (match_operand 2 "" "")])] "(TARGET_SH2E || TARGET_SH2A) || TARGET_SHMEDIA" - " { int i; @@ -8627,7 +8518,7 @@ label: emit_insn (gen_blockage ()); DONE; -}") +}) ;; ------------------------------------------------------------------------ ;; Misc insns @@ -8675,7 +8566,7 @@ label: UNSPEC_MOVA)) (set (match_dup 0) (const:SI (unspec:SI [(match_dup 1)] UNSPEC_PIC))) (set (match_dup 0) (plus:SI (match_dup 0) (reg:SI R0_REG)))] - "" " + "" { if (TARGET_VXWORKS_RTP) { @@ -8717,8 +8608,7 @@ label: DONE; } -} -") +}) ;; A helper for GOTaddr2picreg to finish up the initialization of the ;; PIC register. @@ -8766,21 +8656,19 @@ label: (define_expand "builtin_setjmp_receiver" [(match_operand 0 "" "")] "flag_pic" - " { emit_insn (gen_GOTaddr2picreg ()); DONE; -}") +}) (define_expand "call_site" [(unspec [(match_dup 0)] UNSPEC_CALLER)] "TARGET_SH1" - " { static HOST_WIDE_INT i = 0; operands[0] = GEN_INT (i); i++; -}") +}) ;; op0 = op1 + r12 but hide it before reload completed. See the comment ;; in symGOT_load expand. @@ -8811,7 +8699,6 @@ label: (set (match_dup 3) (plus (match_dup 2) (reg PIC_REG))) (set (match_operand 0 "" "") (mem (match_dup 3)))] "" - " { rtx mem; @@ -8851,7 +8738,7 @@ label: && GET_CODE (XEXP (operands[1], 0)) == UNSPEC && GET_CODE (XVECEXP (XEXP (operands[1], 0), 0, 0)) == SYMBOL_REF && strcmp (XSTR (XVECEXP (XEXP (operands[1], 0), 0, 0), 0), - \"__stack_chk_guard\") == 0) + "__stack_chk_guard") == 0) emit_insn (gen_chk_guard_add (operands[3], operands[2])); else emit_move_insn (operands[3], gen_rtx_PLUS (Pmode, operands[2], @@ -8864,7 +8751,7 @@ label: emit_move_insn (operands[0], mem); DONE; -}") +}) (define_expand "sym2GOT" [(const (unspec [(match_operand 0 "" "")] UNSPEC_GOT))] @@ -8874,7 +8761,6 @@ label: (define_expand "symGOT2reg" [(match_operand 0 "" "") (match_operand 1 "" "")] "" - " { rtx gotsym, insn; @@ -8885,12 +8771,11 @@ label: MEM_READONLY_P (SET_SRC (PATTERN (insn))) = 1; DONE; -}") +}) (define_expand "symGOTPLT2reg" [(match_operand 0 "" "") (match_operand 1 "" "")] "" - " { rtx pltsym = gen_rtx_CONST (Pmode, gen_rtx_UNSPEC (Pmode, @@ -8898,7 +8783,7 @@ label: UNSPEC_GOTPLT)); emit_insn (gen_symGOT_load (operands[0], pltsym)); DONE; -}") +}) (define_expand "sym2GOTOFF" [(const (unspec [(match_operand 0 "" "")] UNSPEC_GOTOFF))] @@ -8908,7 +8793,6 @@ label: (define_expand "symGOTOFF2reg" [(match_operand 0 "" "") (match_operand 1 "" "")] "" - " { rtx gotoffsym, insn; rtx t = (!can_create_pseudo_p () @@ -8925,7 +8809,7 @@ label: set_unique_reg_note (insn, REG_EQUAL, operands[1]); DONE; -}") +}) (define_expand "symPLT_label2reg" [(set (match_operand:SI 0 "" "") @@ -8970,22 +8854,20 @@ label: (clobber (reg:SI PR_REG)) (clobber (scratch:SI))] "TARGET_SH1" - "* -{ - return \"\\ -mov.l\\t1f,r4\\n\\ -\\tmova\\t2f,r0\\n\\ -\\tmov.l\\t2f,r1\\n\\ -\\tadd\\tr0,r1\\n\\ -\\tjsr\\t@r1\\n\\ -\\tadd\\tr12,r4\\n\\ -\\tbra\\t3f\\n\\ -\\tnop\\n\\ -\\t.align\\t2\\n\\ -1:\\t.long\\t%a1@TLSGD\\n\\ -2:\\t.long\\t__tls_get_addr@PLT\\n\\ -3:\"; -}" +{ + return "mov.l 1f,r4" "\n" + " mova 2f,r0" "\n" + " mov.l 2f,r1" "\n" + " add r0,r1" "\n" + " jsr @r1" "\n" + " add r12,r4" "\n" + " bra 3f" "\n" + " nop" "\n" + " .align 2" "\n" + "1: .long %a1@TLSGD" "\n" + "2: .long __tls_get_addr@PLT" "\n" + "3:"; +} [(set_attr "type" "tls_load") (set_attr "length" "26")]) @@ -8999,22 +8881,20 @@ mov.l\\t1f,r4\\n\\ (clobber (reg:SI PR_REG)) (clobber (scratch:SI))] "TARGET_SH1" - "* -{ - return \"\\ -mov.l\\t1f,r4\\n\\ -\\tmova\\t2f,r0\\n\\ -\\tmov.l\\t2f,r1\\n\\ -\\tadd\\tr0,r1\\n\\ -\\tjsr\\t@r1\\n\\ -\\tadd\\tr12,r4\\n\\ -\\tbra\\t3f\\n\\ -\\tnop\\n\\ -\\t.align\\t2\\n\\ -1:\\t.long\\t%a1@TLSLDM\\n\\ -2:\\t.long\\t__tls_get_addr@PLT\\n\\ -3:\"; -}" +{ + return "mov.l 1f,r4" "\n" + " mova 2f,r0" "\n" + " mov.l 2f,r1" "\n" + " add r0,r1" "\n" + " jsr @r1" "\n" + " add r12,r4" "\n" + " bra 3f" "\n" + " nop" "\n" + " .align 2" "\n" + "1: .long %a1@TLSLDM" "\n" + "2: .long __tls_get_addr@PLT" "\n" + "3:"; +} [(set_attr "type" "tls_load") (set_attr "length" "26")]) @@ -9026,7 +8906,6 @@ mov.l\\t1f,r4\\n\\ (define_expand "symDTPOFF2reg" [(match_operand 0 "" "") (match_operand 1 "" "") (match_operand 2 "" "")] "" - " { rtx dtpoffsym; rtx t = (!can_create_pseudo_p () @@ -9038,7 +8917,7 @@ mov.l\\t1f,r4\\n\\ emit_move_insn (t, dtpoffsym); emit_move_insn (operands[0], gen_rtx_PLUS (Pmode, t, operands[2])); DONE; -}") +}) (define_expand "sym2GOTTPOFF" [(const (unspec [(match_operand 0 "" "")] UNSPEC_GOTTPOFF))] @@ -9053,18 +8932,16 @@ mov.l\\t1f,r4\\n\\ (use (reg:SI PIC_REG)) (clobber (reg:SI R0_REG))] "" - "* -{ - return \"\\ -mov.l\\t1f,r0\\n\\ -\\tstc\\tgbr,%0\\n\\ -\\tmov.l\\t@(r0,r12),r0\\n\\ -\\tbra\\t2f\\n\\ -\\tadd\\tr0,%0\\n\\ -\\t.align\\t2\\n\\ -1:\\t.long\\t%a1\\n\\ -2:\"; -}" +{ + return "mov.l 1f,r0" "\n" + " stc gbr,%0" "\n" + " mov.l @(r0,r12),r0" "\n" + " bra 2f" "\n" + " add r0,%0" "\n" + " .align 2" "\n" + "1: .long %a1" "\n" + "2:"; +} [(set_attr "type" "tls_load") (set_attr "length" "16")]) @@ -9076,7 +8953,6 @@ mov.l\\t1f,r0\\n\\ (define_expand "symTPOFF2reg" [(match_operand 0 "" "") (match_operand 1 "" "")] "" - " { rtx tpoffsym; @@ -9084,7 +8960,7 @@ mov.l\\t1f,r0\\n\\ PUT_MODE (tpoffsym, Pmode); emit_move_insn (operands[0], tpoffsym); DONE; -}") +}) (define_insn "load_gbr" [(set (match_operand:SI 0 "register_operand" "=r") (reg:SI GBR_REG)) @@ -9107,7 +8983,6 @@ mov.l\\t1f,r0\\n\\ (match_operand:SI 2 "arith_reg_operand" "") (match_operand 3 "" "") (match_operand 4 "" "")] "" - " { rtx reg = gen_reg_rtx (SImode); rtx reg2 = gen_reg_rtx (SImode); @@ -9163,7 +9038,7 @@ mov.l\\t1f,r0\\n\\ machine_dependent_reorg. */ emit_barrier (); DONE; -}") +}) (define_expand "casesi_0" [(set (match_operand:SI 4 "" "") (match_operand:SI 0 "arith_reg_operand" "")) @@ -9206,7 +9081,10 @@ mov.l\\t1f,r0\\n\\ (label_ref (match_dup 2))] UNSPEC_CASESI)) (clobber (match_dup 3))]) (set (match_dup 0) (plus:SI (match_dup 0) (reg:SI R0_REG)))] - "if (GET_CODE (operands[2]) == CODE_LABEL) LABEL_NUSES (operands[2])++;") +{ + if (GET_CODE (operands[2]) == CODE_LABEL) + LABEL_NUSES (operands[2])++; +}) (define_split [(set (match_operand:SI 0 "register_operand" "") @@ -9220,7 +9098,10 @@ mov.l\\t1f,r0\\n\\ (unspec:SI [(reg:SI R0_REG) (match_dup 1) (label_ref (match_dup 2))] UNSPEC_CASESI)) (clobber (match_dup 3))])] - "if (GET_CODE (operands[2]) == CODE_LABEL) LABEL_NUSES (operands[2])++;") +{ + if (GET_CODE (operands[2]) == CODE_LABEL) + LABEL_NUSES (operands[2])++; +}) (define_insn "casesi_worker_1" [(set (match_operand:SI 0 "register_operand" "=r,r") @@ -9229,7 +9110,6 @@ mov.l\\t1f,r0\\n\\ (label_ref (match_operand 2 "" ""))] UNSPEC_CASESI)) (clobber (match_scratch:SI 3 "=X,1"))] "TARGET_SH1" - "* { rtx diff_vec = PATTERN (next_real_insn (operands[2])); @@ -9238,17 +9118,17 @@ mov.l\\t1f,r0\\n\\ switch (GET_MODE (diff_vec)) { case SImode: - return \"shll2 %1\;mov.l @(r0,%1),%0\"; + return "shll2 %1\;mov.l @(r0,%1),%0"; case HImode: - return \"add %1,%1\;mov.w @(r0,%1),%0\"; + return "add %1,%1\;mov.w @(r0,%1),%0"; case QImode: if (ADDR_DIFF_VEC_FLAGS (diff_vec).offset_unsigned) - return \"mov.b @(r0,%1),%0\;extu.b %0,%0\"; - return \"mov.b @(r0,%1),%0\"; + return "mov.b @(r0,%1),%0\;extu.b %0,%0"; + return "mov.b @(r0,%1),%0"; default: gcc_unreachable (); } -}" +} [(set_attr "length" "4")]) (define_insn "casesi_worker_2" @@ -9259,7 +9139,6 @@ mov.l\\t1f,r0\\n\\ (label_ref (match_operand 3 "" ""))] UNSPEC_CASESI)) (clobber (match_operand:SI 4 "" "=X,1"))] "TARGET_SH2 && reload_completed && flag_pic" - "* { rtx diff_vec = PATTERN (next_real_insn (operands[2])); const char *load; @@ -9269,23 +9148,23 @@ mov.l\\t1f,r0\\n\\ switch (GET_MODE (diff_vec)) { case SImode: - output_asm_insn (\"shll2 %1\", operands); - load = \"mov.l @(r0,%1),%0\"; break; + output_asm_insn ("shll2 %1", operands); + load = "mov.l @(r0,%1),%0"; break; case HImode: - output_asm_insn (\"add %1,%1\", operands); - load = \"mov.w @(r0,%1),%0\"; break; + output_asm_insn ("add %1,%1", operands); + load = "mov.w @(r0,%1),%0"; break; case QImode: if (ADDR_DIFF_VEC_FLAGS (diff_vec).offset_unsigned) - load = \"mov.b @(r0,%1),%0\;extu.b %0,%0\"; + load = "mov.b @(r0,%1),%0\;extu.b %0,%0"; else - load = \"mov.b @(r0,%1),%0\"; + load = "mov.b @(r0,%1),%0"; break; default: gcc_unreachable (); } - output_asm_insn (\"add\tr0,%1\;mova\t%O3,r0\\n\", operands); + output_asm_insn ("add\tr0,%1\;mova\t%O3,r0\\n", operands); return load; -}" +} [(set_attr "length" "8")]) (define_insn "casesi_shift_media" @@ -9294,7 +9173,6 @@ mov.l\\t1f,r0\\n\\ (unspec:DI [(label_ref:DI (match_operand 2 "" ""))] UNSPEC_CASESI)))] "TARGET_SHMEDIA" - "* { rtx diff_vec = PATTERN (next_real_insn (operands[2])); @@ -9303,17 +9181,17 @@ mov.l\\t1f,r0\\n\\ switch (GET_MODE (diff_vec)) { case SImode: - return \"shlli %1, 2, %0\"; + return "shlli %1, 2, %0"; case HImode: - return \"shlli %1, 1, %0\"; + return "shlli %1, 1, %0"; case QImode: if (rtx_equal_p (operands[0], operands[1])) - return \"\"; - return \"add %1, r63, %0\"; + return ""; + return "add %1, r63, %0"; default: gcc_unreachable (); } -}" +} [(set_attr "type" "arith_media")]) (define_insn "casesi_load_media" @@ -9322,7 +9200,6 @@ mov.l\\t1f,r0\\n\\ (match_operand:DI 2 "arith_reg_operand" "r") (label_ref:DI (match_operand 3 "" ""))] UNSPEC_CASESI)))] "TARGET_SHMEDIA" - "* { rtx diff_vec = PATTERN (next_real_insn (operands[3])); @@ -9331,27 +9208,26 @@ mov.l\\t1f,r0\\n\\ switch (GET_MODE (diff_vec)) { case SImode: - return \"ldx.l %1, %2, %0\"; + return "ldx.l %1, %2, %0"; case HImode: #if 0 if (ADDR_DIFF_VEC_FLAGS (diff_vec).offset_unsigned) - return \"ldx.uw %1, %2, %0\"; + return "ldx.uw %1, %2, %0"; #endif - return \"ldx.w %1, %2, %0\"; + return "ldx.w %1, %2, %0"; case QImode: if (ADDR_DIFF_VEC_FLAGS (diff_vec).offset_unsigned) - return \"ldx.ub %1, %2, %0\"; - return \"ldx.b %1, %2, %0\"; + return "ldx.ub %1, %2, %0"; + return "ldx.b %1, %2, %0"; default: gcc_unreachable (); } -}" +} [(set_attr "type" "load_media")]) (define_expand "return" [(return)] "reload_completed && ! sh_need_epilogue ()" - " { if (TARGET_SHMEDIA) { @@ -9365,7 +9241,7 @@ mov.l\\t1f,r0\\n\\ emit_jump_insn (gen_shcompact_return_tramp ()); DONE; } -}") +}) (define_insn "*return_i" [(return)] @@ -9375,14 +9251,13 @@ mov.l\\t1f,r0\\n\\ && reload_completed && lookup_attribute (\"trap_exit\", DECL_ATTRIBUTES (current_function_decl)) == NULL_TREE" - "* - { - if (TARGET_SH2A && (dbr_sequence_length () == 0) - && !current_function_interrupt) - return \"rts/n\"; - else - return \"%@ %#\"; - }" +{ + if (TARGET_SH2A && (dbr_sequence_length () == 0) + && !current_function_interrupt) + return "rts/n"; + else + return "%@ %#"; +} [(set_attr "type" "return") (set_attr "needs_delay_slot" "yes")]) @@ -9398,14 +9273,13 @@ mov.l\\t1f,r0\\n\\ [(return)] "TARGET_SHCOMPACT && (crtl->args.info.call_cookie & CALL_COOKIE_RET_TRAMP (1))" - " { rtx reg = gen_rtx_REG (Pmode, R0_REG); - function_symbol (reg, \"__GCC_shcompact_return_trampoline\", SFUNC_STATIC); + function_symbol (reg, "__GCC_shcompact_return_trampoline", SFUNC_STATIC); emit_jump_insn (gen_shcompact_return_tramp_i ()); DONE; -}") +}) (define_insn "shcompact_return_tramp_i" [(parallel [(return) (use (reg:SI R0_REG))])] @@ -9430,7 +9304,6 @@ mov.l\\t1f,r0\\n\\ (define_expand "return_media" [(return)] "TARGET_SHMEDIA && reload_completed" - " { int tr_regno = sh_media_register_for_return (); rtx tr; @@ -9454,7 +9327,7 @@ mov.l\\t1f,r0\\n\\ emit_jump_insn (gen_return_media_i (tr)); DONE; -}") +}) (define_insn "shcompact_preserve_incoming_args" [(set (match_operand:SI 0 "register_operand" "+r") @@ -9498,17 +9371,19 @@ mov.l\\t1f,r0\\n\\ (define_expand "prologue" [(const_int 0)] "" - "sh_expand_prologue (); DONE;") +{ + sh_expand_prologue (); + DONE; +}) (define_expand "epilogue" [(return)] "" - " { sh_expand_epilogue (0); emit_jump_insn (gen_return ()); DONE; -}") +}) (define_expand "eh_return" [(use (match_operand 0 "register_operand" ""))] @@ -9547,11 +9422,10 @@ mov.l\\t1f,r0\\n\\ (clobber (match_scratch 1 ""))] "reload_completed" [(const_int 0)] - " { sh_set_return_address (operands[0], operands[1]); DONE; -}") +}) (define_insn "blockage" [(unspec_volatile [(const_int 0)] UNSPECV_BLOCKAGE)] @@ -9616,7 +9490,6 @@ mov.l\\t1f,r0\\n\\ [(match_operand 2 "logical_operand" "") (match_operand 3 "cmp_operand" "")]))] "TARGET_SHMEDIA" - " { enum machine_mode mode = GET_MODE (operands[2]); enum rtx_code code = GET_CODE (operands[1]); @@ -9686,7 +9559,7 @@ mov.l\\t1f,r0\\n\\ } operands[1] = gen_rtx_fmt_ee (code, VOIDmode, operands[2], operands[3]); -}") +}) (define_expand "cstoresi4" [(set (match_operand:SI 0 "register_operand" "=r") @@ -9694,7 +9567,8 @@ mov.l\\t1f,r0\\n\\ [(match_operand:SI 2 "cmpsi_operand" "") (match_operand:SI 3 "arith_operand" "")]))] "TARGET_SH1 || TARGET_SHMEDIA" - "if (TARGET_SHMEDIA) +{ + if (TARGET_SHMEDIA) { emit_insn (gen_cstore4_media (operands[0], operands[1], operands[2], operands[3])); @@ -9710,7 +9584,7 @@ mov.l\\t1f,r0\\n\\ sh_emit_compare_and_set (operands, SImode); DONE; -") +}) (define_expand "cstoredi4" [(set (match_operand:SI 0 "register_operand" "=r") @@ -9718,7 +9592,8 @@ mov.l\\t1f,r0\\n\\ [(match_operand:DI 2 "arith_operand" "") (match_operand:DI 3 "arith_operand" "")]))] "TARGET_SH2 || TARGET_SHMEDIA" - "if (TARGET_SHMEDIA) +{ + if (TARGET_SHMEDIA) { emit_insn (gen_cstore4_media (operands[0], operands[1], operands[2], operands[3])); @@ -9734,7 +9609,7 @@ mov.l\\t1f,r0\\n\\ sh_emit_compare_and_set (operands, DImode); DONE; -") +}) ;; Move the complement of the T reg to a reg. ;; On SH2A the movrt insn can be used. @@ -9843,19 +9718,20 @@ mov.l\\t1f,r0\\n\\ [(match_operand:SF 2 "arith_operand" "") (match_operand:SF 3 "arith_operand" "")]))] "TARGET_SH2E || TARGET_SHMEDIA_FPU" - "if (TARGET_SHMEDIA) - { - emit_insn (gen_cstore4_media (operands[0], operands[1], - operands[2], operands[3])); - DONE; - } +{ + if (TARGET_SHMEDIA) + { + emit_insn (gen_cstore4_media (operands[0], operands[1], + operands[2], operands[3])); + DONE; + } - if (! currently_expanding_to_rtl) - FAIL; + if (! currently_expanding_to_rtl) + FAIL; - sh_emit_compare_and_set (operands, SFmode); - DONE; -") + sh_emit_compare_and_set (operands, SFmode); + DONE; +}) (define_expand "cstoredf4" [(set (match_operand:SI 0 "register_operand" "=r") @@ -9863,19 +9739,20 @@ mov.l\\t1f,r0\\n\\ [(match_operand:DF 2 "arith_operand" "") (match_operand:DF 3 "arith_operand" "")]))] "(TARGET_SH4 || TARGET_SH2A_DOUBLE) || TARGET_SHMEDIA_FPU" - "if (TARGET_SHMEDIA) - { - emit_insn (gen_cstore4_media (operands[0], operands[1], - operands[2], operands[3])); - DONE; - } - - if (! currently_expanding_to_rtl) - FAIL; +{ + if (TARGET_SHMEDIA) + { + emit_insn (gen_cstore4_media (operands[0], operands[1], + operands[2], operands[3])); + DONE; + } + + if (! currently_expanding_to_rtl) + FAIL; - sh_emit_compare_and_set (operands, DFmode); - DONE; -") + sh_emit_compare_and_set (operands, DFmode); + DONE; +}) ;; ------------------------------------------------------------------------- ;; Instructions to cope with inline literal tables @@ -9888,12 +9765,11 @@ mov.l\\t1f,r0\\n\\ (match_operand 1 "" "")] UNSPECV_CONST2)] "" - "* { if (operands[1] != const0_rtx) assemble_integer (operands[0], 2, BITS_PER_UNIT * 2, 1); - return \"\"; -}" + return ""; +} [(set_attr "length" "2") (set_attr "in_delay_slot" "no")]) @@ -9904,15 +9780,14 @@ mov.l\\t1f,r0\\n\\ (match_operand 1 "" "")] UNSPECV_CONST4)] "" - "* { if (operands[1] != const0_rtx) { assemble_integer (operands[0], 4, BITS_PER_UNIT * 4, 1); mark_symbol_refs_as_used (operands[0]); } - return \"\"; -}" + return ""; +} [(set_attr "length" "4") (set_attr "in_delay_slot" "no")]) @@ -9923,12 +9798,11 @@ mov.l\\t1f,r0\\n\\ (match_operand 1 "" "")] UNSPECV_CONST8)] "" - "* { if (operands[1] != const0_rtx) assemble_integer (operands[0], 8, BITS_PER_UNIT * 8, 1); - return \"\"; -}" + return ""; +} [(set_attr "length" "8") (set_attr "in_delay_slot" "no")]) @@ -9939,7 +9813,6 @@ mov.l\\t1f,r0\\n\\ (match_operand 1 "" "")] UNSPECV_CONST4)] "" - "* { if (operands[1] != const0_rtx) { @@ -9947,8 +9820,8 @@ mov.l\\t1f,r0\\n\\ REAL_VALUE_FROM_CONST_DOUBLE (d, operands[0]); assemble_real (d, SFmode, GET_MODE_ALIGNMENT (SFmode)); } - return \"\"; -}" + return ""; +} [(set_attr "length" "4") (set_attr "in_delay_slot" "no")]) @@ -9959,7 +9832,6 @@ mov.l\\t1f,r0\\n\\ (match_operand 1 "" "")] UNSPECV_CONST8)] "" - "* { if (operands[1] != const0_rtx) { @@ -9967,8 +9839,8 @@ mov.l\\t1f,r0\\n\\ REAL_VALUE_FROM_CONST_DOUBLE (d, operands[0]); assemble_real (d, DFmode, GET_MODE_ALIGNMENT (DFmode)); } - return \"\"; -}" + return ""; +} [(set_attr "length" "8") (set_attr "in_delay_slot" "no")]) @@ -10009,7 +9881,9 @@ mov.l\\t1f,r0\\n\\ (define_insn "consttable_end" [(unspec_volatile [(const_int 0)] UNSPECV_CONST_END)] "" - "* return output_jump_label_table ();" +{ + return output_jump_label_table (); +} [(set_attr "in_delay_slot" "no")]) ; emitted at the end of the window in the literal table. @@ -10037,12 +9911,11 @@ mov.l\\t1f,r0\\n\\ (clobber (reg:SI R5_REG)) (clobber (reg:SI R0_REG))])] "TARGET_SH1 && ! TARGET_SH5" - " { if(expand_block_move (operands)) DONE; else FAIL; -}") +}) (define_insn "block_move_real" [(parallel [(set (mem:BLK (reg:SI R4_REG)) @@ -10211,14 +10084,13 @@ mov.l\\t1f,r0\\n\\ (plus:SF (match_operand:SF 1 "arith_reg_operand" "") (match_operand:SF 2 "arith_reg_operand" "")))] "TARGET_SH2E || TARGET_SHMEDIA_FPU" - " { if (TARGET_SH2E) { expand_sf_binop (&gen_addsf3_i, operands); DONE; } -}") +}) (define_insn "*addsf3_media" [(set (match_operand:SF 0 "fp_arith_reg_operand" "=f") @@ -10244,7 +10116,6 @@ mov.l\\t1f,r0\\n\\ "#" "TARGET_SHMEDIA_FPU && reload_completed" [(set (match_dup 5) (match_dup 6))] - " { int endian = TARGET_LITTLE_ENDIAN ? 0 : 1; rtx op1 = gen_rtx_REG (SFmode, @@ -10255,7 +10126,7 @@ mov.l\\t1f,r0\\n\\ (true_regnum (operands[0]) + (INTVAL (operands[3]) ^ endian))); operands[6] = gen_rtx_fmt_e (GET_CODE (operands[2]), SFmode, op1); -}" +} [(set_attr "type" "fparith_media")]) (define_insn_and_split "binary_sf_op0" @@ -10273,7 +10144,6 @@ mov.l\\t1f,r0\\n\\ "#" "&& reload_completed" [(set (match_dup 4) (match_dup 5))] - " { int endian = TARGET_LITTLE_ENDIAN ? 0 : 1; rtx op1 = gen_rtx_REG (SFmode, @@ -10284,7 +10154,7 @@ mov.l\\t1f,r0\\n\\ operands[4] = gen_rtx_REG (SFmode, true_regnum (operands[0]) + endian); operands[5] = gen_rtx_fmt_ee (GET_CODE (operands[3]), SFmode, op1, op2); -}" +} [(set_attr "type" "fparith_media")]) (define_insn_and_split "binary_sf_op1" @@ -10302,18 +10172,14 @@ mov.l\\t1f,r0\\n\\ "#" "&& reload_completed" [(set (match_dup 4) (match_dup 5))] - " { int endian = TARGET_LITTLE_ENDIAN ? 0 : 1; - rtx op1 = gen_rtx_REG (SFmode, - true_regnum (operands[1]) + (1 ^ endian)); - rtx op2 = gen_rtx_REG (SFmode, - true_regnum (operands[2]) + (1 ^ endian)); + rtx op1 = gen_rtx_REG (SFmode, true_regnum (operands[1]) + (1 ^ endian)); + rtx op2 = gen_rtx_REG (SFmode, true_regnum (operands[2]) + (1 ^ endian)); - operands[4] = gen_rtx_REG (SFmode, - true_regnum (operands[0]) + (1 ^ endian)); + operands[4] = gen_rtx_REG (SFmode, true_regnum (operands[0]) + (1 ^ endian)); operands[5] = gen_rtx_fmt_ee (GET_CODE (operands[3]), SFmode, op1, op2); -}" +} [(set_attr "type" "fparith_media")]) (define_insn "addsf3_i" @@ -10331,14 +10197,13 @@ mov.l\\t1f,r0\\n\\ (minus:SF (match_operand:SF 1 "fp_arith_reg_operand" "") (match_operand:SF 2 "fp_arith_reg_operand" "")))] "TARGET_SH2E || TARGET_SHMEDIA_FPU" - " { if (TARGET_SH2E) { expand_sf_binop (&gen_subsf3_i, operands); DONE; } -}") +}) (define_insn "*subsf3_media" [(set (match_operand:SF 0 "fp_arith_reg_operand" "=f") @@ -10386,12 +10251,11 @@ mov.l\\t1f,r0\\n\\ "fmul %2,%0" "TARGET_SH4 || TARGET_SH2A_SINGLE" [(const_int 0)] - " { emit_insn (gen_mulsf3_i4 (operands[0], operands[1], operands[2], get_fpscr_rtx ())); DONE; -}" +} [(set_attr "type" "fp")]) (define_insn "mulsf3_i4" @@ -10429,14 +10293,13 @@ mov.l\\t1f,r0\\n\\ (div:SF (match_operand:SF 1 "arith_reg_operand" "") (match_operand:SF 2 "arith_reg_operand" "")))] "TARGET_SH2E || TARGET_SHMEDIA_FPU" - " { if (TARGET_SH2E) { expand_sf_binop (&gen_divsf3_i, operands); DONE; } -}") +}) (define_insn "*divsf3_media" [(set (match_operand:SF 0 "fp_arith_reg_operand" "=f") @@ -10467,14 +10330,13 @@ mov.l\\t1f,r0\\n\\ [(set (match_operand:SF 0 "fp_arith_reg_operand" "") (float:SF (match_operand:SI 1 "fpul_operand" "")))] "TARGET_SH2E || TARGET_SHMEDIA_FPU" - " { if (TARGET_SH4 || TARGET_SH2A_SINGLE) { emit_sf_insn (gen_floatsisf2_i4 (operands[0], operands[1], get_fpscr_rtx ())); DONE; } -}") +}) (define_insn "*floatsisf2_media" [(set (match_operand:SF 0 "fp_arith_reg_operand" "=f") @@ -10510,14 +10372,13 @@ mov.l\\t1f,r0\\n\\ [(set (match_operand:SI 0 "fpul_operand" "=y") (fix:SI (match_operand:SF 1 "fp_arith_reg_operand" "f")))] "TARGET_SH2E || TARGET_SHMEDIA_FPU" - " { if (TARGET_SH4 || TARGET_SH2A_SINGLE) { emit_sf_insn (gen_fix_truncsfsi2_i4 (operands[0], operands[1], get_fpscr_rtx ())); DONE; } -}") +}) (define_insn "*fix_truncsfsi2_media" [(set (match_operand:SI 0 "fp_arith_reg_operand" "=f") @@ -10588,7 +10449,9 @@ mov.l\\t1f,r0\\n\\ (eq:SI (match_operand:SF 0 "fp_arith_reg_operand" "f") (match_operand:SF 1 "fp_arith_reg_operand" "f"))))] "TARGET_SH2E && TARGET_IEEE && ! (TARGET_SH4 || TARGET_SH2A_SINGLE)" - "* return output_ieee_ccmpeq (insn, operands);" +{ + return output_ieee_ccmpeq (insn, operands); +} [(set_attr "length" "4")]) @@ -10619,7 +10482,9 @@ mov.l\\t1f,r0\\n\\ (match_operand:SF 1 "fp_arith_reg_operand" "f")))) (use (match_operand:PSI 2 "fpscr_operand" "c"))] "TARGET_IEEE && (TARGET_SH4 || TARGET_SH2A_SINGLE)" - "* return output_ieee_ccmpeq (insn, operands);" +{ + return output_ieee_ccmpeq (insn, operands); +} [(set_attr "length" "4") (set_attr "fp_mode" "single")]) @@ -10663,7 +10528,6 @@ mov.l\\t1f,r0\\n\\ (match_operand 3 "" "") (pc)))] "TARGET_SH2E || TARGET_SHMEDIA_FPU" - " { if (TARGET_SHMEDIA) emit_jump_insn (gen_cbranchfp4_media (operands[0], operands[1], operands[2], @@ -10671,20 +10535,19 @@ mov.l\\t1f,r0\\n\\ else sh_emit_compare_and_branch (operands, SFmode); DONE; -}") +}) (define_expand "negsf2" [(set (match_operand:SF 0 "fp_arith_reg_operand" "") (neg:SF (match_operand:SF 1 "fp_arith_reg_operand" "")))] "TARGET_SH2E || TARGET_SHMEDIA_FPU" - " { if (TARGET_SH2E) { expand_sf_unop (&gen_negsf2_i, operands); DONE; } -}") +}) (define_insn "*negsf2_media" [(set (match_operand:SF 0 "fp_arith_reg_operand" "=f") @@ -10706,14 +10569,13 @@ mov.l\\t1f,r0\\n\\ [(set (match_operand:SF 0 "fp_arith_reg_operand" "") (sqrt:SF (match_operand:SF 1 "fp_arith_reg_operand" "")))] "TARGET_SH3E || TARGET_SHMEDIA_FPU" - " { if (TARGET_SH3E) { expand_sf_unop (&gen_sqrtsf2_i, operands); DONE; } -}") +}) (define_insn "*sqrtsf2_media" [(set (match_operand:SF 0 "fp_arith_reg_operand" "=f") @@ -10763,7 +10625,6 @@ mov.l\\t1f,r0\\n\\ (unspec:SF [(match_operand:SF 1 "fp_arith_reg_operand" "")] UNSPEC_FSINA))] "TARGET_SH4A_FP && flag_unsafe_math_optimizations" - " { rtx scaled = gen_reg_rtx (SFmode); rtx truncated = gen_reg_rtx (SImode); @@ -10776,14 +10637,13 @@ mov.l\\t1f,r0\\n\\ get_fpscr_rtx ())); emit_move_insn (operands[0], gen_rtx_SUBREG (SFmode, fsca, 0)); DONE; -}") +}) (define_expand "cossf2" [(set (match_operand:SF 0 "nonimmediate_operand" "") (unspec:SF [(match_operand:SF 1 "fp_arith_reg_operand" "")] UNSPEC_FCOSA))] "TARGET_SH4A_FP && flag_unsafe_math_optimizations" - " { rtx scaled = gen_reg_rtx (SFmode); rtx truncated = gen_reg_rtx (SImode); @@ -10796,14 +10656,13 @@ mov.l\\t1f,r0\\n\\ get_fpscr_rtx ())); emit_move_insn (operands[0], gen_rtx_SUBREG (SFmode, fsca, 4)); DONE; -}") +}) (define_expand "sindf2" [(set (match_operand:DF 0 "fp_arith_reg_operand" "") (unspec:DF [(match_operand:DF 1 "fp_arith_reg_operand" "")] UNSPEC_FSINA))] "TARGET_SH4A_FP && ! TARGET_FPU_SINGLE && flag_unsafe_math_optimizations" - " { rtx scaled = gen_reg_rtx (DFmode); rtx truncated = gen_reg_rtx (SImode); @@ -10818,14 +10677,13 @@ mov.l\\t1f,r0\\n\\ emit_move_insn (sfresult, gen_rtx_SUBREG (SFmode, fsca, 0)); emit_df_insn (gen_extendsfdf2 (operands[0], sfresult)); DONE; -}") +}) (define_expand "cosdf2" [(set (match_operand:DF 0 "fp_arith_reg_operand" "") (unspec:DF [(match_operand:DF 1 "fp_arith_reg_operand" "")] UNSPEC_FCOSA))] "TARGET_SH4A_FP && ! TARGET_FPU_SINGLE && flag_unsafe_math_optimizations" - " { rtx scaled = gen_reg_rtx (DFmode); rtx truncated = gen_reg_rtx (SImode); @@ -10840,20 +10698,19 @@ mov.l\\t1f,r0\\n\\ emit_move_insn (sfresult, gen_rtx_SUBREG (SFmode, fsca, 4)); emit_df_insn (gen_extendsfdf2 (operands[0], sfresult)); DONE; -}") +}) (define_expand "abssf2" [(set (match_operand:SF 0 "fp_arith_reg_operand" "") (abs:SF (match_operand:SF 1 "fp_arith_reg_operand" "")))] "TARGET_SH2E || TARGET_SHMEDIA_FPU" - " { if (TARGET_SH2E) { expand_sf_unop (&gen_abssf2_i, operands); DONE; } -}") +}) (define_insn "*abssf2_media" [(set (match_operand:SF 0 "fp_arith_reg_operand" "=f") @@ -10876,14 +10733,13 @@ mov.l\\t1f,r0\\n\\ (plus:DF (match_operand:DF 1 "fp_arith_reg_operand" "") (match_operand:DF 2 "fp_arith_reg_operand" "")))] "(TARGET_SH4 || TARGET_SH2A_DOUBLE) || TARGET_SHMEDIA_FPU" - " { if (TARGET_SH4 || TARGET_SH2A_DOUBLE) { expand_df_binop (&gen_adddf3_i, operands); DONE; } -}") +}) (define_insn "*adddf3_media" [(set (match_operand:DF 0 "fp_arith_reg_operand" "=f") @@ -10908,14 +10764,13 @@ mov.l\\t1f,r0\\n\\ (minus:DF (match_operand:DF 1 "fp_arith_reg_operand" "") (match_operand:DF 2 "fp_arith_reg_operand" "")))] "(TARGET_SH4 || TARGET_SH2A_DOUBLE) || TARGET_SHMEDIA_FPU" - " { if (TARGET_SH4 || TARGET_SH2A_DOUBLE) { expand_df_binop (&gen_subdf3_i, operands); DONE; } -}") +}) (define_insn "*subdf3_media" [(set (match_operand:DF 0 "fp_arith_reg_operand" "=f") @@ -10940,14 +10795,13 @@ mov.l\\t1f,r0\\n\\ (mult:DF (match_operand:DF 1 "fp_arith_reg_operand" "") (match_operand:DF 2 "fp_arith_reg_operand" "")))] "(TARGET_SH4 || TARGET_SH2A_DOUBLE) || TARGET_SHMEDIA_FPU" - " { if (TARGET_SH4 || TARGET_SH2A_DOUBLE) { expand_df_binop (&gen_muldf3_i, operands); DONE; } -}") +}) (define_insn "*muldf3_media" [(set (match_operand:DF 0 "fp_arith_reg_operand" "=f") @@ -10972,14 +10826,13 @@ mov.l\\t1f,r0\\n\\ (div:DF (match_operand:DF 1 "fp_arith_reg_operand" "") (match_operand:DF 2 "fp_arith_reg_operand" "")))] "(TARGET_SH4 || TARGET_SH2A_DOUBLE) || TARGET_SHMEDIA_FPU" - " { if (TARGET_SH4 || TARGET_SH2A_DOUBLE) { expand_df_binop (&gen_divdf3_i, operands); DONE; } -}") +}) (define_insn "*divdf3_media" [(set (match_operand:DF 0 "fp_arith_reg_operand" "=f") @@ -11010,7 +10863,6 @@ mov.l\\t1f,r0\\n\\ [(set (match_operand:DF 0 "fp_arith_reg_operand" "") (float:DF (match_operand:SI 1 "fpul_operand" "")))] "(TARGET_SH4 || TARGET_SH2A_DOUBLE) || TARGET_SHMEDIA_FPU" - " { if (TARGET_SH4 || TARGET_SH2A_DOUBLE) { @@ -11018,7 +10870,7 @@ mov.l\\t1f,r0\\n\\ get_fpscr_rtx ())); DONE; } -}") +}) (define_insn "*floatsidf2_media" [(set (match_operand:DF 0 "fp_arith_reg_operand" "=f") @@ -11047,7 +10899,6 @@ mov.l\\t1f,r0\\n\\ [(set (match_operand:SI 0 "fpul_operand" "") (fix:SI (match_operand:DF 1 "fp_arith_reg_operand" "")))] "(TARGET_SH4 || TARGET_SH2A_DOUBLE) || TARGET_SHMEDIA_FPU" - " { if (TARGET_SH4 || TARGET_SH2A_DOUBLE) { @@ -11055,7 +10906,7 @@ mov.l\\t1f,r0\\n\\ get_fpscr_rtx ())); DONE; } -}") +}) (define_insn "*fix_truncdfsi2_media" [(set (match_operand:SI 0 "fp_arith_reg_operand" "=f") @@ -11123,7 +10974,9 @@ mov.l\\t1f,r0\\n\\ (match_operand:DF 1 "arith_reg_operand" "f")))) (use (match_operand:PSI 2 "fpscr_operand" "c"))] "TARGET_IEEE && (TARGET_SH4 || TARGET_SH2A_DOUBLE)" - "* return output_ieee_ccmpeq (insn, operands);" +{ + return output_ieee_ccmpeq (insn, operands); +} [(set_attr "length" "4") (set_attr "fp_mode" "double")]) @@ -11167,7 +11020,6 @@ mov.l\\t1f,r0\\n\\ (match_operand 3 "" "") (pc)))] "(TARGET_SH4 || TARGET_SH2A_DOUBLE) || TARGET_SHMEDIA_FPU" - " { if (TARGET_SHMEDIA) emit_jump_insn (gen_cbranchfp4_media (operands[0], operands[1], operands[2], @@ -11175,21 +11027,20 @@ mov.l\\t1f,r0\\n\\ else sh_emit_compare_and_branch (operands, DFmode); DONE; -}") +}) (define_expand "negdf2" [(set (match_operand:DF 0 "arith_reg_operand" "") (neg:DF (match_operand:DF 1 "arith_reg_operand" "")))] "(TARGET_SH4 || TARGET_SH2A_DOUBLE) || TARGET_SHMEDIA_FPU" - " { if (TARGET_SH4 || TARGET_SH2A_DOUBLE) { expand_df_unop (&gen_negdf2_i, operands); DONE; } -}") +}) (define_insn "*negdf2_media" [(set (match_operand:DF 0 "fp_arith_reg_operand" "=f") @@ -11211,14 +11062,13 @@ mov.l\\t1f,r0\\n\\ [(set (match_operand:DF 0 "arith_reg_operand" "") (sqrt:DF (match_operand:DF 1 "arith_reg_operand" "")))] "(TARGET_SH4 || TARGET_SH2A_DOUBLE) || TARGET_SHMEDIA_FPU" - " { if (TARGET_SH4 || TARGET_SH2A_DOUBLE) { expand_df_unop (&gen_sqrtdf2_i, operands); DONE; } -}") +}) (define_insn "*sqrtdf2_media" [(set (match_operand:DF 0 "fp_arith_reg_operand" "=f") @@ -11240,14 +11090,13 @@ mov.l\\t1f,r0\\n\\ [(set (match_operand:DF 0 "arith_reg_operand" "") (abs:DF (match_operand:DF 1 "arith_reg_operand" "")))] "(TARGET_SH4 || TARGET_SH2A_DOUBLE) || TARGET_SHMEDIA_FPU" - " { if (TARGET_SH4 || TARGET_SH2A_DOUBLE) { expand_df_unop (&gen_absdf2_i, operands); DONE; } -}") +}) (define_insn "*absdf2_media" [(set (match_operand:DF 0 "fp_arith_reg_operand" "=f") @@ -11269,7 +11118,6 @@ mov.l\\t1f,r0\\n\\ [(set (match_operand:DF 0 "fp_arith_reg_operand" "") (float_extend:DF (match_operand:SF 1 "fpul_operand" "")))] "(TARGET_SH4 || TARGET_SH2A_DOUBLE) || TARGET_SHMEDIA_FPU" - " { if (TARGET_SH4 || TARGET_SH2A_DOUBLE) { @@ -11277,7 +11125,7 @@ mov.l\\t1f,r0\\n\\ get_fpscr_rtx ())); DONE; } -}") +}) (define_insn "*extendsfdf2_media" [(set (match_operand:DF 0 "fp_arith_reg_operand" "=f") @@ -11299,7 +11147,6 @@ mov.l\\t1f,r0\\n\\ [(set (match_operand:SF 0 "fpul_operand" "") (float_truncate:SF (match_operand:DF 1 "fp_arith_reg_operand" "")))] "(TARGET_SH4 || TARGET_SH2A_DOUBLE) || TARGET_SHMEDIA_FPU" - " { if (TARGET_SH4 || TARGET_SH2A_DOUBLE) { @@ -11307,7 +11154,7 @@ mov.l\\t1f,r0\\n\\ get_fpscr_rtx ())); DONE; } -}") +}) (define_insn "*truncdfsf2_media" [(set (match_operand:SF 0 "fp_arith_reg_operand" "=f") @@ -11334,7 +11181,6 @@ mov.l\\t1f,r0\\n\\ (match_operand:SI 2 "immediate_operand" "")) (match_operand:SI 3 "general_operand" ""))] "TARGET_SH1 && ! TARGET_LITTLE_ENDIAN" - " { rtx addr_target, orig_address, shift_reg, qi_val; HOST_WIDE_INT bitsize, size, v = 0; @@ -11416,7 +11262,7 @@ mov.l\\t1f,r0\\n\\ } DONE; -}") +}) (define_insn "movua" [(set (match_operand:SI 0 "register_operand" "=z") @@ -11950,12 +11796,11 @@ mov.l\\t1f,r0\\n\\ (define_insn "sp_switch_1" [(const_int 1) (match_operand:SI 0 "symbol_ref_operand" "s")] "TARGET_SH1" - "* { - output_asm_insn (\"mov.l r0,@-r15\;mov.l %0,r0\", operands); - output_asm_insn (\"mov.l @r0,r0\;mov.l r15,@-r0\", operands); - return \"mov r0,r15\"; -}" + output_asm_insn ("mov.l r0,@-r15\;mov.l %0,r0", operands); + output_asm_insn ("mov.l @r0,r0\;mov.l r15,@-r0", operands); + return "mov r0,r15"; +} [(set_attr "length" "10")]) ;; Switch back to the original stack for interrupt functions with the @@ -11972,7 +11817,10 @@ mov.l\\t1f,r0\\n\\ [(set (match_operand:V8QI 0 "general_movdst_operand" "") (match_operand:V8QI 1 "general_movsrc_operand" ""))] "TARGET_SHMEDIA" - "{ if (prepare_move_operands (operands, V8QImode)) DONE; }") +{ + if (prepare_move_operands (operands, V8QImode)) + DONE; +}) (define_insn "movv8qi_i" [(set (match_operand:V8QI 0 "general_movdst_operand" "=r,r,r,rl,m") @@ -12011,7 +11859,6 @@ mov.l\\t1f,r0\\n\\ || XVECEXP (operands[1], 0, 1) != constm1_rtx)" [(set (match_dup 0) (match_dup 1)) (match_dup 2)] - " { int unit_size = GET_MODE_UNIT_SIZE (GET_MODE (operands[1])); rtx elt1 = XVECEXP (operands[1], 0, 1); @@ -12040,7 +11887,7 @@ mov.l\\t1f,r0\\n\\ = gen_rtx_PARALLEL (VOIDmode, gen_rtvec (2, operands[1], elt1)); } } -}") +}) (define_split [(set (match_operand 0 "arith_reg_dest" "") @@ -12049,7 +11896,6 @@ mov.l\\t1f,r0\\n\\ && GET_MODE (operands[0]) == GET_MODE (operands[1]) && sh_vector_mode_supported_p (GET_MODE (operands[0]))" [(set (match_dup 0) (match_dup 1))] - " { rtx v = operands[1]; enum machine_mode new_mode @@ -12058,13 +11904,16 @@ mov.l\\t1f,r0\\n\\ operands[0] = gen_rtx_REG (new_mode, true_regnum (operands[0])); operands[1] = simplify_subreg (new_mode, operands[1], GET_MODE (operands[1]), 0); -}") +}) (define_expand "movv2hi" [(set (match_operand:V2HI 0 "general_movdst_operand" "") (match_operand:V2HI 1 "general_movsrc_operand" ""))] "TARGET_SHMEDIA" - "{ if (prepare_move_operands (operands, V2HImode)) DONE; }") +{ + if (prepare_move_operands (operands, V2HImode)) + DONE; +}) (define_insn "movv2hi_i" [(set (match_operand:V2HI 0 "general_movdst_operand" "=r,r,r,rl,m") @@ -12089,7 +11938,10 @@ mov.l\\t1f,r0\\n\\ [(set (match_operand:V4HI 0 "general_movdst_operand" "") (match_operand:V4HI 1 "general_movsrc_operand" ""))] "TARGET_SHMEDIA" - "{ if (prepare_move_operands (operands, V4HImode)) DONE; }") +{ + if (prepare_move_operands (operands, V4HImode)) + DONE; +}) (define_insn "movv4hi_i" [(set (match_operand:V4HI 0 "general_movdst_operand" "=r,r,r,rl,m") @@ -12111,7 +11963,10 @@ mov.l\\t1f,r0\\n\\ [(set (match_operand:V2SI 0 "general_movdst_operand" "") (match_operand:V2SI 1 "general_movsrc_operand" ""))] "TARGET_SHMEDIA" - "{ if (prepare_move_operands (operands, V2SImode)) DONE; }") +{ + if (prepare_move_operands (operands, V2SImode)) + DONE; +}) (define_insn "movv2si_i" [(set (match_operand:V2SI 0 "general_movdst_operand" "=r,r,r,rl,m") @@ -12173,7 +12028,6 @@ mov.l\\t1f,r0\\n\\ "#" "TARGET_SHMEDIA" [(const_int 0)] - " { rtx src0 = simplify_gen_subreg (V4HImode, operands[1], V2HImode, 0); rtx src1 = simplify_gen_subreg (V4HImode, operands[2], V2HImode, 0); @@ -12184,7 +12038,7 @@ mov.l\\t1f,r0\\n\\ emit_insn (gen_addv4hi3 (v4hi_dst, src0, src1)); emit_insn (gen_truncdisi2 (si_dst, di_dst)); DONE; -}" +} [(set_attr "highpart" "must_split")]) (define_insn "ssaddv2si3" @@ -12313,14 +12167,11 @@ mov.l\\t1f,r0\\n\\ (ashift:DI (match_operand:DI 2 "arith_reg_or_0_operand" "rZ") (match_operand:HI 4 "mextr_bit_offset" "i"))))] "TARGET_SHMEDIA && INTVAL (operands[3]) + INTVAL (operands[4]) == 64" - "* { static char templ[21]; - - sprintf (templ, \"mextr%d\\t%%N1, %%N2, %%0\", - (int) INTVAL (operands[3]) >> 3); + sprintf (templ, "mextr%d\\t%%N1, %%N2, %%0", (int) INTVAL (operands[3]) >> 3); return templ; -}" +} [(set_attr "type" "arith_media")]) (define_insn "*mextr_lr" @@ -12330,14 +12181,11 @@ mov.l\\t1f,r0\\n\\ (lshiftrt:DI (match_operand:DI 2 "arith_reg_or_0_operand" "rZ") (match_operand:HI 4 "mextr_bit_offset" "i"))))] "TARGET_SHMEDIA && INTVAL (operands[3]) + INTVAL (operands[4]) == 64" - "* { static char templ[21]; - - sprintf (templ, \"mextr%d\\t%%N2, %%N1, %%0\", - (int) INTVAL (operands[4]) >> 3); + sprintf (templ, "mextr%d\\t%%N2, %%N1, %%0", (int) INTVAL (operands[4]) >> 3); return templ; -}" +} [(set_attr "type" "arith_media")]) ; mextrN can be modelled with vec_select / vec_concat, but the selection @@ -12347,84 +12195,77 @@ mov.l\\t1f,r0\\n\\ (match_operand:DI 1 "arith_reg_or_0_operand" "rZ") (match_operand:DI 2 "arith_reg_or_0_operand" "rZ")] "TARGET_SHMEDIA" - " { emit_insn (gen_mextr_rl (operands[0], operands[1], operands[2], GEN_INT (1 * 8), GEN_INT (7 * 8))); DONE; -}") +}) (define_expand "mextr2" [(match_operand:DI 0 "arith_reg_dest" "") (match_operand:DI 1 "arith_reg_or_0_operand" "rZ") (match_operand:DI 2 "arith_reg_or_0_operand" "rZ")] "TARGET_SHMEDIA" - " { emit_insn (gen_mextr_rl (operands[0], operands[1], operands[2], GEN_INT (2 * 8), GEN_INT (6 * 8))); DONE; -}") +}) (define_expand "mextr3" [(match_operand:DI 0 "arith_reg_dest" "") (match_operand:DI 1 "arith_reg_or_0_operand" "rZ") (match_operand:DI 2 "arith_reg_or_0_operand" "rZ")] "TARGET_SHMEDIA" - " { emit_insn (gen_mextr_rl (operands[0], operands[1], operands[2], GEN_INT (3 * 8), GEN_INT (5 * 8))); DONE; -}") +}) (define_expand "mextr4" [(match_operand:DI 0 "arith_reg_dest" "") (match_operand:DI 1 "arith_reg_or_0_operand" "rZ") (match_operand:DI 2 "arith_reg_or_0_operand" "rZ")] "TARGET_SHMEDIA" - " { emit_insn (gen_mextr_rl (operands[0], operands[1], operands[2], GEN_INT (4 * 8), GEN_INT (4 * 8))); DONE; -}") +}) (define_expand "mextr5" [(match_operand:DI 0 "arith_reg_dest" "") (match_operand:DI 1 "arith_reg_or_0_operand" "rZ") (match_operand:DI 2 "arith_reg_or_0_operand" "rZ")] "TARGET_SHMEDIA" - " { emit_insn (gen_mextr_rl (operands[0], operands[1], operands[2], GEN_INT (5 * 8), GEN_INT (3 * 8))); DONE; -}") +}) (define_expand "mextr6" [(match_operand:DI 0 "arith_reg_dest" "") (match_operand:DI 1 "arith_reg_or_0_operand" "rZ") (match_operand:DI 2 "arith_reg_or_0_operand" "rZ")] "TARGET_SHMEDIA" - " { emit_insn (gen_mextr_rl (operands[0], operands[1], operands[2], GEN_INT (6 * 8), GEN_INT (2 * 8))); DONE; -}") +}) (define_expand "mextr7" [(match_operand:DI 0 "arith_reg_dest" "") (match_operand:DI 1 "arith_reg_or_0_operand" "rZ") (match_operand:DI 2 "arith_reg_or_0_operand" "rZ")] "TARGET_SHMEDIA" - " { emit_insn (gen_mextr_rl (operands[0], operands[1], operands[2], GEN_INT (7 * 8), GEN_INT (1 * 8))); DONE; -}") +}) (define_expand "mmacfx_wl" [(match_operand:V2SI 0 "arith_reg_dest" "") @@ -12432,12 +12273,11 @@ mov.l\\t1f,r0\\n\\ (match_operand:V2HI 2 "extend_reg_operand" "") (match_operand:V2SI 3 "arith_reg_operand" "")] "TARGET_SHMEDIA" - " { emit_insn (gen_mmacfx_wl_i (operands[0], operands[3], operands[1], operands[2])); DONE; -}") +}) ;; This could be highpart ignore if it only had inputs 2 or 3, but input 1 ;; is depend @@ -12463,12 +12303,11 @@ mov.l\\t1f,r0\\n\\ (match_operand:V2HI 2 "extend_reg_operand" "") (match_operand:V2SI 3 "arith_reg_operand" "")] "TARGET_SHMEDIA" - " { emit_insn (gen_mmacnfx_wl_i (operands[0], operands[3], operands[1], operands[2])); DONE; -}") +}) (define_insn "mmacnfx_wl_i" [(set (match_operand:V2SI 0 "arith_reg_dest" "=r") @@ -12551,24 +12390,22 @@ mov.l\\t1f,r0\\n\\ (match_operand:V4HI 1 "arith_reg_operand" "") (match_operand:V4HI 2 "arith_reg_operand" "")] "TARGET_SHMEDIA" - " { emit_insn ((TARGET_LITTLE_ENDIAN ? gen_mmul23_wl : gen_mmul01_wl) (operands[0], operands[1], operands[2])); DONE; -}") +}) (define_expand "mmullo_wl" [(match_operand:V2SI 0 "arith_reg_dest" "") (match_operand:V4HI 1 "arith_reg_operand" "") (match_operand:V4HI 2 "arith_reg_operand" "")] "TARGET_SHMEDIA" - " { emit_insn ((TARGET_LITTLE_ENDIAN ? gen_mmul01_wl : gen_mmul23_wl) (operands[0], operands[1], operands[2])); DONE; -}") +}) (define_insn "mmul23_wl" [(set (match_operand:V2SI 0 "arith_reg_dest" "=r") @@ -12578,9 +12415,11 @@ mov.l\\t1f,r0\\n\\ (sign_extend:V4SI (match_operand:V4HI 2 "arith_reg_operand" "r"))) (parallel [(const_int 2) (const_int 3)])))] "TARGET_SHMEDIA" - "* return (TARGET_LITTLE_ENDIAN - ? \"mmulhi.wl %1, %2, %0\" - : \"mmullo.wl %1, %2, %0\");" +{ + return (TARGET_LITTLE_ENDIAN + ? "mmulhi.wl %1, %2, %0" + : "mmullo.wl %1, %2, %0"); +} [(set_attr "type" "dmpy_media") (set (attr "highpart") (cond [(eq_attr "endian" "big") (const_string "ignore")] @@ -12594,9 +12433,11 @@ mov.l\\t1f,r0\\n\\ (sign_extend:V4SI (match_operand:V4HI 2 "arith_reg_operand" "r"))) (parallel [(const_int 0) (const_int 1)])))] "TARGET_SHMEDIA" - "* return (TARGET_LITTLE_ENDIAN - ? \"mmullo.wl %1, %2, %0\" - : \"mmulhi.wl %1, %2, %0\");" +{ + return (TARGET_LITTLE_ENDIAN + ? "mmullo.wl %1, %2, %0" + : "mmulhi.wl %1, %2, %0"); +} [(set_attr "type" "dmpy_media") (set (attr "highpart") (cond [(eq_attr "endian" "little") (const_string "ignore")] @@ -12609,12 +12450,11 @@ mov.l\\t1f,r0\\n\\ (match_operand:V4HI 2 "arith_reg_operand" "") (match_operand:DI 3 "arith_reg_operand" "")] "TARGET_SHMEDIA" - " { emit_insn (gen_mmulsum_wq_i (operands[0], operands[3], operands[1], operands[2])); DONE; -}") +}) (define_insn "mmulsum_wq_i" [(set (match_operand:DI 0 "arith_reg_dest" "=r") @@ -12645,12 +12485,11 @@ mov.l\\t1f,r0\\n\\ (match_operand:V4HI 1 "arith_reg_operand" "r") (match_operand:QI 2 "extend_reg_or_0_operand" "rZ")] "TARGET_SHMEDIA" - " { emit_insn ((TARGET_LITTLE_ENDIAN ? gen_mperm_w_little : gen_mperm_w_big) (operands[0], operands[1], operands[2])); DONE; -}") +}) ; This use of vec_select isn't exactly correct according to rtl.texi ; (because not constant), but it seems a straightforward extension. @@ -12699,12 +12538,11 @@ mov.l\\t1f,r0\\n\\ (match_operand:V8QI 2 "arith_reg_or_0_operand" "") (match_operand:DI 3 "arith_reg_operand" "")] "TARGET_SHMEDIA" - " { emit_insn (gen_msad_ubq_i (operands[0], operands[3], operands[1], operands[2])); DONE; -}") +}) (define_insn "msad_ubq_i" [(set (match_operand:DI 0 "arith_reg_dest" "=r") @@ -12805,24 +12643,22 @@ mov.l\\t1f,r0\\n\\ (match_operand:V8QI 1 "arith_reg_or_0_operand" "rZ") (match_operand:V8QI 2 "arith_reg_or_0_operand" "rZ")] "TARGET_SHMEDIA" - " { emit_insn ((TARGET_LITTLE_ENDIAN ? gen_mshf4_b : gen_mshf0_b) (operands[0], operands[1], operands[2])); DONE; -}") +}) (define_expand "mshflo_b" [(match_operand:V8QI 0 "arith_reg_dest" "") (match_operand:V8QI 1 "arith_reg_or_0_operand" "rZ") (match_operand:V8QI 2 "arith_reg_or_0_operand" "rZ")] "TARGET_SHMEDIA" - " { emit_insn ((TARGET_LITTLE_ENDIAN ? gen_mshf0_b : gen_mshf4_b) (operands[0], operands[1], operands[2])); DONE; -}") +}) (define_insn "mshf4_b" [(set @@ -12833,9 +12669,11 @@ mov.l\\t1f,r0\\n\\ (parallel [(const_int 4) (const_int 12) (const_int 5) (const_int 13) (const_int 6) (const_int 14) (const_int 7) (const_int 15)])))] "TARGET_SHMEDIA" - "* return (TARGET_LITTLE_ENDIAN - ? \"mshfhi.b %N1, %N2, %0\" - : \"mshflo.b %N1, %N2, %0\");" +{ + return (TARGET_LITTLE_ENDIAN + ? "mshfhi.b %N1, %N2, %0" + : "mshflo.b %N1, %N2, %0"); +} [(set_attr "type" "arith_media") (set (attr "highpart") (cond [(eq_attr "endian" "big") (const_string "ignore")] @@ -12850,9 +12688,11 @@ mov.l\\t1f,r0\\n\\ (parallel [(const_int 0) (const_int 8) (const_int 1) (const_int 9) (const_int 2) (const_int 10) (const_int 3) (const_int 11)])))] "TARGET_SHMEDIA" - "* return (TARGET_LITTLE_ENDIAN - ? \"mshflo.b %N1, %N2, %0\" - : \"mshfhi.b %N1, %N2, %0\");" +{ + return (TARGET_LITTLE_ENDIAN + ? "mshflo.b %N1, %N2, %0" + : "mshfhi.b %N1, %N2, %0"); +} [(set_attr "type" "arith_media") (set (attr "highpart") (cond [(eq_attr "endian" "little") (const_string "ignore")] @@ -12863,24 +12703,22 @@ mov.l\\t1f,r0\\n\\ (match_operand:V2SI 1 "arith_reg_or_0_operand" "rZ") (match_operand:V2SI 2 "arith_reg_or_0_operand" "rZ")] "TARGET_SHMEDIA" - " { emit_insn ((TARGET_LITTLE_ENDIAN ? gen_mshf4_l : gen_mshf0_l) (operands[0], operands[1], operands[2])); DONE; -}") +}) (define_expand "mshflo_l" [(match_operand:V2SI 0 "arith_reg_dest" "") (match_operand:V2SI 1 "arith_reg_or_0_operand" "rZ") (match_operand:V2SI 2 "arith_reg_or_0_operand" "rZ")] "TARGET_SHMEDIA" - " { emit_insn ((TARGET_LITTLE_ENDIAN ? gen_mshf0_l : gen_mshf4_l) (operands[0], operands[1], operands[2])); DONE; -}") +}) (define_insn "mshf4_l" [(set (match_operand:V2SI 0 "arith_reg_dest" "=r") @@ -12889,9 +12727,11 @@ mov.l\\t1f,r0\\n\\ (match_operand:V2SI 2 "arith_reg_or_0_operand" "rZ")) (parallel [(const_int 1) (const_int 3)])))] "TARGET_SHMEDIA" - "* return (TARGET_LITTLE_ENDIAN - ? \"mshfhi.l %N1, %N2, %0\" - : \"mshflo.l %N1, %N2, %0\");" +{ + return (TARGET_LITTLE_ENDIAN + ? "mshfhi.l %N1, %N2, %0" + : "mshflo.l %N1, %N2, %0"); +} [(set_attr "type" "arith_media") (set (attr "highpart") (cond [(eq_attr "endian" "big") (const_string "ignore")] @@ -12904,9 +12744,11 @@ mov.l\\t1f,r0\\n\\ (match_operand:V2SI 2 "arith_reg_or_0_operand" "rZ")) (parallel [(const_int 0) (const_int 2)])))] "TARGET_SHMEDIA" - "* return (TARGET_LITTLE_ENDIAN - ? \"mshflo.l %N1, %N2, %0\" - : \"mshfhi.l %N1, %N2, %0\");" +{ + return (TARGET_LITTLE_ENDIAN + ? "mshflo.l %N1, %N2, %0" + : "mshfhi.l %N1, %N2, %0"); +} [(set_attr "type" "arith_media") (set (attr "highpart") (cond [(eq_attr "endian" "little") (const_string "ignore")] @@ -12917,24 +12759,22 @@ mov.l\\t1f,r0\\n\\ (match_operand:V4HI 1 "arith_reg_or_0_operand" "rZ") (match_operand:V4HI 2 "arith_reg_or_0_operand" "rZ")] "TARGET_SHMEDIA" - " { emit_insn ((TARGET_LITTLE_ENDIAN ? gen_mshf4_w : gen_mshf0_w) (operands[0], operands[1], operands[2])); DONE; -}") +}) (define_expand "mshflo_w" [(match_operand:V4HI 0 "arith_reg_dest" "") (match_operand:V4HI 1 "arith_reg_or_0_operand" "rZ") (match_operand:V4HI 2 "arith_reg_or_0_operand" "rZ")] "TARGET_SHMEDIA" - " { emit_insn ((TARGET_LITTLE_ENDIAN ? gen_mshf0_w : gen_mshf4_w) (operands[0], operands[1], operands[2])); DONE; -}") +}) (define_insn "mshf4_w" [(set (match_operand:V4HI 0 "arith_reg_dest" "=r") @@ -12943,9 +12783,11 @@ mov.l\\t1f,r0\\n\\ (match_operand:V4HI 2 "arith_reg_or_0_operand" "rZ")) (parallel [(const_int 2) (const_int 6) (const_int 3) (const_int 7)])))] "TARGET_SHMEDIA" - "* return (TARGET_LITTLE_ENDIAN - ? \"mshfhi.w %N1, %N2, %0\" - : \"mshflo.w %N1, %N2, %0\");" +{ + return (TARGET_LITTLE_ENDIAN + ? "mshfhi.w %N1, %N2, %0" + : "mshflo.w %N1, %N2, %0"); +} [(set_attr "type" "arith_media") (set (attr "highpart") (cond [(eq_attr "endian" "big") (const_string "ignore")] @@ -12958,9 +12800,11 @@ mov.l\\t1f,r0\\n\\ (match_operand:V4HI 2 "arith_reg_or_0_operand" "rZ")) (parallel [(const_int 0) (const_int 4) (const_int 1) (const_int 5)])))] "TARGET_SHMEDIA" - "* return (TARGET_LITTLE_ENDIAN - ? \"mshflo.w %N1, %N2, %0\" - : \"mshfhi.w %N1, %N2, %0\");" +{ + return (TARGET_LITTLE_ENDIAN + ? "mshflo.w %N1, %N2, %0" + : "mshfhi.w %N1, %N2, %0"); +} [(set_attr "type" "arith_media") (set (attr "highpart") (cond [(eq_attr "endian" "little") (const_string "ignore")] @@ -12992,13 +12836,12 @@ mov.l\\t1f,r0\\n\\ && ! GENERAL_REGISTER_P (true_regnum (operands[0]))" [(set (match_dup 3) (match_dup 4)) (set (match_dup 5) (match_dup 6))] - " { operands[3] = gen_lowpart (SImode, operands[0]); operands[4] = gen_highpart (SImode, operands[1]); operands[5] = gen_highpart (SImode, operands[0]); operands[6] = gen_highpart (SImode, operands[2]); -}" +} [(set_attr "type" "arith_media")]) (define_insn "*mshfhi_l_di_rev" @@ -13020,7 +12863,6 @@ mov.l\\t1f,r0\\n\\ (clobber (match_operand:DI 3 "arith_reg_dest" ""))] "TARGET_SHMEDIA" [(const_int 0)] - " { emit_insn (gen_ashldi3_media (operands[3], simplify_gen_subreg (DImode, operands[1], @@ -13028,7 +12870,7 @@ mov.l\\t1f,r0\\n\\ GEN_INT (32))); emit_insn (gen_mshfhi_l_di (operands[0], operands[3], operands[2])); DONE; -}") +}) (define_insn "mshflo_l_di" [(set (match_operand:DI 0 "arith_reg_dest" "=r") @@ -13065,14 +12907,13 @@ mov.l\\t1f,r0\\n\\ "#" "rtx_equal_p (operands[0], operands[1])" [(const_int 0)] - " { HOST_WIDE_INT v = INTVAL (operands[2]); emit_insn (gen_shori_media (operands[0], operands[0], GEN_INT (v >> 16))); emit_insn (gen_shori_media (operands[0], operands[0], GEN_INT (v & 65535))); DONE; -}" +} [(set_attr "highpart" "ignore")]) @@ -13103,11 +12944,10 @@ mov.l\\t1f,r0\\n\\ && ! GENERAL_REGISTER_P (true_regnum (operands[0]))" [(set (match_dup 3) (match_dup 1)) (set (match_dup 4) (match_dup 2))] - " { operands[3] = simplify_gen_subreg (SFmode, operands[0], V2SFmode, 0); operands[4] = simplify_gen_subreg (SFmode, operands[0], V2SFmode, 4); -}" +} [(set_attr "type" "arith_media") (set_attr "highpart" "ignore")]) @@ -13138,7 +12978,6 @@ mov.l\\t1f,r0\\n\\ (match_operand 2 "shift_count_reg_operand" "")]))] "TARGET_SHMEDIA && ! register_operand (operands[2], VOIDmode)" [(set (match_dup 0) (match_dup 3))] - " { rtx count = operands[2]; enum machine_mode outer_mode = GET_MODE (operands[2]), inner_mode; @@ -13152,7 +12991,7 @@ mov.l\\t1f,r0\\n\\ subreg_lowpart_offset (outer_mode, inner_mode)); operands[3] = gen_rtx_fmt_ee (GET_CODE (operands[3]), GET_MODE (operands[3]), operands[1], count); -}") +}) (define_insn "ashlv4hi3" [(set (match_operand:V4HI 0 "arith_reg_dest" "=r") @@ -13207,7 +13046,6 @@ mov.l\\t1f,r0\\n\\ "#" "TARGET_SHMEDIA" [(const_int 0)] - " { rtx src0 = simplify_gen_subreg (V4HImode, operands[1], V2HImode, 0); rtx src1 = simplify_gen_subreg (V4HImode, operands[2], V2HImode, 0); @@ -13218,7 +13056,7 @@ mov.l\\t1f,r0\\n\\ emit_insn (gen_subv4hi3 (v4hi_dst, src0, src1)); emit_insn (gen_truncdisi2 (si_dst, di_dst)); DONE; -}" +} [(set_attr "highpart" "must_split")]) (define_insn "sssubv2si3" @@ -13366,10 +13204,11 @@ mov.l\\t1f,r0\\n\\ "#" "" [(pc)] - "emit_insn (gen_ldhi_q (operands[0], - gen_rtx_PLUS (SImode, operands[1], operands[2]))); - DONE;") - +{ + emit_insn (gen_ldhi_q (operands[0], + gen_rtx_PLUS (SImode, operands[1], operands[2]))); + DONE; +}) (define_insn_and_split "*ldhi_q_comb1" [(set (match_operand:DI 0 "arith_reg_dest" "=r") @@ -13390,10 +13229,11 @@ mov.l\\t1f,r0\\n\\ "#" "" [(pc)] - "emit_insn (gen_ldhi_q (operands[0], - gen_rtx_PLUS (SImode, operands[1], operands[2]))); - DONE;") - +{ + emit_insn (gen_ldhi_q (operands[0], + gen_rtx_PLUS (SImode, operands[1], operands[2]))); + DONE; +}) (define_insn "ldlo_l" [(set (match_operand:SI 0 "arith_reg_dest" "=r") @@ -13429,9 +13269,11 @@ mov.l\\t1f,r0\\n\\ "#" "" [(pc)] - "emit_insn (gen_ldlo_q (operands[0], - gen_rtx_PLUS (SImode, operands[1], operands[2]))); - DONE;") +{ + emit_insn (gen_ldlo_q (operands[0], + gen_rtx_PLUS (SImode, operands[1], operands[2]))); + DONE; +}) (define_insn_and_split "*ldlo_q_comb1" [(set (match_operand:DI 0 "arith_reg_dest" "=r") @@ -13449,9 +13291,11 @@ mov.l\\t1f,r0\\n\\ "#" "" [(pc)] - "emit_insn (gen_ldlo_q (operands[0], - gen_rtx_PLUS (SImode, operands[1], operands[2]))); - DONE;") +{ + emit_insn (gen_ldlo_q (operands[0], + gen_rtx_PLUS (SImode, operands[1], operands[2]))); + DONE; +}) (define_insn "sthi_l" [(set (zero_extract:SI @@ -13496,9 +13340,11 @@ mov.l\\t1f,r0\\n\\ "#" "" [(pc)] - "emit_insn (gen_sthi_q (gen_rtx_PLUS (SImode, operands[0], operands[1]), - operands[2])); - DONE;") +{ + emit_insn (gen_sthi_q (gen_rtx_PLUS (SImode, operands[0], operands[1]), + operands[2])); + DONE; +}) (define_insn_and_split "*sthi_q_comb1" [(set (zero_extract:DI @@ -13519,9 +13365,11 @@ mov.l\\t1f,r0\\n\\ "#" "" [(pc)] - "emit_insn (gen_sthi_q (gen_rtx_PLUS (SImode, operands[0], operands[1]), - operands[3])); - DONE;") +{ + emit_insn (gen_sthi_q (gen_rtx_PLUS (SImode, operands[0], operands[1]), + operands[3])); + DONE; +}) ;; This is highpart user because the address is used as full 64 bit. (define_insn "stlo_l" @@ -13558,9 +13406,11 @@ mov.l\\t1f,r0\\n\\ "#" "" [(pc)] - "emit_insn (gen_stlo_q (gen_rtx_PLUS (SImode, operands[0], operands[1]), - operands[2])); - DONE;") +{ + emit_insn (gen_stlo_q (gen_rtx_PLUS (SImode, operands[0], operands[1]), + operands[2])); + DONE; +}) (define_insn_and_split "*stlo_q_comb1" [(set (zero_extract:DI @@ -13577,9 +13427,11 @@ mov.l\\t1f,r0\\n\\ "#" "" [(pc)] - "emit_insn (gen_stlo_q (gen_rtx_PLUS (SImode, operands[0], operands[1]), - operands[3])); - DONE;") +{ + emit_insn (gen_stlo_q (gen_rtx_PLUS (SImode, operands[0], operands[1]), + operands[3])); + DONE; +}) (define_insn "ldhi_l64" [(set (match_operand:SI 0 "arith_reg_dest" "=r") @@ -13703,7 +13555,6 @@ mov.l\\t1f,r0\\n\\ [(set (match_operand:DI 0 "arith_reg_dest" "") (ffs:DI (match_operand:DI 1 "arith_reg_operand" "")))] "TARGET_SHMEDIA" - " { rtx scratch = gen_reg_rtx (DImode); rtx last; @@ -13718,13 +13569,12 @@ mov.l\\t1f,r0\\n\\ set_unique_reg_note (last, REG_EQUAL, gen_rtx_FFS (DImode, operands[0])); DONE; -}") +}) (define_expand "ffssi2" [(set (match_operand:SI 0 "arith_reg_dest" "") (ffs:SI (match_operand:SI 1 "arith_reg_operand" "")))] "TARGET_SHMEDIA" - " { rtx scratch = gen_reg_rtx (SImode); rtx discratch = gen_reg_rtx (DImode); @@ -13742,7 +13592,7 @@ mov.l\\t1f,r0\\n\\ set_unique_reg_note (last, REG_EQUAL, gen_rtx_FFS (SImode, operands[0])); DONE; -}") +}) (define_insn "byterev" [(set (match_operand:V8QI 0 "arith_reg_dest" "=r") @@ -13759,12 +13609,11 @@ mov.l\\t1f,r0\\n\\ (match_operand:SI 1 "const_int_operand" "n") (match_operand:SI 2 "const_int_operand" "n"))] "TARGET_SHMEDIA" - "* { operands[0] = gen_rtx_MEM (QImode, operands[0]); - output_asm_insn (\"ld%M0.b %m0,r63\", operands); - return \"\"; -}" + output_asm_insn ("ld%M0.b %m0,r63", operands); + return ""; +} [(set_attr "type" "other")]) (define_insn "*prefetch_i4" @@ -13772,10 +13621,7 @@ mov.l\\t1f,r0\\n\\ (match_operand:SI 1 "const_int_operand" "n") (match_operand:SI 2 "const_int_operand" "n"))] "(TARGET_HARD_SH4 || TARGET_SHCOMPACT) && !TARGET_VXWORKS_RTP" - "* -{ - return \"pref @%0\"; -}" + "pref @%0"; [(set_attr "type" "other")]) ;; In user mode, the "pref" instruction will raise a RADDERR exception @@ -13787,7 +13633,6 @@ mov.l\\t1f,r0\\n\\ (match_operand:SI 2 "const_int_operand" "n"))] "TARGET_SH2A || ((TARGET_HARD_SH4 || TARGET_SH5) && (TARGET_SHMEDIA || !TARGET_VXWORKS_RTP))" - " { if (GET_MODE (operands[0]) != Pmode || !CONST_INT_P (operands[1]) @@ -13795,7 +13640,7 @@ mov.l\\t1f,r0\\n\\ FAIL; if (! TARGET_SHMEDIA) operands[0] = force_reg (Pmode, operands[0]); -}") +}) (define_insn "prefetch_m2a" [(prefetch (match_operand:SI 0 "register_operand" "r") @@ -13809,7 +13654,6 @@ mov.l\\t1f,r0\\n\\ [(set (mem:BLK (match_operand:QI 0 "cache_address_operand" "p")) (unspec:BLK [(const_int 0)] UNSPEC_ALLOCO))] "TARGET_SHMEDIA32" - "* { rtx xops[2]; @@ -13823,9 +13667,9 @@ mov.l\\t1f,r0\\n\\ xops[0] = operands[0]; xops[1] = const0_rtx; } - output_asm_insn (\"alloco %0, %1\", xops); - return \"\"; -}" + output_asm_insn ("alloco %0, %1", xops); + return ""; +} [(set_attr "type" "other")]) (define_split @@ -13833,14 +13677,13 @@ mov.l\\t1f,r0\\n\\ (match_operand 1 "" ""))] "TARGET_SHMEDIA && reload_completed" [(set (match_dup 0) (match_dup 1))] - " { int n_changes = 0; for_each_rtx (&operands[1], shmedia_cleanup_truncate, &n_changes); if (!n_changes) FAIL; -}") +}) ; Stack Protector Patterns |