James Y Knight ee058202fa Sparc: Add the "alternate address space" load/store instructions.
- Adds support for the asm syntax, which has an immediate integer
  "ASI" (address space identifier) appearing after an address, before
  a comma.

- Adds the various-width load, store, and swap in alternate address
  space instructions. (ldsba, ldsha, lduba, lduha, lda, stba, stha,
  sta, swapa)

This does not attempt to hook these instructions up to pointer address
spaces in LLVM, although that would probably be a reasonable thing to
do in the future.

Differential Revision: http://reviews.llvm.org/D8904

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237581 91177308-0d34-0410-b5e6-96231b3b80d8
2015-05-18 16:35:04 +00:00

224 lines
3.8 KiB
Plaintext

# RUN: llvm-mc --disassemble %s -triple=sparcv9-unknown-linux | FileCheck %s
# CHECK: ldsb [%i0+%l6], %o2
0xd4 0x4e 0x00 0x16
# CHECK: ldsb [%i0+32], %o2
0xd4 0x4e 0x20 0x20
# CHECK: ldsb [%g1], %o4
0xd8 0x48 0x60 0x00
# CHECK: ldsb [%g1], %o4
0xd8 0x48 0x40 0x00
# CHECK: ldsh [%i0+%l6], %o2
0xd4 0x56 0x00 0x16
# CHECK: ldsh [%i0+32], %o2
0xd4 0x56 0x20 0x20
# CHECK: ldsh [%g1], %o4
0xd8 0x50 0x60 0x00
# CHECK: ldsh [%g1], %o4
0xd8 0x50 0x40 0x00
# CHECK: ldub [%i0+%l6], %o2
0xd4 0x0e 0x00 0x16
# CHECK: ldub [%i0+32], %o2
0xd4 0x0e 0x20 0x20
# CHECK: ldub [%g1], %o2
0xd4 0x08 0x60 0x00
# CHECK: ldub [%g1], %o2
0xd4 0x08 0x40 0x00
# CHECK: lduh [%i0+%l6], %o2
0xd4 0x16 0x00 0x16
# CHECK: lduh [%i0+32], %o2
0xd4 0x16 0x20 0x20
# CHECK: lduh [%g1], %o2
0xd4 0x10 0x60 0x00
# CHECK: lduh [%g1], %o2
0xd4 0x10 0x40 0x00
# CHECK: ld [%i0+%l6], %o2
0xd4 0x06 0x00 0x16
# CHECK: ld [%i0+32], %o2
0xd4 0x06 0x20 0x20
# CHECK: ld [%g1], %o2
0xd4 0x00 0x60 0x00
# CHECK: ld [%g1], %o2
0xd4 0x00 0x40 0x00
# CHECK: ld [%i0+%l6], %f2
0xc5 0x06 0x00 0x16
# CHECK: ld [%i0+32], %f2
0xc5 0x06 0x20 0x20
# CHECK: ld [%g1], %f2
0xc5 0x00 0x60 0x00
# CHECK: ld [%g1], %f2
0xc5 0x00 0x40 0x00
# CHECK: ldd [%i0+%l6], %f2
0xc5 0x1e 0x00 0x16
# CHECK: ldd [%i0+32], %f2
0xc5 0x1e 0x20 0x20
# CHECK: ldd [%g1], %f2
0xc5 0x18 0x60 0x00
# CHECK: ldd [%g1], %f2
0xc5 0x18 0x40 0x00
# CHECK: ldq [%i0+%l6], %f4
0xc9 0x16 0x00 0x16
# CHECK: ldq [%i0+32], %f4
0xc9 0x16 0x20 0x20
# CHECK: ldq [%g1], %f4
0xc9 0x10 0x60 0x00
# CHECK: ldq [%g1], %f4
0xc9 0x10 0x40 0x00
# CHECK: ldx [%i0+%l6], %o2
0xd4 0x5e 0x00 0x16
# CHECK: ldx [%i0+32], %o2
0xd4 0x5e 0x20 0x20
# CHECK: ldx [%g1], %o2
0xd4 0x58 0x60 0x00
# CHECK: ldx [%g1], %o2
0xd4 0x58 0x40 0x00
# CHECK: ldsw [%i0+%l6], %o2
0xd4 0x46 0x00 0x16
# CHECK: ldsw [%i0+32], %o2
0xd4 0x46 0x20 0x20
# CHECK: ldsw [%g1], %o2
0xd4 0x40 0x60 0x00
# CHECK: ldsw [%g1], %o2
0xd4 0x40 0x40 0x00
# CHECK: stb %o2, [%i0+%l6]
0xd4 0x2e 0x00 0x16
# CHECK: stb %o2, [%i0+32]
0xd4 0x2e 0x20 0x20
# CHECK: stb %o2, [%g1]
0xd4 0x28 0x60 0x00
# CHECK: stb %o2, [%g1]
0xd4 0x28 0x40 0x00
# CHECK: sth %o2, [%i0+%l6]
0xd4 0x36 0x00 0x16
# CHECK: sth %o2, [%i0+32]
0xd4 0x36 0x20 0x20
# CHECK: sth %o2, [%g1]
0xd4 0x30 0x60 0x00
# CHECK: sth %o2, [%g1]
0xd4 0x30 0x40 0x00
# CHECK: st %o2, [%i0+%l6]
0xd4 0x26 0x00 0x16
# CHECK: st %o2, [%i0+32]
0xd4 0x26 0x20 0x20
# CHECK: st %o2, [%g1]
0xd4 0x20 0x60 0x00
# CHECK: st %o2, [%g1]
0xd4 0x20 0x40 0x00
# CHECK: st %f2, [%i0+%l6]
0xc5 0x26 0x00 0x16
# CHECK: st %f2, [%i0+32]
0xc5 0x26 0x20 0x20
# CHECK: st %f2, [%g1]
0xc5 0x20 0x60 0x00
# CHECK: st %f2, [%g1]
0xc5 0x20 0x40 0x00
# CHECK: std %f2, [%i0+%l6]
0xc5 0x3e 0x00 0x16
# CHECK: std %f2, [%i0+32]
0xc5 0x3e 0x20 0x20
# CHECK: std %f2, [%g1]
0xc5 0x38 0x60 0x00
# CHECK: std %f2, [%g1]
0xc5 0x38 0x40 0x00
# CHECK: stq %f4, [%i0+%l6]
0xc9 0x36 0x00 0x16
# CHECK: stq %f4, [%i0+32]
0xc9 0x36 0x20 0x20
# CHECK: stq %f4, [%g1]
0xc9 0x30 0x60 0x00
# CHECK: stq %f4, [%g1]
0xc9 0x30 0x40 0x00
# CHECK: stx %o2, [%i0+%l6]
0xd4 0x76 0x00 0x16
# CHECK: stx %o2, [%i0+32]
0xd4 0x76 0x20 0x20
# CHECK: stx %o2, [%g1]
0xd4 0x70 0x60 0x00
# CHECK: stx %o2, [%g1]
0xd4 0x70 0x40 0x00
# CHECK: swap [%i0+%l6], %o2
0xd4 0x7e 0x00 0x16
# CHECK: swap [%i0+32], %o2
0xd4 0x7e 0x20 0x20
# CHECK: swap [%g1], %o2
0xd4 0x78 0x60 0x00
# CHECK: swap [%g1], %o2
0xd4 0x78 0x40 0x00
# CHECK: swapa [%i0+%l6] 131, %o2
0xd4 0xfe 0x10 0x76
# CHECK: swapa [%g1] 131, %o2
0xd4 0xf8 0x50 0x60