This patch adds basic support to AsmParser which can handle basic instructions with register or immediate operands. With the addition of the parser, now it's possible to test instructions encoding with `llvm-mc`. Disassembler will be added later and then we can do `round-trip` test. Reviewed By: xen0n, MaskRay, myhsu Differential Revision: https://reviews.llvm.org/D120476
103 lines
2.9 KiB
ArmAsm
103 lines
2.9 KiB
ArmAsm
## Test data directives.
|
|
# RUN: llvm-mc --triple=loongarch32 < %s \
|
|
# RUN: | FileCheck --check-prefix=CHECK-ASM %s
|
|
# RUN: llvm-mc --triple=loongarch64 < %s \
|
|
# RUN: | FileCheck --check-prefix=CHECK-ASM %s
|
|
# RUN: llvm-mc --triple=loongarch32 --filetype=obj < %s | llvm-objdump -s - \
|
|
# RUN: | FileCheck --check-prefix=CHECK-DATA %s
|
|
# RUN: llvm-mc --triple=loongarch64 --filetype=obj < %s | llvm-objdump -s - \
|
|
# RUN: | FileCheck --check-prefix=CHECK-DATA %s
|
|
# RUN: not llvm-mc --triple=loongarch32 --defsym=ERR=1 < %s 2>&1 \
|
|
# RUN: | FileCheck %s --check-prefix=CHECK-ERR
|
|
# RUN: not llvm-mc --triple=loongarch64 --defsym=ERR=1 < %s 2>&1 \
|
|
# RUN: | FileCheck %s --check-prefix=CHECK-ERR
|
|
|
|
.data
|
|
|
|
# CHECK-ASM: .byte 0
|
|
# CHECK-ASM-NEXT: .byte 1
|
|
# CHECK-ASM-NEXT: .byte 171
|
|
# CHECK-ASM-NEXT: .byte 255
|
|
# CHECK-DATA: Contents of section .data:
|
|
# CHECK-DATA-NEXT: 0000 0001abff 0100ffff 0100ffff 0100ffff
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0xab
|
|
.byte 0xff
|
|
|
|
# CHECK-ASM: .half 1
|
|
# CHECK-ASM-NEXT: .half 65535
|
|
.half 0x1
|
|
.half 0xffff
|
|
|
|
# CHECK-ASM: .half 1
|
|
# CHECK-ASM-NEXT: .half 65535
|
|
.2byte 0x1
|
|
.2byte 0xffff
|
|
|
|
# CHECK-ASM: .half 1
|
|
# CHECK-ASM-NEXT: .half 65535
|
|
.short 0x1
|
|
.short 0xffff
|
|
|
|
# CHECK-ASM: .half 0
|
|
# CHECK-ASM-NEXT: .half 1
|
|
# CHECK-ASM-NEXT: .half 4660
|
|
# CHECK-ASM-NEXT: .half 65535
|
|
# CHECK-DATA-NEXT: 0010 00000100 3412ffff 01000000 ffffffff
|
|
.hword 0
|
|
.hword 0x1
|
|
.hword 0x1234
|
|
.hword 0xffff
|
|
|
|
# CHECK-ASM: .word 1
|
|
# CHECK-ASM-NEXT: .word 4294967295
|
|
.word 0x1
|
|
.word 0xffffffff
|
|
|
|
# CHECK-ASM: .word 1
|
|
# CHECK-ASM-NEXT: .word 4294967295
|
|
# CHECK-DATA-NEXT: 0020 01000000 ffffffff 01000000 ffffffff
|
|
.long 0x1
|
|
.long 0xffffffff
|
|
|
|
# CHECK-ASM: .word 1
|
|
# CHECK-ASM-NEXT: .word 4294967295
|
|
.4byte 0x1
|
|
.4byte 0xffffffff
|
|
|
|
# CHECK-ASM: .dword 1
|
|
# CHECK-ASM-NEXT: .dword 1234605616436508552
|
|
# CHECK-DATA-NEXT: 0030 01000000 00000000 88776655 44332211
|
|
.dword 0x1
|
|
.dword 0x1122334455667788
|
|
|
|
# CHECK-ASM: .dword 1
|
|
# CHECK-ASM-NEXT: .dword 1234605616436508552
|
|
# CHECK-DATA-NEXT: 0040 01000000 00000000 88776655 44332211
|
|
.8byte 0x1
|
|
.8byte 0x1122334455667788
|
|
|
|
.ifdef ERR
|
|
# CHECK-ERR: :[[#@LINE+1]]:7: error: out of range literal value
|
|
.byte 0xffa
|
|
# CHECK-ERR: :[[#@LINE+1]]:7: error: out of range literal value
|
|
.half 0xffffa
|
|
# CHECK-ERR: :[[#@LINE+1]]:8: error: out of range literal value
|
|
.short 0xffffa
|
|
# CHECK-ERR: :[[#@LINE+1]]:8: error: out of range literal value
|
|
.hword 0xffffa
|
|
# CHECK-ERR: :[[#@LINE+1]]:8: error: out of range literal value
|
|
.2byte 0xffffa
|
|
# CHECK-ERR: :[[#@LINE+1]]:7: error: out of range literal value
|
|
.word 0xffffffffa
|
|
# CHECK-ERR: :[[#@LINE+1]]:7: error: out of range literal value
|
|
.long 0xffffffffa
|
|
# CHECK-ERR: :[[#@LINE+1]]:8: error: out of range literal value
|
|
.4byte 0xffffffffa
|
|
# CHECK-ERR: :[[#@LINE+1]]:8: error: literal value out of range for directive
|
|
.dword 0xffffffffffffffffa
|
|
# CHECK-ERR: :[[#@LINE+1]]:8: error: literal value out of range for directive
|
|
.8byte 0xffffffffffffffffa
|
|
.endif
|