Home | History | Annotate | Download | only in SystemZ
      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