mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 19:23:23 +01:00
0192a1dd5e
`saa` and `saad` are 32-bit and 64-bit store atomic add instructions. memory[base] = memory[base] + rt These instructions are available for "Octeon+" CPU. The patch adds support for both instructions to MIPS assembler and diassembler and introduces new CPU type - "octeon+". Next patches will implement `.set arch=octeon+` directive and `AFL_EXT_OCTEONP` ISA extension flag support. Differential Revision: https://reviews.llvm.org/D69849
29 lines
1.5 KiB
ArmAsm
29 lines
1.5 KiB
ArmAsm
# RUN: llvm-mc -triple=mips64 -show-encoding -mcpu=octeon+ %s \
|
|
# RUN: | FileCheck -check-prefix=MIPS64 %s
|
|
|
|
saad $2, 8($5)
|
|
|
|
# MIPS64: daddiu $1, $5, 8 # encoding: [0x64,0xa1,0x00,0x08]
|
|
# MIPS64-NEXT: saad $2, ($1) # encoding: [0x70,0x22,0x00,0x19]
|
|
|
|
saad $2, foo
|
|
|
|
# MIPS64: lui $1, %highest(foo) # encoding: [0x3c,0x01,A,A]
|
|
# MIPS64-NEXT: # fixup A - offset: 0, value: %highest(foo), kind: fixup_Mips_HIGHEST
|
|
# MIPS64-NEXT: daddiu $1, $1, %higher(foo) # encoding: [0x64,0x21,A,A]
|
|
# MIPS64-NEXT: # fixup A - offset: 0, value: %higher(foo), kind: fixup_Mips_HIGHER
|
|
# MIPS64-NEXT: dsll $1, $1, 16 # encoding: [0x00,0x01,0x0c,0x38]
|
|
# MIPS64-NEXT: daddiu $1, $1, %hi(foo) # encoding: [0x64,0x21,A,A]
|
|
# MIPS64-NEXT: # fixup A - offset: 0, value: %hi(foo), kind: fixup_Mips_HI16
|
|
# MIPS64-NEXT: dsll $1, $1, 16 # encoding: [0x00,0x01,0x0c,0x38]
|
|
# MIPS64-NEXT: daddiu $1, $1, %lo(foo) # encoding: [0x64,0x21,A,A]
|
|
# MIPS64-NEXT: # fixup A - offset: 0, value: %lo(foo), kind: fixup_Mips_LO16
|
|
# MIPS64-NEXT: saad $2, ($1) # encoding: [0x70,0x22,0x00,0x19]
|
|
|
|
.option pic2
|
|
saad $2, foo
|
|
|
|
# MIPS64: ld $1, %got_disp(foo)($gp) # encoding: [0xdf,0x81,A,A]
|
|
# MIPS64-NEXT: # fixup A - offset: 0, value: %got_disp(foo), kind: fixup_Mips_GOT_DISP
|
|
# MIPS64-NEXT: saad $2, ($1) # encoding: [0x70,0x22,0x00,0x19]
|