|
35 | 35 | (define_cpu_unit "arcv_rmx500_issueB_fuse1" "arcv_rmx500") |
36 | 36 |
|
37 | 37 | ;; Instruction reservation for arithmetic instructions (pipe A, pipe B). |
| 38 | +;; instructions can be issued back to back - after 1 cycle the result is available |
38 | 39 | (define_insn_reservation "arcv_rmx500_alu_early_arith" 1 |
39 | 40 | (and (eq_attr "tune" "arcv_rmx500") |
40 | 41 | (eq_attr "type" "unknown,move,const,arith,shift,slt,multi,auipc,nop,logical,\ |
41 | 42 | bitmanip,min,max,minu,maxu,clz,ctz,atomic,\ |
42 | 43 | condmove,mvpair,zicond,cpop,clmul")) |
43 | 44 | "((arcv_rmx500_issueA_fuse0 + arcv_rmx500_ALU_A_fuse0_early) | (arcv_rmx500_issueA_fuse1 + arcv_rmx500_ALU_A_fuse1_early)) | ((arcv_rmx500_issueB_fuse0 + arcv_rmx500_ALU_B_fuse0_early) | (arcv_rmx500_issueB_fuse1 + arcv_rmx500_ALU_B_fuse1_early))") |
44 | 45 |
|
45 | | -(define_insn_reservation "arcv_rmx500_imul_fused" 1 |
| 46 | +(define_insn_reservation "arcv_rmx500_imul_fused" 3 |
46 | 47 | (and (eq_attr "tune" "arcv_rmx500") |
47 | 48 | (eq_attr "type" "imul_fused")) |
48 | | - "(arcv_rmx500_issueA_fuse0 + arcv_rmx500_issueA_fuse1 + arcv_rmx500_ALU_A_fuse0_early + arcv_rmx500_ALU_A_fuse1_early + arcv_rmx500_MPY32)") |
| 49 | + "(arcv_rmx500_issueA_fuse0 + arcv_rmx500_issueA_fuse1 + arcv_rmx500_ALU_A_fuse0_early + arcv_rmx500_ALU_A_fuse1_early + arcv_rmx500_MPY32), nothing*2") |
49 | 50 |
|
50 | 51 | (define_insn_reservation "arcv_rmx500_alu_fused" 1 |
51 | 52 | (and (eq_attr "tune" "arcv_rmx500") |
|
58 | 59 | (eq_attr "type" "branch,jump,call,jalr,ret,trap")) |
59 | 60 | "arcv_rmx500_issueA_fuse0 | arcv_rmx500_issueA_fuse1") |
60 | 61 |
|
61 | | -(define_insn_reservation "arcv_rmx500_div_insn" 22 |
| 62 | +(define_insn_reservation "arcv_rmx500_div_insn" 21 |
62 | 63 | (and (eq_attr "tune" "arcv_rmx500") |
63 | 64 | (eq_attr "type" "idiv")) |
64 | | - "arcv_rmx500_issueA_fuse0 + arcv_rmx500_DIV, nothing*21") |
| 65 | + "arcv_rmx500_issueA_fuse0 + arcv_rmx500_DIV, nothing*20") |
65 | 66 |
|
66 | | -(define_insn_reservation "arcv_rmx500_mpy32_insn" 10 |
| 67 | +(define_insn_reservation "arcv_rmx500_mpy32_insn" 3 |
67 | 68 | (and (eq_attr "tune" "arcv_rmx500") |
68 | 69 | (eq_attr "type" "imul")) |
69 | | - "arcv_rmx500_issueA_fuse0 + arcv_rmx500_MPY32, nothing*9") |
| 70 | + "arcv_rmx500_issueA_fuse0 + arcv_rmx500_MPY32, nothing*2") |
70 | 71 |
|
71 | | -(define_insn_reservation "arcv_rmx500_load_insn" 1 |
| 72 | +(define_insn_reservation "arcv_rmx500_load_insn" 2 |
72 | 73 | (and (eq_attr "tune" "arcv_rmx500") |
73 | 74 | (eq_attr "type" "load,fpload")) |
74 | | - "(arcv_rmx500_issueB_fuse0 + arcv_rmx500_DMP_fuse0) | (arcv_rmx500_issueB_fuse1 + arcv_rmx500_DMP_fuse1)") |
| 75 | + "(arcv_rmx500_issueB_fuse0 + arcv_rmx500_DMP_fuse0) | (arcv_rmx500_issueB_fuse1 + arcv_rmx500_DMP_fuse1), nothing") |
75 | 76 |
|
76 | 77 | (define_insn_reservation "arcv_rmx500_store_insn" 1 |
77 | 78 | (and (eq_attr "tune" "arcv_rmx500") |
78 | 79 | (eq_attr "type" "store,fpstore")) |
79 | 80 | "(arcv_rmx500_issueB_fuse0 + arcv_rmx500_DMP_fuse0) | (arcv_rmx500_issueB_fuse1 + arcv_rmx500_DMP_fuse1)") |
80 | 81 |
|
81 | 82 | ;; (soft) floating points |
82 | | -(define_insn_reservation "arcv_rmx500_xfer" 2 |
| 83 | +(define_insn_reservation "arcv_rmx500_xfer" 3 |
83 | 84 | (and (eq_attr "tune" "arcv_rmx500") |
84 | 85 | (eq_attr "type" "mfc,mtc,fcvt,fcvt_i2f,fcvt_f2i,fmove,fcmp")) |
85 | | - "(arcv_rmx500_ALU_A_fuse0_early | arcv_rmx500_ALU_B_fuse0_early), nothing") |
| 86 | + "(arcv_rmx500_ALU_A_fuse0_early | arcv_rmx500_ALU_B_fuse0_early), nothing*2") |
86 | 87 |
|
87 | | -(define_insn_reservation "arcv_rmx500_fmul" 2 |
| 88 | +(define_insn_reservation "arcv_rmx500_fmul" 3 |
88 | 89 | (and (eq_attr "tune" "arcv_rmx500") |
89 | 90 | (eq_attr "type" "fadd,fmul,fmadd")) |
90 | | - "(arcv_rmx500_ALU_A_fuse0_early | arcv_rmx500_ALU_B_fuse0_early,nothing)") |
| 91 | + "(arcv_rmx500_ALU_A_fuse0_early | arcv_rmx500_ALU_B_fuse0_early,nothing*2)") |
91 | 92 |
|
92 | 93 | (define_insn_reservation "arcv_rmx500_fdiv" 17 |
93 | 94 | (and (eq_attr "tune" "arcv_rmx500") |
|
0 commit comments