Home | History | Annotate | Download | only in SVE
      1 // RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+sve  2>&1 < %s| FileCheck %s
      2 
      3 // --------------------------------------------------------------------------//
      4 // Invalid scalar operand for result element width.
      5 
      6 cpy z0.b, p0/m, x0
      7 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand
      8 // CHECK-NEXT: cpy z0.b, p0/m, x0
      9 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
     10 
     11 cpy z0.h, p0/m, x0
     12 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand
     13 // CHECK-NEXT: cpy z0.h, p0/m, x0
     14 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
     15 
     16 cpy z0.s, p0/m, x0
     17 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand
     18 // CHECK-NEXT: cpy z0.s, p0/m, x0
     19 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
     20 
     21 cpy z0.d, p0/m, w0
     22 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand
     23 // CHECK-NEXT: cpy z0.d, p0/m, w0
     24 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
     25 
     26 cpy z0.b, p0/m, h0
     27 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand
     28 // CHECK-NEXT: cpy z0.b, p0/m, h0
     29 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
     30 
     31 cpy z0.b, p0/m, s0
     32 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand
     33 // CHECK-NEXT: cpy z0.b, p0/m, s0
     34 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
     35 
     36 cpy z0.b, p0/m, d0
     37 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand
     38 // CHECK-NEXT: cpy z0.b, p0/m, d0
     39 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
     40 
     41 cpy z0.h, p0/m, b0
     42 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand
     43 // CHECK-NEXT: cpy z0.h, p0/m, b0
     44 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
     45 
     46 cpy z0.h, p0/m, s0
     47 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand
     48 // CHECK-NEXT: cpy z0.h, p0/m, s0
     49 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
     50 
     51 cpy z0.h, p0/m, d0
     52 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand
     53 // CHECK-NEXT: cpy z0.h, p0/m, d0
     54 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
     55 
     56 cpy z0.s, p0/m, b0
     57 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand
     58 // CHECK-NEXT: cpy z0.s, p0/m, b0
     59 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
     60 
     61 cpy z0.s, p0/m, h0
     62 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand
     63 // CHECK-NEXT: cpy z0.s, p0/m, h0
     64 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
     65 
     66 cpy z0.s, p0/m, d0
     67 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand
     68 // CHECK-NEXT: cpy z0.s, p0/m, d0
     69 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
     70 
     71 cpy z0.d, p0/m, b0
     72 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand
     73 // CHECK-NEXT: cpy z0.d, p0/m, b0
     74 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
     75 
     76 cpy z0.d, p0/m, h0
     77 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand
     78 // CHECK-NEXT: cpy z0.d, p0/m, h0
     79 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
     80 
     81 cpy z0.d, p0/m, s0
     82 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand
     83 // CHECK-NEXT: cpy z0.d, p0/m, s0
     84 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
     85 
     86 
     87 // --------------------------------------------------------------------------//
     88 // Invalid immediates
     89 
     90 cpy z0.b, p0/z, #0, lsl #8      // #0, lsl #8 is not valid for .b
     91 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 255]
     92 // CHECK-NEXT: cpy z0.b, p0/z, #0, lsl #8
     93 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
     94 
     95 cpy z0.b, p0/z, #-129
     96 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 255]
     97 // CHECK-NEXT: cpy z0.b, p0/z, #-129
     98 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
     99 
    100 cpy z0.b, p0/z, #-1, lsl #8
    101 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 255]
    102 // CHECK-NEXT: cpy z0.b, p0/z, #-1, lsl #8
    103 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
    104 
    105 cpy z0.b, p0/z, #256
    106 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 255]
    107 // CHECK-NEXT: cpy z0.b, p0/z, #256
    108 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
    109 
    110 cpy z0.b, p0/z, #1, lsl #8
    111 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 255]
    112 // CHECK-NEXT: cpy z0.b, p0/z, #1, lsl #8
    113 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
    114 
    115 cpy z0.h, p0/z, #-33024
    116 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 65280]
    117 // CHECK-NEXT: cpy z0.h, p0/z, #-33024
    118 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
    119 
    120 cpy z0.h, p0/z, #-32769
    121 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 65280]
    122 // CHECK-NEXT: cpy z0.h, p0/z, #-32769
    123 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
    124 
    125 cpy z0.h, p0/z, #-129, lsl #8
    126 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 65280]
    127 // CHECK-NEXT: cpy z0.h, p0/z, #-129, lsl #8
    128 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
    129 
    130 cpy z0.h, p0/z, #32513
    131 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 65280]
    132 // CHECK-NEXT: cpy z0.h, p0/z, #32513
    133 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
    134 
    135 cpy z0.h, p0/z, #65281
    136 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 65280]
    137 // CHECK-NEXT: cpy z0.h, p0/z, #65281
    138 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
    139 
    140 cpy z0.h, p0/z, #256, lsl #8
    141 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 65280]
    142 // CHECK-NEXT: cpy z0.h, p0/z, #256, lsl #8
    143 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
    144 
    145 cpy z0.s, p0/z, #-33024
    146 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 32512]
    147 // CHECK-NEXT: cpy z0.s, p0/z, #-33024
    148 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
    149 
    150 cpy z0.s, p0/z, #-32769
    151 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 32512]
    152 // CHECK-NEXT: cpy z0.s, p0/z, #-32769
    153 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
    154 
    155 cpy z0.s, p0/z, #-129, lsl #8
    156 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 32512]
    157 // CHECK-NEXT: cpy z0.s, p0/z, #-129, lsl #8
    158 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
    159 
    160 cpy z0.s, p0/z, #32513
    161 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 32512]
    162 // CHECK-NEXT: cpy z0.s, p0/z, #32513
    163 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
    164 
    165 cpy z0.s, p0/z, #32768
    166 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 32512]
    167 // CHECK-NEXT: cpy z0.s, p0/z, #32768
    168 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
    169 
    170 cpy z0.s, p0/z, #128, lsl #8
    171 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 32512]
    172 // CHECK-NEXT: cpy z0.s, p0/z, #128, lsl #8
    173 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
    174 
    175 cpy z0.d, p0/z, #-33024
    176 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 32512]
    177 // CHECK-NEXT: cpy z0.d, p0/z, #-33024
    178 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
    179 
    180 cpy z0.d, p0/z, #-32769
    181 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 32512]
    182 // CHECK-NEXT: cpy z0.d, p0/z, #-32769
    183 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
    184 
    185 cpy z0.d, p0/z, #-129, lsl #8
    186 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 32512]
    187 // CHECK-NEXT: cpy z0.d, p0/z, #-129, lsl #8
    188 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
    189 
    190 cpy z0.d, p0/z, #32513
    191 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 32512]
    192 // CHECK-NEXT: cpy z0.d, p0/z, #32513
    193 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
    194 
    195 cpy z0.d, p0/z, #32768
    196 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 32512]
    197 // CHECK-NEXT: cpy z0.d, p0/z, #32768
    198 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
    199 
    200 cpy z0.d, p0/z, #128, lsl #8
    201 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 32512]
    202 // CHECK-NEXT: cpy z0.d, p0/z, #128, lsl #8
    203 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
    204