Skip to content

Commit 87e66ac

Browse files
committed
[sil-combine] Add translations of sil combine tests for OSSA disabling the checks we don't pass yet.
In the subsequent commits, I am going to enable individual groups of filecheck tests. This will let me avoid having to extract out individual test cases as I upstream. NOTE: I disabled the CHECK lines by just s/CHECK/XHECK/g. I left in the CHECK-LABEL so FileCheck still has something to chew on initially.
1 parent e18243f commit 87e66ac

14 files changed

+7906
-8
lines changed

test/SILOptimizer/sil_combine_apply_ossa.sil

Lines changed: 1169 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 144 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,144 @@
1+
// RUN: %target-sil-opt -enable-sil-verify-all %s -sil-combine | %FileCheck %s
2+
3+
// Test optimizations for binary bit operations.
4+
5+
sil_stage canonical
6+
7+
import Builtin
8+
import Swift
9+
10+
// CHECK-LABEL: sil [ossa] @test_and1
11+
// XHECK: %1 = integer_literal $Builtin.Int64, 0
12+
// XHECK: return %1
13+
sil [ossa] @test_and1 : $@convention(thin) (Builtin.Int64) -> Builtin.Int64 {
14+
bb0(%0 : $Builtin.Int64):
15+
%1 = integer_literal $Builtin.Int64, 0
16+
%2 = builtin "and_Int64"(%0 : $Builtin.Int64, %1 : $Builtin.Int64) : $Builtin.Int64
17+
return %2 : $Builtin.Int64
18+
}
19+
20+
// CHECK-LABEL: sil [ossa] @test_and2
21+
// XHECK: bb0(%0 : $Builtin.Int64):
22+
// XHECK: return %0
23+
sil [ossa] @test_and2 : $@convention(thin) (Builtin.Int64) -> Builtin.Int64 {
24+
bb0(%0 : $Builtin.Int64):
25+
%1 = integer_literal $Builtin.Int64, -1
26+
%2 = builtin "and_Int64"(%0 : $Builtin.Int64, %1 : $Builtin.Int64) : $Builtin.Int64
27+
return %2 : $Builtin.Int64
28+
}
29+
30+
// CHECK-LABEL: sil [ossa] @test_and3
31+
// XHECK: %1 = integer_literal $Builtin.Int64, 32
32+
// XHECK: %2 = builtin "and_Int64"(%0 : $Builtin.Int64, %1 : $Builtin.Int64)
33+
// XHECK: return %2
34+
sil [ossa] @test_and3 : $@convention(thin) (Builtin.Int64) -> Builtin.Int64 {
35+
bb0(%0 : $Builtin.Int64):
36+
%1 = integer_literal $Builtin.Int64, 288
37+
%2 = builtin "and_Int64"(%0 : $Builtin.Int64, %1 : $Builtin.Int64) : $Builtin.Int64
38+
%3 = integer_literal $Builtin.Int64, 35
39+
%4 = builtin "and_Int64"(%2 : $Builtin.Int64, %3 : $Builtin.Int64) : $Builtin.Int64
40+
return %4 : $Builtin.Int64
41+
}
42+
43+
// CHECK-LABEL: sil [ossa] @test_and4
44+
// XHECK: %1 = integer_literal $Builtin.Int64, 0
45+
// XHECK: return %1
46+
sil [ossa] @test_and4 : $@convention(thin) (Builtin.Int64) -> Builtin.Int64 {
47+
bb0(%0 : $Builtin.Int64):
48+
%1 = integer_literal $Builtin.Int64, 18
49+
%2 = builtin "and_Int64"(%1 : $Builtin.Int64, %0 : $Builtin.Int64) : $Builtin.Int64
50+
%3 = integer_literal $Builtin.Int64, 256
51+
%4 = builtin "and_Int64"(%2 : $Builtin.Int64, %3 : $Builtin.Int64) : $Builtin.Int64
52+
return %4 : $Builtin.Int64
53+
}
54+
55+
// CHECK-LABEL: sil [ossa] @test_or1
56+
// XHECK: bb0(%0 : $Builtin.Int64):
57+
// XHECK: return %0
58+
sil [ossa] @test_or1 : $@convention(thin) (Builtin.Int64) -> Builtin.Int64 {
59+
bb0(%0 : $Builtin.Int64):
60+
%1 = integer_literal $Builtin.Int64, 0
61+
%2 = builtin "or_Int64"(%1 : $Builtin.Int64, %0 : $Builtin.Int64) : $Builtin.Int64
62+
return %2 : $Builtin.Int64
63+
}
64+
65+
// CHECK-LABEL: sil [ossa] @test_or2
66+
// XHECK: %1 = integer_literal $Builtin.Int64, -1
67+
// XHECK: return %1
68+
sil [ossa] @test_or2 : $@convention(thin) (Builtin.Int64) -> Builtin.Int64 {
69+
bb0(%0 : $Builtin.Int64):
70+
%1 = integer_literal $Builtin.Int64, -1
71+
%2 = builtin "or_Int64"(%1 : $Builtin.Int64, %0 : $Builtin.Int64) : $Builtin.Int64
72+
return %2 : $Builtin.Int64
73+
}
74+
75+
// CHECK-LABEL: sil [ossa] @test_or3
76+
// XHECK: %1 = integer_literal $Builtin.Int64, 291
77+
// XHECK: %2 = builtin "or_Int64"(%0 : $Builtin.Int64, %1 : $Builtin.Int64)
78+
// XHECK: return %2
79+
sil [ossa] @test_or3 : $@convention(thin) (Builtin.Int64) -> Builtin.Int64 {
80+
bb0(%0 : $Builtin.Int64):
81+
%1 = integer_literal $Builtin.Int64, 288
82+
%2 = builtin "or_Int64"(%0 : $Builtin.Int64, %1 : $Builtin.Int64) : $Builtin.Int64
83+
%3 = integer_literal $Builtin.Int64, 35
84+
%4 = builtin "or_Int64"(%2 : $Builtin.Int64, %3 : $Builtin.Int64) : $Builtin.Int64
85+
return %4 : $Builtin.Int64
86+
}
87+
88+
// CHECK-LABEL: sil [ossa] @test_or4
89+
// XHECK: %1 = integer_literal $Builtin.Int64, -1
90+
// XHECK: return %1
91+
sil [ossa] @test_or4 : $@convention(thin) (Builtin.Int64) -> Builtin.Int64 {
92+
bb0(%0 : $Builtin.Int64):
93+
%1 = integer_literal $Builtin.Int64, -4
94+
%2 = builtin "or_Int64"(%0 : $Builtin.Int64, %1 : $Builtin.Int64) : $Builtin.Int64
95+
%3 = integer_literal $Builtin.Int64, 3
96+
%4 = builtin "or_Int64"(%2 : $Builtin.Int64, %3 : $Builtin.Int64) : $Builtin.Int64
97+
return %4 : $Builtin.Int64
98+
}
99+
100+
// CHECK-LABEL: sil [ossa] @test_xor1
101+
// XHECK: bb0(%0 : $Builtin.Int64):
102+
// XHECK: return %0
103+
sil [ossa] @test_xor1 : $@convention(thin) (Builtin.Int64) -> Builtin.Int64 {
104+
bb0(%0 : $Builtin.Int64):
105+
%1 = integer_literal $Builtin.Int64, 0
106+
%2 = builtin "xor_Int64"(%0 : $Builtin.Int64, %1 : $Builtin.Int64) : $Builtin.Int64
107+
return %2 : $Builtin.Int64
108+
}
109+
110+
// CHECK-LABEL: sil [ossa] @test_xor2
111+
// XHECK: %1 = integer_literal $Builtin.Int64, -1
112+
// XHECK: %2 = builtin "xor_Int64"(%0 : $Builtin.Int64, %1 : $Builtin.Int64)
113+
// XHECK: return %2
114+
sil [ossa] @test_xor2 : $@convention(thin) (Builtin.Int64) -> Builtin.Int64 {
115+
bb0(%0 : $Builtin.Int64):
116+
%1 = integer_literal $Builtin.Int64, -1
117+
%2 = builtin "xor_Int64"(%0 : $Builtin.Int64, %1 : $Builtin.Int64) : $Builtin.Int64
118+
return %2 : $Builtin.Int64
119+
}
120+
121+
// CHECK-LABEL: sil [ossa] @test_xor3
122+
// XHECK: %1 = integer_literal $Builtin.Int64, 259
123+
// XHECK: %2 = builtin "xor_Int64"(%0 : $Builtin.Int64, %1 : $Builtin.Int64)
124+
// XHECK: return %2
125+
sil [ossa] @test_xor3 : $@convention(thin) (Builtin.Int64) -> Builtin.Int64 {
126+
bb0(%0 : $Builtin.Int64):
127+
%1 = integer_literal $Builtin.Int64, 288
128+
%2 = builtin "xor_Int64"(%0 : $Builtin.Int64, %1 : $Builtin.Int64) : $Builtin.Int64
129+
%3 = integer_literal $Builtin.Int64, 35
130+
%4 = builtin "xor_Int64"(%2 : $Builtin.Int64, %3 : $Builtin.Int64) : $Builtin.Int64
131+
return %4 : $Builtin.Int64
132+
}
133+
134+
// CHECK-LABEL: sil [ossa] @test_xor4
135+
// XHECK: bb0(%0 : $Builtin.Int64):
136+
// XHECK: return %0
137+
sil [ossa] @test_xor4 : $@convention(thin) (Builtin.Int64) -> Builtin.Int64 {
138+
bb0(%0 : $Builtin.Int64):
139+
%1 = integer_literal $Builtin.Int64, 18
140+
%2 = builtin "xor_Int64"(%0 : $Builtin.Int64, %1 : $Builtin.Int64) : $Builtin.Int64
141+
%3 = builtin "xor_Int64"(%1 : $Builtin.Int64, %2 : $Builtin.Int64) : $Builtin.Int64
142+
return %3 : $Builtin.Int64
143+
}
144+

0 commit comments

Comments
 (0)