| 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...) Expand 10 before | Expand all | Expand 10 after 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...) Expand 10 before | Expand all | Expand 10 after 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 |