Commit ef2e5300 by Sandra Loosemore Committed by Sandra Loosemore

MIPS Technologies, Inc.

2012-08-15  Sandra Loosemore  <sandra@codesourcery.com>
	    Maxim Kuvyrkov  <maxim@codesourcery.com>
	    Julian Brown  <julian@codesourcery.com>
	    MIPS Technologies, Inc.

	gcc/
	* config/mips/mips.md (dspmac, dspmacsat, accext, accmod, dspalu)
	(dspalusat): Add insn types.
	* config/mips/mips-dsp.md (add<DSPV:mode>3)
	(mips_add<DSP:dspfmt1>_s_<DSP:dspfmt2>)
	(sub<DSPV:mode>3, mips_sub<DSP:dspfmt1>_s_<DSP:dspfmt2>, mips_addsc)
	(mips_addwc, mips_modsub, mips_raddu_w_qb, mips_absq_s_<DSPQ:dspfmt2>)
	(mips_precrq_qb_ph, mips_precrq_ph_w, mips_precrq_rs_ph_w)
	(mips_precrqu_s_qb_ph, mips_preceq_w_phl, mips_preceq_w_phr)
	(mips_precequ_ph_qbl, mips_precequ_ph_qbr, mips_precequ_ph_qbla)
	(mips_precequ_ph_qbra, mips_preceu_ph_qbl, mips_preceu_ph_qbr)
	(mips_preceu_ph_qbla, mips_preceu_ph_qbra, mips_shll_<DSPV:dspfmt2>)
	(mips_shll_s_<DSPQ:dspfmt2>, mips_shll_s_<DSPQ:dspfmt2>, mips_shrl_qb)
	(mips_shra_ph, mips_shra_r_<DSPQ:dspfmt2>, mips_bitrev, mips_insv)
	(mips_repl_qb, mips_repl_ph)
	(mips_cmp<DSPV:dspfmt1_1>_eq_<DSPV:dspfmt2>)
	(mips_cmp<DSPV:dspfmt1_1>_lt_<DSPV:dspfmt2>)
	(mips_cmp<DSPV:dspfmt1_1>_le_<DSPV:dspfmt2>, mips_cmpgu_eq_qb)
	(mips_cmpgu_lt_qb, mips_cmpgu_le_qb, mips_pick_<DSPV:dspfmt2>)
	(mips_packrl_ph, mips_wrdsp, mips_rddsp): Change type to dspalu.
	(mips_dpau_h_qbl, mips_dpau_h_qbr, mips_dpsu_h_qbl, mips_dpsu_h_qbr)
	(mips_dpaq_s_w_ph, mips_dpsq_s_w_ph, mips_mulsaq_s_w_ph)
	(mips_maq_s_w_phl, mips_maq_s_w_phr, mips_maq_sa_w_phr): Set type to
	dspmac.
	(mips_dpaq_sa_l_w, mips_dpsq_sa_l_w, mips_maq_sa_w_phl): Set type to
	dspmacsat.
	(mips_extr_w, mips_extr_r_w, mips_extr_rs_w, mips_extp, mips_extpdp):
	Set type to accext.
	(mips_shilo, mips_mthlip): Set type to accmod.
	* config/mips/mips-dspr2.md (mips_absq_s_qb, mips_addu_s_ph)
	(mips_adduh_r_qb): Set type to dspalusat.
	(mips_addu_ph, mips_adduh_qb, mips_append, mips_balign)
	(mips_cmpgdu_eq_qb, mips_cmpgdu_lt_qb, mips_cmpgdu_le_qb)
	(mips_precr_qb_ph, mips_precr_sra_ph_w, mips_precr_sra_r_ph_w)
	(mips_prepend, mips_shra_qb, mips_shra_r_qb, mips_shrl_ph)
	(mips_subu_ph, mips_subuh_qb, mips_subuh_r_qb, mips_addqh_ph)
	(mips_addqh_r_ph, mips_addqh_w, mips_addqh_r_w, mips_subqh_ph)
	(mips_subqh_r_ph, mips_subqh_w, mips_subqh_r_w): Set type to dspalu.
	(mips_dpa_w_ph, mips_dps_w_ph, mips_mulsa_w_ph, mips_dpax_w_ph)
	(mips_dpsx_w_ph, mips_dpaqx_s_w_ph, mips_dpsqx_s_w_ph): Set type to
	dspmac.  Set accum_in attribute.
	(mips_subu_s_ph): Set type to dspalusat. 
	(mips_dpaqx_sa_w_ph, mips_dpsqx_sa_w_ph): Set type to dspmacsat.
	Set accum_in attribute.
	* config/mips/mips-protos.h (mips_dspalu_bypass_p): Add prototype.
	* config/mips/mips.c (dspalu_bypass_table): New.
	(mips_dspalu_bypass_p): New.
	* config/mips/24k.md (r24k_dsp_alu, r24k_dsp_mac, r24k_dsp_mac_sat)
	(r24k_dsp_acc_ext, r24k_dsp_acc_mod): New insn reservations.
	(r24k_int_mult, r24k_int_mthilo, r24k_dsp_mac, r24k_dsp_mac_sat)
	(r24k_dsp_acc_ext, r24k_dsp_acc_mod, r24k_dsp_alu): New bypasses.
	* config/mips/74k.md (r74k_dsp_alu, r74k_dsp_alu_sat, r74k_dsp_mac)
	(r74k_dsp_mac_sat, r74k_dsp_acc_ext, r74k_dsp_acc_mod): New insn
	reservations.
	(r74k_dsp_mac, r74k_dsp_mac_sat, r74k_int_mult, r74k_int_mul3)
	(r74k_dsp_mac, r74k_dsp_mac_sat): New bypasses.

Co-Authored-By: Julian Brown <julian@codesourcery.com>
Co-Authored-By: Maxim Kuvyrkov <maxim@codesourcery.com>

From-SVN: r190423
parent 66b038ce
2012-08-15 Sandra Loosemore <sandra@codesourcery.com>
Maxim Kuvyrkov <maxim@codesourcery.com>
Julian Brown <julian@codesourcery.com>
MIPS Technologies, Inc.
gcc/
* config/mips/mips.md (dspmac, dspmacsat, accext, accmod, dspalu)
(dspalusat): Add insn types.
* config/mips/mips-dsp.md (add<DSPV:mode>3)
(mips_add<DSP:dspfmt1>_s_<DSP:dspfmt2>)
(sub<DSPV:mode>3, mips_sub<DSP:dspfmt1>_s_<DSP:dspfmt2>, mips_addsc)
(mips_addwc, mips_modsub, mips_raddu_w_qb, mips_absq_s_<DSPQ:dspfmt2>)
(mips_precrq_qb_ph, mips_precrq_ph_w, mips_precrq_rs_ph_w)
(mips_precrqu_s_qb_ph, mips_preceq_w_phl, mips_preceq_w_phr)
(mips_precequ_ph_qbl, mips_precequ_ph_qbr, mips_precequ_ph_qbla)
(mips_precequ_ph_qbra, mips_preceu_ph_qbl, mips_preceu_ph_qbr)
(mips_preceu_ph_qbla, mips_preceu_ph_qbra, mips_shll_<DSPV:dspfmt2>)
(mips_shll_s_<DSPQ:dspfmt2>, mips_shll_s_<DSPQ:dspfmt2>, mips_shrl_qb)
(mips_shra_ph, mips_shra_r_<DSPQ:dspfmt2>, mips_bitrev, mips_insv)
(mips_repl_qb, mips_repl_ph)
(mips_cmp<DSPV:dspfmt1_1>_eq_<DSPV:dspfmt2>)
(mips_cmp<DSPV:dspfmt1_1>_lt_<DSPV:dspfmt2>)
(mips_cmp<DSPV:dspfmt1_1>_le_<DSPV:dspfmt2>, mips_cmpgu_eq_qb)
(mips_cmpgu_lt_qb, mips_cmpgu_le_qb, mips_pick_<DSPV:dspfmt2>)
(mips_packrl_ph, mips_wrdsp, mips_rddsp): Change type to dspalu.
(mips_dpau_h_qbl, mips_dpau_h_qbr, mips_dpsu_h_qbl, mips_dpsu_h_qbr)
(mips_dpaq_s_w_ph, mips_dpsq_s_w_ph, mips_mulsaq_s_w_ph)
(mips_maq_s_w_phl, mips_maq_s_w_phr, mips_maq_sa_w_phr): Set type to
dspmac.
(mips_dpaq_sa_l_w, mips_dpsq_sa_l_w, mips_maq_sa_w_phl): Set type to
dspmacsat.
(mips_extr_w, mips_extr_r_w, mips_extr_rs_w, mips_extp, mips_extpdp):
Set type to accext.
(mips_shilo, mips_mthlip): Set type to accmod.
* config/mips/mips-dspr2.md (mips_absq_s_qb, mips_addu_s_ph)
(mips_adduh_r_qb): Set type to dspalusat.
(mips_addu_ph, mips_adduh_qb, mips_append, mips_balign)
(mips_cmpgdu_eq_qb, mips_cmpgdu_lt_qb, mips_cmpgdu_le_qb)
(mips_precr_qb_ph, mips_precr_sra_ph_w, mips_precr_sra_r_ph_w)
(mips_prepend, mips_shra_qb, mips_shra_r_qb, mips_shrl_ph)
(mips_subu_ph, mips_subuh_qb, mips_subuh_r_qb, mips_addqh_ph)
(mips_addqh_r_ph, mips_addqh_w, mips_addqh_r_w, mips_subqh_ph)
(mips_subqh_r_ph, mips_subqh_w, mips_subqh_r_w): Set type to dspalu.
(mips_dpa_w_ph, mips_dps_w_ph, mips_mulsa_w_ph, mips_dpax_w_ph)
(mips_dpsx_w_ph, mips_dpaqx_s_w_ph, mips_dpsqx_s_w_ph): Set type to
dspmac. Set accum_in attribute.
(mips_subu_s_ph): Set type to dspalusat.
(mips_dpaqx_sa_w_ph, mips_dpsqx_sa_w_ph): Set type to dspmacsat.
Set accum_in attribute.
* config/mips/mips-protos.h (mips_dspalu_bypass_p): Add prototype.
* config/mips/mips.c (dspalu_bypass_table): New.
(mips_dspalu_bypass_p): New.
* config/mips/24k.md (r24k_dsp_alu, r24k_dsp_mac, r24k_dsp_mac_sat)
(r24k_dsp_acc_ext, r24k_dsp_acc_mod): New insn reservations.
(r24k_int_mult, r24k_int_mthilo, r24k_dsp_mac, r24k_dsp_mac_sat)
(r24k_dsp_acc_ext, r24k_dsp_acc_mod, r24k_dsp_alu): New bypasses.
* config/mips/74k.md (r74k_dsp_alu, r74k_dsp_alu_sat, r74k_dsp_mac)
(r74k_dsp_mac_sat, r74k_dsp_acc_ext, r74k_dsp_acc_mod): New insn
reservations.
(r74k_dsp_mac, r74k_dsp_mac_sat, r74k_int_mult, r74k_int_mul3)
(r74k_dsp_mac, r74k_dsp_mac_sat): New bypasses.
2012-08-15 Ulrich Weigand <Ulrich.Weigand@de.ibm.com> 2012-08-15 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
* config/spu/spu.c: Include "cfgloop.h". * config/spu/spu.c: Include "cfgloop.h".
......
...@@ -204,6 +204,101 @@ ...@@ -204,6 +204,101 @@
;; -------------------------------------------------------------- ;; --------------------------------------------------------------
;; DSP instructions
;; --------------------------------------------------------------
;; absq, addq, addsc, addu, addwc, bitrev, cmp, cmpgu, cmpu, insv, modsub,
;; packrl, pick, preceq, preceu, precequ, precrq, precrqu, raddu, rddsp, repl,
;; replv, shll, shllv, shra, shrav, shrl, shrlv, subq, subu, wrdsp
(define_insn_reservation "r24k_dsp_alu" 2
(and (eq_attr "cpu" "24kc,24kf2_1,24kf1_1")
(eq_attr "type" "dspalu,dspalusat"))
"r24k_iss+r24k_ixu_arith")
;; dpaq_s, dpau, dpsq_s, dpsu, maq_s, mulsaq
(define_insn_reservation "r24k_dsp_mac" 1
(and (eq_attr "cpu" "24kc,24kf2_1,24kf1_1")
(eq_attr "type" "dspmac"))
"r24k_iss+(r24k_mul3a|r24k_mul3b|r24k_mul3c)")
;; dpaq_sa, dpsq_sa, maq_sa
(define_insn_reservation "r24k_dsp_mac_sat" 1
(and (eq_attr "cpu" "24kc,24kf2_1,24kf1_1")
(eq_attr "type" "dspmacsat"))
"r24k_iss+(r24k_mul3a|r24k_mul3b|r24k_mul3c)")
;; extp, extpdp, extpdpv, extpv, extr, extrv
(define_insn_reservation "r24k_dsp_acc_ext" 5
(and (eq_attr "cpu" "24kc,24kf2_1,24kf1_1")
(eq_attr "type" "accext"))
"r24k_iss+(r24k_mul3a|r24k_mul3b|r24k_mul3c)")
;; mthlip, shilo, shilov
(define_insn_reservation "r24k_dsp_acc_mod" 1
(and (eq_attr "cpu" "24kc,24kf2_1,24kf1_1")
(eq_attr "type" "accmod"))
"r24k_iss+(r24k_mul3a|r24k_mul3b|r24k_mul3c)")
;; mult/madd->dsp_acc_ext : 4 cycles
;; mult/madd->dsp_acc_mod : 4 cycles
(define_bypass 4 "r24k_int_mult" "r24k_dsp_acc_ext")
(define_bypass 4 "r24k_int_mult" "r24k_dsp_acc_mod")
;; mthilo->dsp_acc_ext : 4 cycles
;; mthilo->dsp_acc_ext : 4 cycles
(define_bypass 4 "r24k_int_mthilo" "r24k_dsp_acc_ext")
(define_bypass 4 "r24k_int_mthilo" "r24k_dsp_acc_mod")
;; dsp_mac->next use : 1 cycles (default)
;; dsp_mac->dsp_acc_ext : 4 cycles
;; dsp_mac->dsp_acc_mod : 4 cycles
(define_bypass 4 "r24k_dsp_mac" "r24k_dsp_acc_ext")
(define_bypass 4 "r24k_dsp_mac" "r24k_dsp_acc_mod")
;; dsp_mac_sat->next use : 1 cycles (default)
;; dsp_mac_sat->mult/madd : 2 cycles
;; dsp_mac_sat->dsp_mac : 2 cycles
;; dsp_mac_sat->dsp_mac_sat : 2 cycles
;; dsp_mac_sat->dsp_acc_ext : 4 cycles
;; dsp_mac_sat->dsp_acc_mod : 4 cycles
(define_bypass 2 "r24k_dsp_mac_sat" "r24k_int_mult")
(define_bypass 2 "r24k_dsp_mac_sat" "r24k_dsp_mac")
(define_bypass 2 "r24k_dsp_mac_sat" "r24k_dsp_mac_sat")
(define_bypass 4 "r24k_dsp_mac_sat" "r24k_dsp_acc_ext")
(define_bypass 4 "r24k_dsp_mac_sat" "r24k_dsp_acc_mod")
;; dsp_acc_ext->next use : 5 cycles (default)
;; dsp_acc_ext->l/s base : 6 cycles
;; dsp_acc_ext->prefetch : 6 cycles
(define_bypass 6 "r24k_dsp_acc_ext" "r24k_int_load")
(define_bypass 6 "r24k_dsp_acc_ext" "r24k_int_store"
"!mips_store_data_bypass_p")
(define_bypass 6 "r24k_dsp_acc_ext" "r24k_int_prefetch")
;; dsp_acc_mod->next use : 1 cycles (default)
;; dsp_acc_mod->mult/madd : 2 cycles
;; dsp_acc_mod->dsp_mac : 2 cycles
;; dsp_acc_mod->dsp_mac_sat : 2 cycles
;; dsp_acc_mod->dsp_acc_ext : 4 cycles
;; dsp_acc_mod->dsp_acc_mod : 4 cycles
(define_bypass 2 "r24k_dsp_acc_mod" "r24k_int_mult")
(define_bypass 2 "r24k_dsp_acc_mod" "r24k_dsp_mac")
(define_bypass 2 "r24k_dsp_acc_mod" "r24k_dsp_mac_sat")
(define_bypass 4 "r24k_dsp_acc_mod" "r24k_dsp_acc_ext")
(define_bypass 4 "r24k_dsp_acc_mod" "r24k_dsp_acc_mod")
;; dspalu->next use : 2 cycles (default)
;; dspalu->l/s base : 3 cycles
;; dspalu->prefetch : 3 cycles
;; some pairs of dspalu (addsc/addwc, cmp/pick, wrdsp/insv) : 1 cycle
(define_bypass 3 "r24k_dsp_alu" "r24k_int_load")
(define_bypass 3 "r24k_dsp_alu" "r24k_int_store" "!mips_store_data_bypass_p")
(define_bypass 3 "r24k_dsp_alu" "r24k_int_prefetch")
(define_bypass 1 "r24k_dsp_alu" "r24k_dsp_alu" "mips_dspalu_bypass_p")
;; --------------------------------------------------------------
;; Floating Point Instructions ;; Floating Point Instructions
;; -------------------------------------------------------------- ;; --------------------------------------------------------------
......
...@@ -174,6 +174,88 @@ ...@@ -174,6 +174,88 @@
(define_bypass 1 "r74k_int_madd" "r74k_int_madd" (define_bypass 1 "r74k_int_madd" "r74k_int_madd"
"mips_linked_madd_p") "mips_linked_madd_p")
;; --------------------------------------------------------------
;; DSP instructions
;; --------------------------------------------------------------
;; Non-saturating insn have the same latency as normal ALU operations,
(define_insn_reservation "r74k_dsp_alu" 2
(and (eq_attr "cpu" "74kc,74kf2_1,74kf1_1,74kf3_2")
(eq_attr "type" "dspalu"))
"r74k_alu")
;; Saturating insn takes an extra cycle.
(define_insn_reservation "r74k_dsp_alu_sat" 3
(and (eq_attr "cpu" "74kc,74kf2_1,74kf1_1,74kf3_2")
(eq_attr "type" "dspalusat"))
"r74k_alu")
;; dpaq_s, dpau, dpsq_s, dpsu, maq_s, mulsaq
;; - delivers result to hi/lo in 6 cycle (bypass at M4)
(define_insn_reservation "r74k_dsp_mac" 6
(and (eq_attr "cpu" "74kc,74kf2_1,74kf1_1,74kf3_2")
(eq_attr "type" "dspmac"))
"r74k_alu+r74k_mul")
;; dpaq_sa, dpsq_sa, maq_sa
;; - delivers result to hi/lo in 7 cycle (bypass at WB)
(define_insn_reservation "r74k_dsp_mac_sat" 7
(and (eq_attr "cpu" "74kc,74kf2_1,74kf1_1,74kf3_2")
(eq_attr "type" "dspmacsat"))
"r74k_alu+r74k_mul")
;; extp, extpdp, extpdpv, extpv, extr, extrv
;; - same latency as "mul"
(define_insn_reservation "r74k_dsp_acc_ext" 7
(and (eq_attr "cpu" "74kc,74kf2_1,74kf1_1,74kf3_2")
(eq_attr "type" "accext"))
"r74k_alu+r74k_mul")
;; mthlip, shilo, shilov
;; - same latency as "mul"
(define_insn_reservation "r74k_dsp_acc_mod" 7
(and (eq_attr "cpu" "74kc,74kf2_1,74kf1_1,74kf3_2")
(eq_attr "type" "accmod"))
"r74k_alu+r74k_mul")
;; dspalu ->load/store base
;; dspalusat->load/store base
;; - we should never see these in real life.
;; dsp_mac->dsp_mac : 1 cycles (repeat rate of 1)
;; dsp_mac->dsp_mac_sat : 1 cycles (repeat rate of 1)
(define_bypass 1 "r74k_dsp_mac" "r74k_dsp_mac")
(define_bypass 1 "r74k_dsp_mac" "r74k_dsp_mac_sat")
;; dsp_mac_sat->dsp_mac_sat : 2 cycles (repeat rate of 2)
;; dsp_mac_sat->dsp_mac : 2 cycles (repeat rate of 2)
(define_bypass 2 "r74k_dsp_mac_sat" "r74k_dsp_mac_sat")
(define_bypass 2 "r74k_dsp_mac_sat" "r74k_dsp_mac")
(define_bypass 1 "r74k_int_mult" "r74k_dsp_mac")
(define_bypass 1 "r74k_int_mult" "r74k_dsp_mac_sat")
(define_bypass 1 "r74k_int_mul3" "r74k_dsp_mac" "mips_linked_madd_p")
(define_bypass 1 "r74k_int_mul3" "r74k_dsp_mac_sat" "mips_linked_madd_p")
;; Assuming the following is true (bypass at M4)
;; AP AF AM MB M1 M2 M3 M4 WB GR GC
;; AP AF AM MB M1 M2 M3 M4 WB GR GC
;; dsp_mac->dsp_acc_ext : 4 cycles
;; dsp_mac->dsp_acc_mod : 4 cycles
(define_bypass 4 "r74k_dsp_mac" "r74k_dsp_acc_ext")
(define_bypass 4 "r74k_dsp_mac" "r74k_dsp_acc_mod")
;; Assuming the following is true (bypass at WB)
;; AP AF AM MB M1 M2 M3 M4 WB GR GC
;; AP AF AM MB M1 M2 M3 M4 WB GR GC
;; dsp_mac_sat->dsp_acc_ext : 5 cycles
;; dsp_mac_sat->dsp_acc_mod : 5 cycles
(define_bypass 5 "r74k_dsp_mac_sat" "r74k_dsp_acc_ext")
(define_bypass 5 "r74k_dsp_mac_sat" "r74k_dsp_acc_mod")
;; -------------------------------------------------------------- ;; --------------------------------------------------------------
;; Floating Point Instructions ;; Floating Point Instructions
;; -------------------------------------------------------------- ;; --------------------------------------------------------------
......
...@@ -79,7 +79,7 @@ ...@@ -79,7 +79,7 @@
(unspec:CCDSP [(match_dup 1)] UNSPEC_ABSQ_S_QB))])] (unspec:CCDSP [(match_dup 1)] UNSPEC_ABSQ_S_QB))])]
"ISA_HAS_DSPR2" "ISA_HAS_DSPR2"
"absq_s.qb\t%0,%z1" "absq_s.qb\t%0,%z1"
[(set_attr "type" "arith") [(set_attr "type" "dspalusat")
(set_attr "mode" "SI")]) (set_attr "mode" "SI")])
(define_insn "mips_addu_ph" (define_insn "mips_addu_ph"
...@@ -91,7 +91,7 @@ ...@@ -91,7 +91,7 @@
(unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_ADDU_PH))])] (unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_ADDU_PH))])]
"ISA_HAS_DSPR2" "ISA_HAS_DSPR2"
"addu.ph\t%0,%z1,%z2" "addu.ph\t%0,%z1,%z2"
[(set_attr "type" "arith") [(set_attr "type" "dspalu")
(set_attr "mode" "SI")]) (set_attr "mode" "SI")])
(define_insn "mips_addu_s_ph" (define_insn "mips_addu_s_ph"
...@@ -104,7 +104,7 @@ ...@@ -104,7 +104,7 @@
(unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_ADDU_S_PH))])] (unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_ADDU_S_PH))])]
"ISA_HAS_DSPR2" "ISA_HAS_DSPR2"
"addu_s.ph\t%0,%z1,%z2" "addu_s.ph\t%0,%z1,%z2"
[(set_attr "type" "arith") [(set_attr "type" "dspalusat")
(set_attr "mode" "SI")]) (set_attr "mode" "SI")])
(define_insn "mips_adduh_qb" (define_insn "mips_adduh_qb"
...@@ -114,7 +114,7 @@ ...@@ -114,7 +114,7 @@
UNSPEC_ADDUH_QB))] UNSPEC_ADDUH_QB))]
"ISA_HAS_DSPR2" "ISA_HAS_DSPR2"
"adduh.qb\t%0,%z1,%z2" "adduh.qb\t%0,%z1,%z2"
[(set_attr "type" "arith") [(set_attr "type" "dspalu")
(set_attr "mode" "SI")]) (set_attr "mode" "SI")])
(define_insn "mips_adduh_r_qb" (define_insn "mips_adduh_r_qb"
...@@ -124,7 +124,7 @@ ...@@ -124,7 +124,7 @@
UNSPEC_ADDUH_R_QB))] UNSPEC_ADDUH_R_QB))]
"ISA_HAS_DSPR2" "ISA_HAS_DSPR2"
"adduh_r.qb\t%0,%z1,%z2" "adduh_r.qb\t%0,%z1,%z2"
[(set_attr "type" "arith") [(set_attr "type" "dspalusat")
(set_attr "mode" "SI")]) (set_attr "mode" "SI")])
(define_insn "mips_append" (define_insn "mips_append"
...@@ -139,7 +139,7 @@ ...@@ -139,7 +139,7 @@
operands[2] = GEN_INT (INTVAL (operands[2]) & 31); operands[2] = GEN_INT (INTVAL (operands[2]) & 31);
return "append\t%0,%z2,%3"; return "append\t%0,%z2,%3";
} }
[(set_attr "type" "arith") [(set_attr "type" "dspalu")
(set_attr "mode" "SI")]) (set_attr "mode" "SI")])
(define_insn "mips_balign" (define_insn "mips_balign"
...@@ -154,7 +154,7 @@ ...@@ -154,7 +154,7 @@
operands[2] = GEN_INT (INTVAL (operands[2]) & 3); operands[2] = GEN_INT (INTVAL (operands[2]) & 3);
return "balign\t%0,%z2,%3"; return "balign\t%0,%z2,%3";
} }
[(set_attr "type" "arith") [(set_attr "type" "dspalu")
(set_attr "mode" "SI")]) (set_attr "mode" "SI")])
(define_insn "mips_cmpgdu_eq_qb" (define_insn "mips_cmpgdu_eq_qb"
...@@ -169,7 +169,7 @@ ...@@ -169,7 +169,7 @@
UNSPEC_CMPGDU_EQ_QB))])] UNSPEC_CMPGDU_EQ_QB))])]
"ISA_HAS_DSPR2" "ISA_HAS_DSPR2"
"cmpgdu.eq.qb\t%0,%z1,%z2" "cmpgdu.eq.qb\t%0,%z1,%z2"
[(set_attr "type" "arith") [(set_attr "type" "dspalu")
(set_attr "mode" "SI")]) (set_attr "mode" "SI")])
(define_insn "mips_cmpgdu_lt_qb" (define_insn "mips_cmpgdu_lt_qb"
...@@ -184,7 +184,7 @@ ...@@ -184,7 +184,7 @@
UNSPEC_CMPGDU_LT_QB))])] UNSPEC_CMPGDU_LT_QB))])]
"ISA_HAS_DSPR2" "ISA_HAS_DSPR2"
"cmpgdu.lt.qb\t%0,%z1,%z2" "cmpgdu.lt.qb\t%0,%z1,%z2"
[(set_attr "type" "arith") [(set_attr "type" "dspalu")
(set_attr "mode" "SI")]) (set_attr "mode" "SI")])
(define_insn "mips_cmpgdu_le_qb" (define_insn "mips_cmpgdu_le_qb"
...@@ -199,7 +199,7 @@ ...@@ -199,7 +199,7 @@
UNSPEC_CMPGDU_LE_QB))])] UNSPEC_CMPGDU_LE_QB))])]
"ISA_HAS_DSPR2" "ISA_HAS_DSPR2"
"cmpgdu.le.qb\t%0,%z1,%z2" "cmpgdu.le.qb\t%0,%z1,%z2"
[(set_attr "type" "arith") [(set_attr "type" "dspalu")
(set_attr "mode" "SI")]) (set_attr "mode" "SI")])
(define_insn "mips_dpa_w_ph" (define_insn "mips_dpa_w_ph"
...@@ -210,7 +210,8 @@ ...@@ -210,7 +210,8 @@
UNSPEC_DPA_W_PH))] UNSPEC_DPA_W_PH))]
"ISA_HAS_DSPR2 && !TARGET_64BIT" "ISA_HAS_DSPR2 && !TARGET_64BIT"
"dpa.w.ph\t%q0,%z2,%z3" "dpa.w.ph\t%q0,%z2,%z3"
[(set_attr "type" "imadd") [(set_attr "type" "dspmac")
(set_attr "accum_in" "1")
(set_attr "mode" "SI")]) (set_attr "mode" "SI")])
(define_insn "mips_dps_w_ph" (define_insn "mips_dps_w_ph"
...@@ -221,7 +222,8 @@ ...@@ -221,7 +222,8 @@
UNSPEC_DPS_W_PH))] UNSPEC_DPS_W_PH))]
"ISA_HAS_DSPR2 && !TARGET_64BIT" "ISA_HAS_DSPR2 && !TARGET_64BIT"
"dps.w.ph\t%q0,%z2,%z3" "dps.w.ph\t%q0,%z2,%z3"
[(set_attr "type" "imadd") [(set_attr "type" "dspmac")
(set_attr "accum_in" "1")
(set_attr "mode" "SI")]) (set_attr "mode" "SI")])
(define_insn "mulv2hi3" (define_insn "mulv2hi3"
...@@ -301,7 +303,8 @@ ...@@ -301,7 +303,8 @@
UNSPEC_MULSA_W_PH))] UNSPEC_MULSA_W_PH))]
"ISA_HAS_DSPR2 && !TARGET_64BIT" "ISA_HAS_DSPR2 && !TARGET_64BIT"
"mulsa.w.ph\t%q0,%z2,%z3" "mulsa.w.ph\t%q0,%z2,%z3"
[(set_attr "type" "imadd") [(set_attr "type" "dspmac")
(set_attr "accum_in" "1")
(set_attr "mode" "SI")]) (set_attr "mode" "SI")])
(define_insn "mips_precr_qb_ph" (define_insn "mips_precr_qb_ph"
...@@ -311,7 +314,7 @@ ...@@ -311,7 +314,7 @@
UNSPEC_PRECR_QB_PH))] UNSPEC_PRECR_QB_PH))]
"ISA_HAS_DSPR2" "ISA_HAS_DSPR2"
"precr.qb.ph\t%0,%z1,%z2" "precr.qb.ph\t%0,%z1,%z2"
[(set_attr "type" "arith") [(set_attr "type" "dspalu")
(set_attr "mode" "SI")]) (set_attr "mode" "SI")])
(define_insn "mips_precr_sra_ph_w" (define_insn "mips_precr_sra_ph_w"
...@@ -326,7 +329,7 @@ ...@@ -326,7 +329,7 @@
operands[2] = GEN_INT (INTVAL (operands[2]) & 31); operands[2] = GEN_INT (INTVAL (operands[2]) & 31);
return "precr_sra.ph.w\t%0,%z2,%3"; return "precr_sra.ph.w\t%0,%z2,%3";
} }
[(set_attr "type" "arith") [(set_attr "type" "dspalu")
(set_attr "mode" "SI")]) (set_attr "mode" "SI")])
(define_insn "mips_precr_sra_r_ph_w" (define_insn "mips_precr_sra_r_ph_w"
...@@ -341,7 +344,7 @@ ...@@ -341,7 +344,7 @@
operands[2] = GEN_INT (INTVAL (operands[2]) & 31); operands[2] = GEN_INT (INTVAL (operands[2]) & 31);
return "precr_sra_r.ph.w\t%0,%z2,%3"; return "precr_sra_r.ph.w\t%0,%z2,%3";
} }
[(set_attr "type" "arith") [(set_attr "type" "dspalu")
(set_attr "mode" "SI")]) (set_attr "mode" "SI")])
(define_insn "mips_prepend" (define_insn "mips_prepend"
...@@ -356,7 +359,7 @@ ...@@ -356,7 +359,7 @@
operands[3] = GEN_INT (INTVAL (operands[3]) & 31); operands[3] = GEN_INT (INTVAL (operands[3]) & 31);
return "prepend\t%0,%z2,%3"; return "prepend\t%0,%z2,%3";
} }
[(set_attr "type" "arith") [(set_attr "type" "dspalu")
(set_attr "mode" "SI")]) (set_attr "mode" "SI")])
(define_insn "mips_shra_qb" (define_insn "mips_shra_qb"
...@@ -374,7 +377,7 @@ ...@@ -374,7 +377,7 @@
} }
return "shrav.qb\t%0,%z1,%2"; return "shrav.qb\t%0,%z1,%2";
} }
[(set_attr "type" "shift") [(set_attr "type" "dspalu")
(set_attr "mode" "SI")]) (set_attr "mode" "SI")])
...@@ -393,7 +396,7 @@ ...@@ -393,7 +396,7 @@
} }
return "shrav_r.qb\t%0,%z1,%2"; return "shrav_r.qb\t%0,%z1,%2";
} }
[(set_attr "type" "shift") [(set_attr "type" "dspalu")
(set_attr "mode" "SI")]) (set_attr "mode" "SI")])
(define_insn "mips_shrl_ph" (define_insn "mips_shrl_ph"
...@@ -411,7 +414,7 @@ ...@@ -411,7 +414,7 @@
} }
return "shrlv.ph\t%0,%z1,%2"; return "shrlv.ph\t%0,%z1,%2";
} }
[(set_attr "type" "shift") [(set_attr "type" "dspalu")
(set_attr "mode" "SI")]) (set_attr "mode" "SI")])
(define_insn "mips_subu_ph" (define_insn "mips_subu_ph"
...@@ -424,7 +427,7 @@ ...@@ -424,7 +427,7 @@
(unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_SUBU_PH))])] (unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_SUBU_PH))])]
"ISA_HAS_DSPR2" "ISA_HAS_DSPR2"
"subu.ph\t%0,%z1,%z2" "subu.ph\t%0,%z1,%z2"
[(set_attr "type" "arith") [(set_attr "type" "dspalu")
(set_attr "mode" "SI")]) (set_attr "mode" "SI")])
(define_insn "mips_subu_s_ph" (define_insn "mips_subu_s_ph"
...@@ -437,7 +440,7 @@ ...@@ -437,7 +440,7 @@
(unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_SUBU_S_PH))])] (unspec:CCDSP [(match_dup 1) (match_dup 2)] UNSPEC_SUBU_S_PH))])]
"ISA_HAS_DSPR2" "ISA_HAS_DSPR2"
"subu_s.ph\t%0,%z1,%z2" "subu_s.ph\t%0,%z1,%z2"
[(set_attr "type" "arith") [(set_attr "type" "dspalusat")
(set_attr "mode" "SI")]) (set_attr "mode" "SI")])
(define_insn "mips_subuh_qb" (define_insn "mips_subuh_qb"
...@@ -447,7 +450,7 @@ ...@@ -447,7 +450,7 @@
UNSPEC_SUBUH_QB))] UNSPEC_SUBUH_QB))]
"ISA_HAS_DSPR2" "ISA_HAS_DSPR2"
"subuh.qb\t%0,%z1,%z2" "subuh.qb\t%0,%z1,%z2"
[(set_attr "type" "arith") [(set_attr "type" "dspalu")
(set_attr "mode" "SI")]) (set_attr "mode" "SI")])
(define_insn "mips_subuh_r_qb" (define_insn "mips_subuh_r_qb"
...@@ -457,7 +460,7 @@ ...@@ -457,7 +460,7 @@
UNSPEC_SUBUH_R_QB))] UNSPEC_SUBUH_R_QB))]
"ISA_HAS_DSPR2" "ISA_HAS_DSPR2"
"subuh_r.qb\t%0,%z1,%z2" "subuh_r.qb\t%0,%z1,%z2"
[(set_attr "type" "arith") [(set_attr "type" "dspalu")
(set_attr "mode" "SI")]) (set_attr "mode" "SI")])
(define_insn "mips_addqh_ph" (define_insn "mips_addqh_ph"
...@@ -467,7 +470,7 @@ ...@@ -467,7 +470,7 @@
UNSPEC_ADDQH_PH))] UNSPEC_ADDQH_PH))]
"ISA_HAS_DSPR2" "ISA_HAS_DSPR2"
"addqh.ph\t%0,%z1,%z2" "addqh.ph\t%0,%z1,%z2"
[(set_attr "type" "arith") [(set_attr "type" "dspalu")
(set_attr "mode" "SI")]) (set_attr "mode" "SI")])
(define_insn "mips_addqh_r_ph" (define_insn "mips_addqh_r_ph"
...@@ -477,7 +480,7 @@ ...@@ -477,7 +480,7 @@
UNSPEC_ADDQH_R_PH))] UNSPEC_ADDQH_R_PH))]
"ISA_HAS_DSPR2" "ISA_HAS_DSPR2"
"addqh_r.ph\t%0,%z1,%z2" "addqh_r.ph\t%0,%z1,%z2"
[(set_attr "type" "arith") [(set_attr "type" "dspalu")
(set_attr "mode" "SI")]) (set_attr "mode" "SI")])
(define_insn "mips_addqh_w" (define_insn "mips_addqh_w"
...@@ -487,7 +490,7 @@ ...@@ -487,7 +490,7 @@
UNSPEC_ADDQH_W))] UNSPEC_ADDQH_W))]
"ISA_HAS_DSPR2" "ISA_HAS_DSPR2"
"addqh.w\t%0,%z1,%z2" "addqh.w\t%0,%z1,%z2"
[(set_attr "type" "arith") [(set_attr "type" "dspalu")
(set_attr "mode" "SI")]) (set_attr "mode" "SI")])
(define_insn "mips_addqh_r_w" (define_insn "mips_addqh_r_w"
...@@ -497,7 +500,7 @@ ...@@ -497,7 +500,7 @@
UNSPEC_ADDQH_R_W))] UNSPEC_ADDQH_R_W))]
"ISA_HAS_DSPR2" "ISA_HAS_DSPR2"
"addqh_r.w\t%0,%z1,%z2" "addqh_r.w\t%0,%z1,%z2"
[(set_attr "type" "arith") [(set_attr "type" "dspalu")
(set_attr "mode" "SI")]) (set_attr "mode" "SI")])
(define_insn "mips_subqh_ph" (define_insn "mips_subqh_ph"
...@@ -507,7 +510,7 @@ ...@@ -507,7 +510,7 @@
UNSPEC_SUBQH_PH))] UNSPEC_SUBQH_PH))]
"ISA_HAS_DSPR2" "ISA_HAS_DSPR2"
"subqh.ph\t%0,%z1,%z2" "subqh.ph\t%0,%z1,%z2"
[(set_attr "type" "arith") [(set_attr "type" "dspalu")
(set_attr "mode" "SI")]) (set_attr "mode" "SI")])
(define_insn "mips_subqh_r_ph" (define_insn "mips_subqh_r_ph"
...@@ -517,7 +520,7 @@ ...@@ -517,7 +520,7 @@
UNSPEC_SUBQH_R_PH))] UNSPEC_SUBQH_R_PH))]
"ISA_HAS_DSPR2" "ISA_HAS_DSPR2"
"subqh_r.ph\t%0,%z1,%z2" "subqh_r.ph\t%0,%z1,%z2"
[(set_attr "type" "arith") [(set_attr "type" "dspalu")
(set_attr "mode" "SI")]) (set_attr "mode" "SI")])
(define_insn "mips_subqh_w" (define_insn "mips_subqh_w"
...@@ -527,7 +530,7 @@ ...@@ -527,7 +530,7 @@
UNSPEC_SUBQH_W))] UNSPEC_SUBQH_W))]
"ISA_HAS_DSPR2" "ISA_HAS_DSPR2"
"subqh.w\t%0,%z1,%z2" "subqh.w\t%0,%z1,%z2"
[(set_attr "type" "arith") [(set_attr "type" "dspalu")
(set_attr "mode" "SI")]) (set_attr "mode" "SI")])
(define_insn "mips_subqh_r_w" (define_insn "mips_subqh_r_w"
...@@ -537,7 +540,7 @@ ...@@ -537,7 +540,7 @@
UNSPEC_SUBQH_R_W))] UNSPEC_SUBQH_R_W))]
"ISA_HAS_DSPR2" "ISA_HAS_DSPR2"
"subqh_r.w\t%0,%z1,%z2" "subqh_r.w\t%0,%z1,%z2"
[(set_attr "type" "arith") [(set_attr "type" "dspalu")
(set_attr "mode" "SI")]) (set_attr "mode" "SI")])
(define_insn "mips_dpax_w_ph" (define_insn "mips_dpax_w_ph"
...@@ -548,7 +551,8 @@ ...@@ -548,7 +551,8 @@
UNSPEC_DPAX_W_PH))] UNSPEC_DPAX_W_PH))]
"ISA_HAS_DSPR2 && !TARGET_64BIT" "ISA_HAS_DSPR2 && !TARGET_64BIT"
"dpax.w.ph\t%q0,%z2,%z3" "dpax.w.ph\t%q0,%z2,%z3"
[(set_attr "type" "imadd") [(set_attr "type" "dspmac")
(set_attr "accum_in" "1")
(set_attr "mode" "SI")]) (set_attr "mode" "SI")])
(define_insn "mips_dpsx_w_ph" (define_insn "mips_dpsx_w_ph"
...@@ -559,7 +563,8 @@ ...@@ -559,7 +563,8 @@
UNSPEC_DPSX_W_PH))] UNSPEC_DPSX_W_PH))]
"ISA_HAS_DSPR2 && !TARGET_64BIT" "ISA_HAS_DSPR2 && !TARGET_64BIT"
"dpsx.w.ph\t%q0,%z2,%z3" "dpsx.w.ph\t%q0,%z2,%z3"
[(set_attr "type" "imadd") [(set_attr "type" "dspmac")
(set_attr "accum_in" "1")
(set_attr "mode" "SI")]) (set_attr "mode" "SI")])
(define_insn "mips_dpaqx_s_w_ph" (define_insn "mips_dpaqx_s_w_ph"
...@@ -574,7 +579,8 @@ ...@@ -574,7 +579,8 @@
UNSPEC_DPAQX_S_W_PH))])] UNSPEC_DPAQX_S_W_PH))])]
"ISA_HAS_DSPR2 && !TARGET_64BIT" "ISA_HAS_DSPR2 && !TARGET_64BIT"
"dpaqx_s.w.ph\t%q0,%z2,%z3" "dpaqx_s.w.ph\t%q0,%z2,%z3"
[(set_attr "type" "imadd") [(set_attr "type" "dspmac")
(set_attr "accum_in" "1")
(set_attr "mode" "SI")]) (set_attr "mode" "SI")])
(define_insn "mips_dpaqx_sa_w_ph" (define_insn "mips_dpaqx_sa_w_ph"
...@@ -589,7 +595,8 @@ ...@@ -589,7 +595,8 @@
UNSPEC_DPAQX_SA_W_PH))])] UNSPEC_DPAQX_SA_W_PH))])]
"ISA_HAS_DSPR2 && !TARGET_64BIT" "ISA_HAS_DSPR2 && !TARGET_64BIT"
"dpaqx_sa.w.ph\t%q0,%z2,%z3" "dpaqx_sa.w.ph\t%q0,%z2,%z3"
[(set_attr "type" "imadd") [(set_attr "type" "dspmacsat")
(set_attr "accum_in" "1")
(set_attr "mode" "SI")]) (set_attr "mode" "SI")])
(define_insn "mips_dpsqx_s_w_ph" (define_insn "mips_dpsqx_s_w_ph"
...@@ -604,7 +611,8 @@ ...@@ -604,7 +611,8 @@
UNSPEC_DPSQX_S_W_PH))])] UNSPEC_DPSQX_S_W_PH))])]
"ISA_HAS_DSPR2 && !TARGET_64BIT" "ISA_HAS_DSPR2 && !TARGET_64BIT"
"dpsqx_s.w.ph\t%q0,%z2,%z3" "dpsqx_s.w.ph\t%q0,%z2,%z3"
[(set_attr "type" "imadd") [(set_attr "type" "dspmac")
(set_attr "accum_in" "1")
(set_attr "mode" "SI")]) (set_attr "mode" "SI")])
(define_insn "mips_dpsqx_sa_w_ph" (define_insn "mips_dpsqx_sa_w_ph"
...@@ -619,5 +627,6 @@ ...@@ -619,5 +627,6 @@
UNSPEC_DPSQX_SA_W_PH))])] UNSPEC_DPSQX_SA_W_PH))])]
"ISA_HAS_DSPR2 && !TARGET_64BIT" "ISA_HAS_DSPR2 && !TARGET_64BIT"
"dpsqx_sa.w.ph\t%q0,%z2,%z3" "dpsqx_sa.w.ph\t%q0,%z2,%z3"
[(set_attr "type" "imadd") [(set_attr "type" "dspmacsat")
(set_attr "accum_in" "1")
(set_attr "mode" "SI")]) (set_attr "mode" "SI")])
...@@ -298,6 +298,7 @@ extern const char *mips_output_division (const char *, rtx *); ...@@ -298,6 +298,7 @@ extern const char *mips_output_division (const char *, rtx *);
extern unsigned int mips_hard_regno_nregs (int, enum machine_mode); extern unsigned int mips_hard_regno_nregs (int, enum machine_mode);
extern bool mips_linked_madd_p (rtx, rtx); extern bool mips_linked_madd_p (rtx, rtx);
extern bool mips_store_data_bypass_p (rtx, rtx); extern bool mips_store_data_bypass_p (rtx, rtx);
extern int mips_dspalu_bypass_p (rtx, rtx);
extern rtx mips_prefetch_cookie (rtx, rtx); extern rtx mips_prefetch_cookie (rtx, rtx);
extern const char *current_section_name (void); extern const char *current_section_name (void);
......
...@@ -8307,6 +8307,36 @@ mips_dwarf_register_span (rtx reg) ...@@ -8307,6 +8307,36 @@ mips_dwarf_register_span (rtx reg)
return NULL_RTX; return NULL_RTX;
} }
/* DSP ALU can bypass data with no delays for the following pairs. */
enum insn_code dspalu_bypass_table[][2] =
{
{CODE_FOR_mips_addsc, CODE_FOR_mips_addwc},
{CODE_FOR_mips_cmpu_eq_qb, CODE_FOR_mips_pick_qb},
{CODE_FOR_mips_cmpu_lt_qb, CODE_FOR_mips_pick_qb},
{CODE_FOR_mips_cmpu_le_qb, CODE_FOR_mips_pick_qb},
{CODE_FOR_mips_cmp_eq_ph, CODE_FOR_mips_pick_ph},
{CODE_FOR_mips_cmp_lt_ph, CODE_FOR_mips_pick_ph},
{CODE_FOR_mips_cmp_le_ph, CODE_FOR_mips_pick_ph},
{CODE_FOR_mips_wrdsp, CODE_FOR_mips_insv}
};
int
mips_dspalu_bypass_p (rtx out_insn, rtx in_insn)
{
int i;
int num_bypass = ARRAY_SIZE (dspalu_bypass_table);
enum insn_code out_icode = (enum insn_code) INSN_CODE (out_insn);
enum insn_code in_icode = (enum insn_code) INSN_CODE (in_insn);
for (i = 0; i < num_bypass; i++)
{
if (out_icode == dspalu_bypass_table[i][0]
&& in_icode == dspalu_bypass_table[i][1])
return true;
}
return false;
}
/* Implement ASM_OUTPUT_ASCII. */ /* Implement ASM_OUTPUT_ASCII. */
void void
......
...@@ -328,6 +328,12 @@ ...@@ -328,6 +328,12 @@
;; frsqrt floating point reciprocal square root ;; frsqrt floating point reciprocal square root
;; frsqrt1 floating point reciprocal square root step1 ;; frsqrt1 floating point reciprocal square root step1
;; frsqrt2 floating point reciprocal square root step2 ;; frsqrt2 floating point reciprocal square root step2
;; dspmac DSP MAC instructions not saturating the accumulator
;; dspmacsat DSP MAC instructions that saturate the accumulator
;; accext DSP accumulator extract instructions
;; accmod DSP accumulator modify instructions
;; dspalu DSP ALU instructions not saturating the result
;; dspalusat DSP ALU instructions that saturate the result
;; multi multiword sequence (or user asm statements) ;; multi multiword sequence (or user asm statements)
;; atomic atomic memory update instruction ;; atomic atomic memory update instruction
;; syncloop memory atomic operation implemented as a sync loop ;; syncloop memory atomic operation implemented as a sync loop
...@@ -338,7 +344,8 @@ ...@@ -338,7 +344,8 @@
prefetch,prefetchx,condmove,mtc,mfc,mthi,mtlo,mfhi,mflo,const,arith,logical, prefetch,prefetchx,condmove,mtc,mfc,mthi,mtlo,mfhi,mflo,const,arith,logical,
shift,slt,signext,clz,pop,trap,imul,imul3,imul3nc,imadd,idiv,idiv3,move, shift,slt,signext,clz,pop,trap,imul,imul3,imul3nc,imadd,idiv,idiv3,move,
fmove,fadd,fmul,fmadd,fdiv,frdiv,frdiv1,frdiv2,fabs,fneg,fcmp,fcvt,fsqrt, fmove,fadd,fmul,fmadd,fdiv,frdiv,frdiv1,frdiv2,fabs,fneg,fcmp,fcvt,fsqrt,
frsqrt,frsqrt1,frsqrt2,multi,atomic,syncloop,nop,ghost" frsqrt,frsqrt1,frsqrt2,dspmac,dspmacsat,accext,accmod,dspalu,dspalusat,
multi,atomic,syncloop,nop,ghost"
(cond [(eq_attr "jal" "!unset") (const_string "call") (cond [(eq_attr "jal" "!unset") (const_string "call")
(eq_attr "got" "load") (const_string "load") (eq_attr "got" "load") (const_string "load")
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment