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 // Invalid element kind.
      4 uzp1 z10.h, z22.h, z31.x
      5 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid vector kind qualifier
      6 // CHECK-NEXT: uzp1 z10.h, z22.h, z31.x
      7 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
      8 
      9 // Element size specifiers should match.
     10 uzp1 z10.h, z3.h, z15.b
     11 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width
     12 // CHECK-NEXT: uzp1 z10.h, z3.h, z15.b
     13 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
     14 
     15 // Too few operands
     16 uzp1 z1.h, z2.h
     17 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: too few operands for instruction
     18 // CHECK-NEXT: uzp1 z1.h, z2.h
     19 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
     20 
     21 // z32 is not a valid SVE data register
     22 uzp1 z1.s, z2.s, z32.s
     23 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
     24 // CHECK-NEXT: uzp1 z1.s, z2.s, z32.s
     25 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
     26 
     27 // p16 is not a valid SVE predicate register
     28 uzp1 p1.s, p2.s, p16.s
     29 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
     30 // CHECK-NEXT: uzp1 p1.s, p2.s, p16.s
     31 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
     32 
     33 // Combining data and predicate registers as operands
     34 uzp1 z1.s, z2.s, p3.s
     35 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
     36 // CHECK-NEXT: uzp1 z1.s, z2.s, p3.s
     37 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
     38 
     39 // Combining predicate and data registers as operands
     40 uzp1 p1.s, p2.s, z3.s
     41 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
     42 // CHECK-NEXT: uzp1 p1.s, p2.s, z3.s
     43 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
     44 
     45 
     46 // --------------------------------------------------------------------------//
     47 // Negative tests for instructions that are incompatible with movprfx
     48 
     49 movprfx z31.d, p0/z, z6.d
     50 uzp1    z31.d, z31.d, z31.d
     51 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a movprfx, suggest replacing movprfx with mov
     52 // CHECK-NEXT: uzp1    z31.d, z31.d, z31.d
     53 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
     54 
     55 movprfx z31, z6
     56 uzp1    z31.d, z31.d, z31.d
     57 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a movprfx, suggest replacing movprfx with mov
     58 // CHECK-NEXT: uzp1    z31.d, z31.d, z31.d
     59 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
     60