Mercurial > hg > CbC > CbC_gcc
comparison gcc/config/mips/mips-dspr2.md @ 67:f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
author | nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 22 Mar 2011 17:18:12 +0900 |
parents | 77e2b8dfacca |
children | 04ced10e8804 |
comparison
equal
deleted
inserted
replaced
65:65488c3d617d | 67:f6334be47118 |
---|---|
1 ;; Copyright (C) 2007 Free Software Foundation, Inc. | 1 ;; Copyright (C) 2007, 2010 Free Software Foundation, Inc. |
2 ;; | 2 ;; |
3 ;; This file is part of GCC. | 3 ;; This file is part of GCC. |
4 ;; | 4 ;; |
5 ;; GCC is free software; you can redistribute it and/or modify | 5 ;; GCC is free software; you can redistribute it and/or modify |
6 ;; it under the terms of the GNU General Public License as published by | 6 ;; it under the terms of the GNU General Public License as published by |
16 ;; along with GCC; see the file COPYING3. If not see | 16 ;; along with GCC; see the file COPYING3. If not see |
17 ;; <http://www.gnu.org/licenses/>. | 17 ;; <http://www.gnu.org/licenses/>. |
18 ;; | 18 ;; |
19 ; MIPS DSP ASE REV 2 Revision 0.02 11/24/2006 | 19 ; MIPS DSP ASE REV 2 Revision 0.02 11/24/2006 |
20 | 20 |
21 (define_c_enum "unspec" [ | |
22 UNSPEC_ABSQ_S_QB | |
23 UNSPEC_ADDU_PH | |
24 UNSPEC_ADDU_S_PH | |
25 UNSPEC_ADDUH_QB | |
26 UNSPEC_ADDUH_R_QB | |
27 UNSPEC_APPEND | |
28 UNSPEC_BALIGN | |
29 UNSPEC_CMPGDU_EQ_QB | |
30 UNSPEC_CMPGDU_LT_QB | |
31 UNSPEC_CMPGDU_LE_QB | |
32 UNSPEC_DPA_W_PH | |
33 UNSPEC_DPS_W_PH | |
34 UNSPEC_MADD | |
35 UNSPEC_MADDU | |
36 UNSPEC_MSUB | |
37 UNSPEC_MSUBU | |
38 UNSPEC_MUL_PH | |
39 UNSPEC_MUL_S_PH | |
40 UNSPEC_MULQ_RS_W | |
41 UNSPEC_MULQ_S_PH | |
42 UNSPEC_MULQ_S_W | |
43 UNSPEC_MULSA_W_PH | |
44 UNSPEC_MULT | |
45 UNSPEC_MULTU | |
46 UNSPEC_PRECR_QB_PH | |
47 UNSPEC_PRECR_SRA_PH_W | |
48 UNSPEC_PRECR_SRA_R_PH_W | |
49 UNSPEC_PREPEND | |
50 UNSPEC_SHRA_QB | |
51 UNSPEC_SHRA_R_QB | |
52 UNSPEC_SHRL_PH | |
53 UNSPEC_SUBU_PH | |
54 UNSPEC_SUBU_S_PH | |
55 UNSPEC_SUBUH_QB | |
56 UNSPEC_SUBUH_R_QB | |
57 UNSPEC_ADDQH_PH | |
58 UNSPEC_ADDQH_R_PH | |
59 UNSPEC_ADDQH_W | |
60 UNSPEC_ADDQH_R_W | |
61 UNSPEC_SUBQH_PH | |
62 UNSPEC_SUBQH_R_PH | |
63 UNSPEC_SUBQH_W | |
64 UNSPEC_SUBQH_R_W | |
65 UNSPEC_DPAX_W_PH | |
66 UNSPEC_DPSX_W_PH | |
67 UNSPEC_DPAQX_S_W_PH | |
68 UNSPEC_DPAQX_SA_W_PH | |
69 UNSPEC_DPSQX_S_W_PH | |
70 UNSPEC_DPSQX_SA_W_PH | |
71 ]) | |
72 | |
21 (define_insn "mips_absq_s_qb" | 73 (define_insn "mips_absq_s_qb" |
22 [(parallel | 74 [(parallel |
23 [(set (match_operand:V4QI 0 "register_operand" "=d") | 75 [(set (match_operand:V4QI 0 "register_operand" "=d") |
24 (unspec:V4QI [(match_operand:V4QI 1 "reg_or_0_operand" "dYG")] | 76 (unspec:V4QI [(match_operand:V4QI 1 "reg_or_0_operand" "dYG")] |
25 UNSPEC_ABSQ_S_QB)) | 77 UNSPEC_ABSQ_S_QB)) |
170 "ISA_HAS_DSPR2 && !TARGET_64BIT" | 222 "ISA_HAS_DSPR2 && !TARGET_64BIT" |
171 "dps.w.ph\t%q0,%z2,%z3" | 223 "dps.w.ph\t%q0,%z2,%z3" |
172 [(set_attr "type" "imadd") | 224 [(set_attr "type" "imadd") |
173 (set_attr "mode" "SI")]) | 225 (set_attr "mode" "SI")]) |
174 | 226 |
175 (define_expand "mips_madd<u>" | |
176 [(set (match_operand:DI 0 "register_operand") | |
177 (plus:DI | |
178 (mult:DI (any_extend:DI (match_operand:SI 2 "register_operand")) | |
179 (any_extend:DI (match_operand:SI 3 "register_operand"))) | |
180 (match_operand:DI 1 "register_operand")))] | |
181 "ISA_HAS_DSPR2 && !TARGET_64BIT") | |
182 | |
183 (define_expand "mips_msub<u>" | |
184 [(set (match_operand:DI 0 "register_operand") | |
185 (minus:DI | |
186 (match_operand:DI 1 "register_operand") | |
187 (mult:DI (any_extend:DI (match_operand:SI 2 "register_operand")) | |
188 (any_extend:DI (match_operand:SI 3 "register_operand")))))] | |
189 "ISA_HAS_DSPR2 && !TARGET_64BIT") | |
190 | |
191 (define_insn "mulv2hi3" | 227 (define_insn "mulv2hi3" |
192 [(parallel | 228 [(parallel |
193 [(set (match_operand:V2HI 0 "register_operand" "=d") | 229 [(set (match_operand:V2HI 0 "register_operand" "=d") |
194 (mult:V2HI (match_operand:V2HI 1 "register_operand" "d") | 230 (mult:V2HI (match_operand:V2HI 1 "register_operand" "d") |
195 (match_operand:V2HI 2 "register_operand" "d"))) | 231 (match_operand:V2HI 2 "register_operand" "d"))) |
264 (match_operand:V2HI 3 "reg_or_0_operand" "dYG")] | 300 (match_operand:V2HI 3 "reg_or_0_operand" "dYG")] |
265 UNSPEC_MULSA_W_PH))] | 301 UNSPEC_MULSA_W_PH))] |
266 "ISA_HAS_DSPR2 && !TARGET_64BIT" | 302 "ISA_HAS_DSPR2 && !TARGET_64BIT" |
267 "mulsa.w.ph\t%q0,%z2,%z3" | 303 "mulsa.w.ph\t%q0,%z2,%z3" |
268 [(set_attr "type" "imadd") | 304 [(set_attr "type" "imadd") |
269 (set_attr "mode" "SI")]) | |
270 | |
271 (define_insn "mips_mult" | |
272 [(set (match_operand:DI 0 "register_operand" "=a") | |
273 (mult:DI | |
274 (sign_extend:DI (match_operand:SI 1 "register_operand" "d")) | |
275 (sign_extend:DI (match_operand:SI 2 "register_operand" "d"))))] | |
276 "ISA_HAS_DSPR2 && !TARGET_64BIT" | |
277 "mult\t%q0,%1,%2" | |
278 [(set_attr "type" "imul") | |
279 (set_attr "mode" "SI")]) | |
280 | |
281 (define_insn "mips_multu" | |
282 [(set (match_operand:DI 0 "register_operand" "=a") | |
283 (mult:DI | |
284 (zero_extend:DI (match_operand:SI 1 "register_operand" "d")) | |
285 (zero_extend:DI (match_operand:SI 2 "register_operand" "d"))))] | |
286 "ISA_HAS_DSPR2 && !TARGET_64BIT" | |
287 "multu\t%q0,%1,%2" | |
288 [(set_attr "type" "imul") | |
289 (set_attr "mode" "SI")]) | 305 (set_attr "mode" "SI")]) |
290 | 306 |
291 (define_insn "mips_precr_qb_ph" | 307 (define_insn "mips_precr_qb_ph" |
292 [(set (match_operand:V4QI 0 "register_operand" "=d") | 308 [(set (match_operand:V4QI 0 "register_operand" "=d") |
293 (unspec:V4QI [(match_operand:V2HI 1 "reg_or_0_operand" "dYG") | 309 (unspec:V4QI [(match_operand:V2HI 1 "reg_or_0_operand" "dYG") |