|
54 | 54 |
|
55 | 55 | (define_insn_reservation "arcv_rmx100_load_insn" 3 |
56 | 56 | (and (eq_attr "tune" "arcv_rmx100") |
57 | | - (eq_attr "type" "load,fpload")) |
| 57 | + (eq_attr "type" "load")) |
58 | 58 | "arcv_rmx100_DMP,nothing*2") |
59 | 59 |
|
60 | 60 | (define_insn_reservation "arcv_rmx100_store_insn" 1 |
61 | 61 | (and (eq_attr "tune" "arcv_rmx100") |
62 | 62 | (eq_attr "type" "store,fpstore")) |
63 | 63 | "arcv_rmx100_DMP") |
64 | 64 |
|
| 65 | +;; FPU scheduling. FIXME: This is based on the "fast" unit for now, the "slow" |
| 66 | +;; option remains to be implemented later (together with the -mfpu flag). |
| 67 | + |
| 68 | +(define_insn_reservation "arcv_rmx100_fpload_insn" 3 |
| 69 | + (and (eq_attr "tune" "arcv_rmx100") |
| 70 | + (eq_attr "type" "fpload")) |
| 71 | + "arcv_rmx100_DMP,nothing*2") |
| 72 | + |
65 | 73 | (define_insn_reservation "arcv_rmx100_farith_insn" 2 |
66 | 74 | (and (eq_attr "tune" "arcv_rmx100") |
67 | | - (eq_attr "type" "fadd,fmul,fmadd,fcmp")) |
68 | | - "arcv_rmx100_FPU*2") |
| 75 | + (eq_attr "type" "fadd,fcmp")) |
| 76 | + "arcv_rmx100_FPU,nothing") |
69 | 77 |
|
70 | | -(define_insn_reservation "arcv_rmx100_xfer" 2 |
| 78 | +(define_insn_reservation "arcv_rmx100_xfer" 1 |
71 | 79 | (and (eq_attr "tune" "arcv_rmx100") |
72 | 80 | (eq_attr "type" "fmove,mtc,mfc,fcvt,fcvt_f2i,fcvt_i2f")) |
73 | | - "arcv_rmx100_FPU*2") |
74 | | - |
75 | | -;;(define_insn_reservation "core" 1 |
76 | | -;; (eq_attr "type" "block, brk, dmb, flag, lr, sr, sync") |
77 | | -;; "arcv_rmx100_ALU0 + arcv_rmx100_ALU1 + arcv_rmx100_DMP + arcv_rmx100_MPY + arcv_rmx100_MPY64 + arcv_rmx100_DIV") |
| 81 | + "arcv_rmx100_FPU") |
78 | 82 |
|
79 | | -(define_insn_reservation "arcv_rmx100_fmul_half" 5 |
| 83 | +(define_insn_reservation "arcv_rmx100_fmul_insn" 2 |
80 | 84 | (and (eq_attr "tune" "arcv_rmx100") |
81 | | - (and (eq_attr "type" "fadd,fmul,fmadd") |
82 | | - (eq_attr "mode" "HF"))) |
83 | | - "arcv_rmx100_FPU") |
| 85 | + (eq_attr "type" "fmul")) |
| 86 | + "arcv_rmx100_FPU,nothing") |
84 | 87 |
|
85 | | -(define_insn_reservation "arcv_rmx100_fmul_single" 5 |
| 88 | +(define_insn_reservation "arcv_rmx100_fmac_insn" 2 |
86 | 89 | (and (eq_attr "tune" "arcv_rmx100") |
87 | | - (and (eq_attr "type" "fadd,fmul,fmadd") |
88 | | - (eq_attr "mode" "SF"))) |
89 | | - "arcv_rmx100_FPU") |
| 90 | + (eq_attr "type" "fmadd")) |
| 91 | + "arcv_rmx100_FPU,nothing") |
90 | 92 |
|
91 | | -(define_insn_reservation "arcv_rmx100_fmul_double" 7 |
| 93 | +(define_insn_reservation "arcv_rmx100_fdiv_insn" 10 |
92 | 94 | (and (eq_attr "tune" "arcv_rmx100") |
93 | | - (and (eq_attr "type" "fadd,fmul,fmadd") |
94 | | - (eq_attr "mode" "DF"))) |
| 95 | + (eq_attr "type" "fdiv,fsqrt")) |
95 | 96 | "arcv_rmx100_FPU") |
96 | 97 |
|
97 | | -(define_insn_reservation "arcv_rmx100_fdiv" 20 |
98 | | - (and (eq_attr "tune" "arcv_rmx100") |
99 | | - (eq_attr "type" "fdiv")) |
100 | | - "arcv_rmx100_FPU*20") |
101 | | - |
102 | | -(define_insn_reservation "arcv_rmx100_fsqrt" 25 |
103 | | - (and (eq_attr "tune" "arcv_rmx100") |
104 | | - (eq_attr "type" "fsqrt")) |
105 | | - "arcv_rmx100_FPU*25") |
106 | 98 |
|
107 | 99 | (define_bypass 1 "arcv_rmx100_mpy32_insn" "arcv_rmx100_*" "arcv_mpy_1c_bypass_p") |
108 | 100 | (define_bypass 2 "arcv_rmx100_mpy32_insn" "arcv_rmx100_*" "arcv_mpy_2c_bypass_p") |
|
0 commit comments