brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.1 KiB · 2c0cf07 Raw
148 lines · plain
1// RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+sve2p3 2>&1 < %s| FileCheck %s2 3// --------------------------------------------------------------------------//4// Test addqp5 6addqp z0.h, z0.b, z0.b7// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width8// CHECK-NEXT: addqp z0.h, z0.b, z0.b9// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:10 11addqp z0.s, z0.h, z0.h12// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width13// CHECK-NEXT: addqp z0.s, z0.h, z0.h14// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:15 16addqp z0.d, z0.s, z0.s17// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width18// CHECK-NEXT: addqp z0.d, z0.s, z0.s19// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:20 21addqp z0.b, z0.d, z0.d22// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width23// CHECK-NEXT: addqp z0.b, z0.d, z0.d24// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:25 26// --------------------------------------------------------------------------//27// Test addsubp28 29addsubp z0.h, z0.b, z0.b30// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width31// CHECK-NEXT: addsubp z0.h, z0.b, z0.b32// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:33 34addsubp z0.s, z0.h, z0.h35// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width36// CHECK-NEXT: addsubp z0.s, z0.h, z0.h37// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:38 39addsubp z0.d, z0.s, z0.s40// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width41// CHECK-NEXT: addsubp z0.d, z0.s, z0.s42// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:43 44addsubp z0.b, z0.d, z0.d45// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width46// CHECK-NEXT: addsubp z0.b, z0.d, z0.d47// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:48 49// --------------------------------------------------------------------------//50// Test sabal51 52sabal z0.b, z0.b, z0.b53// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width54// CHECK-NEXT: sabal z0.b, z0.b, z0.b55// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:56 57sabal z0.h, z0.h, z0.h58// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width59// CHECK-NEXT: sabal z0.h, z0.h, z0.h60// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:61 62sabal z0.s, z0.s, z0.s63// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width64// CHECK-NEXT: sabal z0.s, z0.s, z0.s65// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:66 67sabal z0.d, z0.d, z0.d68// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width69// CHECK-NEXT: sabal z0.d, z0.d, z0.d70// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:71 72// --------------------------------------------------------------------------//73// Test uabal74 75uabal z0.b, z0.b, z0.b76// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width77// CHECK-NEXT: uabal z0.b, z0.b, z0.b78// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:79 80uabal z0.h, z0.h, z0.h81// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width82// CHECK-NEXT: uabal z0.h, z0.h, z0.h83// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:84 85uabal z0.s, z0.s, z0.s86// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width87// CHECK-NEXT: uabal z0.s, z0.s, z0.s88// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:89 90uabal z0.d, z0.d, z0.d91// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width92// CHECK-NEXT: uabal z0.d, z0.d, z0.d93// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:94 95// --------------------------------------------------------------------------//96// Test subp97 98subp z0.h, p0/m, z0.b, z0.b99// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width100// CHECK-NEXT: subp z0.h, p0/m, z0.b, z0.b101// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:102 103subp z0.s, p0/m, z0.h, z0.h104// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width105// CHECK-NEXT: subp z0.s, p0/m, z0.h, z0.h106// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:107 108subp z0.d, p0/m, z0.s, z0.s109// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width110// CHECK-NEXT: subp z0.d, p0/m, z0.s, z0.s111// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:112 113subp z0.b, p0/m, z0.d, z0.d114// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width115// CHECK-NEXT: subp z0.b, p0/m, z0.d, z0.d116// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:117 118// --------------------------------------------------------------------------//119// Predicate not in restricted predicate range120 121subp z0.h, p8/m, z0.b, z0.b122// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)123// CHECK-NEXT: subp z0.h, p8/m, z0.b, z0.b124// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:125 126// --------------------------------------------------------------------------//127// Operand must match destination register128 129subp z0.b, p0/m, z1.b, z2.b130// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: operand must match destination register131// CHECK-NEXT: subp z0.b, p0/m, z1.b, z2.b132// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:133 134// --------------------------------------------------------------------------//135// Negative tests for instructions that are incompatible with movprfx136 137movprfx z0, z7138addqp z0.b, z1.b, z2.b139// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a movprfx, suggest replacing movprfx with mov140// CHECK-NEXT: addqp z0.b, z1.b, z2.b141// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:142 143movprfx z0, z7144addsubp z0.b, z1.b, z2.b145// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a movprfx, suggest replacing movprfx with mov146// CHECK-NEXT: addsubp z0.b, z1.b, z2.b147// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:148