[AVX512] add PSLLW and PSLLV Intrinsic
[oota-llvm.git] / test / Feature / OperandBundles / merge-func.ll
1 ; RUN: opt -S -mergefunc < %s | FileCheck %s
2
3 ; Minor note: functions need to be at least three instructions long
4 ; to be considered by -mergefunc.
5
6 declare i32 @foo(...)
7
8 define i32 @f() {
9 ; CHECK-LABEL: @f(
10  entry:
11   %v0 = call i32 (...) @foo(i32 10) [ "foo"(i32 20) ]
12   %v1 = call i32 (...) @foo(i32 10) [ "foo"(i32 20) ]
13   %v2 = call i32 (...) @foo(i32 10) [ "foo"(i32 20) ]
14
15 ; CHECK:  %v0 = call i32 (...) @foo(i32 10) [ "foo"(i32 20) ]
16 ; CHECK:  %v1 = call i32 (...) @foo(i32 10) [ "foo"(i32 20) ]
17 ; CHECK:  %v2 = call i32 (...) @foo(i32 10) [ "foo"(i32 20) ]
18
19   ret i32 %v2
20 }
21
22 define i32 @g() {
23 ; CHECK-LABEL: @g(
24  entry:
25   %v0 = call i32 (...) @foo() [ "foo"(i32 10, i32 20) ]
26   %v1 = call i32 (...) @foo() [ "foo"(i32 10, i32 20) ]
27   %v2 = call i32 (...) @foo() [ "foo"(i32 10, i32 20) ]
28
29 ; CHECK:  %v0 = call i32 (...) @foo() [ "foo"(i32 10, i32 20) ]
30 ; CHECK:  %v1 = call i32 (...) @foo() [ "foo"(i32 10, i32 20) ]
31 ; CHECK:  %v2 = call i32 (...) @foo() [ "foo"(i32 10, i32 20) ]
32
33   ret i32 %v2
34 }
35
36 define i32 @f.invoke() personality i8 3 {
37 ; CHECK-LABEL: @f.invoke(
38  entry:
39 ; CHECK: %v0 = invoke i32 (...) @foo(i32 10) [ "foo"(i32 20) ]
40   %v0 = invoke i32 (...) @foo(i32 10) [ "foo"(i32 20) ]
41     to label %normal unwind label %exception
42
43  normal:
44   ret i32 %v0
45
46  exception:
47   %cleanup = landingpad i8 cleanup
48   ret i32 0
49 }
50
51 define i32 @g.invoke() personality i8 3 {
52 ; CHECK-LABEL: @g.invoke(
53  entry:
54 ; CHECK: %v0 = invoke i32 (...) @foo() [ "foo"(i32 10, i32 20) ]
55   %v0 = invoke i32 (...) @foo() [ "foo"(i32 10, i32 20) ]
56     to label %normal unwind label %exception
57
58  normal:
59   ret i32 %v0
60
61  exception:
62   %cleanup = landingpad i8 cleanup
63   ret i32 0
64 }