Skip to content

Commit fc71718

Browse files
authored
Fix integer overflow in vadd aarch64 test cases (#1016)
1 parent 77e5b51 commit fc71718

File tree

1 file changed

+48
-12
lines changed
  • crates/core_arch/src/arm/neon

1 file changed

+48
-12
lines changed

crates/core_arch/src/arm/neon/mod.rs

+48-12
Original file line numberDiff line numberDiff line change
@@ -5189,7 +5189,16 @@ mod tests {
51895189
let y = i8::MAX;
51905190
let b = i8x8::new(y, y, y, y, y, y, y, y);
51915191
let y = y as i16;
5192-
let e = i16x8::new(x + y, 1 + y, 2 + y, 3 + y, 4 + y, 5 + y, 6 + y, 7 + y);
5192+
let e = i16x8::new(
5193+
x.wrapping_add(y),
5194+
1 + y,
5195+
2 + y,
5196+
3 + y,
5197+
4 + y,
5198+
5 + y,
5199+
6 + y,
5200+
7 + y,
5201+
);
51935202
let r: i16x8 = transmute(vaddw_s8(transmute(a), transmute(b)));
51945203
assert_eq!(r, e);
51955204
}
@@ -5201,7 +5210,7 @@ mod tests {
52015210
let y = i16::MAX;
52025211
let b = i16x4::new(y, y, y, y);
52035212
let y = y as i32;
5204-
let e = i32x4::new(x + y, 1 + y, 2 + y, 3 + y);
5213+
let e = i32x4::new(x.wrapping_add(y), 1 + y, 2 + y, 3 + y);
52055214
let r: i32x4 = transmute(vaddw_s16(transmute(a), transmute(b)));
52065215
assert_eq!(r, e);
52075216
}
@@ -5213,7 +5222,7 @@ mod tests {
52135222
let y = i32::MAX;
52145223
let b = i32x2::new(y, y);
52155224
let y = y as i64;
5216-
let e = i64x2::new(x + y, 1 + y);
5225+
let e = i64x2::new(x.wrapping_add(y), 1 + y);
52175226
let r: i64x2 = transmute(vaddw_s32(transmute(a), transmute(b)));
52185227
assert_eq!(r, e);
52195228
}
@@ -5225,7 +5234,16 @@ mod tests {
52255234
let y = u8::MAX;
52265235
let b = u8x8::new(y, y, y, y, y, y, y, y);
52275236
let y = y as u16;
5228-
let e = u16x8::new(x + y, 1 + y, 2 + y, 3 + y, 4 + y, 5 + y, 6 + y, 7 + y);
5237+
let e = u16x8::new(
5238+
x.wrapping_add(y),
5239+
1 + y,
5240+
2 + y,
5241+
3 + y,
5242+
4 + y,
5243+
5 + y,
5244+
6 + y,
5245+
7 + y,
5246+
);
52295247
let r: u16x8 = transmute(vaddw_u8(transmute(a), transmute(b)));
52305248
assert_eq!(r, e);
52315249
}
@@ -5237,7 +5255,7 @@ mod tests {
52375255
let y = u16::MAX;
52385256
let b = u16x4::new(y, y, y, y);
52395257
let y = y as u32;
5240-
let e = u32x4::new(x + y, 1 + y, 2 + y, 3 + y);
5258+
let e = u32x4::new(x.wrapping_add(y), 1 + y, 2 + y, 3 + y);
52415259
let r: u32x4 = transmute(vaddw_u16(transmute(a), transmute(b)));
52425260
assert_eq!(r, e);
52435261
}
@@ -5249,7 +5267,7 @@ mod tests {
52495267
let y = u32::MAX;
52505268
let b = u32x2::new(y, y);
52515269
let y = y as u64;
5252-
let e = u64x2::new(x + y, 1 + y);
5270+
let e = u64x2::new(x.wrapping_add(y), 1 + y);
52535271
let r: u64x2 = transmute(vaddw_u32(transmute(a), transmute(b)));
52545272
assert_eq!(r, e);
52555273
}
@@ -5261,7 +5279,16 @@ mod tests {
52615279
let y = i8::MAX;
52625280
let b = i8x16::new(0, 0, 0, 0, 0, 0, 0, 0, y, y, y, y, y, y, y, y);
52635281
let y = y as i16;
5264-
let e = i16x8::new(x + y, 1 + y, 2 + y, 3 + y, 4 + y, 5 + y, 6 + y, 7 + y);
5282+
let e = i16x8::new(
5283+
x.wrapping_add(y),
5284+
1 + y,
5285+
2 + y,
5286+
3 + y,
5287+
4 + y,
5288+
5 + y,
5289+
6 + y,
5290+
7 + y,
5291+
);
52655292
let r: i16x8 = transmute(vaddw_high_s8(transmute(a), transmute(b)));
52665293
assert_eq!(r, e);
52675294
}
@@ -5273,7 +5300,7 @@ mod tests {
52735300
let y = i16::MAX;
52745301
let b = i16x8::new(0, 0, 0, 0, y, y, y, y);
52755302
let y = y as i32;
5276-
let e = i32x4::new(x + y, 1 + y, 2 + y, 3 + y);
5303+
let e = i32x4::new(x.wrapping_add(y), 1 + y, 2 + y, 3 + y);
52775304
let r: i32x4 = transmute(vaddw_high_s16(transmute(a), transmute(b)));
52785305
assert_eq!(r, e);
52795306
}
@@ -5285,7 +5312,7 @@ mod tests {
52855312
let y = i32::MAX;
52865313
let b = i32x4::new(0, 0, y, y);
52875314
let y = y as i64;
5288-
let e = i64x2::new(x + y, 1 + y);
5315+
let e = i64x2::new(x.wrapping_add(y), 1 + y);
52895316
let r: i64x2 = transmute(vaddw_high_s32(transmute(a), transmute(b)));
52905317
assert_eq!(r, e);
52915318
}
@@ -5297,7 +5324,16 @@ mod tests {
52975324
let y = u8::MAX;
52985325
let b = u8x16::new(0, 0, 0, 0, 0, 0, 0, 0, y, y, y, y, y, y, y, y);
52995326
let y = y as u16;
5300-
let e = u16x8::new(x + y, 1 + y, 2 + y, 3 + y, 4 + y, 5 + y, 6 + y, 7 + y);
5327+
let e = u16x8::new(
5328+
x.wrapping_add(y),
5329+
1 + y,
5330+
2 + y,
5331+
3 + y,
5332+
4 + y,
5333+
5 + y,
5334+
6 + y,
5335+
7 + y,
5336+
);
53015337
let r: u16x8 = transmute(vaddw_high_u8(transmute(a), transmute(b)));
53025338
assert_eq!(r, e);
53035339
}
@@ -5309,7 +5345,7 @@ mod tests {
53095345
let y = u16::MAX;
53105346
let b = u16x8::new(0, 0, 0, 0, y, y, y, y);
53115347
let y = y as u32;
5312-
let e = u32x4::new(x + y, 1 + y, 2 + y, 3 + y);
5348+
let e = u32x4::new(x.wrapping_add(y), 1 + y, 2 + y, 3 + y);
53135349
let r: u32x4 = transmute(vaddw_high_u16(transmute(a), transmute(b)));
53145350
assert_eq!(r, e);
53155351
}
@@ -5321,7 +5357,7 @@ mod tests {
53215357
let y = u32::MAX;
53225358
let b = u32x4::new(0, 0, y, y);
53235359
let y = y as u64;
5324-
let e = u64x2::new(x + y, 1 + y);
5360+
let e = u64x2::new(x.wrapping_add(y), 1 + y);
53255361
let r: u64x2 = transmute(vaddw_high_u32(transmute(a), transmute(b)));
53265362
assert_eq!(r, e);
53275363
}

0 commit comments

Comments
 (0)