@@ -8873,76 +8873,84 @@ pub unsafe fn _mm_maskz_cvtepu8_epi16(k: __mmask8, a: __m128i) -> __m128i {
8873
8873
#[rustc_legacy_const_generics(1)]
8874
8874
pub unsafe fn _mm512_bslli_epi128<const IMM8: i32>(a: __m512i) -> __m512i {
8875
8875
static_assert_imm8!(IMM8);
8876
+ const fn mask(shift: i32, i: u32) -> u32 {
8877
+ let shift = shift as u32 & 0xff;
8878
+ if shift > 15 || i % 16 < shift {
8879
+ 0
8880
+ } else {
8881
+ 64 + (i - shift)
8882
+ }
8883
+ }
8876
8884
let a = a.as_i8x64();
8877
8885
let zero = _mm512_setzero_si512().as_i8x64();
8878
8886
let r: i8x64 = simd_shuffle64!(
8879
8887
zero,
8880
8888
a,
8881
8889
<const IMM8: i32> [
8882
- 64 - (IMM8 as u32 & 0xff ),
8883
- 65 - (IMM8 as u32 & 0xff ),
8884
- 66 - (IMM8 as u32 & 0xff ),
8885
- 67 - (IMM8 as u32 & 0xff ),
8886
- 68 - (IMM8 as u32 & 0xff ),
8887
- 69 - (IMM8 as u32 & 0xff ),
8888
- 70 - (IMM8 as u32 & 0xff ),
8889
- 71 - (IMM8 as u32 & 0xff ),
8890
- 72 - (IMM8 as u32 & 0xff ),
8891
- 73 - (IMM8 as u32 & 0xff ),
8892
- 74 - (IMM8 as u32 & 0xff ),
8893
- 75 - (IMM8 as u32 & 0xff ),
8894
- 76 - (IMM8 as u32 & 0xff ),
8895
- 77 - (IMM8 as u32 & 0xff ),
8896
- 78 - (IMM8 as u32 & 0xff ),
8897
- 79 - (IMM8 as u32 & 0xff ),
8898
- 80 - (IMM8 as u32 & 0xff) - 16 ,
8899
- 81 - (IMM8 as u32 & 0xff) - 16 ,
8900
- 82 - (IMM8 as u32 & 0xff) - 16 ,
8901
- 83 - (IMM8 as u32 & 0xff) - 16 ,
8902
- 84 - (IMM8 as u32 & 0xff) - 16 ,
8903
- 85 - (IMM8 as u32 & 0xff) - 16 ,
8904
- 86 - (IMM8 as u32 & 0xff) - 16 ,
8905
- 87 - (IMM8 as u32 & 0xff) - 16 ,
8906
- 88 - (IMM8 as u32 & 0xff) - 16 ,
8907
- 89 - (IMM8 as u32 & 0xff) - 16 ,
8908
- 90 - (IMM8 as u32 & 0xff) - 16 ,
8909
- 91 - (IMM8 as u32 & 0xff) - 16 ,
8910
- 92 - (IMM8 as u32 & 0xff) - 16 ,
8911
- 93 - (IMM8 as u32 & 0xff) - 16 ,
8912
- 94 - (IMM8 as u32 & 0xff) - 16 ,
8913
- 95 - (IMM8 as u32 & 0xff) - 16 ,
8914
- 96 - (IMM8 as u32 & 0xff) - 32 ,
8915
- 97 - (IMM8 as u32 & 0xff) - 32 ,
8916
- 98 - (IMM8 as u32 & 0xff) - 32 ,
8917
- 99 - (IMM8 as u32 & 0xff) - 32 ,
8918
- 100 - (IMM8 as u32 & 0xff) - 32 ,
8919
- 101 - (IMM8 as u32 & 0xff) - 32 ,
8920
- 102 - (IMM8 as u32 & 0xff) - 32 ,
8921
- 103 - (IMM8 as u32 & 0xff) - 32 ,
8922
- 104 - (IMM8 as u32 & 0xff) - 32 ,
8923
- 105 - (IMM8 as u32 & 0xff) - 32 ,
8924
- 106 - (IMM8 as u32 & 0xff) - 32 ,
8925
- 107 - (IMM8 as u32 & 0xff) - 32 ,
8926
- 108 - (IMM8 as u32 & 0xff) - 32 ,
8927
- 109 - (IMM8 as u32 & 0xff) - 32 ,
8928
- 110 - (IMM8 as u32 & 0xff) - 32 ,
8929
- 111 - (IMM8 as u32 & 0xff) - 32 ,
8930
- 112 - (IMM8 as u32 & 0xff) - 48 ,
8931
- 113 - (IMM8 as u32 & 0xff) - 48 ,
8932
- 114 - (IMM8 as u32 & 0xff) - 48 ,
8933
- 115 - (IMM8 as u32 & 0xff) - 48 ,
8934
- 116 - (IMM8 as u32 & 0xff) - 48 ,
8935
- 117 - (IMM8 as u32 & 0xff) - 48 ,
8936
- 118 - (IMM8 as u32 & 0xff) - 48 ,
8937
- 119 - (IMM8 as u32 & 0xff) - 48 ,
8938
- 120 - (IMM8 as u32 & 0xff) - 48 ,
8939
- 121 - (IMM8 as u32 & 0xff) - 48 ,
8940
- 122 - (IMM8 as u32 & 0xff) - 48 ,
8941
- 123 - (IMM8 as u32 & 0xff) - 48 ,
8942
- 124 - (IMM8 as u32 & 0xff) - 48 ,
8943
- 125 - (IMM8 as u32 & 0xff) - 48 ,
8944
- 126 - (IMM8 as u32 & 0xff) - 48 ,
8945
- 127 - (IMM8 as u32 & 0xff) - 48 ,
8890
+ mask (IMM8, 0 ),
8891
+ mask (IMM8, 1 ),
8892
+ mask (IMM8, 2 ),
8893
+ mask (IMM8, 3 ),
8894
+ mask (IMM8, 4 ),
8895
+ mask (IMM8, 5 ),
8896
+ mask (IMM8, 6 ),
8897
+ mask (IMM8, 7 ),
8898
+ mask (IMM8, 8 ),
8899
+ mask (IMM8, 9 ),
8900
+ mask (IMM8, 10 ),
8901
+ mask (IMM8, 11 ),
8902
+ mask (IMM8, 12 ),
8903
+ mask (IMM8, 13 ),
8904
+ mask (IMM8, 14 ),
8905
+ mask (IMM8, 15 ),
8906
+ mask (IMM8, 16) ,
8907
+ mask (IMM8, 17) ,
8908
+ mask (IMM8, 18) ,
8909
+ mask (IMM8, 19) ,
8910
+ mask (IMM8, 20) ,
8911
+ mask (IMM8, 21) ,
8912
+ mask (IMM8, 22) ,
8913
+ mask (IMM8, 23) ,
8914
+ mask (IMM8, 24) ,
8915
+ mask (IMM8, 25) ,
8916
+ mask (IMM8, 26) ,
8917
+ mask (IMM8, 27) ,
8918
+ mask (IMM8, 28) ,
8919
+ mask (IMM8, 29) ,
8920
+ mask (IMM8, 30) ,
8921
+ mask (IMM8, 31) ,
8922
+ mask (IMM8, 32) ,
8923
+ mask (IMM8, 33) ,
8924
+ mask (IMM8, 34) ,
8925
+ mask (IMM8, 35) ,
8926
+ mask (IMM8, 36) ,
8927
+ mask (IMM8, 37) ,
8928
+ mask (IMM8, 38) ,
8929
+ mask (IMM8, 39) ,
8930
+ mask (IMM8, 40) ,
8931
+ mask (IMM8, 41) ,
8932
+ mask (IMM8, 42) ,
8933
+ mask (IMM8, 43) ,
8934
+ mask (IMM8, 44) ,
8935
+ mask (IMM8, 45) ,
8936
+ mask (IMM8, 46) ,
8937
+ mask (IMM8, 47) ,
8938
+ mask (IMM8, 48) ,
8939
+ mask (IMM8, 49) ,
8940
+ mask (IMM8, 50) ,
8941
+ mask (IMM8, 51) ,
8942
+ mask (IMM8, 52) ,
8943
+ mask (IMM8, 53) ,
8944
+ mask (IMM8, 54) ,
8945
+ mask (IMM8, 55) ,
8946
+ mask (IMM8, 56) ,
8947
+ mask (IMM8, 57) ,
8948
+ mask (IMM8, 58) ,
8949
+ mask (IMM8, 59) ,
8950
+ mask (IMM8, 60) ,
8951
+ mask (IMM8, 61) ,
8952
+ mask (IMM8, 62) ,
8953
+ mask (IMM8, 63) ,
8946
8954
],
8947
8955
);
8948
8956
transmute(r)
0 commit comments