1# RUN: not llvm-mc -triple s390x-linux-gnu < %s 2> %t 2# RUN: FileCheck < %t %s 3 4# Test GR32 operands 5# 6#CHECK: error: invalid operand for instruction 7#CHECK: lr %f0,%r1 8#CHECK: error: invalid operand for instruction 9#CHECK: lr %a0,%r1 10#CHECK: error: invalid operand for instruction 11#CHECK: lr %r0,%f1 12#CHECK: error: invalid operand for instruction 13#CHECK: lr %r0,%a1 14#CHECK: error: invalid operand for instruction 15#CHECK: lr %r0,0 16#CHECK: error: invalid operand for instruction 17#CHECK: lr %r0,0(%r1) 18 19 lr %f0,%r1 20 lr %a0,%r1 21 lr %r0,%f1 22 lr %r0,%a1 23 lr %r0,0 24 lr %r0,0(%r1) 25 26# Test GR64 operands 27# 28#CHECK: error: invalid operand for instruction 29#CHECK: lgr %f0,%r1 30#CHECK: error: invalid operand for instruction 31#CHECK: lgr %a0,%r1 32#CHECK: error: invalid operand for instruction 33#CHECK: lgr %r0,%f1 34#CHECK: error: invalid operand for instruction 35#CHECK: lgr %r0,%a1 36#CHECK: error: invalid operand for instruction 37#CHECK: lgr %r0,0 38#CHECK: error: invalid operand for instruction 39#CHECK: lgr %r0,0(%r1) 40 41 lgr %f0,%r1 42 lgr %a0,%r1 43 lgr %r0,%f1 44 lgr %r0,%a1 45 lgr %r0,0 46 lgr %r0,0(%r1) 47 48# Test GR128 operands 49# 50#CHECK: error: invalid register pair 51#CHECK: dlr %r1,%r0 52#CHECK: error: invalid register pair 53#CHECK: dlr %r3,%r0 54#CHECK: error: invalid register pair 55#CHECK: dlr %r5,%r0 56#CHECK: error: invalid register pair 57#CHECK: dlr %r7,%r0 58#CHECK: error: invalid register pair 59#CHECK: dlr %r9,%r0 60#CHECK: error: invalid register pair 61#CHECK: dlr %r11,%r0 62#CHECK: error: invalid register pair 63#CHECK: dlr %r13,%r0 64#CHECK: error: invalid register pair 65#CHECK: dlr %r15,%r0 66#CHECK: error: invalid operand for instruction 67#CHECK: dlr %f0,%r1 68#CHECK: error: invalid operand for instruction 69#CHECK: dlr %a0,%r1 70#CHECK: error: invalid operand for instruction 71#CHECK: dlr %r0,%f1 72#CHECK: error: invalid operand for instruction 73#CHECK: dlr %r0,%a1 74#CHECK: error: invalid operand for instruction 75#CHECK: dlr %r0,0 76#CHECK: error: invalid operand for instruction 77#CHECK: dlr %r0,0(%r1) 78 79 dlr %r1,%r0 80 dlr %r3,%r0 81 dlr %r5,%r0 82 dlr %r7,%r0 83 dlr %r9,%r0 84 dlr %r11,%r0 85 dlr %r13,%r0 86 dlr %r15,%r0 87 dlr %f0,%r1 88 dlr %a0,%r1 89 dlr %r0,%f1 90 dlr %r0,%a1 91 dlr %r0,0 92 dlr %r0,0(%r1) 93 94# Test FP32 operands 95# 96#CHECK: error: invalid operand for instruction 97#CHECK: ler %r0,%f1 98#CHECK: error: invalid operand for instruction 99#CHECK: ler %a0,%f1 100#CHECK: error: invalid operand for instruction 101#CHECK: ler %f0,%r1 102#CHECK: error: invalid operand for instruction 103#CHECK: ler %f0,%a1 104#CHECK: error: invalid operand for instruction 105#CHECK: ler %f0,0 106#CHECK: error: invalid operand for instruction 107#CHECK: ler %f0,0(%r1) 108 109 ler %r0,%f1 110 ler %a0,%f1 111 ler %f0,%r1 112 ler %f0,%a1 113 ler %f0,0 114 ler %f0,0(%r1) 115 116# Test FP64 operands 117# 118#CHECK: error: invalid operand for instruction 119#CHECK: ldr %r0,%f1 120#CHECK: error: invalid operand for instruction 121#CHECK: ldr %a0,%f1 122#CHECK: error: invalid operand for instruction 123#CHECK: ldr %f0,%r1 124#CHECK: error: invalid operand for instruction 125#CHECK: ldr %f0,%a1 126#CHECK: error: invalid operand for instruction 127#CHECK: ldr %f0,0 128#CHECK: error: invalid operand for instruction 129#CHECK: ldr %f0,0(%r1) 130 131 ldr %r0,%f1 132 ldr %a0,%f1 133 ldr %f0,%r1 134 ldr %f0,%a1 135 ldr %f0,0 136 ldr %f0,0(%r1) 137 138# Test FP128 operands 139# 140#CHECK: error: invalid register pair 141#CHECK: lxr %f2,%f0 142#CHECK: error: invalid register pair 143#CHECK: lxr %f0,%f3 144#CHECK: error: invalid register pair 145#CHECK: lxr %f6,%f0 146#CHECK: error: invalid register pair 147#CHECK: lxr %f0,%f7 148#CHECK: error: invalid register pair 149#CHECK: lxr %f10,%f0 150#CHECK: error: invalid register pair 151#CHECK: lxr %f0,%f11 152#CHECK: error: invalid register pair 153#CHECK: lxr %f14,%f0 154#CHECK: error: invalid register pair 155#CHECK: lxr %f0,%f15 156#CHECK: error: invalid operand for instruction 157#CHECK: lxr %r0,%f1 158#CHECK: error: invalid operand for instruction 159#CHECK: lxr %a0,%f1 160#CHECK: error: invalid operand for instruction 161#CHECK: lxr %f0,%r1 162#CHECK: error: invalid operand for instruction 163#CHECK: lxr %f0,%a1 164#CHECK: error: invalid operand for instruction 165#CHECK: lxr %f0,0 166#CHECK: error: invalid operand for instruction 167#CHECK: lxr %f0,0(%r1) 168 169 lxr %f2,%f0 170 lxr %f0,%f3 171 lxr %f6,%f0 172 lxr %f0,%f7 173 lxr %f10,%f0 174 lxr %f0,%f11 175 lxr %f14,%f0 176 lxr %f0,%f15 177 lxr %r0,%f1 178 lxr %a0,%f1 179 lxr %f0,%r1 180 lxr %f0,%a1 181 lxr %f0,0 182 lxr %f0,0(%r1) 183 184# Test access register operands 185# 186#CHECK: error: invalid operand for instruction 187#CHECK: ear %r0,%r0 188#CHECK: error: invalid operand for instruction 189#CHECK: ear %r0,%f0 190#CHECK: error: invalid operand for instruction 191#CHECK: ear %r0,0 192#CHECK: error: invalid operand for instruction 193#CHECK: ear %r0,0(%r1) 194 195 ear %r0,%r0 196 ear %r0,%f0 197 ear %r0,0 198 ear %r0,0(%r1) 199 200 .cfi_startproc 201 202# Test general register parsing, with no predetermined class in mind. 203# 204#CHECK: error: register expected 205#CHECK: .cfi_offset r0,0 206#CHECK: error: invalid register 207#CHECK: .cfi_offset %,0 208#CHECK: error: invalid register 209#CHECK: .cfi_offset %r,0 210#CHECK: error: invalid register 211#CHECK: .cfi_offset %f,0 212#CHECK: error: invalid register 213#CHECK: .cfi_offset %a,0 214#CHECK: error: invalid register 215#CHECK: .cfi_offset %0,0 216#CHECK: error: invalid register 217#CHECK: .cfi_offset %c0,0 218#CHECK: error: invalid register 219#CHECK: .cfi_offset %r16,0 220#CHECK: error: invalid register 221#CHECK: .cfi_offset %f16,0 222#CHECK: error: invalid register 223#CHECK: .cfi_offset %a16,0 224#CHECK: error: invalid register 225#CHECK: .cfi_offset %reef,0 226#CHECK: error: invalid register 227#CHECK: .cfi_offset %arid,0 228 229 .cfi_offset r0,0 230 .cfi_offset %,0 231 .cfi_offset %r,0 232 .cfi_offset %f,0 233 .cfi_offset %a,0 234 .cfi_offset %0,0 235 .cfi_offset %c0,0 236 .cfi_offset %r16,0 237 .cfi_offset %f16,0 238 .cfi_offset %a16,0 239 .cfi_offset %reef,0 240 .cfi_offset %arid,0 241 242# Test invalid CFI registers. Will need to be updated once access 243# registers are modelled as LLVM registers. 244# 245#CHECK: error: invalid operand for instruction 246#CHECK: .cfi_offset %a0,0 247 248 .cfi_offset %a0,0 249 250 .cfi_endproc 251 252#CHECK: error: %r0 used in an address 253#CHECK: sll %r2,8(%r0) 254#CHECK: error: %r0 used in an address 255#CHECK: br %r0 256#CHECK: error: %r0 used in an address 257#CHECK: l %r1,8(%r0) 258#CHECK: error: %r0 used in an address 259#CHECK: l %r1,8(%r0,%r15) 260#CHECK: error: %r0 used in an address 261#CHECK: l %r1,8(%r15,%r0) 262 263 sll %r2,8(%r0) 264 br %r0 265 l %r1,8(%r0) 266 l %r1,8(%r0,%r15) 267 l %r1,8(%r15,%r0) 268