Skip to content

Commit db39bbd

Browse files
tests: Copy dont-shuffle-bswaps per tested opt level
Restore the OPT2 test annotations while doing so.
1 parent f315e61 commit db39bbd

File tree

2 files changed

+47
-2
lines changed

2 files changed

+47
-2
lines changed
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
//@ revisions: OPT2
2+
//@[OPT2] compile-flags: -Copt-level=2
3+
4+
#![crate_type = "lib"]
5+
#![no_std]
6+
7+
// The code is from https://github.com/rust-lang/rust/issues/122805.
8+
// Ensure we do not generate the shufflevector instruction
9+
// to avoid complicating the code.
10+
11+
// CHECK-LABEL: define{{.*}}void @convert(
12+
// CHECK-NOT: shufflevector
13+
14+
// CHECK: store i16
15+
// CHECK-NEXT: getelementptr inbounds{{( nuw)?}} i8, {{.+}} 2
16+
// CHECK-NEXT: store i16
17+
// CHECK-NEXT: getelementptr inbounds{{( nuw)?}} i8, {{.+}} 4
18+
// CHECK-NEXT: store i16
19+
// CHECK-NEXT: getelementptr inbounds{{( nuw)?}} i8, {{.+}} 6
20+
// CHECK-NEXT: store i16
21+
// CHECK-NEXT: getelementptr inbounds{{( nuw)?}} i8, {{.+}} 8
22+
// CHECK-NEXT: store i16
23+
// CHECK-NEXT: getelementptr inbounds{{( nuw)?}} i8, {{.+}} 10
24+
// CHECK-NEXT: store i16
25+
// CHECK-NEXT: getelementptr inbounds{{( nuw)?}} i8, {{.+}} 12
26+
// CHECK-NEXT: store i16
27+
// CHECK-NEXT: getelementptr inbounds{{( nuw)?}} i8, {{.+}} 14
28+
// CHECK-NEXT: store i16
29+
#[no_mangle]
30+
pub fn convert(value: [u16; 8]) -> [u8; 16] {
31+
#[cfg(target_endian = "little")]
32+
let bswap = u16::to_be;
33+
#[cfg(target_endian = "big")]
34+
let bswap = u16::to_le;
35+
let addr16 = [
36+
bswap(value[0]),
37+
bswap(value[1]),
38+
bswap(value[2]),
39+
bswap(value[3]),
40+
bswap(value[4]),
41+
bswap(value[5]),
42+
bswap(value[6]),
43+
bswap(value[7]),
44+
];
45+
unsafe { core::mem::transmute::<_, [u8; 16]>(addr16) }
46+
}

tests/codegen/dont-shuffle-bswaps.rs renamed to tests/codegen/autovec/dont-shuffle-bswaps-opt3.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
//@ revisions: OPT2 OPT3 OPT3_S390X
2-
//@[OPT2] compile-flags: -Copt-level=2
1+
//@ revisions: OPT3 OPT3_S390X
32
//@[OPT3] compile-flags: -C opt-level=3
43
// some targets don't do the opt we are looking for
54
//@[OPT3] only-64bit

0 commit comments

Comments
 (0)