1
- // RUN: %target-swift-frontend -I %S/Inputs/abi %s -emit-ir | %FileCheck %s --check-prefix=CHECK-%target-cpu
1
+ // RUN: %target-swift-frontend -I %S/Inputs/abi %s -emit-ir | %FileCheck %s --check-prefix=CHECK-%target-cpu -check-prefix CHECK-%target-abi-%target-cpu
2
2
3
3
sil_stage canonical
4
4
import c_layout
@@ -10,7 +10,8 @@ import Swift
10
10
// CHECK-x86_64: %TSo11BitfieldOneV = type <{ %Ts6UInt32V, %TSo6NestedV, [4 x i8], [4 x i8], %TSf, [1 x i8], [7 x i8], %Ts6UInt64V, %Ts6UInt32V, [4 x i8] }>
11
11
// CHECK-x86_64: %TSo6NestedV = type <{ %TSf, [3 x i8], [1 x i8] }>
12
12
13
- // CHECK-x86_64: %TSo26BitfieldSeparatorReferenceV = type [[BITFIELD_SEP_TYPE:<{ %Ts5UInt8V, \[3 x i8\], %Ts5UInt8V }>]]
13
+ // CHECK-SYSV-x86_64: %TSo26BitfieldSeparatorReferenceV = type [[BITFIELD_SEP_TYPE:<{ %Ts5UInt8V, \[3 x i8\], %Ts5UInt8V }>]]
14
+ // CHECK-WIN-x86_64: %TSo26BitfieldSeparatorReferenceV = type [[BITFIELD_SEP_TYPE:<{ %Ts5UInt8V, %Ts5UInt8V }>]]
14
15
// CHECK-x86_64: %TSo25BitfieldSeparatorSameNameV = type [[BITFIELD_SEP_TYPE]]
15
16
// CHECK-x86_64: %TSo36BitfieldSeparatorDifferentNameStructV = type [[BITFIELD_SEP_TYPE]]
16
17
// CHECK-x86_64: %TSo21BitfieldSeparatorAnona = type [[BITFIELD_SEP_TYPE]]
27
28
%r = tuple ()
28
29
return %r : $()
29
30
}
30
- // CHECK-x86_64: define{{( protected)?}} swiftcc void @test0()
31
+ // CHECK-x86_64: define{{( dllexport)?}}{{( protected)?}} swiftcc void @test0()
31
32
// CHECK-x86_64: [[RESULT:%.*]] = alloca %TSo11BitfieldOneV, align 8
32
33
// CHECK-x86_64: [[ARG:%.*]] = alloca %TSo11BitfieldOneV, align 8
33
34
// Make the first call and pull all the values out of the indirect result.
89
90
// CHECK-x86_64: [[ADDR_M:%.*]] = getelementptr inbounds %TSo11BitfieldOneV, %TSo11BitfieldOneV* [[ARG]], i32 0, i32 8
90
91
// CHECK-x86_64: [[ADDR_M_V:%.*]] = getelementptr inbounds %Ts6UInt32V, %Ts6UInt32V* [[ADDR_M]], i32 0, i32 0
91
92
// CHECK-x86_64: store i32 [[M]], i32* [[ADDR_M_V]], align 8
92
- // CHECK-x86_64: call void @consumeBitfieldOne(%TSo11BitfieldOneV* byval align 8 [[ARG]])
93
+ // CHECK-SYSV-x86_64: call void @consumeBitfieldOne(%TSo11BitfieldOneV* byval align 8 [[ARG]])
94
+ // CHECK-WIN-x86_64: call void @consumeBitfieldOne(%TSo11BitfieldOneV* [[ARG]])
93
95
// CHECK-x86_64: ret void
94
96
95
97
@@ -107,8 +109,10 @@ sil public_external @createSIMDStruct : $@convention(c) () -> SIMDStruct
107
109
sil public_external @consumeSIMDStruct : $@convention(c) (SIMDStruct) -> ()
108
110
109
111
// CHECK-x86_64-LABEL: define{{( dllexport)?}}{{( protected)?}} swiftcc void @testSIMDStruct()
110
- // CHECK-x86_64: call <3 x float> @createSIMDStruct
111
- // CHECK-x86_64: call void @consumeSIMDStruct(<3 x float>
112
+ // CHECK-SYSV-x86_64: call <3 x float> @createSIMDStruct
113
+ // CHECK-WIN-x86_64: call void @createSIMDStruct(%TSo10SIMDStructV* noalias nocapture sret %
114
+ // CHECK-SYSV-x86_64: call void @consumeSIMDStruct(<3 x float>
115
+ // CHECK-WIN-x86_64: call void @consumeSIMDStruct(%TSo10SIMDStructV* %
112
116
sil @testSIMDStruct : $() -> () {
113
117
bb0:
114
118
%f = function_ref @createSIMDStruct : $@convention(c) () -> SIMDStruct
@@ -126,20 +130,32 @@ bb0:
126
130
}
127
131
128
132
// CHECK-x86_64-LABEL: define{{( dllexport)?}}{{( protected)?}} swiftcc void @testIntegerExtension
129
- // CHECK-x86_64: call signext i8 @chareth(i8 signext
130
- // CHECK-x86_64: call signext i8 @signedChareth(i8 signext
131
- // CHECK-x86_64: call zeroext i8 @unsignedChareth(i8 zeroext
132
- // CHECK-x86_64: call signext i16 @eatMyShorts(i16 signext
133
- // CHECK-x86_64: call zeroext i16 @eatMyUnsignedShorts(i16 zeroext
133
+ // CHECK-SYSV-x86_64: call signext i8 @chareth(i8 signext
134
+ // CHECK-WIN-x86_64: call i8 @chareth(i8
135
+ // CHECK-SYSV-x86_64: call signext i8 @signedChareth(i8 signext
136
+ // CHECK-WIN-x86_64: call i8 @signedChareth(i8
137
+ // CHECK-SYSV-x86_64: call zeroext i8 @unsignedChareth(i8 zeroext
138
+ // CHECK-WIN-x86_64: call i8 @unsignedChareth(i8
139
+ // CHECK-SYSV-x86_64: call signext i16 @eatMyShorts(i16 signext
140
+ // CHECK-WIN-x86_64: call i16 @eatMyShorts(i16
141
+ // CHECK-SYSV-x86_64: call zeroext i16 @eatMyUnsignedShorts(i16 zeroext
142
+ // CHECK-WIN-x86_64: call i16 @eatMyUnsignedShorts(i16
134
143
// CHECK-x86_64: call i32 @ints(i32 %5)
135
144
// CHECK-x86_64: call i32 @unsigneds(i32 %6)
136
- // CHECK-x86_64-LABEL: declare{{( dllimport)?}} signext i8 @chareth(i8 signext)
137
- // CHECK-x86_64-LABEL: declare{{( dllimport)?}} signext i8 @signedChareth(i8 signext)
138
- // CHECK-x86_64-LABEL: declare{{( dllimport)?}} zeroext i8 @unsignedChareth(i8 zeroext)
139
- // CHECK-x86_64-LABEL: declare{{( dllimport)?}} signext i16 @eatMyShorts(i16 signext)
140
- // CHECK-x86_64-LABEL: declare{{( dllimport)?}} zeroext i16 @eatMyUnsignedShorts(i16 zeroext)
141
- // CHECK-x86_64-LABEL: declare{{( dllimport)?}} i32 @ints(i32)
142
- // CHECK-x86_64-LABEL: declare{{( dllimport)?}} i32 @unsigneds(i32)
145
+ // CHECK-SYSV-x86_64-LABEL: declare{{( dllimport)?}} signext i8 @chareth(i8 signext)
146
+ // CHECK-WIN-x86_64-LABEL: declare{{( dllimport)?}} i8 @chareth(i8)
147
+ // CHECK-SYSV-x86_64-LABEL: declare{{( dllimport)?}} signext i8 @signedChareth(i8 signext)
148
+ // CHECK-WIN-x86_64-LABEL: declare{{( dllimport)?}} i8 @signedChareth(i8)
149
+ // CHECK-SYSV-x86_64-LABEL: declare{{( dllimport)?}} zeroext i8 @unsignedChareth(i8 zeroext)
150
+ // CHECK-WIN-x86_64-LABEL: declare{{( dllimport)?}} i8 @unsignedChareth(i8)
151
+ // CHECK-SYSV-x86_64-LABEL: declare{{( dllimport)?}} signext i16 @eatMyShorts(i16 signext)
152
+ // CHECK-WIN-x86_64-LABEL: declare{{( dllimport)?}} i16 @eatMyShorts(i16)
153
+ // CHECK-SYSV-x86_64-LABEL: declare{{( dllimport)?}} zeroext i16 @eatMyUnsignedShorts(i16 zeroext)
154
+ // CHECK-WIN-x86_64-LABEL: declare{{( dllimport)?}} i16 @eatMyUnsignedShorts(i16)
155
+ // CHECK-SYSV-x86_64-LABEL: declare{{( dllimport)?}} i32 @ints(i32)
156
+ // CHECK-WIN-x86_64-LABEL: declare{{( dllimport)?}} i32 @ints(i32)
157
+ // CHECK-SYSV-x86_64-LABEL: declare{{( dllimport)?}} i32 @unsigneds(i32)
158
+ // CHECK-WIN-x86_64-LABEL: declare{{( dllimport)?}} i32 @unsigneds(i32)
143
159
144
160
// CHECK-i386-LABEL: define{{( dllexport)?}}{{( protected)?}} swiftcc void @testIntegerExtension
145
161
// CHECK-i386: call signext i8 @chareth(i8 signext
@@ -314,13 +330,15 @@ entry(%a : $CChar, %b : $CSignedChar, %c : $CUnsignedChar, %d : $CShort, %e : $C
314
330
// CHECK-x86_64-LABEL: define{{( dllexport)?}}{{( protected)?}} swiftcc i8 @testIntegerExtensionInBlock(%objc_block*, i8)
315
331
sil @testIntegerExtensionInBlock : $@convention(thin) (@owned @convention(block) (CChar) -> CChar, CChar) -> CChar {
316
332
entry(%b : $@convention(block) (CChar) -> CChar, %c : $CChar):
317
- // CHECK-x86_64: call signext i8 {{%.*}}(%objc_block* {{%.*}}, i8 signext {{%.*}})
333
+ // CHECK-SYSV-x86_64: call signext i8 {{%.*}}(%objc_block* {{%.*}}, i8 signext {{%.*}})
334
+ // CHECK-WIN-x86_64: call i8 {{%.*}}(%objc_block* {{%.*}}, i8 {{%.*}})
318
335
%r = apply %b(%c) : $@convention(block) (CChar) -> CChar
319
336
return %r : $CChar
320
337
}
321
338
322
339
// CHECK-x86_64-LABEL: define{{( dllexport)?}}{{( protected)?}} swiftcc void @testBitfieldInBlock
323
- // CHECK-x86_64: call void {{%.*}}(%TSo11BitfieldOneV* noalias nocapture sret {{%.*}}, %objc_block* {{%.*}}, %TSo11BitfieldOneV* byval align 8 {{%.*}})
340
+ // CHECK-SYSV-x86_64: call void {{%.*}}(%TSo11BitfieldOneV* noalias nocapture sret {{%.*}}, %objc_block* {{%.*}}, %TSo11BitfieldOneV* byval align 8 {{%.*}})
341
+ // CHECK-WIN-x86_64: call void {{%.*}}(%TSo11BitfieldOneV* noalias nocapture sret {{%.*}}, %objc_block* {{%.*}}, %TSo11BitfieldOneV* {{%.*}})
324
342
sil @testBitfieldInBlock : $@convention(thin) (@owned @convention(block) (BitfieldOne) -> BitfieldOne, BitfieldOne) -> BitfieldOne {
325
343
entry(%b : $@convention(block) (BitfieldOne) -> BitfieldOne, %x : $BitfieldOne):
326
344
%r = apply %b(%x) : $@convention(block) (BitfieldOne) -> BitfieldOne
0 commit comments