xref: /aosp_15_r20/external/llvm/test/Bitcode/operand-bundles.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llvm-as < %s | llvm-dis | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker
3*9880d681SAndroid Build Coastguard Workerdeclare void @callee0()
4*9880d681SAndroid Build Coastguard Workerdeclare void @callee1(i32,i32)
5*9880d681SAndroid Build Coastguard Worker
6*9880d681SAndroid Build Coastguard Workerdefine void @f0(i32* %ptr) {
7*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @f0(
8*9880d681SAndroid Build Coastguard Worker entry:
9*9880d681SAndroid Build Coastguard Worker  %l = load i32, i32* %ptr
10*9880d681SAndroid Build Coastguard Worker  %x = add i32 42, 1
11*9880d681SAndroid Build Coastguard Worker  call void @callee0() [ "foo"(i32 42, i64 100, i32 %x), "bar"(float  0.000000e+00, i64 100, i32 %l) ]
12*9880d681SAndroid Build Coastguard Worker; CHECK: call void @callee0() [ "foo"(i32 42, i64 100, i32 %x), "bar"(float  0.000000e+00, i64 100, i32 %l) ]
13*9880d681SAndroid Build Coastguard Worker  ret void
14*9880d681SAndroid Build Coastguard Worker}
15*9880d681SAndroid Build Coastguard Worker
16*9880d681SAndroid Build Coastguard Workerdefine void @f1(i32* %ptr) {
17*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @f1(
18*9880d681SAndroid Build Coastguard Worker entry:
19*9880d681SAndroid Build Coastguard Worker  %l = load i32, i32* %ptr
20*9880d681SAndroid Build Coastguard Worker  %x = add i32 42, 1
21*9880d681SAndroid Build Coastguard Worker
22*9880d681SAndroid Build Coastguard Worker  call void @callee0()
23*9880d681SAndroid Build Coastguard Worker  call void @callee0() [ "foo"() ]
24*9880d681SAndroid Build Coastguard Worker  call void @callee0() [ "foo"(i32 42, i64 100, i32 %x), "bar"(float  0.000000e+00, i64 100, i32 %l) ]
25*9880d681SAndroid Build Coastguard Worker; CHECK: @callee0(){{$}}
26*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: call void @callee0() [ "foo"() ]
27*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: call void @callee0() [ "foo"(i32 42, i64 100, i32 %x), "bar"(float  0.000000e+00, i64 100, i32 %l) ]
28*9880d681SAndroid Build Coastguard Worker  ret void
29*9880d681SAndroid Build Coastguard Worker}
30*9880d681SAndroid Build Coastguard Worker
31*9880d681SAndroid Build Coastguard Workerdefine void @f2(i32* %ptr) {
32*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @f2(
33*9880d681SAndroid Build Coastguard Worker entry:
34*9880d681SAndroid Build Coastguard Worker  call void @callee0() [ "foo"() ]
35*9880d681SAndroid Build Coastguard Worker; CHECK: call void @callee0() [ "foo"() ]
36*9880d681SAndroid Build Coastguard Worker  ret void
37*9880d681SAndroid Build Coastguard Worker}
38*9880d681SAndroid Build Coastguard Worker
39*9880d681SAndroid Build Coastguard Workerdefine void @f3(i32* %ptr) {
40*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @f3(
41*9880d681SAndroid Build Coastguard Worker entry:
42*9880d681SAndroid Build Coastguard Worker  %l = load i32, i32* %ptr
43*9880d681SAndroid Build Coastguard Worker  %x = add i32 42, 1
44*9880d681SAndroid Build Coastguard Worker  call void @callee0() [ "foo"(i32 42, i64 100, i32 %x), "foo"(i32 42, float  0.000000e+00, i32 %l) ]
45*9880d681SAndroid Build Coastguard Worker; CHECK: call void @callee0() [ "foo"(i32 42, i64 100, i32 %x), "foo"(i32 42, float  0.000000e+00, i32 %l) ]
46*9880d681SAndroid Build Coastguard Worker  ret void
47*9880d681SAndroid Build Coastguard Worker}
48*9880d681SAndroid Build Coastguard Worker
49*9880d681SAndroid Build Coastguard Workerdefine void @f4(i32* %ptr) {
50*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @f4(
51*9880d681SAndroid Build Coastguard Worker entry:
52*9880d681SAndroid Build Coastguard Worker  %l = load i32, i32* %ptr
53*9880d681SAndroid Build Coastguard Worker  %x = add i32 42, 1
54*9880d681SAndroid Build Coastguard Worker  call void @callee1(i32 10, i32 %x) [ "foo"(i32 42, i64 100, i32 %x), "foo"(i32 42, float  0.000000e+00, i32 %l) ]
55*9880d681SAndroid Build Coastguard Worker; CHECK: call void @callee1(i32 10, i32 %x) [ "foo"(i32 42, i64 100, i32 %x), "foo"(i32 42, float  0.000000e+00, i32 %l) ]
56*9880d681SAndroid Build Coastguard Worker  ret void
57*9880d681SAndroid Build Coastguard Worker}
58*9880d681SAndroid Build Coastguard Worker
59*9880d681SAndroid Build Coastguard Worker; Invoke versions of the above tests:
60*9880d681SAndroid Build Coastguard Worker
61*9880d681SAndroid Build Coastguard Worker
62*9880d681SAndroid Build Coastguard Workerdefine void @g0(i32* %ptr) personality i8 3 {
63*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @g0(
64*9880d681SAndroid Build Coastguard Worker entry:
65*9880d681SAndroid Build Coastguard Worker  %l = load i32, i32* %ptr
66*9880d681SAndroid Build Coastguard Worker  %x = add i32 42, 1
67*9880d681SAndroid Build Coastguard Worker  invoke void @callee0() [ "foo"(i32 42, i64 100, i32 %x), "bar"(float  0.000000e+00, i64 100, i32 %l) ] to label %normal unwind label %exception
68*9880d681SAndroid Build Coastguard Worker; CHECK: invoke void @callee0() [ "foo"(i32 42, i64 100, i32 %x), "bar"(float  0.000000e+00, i64 100, i32 %l) ]
69*9880d681SAndroid Build Coastguard Worker
70*9880d681SAndroid Build Coastguard Workerexception:
71*9880d681SAndroid Build Coastguard Worker  %cleanup = landingpad i8 cleanup
72*9880d681SAndroid Build Coastguard Worker  br label %normal
73*9880d681SAndroid Build Coastguard Workernormal:
74*9880d681SAndroid Build Coastguard Worker  ret void
75*9880d681SAndroid Build Coastguard Worker}
76*9880d681SAndroid Build Coastguard Worker
77*9880d681SAndroid Build Coastguard Workerdefine void @g1(i32* %ptr) personality i8 3 {
78*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @g1(
79*9880d681SAndroid Build Coastguard Worker entry:
80*9880d681SAndroid Build Coastguard Worker  %l = load i32, i32* %ptr
81*9880d681SAndroid Build Coastguard Worker  %x = add i32 42, 1
82*9880d681SAndroid Build Coastguard Worker
83*9880d681SAndroid Build Coastguard Worker  invoke void @callee0() to label %normal unwind label %exception
84*9880d681SAndroid Build Coastguard Worker; CHECK: invoke void @callee0(){{$}}
85*9880d681SAndroid Build Coastguard Worker
86*9880d681SAndroid Build Coastguard Workerexception:
87*9880d681SAndroid Build Coastguard Worker  %cleanup = landingpad i8 cleanup
88*9880d681SAndroid Build Coastguard Worker  br label %normal
89*9880d681SAndroid Build Coastguard Worker
90*9880d681SAndroid Build Coastguard Workernormal:
91*9880d681SAndroid Build Coastguard Worker  invoke void @callee0() [ "foo"() ] to label %normal1 unwind label %exception1
92*9880d681SAndroid Build Coastguard Worker; CHECK: invoke void @callee0() [ "foo"() ]
93*9880d681SAndroid Build Coastguard Worker
94*9880d681SAndroid Build Coastguard Workerexception1:
95*9880d681SAndroid Build Coastguard Worker  %cleanup1 = landingpad i8 cleanup
96*9880d681SAndroid Build Coastguard Worker  br label %normal1
97*9880d681SAndroid Build Coastguard Worker
98*9880d681SAndroid Build Coastguard Workernormal1:
99*9880d681SAndroid Build Coastguard Worker  invoke void @callee0() [ "foo"(i32 42, i64 100, i32 %x), "foo"(i32 42, float  0.000000e+00, i32 %l) ] to label %normal2 unwind label %exception2
100*9880d681SAndroid Build Coastguard Worker; CHECK: invoke void @callee0() [ "foo"(i32 42, i64 100, i32 %x), "foo"(i32 42, float  0.000000e+00, i32 %l) ]
101*9880d681SAndroid Build Coastguard Worker
102*9880d681SAndroid Build Coastguard Workerexception2:
103*9880d681SAndroid Build Coastguard Worker  %cleanup2 = landingpad i8 cleanup
104*9880d681SAndroid Build Coastguard Worker  br label %normal2
105*9880d681SAndroid Build Coastguard Worker
106*9880d681SAndroid Build Coastguard Workernormal2:
107*9880d681SAndroid Build Coastguard Worker  ret void
108*9880d681SAndroid Build Coastguard Worker}
109*9880d681SAndroid Build Coastguard Worker
110*9880d681SAndroid Build Coastguard Workerdefine void @g2(i32* %ptr) personality i8 3 {
111*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @g2(
112*9880d681SAndroid Build Coastguard Worker entry:
113*9880d681SAndroid Build Coastguard Worker  invoke void @callee0() [ "foo"() ] to label %normal unwind label %exception
114*9880d681SAndroid Build Coastguard Worker; CHECK: invoke void @callee0() [ "foo"() ]
115*9880d681SAndroid Build Coastguard Worker
116*9880d681SAndroid Build Coastguard Workerexception:
117*9880d681SAndroid Build Coastguard Worker  %cleanup = landingpad i8 cleanup
118*9880d681SAndroid Build Coastguard Worker  br label %normal
119*9880d681SAndroid Build Coastguard Workernormal:
120*9880d681SAndroid Build Coastguard Worker  ret void
121*9880d681SAndroid Build Coastguard Worker}
122*9880d681SAndroid Build Coastguard Worker
123*9880d681SAndroid Build Coastguard Workerdefine void @g3(i32* %ptr) personality i8 3 {
124*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @g3(
125*9880d681SAndroid Build Coastguard Worker entry:
126*9880d681SAndroid Build Coastguard Worker  %l = load i32, i32* %ptr
127*9880d681SAndroid Build Coastguard Worker  %x = add i32 42, 1
128*9880d681SAndroid Build Coastguard Worker  invoke void @callee0() [ "foo"(i32 42, i64 100, i32 %x), "foo"(i32 42, float  0.000000e+00, i32 %l) ] to label %normal unwind label %exception
129*9880d681SAndroid Build Coastguard Worker; CHECK: invoke void @callee0() [ "foo"(i32 42, i64 100, i32 %x), "foo"(i32 42, float  0.000000e+00, i32 %l) ]
130*9880d681SAndroid Build Coastguard Worker
131*9880d681SAndroid Build Coastguard Workerexception:
132*9880d681SAndroid Build Coastguard Worker  %cleanup = landingpad i8 cleanup
133*9880d681SAndroid Build Coastguard Worker  br label %normal
134*9880d681SAndroid Build Coastguard Workernormal:
135*9880d681SAndroid Build Coastguard Worker  ret void
136*9880d681SAndroid Build Coastguard Worker}
137*9880d681SAndroid Build Coastguard Worker
138*9880d681SAndroid Build Coastguard Workerdefine void @g4(i32* %ptr) personality i8 3 {
139*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @g4(
140*9880d681SAndroid Build Coastguard Worker entry:
141*9880d681SAndroid Build Coastguard Worker  %l = load i32, i32* %ptr
142*9880d681SAndroid Build Coastguard Worker  %x = add i32 42, 1
143*9880d681SAndroid Build Coastguard Worker  invoke void @callee1(i32 10, i32 %x) [ "foo"(i32 42, i64 100, i32 %x), "foo"(i32 42, float  0.000000e+00, i32 %l) ]
144*9880d681SAndroid Build Coastguard Worker        to label %normal unwind label %exception
145*9880d681SAndroid Build Coastguard Worker; CHECK: invoke void @callee1(i32 10, i32 %x) [ "foo"(i32 42, i64 100, i32 %x), "foo"(i32 42, float  0.000000e+00, i32 %l) ]
146*9880d681SAndroid Build Coastguard Worker
147*9880d681SAndroid Build Coastguard Workerexception:
148*9880d681SAndroid Build Coastguard Worker  %cleanup = landingpad i8 cleanup
149*9880d681SAndroid Build Coastguard Worker  br label %normal
150*9880d681SAndroid Build Coastguard Workernormal:
151*9880d681SAndroid Build Coastguard Worker  ret void
152*9880d681SAndroid Build Coastguard Worker}
153