Michael Kuperstein | 454d145 | 2015-07-23 12:23:45 +0000 | [diff] [blame] | 1 | ; RUN: llc < %s -mtriple=i686-windows | FileCheck %s -check-prefix=CHECK -check-prefix=NORMAL |
| 2 | ; RUN: llc < %s -mtriple=i686-windows -mattr=call-reg-indirect | FileCheck %s -check-prefix=CHECK -check-prefix=SLM |
| 3 | |
| 4 | declare void @foo(i32 %r) |
| 5 | |
Michael Kuperstein | 73dc852 | 2015-11-03 08:17:25 +0000 | [diff] [blame] | 6 | define void @test(i32 %a, i32 %b) optsize nounwind { |
Michael Kuperstein | 454d145 | 2015-07-23 12:23:45 +0000 | [diff] [blame] | 7 | ; CHECK-LABEL: test: |
| 8 | ; CHECK: movl [[EAX:%e..]], (%esp) |
| 9 | ; CHECK-NEXT: pushl [[EAX]] |
| 10 | ; CHECK-NEXT: calll |
| 11 | ; CHECK-NEXT: addl $4, %esp |
| 12 | ; CHECK: nop |
| 13 | ; NORMAL: pushl (%esp) |
| 14 | ; SLM: movl (%esp), [[RELOAD:%e..]] |
| 15 | ; SLM-NEXT: pushl [[RELOAD]] |
| 16 | ; CHECK: calll |
Hans Wennborg | a7e396b | 2016-04-06 16:10:20 +0000 | [diff] [blame] | 17 | ; CHECK-NEXT: addl $4, %esp |
Michael Kuperstein | 454d145 | 2015-07-23 12:23:45 +0000 | [diff] [blame] | 18 | %c = add i32 %a, %b |
| 19 | call void @foo(i32 %c) |
| 20 | call void asm sideeffect "nop", "~{ax},~{bx},~{cx},~{dx},~{bp},~{si},~{di}"() |
| 21 | call void @foo(i32 %c) |
| 22 | ret void |
| 23 | } |
| 24 | |
Michael Kuperstein | 73dc852 | 2015-11-03 08:17:25 +0000 | [diff] [blame] | 25 | define void @test_min(i32 %a, i32 %b) minsize nounwind { |
Michael Kuperstein | 454d145 | 2015-07-23 12:23:45 +0000 | [diff] [blame] | 26 | ; CHECK-LABEL: test_min: |
| 27 | ; CHECK: movl [[EAX:%e..]], (%esp) |
| 28 | ; CHECK-NEXT: pushl [[EAX]] |
| 29 | ; CHECK-NEXT: calll |
Michael Kuperstein | 7337ee2 | 2015-08-11 08:48:48 +0000 | [diff] [blame] | 30 | ; CHECK-NEXT: popl |
Michael Kuperstein | 454d145 | 2015-07-23 12:23:45 +0000 | [diff] [blame] | 31 | ; CHECK: nop |
| 32 | ; CHECK: pushl (%esp) |
| 33 | ; CHECK: calll |
Michael Kuperstein | 7337ee2 | 2015-08-11 08:48:48 +0000 | [diff] [blame] | 34 | ; CHECK-NEXT: popl |
Michael Kuperstein | 454d145 | 2015-07-23 12:23:45 +0000 | [diff] [blame] | 35 | %c = add i32 %a, %b |
| 36 | call void @foo(i32 %c) |
| 37 | call void asm sideeffect "nop", "~{ax},~{bx},~{cx},~{dx},~{bp},~{si},~{di}"() |
| 38 | call void @foo(i32 %c) |
| 39 | ret void |
| 40 | } |