OLD | NEW |
1 //===- subzero/unittest/AssemblerX8664/GPRArith.cpp -----------------------===// | 1 //===- subzero/unittest/AssemblerX8664/GPRArith.cpp -----------------------===// |
2 // | 2 // |
3 // The Subzero Code Generator | 3 // The Subzero Code Generator |
4 // | 4 // |
5 // This file is distributed under the University of Illinois Open Source | 5 // This file is distributed under the University of Illinois Open Source |
6 // License. See LICENSE.TXT for details. | 6 // License. See LICENSE.TXT for details. |
7 // | 7 // |
8 //===----------------------------------------------------------------------===// | 8 //===----------------------------------------------------------------------===// |
9 #include "AssemblerX8664/TestUtil.h" | 9 #include "AssemblerX8664/TestUtil.h" |
10 | 10 |
(...skipping 204 matching lines...) Loading... |
215 {0x00, 0x06, -0x06, 0x0600, -0x6000, 0x6000000, -0x6000000}) { | 215 {0x00, 0x06, -0x06, 0x0600, -0x6000, 0x6000000, -0x6000000}) { |
216 TestLeaBaseDisp(r0, 0x22080Fu, Disp, r1); | 216 TestLeaBaseDisp(r0, 0x22080Fu, Disp, r1); |
217 TestLeaBaseDisp(r1, 0x10000Fu, Disp, r2); | 217 TestLeaBaseDisp(r1, 0x10000Fu, Disp, r2); |
218 TestLeaBaseDisp(r2, 0x20000Fu, Disp, r3); | 218 TestLeaBaseDisp(r2, 0x20000Fu, Disp, r3); |
219 TestLeaBaseDisp(r3, 0x30000Fu, Disp, r4); | 219 TestLeaBaseDisp(r3, 0x30000Fu, Disp, r4); |
220 TestLeaBaseDisp(r4, 0x40000Fu, Disp, r5); | 220 TestLeaBaseDisp(r4, 0x40000Fu, Disp, r5); |
221 TestLeaBaseDisp(r5, 0x50000Fu, Disp, r6); | 221 TestLeaBaseDisp(r5, 0x50000Fu, Disp, r6); |
222 TestLeaBaseDisp(r6, 0x60000Fu, Disp, r7); | 222 TestLeaBaseDisp(r6, 0x60000Fu, Disp, r7); |
223 TestLeaBaseDisp(r7, 0x11000Fu, Disp, r8); | 223 TestLeaBaseDisp(r7, 0x11000Fu, Disp, r8); |
224 TestLeaBaseDisp(r8, 0x11200Fu, Disp, r10); | 224 TestLeaBaseDisp(r8, 0x11200Fu, Disp, r10); |
225 TestLeaBaseDisp(r9, 0x000000u, Disp, r10); | 225 TestLeaBaseDisp(r9, 0x220400u, Disp, r10); |
226 TestLeaBaseDisp(r10, 0x22000Fu, Disp, r11); | 226 TestLeaBaseDisp(r10, 0x22000Fu, Disp, r11); |
227 TestLeaBaseDisp(r11, 0x22030Fu, Disp, r12); | 227 TestLeaBaseDisp(r11, 0x22030Fu, Disp, r12); |
228 TestLeaBaseDisp(r12, 0x22040Fu, Disp, r13); | 228 TestLeaBaseDisp(r12, 0x22040Fu, Disp, r13); |
229 TestLeaBaseDisp(r13, 0x22050Fu, Disp, r14); | 229 TestLeaBaseDisp(r13, 0x22050Fu, Disp, r14); |
230 TestLeaBaseDisp(r14, 0x22060Fu, Disp, r15); | 230 TestLeaBaseDisp(r14, 0x22060Fu, Disp, r15); |
231 TestLeaBaseDisp(r15, 0x22070Fu, Disp, r1); | 231 TestLeaBaseDisp(r15, 0x22070Fu, Disp, r1); |
232 } | 232 } |
233 | 233 |
234 // esp is not a valid index register. | 234 // esp is not a valid index register. |
235 // ebp is not valid in this addressing mode (rm = 0). | 235 // ebp is not valid in this addressing mode (rm = 0). |
236 for (const int32_t Disp : | 236 for (const int32_t Disp : |
237 {0x00, 0x06, -0x06, 0x0600, -0x6000, 0x6000000, -0x6000000}) { | 237 {0x00, 0x06, -0x06, 0x0600, -0x6000, 0x6000000, -0x6000000}) { |
238 TestLeaIndex32bitDisp(r1, 0x2000u, Disp, r2, r3, r4, r6); | 238 TestLeaIndex32bitDisp(r1, 0x2000u, Disp, r2, r3, r4, r6); |
239 TestLeaIndex32bitDisp(r2, 0x4010u, Disp, r3, r4, r6, r7); | 239 TestLeaIndex32bitDisp(r2, 0x4010u, Disp, r3, r4, r6, r7); |
240 TestLeaIndex32bitDisp(r3, 0x6020u, Disp, r4, r6, r7, r5); | 240 TestLeaIndex32bitDisp(r3, 0x6020u, Disp, r4, r6, r7, r5); |
241 TestLeaIndex32bitDisp(r4, 0x8030u, Disp, r6, r7, r5, r10); | 241 TestLeaIndex32bitDisp(r4, 0x8030u, Disp, r6, r7, r5, r10); |
242 TestLeaIndex32bitDisp(r6, 0xA040u, Disp, r7, r5, r10, r1); | 242 TestLeaIndex32bitDisp(r6, 0xA040u, Disp, r7, r5, r10, r1); |
243 TestLeaIndex32bitDisp(r7, 0xC050u, Disp, r5, r10, r1, r11); | 243 TestLeaIndex32bitDisp(r7, 0xC050u, Disp, r5, r10, r1, r11); |
244 TestLeaIndex32bitDisp(r8, 0xC060u, Disp, r10, r1, r11, r12); | 244 TestLeaIndex32bitDisp(r8, 0xC060u, Disp, r10, r1, r11, r12); |
245 TestLeaIndex32bitDisp(r9, 0x0000u, Disp, r1, r11, r12, r13); | 245 TestLeaIndex32bitDisp(r9, 0xC100u, Disp, r1, r11, r12, r13); |
246 TestLeaIndex32bitDisp(r10, 0xC008u, Disp, r11, r12, r13, r14); | 246 TestLeaIndex32bitDisp(r10, 0xC008u, Disp, r11, r12, r13, r14); |
247 TestLeaIndex32bitDisp(r11, 0xC009u, Disp, r12, r13, r14, r15); | 247 TestLeaIndex32bitDisp(r11, 0xC009u, Disp, r12, r13, r14, r15); |
248 TestLeaIndex32bitDisp(r12, 0xC00Au, Disp, r13, r14, r15, r1); | 248 TestLeaIndex32bitDisp(r12, 0xC00Au, Disp, r13, r14, r15, r1); |
249 TestLeaIndex32bitDisp(r13, 0xC00Bu, Disp, r14, r15, r1, r2); | 249 TestLeaIndex32bitDisp(r13, 0xC00Bu, Disp, r14, r15, r1, r2); |
250 TestLeaIndex32bitDisp(r14, 0xC00Cu, Disp, r15, r1, r2, r3); | 250 TestLeaIndex32bitDisp(r14, 0xC00Cu, Disp, r15, r1, r2, r3); |
251 TestLeaIndex32bitDisp(r15, 0xC00Du, Disp, r1, r2, r3, r4); | 251 TestLeaIndex32bitDisp(r15, 0xC00Du, Disp, r1, r2, r3, r4); |
252 } | 252 } |
253 | 253 |
254 for (const int32_t Disp : | 254 for (const int32_t Disp : |
255 {0x00, 0x06, -0x06, 0x0600, -0x6000, 0x6000000, -0x6000000}) { | 255 {0x00, 0x06, -0x06, 0x0600, -0x6000, 0x6000000, -0x6000000}) { |
256 TestLeaBaseIndexDisp(r1, 0x100000u, r2, 0x600u, Disp, r3, r4, r6, r7); | 256 TestLeaBaseIndexDisp(r1, 0x100000u, r2, 0x600u, Disp, r3, r4, r6, r7); |
257 TestLeaBaseIndexDisp(r2, 0x200000u, r3, 0x500u, Disp, r4, r6, r7, r8); | 257 TestLeaBaseIndexDisp(r2, 0x200000u, r3, 0x500u, Disp, r4, r6, r7, r8); |
258 TestLeaBaseIndexDisp(r3, 0x300000u, r4, 0x400u, Disp, r6, r7, r8, r5); | 258 TestLeaBaseIndexDisp(r3, 0x300000u, r4, 0x400u, Disp, r6, r7, r8, r5); |
259 TestLeaBaseIndexDisp(r4, 0x400000u, r6, 0x300u, Disp, r7, r8, r5, r10); | 259 TestLeaBaseIndexDisp(r4, 0x400000u, r6, 0x300u, Disp, r7, r8, r5, r10); |
260 TestLeaBaseIndexDisp(r6, 0x500000u, r7, 0x200u, Disp, r8, r5, r10, r11); | 260 TestLeaBaseIndexDisp(r6, 0x500000u, r7, 0x200u, Disp, r8, r5, r10, r11); |
261 TestLeaBaseIndexDisp(r7, 0x600000u, r8, 0x100u, Disp, r5, r10, r11, r12); | 261 TestLeaBaseIndexDisp(r7, 0x600000u, r8, 0x100u, Disp, r5, r10, r11, r12); |
262 TestLeaBaseIndexDisp(r8, 0x600000u, r9, 0x1A0u, Disp, r10, r11, r12, r13); | 262 TestLeaBaseIndexDisp(r8, 0x600000u, r9, 0x1A0u, Disp, r10, r11, r12, r13); |
263 TestLeaBaseIndexDisp(r9, 0x000000u, r10, 0x1B0u, Disp, r11, r12, r13, r14); | 263 TestLeaBaseIndexDisp(r9, 0x600050u, r10, 0x1B0u, Disp, r11, r12, r13, r14); |
264 TestLeaBaseIndexDisp(r10, 0x602000u, r11, 0x1C0u, Disp, r12, r13, r14, r15); | 264 TestLeaBaseIndexDisp(r10, 0x602000u, r11, 0x1C0u, Disp, r12, r13, r14, r15); |
265 TestLeaBaseIndexDisp(r11, 0x603000u, r12, 0x1D0u, Disp, r13, r14, r15, r1); | 265 TestLeaBaseIndexDisp(r11, 0x603000u, r12, 0x1D0u, Disp, r13, r14, r15, r1); |
266 TestLeaBaseIndexDisp(r12, 0x604000u, r13, 0x1E0u, Disp, r14, r15, r1, r2); | 266 TestLeaBaseIndexDisp(r12, 0x604000u, r13, 0x1E0u, Disp, r14, r15, r1, r2); |
267 TestLeaBaseIndexDisp(r13, 0x605000u, r14, 0x1F0u, Disp, r15, r1, r2, r3); | 267 TestLeaBaseIndexDisp(r13, 0x605000u, r14, 0x1F0u, Disp, r15, r1, r2, r3); |
268 TestLeaBaseIndexDisp(r14, 0x606000u, r15, 0x10Au, Disp, r1, r2, r3, r4); | 268 TestLeaBaseIndexDisp(r14, 0x606000u, r15, 0x10Au, Disp, r1, r2, r3, r4); |
269 TestLeaBaseIndexDisp(r15, 0x607000u, r1, 0x10Bu, Disp, r2, r3, r4, r6); | 269 TestLeaBaseIndexDisp(r15, 0x607000u, r1, 0x10Bu, Disp, r2, r3, r4, r6); |
270 | 270 |
271 TestLeaBaseIndexDisp(r0, 0, r2, 0x600u, Disp, r3, r4, r6, r7); | 271 TestLeaBaseIndexDisp(r0, 0, r2, 0x600u, Disp, r3, r4, r6, r7); |
272 TestLeaBaseIndexDisp(r0, 0, r3, 0x500u, Disp, r4, r6, r7, r8); | 272 TestLeaBaseIndexDisp(r0, 0, r3, 0x500u, Disp, r4, r6, r7, r8); |
273 TestLeaBaseIndexDisp(r0, 0, r4, 0x400u, Disp, r6, r7, r8, r5); | 273 TestLeaBaseIndexDisp(r0, 0, r4, 0x400u, Disp, r6, r7, r8, r5); |
274 TestLeaBaseIndexDisp(r0, 0, r6, 0x300u, Disp, r7, r8, r5, r10); | 274 TestLeaBaseIndexDisp(r0, 0, r6, 0x300u, Disp, r7, r8, r5, r10); |
275 TestLeaBaseIndexDisp(r0, 0, r7, 0x200u, Disp, r8, r5, r10, r11); | 275 TestLeaBaseIndexDisp(r0, 0, r7, 0x200u, Disp, r8, r5, r10, r11); |
276 TestLeaBaseIndexDisp(r0, 0, r8, 0x100u, Disp, r5, r10, r11, r12); | 276 TestLeaBaseIndexDisp(r0, 0, r8, 0x100u, Disp, r5, r10, r11, r12); |
277 TestLeaBaseIndexDisp(r0, 0, r9, 0x000u, Disp, r10, r11, r12, r13); | 277 TestLeaBaseIndexDisp(r0, 0, r9, 0x1000u, Disp, r10, r11, r12, r13); |
278 TestLeaBaseIndexDisp(r0, 0, r10, 0x1B0u, Disp, r11, r12, r13, r14); | 278 TestLeaBaseIndexDisp(r0, 0, r10, 0x1B0u, Disp, r11, r12, r13, r14); |
279 TestLeaBaseIndexDisp(r0, 0, r11, 0x1C0u, Disp, r12, r13, r14, r15); | 279 TestLeaBaseIndexDisp(r0, 0, r11, 0x1C0u, Disp, r12, r13, r14, r15); |
280 TestLeaBaseIndexDisp(r0, 0, r12, 0x1D0u, Disp, r13, r14, r15, r1); | 280 TestLeaBaseIndexDisp(r0, 0, r12, 0x1D0u, Disp, r13, r14, r15, r1); |
281 TestLeaBaseIndexDisp(r0, 0, r13, 0x1E0u, Disp, r14, r15, r1, r2); | 281 TestLeaBaseIndexDisp(r0, 0, r13, 0x1E0u, Disp, r14, r15, r1, r2); |
282 TestLeaBaseIndexDisp(r0, 0, r14, 0x1F0u, Disp, r15, r1, r2, r3); | 282 TestLeaBaseIndexDisp(r0, 0, r14, 0x1F0u, Disp, r15, r1, r2, r3); |
283 TestLeaBaseIndexDisp(r0, 0, r15, 0x10Au, Disp, r1, r2, r3, r4); | 283 TestLeaBaseIndexDisp(r0, 0, r15, 0x10Au, Disp, r1, r2, r3, r4); |
284 TestLeaBaseIndexDisp(r0, 0, r1, 0x10Bu, Disp, r2, r3, r4, r6); | 284 TestLeaBaseIndexDisp(r0, 0, r1, 0x10Bu, Disp, r2, r3, r4, r6); |
285 | 285 |
286 TestLeaBaseIndexDisp(r5, 0x100000u, r2, 0x600u, Disp, r3, r4, r6, r7); | 286 TestLeaBaseIndexDisp(r5, 0x100000u, r2, 0x600u, Disp, r3, r4, r6, r7); |
287 TestLeaBaseIndexDisp(r5, 0x200000u, r3, 0x500u, Disp, r4, r6, r7, r8); | 287 TestLeaBaseIndexDisp(r5, 0x200000u, r3, 0x500u, Disp, r4, r6, r7, r8); |
288 TestLeaBaseIndexDisp(r5, 0x300000u, r4, 0x400u, Disp, r6, r7, r8, r1); | 288 TestLeaBaseIndexDisp(r5, 0x300000u, r4, 0x400u, Disp, r6, r7, r8, r1); |
289 TestLeaBaseIndexDisp(r5, 0x400000u, r6, 0x300u, Disp, r7, r8, r1, r10); | 289 TestLeaBaseIndexDisp(r5, 0x400000u, r6, 0x300u, Disp, r7, r8, r1, r10); |
290 TestLeaBaseIndexDisp(r5, 0x500000u, r7, 0x200u, Disp, r8, r1, r10, r11); | 290 TestLeaBaseIndexDisp(r5, 0x500000u, r7, 0x200u, Disp, r8, r1, r10, r11); |
291 TestLeaBaseIndexDisp(r5, 0x600000u, r8, 0x100u, Disp, r1, r10, r11, r12); | 291 TestLeaBaseIndexDisp(r5, 0x600000u, r8, 0x100u, Disp, r1, r10, r11, r12); |
292 TestLeaBaseIndexDisp(r5, 0x600000u, r9, 0x000u, Disp, r10, r11, r12, r13); | 292 TestLeaBaseIndexDisp(r5, 0x600000u, r9, 0x1A00u, Disp, r10, r11, r12, r13); |
293 TestLeaBaseIndexDisp(r5, 0x601000u, r10, 0x1B0u, Disp, r11, r12, r13, r14); | 293 TestLeaBaseIndexDisp(r5, 0x601000u, r10, 0x1B0u, Disp, r11, r12, r13, r14); |
294 TestLeaBaseIndexDisp(r5, 0x602000u, r11, 0x1C0u, Disp, r12, r13, r14, r15); | 294 TestLeaBaseIndexDisp(r5, 0x602000u, r11, 0x1C0u, Disp, r12, r13, r14, r15); |
295 TestLeaBaseIndexDisp(r5, 0x603000u, r12, 0x1D0u, Disp, r13, r14, r15, r1); | 295 TestLeaBaseIndexDisp(r5, 0x603000u, r12, 0x1D0u, Disp, r13, r14, r15, r1); |
296 TestLeaBaseIndexDisp(r5, 0x604000u, r13, 0x1E0u, Disp, r14, r15, r1, r2); | 296 TestLeaBaseIndexDisp(r5, 0x604000u, r13, 0x1E0u, Disp, r14, r15, r1, r2); |
297 TestLeaBaseIndexDisp(r5, 0x605000u, r14, 0x1F0u, Disp, r15, r1, r2, r3); | 297 TestLeaBaseIndexDisp(r5, 0x605000u, r14, 0x1F0u, Disp, r15, r1, r2, r3); |
298 TestLeaBaseIndexDisp(r5, 0x606000u, r15, 0x10Au, Disp, r1, r2, r3, r4); | 298 TestLeaBaseIndexDisp(r5, 0x606000u, r15, 0x10Au, Disp, r1, r2, r3, r4); |
299 TestLeaBaseIndexDisp(r5, 0x607000u, r1, 0x10Bu, Disp, r2, r3, r4, r6); | 299 TestLeaBaseIndexDisp(r5, 0x607000u, r1, 0x10Bu, Disp, r2, r3, r4, r6); |
300 | 300 |
301 TestLeaBaseIndexDisp(r2, 0x100000u, r5, 0x600u, Disp, r3, r4, r6, r7); | 301 TestLeaBaseIndexDisp(r2, 0x100000u, r5, 0x600u, Disp, r3, r4, r6, r7); |
302 TestLeaBaseIndexDisp(r3, 0x200000u, r5, 0x500u, Disp, r4, r6, r7, r8); | 302 TestLeaBaseIndexDisp(r3, 0x200000u, r5, 0x500u, Disp, r4, r6, r7, r8); |
303 TestLeaBaseIndexDisp(r4, 0x300000u, r5, 0x400u, Disp, r6, r7, r8, r1); | 303 TestLeaBaseIndexDisp(r4, 0x300000u, r5, 0x400u, Disp, r6, r7, r8, r1); |
304 TestLeaBaseIndexDisp(r6, 0x400000u, r5, 0x300u, Disp, r7, r8, r1, r10); | 304 TestLeaBaseIndexDisp(r6, 0x400000u, r5, 0x300u, Disp, r7, r8, r1, r10); |
305 TestLeaBaseIndexDisp(r7, 0x500000u, r5, 0x200u, Disp, r8, r1, r10, r11); | 305 TestLeaBaseIndexDisp(r7, 0x500000u, r5, 0x200u, Disp, r8, r1, r10, r11); |
306 TestLeaBaseIndexDisp(r8, 0x600000u, r5, 0x100u, Disp, r1, r10, r11, r12); | 306 TestLeaBaseIndexDisp(r8, 0x600000u, r5, 0x100u, Disp, r1, r10, r11, r12); |
307 TestLeaBaseIndexDisp(r9, 0x000000u, r5, 0x1A0u, Disp, r10, r11, r12, r13); | 307 TestLeaBaseIndexDisp(r9, 0x660000u, r5, 0x1A0u, Disp, r10, r11, r12, r13); |
308 TestLeaBaseIndexDisp(r10, 0x601000u, r5, 0x1B0u, Disp, r11, r12, r13, r14); | 308 TestLeaBaseIndexDisp(r10, 0x601000u, r5, 0x1B0u, Disp, r11, r12, r13, r14); |
309 TestLeaBaseIndexDisp(r11, 0x602000u, r5, 0x1C0u, Disp, r12, r13, r14, r15); | 309 TestLeaBaseIndexDisp(r11, 0x602000u, r5, 0x1C0u, Disp, r12, r13, r14, r15); |
310 TestLeaBaseIndexDisp(r12, 0x603000u, r5, 0x1D0u, Disp, r13, r14, r15, r1); | 310 TestLeaBaseIndexDisp(r12, 0x603000u, r5, 0x1D0u, Disp, r13, r14, r15, r1); |
311 TestLeaBaseIndexDisp(r13, 0x604000u, r5, 0x1E0u, Disp, r14, r15, r1, r2); | 311 TestLeaBaseIndexDisp(r13, 0x604000u, r5, 0x1E0u, Disp, r14, r15, r1, r2); |
312 TestLeaBaseIndexDisp(r14, 0x605000u, r5, 0x1F0u, Disp, r15, r1, r2, r3); | 312 TestLeaBaseIndexDisp(r14, 0x605000u, r5, 0x1F0u, Disp, r15, r1, r2, r3); |
313 TestLeaBaseIndexDisp(r15, 0x606000u, r5, 0x10Au, Disp, r1, r2, r3, r4); | 313 TestLeaBaseIndexDisp(r15, 0x606000u, r5, 0x10Au, Disp, r1, r2, r3, r4); |
314 TestLeaBaseIndexDisp(r1, 0x607000u, r5, 0x10Bu, Disp, r2, r3, r4, r6); | 314 TestLeaBaseIndexDisp(r1, 0x607000u, r5, 0x10Bu, Disp, r2, r3, r4, r6); |
315 | 315 |
316 TestLeaBaseIndexDisp(r0, 0, r5, 0xC0BEBEEF, Disp, r2, r3, r4, r6); | 316 TestLeaBaseIndexDisp(r0, 0, r5, 0xC0BEBEEF, Disp, r2, r3, r4, r6); |
317 } | 317 } |
(...skipping 1586 matching lines...) Loading... |
1904 #undef TestImplValue | 1904 #undef TestImplValue |
1905 #undef TestImplSize | 1905 #undef TestImplSize |
1906 #undef TestImplRegAddr | 1906 #undef TestImplRegAddr |
1907 #undef TestImplRegReg | 1907 #undef TestImplRegReg |
1908 } | 1908 } |
1909 | 1909 |
1910 } // end of anonymous namespace | 1910 } // end of anonymous namespace |
1911 } // end of namespace Test | 1911 } // end of namespace Test |
1912 } // end of namespace X8664 | 1912 } // end of namespace X8664 |
1913 } // end of namespace Ice | 1913 } // end of namespace Ice |
OLD | NEW |