Add unsigned saturating add/sub intrinsics for aarch64 · rust-lang/rust@70a6abf (original) (raw)
`@@ -180,6 +180,24 @@ unsafe fn test_vpadd_u8() {
`
180
180
`assert_eq!(r, e);
`
181
181
`}
`
182
182
``
``
183
`+
#[cfg(target_arch = "aarch64")]
`
``
184
`+
unsafe fn test_vqsub_u8() {
`
``
185
`+
let a = u8x8::from([1, 2, 3, 4, 5, 6, 7, 0xff]);
`
``
186
`+
let b = u8x8::from([30, 1, 1, 1, 34, 0xff, 36, 37]);
`
``
187
`+
let r: u8x8 = transmute(vqsub_u8(transmute(a), transmute(b)));
`
``
188
`+
let e = u8x8::from([0, 1, 2, 3, 0, 0, 0, 218]);
`
``
189
`+
assert_eq!(r, e);
`
``
190
`+
}
`
``
191
+
``
192
`+
#[cfg(target_arch = "aarch64")]
`
``
193
`+
unsafe fn test_vqadd_u8() {
`
``
194
`+
let a = u8x8::from([1, 2, 3, 4, 5, 6, 7, 0xff]);
`
``
195
`+
let b = u8x8::from([30, 1, 1, 1, 34, 0xff, 36, 37]);
`
``
196
`+
let r: u8x8 = transmute(vqadd_u8(transmute(a), transmute(b)));
`
``
197
`+
let e = u8x8::from([31, 3, 4, 5, 39, 0xff, 43, 0xff]);
`
``
198
`+
assert_eq!(r, e);
`
``
199
`+
}
`
``
200
+
183
201
`#[cfg(target_arch = "aarch64")]
`
184
202
`fn main() {
`
185
203
`unsafe {
`
`@@ -204,6 +222,9 @@ fn main() {
`
204
222
`test_vpadd_u16();
`
205
223
`test_vpadd_u32();
`
206
224
`test_vpadd_u8();
`
``
225
+
``
226
`+
test_vqsub_u8();
`
``
227
`+
test_vqadd_u8();
`
207
228
`}
`
208
229
`}
`
209
230
``