mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-22 23:04:33 +00:00
Rollup merge of #126263 - nikic:s390x-codegen-test-fix, r=jieyouxu
Make issue-122805.rs big endian compatible Instead of not generating the function at all on big endian (which makes the CHECK lines fail), instead use to_le() on big endian, so that we essentially perform a bswap for both endiannesses.
This commit is contained in:
commit
0ed474a635
@ -39,17 +39,20 @@
|
||||
// OPT3WINX64-NEXT: store <8 x i16>
|
||||
// CHECK-NEXT: ret void
|
||||
#[no_mangle]
|
||||
#[cfg(target_endian = "little")]
|
||||
pub fn convert(value: [u16; 8]) -> [u8; 16] {
|
||||
#[cfg(target_endian = "little")]
|
||||
let bswap = u16::to_be;
|
||||
#[cfg(target_endian = "big")]
|
||||
let bswap = u16::to_le;
|
||||
let addr16 = [
|
||||
value[0].to_be(),
|
||||
value[1].to_be(),
|
||||
value[2].to_be(),
|
||||
value[3].to_be(),
|
||||
value[4].to_be(),
|
||||
value[5].to_be(),
|
||||
value[6].to_be(),
|
||||
value[7].to_be(),
|
||||
bswap(value[0]),
|
||||
bswap(value[1]),
|
||||
bswap(value[2]),
|
||||
bswap(value[3]),
|
||||
bswap(value[4]),
|
||||
bswap(value[5]),
|
||||
bswap(value[6]),
|
||||
bswap(value[7]),
|
||||
];
|
||||
unsafe { core::mem::transmute::<_, [u8; 16]>(addr16) }
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user