@@ -334,44 +334,49 @@ pub unsafe fn _mm_cvtepu8_epi64(a: u8x16) -> i64x2 {
334
334
simd_shuffle2 :: < _ , :: v16:: u8x2 > ( a, a, [ 0 , 1 ] ) . as_i64x2 ( )
335
335
}
336
336
337
- /// Zero extend packed unsigned 16-bit integers in `a` to packed 32-bit integers
337
+ /// Zero extend packed unsigned 16-bit integers in `a`
338
+ /// to packed 32-bit integers
338
339
#[ inline( always) ]
339
340
#[ target_feature = "+sse4.1" ]
340
341
#[ cfg_attr( test, assert_instr( pmovzxwd) ) ]
341
342
pub unsafe fn _mm_cvtepu16_epi32 ( a : u16x8 ) -> i32x4 {
342
343
simd_shuffle4 :: < _ , :: v64:: u16x4 > ( a, a, [ 0 , 1 , 2 , 3 ] ) . as_i32x4 ( )
343
344
}
344
345
345
- /// Zero extend packed unsigned 16-bit integers in `a` to packed 64-bit integers
346
+ /// Zero extend packed unsigned 16-bit integers in `a`
347
+ /// to packed 64-bit integers
346
348
#[ inline( always) ]
347
349
#[ target_feature = "+sse4.1" ]
348
350
#[ cfg_attr( test, assert_instr( pmovzxwq) ) ]
349
351
pub unsafe fn _mm_cvtepu16_epi64 ( a : u16x8 ) -> i64x2 {
350
352
simd_shuffle2 :: < _ , :: v32:: u16x2 > ( a, a, [ 0 , 1 ] ) . as_i64x2 ( )
351
353
}
352
354
353
- /// Zero extend packed unsigned 32-bit integers in `a` to packed 64-bit integers
355
+ /// Zero extend packed unsigned 32-bit integers in `a`
356
+ /// to packed 64-bit integers
354
357
#[ inline( always) ]
355
358
#[ target_feature = "+sse4.1" ]
356
359
#[ cfg_attr( test, assert_instr( pmovzxdq) ) ]
357
360
pub unsafe fn _mm_cvtepu32_epi64 ( a : u32x4 ) -> i64x2 {
358
361
simd_shuffle2 :: < _ , :: v64:: u32x2 > ( a, a, [ 0 , 1 ] ) . as_i64x2 ( )
359
362
}
360
363
361
- /// Multiply the low 32-bit integers from each packed 64-bit element in `a` and `b`
364
+ /// Multiply the low 32-bit integers from each packed 64-bit
365
+ /// element in `a` and `b`
362
366
#[ inline( always) ]
363
367
#[ target_feature = "+sse4.1" ]
364
368
#[ cfg_attr( test, assert_instr( pmuldq) ) ]
365
- pub unsafe fn _mm_mul_epi32 ( a : i32x4 , b : i32x4 ) -> i64x2 {
369
+ pub unsafe fn _mm_mul_epi32 ( a : i32x4 , b : i32x4 ) -> i64x2 {
366
370
pmuldq ( a, b)
367
371
}
368
372
369
- /// Multiply the packed 32-bit integers in `a` and `b`, producing intermediate 64-bit integers,
370
- /// and return the low 32 bits of the intermediate integers.
373
+ /// Multiply the packed 32-bit integers in `a` and `b`,
374
+ /// producing intermediate 64-bit integers, and return
375
+ /// the low 32 bits of the intermediate integers.
371
376
#[ inline( always) ]
372
377
#[ target_feature = "+sse4.1" ]
373
378
#[ cfg_attr( test, assert_instr( pmulld) ) ]
374
- pub unsafe fn _mm_mullo_epi32 ( a : i32x4 , b : i32x4 ) -> i32x4 {
379
+ pub unsafe fn _mm_mullo_epi32 ( a : i32x4 , b : i32x4 ) -> i32x4 {
375
380
a * b
376
381
}
377
382
@@ -381,7 +386,8 @@ pub unsafe fn _mm_mullo_epi32 (a: i32x4, b:i32x4) -> i32x4 {
381
386
/// Arguments:
382
387
///
383
388
/// * `a` - A 128-bit integer vector containing the bits to be tested.
384
- /// * `mask` - A 128-bit integer vector selecting which bits to test in operand `a`.
389
+ /// * `mask` - A 128-bit integer vector selecting which bits to test in
390
+ /// operand `a`.
385
391
///
386
392
/// Returns:
387
393
///
@@ -400,7 +406,8 @@ pub unsafe fn _mm_testz_si128(a: __m128i, mask: __m128i) -> i32 {
400
406
/// Arguments:
401
407
///
402
408
/// * `a` - A 128-bit integer vector containing the bits to be tested.
403
- /// * `mask` - A 128-bit integer vector selecting which bits to test in operand `a`.
409
+ /// * `mask` - A 128-bit integer vector selecting which bits to test in
410
+ /// operand `a`.
404
411
///
405
412
/// Returns:
406
413
///
@@ -419,7 +426,8 @@ pub unsafe fn _mm_testc_si128(a: __m128i, mask: __m128i) -> i32 {
419
426
/// Arguments:
420
427
///
421
428
/// * `a` - A 128-bit integer vector containing the bits to be tested.
422
- /// * `mask` - A 128-bit integer vector selecting which bits to test in operand `a`.
429
+ /// * `mask` - A 128-bit integer vector selecting which bits to test in
430
+ /// operand `a`.
423
431
///
424
432
/// Returns:
425
433
///
@@ -438,7 +446,8 @@ pub unsafe fn _mm_testnzc_si128(a: __m128i, mask: __m128i) -> i32 {
438
446
/// Arguments:
439
447
///
440
448
/// * `a` - A 128-bit integer vector containing the bits to be tested.
441
- /// * `mask` - A 128-bit integer vector selecting which bits to test in operand `a`.
449
+ /// * `mask` - A 128-bit integer vector selecting which bits to test in
450
+ /// operand `a`.
442
451
///
443
452
/// Returns:
444
453
///
@@ -476,7 +485,8 @@ pub unsafe fn _mm_test_all_ones(a: __m128i) -> i32 {
476
485
/// Arguments:
477
486
///
478
487
/// * `a` - A 128-bit integer vector containing the bits to be tested.
479
- /// * `mask` - A 128-bit integer vector selecting which bits to test in operand `a`.
488
+ /// * `mask` - A 128-bit integer vector selecting which bits to test in
489
+ /// operand `a`.
480
490
///
481
491
/// Returns:
482
492
///
@@ -758,7 +768,7 @@ pub unsafe fn _mm_minpos_epu16(a: u16x8) -> u16x8 {
758
768
/// fields in the immediate operand.
759
769
///
760
770
/// The following algorithm is performed:
761
- ///
771
+ ///
762
772
/// ```ignore
763
773
/// i = imm8[2] * 4
764
774
/// j = imm8[1:0] * 4
@@ -769,13 +779,13 @@ pub unsafe fn _mm_minpos_epu16(a: u16x8) -> u16x8 {
769
779
/// d3 = abs(a[i + k + 3] - b[j + 3])
770
780
/// r[k] = d0 + d1 + d2 + d3
771
781
/// ```
772
- ///
782
+ ///
773
783
/// Arguments:
774
784
///
775
785
/// * `a` - A 128-bit vector of type `i8x16`.
776
786
/// * `b` - A 128-bit vector of type `i8x16`.
777
- /// * `imm8` - An 8-bit immediate operand specifying how the absolute differences are to
778
- /// be calculated
787
+ /// * `imm8` - An 8-bit immediate operand specifying how the absolute
788
+ /// differences are to be calculated
779
789
/// * Bit `[2]` specify the offset for operand `a`
780
790
/// * Bits `[1:0]` specify the offset for operand `b`
781
791
///
@@ -785,7 +795,7 @@ pub unsafe fn _mm_minpos_epu16(a: u16x8) -> u16x8 {
785
795
/// absolute differences between both operands.
786
796
#[ inline( always) ]
787
797
#[ target_feature = "+sse4.1" ]
788
- #[ cfg_attr( test, assert_instr( mpsadbw, imm8= 0 ) ) ]
798
+ #[ cfg_attr( test, assert_instr( mpsadbw, imm8 = 0 ) ) ]
789
799
pub unsafe fn _mm_mpsadbw_epu8 ( a : u8x16 , b : u8x16 , imm8 : u8 ) -> u16x8 {
790
800
macro_rules! call {
791
801
( $imm8: expr) => { mpsadbw( a, b, $imm8) }
@@ -1130,7 +1140,7 @@ mod tests {
1130
1140
let r = sse41:: _mm_cvtepi32_epi64 ( a) ;
1131
1141
let e = i64x2:: splat ( 10 ) ;
1132
1142
assert_eq ! ( r, e) ;
1133
- let a = i32x4:: splat ( -10 ) ;
1143
+ let a = i32x4:: splat ( -10 ) ;
1134
1144
let r = sse41:: _mm_cvtepi32_epi64 ( a) ;
1135
1145
let e = i64x2:: splat ( -10 ) ;
1136
1146
assert_eq ! ( r, e) ;
@@ -1204,99 +1214,99 @@ mod tests {
1204
1214
1205
1215
#[ simd_test = "sse4.1" ]
1206
1216
unsafe fn _mm_testz_si128 ( ) {
1207
- let a = __m128i:: splat ( 1 ) ;
1217
+ let a = __m128i:: splat ( 1 ) ;
1208
1218
let mask = __m128i:: splat ( 0 ) ;
1209
- let r = sse41:: _mm_testz_si128 ( a, mask) ;
1219
+ let r = sse41:: _mm_testz_si128 ( a, mask) ;
1210
1220
assert_eq ! ( r, 1 ) ;
1211
- let a = __m128i:: splat ( 0b101 ) ;
1221
+ let a = __m128i:: splat ( 0b101 ) ;
1212
1222
let mask = __m128i:: splat ( 0b110 ) ;
1213
- let r = sse41:: _mm_testz_si128 ( a, mask) ;
1223
+ let r = sse41:: _mm_testz_si128 ( a, mask) ;
1214
1224
assert_eq ! ( r, 0 ) ;
1215
- let a = __m128i:: splat ( 0b011 ) ;
1225
+ let a = __m128i:: splat ( 0b011 ) ;
1216
1226
let mask = __m128i:: splat ( 0b100 ) ;
1217
- let r = sse41:: _mm_testz_si128 ( a, mask) ;
1227
+ let r = sse41:: _mm_testz_si128 ( a, mask) ;
1218
1228
assert_eq ! ( r, 1 ) ;
1219
1229
}
1220
1230
1221
1231
#[ simd_test = "sse4.1" ]
1222
1232
unsafe fn _mm_testc_si128 ( ) {
1223
- let a = __m128i:: splat ( -1 ) ;
1233
+ let a = __m128i:: splat ( -1 ) ;
1224
1234
let mask = __m128i:: splat ( 0 ) ;
1225
- let r = sse41:: _mm_testc_si128 ( a, mask) ;
1235
+ let r = sse41:: _mm_testc_si128 ( a, mask) ;
1226
1236
assert_eq ! ( r, 1 ) ;
1227
- let a = __m128i:: splat ( 0b101 ) ;
1237
+ let a = __m128i:: splat ( 0b101 ) ;
1228
1238
let mask = __m128i:: splat ( 0b110 ) ;
1229
- let r = sse41:: _mm_testc_si128 ( a, mask) ;
1239
+ let r = sse41:: _mm_testc_si128 ( a, mask) ;
1230
1240
assert_eq ! ( r, 0 ) ;
1231
- let a = __m128i:: splat ( 0b101 ) ;
1241
+ let a = __m128i:: splat ( 0b101 ) ;
1232
1242
let mask = __m128i:: splat ( 0b100 ) ;
1233
- let r = sse41:: _mm_testc_si128 ( a, mask) ;
1243
+ let r = sse41:: _mm_testc_si128 ( a, mask) ;
1234
1244
assert_eq ! ( r, 1 ) ;
1235
1245
}
1236
1246
1237
1247
#[ simd_test = "sse4.1" ]
1238
1248
unsafe fn _mm_testnzc_si128 ( ) {
1239
- let a = __m128i:: splat ( 0 ) ;
1249
+ let a = __m128i:: splat ( 0 ) ;
1240
1250
let mask = __m128i:: splat ( 1 ) ;
1241
- let r = sse41:: _mm_testnzc_si128 ( a, mask) ;
1251
+ let r = sse41:: _mm_testnzc_si128 ( a, mask) ;
1242
1252
assert_eq ! ( r, 0 ) ;
1243
- let a = __m128i:: splat ( -1 ) ;
1253
+ let a = __m128i:: splat ( -1 ) ;
1244
1254
let mask = __m128i:: splat ( 0 ) ;
1245
- let r = sse41:: _mm_testnzc_si128 ( a, mask) ;
1255
+ let r = sse41:: _mm_testnzc_si128 ( a, mask) ;
1246
1256
assert_eq ! ( r, 0 ) ;
1247
- let a = __m128i:: splat ( 0b101 ) ;
1257
+ let a = __m128i:: splat ( 0b101 ) ;
1248
1258
let mask = __m128i:: splat ( 0b110 ) ;
1249
- let r = sse41:: _mm_testnzc_si128 ( a, mask) ;
1259
+ let r = sse41:: _mm_testnzc_si128 ( a, mask) ;
1250
1260
assert_eq ! ( r, 1 ) ;
1251
- let a = __m128i:: splat ( 0b101 ) ;
1261
+ let a = __m128i:: splat ( 0b101 ) ;
1252
1262
let mask = __m128i:: splat ( 0b101 ) ;
1253
- let r = sse41:: _mm_testnzc_si128 ( a, mask) ;
1263
+ let r = sse41:: _mm_testnzc_si128 ( a, mask) ;
1254
1264
assert_eq ! ( r, 0 ) ;
1255
1265
}
1256
1266
1257
1267
#[ simd_test = "sse4.1" ]
1258
1268
unsafe fn _mm_test_all_zeros ( ) {
1259
- let a = __m128i:: splat ( 1 ) ;
1269
+ let a = __m128i:: splat ( 1 ) ;
1260
1270
let mask = __m128i:: splat ( 0 ) ;
1261
- let r = sse41:: _mm_test_all_zeros ( a, mask) ;
1271
+ let r = sse41:: _mm_test_all_zeros ( a, mask) ;
1262
1272
assert_eq ! ( r, 1 ) ;
1263
- let a = __m128i:: splat ( 0b101 ) ;
1273
+ let a = __m128i:: splat ( 0b101 ) ;
1264
1274
let mask = __m128i:: splat ( 0b110 ) ;
1265
- let r = sse41:: _mm_test_all_zeros ( a, mask) ;
1275
+ let r = sse41:: _mm_test_all_zeros ( a, mask) ;
1266
1276
assert_eq ! ( r, 0 ) ;
1267
- let a = __m128i:: splat ( 0b011 ) ;
1277
+ let a = __m128i:: splat ( 0b011 ) ;
1268
1278
let mask = __m128i:: splat ( 0b100 ) ;
1269
- let r = sse41:: _mm_test_all_zeros ( a, mask) ;
1279
+ let r = sse41:: _mm_test_all_zeros ( a, mask) ;
1270
1280
assert_eq ! ( r, 1 ) ;
1271
1281
}
1272
1282
1273
1283
#[ simd_test = "sse4.1" ]
1274
1284
unsafe fn _mm_test_all_ones ( ) {
1275
- let a = __m128i:: splat ( -1 ) ;
1276
- let r = sse41:: _mm_test_all_ones ( a) ;
1285
+ let a = __m128i:: splat ( -1 ) ;
1286
+ let r = sse41:: _mm_test_all_ones ( a) ;
1277
1287
assert_eq ! ( r, 1 ) ;
1278
- let a = __m128i:: splat ( 0b101 ) ;
1279
- let r = sse41:: _mm_test_all_ones ( a) ;
1288
+ let a = __m128i:: splat ( 0b101 ) ;
1289
+ let r = sse41:: _mm_test_all_ones ( a) ;
1280
1290
assert_eq ! ( r, 0 ) ;
1281
1291
}
1282
1292
1283
1293
#[ simd_test = "sse4.1" ]
1284
1294
unsafe fn _mm_test_mix_ones_zeros ( ) {
1285
- let a = __m128i:: splat ( 0 ) ;
1295
+ let a = __m128i:: splat ( 0 ) ;
1286
1296
let mask = __m128i:: splat ( 1 ) ;
1287
- let r = sse41:: _mm_test_mix_ones_zeros ( a, mask) ;
1297
+ let r = sse41:: _mm_test_mix_ones_zeros ( a, mask) ;
1288
1298
assert_eq ! ( r, 0 ) ;
1289
- let a = __m128i:: splat ( -1 ) ;
1299
+ let a = __m128i:: splat ( -1 ) ;
1290
1300
let mask = __m128i:: splat ( 0 ) ;
1291
- let r = sse41:: _mm_test_mix_ones_zeros ( a, mask) ;
1301
+ let r = sse41:: _mm_test_mix_ones_zeros ( a, mask) ;
1292
1302
assert_eq ! ( r, 0 ) ;
1293
- let a = __m128i:: splat ( 0b101 ) ;
1303
+ let a = __m128i:: splat ( 0b101 ) ;
1294
1304
let mask = __m128i:: splat ( 0b110 ) ;
1295
- let r = sse41:: _mm_test_mix_ones_zeros ( a, mask) ;
1305
+ let r = sse41:: _mm_test_mix_ones_zeros ( a, mask) ;
1296
1306
assert_eq ! ( r, 1 ) ;
1297
- let a = __m128i:: splat ( 0b101 ) ;
1307
+ let a = __m128i:: splat ( 0b101 ) ;
1298
1308
let mask = __m128i:: splat ( 0b101 ) ;
1299
- let r = sse41:: _mm_test_mix_ones_zeros ( a, mask) ;
1309
+ let r = sse41:: _mm_test_mix_ones_zeros ( a, mask) ;
1300
1310
assert_eq ! ( r, 0 ) ;
1301
1311
}
1302
1312
@@ -1436,7 +1446,8 @@ mod tests {
1436
1446
1437
1447
#[ simd_test = "sse4.1" ]
1438
1448
unsafe fn _mm_mpsadbw_epu8 ( ) {
1439
- let a = u8x16:: new ( 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ) ;
1449
+ let a =
1450
+ u8x16:: new ( 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ) ;
1440
1451
1441
1452
let r = sse41:: _mm_mpsadbw_epu8 ( a, a, 0b000 ) ;
1442
1453
let e = u16x8:: new ( 0 , 4 , 8 , 12 , 16 , 20 , 24 , 28 ) ;
@@ -1445,7 +1456,7 @@ mod tests {
1445
1456
let r = sse41:: _mm_mpsadbw_epu8 ( a, a, 0b001 ) ;
1446
1457
let e = u16x8:: new ( 16 , 12 , 8 , 4 , 0 , 4 , 8 , 12 ) ;
1447
1458
assert_eq ! ( r, e) ;
1448
-
1459
+
1449
1460
let r = sse41:: _mm_mpsadbw_epu8 ( a, a, 0b100 ) ;
1450
1461
let e = u16x8:: new ( 16 , 20 , 24 , 28 , 32 , 36 , 40 , 44 ) ;
1451
1462
assert_eq ! ( r, e) ;
0 commit comments