75 lines · plain
1// RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+sve 2>&1 < %s| FileCheck %s2 3 4// ------------------------------------------------------------------------- //5// Invalid element size6 7sdot z0.b, z1.h, z31.h8// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width9// CHECK-NEXT: sdot z0.b, z1.h, z31.h10// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:11 12sdot z0.d, z1.b, z31.b13// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width14// CHECK-NEXT: sdot z0.d, z1.b, z31.b15// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:16 17sdot z0.d, z1.s, z31.s18// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width19// CHECK-NEXT: sdot z0.d, z1.s, z31.s20// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:21 22 23// ------------------------------------------------------------------------- //24// Invalid restricted register for indexed vector.25 26sdot z0.s, z1.b, z8.b[3]27// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction28// CHECK-NEXT: sdot z0.s, z1.b, z8.b[3]29// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:30 31sdot z0.d, z1.h, z16.h[1]32// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction33// CHECK-NEXT: sdot z0.d, z1.h, z16.h[1]34// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:35 36 37// ------------------------------------------------------------------------- //38// Invalid element index39 40sdot z0.s, z1.b, z7.b[-1]41// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: vector lane must be an integer in range [0, 3].42// CHECK-NEXT: sdot z0.s, z1.b, z7.b[-1]43// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:44 45sdot z0.s, z1.b, z7.b[4]46// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: vector lane must be an integer in range [0, 3].47// CHECK-NEXT: sdot z0.s, z1.b, z7.b[4]48// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:49 50sdot z0.d, z1.h, z15.h[-1]51// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: vector lane must be an integer in range [0, 1].52// CHECK-NEXT: sdot z0.d, z1.h, z15.h[-1]53// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:54 55sdot z0.d, z1.h, z15.h[2]56// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: vector lane must be an integer in range [0, 1].57// CHECK-NEXT: sdot z0.d, z1.h, z15.h[2]58// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:59 60 61// --------------------------------------------------------------------------//62// Negative tests for instructions that are incompatible with movprfx63 64movprfx z0.d, p0/z, z7.d65sdot z0.d, z1.h, z31.h66// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a predicated movprfx, suggest using unpredicated movprfx67// CHECK-NEXT: sdot z0.d, z1.h, z31.h68// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:69 70movprfx z0.d, p0/z, z7.d71sdot z0.d, z1.h, z15.h[1]72// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a predicated movprfx, suggest using unpredicated movprfx73// CHECK-NEXT: sdot z0.d, z1.h, z15.h[1]74// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:75