add ldst-shifted-postinc (!) to ls012 optable, starting to get hairy
[libreriscv.git] / openpower / sv / rfc / ls012 / optable.csv
1 op, rfc, priority, cost, SVP64, group, PO1, page, regs
2 # LD/ST-Postincrement
3 lbzup, ls011, high, PO, yes, EXT2xx, no, isa/pifixedload, 1R2W
4 lbzupx, ls011, high, 10, yes, EXT2xx, no, isa/pifixedload, 2R2W
5 lhzup, ls011, high, PO, yes, EXT2xx, no, isa/pifixedload, 1R2W
6 lhzupx, ls011, high, 10, yes, EXT2xx, no, isa/pifixedload, 2R2W
7 lhaup, ls011, high, PO, yes, EXT2xx, no, isa/pifixedload, 1R2W
8 lhaupx, ls011, high, 10, yes, EXT2xx, no, isa/pifixedload, 2R2W
9 lwzup, ls011, high, PO, yes, EXT2xx, no, isa/pifixedload, 1R2W
10 lwzupx, ls011, high, 10, yes, EXT2xx, no, isa/pifixedload, 2R2W
11 lwaupx, ls011, high, 10, yes, EXT2xx, no, isa/pifixedload, 2R2W
12 ldup, ls011, high, PO, yes, EXT2xx, no, isa/pifixedload, 1R2W
13 ldupx, ls011, high, 10, yes, EXT2xx, no, isa/pifixedload, 2R2W
14 stbup, ls011, high, PO, yes, EXT2xx, no, isa/pifixedstore, 2R1W
15 stbupx, ls011, high, 10, yes, EXT2xx, no, isa/pifixedstore, 3R1W
16 sthup, ls011, high, PO, yes, EXT2xx, no, isa/pifixedstore, 2R1W
17 sthupx, ls011, high, 10, yes, EXT2xx, no, isa/pifixedstore, 3R1W
18 stwup, ls011, high, PO, yes, EXT2xx, no, isa/pifixedstore, 2R1W
19 stwupx, ls011, high, 10, yes, EXT2xx, no, isa/pifixedstore, 3R1W
20 stdup, ls011, high, PO, yes, EXT2xx, no, isa/pifixedstore, 2R1W
21 stdupx, ls011, high, 10, yes, EXT2xx, no, isa/pifixedstore, 3R1W
22 # FP LD/ST-Postincrement
23 lfdu, ls011, high, PO, yes, EXT2xx, no, isa/pifixedload, 1R2W
24 lfsup, ls011, high, PO, yes, EXT2xx, no, isa/pifixedload, 1R2W
25 lfdupx, ls011, high, 10, yes, EXT2xx, no, isa/pifixedload, 2R2W
26 lsdupx, ls011, high, 10, yes, EXT2xx, no, isa/pifixedload, 2R2W
27 stfdup, ls011, high, PO, yes, EXT2xx, no, isa/pifixedstore, 2R1W
28 stfsup, ls011, high, PO, yes, EXT2xx, no, isa/pifixedstore, 2R1W
29 stfdupx, ls011, high, 10, yes, EXT2xx, no, isa/pifixedstore, 3R1W
30 stfsupx, ls011, high, 10, yes, EXT2xx, no, isa/pifixedstore, 3R1W
31 # LD/ST-Shifted-Postincrement
32 lbzusp, ls011, low, PO, yes, EXT2xx, no, isa/pifixedload, 1R2W
33 lbzuspx, ls011, med, 10, yes, EXT2xx, no, isa/pifixedload, 2R2W
34 lhzusp, ls011, low, PO, yes, EXT2xx, no, isa/pifixedload, 1R2W
35 lhzuspx, ls011, med, 10, yes, EXT2xx, no, isa/pifixedload, 2R2W
36 lhausp, ls011, low, PO, yes, EXT2xx, no, isa/pifixedload, 1R2W
37 lhauspx, ls011, med, 10, yes, EXT2xx, no, isa/pifixedload, 2R2W
38 lwzusp, ls011, low, PO, yes, EXT2xx, no, isa/pifixedload, 1R2W
39 lwzuspx, ls011, med, 10, yes, EXT2xx, no, isa/pifixedload, 2R2W
40 lwauspx, ls011, med, 10, yes, EXT2xx, no, isa/pifixedload, 2R2W
41 ldusp, ls011, low, PO, yes, EXT2xx, no, isa/pifixedload, 1R2W
42 lduspx, ls011, med, 10, yes, EXT2xx, no, isa/pifixedload, 2R2W
43 stbusp, ls011, low, PO, yes, EXT2xx, no, isa/pifixedstore, 2R1W
44 stbuspx, ls011, med, 10, yes, EXT2xx, no, isa/pifixedstore, 3R1W
45 sthusp, ls011, low, PO, yes, EXT2xx, no, isa/pifixedstore, 2R1W
46 sthuspx, ls011, med, 10, yes, EXT2xx, no, isa/pifixedstore, 3R1W
47 stwusp, ls011, low, PO, yes, EXT2xx, no, isa/pifixedstore, 2R1W
48 stwuspx, ls011, med, 10, yes, EXT2xx, no, isa/pifixedstore, 3R1W
49 stdusp, ls011, low, PO, yes, EXT2xx, no, isa/pifixedstore, 2R1W
50 stduspx, ls011, med, 10, yes, EXT2xx, no, isa/pifixedstore, 3R1W
51 # FP LD/ST-Shifted-Postincrement
52 lfdups, ls011, low, PO, yes, EXT2xx, no, isa/pifixedload, 1R2W
53 lfsups, ls011, low, PO, yes, EXT2xx, no, isa/pifixedload, 1R2W
54 lfdupsx, ls011, med, 10, yes, EXT2xx, no, isa/pifixedload, 2R2W
55 lsdupsx, ls011, med, 10, yes, EXT2xx, no, isa/pifixedload, 2R2W
56 stfdups, ls011, low, PO, yes, EXT2xx, no, isa/pifixedstore, 2R1W
57 stfsups, ls011, low, PO, yes, EXT2xx, no, isa/pifixedstore, 2R1W
58 stfdupsx, ls011, med, 10, yes, EXT2xx, no, isa/pifixedstore, 3R1W
59 stfsupsx, ls011, med, 10, yes, EXT2xx, no, isa/pifixedstore, 3R1W
60 # LD/ST-Index-Shifted (w/Update)
61 lbzsx, ls004, high, 9, yes, EXT0xx, no, ls004, 2R1W
62 lbzusx, ls004, high, 9, yes, EXT0xx, no, ls004, 2R2W
63 lhzsx, ls004, high, 9, yes, EXT0xx, no, ls004, 2R1W
64 lhzusx, ls004, high, 9, yes, EXT0xx, no, ls004, 2R2W
65 lhasx, ls004, high, 9, yes, EXT0xx, no, ls004, 2R1W
66 lhausx, ls004, high, 9, yes, EXT0xx, no, ls004, 2R2W
67 lwzsx, ls004, high, 9, yes, EXT0xx, no, ls004, 2R1W
68 lwzusx, ls004, high, 9, yes, EXT0xx, no, ls004, 2R2W
69 lwasx, ls004, high, 9, yes, EXT0xx, no, ls004, 2R1W
70 lwausx, ls004, high, 9, yes, EXT0xx, no, ls004, 2R2W
71 ldsx, ls004, high, 9, yes, EXT0xx, no, ls004, 2R1W
72 ldusx, ls004, high, 9, yes, EXT0xx, no, ls004, 2R2W
73 lhbrsx, ls004, high, 9, yes, EXT0xx, no, ls004, 2R1W
74 lwbrsx, ls004, high, 9, yes, EXT0xx, no, ls004, 2R1W
75 ldbrsx, ls004, high, 9, yes, EXT0xx, no, ls004, 2R1W
76 stbsx, ls004, high, 9, yes, EXT0xx, no, ls004, 3R
77 stbusx, ls004, high, 9, yes, EXT0xx, no, ls004, 3R1W
78 sthsx, ls004, high, 9, yes, EXT0xx, no, ls004, 3R
79 sthusx, ls004, high, 9, yes, EXT0xx, no, ls004, 3R1W
80 stwsx, ls004, high, 9, yes, EXT0xx, no, ls004, 3R
81 stwusx, ls004, high, 9, yes, EXT0xx, no, ls004, 3R1W
82 stdsx, ls004, high, 9, yes, EXT0xx, no, ls004, 3R
83 stdusx, ls004, high, 9, yes, EXT0xx, no, ls004, 3R1W
84 sthbrsx, ls004, high, 9, yes, EXT0xx, no, ls004, 3R
85 stwbrsx, ls004, high, 9, yes, EXT0xx, no, ls004, 3R
86 stdbrsx, ls004, high, 9, yes, EXT0xx, no, ls004, 3R
87 # FP LD/ST-Index-Shifted (w/Update)
88 lfsxs, ls004, high, 9, yes, EXT0xx, no, ls004, 2R1W
89 lfsuxs, ls004, high, 9, yes, EXT0xx, no, ls004, 2R1W
90 lfdxs, ls004, high, 9, yes, EXT0xx, no, ls004, 2R1W
91 lfduxs, ls004, high, 9, yes, EXT0xx, no, ls004, 2R1W
92 lfiwaxs, ls004, high, 9, yes, EXT0xx, no, ls004, 2R1W
93 lfiwzxs, ls004, high, 9, yes, EXT0xx, no, ls004, 2R1W
94 stfsxs, ls004, high, 9, yes, EXT0xx, no, ls004, 3R
95 stfsuxs, ls004, high, 9, yes, EXT0xx, no, ls004, 3R1W
96 stfdxs, ls004, high, 9, yes, EXT0xx, no, ls004, 3R
97 stfduxs, ls004, high, 9, yes, EXT0xx, no, ls004, 3R1W
98 stfiwxs, ls004, high, 9, yes, EXT0xx, no, ls004, 3R
99 # Bitmanip LUT2/3 operations. high cost high reward
100 grevlut, TBD, high, 3, yes, TBD, no, sv/bitmanip, 2R1W
101 grevluti, TBD, high, 3, yes, TBD, yes, sv/bitmanip, 1R1W
102 ternlogi, ls007, high, 2, yes, TBD, yes, sv/bitmanip, 3R1W1w
103 crternlogi, ls007, high, 5, yes, TBD, yes, sv/bitmanip, 3r1w
104 binlut, ls007, high, 6, yes, TBD, no, sv/bitmanip, 3R1W
105 crbinlut, ls007, high, 5, yes, TBD, no, sv/bitmanip, 3r1w
106 # Float-Load-Immediate (always saves one LD L1/2/3 D-Cache op)
107 fmvis, ls002, high, 5, yes, TBD, no, sv/bitmanip, 1W
108 fishmv, ls002, high, 5, yes, TBD, no, sv/bitmanip, 1R1W
109 # Shift-and-Add (mitigates LD-ST-Shift; Cryptography e.g. twofish)
110 shadd, ls003, med, 7, yes, TBD, no, sv/bitmanip, 2R1W1w
111 shadduw, ls003, med, 7, yes, TBD, no, sv/bitmanip, 2R1W1w
112 shaddw, ls003, med, 7, yes, TBD, no, sv/bitmanip, 2R1W1w
113 # Audio-Video
114 absdu, TBD, TBD, 10, yes, TBD, no, sv/av_opcodes, 2R1W1w
115 avgadd, TBD, TBD, 10, yes, TBD, no, sv/av_opcodes, 2R1W1w
116 minmax, TBD, high, 10, yes, TBD, no, sv/av_opcodes, 2R1W1w
117 absaccs, TBD, TBD, 10, yes, TBD, no, sv/av_opcodes, 3R1W1w
118 absaccu, TBD, TBD, 10, yes, TBD, no, sv/av_opcodes, 3R1W1w
119 # BMI group
120 bmask, TBD, high, 5, yes, TBD, yes, sv/vector_ops, 2R1W1w
121 cprop, TBD, high, 5, yes, TBD, yes, sv/vector_ops, 2R1W1w
122 # SVP64 Management.
123 setvl, ls008, high, 5, no, EXT0xx, yes, sv/setvl, 3R2W
124 svstep, ls008, high, 5, no, EXT0xx, yes, sv/svstep, 1R2W1w
125 svremap, ls009, high, 5, no, EXT0xx, yes, sv/remap, 1R1W
126 svshape, ls009, high, 5, no, EXT0xx, yes, sv/remap, 5R5W
127 svshape2, ls009, high, 5, no, EXT0xx, yes, sv/remap, 5R5W
128 svindex, ls009, high, 5, no, EXT0xx, yes, sv/remap, 5R5W
129 # GPU swizzle
130 mv.swizzle, TBD, TBD, 4, yes, TBD, yes, sv/mv.swizzle, 2R2W
131 fmv.swizzle, TBD, TBD, 4, yes, TBD, yes, sv/mv.swizzle, 2R2W
132 # CR weirds
133 crrweird, TBD, high, 8, yes, TBD, no, sv/cr_int_predication, 1r1W1w
134 mfcrweird, TBD, high, 8, yes, TBD, no, sv/cr_int_predication, 1r1W1w
135 mtcrrweird, TBD, high, 9, yes, TBD, no, sv/cr_int_predication, 1R1r1w
136 mtcrweird, TBD, high, 9, yes, TBD, no, sv/cr_int_predication, 1R1r1w
137 crweirder, TBD, high, 9, yes, TBD, no, sv/cr_int_predication, 2r1w
138 mcrfm, TBD, high, 9, yes, EXT0xx, no, sv/cr_int_predication, 2r1w
139 # fclass (Scalar variant of xvtstdcsp)
140 fptstp(s), TBD, high, 10, yes, EXT0xx, no, sv/fclass, 1R1w
141 # INT<->FP mv
142 fmvfg(s), ls006, high, 10, yes, EXT0xx, no, sv/int_fp_mv, 1R1W1w
143 fcvtfg(s), ls006, high, 10, yes, EXT0xx, no, sv/int_fp_mv, 1R1W1w
144 fcvttg(s), ls006, high, 10, yes, EXT0xx, no, sv/int_fp_mv, 1R1W1w
145 fcvtstg(s), ls006, high, 10, yes, EXT0xx, no, sv/int_fp_mv, 1R1W1w
146 # Big-Integer Chained 3-in 2-out (64-bit Carry)
147 dsld, ls003, high, 5, yes, EXT0xx, no, sv/biginteger, 3R2W1w
148 dsrd, ls003, high, 5, yes, EXT0xx, no, sv/biginteger, 3R2W1w
149 maddedu, ls003, high, 6, yes, EXT0xx, no, sv/biginteger, 3R2W
150 maddedus, ls003, high, 6, yes, EXT0xx, no, sv/biginteger, 3R2W
151 divmod2du, ls003, high, 6, yes, EXT0xx, no, sv/biginteger, 3R2W1w
152 # FP DCT/FFT Butterfly (2/3-in 2-out)
153 ffadd(s), TBD, med, 10, yes, EXT2xx, no, isa/svfparith, 2R1W1w
154 ffsub(s), TBD, med, 10, yes, EXT2xx, no, isa/svfparith, 2R1W1w
155 ffmul(s), TBD, med, 10, yes, EXT2xx, no, isa/svfparith, 2R1W1w
156 ffdiv(s), TBD, med, 10, yes, EXT2xx, no, isa/svfparith, 2R1W1w
157 fdmadd(s), TBD, med, 5, yes, EXT2xx, no, isa/svfparith, 3R2W1w
158 ffmadd(s), TBD, med, 5, yes, EXT2xx, no, isa/svfparith, 3R2W1w
159 ffmsub(s), TBD, med, 5, yes, EXT2xx, no, isa/svfparith, 3R2W1w
160 ffnmadd(s), TBD, med, 5, yes, EXT2xx, no, isa/svfparith, 3R2W1w
161 ffnmsub(s), TBD, med, 5, yes, EXT2xx, no, isa/svfparith, 3R2W1w
162 # Trigonometric (1-arg)
163 fsin(s), TBD, high, 10, yes, EXT0xx, no, transcendentals, 1R1W1w
164 fcos(s), TBD, high, 10, yes, EXT0xx, no, transcendentals, 1R1W1w
165 ftan(s), TBD, high, 10, yes, EXT0xx, no, transcendentals, 1R1W1w
166 fasin(s), TBD, low, 10, yes, EXT2xx, no, transcendentals, 1R1W1w
167 facos(s), TBD, low, 10, yes, EXT2xx, no, transcendentals, 1R1W1w
168 fatan(s), TBD, low, 10, yes, EXT2xx, no, transcendentals, 1R1W1w
169 fsinpi(s), TBD, high, 10, yes, TBD, no, transcendentals, 1R1W1w
170 fcospi(s), TBD, high, 10, yes, TBD, no, transcendentals, 1R1W1w
171 ftanpi(s), TBD, high, 10, yes, TBD, no, transcendentals, 1R1W1w
172 fasinpi(s), TBD, low, 10, yes, EXT2xx, no, transcendentals, 1R1W1w
173 facospi(s), TBD, low, 10, yes, EXT2xx, no, transcendentals, 1R1W1w
174 fatanpi(s), TBD, low, 10, yes, EXT2xx, no, transcendentals, 1R1W1w
175 fsinh(s), TBD, low, 10, yes, EXT2xx, no, transcendentals, 1R1W1w
176 fcosh(s), TBD, low, 10, yes, EXT2xx, no, transcendentals, 1R1W1w
177 ftanh(s), TBD, low, 10, yes, EXT2xx, no, transcendentals, 1R1W1w
178 fasinh(s), TBD, low, 10, yes, EXT2xx, no, transcendentals, 1R1W1w
179 facosh(s), TBD, low, 10, yes, EXT2xx, no, transcendentals, 1R1W1w
180 fatanh(s), TBD, low, 10, yes, EXT2xx, no, transcendentals, 1R1W1w
181 # Transcendentals (1-arg)
182 frsqrt(s), TBD, high, 10, yes, EXT0xx, no, transcendentals, 1R1W1w
183 fcbrt(s), TBD, low, 10, yes, EXT2xx, no, transcendentals, 1R1W1w
184 frecip(s), TBD, high, 10, yes, EXT0xx, no, transcendentals, 1R1W1w
185 fexp2m1(s), TBD, high, 10, yes, EXT0xx, no, transcendentals, 1R1W1w
186 flog2p1(s), TBD, high, 10, yes, EXT0xx, no, transcendentals, 1R1W1w
187 fexp2(s), TBD, high, 10, yes, EXT0xx, no, transcendentals, 1R1W1w
188 flog2(s), TBD, high, 10, yes, EXT0xx, no, transcendentals, 1R1W1w
189 fexpm1(s), TBD, med, 10, yes, TBD, no, transcendentals, 1R1W1w
190 flogp1(s), TBD, med, 10, yes, TBD, no, transcendentals, 1R1W1w
191 fexp(s), TBD, med, 10, yes, TBD, no, transcendentals, 1R1W1w
192 flog(s), TBD, med, 10, yes, TBD, no, transcendentals, 1R1W1w
193 fexp10m1(s), TBD, med, 10, yes, TBD, no, transcendentals, 1R1W1w
194 flog10p1(s), TBD, med, 10, yes, TBD, no, transcendentals, 1R1W1w
195 fexp10(s), TBD, med, 10, yes, TBD, no, transcendentals, 1R1W1w
196 flog10(s), TBD, med, 10, yes, TBD, no, transcendentals, 1R1W1w
197 # Transcendentals (2-arg)
198 fatan2(s), TBD, med, 10, yes, EXT2xx, no, transcendentals, 2R1W1w
199 fatan2pi(s), TBD, med, 10, yes, EXT2xx, no, transcendentals, 2R1W1w
200 fpow(s), TBD, low, 10, yes, EXT2xx, no, transcendentals, 2R1W1w
201 fpown(s), TBD, low, 10, yes, EXT2xx, no, transcendentals, 2R1W1w
202 fpowr(s), TBD, low, 10, yes, EXT2xx, no, transcendentals, 2R1W1w
203 frootn(s), TBD, low, 10, yes, EXT2xx, no, transcendentals, 2R1W1w
204 fhypot(s), TBD, TBD, 10, yes, TBD, no, transcendentals, 2R1W1w
205 fminnum08(s), TBD, high, 10, yes, TBD, no, transcendentals, 2R1W1w
206 fmaxnum08(s), TBD, high, 10, yes, TBD, no, transcendentals, 2R1W1w
207 fmin19(s), TBD, high, 10, yes, TBD, no, transcendentals, 2R1W1w
208 fmax19(s), TBD, high, 10, yes, TBD, no, transcendentals, 2R1W1w
209 fminnum19(s), TBD, high, 10, yes, TBD, no, transcendentals, 2R1W1w
210 fmaxnum19(s), TBD, high, 10, yes, TBD, no, transcendentals, 2R1W1w
211 fminc(s), TBD, high, 10, yes, TBD, no, transcendentals, 2R1W1w
212 fmaxc(s), TBD, high, 10, yes, TBD, no, transcendentals, 2R1W1w
213 fminmagnum08(s), TBD, high, 10, yes, TBD, no, transcendentals, 2R1W1w
214 fmaxmagnum08(s), TBD, high, 10, yes, TBD, no, transcendentals, 2R1W1w
215 fminmag19(s), TBD, high, 10, yes, TBD, no, transcendentals, 2R1W1w
216 fmaxmag19(s), TBD, high, 10, yes, TBD, no, transcendentals, 2R1W1w
217 fminmagnum19(s), TBD, high, 10, yes, TBD, no, transcendentals, 2R1W1w
218 fmaxmagnum19(s), TBD, high, 10, yes, TBD, no, transcendentals, 2R1W1w
219 fminmagc(s), TBD, high, 10, yes, TBD, no, transcendentals, 2R1W1w
220 fmaxmagc(s), TBD, high, 10, yes, TBD, no, transcendentals, 2R1W1w
221 fmod(s), TBD, TBD, 10, yes, TBD, no, transcendentals, 2R1W1w
222 fremainder(s), TBD, TBD, 10, yes, TBD, no, transcendentals, 2R1W1w