aboutsummaryrefslogtreecommitdiff
path: root/contrib/gcc/config/mips/mips-dsp.md
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/gcc/config/mips/mips-dsp.md')
-rw-r--r--contrib/gcc/config/mips/mips-dsp.md1057
1 files changed, 0 insertions, 1057 deletions
diff --git a/contrib/gcc/config/mips/mips-dsp.md b/contrib/gcc/config/mips/mips-dsp.md
deleted file mode 100644
index 3fdcc5930019..000000000000
--- a/contrib/gcc/config/mips/mips-dsp.md
+++ /dev/null
@@ -1,1057 +0,0 @@
-(define_constants
- [(CCDSP_PO_REGNUM 182)
- (CCDSP_SC_REGNUM 183)
- (CCDSP_CA_REGNUM 184)
- (CCDSP_OU_REGNUM 185)
- (CCDSP_CC_REGNUM 186)
- (CCDSP_EF_REGNUM 187)])
-
-;; This mode macro allows si, v2hi, v4qi for all possible modes in DSP ASE.
-(define_mode_macro DSP [(SI "TARGET_DSP")
- (V2HI "TARGET_DSP")
- (V4QI "TARGET_DSP")])
-
-;; This mode macro allows v2hi, v4qi for vector/SIMD data.
-(define_mode_macro DSPV [(V2HI "TARGET_DSP")
- (V4QI "TARGET_DSP")])
-
-;; This mode macro allows si, v2hi for Q31 and V2Q15 fixed-point data.
-(define_mode_macro DSPQ [(SI "TARGET_DSP")
- (V2HI "TARGET_DSP")])
-
-;; DSP instructions use q for fixed-point data, and u for integer in the infix.
-(define_mode_attr dspfmt1 [(SI "q") (V2HI "q") (V4QI "u")])
-
-;; DSP instructions use nothing for fixed-point data, and u for integer in
-;; the infix.
-(define_mode_attr dspfmt1_1 [(SI "") (V2HI "") (V4QI "u")])
-
-;; DSP instructions use w, ph, qb in the postfix.
-(define_mode_attr dspfmt2 [(SI "w") (V2HI "ph") (V4QI "qb")])
-
-;; DSP shift masks for SI, V2HI, V4QI.
-(define_mode_attr dspshift_mask [(SI "0x1f") (V2HI "0xf") (V4QI "0x7")])
-
-;; MIPS DSP ASE Revision 0.98 3/24/2005
-;; Table 2-1. MIPS DSP ASE Instructions: Arithmetic
-;; ADDQ*
-(define_insn "add<DSPV:mode>3"
- [(parallel
- [(set (match_operand:DSPV 0 "register_operand" "=d")
- (plus:DSPV (match_operand:DSPV 1 "register_operand" "d")
- (match_operand:DSPV 2 "register_operand" "d")))
- (set (reg:CCDSP CCDSP_OU_REGNUM)
- (unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_ADDQ))])]
- ""
- "add<DSPV:dspfmt1>.<DSPV:dspfmt2>\t%0,%1,%2"
- [(set_attr "type" "arith")
- (set_attr "mode" "SI")])
-
-(define_insn "mips_add<DSP:dspfmt1>_s_<DSP:dspfmt2>"
- [(parallel
- [(set (match_operand:DSP 0 "register_operand" "=d")
- (unspec:DSP [(match_operand:DSP 1 "register_operand" "d")
- (match_operand:DSP 2 "register_operand" "d")]
- UNSPEC_ADDQ_S))
- (set (reg:CCDSP CCDSP_OU_REGNUM)
- (unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_ADDQ_S))])]
- ""
- "add<DSP:dspfmt1>_s.<DSP:dspfmt2>\t%0,%1,%2"
- [(set_attr "type" "arith")
- (set_attr "mode" "SI")])
-
-;; SUBQ*
-(define_insn "sub<DSPV:mode>3"
- [(parallel
- [(set (match_operand:DSPV 0 "register_operand" "=d")
- (minus:DSPV (match_operand:DSPV 1 "register_operand" "d")
- (match_operand:DSPV 2 "register_operand" "d")))
- (set (reg:CCDSP CCDSP_OU_REGNUM)
- (unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_SUBQ))])]
- "TARGET_DSP"
- "sub<DSPV:dspfmt1>.<DSPV:dspfmt2>\t%0,%1,%2"
- [(set_attr "type" "arith")
- (set_attr "mode" "SI")])
-
-(define_insn "mips_sub<DSP:dspfmt1>_s_<DSP:dspfmt2>"
- [(parallel
- [(set (match_operand:DSP 0 "register_operand" "=d")
- (unspec:DSP [(match_operand:DSP 1 "register_operand" "d")
- (match_operand:DSP 2 "register_operand" "d")]
- UNSPEC_SUBQ_S))
- (set (reg:CCDSP CCDSP_OU_REGNUM)
- (unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_SUBQ_S))])]
- "TARGET_DSP"
- "sub<DSP:dspfmt1>_s.<DSP:dspfmt2>\t%0,%1,%2"
- [(set_attr "type" "arith")
- (set_attr "mode" "SI")])
-
-;; ADDSC
-(define_insn "mips_addsc"
- [(parallel
- [(set (match_operand:SI 0 "register_operand" "=d")
- (unspec:SI [(match_operand:SI 1 "register_operand" "d")
- (match_operand:SI 2 "register_operand" "d")]
- UNSPEC_ADDSC))
- (set (reg:CCDSP CCDSP_CA_REGNUM)
- (unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_ADDSC))])]
- "TARGET_DSP"
- "addsc\t%0,%1,%2"
- [(set_attr "type" "arith")
- (set_attr "mode" "SI")])
-
-;; ADDWC
-(define_insn "mips_addwc"
- [(parallel
- [(set (match_operand:SI 0 "register_operand" "=d")
- (unspec:SI [(match_operand:SI 1 "register_operand" "d")
- (match_operand:SI 2 "register_operand" "d")
- (reg:CCDSP CCDSP_CA_REGNUM)]
- UNSPEC_ADDWC))
- (set (reg:CCDSP CCDSP_OU_REGNUM)
- (unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_ADDWC))])]
- "TARGET_DSP"
- "addwc\t%0,%1,%2"
- [(set_attr "type" "arith")
- (set_attr "mode" "SI")])
-
-;; MODSUB
-(define_insn "mips_modsub"
- [(set (match_operand:SI 0 "register_operand" "=d")
- (unspec:SI [(match_operand:SI 1 "register_operand" "d")
- (match_operand:SI 2 "register_operand" "d")]
- UNSPEC_MODSUB))]
- "TARGET_DSP"
- "modsub\t%0,%1,%2"
- [(set_attr "type" "arith")
- (set_attr "mode" "SI")])
-
-;; RADDU*
-(define_insn "mips_raddu_w_qb"
- [(set (match_operand:SI 0 "register_operand" "=d")
- (unspec:SI [(match_operand:V4QI 1 "register_operand" "d")]
- UNSPEC_RADDU_W_QB))]
- "TARGET_DSP"
- "raddu.w.qb\t%0,%1"
- [(set_attr "type" "arith")
- (set_attr "mode" "SI")])
-
-;; ABSQ*
-(define_insn "mips_absq_s_<DSPQ:dspfmt2>"
- [(parallel
- [(set (match_operand:DSPQ 0 "register_operand" "=d")
- (unspec:DSPQ [(match_operand:DSPQ 1 "register_operand" "d")]
- UNSPEC_ABSQ_S))
- (set (reg:CCDSP CCDSP_OU_REGNUM)
- (unspec:CCDSP [(match_dup 1)] UNSPEC_ABSQ_S))])]
- "TARGET_DSP"
- "absq_s.<DSPQ:dspfmt2>\t%0,%1"
- [(set_attr "type" "arith")
- (set_attr "mode" "SI")])
-
-;; PRECRQ*
-(define_insn "mips_precrq_qb_ph"
- [(set (match_operand:V4QI 0 "register_operand" "=d")
- (unspec:V4QI [(match_operand:V2HI 1 "register_operand" "d")
- (match_operand:V2HI 2 "register_operand" "d")]
- UNSPEC_PRECRQ_QB_PH))]
- "TARGET_DSP"
- "precrq.qb.ph\t%0,%1,%2"
- [(set_attr "type" "arith")
- (set_attr "mode" "SI")])
-
-(define_insn "mips_precrq_ph_w"
- [(set (match_operand:V2HI 0 "register_operand" "=d")
- (unspec:V2HI [(match_operand:SI 1 "register_operand" "d")
- (match_operand:SI 2 "register_operand" "d")]
- UNSPEC_PRECRQ_PH_W))]
- "TARGET_DSP"
- "precrq.ph.w\t%0,%1,%2"
- [(set_attr "type" "arith")
- (set_attr "mode" "SI")])
-
-(define_insn "mips_precrq_rs_ph_w"
- [(parallel
- [(set (match_operand:V2HI 0 "register_operand" "=d")
- (unspec:V2HI [(match_operand:SI 1 "register_operand" "d")
- (match_operand:SI 2 "register_operand" "d")]
- UNSPEC_PRECRQ_RS_PH_W))
- (set (reg:CCDSP CCDSP_OU_REGNUM)
- (unspec:CCDSP [(match_dup 1) (match_dup 2)]
- UNSPEC_PRECRQ_RS_PH_W))])]
- "TARGET_DSP"
- "precrq_rs.ph.w\t%0,%1,%2"
- [(set_attr "type" "arith")
- (set_attr "mode" "SI")])
-
-;; PRECRQU*
-(define_insn "mips_precrqu_s_qb_ph"
- [(parallel
- [(set (match_operand:V4QI 0 "register_operand" "=d")
- (unspec:V4QI [(match_operand:V2HI 1 "register_operand" "d")
- (match_operand:V2HI 2 "register_operand" "d")]
- UNSPEC_PRECRQU_S_QB_PH))
- (set (reg:CCDSP CCDSP_OU_REGNUM)
- (unspec:CCDSP [(match_dup 1) (match_dup 2)]
- UNSPEC_PRECRQU_S_QB_PH))])]
- "TARGET_DSP"
- "precrqu_s.qb.ph\t%0,%1,%2"
- [(set_attr "type" "arith")
- (set_attr "mode" "SI")])
-
-;; PRECEQ*
-(define_insn "mips_preceq_w_phl"
- [(set (match_operand:SI 0 "register_operand" "=d")
- (unspec:SI [(match_operand:V2HI 1 "register_operand" "d")]
- UNSPEC_PRECEQ_W_PHL))]
- "TARGET_DSP"
- "preceq.w.phl\t%0,%1"
- [(set_attr "type" "arith")
- (set_attr "mode" "SI")])
-
-(define_insn "mips_preceq_w_phr"
- [(set (match_operand:SI 0 "register_operand" "=d")
- (unspec:SI [(match_operand:V2HI 1 "register_operand" "d")]
- UNSPEC_PRECEQ_W_PHR))]
- "TARGET_DSP"
- "preceq.w.phr\t%0,%1"
- [(set_attr "type" "arith")
- (set_attr "mode" "SI")])
-
-;; PRECEQU*
-(define_insn "mips_precequ_ph_qbl"
- [(set (match_operand:V2HI 0 "register_operand" "=d")
- (unspec:V2HI [(match_operand:V4QI 1 "register_operand" "d")]
- UNSPEC_PRECEQU_PH_QBL))]
- "TARGET_DSP"
- "precequ.ph.qbl\t%0,%1"
- [(set_attr "type" "arith")
- (set_attr "mode" "SI")])
-
-(define_insn "mips_precequ_ph_qbr"
- [(set (match_operand:V2HI 0 "register_operand" "=d")
- (unspec:V2HI [(match_operand:V4QI 1 "register_operand" "d")]
- UNSPEC_PRECEQU_PH_QBR))]
- "TARGET_DSP"
- "precequ.ph.qbr\t%0,%1"
- [(set_attr "type" "arith")
- (set_attr "mode" "SI")])
-
-(define_insn "mips_precequ_ph_qbla"
- [(set (match_operand:V2HI 0 "register_operand" "=d")
- (unspec:V2HI [(match_operand:V4QI 1 "register_operand" "d")]
- UNSPEC_PRECEQU_PH_QBLA))]
- "TARGET_DSP"
- "precequ.ph.qbla\t%0,%1"
- [(set_attr "type" "arith")
- (set_attr "mode" "SI")])
-
-(define_insn "mips_precequ_ph_qbra"
- [(set (match_operand:V2HI 0 "register_operand" "=d")
- (unspec:V2HI [(match_operand:V4QI 1 "register_operand" "d")]
- UNSPEC_PRECEQU_PH_QBRA))]
- "TARGET_DSP"
- "precequ.ph.qbra\t%0,%1"
- [(set_attr "type" "arith")
- (set_attr "mode" "SI")])
-
-;; PRECEU*
-(define_insn "mips_preceu_ph_qbl"
- [(set (match_operand:V2HI 0 "register_operand" "=d")
- (unspec:V2HI [(match_operand:V4QI 1 "register_operand" "d")]
- UNSPEC_PRECEU_PH_QBL))]
- "TARGET_DSP"
- "preceu.ph.qbl\t%0,%1"
- [(set_attr "type" "arith")
- (set_attr "mode" "SI")])
-
-(define_insn "mips_preceu_ph_qbr"
- [(set (match_operand:V2HI 0 "register_operand" "=d")
- (unspec:V2HI [(match_operand:V4QI 1 "register_operand" "d")]
- UNSPEC_PRECEU_PH_QBR))]
- "TARGET_DSP"
- "preceu.ph.qbr\t%0,%1"
- [(set_attr "type" "arith")
- (set_attr "mode" "SI")])
-
-(define_insn "mips_preceu_ph_qbla"
- [(set (match_operand:V2HI 0 "register_operand" "=d")
- (unspec:V2HI [(match_operand:V4QI 1 "register_operand" "d")]
- UNSPEC_PRECEU_PH_QBLA))]
- "TARGET_DSP"
- "preceu.ph.qbla\t%0,%1"
- [(set_attr "type" "arith")
- (set_attr "mode" "SI")])
-
-(define_insn "mips_preceu_ph_qbra"
- [(set (match_operand:V2HI 0 "register_operand" "=d")
- (unspec:V2HI [(match_operand:V4QI 1 "register_operand" "d")]
- UNSPEC_PRECEU_PH_QBRA))]
- "TARGET_DSP"
- "preceu.ph.qbra\t%0,%1"
- [(set_attr "type" "arith")
- (set_attr "mode" "SI")])
-
-;; Table 2-2. MIPS DSP ASE Instructions: Shift
-;; SHLL*
-(define_insn "mips_shll_<DSPV:dspfmt2>"
- [(parallel
- [(set (match_operand:DSPV 0 "register_operand" "=d,d")
- (unspec:DSPV [(match_operand:DSPV 1 "register_operand" "d,d")
- (match_operand:SI 2 "arith_operand" "I,d")]
- UNSPEC_SHLL))
- (set (reg:CCDSP CCDSP_OU_REGNUM)
- (unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_SHLL))])]
- "TARGET_DSP"
-{
- if (which_alternative == 0)
- {
- if (INTVAL (operands[2])
- & ~(unsigned HOST_WIDE_INT) <DSPV:dspshift_mask>)
- operands[2] = GEN_INT (INTVAL (operands[2]) & <DSPV:dspshift_mask>);
- return "shll.<DSPV:dspfmt2>\t%0,%1,%2";
- }
- return "shllv.<DSPV:dspfmt2>\t%0,%1,%2";
-}
- [(set_attr "type" "shift")
- (set_attr "mode" "SI")])
-
-(define_insn "mips_shll_s_<DSPQ:dspfmt2>"
- [(parallel
- [(set (match_operand:DSPQ 0 "register_operand" "=d,d")
- (unspec:DSPQ [(match_operand:DSPQ 1 "register_operand" "d,d")
- (match_operand:SI 2 "arith_operand" "I,d")]
- UNSPEC_SHLL_S))
- (set (reg:CCDSP CCDSP_OU_REGNUM)
- (unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_SHLL_S))])]
- "TARGET_DSP"
-{
- if (which_alternative == 0)
- {
- if (INTVAL (operands[2])
- & ~(unsigned HOST_WIDE_INT) <DSPQ:dspshift_mask>)
- operands[2] = GEN_INT (INTVAL (operands[2]) & <DSPQ:dspshift_mask>);
- return "shll_s.<DSPQ:dspfmt2>\t%0,%1,%2";
- }
- return "shllv_s.<DSPQ:dspfmt2>\t%0,%1,%2";
-}
- [(set_attr "type" "shift")
- (set_attr "mode" "SI")])
-
-;; SHRL*
-(define_insn "mips_shrl_qb"
- [(set (match_operand:V4QI 0 "register_operand" "=d,d")
- (unspec:V4QI [(match_operand:V4QI 1 "register_operand" "d,d")
- (match_operand:SI 2 "arith_operand" "I,d")]
- UNSPEC_SHRL_QB))]
- "TARGET_DSP"
-{
- if (which_alternative == 0)
- {
- if (INTVAL (operands[2]) & ~(unsigned HOST_WIDE_INT) 0x7)
- operands[2] = GEN_INT (INTVAL (operands[2]) & 0x7);
- return "shrl.qb\t%0,%1,%2";
- }
- return "shrlv.qb\t%0,%1,%2";
-}
- [(set_attr "type" "shift")
- (set_attr "mode" "SI")])
-
-;; SHRA*
-(define_insn "mips_shra_ph"
- [(set (match_operand:V2HI 0 "register_operand" "=d,d")
- (unspec:V2HI [(match_operand:V2HI 1 "register_operand" "d,d")
- (match_operand:SI 2 "arith_operand" "I,d")]
- UNSPEC_SHRA_PH))]
- "TARGET_DSP"
-{
- if (which_alternative == 0)
- {
- if (INTVAL (operands[2]) & ~(unsigned HOST_WIDE_INT) 0xf)
- operands[2] = GEN_INT (INTVAL (operands[2]) & 0xf);
- return "shra.ph\t%0,%1,%2";
- }
- return "shrav.ph\t%0,%1,%2";
-}
- [(set_attr "type" "shift")
- (set_attr "mode" "SI")])
-
-(define_insn "mips_shra_r_<DSPQ:dspfmt2>"
- [(set (match_operand:DSPQ 0 "register_operand" "=d,d")
- (unspec:DSPQ [(match_operand:DSPQ 1 "register_operand" "d,d")
- (match_operand:SI 2 "arith_operand" "I,d")]
- UNSPEC_SHRA_R))]
- "TARGET_DSP"
-{
- if (which_alternative == 0)
- {
- if (INTVAL (operands[2])
- & ~(unsigned HOST_WIDE_INT) <DSPQ:dspshift_mask>)
- operands[2] = GEN_INT (INTVAL (operands[2]) & <DSPQ:dspshift_mask>);
- return "shra_r.<DSPQ:dspfmt2>\t%0,%1,%2";
- }
- return "shrav_r.<DSPQ:dspfmt2>\t%0,%1,%2";
-}
- [(set_attr "type" "shift")
- (set_attr "mode" "SI")])
-
-;; Table 2-3. MIPS DSP ASE Instructions: Multiply
-;; MULEU*
-(define_insn "mips_muleu_s_ph_qbl"
- [(parallel
- [(set (match_operand:V2HI 0 "register_operand" "=d")
- (unspec:V2HI [(match_operand:V4QI 1 "register_operand" "d")
- (match_operand:V2HI 2 "register_operand" "d")]
- UNSPEC_MULEU_S_PH_QBL))
- (set (reg:CCDSP CCDSP_OU_REGNUM)
- (unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_MULEU_S_PH_QBL))
- (clobber (match_scratch:DI 3 "=x"))])]
- "TARGET_DSP"
- "muleu_s.ph.qbl\t%0,%1,%2"
- [(set_attr "type" "imul3")
- (set_attr "mode" "SI")])
-
-(define_insn "mips_muleu_s_ph_qbr"
- [(parallel
- [(set (match_operand:V2HI 0 "register_operand" "=d")
- (unspec:V2HI [(match_operand:V4QI 1 "register_operand" "d")
- (match_operand:V2HI 2 "register_operand" "d")]
- UNSPEC_MULEU_S_PH_QBR))
- (set (reg:CCDSP CCDSP_OU_REGNUM)
- (unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_MULEU_S_PH_QBR))
- (clobber (match_scratch:DI 3 "=x"))])]
- "TARGET_DSP"
- "muleu_s.ph.qbr\t%0,%1,%2"
- [(set_attr "type" "imul3")
- (set_attr "mode" "SI")])
-
-;; MULQ*
-(define_insn "mips_mulq_rs_ph"
- [(parallel
- [(set (match_operand:V2HI 0 "register_operand" "=d")
- (unspec:V2HI [(match_operand:V2HI 1 "register_operand" "d")
- (match_operand:V2HI 2 "register_operand" "d")]
- UNSPEC_MULQ_RS_PH))
- (set (reg:CCDSP CCDSP_OU_REGNUM)
- (unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_MULQ_RS_PH))
- (clobber (match_scratch:DI 3 "=x"))])]
- "TARGET_DSP"
- "mulq_rs.ph\t%0,%1,%2"
- [(set_attr "type" "imul3")
- (set_attr "mode" "SI")])
-
-;; MULEQ*
-(define_insn "mips_muleq_s_w_phl"
- [(parallel
- [(set (match_operand:SI 0 "register_operand" "=d")
- (unspec:SI [(match_operand:V2HI 1 "register_operand" "d")
- (match_operand:V2HI 2 "register_operand" "d")]
- UNSPEC_MULEQ_S_W_PHL))
- (set (reg:CCDSP CCDSP_OU_REGNUM)
- (unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_MULEQ_S_W_PHL))
- (clobber (match_scratch:DI 3 "=x"))])]
- "TARGET_DSP"
- "muleq_s.w.phl\t%0,%1,%2"
- [(set_attr "type" "imul3")
- (set_attr "mode" "SI")])
-
-(define_insn "mips_muleq_s_w_phr"
- [(parallel
- [(set (match_operand:SI 0 "register_operand" "=d")
- (unspec:SI [(match_operand:V2HI 1 "register_operand" "d")
- (match_operand:V2HI 2 "register_operand" "d")]
- UNSPEC_MULEQ_S_W_PHR))
- (set (reg:CCDSP CCDSP_OU_REGNUM)
- (unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_MULEQ_S_W_PHR))
- (clobber (match_scratch:DI 3 "=x"))])]
- "TARGET_DSP"
- "muleq_s.w.phr\t%0,%1,%2"
- [(set_attr "type" "imul3")
- (set_attr "mode" "SI")])
-
-;; DPAU*
-(define_insn "mips_dpau_h_qbl"
- [(set (match_operand:DI 0 "register_operand" "=a")
- (unspec:DI [(match_operand:DI 1 "register_operand" "0")
- (match_operand:V4QI 2 "register_operand" "d")
- (match_operand:V4QI 3 "register_operand" "d")]
- UNSPEC_DPAU_H_QBL))]
- "TARGET_DSP && !TARGET_64BIT"
- "dpau.h.qbl\t%q0,%2,%3"
- [(set_attr "type" "imadd")
- (set_attr "mode" "SI")])
-
-(define_insn "mips_dpau_h_qbr"
- [(set (match_operand:DI 0 "register_operand" "=a")
- (unspec:DI [(match_operand:DI 1 "register_operand" "0")
- (match_operand:V4QI 2 "register_operand" "d")
- (match_operand:V4QI 3 "register_operand" "d")]
- UNSPEC_DPAU_H_QBR))]
- "TARGET_DSP && !TARGET_64BIT"
- "dpau.h.qbr\t%q0,%2,%3"
- [(set_attr "type" "imadd")
- (set_attr "mode" "SI")])
-
-;; DPSU*
-(define_insn "mips_dpsu_h_qbl"
- [(set (match_operand:DI 0 "register_operand" "=a")
- (unspec:DI [(match_operand:DI 1 "register_operand" "0")
- (match_operand:V4QI 2 "register_operand" "d")
- (match_operand:V4QI 3 "register_operand" "d")]
- UNSPEC_DPSU_H_QBL))]
- "TARGET_DSP && !TARGET_64BIT"
- "dpsu.h.qbl\t%q0,%2,%3"
- [(set_attr "type" "imadd")
- (set_attr "mode" "SI")])
-
-(define_insn "mips_dpsu_h_qbr"
- [(set (match_operand:DI 0 "register_operand" "=a")
- (unspec:DI [(match_operand:DI 1 "register_operand" "0")
- (match_operand:V4QI 2 "register_operand" "d")
- (match_operand:V4QI 3 "register_operand" "d")]
- UNSPEC_DPSU_H_QBR))]
- "TARGET_DSP && !TARGET_64BIT"
- "dpsu.h.qbr\t%q0,%2,%3"
- [(set_attr "type" "imadd")
- (set_attr "mode" "SI")])
-
-;; DPAQ*
-(define_insn "mips_dpaq_s_w_ph"
- [(parallel
- [(set (match_operand:DI 0 "register_operand" "=a")
- (unspec:DI [(match_operand:DI 1 "register_operand" "0")
- (match_operand:V2HI 2 "register_operand" "d")
- (match_operand:V2HI 3 "register_operand" "d")]
- UNSPEC_DPAQ_S_W_PH))
- (set (reg:CCDSP CCDSP_OU_REGNUM)
- (unspec:CCDSP [(match_dup 1) (match_dup 2) (match_dup 3)]
- UNSPEC_DPAQ_S_W_PH))])]
- "TARGET_DSP && !TARGET_64BIT"
- "dpaq_s.w.ph\t%q0,%2,%3"
- [(set_attr "type" "imadd")
- (set_attr "mode" "SI")])
-
-;; DPSQ*
-(define_insn "mips_dpsq_s_w_ph"
- [(parallel
- [(set (match_operand:DI 0 "register_operand" "=a")
- (unspec:DI [(match_operand:DI 1 "register_operand" "0")
- (match_operand:V2HI 2 "register_operand" "d")
- (match_operand:V2HI 3 "register_operand" "d")]
- UNSPEC_DPSQ_S_W_PH))
- (set (reg:CCDSP CCDSP_OU_REGNUM)
- (unspec:CCDSP [(match_dup 1) (match_dup 2) (match_dup 3)]
- UNSPEC_DPSQ_S_W_PH))])]
- "TARGET_DSP && !TARGET_64BIT"
- "dpsq_s.w.ph\t%q0,%2,%3"
- [(set_attr "type" "imadd")
- (set_attr "mode" "SI")])
-
-;; MULSAQ*
-(define_insn "mips_mulsaq_s_w_ph"
- [(parallel
- [(set (match_operand:DI 0 "register_operand" "=a")
- (unspec:DI [(match_operand:DI 1 "register_operand" "0")
- (match_operand:V2HI 2 "register_operand" "d")
- (match_operand:V2HI 3 "register_operand" "d")]
- UNSPEC_MULSAQ_S_W_PH))
- (set (reg:CCDSP CCDSP_OU_REGNUM)
- (unspec:CCDSP [(match_dup 1) (match_dup 2) (match_dup 3)]
- UNSPEC_MULSAQ_S_W_PH))])]
- "TARGET_DSP && !TARGET_64BIT"
- "mulsaq_s.w.ph\t%q0,%2,%3"
- [(set_attr "type" "imadd")
- (set_attr "mode" "SI")])
-
-;; DPAQ*
-(define_insn "mips_dpaq_sa_l_w"
- [(parallel
- [(set (match_operand:DI 0 "register_operand" "=a")
- (unspec:DI [(match_operand:DI 1 "register_operand" "0")
- (match_operand:SI 2 "register_operand" "d")
- (match_operand:SI 3 "register_operand" "d")]
- UNSPEC_DPAQ_SA_L_W))
- (set (reg:CCDSP CCDSP_OU_REGNUM)
- (unspec:CCDSP [(match_dup 1) (match_dup 2) (match_dup 3)]
- UNSPEC_DPAQ_SA_L_W))])]
- "TARGET_DSP && !TARGET_64BIT"
- "dpaq_sa.l.w\t%q0,%2,%3"
- [(set_attr "type" "imadd")
- (set_attr "mode" "SI")])
-
-;; DPSQ*
-(define_insn "mips_dpsq_sa_l_w"
- [(parallel
- [(set (match_operand:DI 0 "register_operand" "=a")
- (unspec:DI [(match_operand:DI 1 "register_operand" "0")
- (match_operand:SI 2 "register_operand" "d")
- (match_operand:SI 3 "register_operand" "d")]
- UNSPEC_DPSQ_SA_L_W))
- (set (reg:CCDSP CCDSP_OU_REGNUM)
- (unspec:CCDSP [(match_dup 1) (match_dup 2) (match_dup 3)]
- UNSPEC_DPSQ_SA_L_W))])]
- "TARGET_DSP && !TARGET_64BIT"
- "dpsq_sa.l.w\t%q0,%2,%3"
- [(set_attr "type" "imadd")
- (set_attr "mode" "SI")])
-
-;; MAQ*
-(define_insn "mips_maq_s_w_phl"
- [(parallel
- [(set (match_operand:DI 0 "register_operand" "=a")
- (unspec:DI [(match_operand:DI 1 "register_operand" "0")
- (match_operand:V2HI 2 "register_operand" "d")
- (match_operand:V2HI 3 "register_operand" "d")]
- UNSPEC_MAQ_S_W_PHL))
- (set (reg:CCDSP CCDSP_OU_REGNUM)
- (unspec:CCDSP [(match_dup 1) (match_dup 2) (match_dup 3)]
- UNSPEC_MAQ_S_W_PHL))])]
- "TARGET_DSP && !TARGET_64BIT"
- "maq_s.w.phl\t%q0,%2,%3"
- [(set_attr "type" "imadd")
- (set_attr "mode" "SI")])
-
-(define_insn "mips_maq_s_w_phr"
- [(parallel
- [(set (match_operand:DI 0 "register_operand" "=a")
- (unspec:DI [(match_operand:DI 1 "register_operand" "0")
- (match_operand:V2HI 2 "register_operand" "d")
- (match_operand:V2HI 3 "register_operand" "d")]
- UNSPEC_MAQ_S_W_PHR))
- (set (reg:CCDSP CCDSP_OU_REGNUM)
- (unspec:CCDSP [(match_dup 1) (match_dup 2) (match_dup 3)]
- UNSPEC_MAQ_S_W_PHR))])]
- "TARGET_DSP && !TARGET_64BIT"
- "maq_s.w.phr\t%q0,%2,%3"
- [(set_attr "type" "imadd")
- (set_attr "mode" "SI")])
-
-;; MAQ_SA*
-(define_insn "mips_maq_sa_w_phl"
- [(parallel
- [(set (match_operand:DI 0 "register_operand" "=a")
- (unspec:DI [(match_operand:DI 1 "register_operand" "0")
- (match_operand:V2HI 2 "register_operand" "d")
- (match_operand:V2HI 3 "register_operand" "d")]
- UNSPEC_MAQ_SA_W_PHL))
- (set (reg:CCDSP CCDSP_OU_REGNUM)
- (unspec:CCDSP [(match_dup 1) (match_dup 2) (match_dup 3)]
- UNSPEC_MAQ_SA_W_PHL))])]
- "TARGET_DSP && !TARGET_64BIT"
- "maq_sa.w.phl\t%q0,%2,%3"
- [(set_attr "type" "imadd")
- (set_attr "mode" "SI")])
-
-(define_insn "mips_maq_sa_w_phr"
- [(parallel
- [(set (match_operand:DI 0 "register_operand" "=a")
- (unspec:DI [(match_operand:DI 1 "register_operand" "0")
- (match_operand:V2HI 2 "register_operand" "d")
- (match_operand:V2HI 3 "register_operand" "d")]
- UNSPEC_MAQ_SA_W_PHR))
- (set (reg:CCDSP CCDSP_OU_REGNUM)
- (unspec:CCDSP [(match_dup 1) (match_dup 2) (match_dup 3)]
- UNSPEC_MAQ_SA_W_PHR))])]
- "TARGET_DSP && !TARGET_64BIT"
- "maq_sa.w.phr\t%q0,%2,%3"
- [(set_attr "type" "imadd")
- (set_attr "mode" "SI")])
-
-;; Table 2-4. MIPS DSP ASE Instructions: General Bit/Manipulation
-;; BITREV
-(define_insn "mips_bitrev"
- [(set (match_operand:SI 0 "register_operand" "=d")
- (unspec:SI [(match_operand:SI 1 "register_operand" "d")]
- UNSPEC_BITREV))]
- "TARGET_DSP"
- "bitrev\t%0,%1"
- [(set_attr "type" "arith")
- (set_attr "mode" "SI")])
-
-;; INSV
-(define_insn "mips_insv"
- [(set (match_operand:SI 0 "register_operand" "=d")
- (unspec:SI [(match_operand:SI 1 "register_operand" "0")
- (match_operand:SI 2 "register_operand" "d")
- (reg:CCDSP CCDSP_SC_REGNUM)
- (reg:CCDSP CCDSP_PO_REGNUM)]
- UNSPEC_INSV))]
- "TARGET_DSP"
- "insv\t%0,%2"
- [(set_attr "type" "arith")
- (set_attr "mode" "SI")])
-
-;; REPL*
-(define_insn "mips_repl_qb"
- [(set (match_operand:V4QI 0 "register_operand" "=d,d")
- (unspec:V4QI [(match_operand:SI 1 "arith_operand" "I,d")]
- UNSPEC_REPL_QB))]
- "TARGET_DSP"
-{
- if (which_alternative == 0)
- {
- if (INTVAL (operands[1]) & ~(unsigned HOST_WIDE_INT) 0xff)
- operands[1] = GEN_INT (INTVAL (operands[1]) & 0xff);
- return "repl.qb\t%0,%1";
- }
- return "replv.qb\t%0,%1";
-}
- [(set_attr "type" "arith")
- (set_attr "mode" "SI")])
-
-(define_insn "mips_repl_ph"
- [(set (match_operand:V2HI 0 "register_operand" "=d,d")
- (unspec:V2HI [(match_operand:SI 1 "reg_imm10_operand" "YB,d")]
- UNSPEC_REPL_PH))]
- "TARGET_DSP"
- "@
- repl.ph\t%0,%1
- replv.ph\t%0,%1"
- [(set_attr "type" "arith")
- (set_attr "mode" "SI")])
-
-;; Table 2-5. MIPS DSP ASE Instructions: Compare-Pick
-;; CMPU.* CMP.*
-(define_insn "mips_cmp<DSPV:dspfmt1_1>_eq_<DSPV:dspfmt2>"
- [(set (reg:CCDSP CCDSP_CC_REGNUM)
- (unspec:CCDSP [(match_operand:DSPV 0 "register_operand" "d")
- (match_operand:DSPV 1 "register_operand" "d")
- (reg:CCDSP CCDSP_CC_REGNUM)]
- UNSPEC_CMP_EQ))]
- "TARGET_DSP"
- "cmp<DSPV:dspfmt1_1>.eq.<DSPV:dspfmt2>\t%0,%1"
- [(set_attr "type" "arith")
- (set_attr "mode" "SI")])
-
-(define_insn "mips_cmp<DSPV:dspfmt1_1>_lt_<DSPV:dspfmt2>"
- [(set (reg:CCDSP CCDSP_CC_REGNUM)
- (unspec:CCDSP [(match_operand:DSPV 0 "register_operand" "d")
- (match_operand:DSPV 1 "register_operand" "d")
- (reg:CCDSP CCDSP_CC_REGNUM)]
- UNSPEC_CMP_LT))]
- "TARGET_DSP"
- "cmp<DSPV:dspfmt1_1>.lt.<DSPV:dspfmt2>\t%0,%1"
- [(set_attr "type" "arith")
- (set_attr "mode" "SI")])
-
-(define_insn "mips_cmp<DSPV:dspfmt1_1>_le_<DSPV:dspfmt2>"
- [(set (reg:CCDSP CCDSP_CC_REGNUM)
- (unspec:CCDSP [(match_operand:DSPV 0 "register_operand" "d")
- (match_operand:DSPV 1 "register_operand" "d")
- (reg:CCDSP CCDSP_CC_REGNUM)]
- UNSPEC_CMP_LE))]
- "TARGET_DSP"
- "cmp<DSPV:dspfmt1_1>.le.<DSPV:dspfmt2>\t%0,%1"
- [(set_attr "type" "arith")
- (set_attr "mode" "SI")])
-
-(define_insn "mips_cmpgu_eq_qb"
- [(set (match_operand:SI 0 "register_operand" "=d")
- (unspec:SI [(match_operand:V4QI 1 "register_operand" "d")
- (match_operand:V4QI 2 "register_operand" "d")]
- UNSPEC_CMPGU_EQ_QB))]
- "TARGET_DSP"
- "cmpgu.eq.qb\t%0,%1,%2"
- [(set_attr "type" "arith")
- (set_attr "mode" "SI")])
-
-(define_insn "mips_cmpgu_lt_qb"
- [(set (match_operand:SI 0 "register_operand" "=d")
- (unspec:SI [(match_operand:V4QI 1 "register_operand" "d")
- (match_operand:V4QI 2 "register_operand" "d")]
- UNSPEC_CMPGU_LT_QB))]
- "TARGET_DSP"
- "cmpgu.lt.qb\t%0,%1,%2"
- [(set_attr "type" "arith")
- (set_attr "mode" "SI")])
-
-(define_insn "mips_cmpgu_le_qb"
- [(set (match_operand:SI 0 "register_operand" "=d")
- (unspec:SI [(match_operand:V4QI 1 "register_operand" "d")
- (match_operand:V4QI 2 "register_operand" "d")]
- UNSPEC_CMPGU_LE_QB))]
- "TARGET_DSP"
- "cmpgu.le.qb\t%0,%1,%2"
- [(set_attr "type" "arith")
- (set_attr "mode" "SI")])
-
-;; PICK*
-(define_insn "mips_pick_<DSPV:dspfmt2>"
- [(set (match_operand:DSPV 0 "register_operand" "=d")
- (unspec:DSPV [(match_operand:DSPV 1 "register_operand" "d")
- (match_operand:DSPV 2 "register_operand" "d")
- (reg:CCDSP CCDSP_CC_REGNUM)]
- UNSPEC_PICK))]
- "TARGET_DSP"
- "pick.<DSPV:dspfmt2>\t%0,%1,%2"
- [(set_attr "type" "arith")
- (set_attr "mode" "SI")])
-
-;; PACKRL*
-(define_insn "mips_packrl_ph"
- [(set (match_operand:V2HI 0 "register_operand" "=d")
- (unspec:V2HI [(match_operand:V2HI 1 "register_operand" "d")
- (match_operand:V2HI 2 "register_operand" "d")]
- UNSPEC_PACKRL_PH))]
- "TARGET_DSP"
- "packrl.ph\t%0,%1,%2"
- [(set_attr "type" "arith")
- (set_attr "mode" "SI")])
-
-;; Table 2-6. MIPS DSP ASE Instructions: Accumulator and DSPControl Access
-;; EXTR*
-(define_insn "mips_extr_w"
- [(parallel
- [(set (match_operand:SI 0 "register_operand" "=d,d")
- (unspec:SI [(match_operand:DI 1 "register_operand" "a,a")
- (match_operand:SI 2 "arith_operand" "I,d")]
- UNSPEC_EXTR_W))
- (set (reg:CCDSP CCDSP_OU_REGNUM)
- (unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_EXTR_W))])]
- "TARGET_DSP && !TARGET_64BIT"
-{
- if (which_alternative == 0)
- {
- if (INTVAL (operands[2]) & ~(unsigned HOST_WIDE_INT) 0x1f)
- operands[2] = GEN_INT (INTVAL (operands[2]) & 0x1f);
- return "extr.w\t%0,%q1,%2";
- }
- return "extrv.w\t%0,%q1,%2";
-}
- [(set_attr "type" "mfhilo")
- (set_attr "mode" "SI")])
-
-(define_insn "mips_extr_r_w"
- [(parallel
- [(set (match_operand:SI 0 "register_operand" "=d,d")
- (unspec:SI [(match_operand:DI 1 "register_operand" "a,a")
- (match_operand:SI 2 "arith_operand" "I,d")]
- UNSPEC_EXTR_R_W))
- (set (reg:CCDSP CCDSP_OU_REGNUM)
- (unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_EXTR_R_W))])]
- "TARGET_DSP && !TARGET_64BIT"
-{
- if (which_alternative == 0)
- {
- if (INTVAL (operands[2]) & ~(unsigned HOST_WIDE_INT) 0x1f)
- operands[2] = GEN_INT (INTVAL (operands[2]) & 0x1f);
- return "extr_r.w\t%0,%q1,%2";
- }
- return "extrv_r.w\t%0,%q1,%2";
-}
- [(set_attr "type" "mfhilo")
- (set_attr "mode" "SI")])
-
-(define_insn "mips_extr_rs_w"
- [(parallel
- [(set (match_operand:SI 0 "register_operand" "=d,d")
- (unspec:SI [(match_operand:DI 1 "register_operand" "a,a")
- (match_operand:SI 2 "arith_operand" "I,d")]
- UNSPEC_EXTR_RS_W))
- (set (reg:CCDSP CCDSP_OU_REGNUM)
- (unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_EXTR_RS_W))])]
- "TARGET_DSP && !TARGET_64BIT"
-{
- if (which_alternative == 0)
- {
- if (INTVAL (operands[2]) & ~(unsigned HOST_WIDE_INT) 0x1f)
- operands[2] = GEN_INT (INTVAL (operands[2]) & 0x1f);
- return "extr_rs.w\t%0,%q1,%2";
- }
- return "extrv_rs.w\t%0,%q1,%2";
-}
- [(set_attr "type" "mfhilo")
- (set_attr "mode" "SI")])
-
-;; EXTR*_S.H
-(define_insn "mips_extr_s_h"
- [(parallel
- [(set (match_operand:SI 0 "register_operand" "=d,d")
- (unspec:SI [(match_operand:DI 1 "register_operand" "a,a")
- (match_operand:SI 2 "arith_operand" "I,d")]
- UNSPEC_EXTR_S_H))
- (set (reg:CCDSP CCDSP_OU_REGNUM)
- (unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_EXTR_S_H))])]
- "TARGET_DSP && !TARGET_64BIT"
-{
- if (which_alternative == 0)
- {
- if (INTVAL (operands[2]) & ~(unsigned HOST_WIDE_INT) 0x1f)
- operands[2] = GEN_INT (INTVAL (operands[2]) & 0x1f);
- return "extr_s.h\t%0,%q1,%2";
- }
- return "extrv_s.h\t%0,%q1,%2";
-}
- [(set_attr "type" "mfhilo")
- (set_attr "mode" "SI")])
-
-;; EXTP*
-(define_insn "mips_extp"
- [(parallel
- [(set (match_operand:SI 0 "register_operand" "=d,d")
- (unspec:SI [(match_operand:DI 1 "register_operand" "a,a")
- (match_operand:SI 2 "arith_operand" "I,d")
- (reg:CCDSP CCDSP_PO_REGNUM)]
- UNSPEC_EXTP))
- (set (reg:CCDSP CCDSP_EF_REGNUM)
- (unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_EXTP))])]
- "TARGET_DSP && !TARGET_64BIT"
-{
- if (which_alternative == 0)
- {
- if (INTVAL (operands[2]) & ~(unsigned HOST_WIDE_INT) 0x1f)
- operands[2] = GEN_INT (INTVAL (operands[2]) & 0x1f);
- return "extp\t%0,%q1,%2";
- }
- return "extpv\t%0,%q1,%2";
-}
- [(set_attr "type" "mfhilo")
- (set_attr "mode" "SI")])
-
-(define_insn "mips_extpdp"
- [(parallel
- [(set (match_operand:SI 0 "register_operand" "=d,d")
- (unspec:SI [(match_operand:DI 1 "register_operand" "a,a")
- (match_operand:SI 2 "arith_operand" "I,d")
- (reg:CCDSP CCDSP_PO_REGNUM)]
- UNSPEC_EXTPDP))
- (set (reg:CCDSP CCDSP_PO_REGNUM)
- (unspec:CCDSP [(match_dup 1) (match_dup 2)
- (reg:CCDSP CCDSP_PO_REGNUM)] UNSPEC_EXTPDP))
- (set (reg:CCDSP CCDSP_EF_REGNUM)
- (unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_EXTPDP))])]
- "TARGET_DSP && !TARGET_64BIT"
-{
- if (which_alternative == 0)
- {
- if (INTVAL (operands[2]) & ~(unsigned HOST_WIDE_INT) 0x1f)
- operands[2] = GEN_INT (INTVAL (operands[2]) & 0x1f);
- return "extpdp\t%0,%q1,%2";
- }
- return "extpdpv\t%0,%q1,%2";
-}
- [(set_attr "type" "mfhilo")
- (set_attr "mode" "SI")])
-
-;; SHILO*
-(define_insn "mips_shilo"
- [(set (match_operand:DI 0 "register_operand" "=a,a")
- (unspec:DI [(match_operand:DI 1 "register_operand" "0,0")
- (match_operand:SI 2 "arith_operand" "I,d")]
- UNSPEC_SHILO))]
- "TARGET_DSP && !TARGET_64BIT"
-{
- if (which_alternative == 0)
- {
- if (INTVAL (operands[2]) < -32 || INTVAL (operands[2]) > 31)
- operands[2] = GEN_INT (INTVAL (operands[2]) & 0x3f);
- return "shilo\t%q0,%2";
- }
- return "shilov\t%q0,%2";
-}
- [(set_attr "type" "mfhilo")
- (set_attr "mode" "SI")])
-
-;; MTHLIP*
-(define_insn "mips_mthlip"
- [(parallel
- [(set (match_operand:DI 0 "register_operand" "=a")
- (unspec:DI [(match_operand:DI 1 "register_operand" "0")
- (match_operand:SI 2 "register_operand" "d")
- (reg:CCDSP CCDSP_PO_REGNUM)]
- UNSPEC_MTHLIP))
- (set (reg:CCDSP CCDSP_PO_REGNUM)
- (unspec:CCDSP [(match_dup 1) (match_dup 2)
- (reg:CCDSP CCDSP_PO_REGNUM)] UNSPEC_MTHLIP))])]
- "TARGET_DSP && !TARGET_64BIT"
- "mthlip\t%2,%q0"
- [(set_attr "type" "mfhilo")
- (set_attr "mode" "SI")])
-
-;; WRDSP
-(define_insn "mips_wrdsp"
- [(parallel
- [(set (reg:CCDSP CCDSP_PO_REGNUM)
- (unspec:CCDSP [(match_operand:SI 0 "register_operand" "d")
- (match_operand:SI 1 "const_uimm6_operand" "YA")]
- UNSPEC_WRDSP))
- (set (reg:CCDSP CCDSP_SC_REGNUM)
- (unspec:CCDSP [(match_dup 0) (match_dup 1)] UNSPEC_WRDSP))
- (set (reg:CCDSP CCDSP_CA_REGNUM)
- (unspec:CCDSP [(match_dup 0) (match_dup 1)] UNSPEC_WRDSP))
- (set (reg:CCDSP CCDSP_OU_REGNUM)
- (unspec:CCDSP [(match_dup 0) (match_dup 1)] UNSPEC_WRDSP))
- (set (reg:CCDSP CCDSP_CC_REGNUM)
- (unspec:CCDSP [(match_dup 0) (match_dup 1)] UNSPEC_WRDSP))
- (set (reg:CCDSP CCDSP_EF_REGNUM)
- (unspec:CCDSP [(match_dup 0) (match_dup 1)] UNSPEC_WRDSP))])]
- "TARGET_DSP"
- "wrdsp\t%0,%1"
- [(set_attr "type" "arith")
- (set_attr "mode" "SI")])
-
-;; RDDSP
-(define_insn "mips_rddsp"
- [(set (match_operand:SI 0 "register_operand" "=d")
- (unspec:SI [(match_operand:SI 1 "const_uimm6_operand" "YA")
- (reg:CCDSP CCDSP_PO_REGNUM)
- (reg:CCDSP CCDSP_SC_REGNUM)
- (reg:CCDSP CCDSP_CA_REGNUM)
- (reg:CCDSP CCDSP_OU_REGNUM)
- (reg:CCDSP CCDSP_CC_REGNUM)
- (reg:CCDSP CCDSP_EF_REGNUM)]
- UNSPEC_RDDSP))]
- "TARGET_DSP"
- "rddsp\t%0,%1"
- [(set_attr "type" "arith")
- (set_attr "mode" "SI")])
-
-;; Table 2-7. MIPS DSP ASE Instructions: Indexed-Load
-;; L*X
-(define_insn "mips_lbux"
- [(set (match_operand:SI 0 "register_operand" "=d")
- (zero_extend:SI (mem:QI (plus:SI (match_operand:SI 1
- "register_operand" "d")
- (match_operand:SI 2
- "register_operand" "d")))))]
- "TARGET_DSP"
- "lbux\t%0,%2(%1)"
- [(set_attr "type" "load")
- (set_attr "mode" "SI")
- (set_attr "length" "4")])
-
-(define_insn "mips_lhx"
- [(set (match_operand:SI 0 "register_operand" "=d")
- (sign_extend:SI (mem:HI (plus:SI (match_operand:SI 1
- "register_operand" "d")
- (match_operand:SI 2
- "register_operand" "d")))))]
- "TARGET_DSP"
- "lhx\t%0,%2(%1)"
- [(set_attr "type" "load")
- (set_attr "mode" "SI")
- (set_attr "length" "4")])
-
-(define_insn "mips_lwx"
- [(set (match_operand:SI 0 "register_operand" "=d")
- (mem:SI (plus:SI (match_operand:SI 1 "register_operand" "d")
- (match_operand:SI 2 "register_operand" "d"))))]
- "TARGET_DSP"
- "lwx\t%0,%2(%1)"
- [(set_attr "type" "load")
- (set_attr "mode" "SI")
- (set_attr "length" "4")])
-
-;; Table 2-8. MIPS DSP ASE Instructions: Branch
-;; BPOSGE32
-(define_insn "mips_bposge"
- [(set (pc)
- (if_then_else (ge (reg:CCDSP CCDSP_PO_REGNUM)
- (match_operand:SI 0 "immediate_operand" "I"))
- (label_ref (match_operand 1 "" ""))
- (pc)))]
- "TARGET_DSP"
- "%*bposge%0\t%1%/"
- [(set_attr "type" "branch")
- (set_attr "mode" "none")])
-