@@ -25,11 +25,12 @@ vectorscalarCounts = storagescalarCounts + [3]
25
25
% storageN = 4 if n == 3 else n
26
26
% s = " s " if int. is_signed else " u "
27
27
% Builtin = " Vec " + str( storageN) + " xInt " + str( int. bits)
28
+ % MaskExt = " Builtin.sext_Vec " + str( storageN) + " xInt1_ " + Builtin
28
29
% if int. is_signed:
29
30
extension SIMDMask where Storage == ${ Vector} {
30
31
@_alwaysEmitIntoClient
31
- internal init( _ _builtin: Builtin. Vec$ { storageN } xInt 1 ) {
32
- _storage = ${ Vector} ( Builtin . sext_Vec $ { storageN } xInt1_$ { Builtin } ( _builtin) )
32
+ internal init( _ _builtin: Builtin. $ { Builtin } ) {
33
+ _storage = ${ Vector} ( _builtin)
33
34
}
34
35
35
36
@_alwaysEmitIntoClient
@@ -216,49 +217,49 @@ extension SIMD${n} where Scalar == ${Scalar} {
216
217
/// A vector mask with the result of a pointwise equality comparison.
217
218
@_alwaysEmitIntoClient
218
219
public static func .== ( a: Self, b: Self) - > SIMDMask< MaskStorage> {
219
- SIMDMask < MaskStorage > (
220
+ SIMDMask < MaskStorage > ( $ { MaskExt } (
220
221
Builtin . cmp_eq_ ${ Builtin} ( a. _storage. _value, b. _storage. _value)
221
- )
222
+ ) )
222
223
}
223
224
224
225
/// A vector mask with the result of a pointwise inequality comparison.
225
226
@_alwaysEmitIntoClient
226
227
public static func .!= ( a: Self, b: Self) - > SIMDMask< MaskStorage> {
227
- SIMDMask < MaskStorage > (
228
+ SIMDMask < MaskStorage > ( $ { MaskExt } (
228
229
Builtin . cmp_ne_ ${ Builtin} ( a. _storage. _value, b. _storage. _value)
229
- )
230
+ ) )
230
231
}
231
232
232
233
/// A vector mask with the result of a pointwise less-than comparison.
233
234
@_alwaysEmitIntoClient
234
235
public static func . < ( a: Self, b: Self) - > SIMDMask< MaskStorage> {
235
- SIMDMask < MaskStorage > (
236
+ SIMDMask < MaskStorage > ( $ { MaskExt } (
236
237
Builtin . cmp_ ${ s} lt_${ Builtin} ( a. _storage. _value, b. _storage. _value)
237
- )
238
+ ) )
238
239
}
239
240
240
241
/// A vector mask with the result of a pointwise less-than-or-equal-to comparison.
241
242
@_alwaysEmitIntoClient
242
243
public static func .<= ( a: Self, b: Self) - > SIMDMask< MaskStorage> {
243
- SIMDMask < MaskStorage > (
244
+ SIMDMask < MaskStorage > ( $ { MaskExt } (
244
245
Builtin . cmp_ ${ s} le_${ Builtin} ( a. _storage. _value, b. _storage. _value)
245
- )
246
+ ) )
246
247
}
247
248
248
249
/// A vector mask with the result of a pointwise greater-than comparison.
249
250
@_alwaysEmitIntoClient
250
251
public static func .> ( a: Self, b: Self) - > SIMDMask< MaskStorage> {
251
- SIMDMask < MaskStorage > (
252
+ SIMDMask < MaskStorage > ( $ { MaskExt } (
252
253
Builtin . cmp_ ${ s} gt_${ Builtin} ( a. _storage. _value, b. _storage. _value)
253
- )
254
+ ) )
254
255
}
255
256
256
257
/// A vector mask with the result of a pointwise greater-than-or-equal-to comparison.
257
258
@_alwaysEmitIntoClient
258
259
public static func .>= ( a: Self, b: Self) - > SIMDMask< MaskStorage> {
259
- SIMDMask < MaskStorage > (
260
+ SIMDMask < MaskStorage > ( $ { MaskExt } (
260
261
Builtin . cmp_ ${ s} ge_${ Builtin} ( a. _storage. _value, b. _storage. _value)
261
- )
262
+ ) )
262
263
}
263
264
264
265
/// The wrapping sum of two vectors.
@@ -303,6 +304,8 @@ extension SIMD${n} where Scalar == ${Scalar} {
303
304
% Vector = " SIMD " + str( n) + " < " + Scalar + " > "
304
305
% storageN = 4 if n == 3 else n
305
306
% Builtin = " Vec " + str( storageN) + " xFPIEEE " + str( bits)
307
+ % VecPre = " Vec " + str( storageN) + " x "
308
+ % MaskExt = " Builtin.sext_ " + VecPre + " Int1_ " + VecPre + " Int " + str( bits)
306
309
% if bits == 16 :
307
310
#if !((os(macOS) || targetEnvironment(macCatalyst)) && arch(x86_64))
308
311
@available( macOS 11.0 , iOS 14.0 , watchOS 7.0 , tvOS 14.0 , * )
@@ -316,49 +319,49 @@ extension SIMD${n} where Scalar == ${Scalar} {
316
319
/// A vector mask with the result of a pointwise equality comparison.
317
320
@_alwaysEmitIntoClient
318
321
public static func .== ( a: Self, b: Self) - > SIMDMask< MaskStorage> {
319
- SIMDMask < MaskStorage > (
322
+ SIMDMask < MaskStorage > ( $ { MaskExt } (
320
323
Builtin . fcmp_oeq_ ${ Builtin} ( a. _storage. _value, b. _storage. _value)
321
- )
324
+ ) )
322
325
}
323
326
324
327
/// A vector mask with the result of a pointwise inequality comparison.
325
328
@_alwaysEmitIntoClient
326
329
public static func .!= ( a: Self, b: Self) - > SIMDMask< MaskStorage> {
327
- SIMDMask < MaskStorage > (
330
+ SIMDMask < MaskStorage > ( $ { MaskExt } (
328
331
Builtin . fcmp_une_ ${ Builtin} ( a. _storage. _value, b. _storage. _value)
329
- )
332
+ ) )
330
333
}
331
334
332
335
/// A vector mask with the result of a pointwise less-than comparison.
333
336
@_alwaysEmitIntoClient
334
337
public static func . < ( a: Self, b: Self) - > SIMDMask< MaskStorage> {
335
- SIMDMask < MaskStorage > (
338
+ SIMDMask < MaskStorage > ( $ { MaskExt } (
336
339
Builtin . fcmp_olt_ ${ Builtin} ( a. _storage. _value, b. _storage. _value)
337
- )
340
+ ) )
338
341
}
339
342
340
343
/// A vector mask with the result of a pointwise less-than-or-equal-to comparison.
341
344
@_alwaysEmitIntoClient
342
345
public static func .<= ( a: Self, b: Self) - > SIMDMask< MaskStorage> {
343
- SIMDMask < MaskStorage > (
346
+ SIMDMask < MaskStorage > ( $ { MaskExt } (
344
347
Builtin . fcmp_ole_ ${ Builtin} ( a. _storage. _value, b. _storage. _value)
345
- )
348
+ ) )
346
349
}
347
350
348
351
/// A vector mask with the result of a pointwise greater-than comparison.
349
352
@_alwaysEmitIntoClient
350
353
public static func .> ( a: Self, b: Self) - > SIMDMask< MaskStorage> {
351
- SIMDMask < MaskStorage > (
354
+ SIMDMask < MaskStorage > ( $ { MaskExt } (
352
355
Builtin . fcmp_ogt_ ${ Builtin} ( a. _storage. _value, b. _storage. _value)
353
- )
356
+ ) )
354
357
}
355
358
356
359
/// A vector mask with the result of a pointwise greater-than-or-equal-to comparison.
357
360
@_alwaysEmitIntoClient
358
361
public static func .>= ( a: Self, b: Self) - > SIMDMask< MaskStorage> {
359
- SIMDMask < MaskStorage > (
362
+ SIMDMask < MaskStorage > ( $ { MaskExt } (
360
363
Builtin . fcmp_oge_ ${ Builtin} ( a. _storage. _value, b. _storage. _value)
361
- )
364
+ ) )
362
365
}
363
366
}
364
367
% if bits == 16 :
0 commit comments