1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-23 11:13:28 +01:00
llvm-mirror/test/MC/SystemZ/regs-good.s
Ulrich Weigand e075c2a8b5 [SystemZ] Allow specifying integer registers as part of the address calculation
Revision e1de2773a534957305d7a559c6d88c4b5ac354e2 provided support for
accepting integer registers in inline asm i.e.

__asm("lhi %r0, 5") -> lhi %r0, 5
__asm("lhi 0, 5") -> lhi 0,5

This patch aims to extend this support to instructions which compute
addresses as well. (i.e instructions of type BDMem and BD[X|R|V|L]Mem)

Author: anirudhp

Differential Revision: https://reviews.llvm.org/D83251
2020-07-08 18:20:24 +02:00

310 lines
9.5 KiB
ArmAsm

# RUN: llvm-mc -triple s390x-linux-gnu -show-encoding %s | FileCheck %s
#CHECK: lr %r0, %r1 # encoding: [0x18,0x01]
#CHECK: lr %r2, %r3 # encoding: [0x18,0x23]
#CHECK: lr %r4, %r5 # encoding: [0x18,0x45]
#CHECK: lr %r6, %r7 # encoding: [0x18,0x67]
#CHECK: lr %r8, %r9 # encoding: [0x18,0x89]
#CHECK: lr %r10, %r11 # encoding: [0x18,0xab]
#CHECK: lr %r12, %r13 # encoding: [0x18,0xcd]
#CHECK: lr %r14, %r15 # encoding: [0x18,0xef]
#CHECK: lr %r0, %r15 # encoding: [0x18,0x0f]
lr %r0,%r1
lr %r2,%r3
lr %r4,%r5
lr %r6,%r7
lr %r8,%r9
lr %r10,%r11
lr %r12,%r13
lr %r14,%r15
lr 0,15
#CHECK: lgr %r0, %r1 # encoding: [0xb9,0x04,0x00,0x01]
#CHECK: lgr %r2, %r3 # encoding: [0xb9,0x04,0x00,0x23]
#CHECK: lgr %r4, %r5 # encoding: [0xb9,0x04,0x00,0x45]
#CHECK: lgr %r6, %r7 # encoding: [0xb9,0x04,0x00,0x67]
#CHECK: lgr %r8, %r9 # encoding: [0xb9,0x04,0x00,0x89]
#CHECK: lgr %r10, %r11 # encoding: [0xb9,0x04,0x00,0xab]
#CHECK: lgr %r12, %r13 # encoding: [0xb9,0x04,0x00,0xcd]
#CHECK: lgr %r14, %r15 # encoding: [0xb9,0x04,0x00,0xef]
#CHECK: lgr %r0, %r15 # encoding: [0xb9,0x04,0x00,0x0f]
lgr %r0,%r1
lgr %r2,%r3
lgr %r4,%r5
lgr %r6,%r7
lgr %r8,%r9
lgr %r10,%r11
lgr %r12,%r13
lgr %r14,%r15
lgr 0,15
#CHECK: dlr %r0, %r0 # encoding: [0xb9,0x97,0x00,0x00]
#CHECK: dlr %r2, %r0 # encoding: [0xb9,0x97,0x00,0x20]
#CHECK: dlr %r4, %r0 # encoding: [0xb9,0x97,0x00,0x40]
#CHECK: dlr %r6, %r0 # encoding: [0xb9,0x97,0x00,0x60]
#CHECK: dlr %r8, %r0 # encoding: [0xb9,0x97,0x00,0x80]
#CHECK: dlr %r10, %r0 # encoding: [0xb9,0x97,0x00,0xa0]
#CHECK: dlr %r12, %r0 # encoding: [0xb9,0x97,0x00,0xc0]
#CHECK: dlr %r14, %r0 # encoding: [0xb9,0x97,0x00,0xe0]
#CHECK: dlr %r14, %r0 # encoding: [0xb9,0x97,0x00,0xe0]
dlr %r0,%r0
dlr %r2,%r0
dlr %r4,%r0
dlr %r6,%r0
dlr %r8,%r0
dlr %r10,%r0
dlr %r12,%r0
dlr %r14,%r0
dlr 14,0
#CHECK: ler %f0, %f1 # encoding: [0x38,0x01]
#CHECK: ler %f2, %f3 # encoding: [0x38,0x23]
#CHECK: ler %f4, %f5 # encoding: [0x38,0x45]
#CHECK: ler %f6, %f7 # encoding: [0x38,0x67]
#CHECK: ler %f8, %f9 # encoding: [0x38,0x89]
#CHECK: ler %f10, %f11 # encoding: [0x38,0xab]
#CHECK: ler %f12, %f13 # encoding: [0x38,0xcd]
#CHECK: ler %f14, %f15 # encoding: [0x38,0xef]
#CHECK: ler %f0, %f15 # encoding: [0x38,0x0f]
ler %f0,%f1
ler %f2,%f3
ler %f4,%f5
ler %f6,%f7
ler %f8,%f9
ler %f10,%f11
ler %f12,%f13
ler %f14,%f15
ler 0,15
#CHECK: ldr %f0, %f1 # encoding: [0x28,0x01]
#CHECK: ldr %f2, %f3 # encoding: [0x28,0x23]
#CHECK: ldr %f4, %f5 # encoding: [0x28,0x45]
#CHECK: ldr %f6, %f7 # encoding: [0x28,0x67]
#CHECK: ldr %f8, %f9 # encoding: [0x28,0x89]
#CHECK: ldr %f10, %f11 # encoding: [0x28,0xab]
#CHECK: ldr %f12, %f13 # encoding: [0x28,0xcd]
#CHECK: ldr %f14, %f15 # encoding: [0x28,0xef]
#CHECK: ldr %f0, %f15 # encoding: [0x28,0x0f]
ldr %f0,%f1
ldr %f2,%f3
ldr %f4,%f5
ldr %f6,%f7
ldr %f8,%f9
ldr %f10,%f11
ldr %f12,%f13
ldr %f14,%f15
ldr 0,15
#CHECK: lxr %f0, %f1 # encoding: [0xb3,0x65,0x00,0x01]
#CHECK: lxr %f4, %f5 # encoding: [0xb3,0x65,0x00,0x45]
#CHECK: lxr %f8, %f9 # encoding: [0xb3,0x65,0x00,0x89]
#CHECK: lxr %f12, %f13 # encoding: [0xb3,0x65,0x00,0xcd]
#CHECK: lxr %f0, %f13 # encoding: [0xb3,0x65,0x00,0x0d]
lxr %f0,%f1
lxr %f4,%f5
lxr %f8,%f9
lxr %f12,%f13
lxr 0,13
#CHECK: cpya %a0, %a1 # encoding: [0xb2,0x4d,0x00,0x01]
#CHECK: cpya %a2, %a3 # encoding: [0xb2,0x4d,0x00,0x23]
#CHECK: cpya %a4, %a5 # encoding: [0xb2,0x4d,0x00,0x45]
#CHECK: cpya %a6, %a7 # encoding: [0xb2,0x4d,0x00,0x67]
#CHECK: cpya %a8, %a9 # encoding: [0xb2,0x4d,0x00,0x89]
#CHECK: cpya %a10, %a11 # encoding: [0xb2,0x4d,0x00,0xab]
#CHECK: cpya %a12, %a13 # encoding: [0xb2,0x4d,0x00,0xcd]
#CHECK: cpya %a14, %a15 # encoding: [0xb2,0x4d,0x00,0xef]
#CHECK: cpya %a0, %a15 # encoding: [0xb2,0x4d,0x00,0x0f]
cpya %a0,%a1
cpya %a2,%a3
cpya %a4,%a5
cpya %a6,%a7
cpya %a8,%a9
cpya %a10,%a11
cpya %a12,%a13
cpya %a14,%a15
cpya 0,15
#CHECK: lctl %c0, %c1, 0 # encoding: [0xb7,0x01,0x00,0x00]
#CHECK: lctl %c2, %c3, 0 # encoding: [0xb7,0x23,0x00,0x00]
#CHECK: lctl %c4, %c5, 0 # encoding: [0xb7,0x45,0x00,0x00]
#CHECK: lctl %c6, %c7, 0 # encoding: [0xb7,0x67,0x00,0x00]
#CHECK: lctl %c8, %c9, 0 # encoding: [0xb7,0x89,0x00,0x00]
#CHECK: lctl %c10, %c11, 0 # encoding: [0xb7,0xab,0x00,0x00]
#CHECK: lctl %c12, %c13, 0 # encoding: [0xb7,0xcd,0x00,0x00]
#CHECK: lctl %c14, %c15, 0 # encoding: [0xb7,0xef,0x00,0x00]
#CHECK: lctl %c0, %c15, 0 # encoding: [0xb7,0x0f,0x00,0x00]
lctl %c0,%c1,0
lctl %c2,%c3,0
lctl %c4,%c5,0
lctl %c6,%c7,0
lctl %c8,%c9,0
lctl %c10,%c11,0
lctl %c12,%c13,0
lctl %c14,%c15,0
lctl 0,15,0
#CHECK: st %r0, 0 # encoding: [0x50,0x00,0x00,0x00]
#CHECK: st %r0, 4095 # encoding: [0x50,0x00,0x0f,0xff]
#CHECK: st %r0, 0(%r1) # encoding: [0x50,0x00,0x10,0x00]
#CHECK: st %r0, 0(%r15) # encoding: [0x50,0x00,0xf0,0x00]
#CHECK: st %r0, 4095(%r1,%r15) # encoding: [0x50,0x01,0xff,0xff]
#CHECK: st %r0, 4095(%r15,%r1) # encoding: [0x50,0x0f,0x1f,0xff]
#CHECK: st %r15, 0 # encoding: [0x50,0xf0,0x00,0x00]
#CHECK: st %r0, 0(%r1) # encoding: [0x50,0x00,0x10,0x00]
#CHECK: st %r0, 0(%r15) # encoding: [0x50,0x00,0xf0,0x00]
#CHECK: st %r0, 4095(%r1,%r15) # encoding: [0x50,0x01,0xff,0xff]
#CHECK: st %r0, 4095(%r15,%r1) # encoding: [0x50,0x0f,0x1f,0xff]
st %r0, 0
st %r0, 4095
st %r0, 0(%r1)
st %r0, 0(%r15)
st %r0, 4095(%r1,%r15)
st %r0, 4095(%r15,%r1)
st %r15, 0
st 0, 0(1)
st 0, 0(15)
st 0, 4095(1,15)
st 0, 4095(15,1)
#CHECK: .cfi_offset %r0, 0
#CHECK: .cfi_offset %r1, 8
#CHECK: .cfi_offset %r2, 16
#CHECK: .cfi_offset %r3, 24
#CHECK: .cfi_offset %r4, 32
#CHECK: .cfi_offset %r5, 40
#CHECK: .cfi_offset %r6, 48
#CHECK: .cfi_offset %r7, 56
#CHECK: .cfi_offset %r8, 64
#CHECK: .cfi_offset %r9, 72
#CHECK: .cfi_offset %r10, 80
#CHECK: .cfi_offset %r11, 88
#CHECK: .cfi_offset %r12, 96
#CHECK: .cfi_offset %r13, 104
#CHECK: .cfi_offset %r14, 112
#CHECK: .cfi_offset %r15, 120
#CHECK: .cfi_offset %f0, 128
#CHECK: .cfi_offset %f1, 136
#CHECK: .cfi_offset %f2, 144
#CHECK: .cfi_offset %f3, 152
#CHECK: .cfi_offset %f4, 160
#CHECK: .cfi_offset %f5, 168
#CHECK: .cfi_offset %f6, 176
#CHECK: .cfi_offset %f7, 184
#CHECK: .cfi_offset %f8, 192
#CHECK: .cfi_offset %f9, 200
#CHECK: .cfi_offset %f10, 208
#CHECK: .cfi_offset %f11, 216
#CHECK: .cfi_offset %f12, 224
#CHECK: .cfi_offset %f13, 232
#CHECK: .cfi_offset %f14, 240
#CHECK: .cfi_offset %f15, 248
#CHECK: .cfi_offset %a0, 256
#CHECK: .cfi_offset %a1, 260
#CHECK: .cfi_offset %a2, 264
#CHECK: .cfi_offset %a3, 268
#CHECK: .cfi_offset %a4, 272
#CHECK: .cfi_offset %a5, 276
#CHECK: .cfi_offset %a6, 280
#CHECK: .cfi_offset %a7, 284
#CHECK: .cfi_offset %a8, 288
#CHECK: .cfi_offset %r9, 292
#CHECK: .cfi_offset %a10, 296
#CHECK: .cfi_offset %a11, 300
#CHECK: .cfi_offset %a12, 304
#CHECK: .cfi_offset %a13, 308
#CHECK: .cfi_offset %a14, 312
#CHECK: .cfi_offset %a15, 316
#CHECK: .cfi_offset %c0, 318
#CHECK: .cfi_offset %c1, 326
#CHECK: .cfi_offset %c2, 334
#CHECK: .cfi_offset %c3, 342
#CHECK: .cfi_offset %c4, 350
#CHECK: .cfi_offset %c5, 358
#CHECK: .cfi_offset %c6, 366
#CHECK: .cfi_offset %c7, 374
#CHECK: .cfi_offset %c8, 382
#CHECK: .cfi_offset %c9, 390
#CHECK: .cfi_offset %c10, 398
#CHECK: .cfi_offset %c11, 406
#CHECK: .cfi_offset %c12, 414
#CHECK: .cfi_offset %c13, 422
#CHECK: .cfi_offset %c14, 430
#CHECK: .cfi_offset %c15, 438
.cfi_startproc
.cfi_offset %r0,0
.cfi_offset %r1,8
.cfi_offset %r2,16
.cfi_offset %r3,24
.cfi_offset %r4,32
.cfi_offset %r5,40
.cfi_offset %r6,48
.cfi_offset %r7,56
.cfi_offset %r8,64
.cfi_offset %r9,72
.cfi_offset %r10,80
.cfi_offset %r11,88
.cfi_offset %r12,96
.cfi_offset %r13,104
.cfi_offset %r14,112
.cfi_offset %r15,120
.cfi_offset %f0,128
.cfi_offset %f1,136
.cfi_offset %f2,144
.cfi_offset %f3,152
.cfi_offset %f4,160
.cfi_offset %f5,168
.cfi_offset %f6,176
.cfi_offset %f7,184
.cfi_offset %f8,192
.cfi_offset %f9,200
.cfi_offset %f10,208
.cfi_offset %f11,216
.cfi_offset %f12,224
.cfi_offset %f13,232
.cfi_offset %f14,240
.cfi_offset %f15,248
.cfi_offset %a0,256
.cfi_offset %a1,260
.cfi_offset %a2,264
.cfi_offset %a3,268
.cfi_offset %a4,272
.cfi_offset %a5,276
.cfi_offset %a6,280
.cfi_offset %a7,284
.cfi_offset %a8,288
.cfi_offset %r9,292
.cfi_offset %a10,296
.cfi_offset %a11,300
.cfi_offset %a12,304
.cfi_offset %a13,308
.cfi_offset %a14,312
.cfi_offset %a15,316
.cfi_offset %c0,318
.cfi_offset %c1,326
.cfi_offset %c2,334
.cfi_offset %c3,342
.cfi_offset %c4,350
.cfi_offset %c5,358
.cfi_offset %c6,366
.cfi_offset %c7,374
.cfi_offset %c8,382
.cfi_offset %c9,390
.cfi_offset %c10,398
.cfi_offset %c11,406
.cfi_offset %c12,414
.cfi_offset %c13,422
.cfi_offset %c14,430
.cfi_offset %c15,438
.cfi_endproc