[AArch64] Fix the generation of BE Nops

Big endian Nops were being generated as d5 03 20 1f   fnmadd  s21, s30,
s0, s0, getting the bytes of the NOP in the wrong order. This switches
the bytes to not be dependant on the endianness.

Differential Revision: https://reviews.llvm.org/D125980
This commit is contained in:
David Green 2022-05-20 09:31:00 +01:00
parent 83c431fb9e
commit 1379b15099
2 changed files with 15 additions and 1 deletions

View File

@ -471,7 +471,7 @@ bool AArch64AsmBackend::writeNopData(raw_ostream &OS, uint64_t Count,
// We are properly aligned, so write NOPs as requested.
Count /= 4;
for (uint64_t i = 0; i != Count; ++i)
support::endian::write<uint32_t>(OS, 0xd503201f, Endian);
OS.write("\x1f\x20\x03\xd5", 4);
return true;
}

View File

@ -0,0 +1,14 @@
// RUN: llvm-mc -filetype=obj -triple aarch64-none-eabi %s | llvm-objdump -d - | FileCheck %s
// RUN: llvm-mc -filetype=obj -triple aarch64_be-none-eabi %s | llvm-objdump -d - | FileCheck %s
// CHECK: 0: 00 00 80 d2 mov x0, #0
// CHECK: 4: 00 00 80 d2 mov x0, #0
// CHECK: 8: 1f 20 03 d5 nop
// CHECK: c: 1f 20 03 d5 nop
// CHECK: 10: 00 00 80 d2 mov x0, #0
.text
mov x0, #0
mov x0, #0
.p2align 4
mov x0, #0