-
Notifications
You must be signed in to change notification settings - Fork 12.3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[AArch64] Support the .inst directive for MachO and COFF targets
Contrary to ELF, we don't add any markers that distinguish data generated with .long from normal instructions, so the .inst directive only adds compatibility with assembly that uses it. Differential Revision: https://reviews.llvm.org/D49935 llvm-svn: 338355
- Loading branch information
Showing
3 changed files
with
60 additions
and
7 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
// RUN: llvm-mc %s -triple=arm64-apple-darwin -filetype=asm -o - \ | ||
// RUN: | FileCheck %s --check-prefix=CHECK-ASM | ||
// RUN: llvm-mc %s -triple=arm64-apple-darwin -filetype=obj -o - \ | ||
// RUN: | llvm-objdump -d - | FileCheck %s --check-prefixes=CHECK-OBJ,CHECK-OBJ-CODE | ||
// RUN: llvm-mc %s -triple=aarch64-win32-gnu -filetype=asm -o - \ | ||
// RUN: | FileCheck %s --check-prefix=CHECK-ASM | ||
// RUN: llvm-mc %s -triple=aarch64-win32-gnu -filetype=obj -o - \ | ||
// RUN: | llvm-objdump -d - | FileCheck %s --check-prefixes=CHECK-OBJ,CHECK-OBJ-CODE | ||
// RUN: llvm-mc %s -triple=aarch64-linux-gnu -filetype=asm -o - \ | ||
// RUN: | FileCheck %s --check-prefix=CHECK-ASM | ||
// RUN: llvm-mc %s -triple=aarch64-linux-gnu -filetype=obj -o - \ | ||
// RUN: | llvm-objdump -d - | FileCheck %s --check-prefixes=CHECK-OBJ,CHECK-OBJ-DATA | ||
// RUN: llvm-mc %s -triple=aarch64_be-linux-gnu -filetype=asm -o - \ | ||
// RUN: | FileCheck %s --check-prefix=CHECK-ASM | ||
// RUN: llvm-mc %s -triple=aarch64_be-linux-gnu -filetype=obj -o - \ | ||
// RUN: | llvm-objdump -d - | FileCheck %s --check-prefixes=CHECK-OBJ,CHECK-OBJ-BE | ||
|
||
.text | ||
|
||
.p2align 2 | ||
.globl _func | ||
_func: | ||
nop | ||
// A .long is stored differently for big endian aarch64 targets, while | ||
// instructions always are stored in little endian. | ||
// ELF distinguishes between data and code when emitted this way, but | ||
// MachO and COFF don't. | ||
.long 0xd503201f | ||
.inst 0xd503201f | ||
|
||
// CHECK-ASM: .p2align 2 | ||
// CHECK-ASM: .globl _func | ||
// CHECK-ASM: _func: | ||
// CHECK-ASM: nop | ||
// CHECK-ASM: .{{long|word}} 3573751839 | ||
// CHECK-ASM: .inst 0xd503201f | ||
|
||
// CHECK-OBJ: 0: 1f 20 03 d5 nop | ||
// CHECK-OBJ-CODE: 4: 1f 20 03 d5 nop | ||
// CHECK-OBJ-DATA: 4: 1f 20 03 d5 .word 0xd503201f | ||
// CHECK-OBJ-BE: 4: d5 03 20 1f .word 0xd503201f | ||
// CHECK-OBJ: 8: 1f 20 03 d5 nop |