Skip to content

Commit c1d1a81

Browse files
committed
manually const-ify shuffle arguments
This means we do not rely on promotion any more for these arguments
1 parent 6c4f4e1 commit c1d1a81

File tree

15 files changed

+740
-619
lines changed

15 files changed

+740
-619
lines changed

crates/core_arch/src/aarch64/neon/generated.rs

+45-45
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,8 @@ pub unsafe fn vabdq_f64(a: float64x2_t, b: float64x2_t) -> float64x2_t {
4040
#[target_feature(enable = "neon")]
4141
#[cfg_attr(test, assert_instr(uabdl))]
4242
pub unsafe fn vabdl_high_u8(a: uint8x16_t, b: uint8x16_t) -> uint16x8_t {
43-
let c: uint8x8_t = simd_shuffle8(a, a, [8, 9, 10, 11, 12, 13, 14, 15]);
44-
let d: uint8x8_t = simd_shuffle8(b, b, [8, 9, 10, 11, 12, 13, 14, 15]);
43+
let c: uint8x8_t = simd_shuffle8!(a, a, [8, 9, 10, 11, 12, 13, 14, 15]);
44+
let d: uint8x8_t = simd_shuffle8!(b, b, [8, 9, 10, 11, 12, 13, 14, 15]);
4545
simd_cast(vabd_u8(c, d))
4646
}
4747

@@ -50,8 +50,8 @@ pub unsafe fn vabdl_high_u8(a: uint8x16_t, b: uint8x16_t) -> uint16x8_t {
5050
#[target_feature(enable = "neon")]
5151
#[cfg_attr(test, assert_instr(uabdl))]
5252
pub unsafe fn vabdl_high_u16(a: uint16x8_t, b: uint16x8_t) -> uint32x4_t {
53-
let c: uint16x4_t = simd_shuffle4(a, a, [4, 5, 6, 7]);
54-
let d: uint16x4_t = simd_shuffle4(b, b, [4, 5, 6, 7]);
53+
let c: uint16x4_t = simd_shuffle4!(a, a, [4, 5, 6, 7]);
54+
let d: uint16x4_t = simd_shuffle4!(b, b, [4, 5, 6, 7]);
5555
simd_cast(vabd_u16(c, d))
5656
}
5757

@@ -60,8 +60,8 @@ pub unsafe fn vabdl_high_u16(a: uint16x8_t, b: uint16x8_t) -> uint32x4_t {
6060
#[target_feature(enable = "neon")]
6161
#[cfg_attr(test, assert_instr(uabdl))]
6262
pub unsafe fn vabdl_high_u32(a: uint32x4_t, b: uint32x4_t) -> uint64x2_t {
63-
let c: uint32x2_t = simd_shuffle2(a, a, [2, 3]);
64-
let d: uint32x2_t = simd_shuffle2(b, b, [2, 3]);
63+
let c: uint32x2_t = simd_shuffle2!(a, a, [2, 3]);
64+
let d: uint32x2_t = simd_shuffle2!(b, b, [2, 3]);
6565
simd_cast(vabd_u32(c, d))
6666
}
6767

@@ -70,8 +70,8 @@ pub unsafe fn vabdl_high_u32(a: uint32x4_t, b: uint32x4_t) -> uint64x2_t {
7070
#[target_feature(enable = "neon")]
7171
#[cfg_attr(test, assert_instr(sabdl))]
7272
pub unsafe fn vabdl_high_s8(a: int8x16_t, b: int8x16_t) -> int16x8_t {
73-
let c: int8x8_t = simd_shuffle8(a, a, [8, 9, 10, 11, 12, 13, 14, 15]);
74-
let d: int8x8_t = simd_shuffle8(b, b, [8, 9, 10, 11, 12, 13, 14, 15]);
73+
let c: int8x8_t = simd_shuffle8!(a, a, [8, 9, 10, 11, 12, 13, 14, 15]);
74+
let d: int8x8_t = simd_shuffle8!(b, b, [8, 9, 10, 11, 12, 13, 14, 15]);
7575
let e: uint8x8_t = simd_cast(vabd_s8(c, d));
7676
simd_cast(e)
7777
}
@@ -81,8 +81,8 @@ pub unsafe fn vabdl_high_s8(a: int8x16_t, b: int8x16_t) -> int16x8_t {
8181
#[target_feature(enable = "neon")]
8282
#[cfg_attr(test, assert_instr(sabdl))]
8383
pub unsafe fn vabdl_high_s16(a: int16x8_t, b: int16x8_t) -> int32x4_t {
84-
let c: int16x4_t = simd_shuffle4(a, a, [4, 5, 6, 7]);
85-
let d: int16x4_t = simd_shuffle4(b, b, [4, 5, 6, 7]);
84+
let c: int16x4_t = simd_shuffle4!(a, a, [4, 5, 6, 7]);
85+
let d: int16x4_t = simd_shuffle4!(b, b, [4, 5, 6, 7]);
8686
let e: uint16x4_t = simd_cast(vabd_s16(c, d));
8787
simd_cast(e)
8888
}
@@ -92,8 +92,8 @@ pub unsafe fn vabdl_high_s16(a: int16x8_t, b: int16x8_t) -> int32x4_t {
9292
#[target_feature(enable = "neon")]
9393
#[cfg_attr(test, assert_instr(sabdl))]
9494
pub unsafe fn vabdl_high_s32(a: int32x4_t, b: int32x4_t) -> int64x2_t {
95-
let c: int32x2_t = simd_shuffle2(a, a, [2, 3]);
96-
let d: int32x2_t = simd_shuffle2(b, b, [2, 3]);
95+
let c: int32x2_t = simd_shuffle2!(a, a, [2, 3]);
96+
let d: int32x2_t = simd_shuffle2!(b, b, [2, 3]);
9797
let e: uint32x2_t = simd_cast(vabd_s32(c, d));
9898
simd_cast(e)
9999
}
@@ -2077,7 +2077,7 @@ pub unsafe fn vcvt_f64_f32(a: float32x2_t) -> float64x2_t {
20772077
#[target_feature(enable = "neon")]
20782078
#[cfg_attr(test, assert_instr(fcvtl))]
20792079
pub unsafe fn vcvt_high_f64_f32(a: float32x4_t) -> float64x2_t {
2080-
let b: float32x2_t = simd_shuffle2(a, a, [2, 3]);
2080+
let b: float32x2_t = simd_shuffle2!(a, a, [2, 3]);
20812081
simd_cast(b)
20822082
}
20832083

@@ -2094,7 +2094,7 @@ pub unsafe fn vcvt_f32_f64(a: float64x2_t) -> float32x2_t {
20942094
#[target_feature(enable = "neon")]
20952095
#[cfg_attr(test, assert_instr(fcvtn))]
20962096
pub unsafe fn vcvt_high_f32_f64(a: float32x2_t, b: float64x2_t) -> float32x4_t {
2097-
simd_shuffle4(a, simd_cast(b), [0, 1, 2, 3])
2097+
simd_shuffle4!(a, simd_cast(b), [0, 1, 2, 3])
20982098
}
20992099

21002100
/// Floating-point convert to lower precision narrow, rounding to odd
@@ -2115,7 +2115,7 @@ pub unsafe fn vcvtx_f32_f64(a: float64x2_t) -> float32x2_t {
21152115
#[target_feature(enable = "neon")]
21162116
#[cfg_attr(test, assert_instr(fcvtxn))]
21172117
pub unsafe fn vcvtx_high_f32_f64(a: float32x2_t, b: float64x2_t) -> float32x4_t {
2118-
simd_shuffle4(a, vcvtx_f32_f64(b), [0, 1, 2, 3])
2118+
simd_shuffle4!(a, vcvtx_f32_f64(b), [0, 1, 2, 3])
21192119
}
21202120

21212121
/// Fixed-point convert to floating-point
@@ -5167,7 +5167,7 @@ pub unsafe fn vaddlvq_u32(a: uint32x4_t) -> u64 {
51675167
#[target_feature(enable = "neon")]
51685168
#[cfg_attr(test, assert_instr(ssubw))]
51695169
pub unsafe fn vsubw_high_s8(a: int16x8_t, b: int8x16_t) -> int16x8_t {
5170-
let c: int8x8_t = simd_shuffle8(b, b, [8, 9, 10, 11, 12, 13, 14, 15]);
5170+
let c: int8x8_t = simd_shuffle8!(b, b, [8, 9, 10, 11, 12, 13, 14, 15]);
51715171
simd_sub(a, simd_cast(c))
51725172
}
51735173

@@ -5176,7 +5176,7 @@ pub unsafe fn vsubw_high_s8(a: int16x8_t, b: int8x16_t) -> int16x8_t {
51765176
#[target_feature(enable = "neon")]
51775177
#[cfg_attr(test, assert_instr(ssubw))]
51785178
pub unsafe fn vsubw_high_s16(a: int32x4_t, b: int16x8_t) -> int32x4_t {
5179-
let c: int16x4_t = simd_shuffle4(b, b, [4, 5, 6, 7]);
5179+
let c: int16x4_t = simd_shuffle4!(b, b, [4, 5, 6, 7]);
51805180
simd_sub(a, simd_cast(c))
51815181
}
51825182

@@ -5185,7 +5185,7 @@ pub unsafe fn vsubw_high_s16(a: int32x4_t, b: int16x8_t) -> int32x4_t {
51855185
#[target_feature(enable = "neon")]
51865186
#[cfg_attr(test, assert_instr(ssubw))]
51875187
pub unsafe fn vsubw_high_s32(a: int64x2_t, b: int32x4_t) -> int64x2_t {
5188-
let c: int32x2_t = simd_shuffle2(b, b, [2, 3]);
5188+
let c: int32x2_t = simd_shuffle2!(b, b, [2, 3]);
51895189
simd_sub(a, simd_cast(c))
51905190
}
51915191

@@ -5194,7 +5194,7 @@ pub unsafe fn vsubw_high_s32(a: int64x2_t, b: int32x4_t) -> int64x2_t {
51945194
#[target_feature(enable = "neon")]
51955195
#[cfg_attr(test, assert_instr(usubw))]
51965196
pub unsafe fn vsubw_high_u8(a: uint16x8_t, b: uint8x16_t) -> uint16x8_t {
5197-
let c: uint8x8_t = simd_shuffle8(b, b, [8, 9, 10, 11, 12, 13, 14, 15]);
5197+
let c: uint8x8_t = simd_shuffle8!(b, b, [8, 9, 10, 11, 12, 13, 14, 15]);
51985198
simd_sub(a, simd_cast(c))
51995199
}
52005200

@@ -5203,7 +5203,7 @@ pub unsafe fn vsubw_high_u8(a: uint16x8_t, b: uint8x16_t) -> uint16x8_t {
52035203
#[target_feature(enable = "neon")]
52045204
#[cfg_attr(test, assert_instr(usubw))]
52055205
pub unsafe fn vsubw_high_u16(a: uint32x4_t, b: uint16x8_t) -> uint32x4_t {
5206-
let c: uint16x4_t = simd_shuffle4(b, b, [4, 5, 6, 7]);
5206+
let c: uint16x4_t = simd_shuffle4!(b, b, [4, 5, 6, 7]);
52075207
simd_sub(a, simd_cast(c))
52085208
}
52095209

@@ -5212,7 +5212,7 @@ pub unsafe fn vsubw_high_u16(a: uint32x4_t, b: uint16x8_t) -> uint32x4_t {
52125212
#[target_feature(enable = "neon")]
52135213
#[cfg_attr(test, assert_instr(usubw))]
52145214
pub unsafe fn vsubw_high_u32(a: uint64x2_t, b: uint32x4_t) -> uint64x2_t {
5215-
let c: uint32x2_t = simd_shuffle2(b, b, [2, 3]);
5215+
let c: uint32x2_t = simd_shuffle2!(b, b, [2, 3]);
52165216
simd_sub(a, simd_cast(c))
52175217
}
52185218

@@ -5221,9 +5221,9 @@ pub unsafe fn vsubw_high_u32(a: uint64x2_t, b: uint32x4_t) -> uint64x2_t {
52215221
#[target_feature(enable = "neon")]
52225222
#[cfg_attr(test, assert_instr(ssubl))]
52235223
pub unsafe fn vsubl_high_s8(a: int8x16_t, b: int8x16_t) -> int16x8_t {
5224-
let c: int8x8_t = simd_shuffle8(a, a, [8, 9, 10, 11, 12, 13, 14, 15]);
5224+
let c: int8x8_t = simd_shuffle8!(a, a, [8, 9, 10, 11, 12, 13, 14, 15]);
52255225
let d: int16x8_t = simd_cast(c);
5226-
let e: int8x8_t = simd_shuffle8(b, b, [8, 9, 10, 11, 12, 13, 14, 15]);
5226+
let e: int8x8_t = simd_shuffle8!(b, b, [8, 9, 10, 11, 12, 13, 14, 15]);
52275227
let f: int16x8_t = simd_cast(e);
52285228
simd_sub(d, f)
52295229
}
@@ -5233,9 +5233,9 @@ pub unsafe fn vsubl_high_s8(a: int8x16_t, b: int8x16_t) -> int16x8_t {
52335233
#[target_feature(enable = "neon")]
52345234
#[cfg_attr(test, assert_instr(ssubl))]
52355235
pub unsafe fn vsubl_high_s16(a: int16x8_t, b: int16x8_t) -> int32x4_t {
5236-
let c: int16x4_t = simd_shuffle4(a, a, [4, 5, 6, 7]);
5236+
let c: int16x4_t = simd_shuffle4!(a, a, [4, 5, 6, 7]);
52375237
let d: int32x4_t = simd_cast(c);
5238-
let e: int16x4_t = simd_shuffle4(b, b, [4, 5, 6, 7]);
5238+
let e: int16x4_t = simd_shuffle4!(b, b, [4, 5, 6, 7]);
52395239
let f: int32x4_t = simd_cast(e);
52405240
simd_sub(d, f)
52415241
}
@@ -5245,9 +5245,9 @@ pub unsafe fn vsubl_high_s16(a: int16x8_t, b: int16x8_t) -> int32x4_t {
52455245
#[target_feature(enable = "neon")]
52465246
#[cfg_attr(test, assert_instr(ssubl))]
52475247
pub unsafe fn vsubl_high_s32(a: int32x4_t, b: int32x4_t) -> int64x2_t {
5248-
let c: int32x2_t = simd_shuffle2(a, a, [2, 3]);
5248+
let c: int32x2_t = simd_shuffle2!(a, a, [2, 3]);
52495249
let d: int64x2_t = simd_cast(c);
5250-
let e: int32x2_t = simd_shuffle2(b, b, [2, 3]);
5250+
let e: int32x2_t = simd_shuffle2!(b, b, [2, 3]);
52515251
let f: int64x2_t = simd_cast(e);
52525252
simd_sub(d, f)
52535253
}
@@ -5257,9 +5257,9 @@ pub unsafe fn vsubl_high_s32(a: int32x4_t, b: int32x4_t) -> int64x2_t {
52575257
#[target_feature(enable = "neon")]
52585258
#[cfg_attr(test, assert_instr(usubl))]
52595259
pub unsafe fn vsubl_high_u8(a: uint8x16_t, b: uint8x16_t) -> uint16x8_t {
5260-
let c: uint8x8_t = simd_shuffle8(a, a, [8, 9, 10, 11, 12, 13, 14, 15]);
5260+
let c: uint8x8_t = simd_shuffle8!(a, a, [8, 9, 10, 11, 12, 13, 14, 15]);
52615261
let d: uint16x8_t = simd_cast(c);
5262-
let e: uint8x8_t = simd_shuffle8(b, b, [8, 9, 10, 11, 12, 13, 14, 15]);
5262+
let e: uint8x8_t = simd_shuffle8!(b, b, [8, 9, 10, 11, 12, 13, 14, 15]);
52635263
let f: uint16x8_t = simd_cast(e);
52645264
simd_sub(d, f)
52655265
}
@@ -5269,9 +5269,9 @@ pub unsafe fn vsubl_high_u8(a: uint8x16_t, b: uint8x16_t) -> uint16x8_t {
52695269
#[target_feature(enable = "neon")]
52705270
#[cfg_attr(test, assert_instr(usubl))]
52715271
pub unsafe fn vsubl_high_u16(a: uint16x8_t, b: uint16x8_t) -> uint32x4_t {
5272-
let c: uint16x4_t = simd_shuffle4(a, a, [4, 5, 6, 7]);
5272+
let c: uint16x4_t = simd_shuffle4!(a, a, [4, 5, 6, 7]);
52735273
let d: uint32x4_t = simd_cast(c);
5274-
let e: uint16x4_t = simd_shuffle4(b, b, [4, 5, 6, 7]);
5274+
let e: uint16x4_t = simd_shuffle4!(b, b, [4, 5, 6, 7]);
52755275
let f: uint32x4_t = simd_cast(e);
52765276
simd_sub(d, f)
52775277
}
@@ -5281,9 +5281,9 @@ pub unsafe fn vsubl_high_u16(a: uint16x8_t, b: uint16x8_t) -> uint32x4_t {
52815281
#[target_feature(enable = "neon")]
52825282
#[cfg_attr(test, assert_instr(usubl))]
52835283
pub unsafe fn vsubl_high_u32(a: uint32x4_t, b: uint32x4_t) -> uint64x2_t {
5284-
let c: uint32x2_t = simd_shuffle2(a, a, [2, 3]);
5284+
let c: uint32x2_t = simd_shuffle2!(a, a, [2, 3]);
52855285
let d: uint64x2_t = simd_cast(c);
5286-
let e: uint32x2_t = simd_shuffle2(b, b, [2, 3]);
5286+
let e: uint32x2_t = simd_shuffle2!(b, b, [2, 3]);
52875287
let f: uint64x2_t = simd_cast(e);
52885288
simd_sub(d, f)
52895289
}
@@ -8805,8 +8805,8 @@ pub unsafe fn vuzp2q_f64(a: float64x2_t, b: float64x2_t) -> float64x2_t {
88058805
#[target_feature(enable = "neon")]
88068806
#[cfg_attr(test, assert_instr(uabal))]
88078807
pub unsafe fn vabal_high_u8(a: uint16x8_t, b: uint8x16_t, c: uint8x16_t) -> uint16x8_t {
8808-
let d: uint8x8_t = simd_shuffle8(b, b, [8, 9, 10, 11, 12, 13, 14, 15]);
8809-
let e: uint8x8_t = simd_shuffle8(c, c, [8, 9, 10, 11, 12, 13, 14, 15]);
8808+
let d: uint8x8_t = simd_shuffle8!(b, b, [8, 9, 10, 11, 12, 13, 14, 15]);
8809+
let e: uint8x8_t = simd_shuffle8!(c, c, [8, 9, 10, 11, 12, 13, 14, 15]);
88108810
let f: uint8x8_t = vabd_u8(d, e);
88118811
simd_add(a, simd_cast(f))
88128812
}
@@ -8816,8 +8816,8 @@ pub unsafe fn vabal_high_u8(a: uint16x8_t, b: uint8x16_t, c: uint8x16_t) -> uint
88168816
#[target_feature(enable = "neon")]
88178817
#[cfg_attr(test, assert_instr(uabal))]
88188818
pub unsafe fn vabal_high_u16(a: uint32x4_t, b: uint16x8_t, c: uint16x8_t) -> uint32x4_t {
8819-
let d: uint16x4_t = simd_shuffle4(b, b, [4, 5, 6, 7]);
8820-
let e: uint16x4_t = simd_shuffle4(c, c, [4, 5, 6, 7]);
8819+
let d: uint16x4_t = simd_shuffle4!(b, b, [4, 5, 6, 7]);
8820+
let e: uint16x4_t = simd_shuffle4!(c, c, [4, 5, 6, 7]);
88218821
let f: uint16x4_t = vabd_u16(d, e);
88228822
simd_add(a, simd_cast(f))
88238823
}
@@ -8827,8 +8827,8 @@ pub unsafe fn vabal_high_u16(a: uint32x4_t, b: uint16x8_t, c: uint16x8_t) -> uin
88278827
#[target_feature(enable = "neon")]
88288828
#[cfg_attr(test, assert_instr(uabal))]
88298829
pub unsafe fn vabal_high_u32(a: uint64x2_t, b: uint32x4_t, c: uint32x4_t) -> uint64x2_t {
8830-
let d: uint32x2_t = simd_shuffle2(b, b, [2, 3]);
8831-
let e: uint32x2_t = simd_shuffle2(c, c, [2, 3]);
8830+
let d: uint32x2_t = simd_shuffle2!(b, b, [2, 3]);
8831+
let e: uint32x2_t = simd_shuffle2!(c, c, [2, 3]);
88328832
let f: uint32x2_t = vabd_u32(d, e);
88338833
simd_add(a, simd_cast(f))
88348834
}
@@ -8838,8 +8838,8 @@ pub unsafe fn vabal_high_u32(a: uint64x2_t, b: uint32x4_t, c: uint32x4_t) -> uin
88388838
#[target_feature(enable = "neon")]
88398839
#[cfg_attr(test, assert_instr(sabal))]
88408840
pub unsafe fn vabal_high_s8(a: int16x8_t, b: int8x16_t, c: int8x16_t) -> int16x8_t {
8841-
let d: int8x8_t = simd_shuffle8(b, b, [8, 9, 10, 11, 12, 13, 14, 15]);
8842-
let e: int8x8_t = simd_shuffle8(c, c, [8, 9, 10, 11, 12, 13, 14, 15]);
8841+
let d: int8x8_t = simd_shuffle8!(b, b, [8, 9, 10, 11, 12, 13, 14, 15]);
8842+
let e: int8x8_t = simd_shuffle8!(c, c, [8, 9, 10, 11, 12, 13, 14, 15]);
88438843
let f: int8x8_t = vabd_s8(d, e);
88448844
let f: uint8x8_t = simd_cast(f);
88458845
simd_add(a, simd_cast(f))
@@ -8850,8 +8850,8 @@ pub unsafe fn vabal_high_s8(a: int16x8_t, b: int8x16_t, c: int8x16_t) -> int16x8
88508850
#[target_feature(enable = "neon")]
88518851
#[cfg_attr(test, assert_instr(sabal))]
88528852
pub unsafe fn vabal_high_s16(a: int32x4_t, b: int16x8_t, c: int16x8_t) -> int32x4_t {
8853-
let d: int16x4_t = simd_shuffle4(b, b, [4, 5, 6, 7]);
8854-
let e: int16x4_t = simd_shuffle4(c, c, [4, 5, 6, 7]);
8853+
let d: int16x4_t = simd_shuffle4!(b, b, [4, 5, 6, 7]);
8854+
let e: int16x4_t = simd_shuffle4!(c, c, [4, 5, 6, 7]);
88558855
let f: int16x4_t = vabd_s16(d, e);
88568856
let f: uint16x4_t = simd_cast(f);
88578857
simd_add(a, simd_cast(f))
@@ -8862,8 +8862,8 @@ pub unsafe fn vabal_high_s16(a: int32x4_t, b: int16x8_t, c: int16x8_t) -> int32x
88628862
#[target_feature(enable = "neon")]
88638863
#[cfg_attr(test, assert_instr(sabal))]
88648864
pub unsafe fn vabal_high_s32(a: int64x2_t, b: int32x4_t, c: int32x4_t) -> int64x2_t {
8865-
let d: int32x2_t = simd_shuffle2(b, b, [2, 3]);
8866-
let e: int32x2_t = simd_shuffle2(c, c, [2, 3]);
8865+
let d: int32x2_t = simd_shuffle2!(b, b, [2, 3]);
8866+
let e: int32x2_t = simd_shuffle2!(c, c, [2, 3]);
88678867
let f: int32x2_t = vabd_s32(d, e);
88688868
let f: uint32x2_t = simd_cast(f);
88698869
simd_add(a, simd_cast(f))

0 commit comments

Comments
 (0)