blob: eaf91351021fe3389e3b8c5ec8bed31aa50be263 [file] [log] [blame]
Michael Kuperstein454d1452015-07-23 12:23:45 +00001; 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
4declare void @foo(i32 %r)
5
Michael Kuperstein73dc8522015-11-03 08:17:25 +00006define void @test(i32 %a, i32 %b) optsize nounwind {
Michael Kuperstein454d1452015-07-23 12:23:45 +00007; 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 Wennborga7e396b2016-04-06 16:10:20 +000017; CHECK-NEXT: addl $4, %esp
Michael Kuperstein454d1452015-07-23 12:23:45 +000018 %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 Kuperstein73dc8522015-11-03 08:17:25 +000025define void @test_min(i32 %a, i32 %b) minsize nounwind {
Michael Kuperstein454d1452015-07-23 12:23:45 +000026; CHECK-LABEL: test_min:
27; CHECK: movl [[EAX:%e..]], (%esp)
28; CHECK-NEXT: pushl [[EAX]]
29; CHECK-NEXT: calll
Michael Kuperstein7337ee22015-08-11 08:48:48 +000030; CHECK-NEXT: popl
Michael Kuperstein454d1452015-07-23 12:23:45 +000031; CHECK: nop
32; CHECK: pushl (%esp)
33; CHECK: calll
Michael Kuperstein7337ee22015-08-11 08:48:48 +000034; CHECK-NEXT: popl
Michael Kuperstein454d1452015-07-23 12:23:45 +000035 %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}