| OLD | NEW |
| 1 ; This file checks that Subzero generates code in accordance with the | 1 ; This file checks that Subzero generates code in accordance with the |
| 2 ; calling convention for integers. | 2 ; calling convention for integers. |
| 3 | 3 |
| 4 ; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \ | 4 ; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \ |
| 5 ; RUN: --target x8632 -i %s --args -O2 -allow-externally-defined-symbols \ | 5 ; RUN: --target x8632 -i %s --args -O2 -allow-externally-defined-symbols \ |
| 6 ; RUN: | %if --need=target_X8632 --command FileCheck %s | 6 ; RUN: | %if --need=target_X8632 --command FileCheck %s |
| 7 | 7 |
| 8 ; TODO(jvoung): Stop skipping unimplemented parts (via --skip-unimplemented) | 8 ; TODO(jvoung): Stop skipping unimplemented parts (via --skip-unimplemented) |
| 9 ; once enough infrastructure is in. Also, switch to --filetype=obj | 9 ; once enough infrastructure is in. Also, switch to --filetype=obj |
| 10 ; when possible. | 10 ; when possible. |
| (...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 270 | 270 |
| 271 declare void @killRegisters() | 271 declare void @killRegisters() |
| 272 | 272 |
| 273 define internal void @test_passing_integers(i32 %arg0, i32 %arg1, i32 %arg2, i32
%arg3, i32 %arg4, i32 %arg5, i32 %arg6) { | 273 define internal void @test_passing_integers(i32 %arg0, i32 %arg1, i32 %arg2, i32
%arg3, i32 %arg4, i32 %arg5, i32 %arg6) { |
| 274 call void @killRegisters() | 274 call void @killRegisters() |
| 275 call void @IntArgs(i32 %arg6, i32 %arg5, i32 %arg4, i32 %arg3, i32 %arg2, i32
%arg1) | 275 call void @IntArgs(i32 %arg6, i32 %arg5, i32 %arg4, i32 %arg3, i32 %arg2, i32
%arg1) |
| 276 ret void | 276 ret void |
| 277 } | 277 } |
| 278 | 278 |
| 279 ; CHECK-LABEL: test_passing_integers | 279 ; CHECK-LABEL: test_passing_integers |
| 280 ; CHECK-DAG: mov [[REG1:e.*]],DWORD PTR [esp+0x24] | 280 ; CHECK-DAG: mov [[REG1:e.*]],DWORD PTR [esp+0x44] |
| 281 ; CHECK-DAG: mov [[REG2:e.*]],DWORD PTR [esp+0x28] | 281 ; CHECK-DAG: mov [[REG2:e.*]],DWORD PTR [esp+0x48] |
| 282 ; CHECK-DAG: mov [[REG3:e.*]],DWORD PTR [esp+0x2c] | 282 ; CHECK-DAG: mov [[REG3:e.*]],DWORD PTR [esp+0x4c] |
| 283 ; CHECK-DAG: mov [[REG4:e.*]],DWORD PTR [esp+0x30] | 283 ; CHECK-DAG: mov [[REG4:e.*]],DWORD PTR [esp+0x50] |
| 284 ; CHECK: mov DWORD PTR [esp] | 284 ; CHECK: mov DWORD PTR [esp] |
| 285 ; CHECK: mov DWORD PTR [esp+0x4] | 285 ; CHECK: mov DWORD PTR [esp+0x4] |
| 286 ; CHECK-DAG: mov DWORD PTR [esp+0x8],[[REG4]] | 286 ; CHECK-DAG: mov DWORD PTR [esp+0x8],[[REG4]] |
| 287 ; CHECK-DAG: mov DWORD PTR [esp+0xc],[[REG3]] | 287 ; CHECK-DAG: mov DWORD PTR [esp+0xc],[[REG3]] |
| 288 ; CHECK-DAG: mov DWORD PTR [esp+0x10],[[REG2]] | 288 ; CHECK-DAG: mov DWORD PTR [esp+0x10],[[REG2]] |
| 289 ; CHECK-DAG: mov DWORD PTR [esp+0x14],[[REG1]] | 289 ; CHECK-DAG: mov DWORD PTR [esp+0x14],[[REG1]] |
| 290 ; CHECK: call | 290 ; CHECK: call |
| 291 | 291 |
| 292 ; ARM32-LABEL: test_passing_integers | 292 ; ARM32-LABEL: test_passing_integers |
| 293 ; ARM32-DAG: mov [[REG1:.*]], r1 | 293 ; ARM32-DAG: mov [[REG1:.*]], r1 |
| 294 ; ARM32-DAG: mov [[REG2:.*]], r2 | 294 ; ARM32-DAG: mov [[REG2:.*]], r2 |
| 295 ; ARM32-DAG: mov [[REG3:.*]], r3 | 295 ; ARM32-DAG: mov [[REG3:.*]], r3 |
| 296 ; ARM32: str [[REG2]], [sp] | 296 ; ARM32: str [[REG2]], [sp] |
| 297 ; ARM32: str [[REG1]], [sp, #4] | 297 ; ARM32: str [[REG1]], [sp, #4] |
| 298 ; ARM32-DAG: mov r0 | 298 ; ARM32-DAG: mov r0 |
| 299 ; ARM32-DAG: mov r1 | 299 ; ARM32-DAG: mov r1 |
| 300 ; ARM32-DAG: mov r2 | 300 ; ARM32-DAG: mov r2 |
| 301 ; ARM32-DAG: mov r3, [[REG3]] | 301 ; ARM32-DAG: mov r3, [[REG3]] |
| 302 ; ARM32: bl | 302 ; ARM32: bl |
| OLD | NEW |