@@ -69,8 +69,10 @@ use crate::{core_arch::arm::dsp::int16x2_t, mem::transmute};
69
69
70
70
types ! {
71
71
/// ARM-specific 32-bit wide vector of four packed `i8`.
72
+ #[ unstable( feature = "stdarch_arm_dsp" , issue = "117237" ) ]
72
73
pub struct int8x4_t( i8 , i8 , i8 , i8 ) ;
73
74
/// ARM-specific 32-bit wide vector of four packed `u8`.
75
+ #[ unstable( feature = "stdarch_arm_dsp" , issue = "117237" ) ]
74
76
pub struct uint8x4_t( u8 , u8 , u8 , u8 ) ;
75
77
}
76
78
@@ -161,6 +163,7 @@ extern "unadjusted" {
161
163
/// res\[3\] = a\[3\] + b\[3\]
162
164
#[ inline]
163
165
#[ cfg_attr( test, assert_instr( qadd8) ) ]
166
+ #[ unstable( feature = "stdarch_arm_dsp" , issue = "117237" ) ]
164
167
pub unsafe fn __qadd8 ( a : int8x4_t , b : int8x4_t ) -> int8x4_t {
165
168
dsp_call ! ( arm_qadd8, a, b)
166
169
}
@@ -175,6 +178,7 @@ pub unsafe fn __qadd8(a: int8x4_t, b: int8x4_t) -> int8x4_t {
175
178
/// res\[3\] = a\[3\] - b\[3\]
176
179
#[ inline]
177
180
#[ cfg_attr( test, assert_instr( qsub8) ) ]
181
+ #[ unstable( feature = "stdarch_arm_dsp" , issue = "117237" ) ]
178
182
pub unsafe fn __qsub8 ( a : int8x4_t , b : int8x4_t ) -> int8x4_t {
179
183
dsp_call ! ( arm_qsub8, a, b)
180
184
}
@@ -187,6 +191,7 @@ pub unsafe fn __qsub8(a: int8x4_t, b: int8x4_t) -> int8x4_t {
187
191
/// res\[1\] = a\[1\] - b\[1\]
188
192
#[ inline]
189
193
#[ cfg_attr( test, assert_instr( qsub16) ) ]
194
+ #[ unstable( feature = "stdarch_arm_dsp" , issue = "117237" ) ]
190
195
pub unsafe fn __qsub16 ( a : int16x2_t , b : int16x2_t ) -> int16x2_t {
191
196
dsp_call ! ( arm_qsub16, a, b)
192
197
}
@@ -199,6 +204,7 @@ pub unsafe fn __qsub16(a: int16x2_t, b: int16x2_t) -> int16x2_t {
199
204
/// res\[1\] = a\[1\] + b\[1\]
200
205
#[ inline]
201
206
#[ cfg_attr( test, assert_instr( qadd16) ) ]
207
+ #[ unstable( feature = "stdarch_arm_dsp" , issue = "117237" ) ]
202
208
pub unsafe fn __qadd16 ( a : int16x2_t , b : int16x2_t ) -> int16x2_t {
203
209
dsp_call ! ( arm_qadd16, a, b)
204
210
}
@@ -209,6 +215,7 @@ pub unsafe fn __qadd16(a: int16x2_t, b: int16x2_t) -> int16x2_t {
209
215
/// res\[1\] = a\[1\] + b\[0\]
210
216
#[ inline]
211
217
#[ cfg_attr( test, assert_instr( qasx) ) ]
218
+ #[ unstable( feature = "stdarch_arm_dsp" , issue = "117237" ) ]
212
219
pub unsafe fn __qasx ( a : int16x2_t , b : int16x2_t ) -> int16x2_t {
213
220
dsp_call ! ( arm_qasx, a, b)
214
221
}
@@ -219,6 +226,7 @@ pub unsafe fn __qasx(a: int16x2_t, b: int16x2_t) -> int16x2_t {
219
226
/// res\[1\] = a\[1\] - b\[0\]
220
227
#[ inline]
221
228
#[ cfg_attr( test, assert_instr( qsax) ) ]
229
+ #[ unstable( feature = "stdarch_arm_dsp" , issue = "117237" ) ]
222
230
pub unsafe fn __qsax ( a : int16x2_t , b : int16x2_t ) -> int16x2_t {
223
231
dsp_call ! ( arm_qsax, a, b)
224
232
}
@@ -231,6 +239,7 @@ pub unsafe fn __qsax(a: int16x2_t, b: int16x2_t) -> int16x2_t {
231
239
/// and the GE bits of the APSR are set.
232
240
#[ inline]
233
241
#[ cfg_attr( test, assert_instr( sadd16) ) ]
242
+ #[ unstable( feature = "stdarch_arm_dsp" , issue = "117237" ) ]
234
243
pub unsafe fn __sadd16 ( a : int16x2_t , b : int16x2_t ) -> int16x2_t {
235
244
dsp_call ! ( arm_sadd16, a, b)
236
245
}
@@ -245,6 +254,7 @@ pub unsafe fn __sadd16(a: int16x2_t, b: int16x2_t) -> int16x2_t {
245
254
/// and the GE bits of the APSR are set.
246
255
#[ inline]
247
256
#[ cfg_attr( test, assert_instr( sadd8) ) ]
257
+ #[ unstable( feature = "stdarch_arm_dsp" , issue = "117237" ) ]
248
258
pub unsafe fn __sadd8 ( a : int8x4_t , b : int8x4_t ) -> int8x4_t {
249
259
dsp_call ! ( arm_sadd8, a, b)
250
260
}
@@ -256,6 +266,7 @@ pub unsafe fn __sadd8(a: int8x4_t, b: int8x4_t) -> int8x4_t {
256
266
/// res = a\[0\] * b\[0\] + a\[1\] * b\[1\] + c
257
267
#[ inline]
258
268
#[ cfg_attr( test, assert_instr( smlad) ) ]
269
+ #[ unstable( feature = "stdarch_arm_dsp" , issue = "117237" ) ]
259
270
pub unsafe fn __smlad ( a : int16x2_t , b : int16x2_t , c : i32 ) -> i32 {
260
271
arm_smlad ( transmute ( a) , transmute ( b) , c)
261
272
}
@@ -267,6 +278,7 @@ pub unsafe fn __smlad(a: int16x2_t, b: int16x2_t, c: i32) -> i32 {
267
278
/// res = a\[0\] * b\[0\] - a\[1\] * b\[1\] + c
268
279
#[ inline]
269
280
#[ cfg_attr( test, assert_instr( smlsd) ) ]
281
+ #[ unstable( feature = "stdarch_arm_dsp" , issue = "117237" ) ]
270
282
pub unsafe fn __smlsd ( a : int16x2_t , b : int16x2_t , c : i32 ) -> i32 {
271
283
arm_smlsd ( transmute ( a) , transmute ( b) , c)
272
284
}
@@ -279,6 +291,7 @@ pub unsafe fn __smlsd(a: int16x2_t, b: int16x2_t, c: i32) -> i32 {
279
291
/// and the GE bits of the APSR are set.
280
292
#[ inline]
281
293
#[ cfg_attr( test, assert_instr( sasx) ) ]
294
+ #[ unstable( feature = "stdarch_arm_dsp" , issue = "117237" ) ]
282
295
pub unsafe fn __sasx ( a : int16x2_t , b : int16x2_t ) -> int16x2_t {
283
296
dsp_call ! ( arm_sasx, a, b)
284
297
}
@@ -295,6 +308,7 @@ pub unsafe fn __sasx(a: int16x2_t, b: int16x2_t) -> int16x2_t {
295
308
/// where GE are bits of APSR
296
309
#[ inline]
297
310
#[ cfg_attr( test, assert_instr( sel) ) ]
311
+ #[ unstable( feature = "stdarch_arm_dsp" , issue = "117237" ) ]
298
312
pub unsafe fn __sel ( a : int8x4_t , b : int8x4_t ) -> int8x4_t {
299
313
dsp_call ! ( arm_sel, a, b)
300
314
}
@@ -309,6 +323,7 @@ pub unsafe fn __sel(a: int8x4_t, b: int8x4_t) -> int8x4_t {
309
323
/// res\[3\] = (a\[3\] + b\[3\]) / 2
310
324
#[ inline]
311
325
#[ cfg_attr( test, assert_instr( shadd8) ) ]
326
+ #[ unstable( feature = "stdarch_arm_dsp" , issue = "117237" ) ]
312
327
pub unsafe fn __shadd8 ( a : int8x4_t , b : int8x4_t ) -> int8x4_t {
313
328
dsp_call ! ( arm_shadd8, a, b)
314
329
}
@@ -321,6 +336,7 @@ pub unsafe fn __shadd8(a: int8x4_t, b: int8x4_t) -> int8x4_t {
321
336
/// res\[1\] = (a\[1\] + b\[1\]) / 2
322
337
#[ inline]
323
338
#[ cfg_attr( test, assert_instr( shadd16) ) ]
339
+ #[ unstable( feature = "stdarch_arm_dsp" , issue = "117237" ) ]
324
340
pub unsafe fn __shadd16 ( a : int16x2_t , b : int16x2_t ) -> int16x2_t {
325
341
dsp_call ! ( arm_shadd16, a, b)
326
342
}
@@ -335,6 +351,7 @@ pub unsafe fn __shadd16(a: int16x2_t, b: int16x2_t) -> int16x2_t {
335
351
/// res\[3\] = (a\[3\] - b\[3\]) / 2
336
352
#[ inline]
337
353
#[ cfg_attr( test, assert_instr( shsub8) ) ]
354
+ #[ unstable( feature = "stdarch_arm_dsp" , issue = "117237" ) ]
338
355
pub unsafe fn __shsub8 ( a : int8x4_t , b : int8x4_t ) -> int8x4_t {
339
356
dsp_call ! ( arm_shsub8, a, b)
340
357
}
@@ -352,6 +369,7 @@ pub unsafe fn __shsub8(a: int8x4_t, b: int8x4_t) -> int8x4_t {
352
369
/// The GE bits of the APSR are set.
353
370
#[ inline]
354
371
#[ cfg_attr( test, assert_instr( usub8) ) ]
372
+ #[ unstable( feature = "stdarch_arm_dsp" , issue = "117237" ) ]
355
373
pub unsafe fn __usub8 ( a : uint8x4_t , b : uint8x4_t ) -> uint8x4_t {
356
374
dsp_call ! ( arm_usub8, a, b)
357
375
}
@@ -369,6 +387,7 @@ pub unsafe fn __usub8(a: uint8x4_t, b: uint8x4_t) -> uint8x4_t {
369
387
/// The GE bits of the APSR are set.
370
388
#[ inline]
371
389
#[ cfg_attr( test, assert_instr( ssub8) ) ]
390
+ #[ unstable( feature = "stdarch_arm_dsp" , issue = "117237" ) ]
372
391
pub unsafe fn __ssub8 ( a : int8x4_t , b : int8x4_t ) -> int8x4_t {
373
392
dsp_call ! ( arm_ssub8, a, b)
374
393
}
@@ -381,6 +400,7 @@ pub unsafe fn __ssub8(a: int8x4_t, b: int8x4_t) -> int8x4_t {
381
400
/// res\[1\] = (a\[1\] - b\[1\]) / 2
382
401
#[ inline]
383
402
#[ cfg_attr( test, assert_instr( shsub16) ) ]
403
+ #[ unstable( feature = "stdarch_arm_dsp" , issue = "117237" ) ]
384
404
pub unsafe fn __shsub16 ( a : int16x2_t , b : int16x2_t ) -> int16x2_t {
385
405
dsp_call ! ( arm_shsub16, a, b)
386
406
}
@@ -394,6 +414,7 @@ pub unsafe fn __shsub16(a: int16x2_t, b: int16x2_t) -> int16x2_t {
394
414
/// and sets the Q flag if overflow occurs on the addition.
395
415
#[ inline]
396
416
#[ cfg_attr( test, assert_instr( smuad) ) ]
417
+ #[ unstable( feature = "stdarch_arm_dsp" , issue = "117237" ) ]
397
418
pub unsafe fn __smuad ( a : int16x2_t , b : int16x2_t ) -> i32 {
398
419
arm_smuad ( transmute ( a) , transmute ( b) )
399
420
}
@@ -407,6 +428,7 @@ pub unsafe fn __smuad(a: int16x2_t, b: int16x2_t) -> i32 {
407
428
/// and sets the Q flag if overflow occurs on the addition.
408
429
#[ inline]
409
430
#[ cfg_attr( test, assert_instr( smuadx) ) ]
431
+ #[ unstable( feature = "stdarch_arm_dsp" , issue = "117237" ) ]
410
432
pub unsafe fn __smuadx ( a : int16x2_t , b : int16x2_t ) -> i32 {
411
433
arm_smuadx ( transmute ( a) , transmute ( b) )
412
434
}
@@ -420,6 +442,7 @@ pub unsafe fn __smuadx(a: int16x2_t, b: int16x2_t) -> i32 {
420
442
/// and sets the Q flag if overflow occurs on the addition.
421
443
#[ inline]
422
444
#[ cfg_attr( test, assert_instr( smusd) ) ]
445
+ #[ unstable( feature = "stdarch_arm_dsp" , issue = "117237" ) ]
423
446
pub unsafe fn __smusd ( a : int16x2_t , b : int16x2_t ) -> i32 {
424
447
arm_smusd ( transmute ( a) , transmute ( b) )
425
448
}
@@ -433,6 +456,7 @@ pub unsafe fn __smusd(a: int16x2_t, b: int16x2_t) -> i32 {
433
456
/// and sets the Q flag if overflow occurs on the addition.
434
457
#[ inline]
435
458
#[ cfg_attr( test, assert_instr( smusdx) ) ]
459
+ #[ unstable( feature = "stdarch_arm_dsp" , issue = "117237" ) ]
436
460
pub unsafe fn __smusdx ( a : int16x2_t , b : int16x2_t ) -> i32 {
437
461
arm_smusdx ( transmute ( a) , transmute ( b) )
438
462
}
@@ -445,6 +469,7 @@ pub unsafe fn __smusdx(a: int16x2_t, b: int16x2_t) -> i32 {
445
469
/// (a\[2\] - b\[2\]) + (a\[3\] - b\[3\])
446
470
#[ inline]
447
471
#[ cfg_attr( test, assert_instr( usad8) ) ]
472
+ #[ unstable( feature = "stdarch_arm_dsp" , issue = "117237" ) ]
448
473
pub unsafe fn __usad8 ( a : int8x4_t , b : int8x4_t ) -> u32 {
449
474
arm_usad8 ( transmute ( a) , transmute ( b) )
450
475
}
@@ -457,6 +482,7 @@ pub unsafe fn __usad8(a: int8x4_t, b: int8x4_t) -> u32 {
457
482
/// (a\[2\] - b\[2\]) + (a\[3\] - b\[3\]) + c
458
483
#[ inline]
459
484
#[ cfg_attr( test, assert_instr( usad8) ) ]
485
+ #[ unstable( feature = "stdarch_arm_dsp" , issue = "117237" ) ]
460
486
pub unsafe fn __usada8 ( a : int8x4_t , b : int8x4_t , c : u32 ) -> u32 {
461
487
__usad8 ( a, b) + c
462
488
}
0 commit comments