81 lines · plain
1// RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+sve 2>&1 < %s| FileCheck %s2 3// --------------------------------------------------------------------------//4// Invalid immediates5 6fdup z0.h, #-0.05859375 // r = -4, n = 157// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: expected compatible register or floating-point constant8// CHECK-NEXT: fdup z0.h, #-0.05859375 // r = -4, n = 159// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:10 11fdup z0.s, #-0.05859375 // r = -4, n = 1512// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: expected compatible register or floating-point constant13// CHECK-NEXT: fdup z0.s, #-0.05859375 // r = -4, n = 1514// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:15 16fdup z0.d, #-0.05859375 // r = -4, n = 1517// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: expected compatible register or floating-point constant18// CHECK-NEXT: fdup z0.d, #-0.05859375 // r = -4, n = 1519// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:20 21fdup z0.h, #-64.00000000 // r = 5, n = 3222// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: expected compatible register or floating-point constant23// CHECK-NEXT: fdup z0.h, #-64.00000000 // r = 5, n = 3224// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:25 26fdup z0.s, #-64.00000000 // r = 5, n = 3227// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: expected compatible register or floating-point constant28// CHECK-NEXT: fdup z0.s, #-64.00000000 // r = 5, n = 3229// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:30 31fdup z0.d, #-64.00000000 // r = 5, n = 3232// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: expected compatible register or floating-point constant33// CHECK-NEXT: fdup z0.d, #-64.00000000 // r = 5, n = 3234// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:35 36fdup z0.h, #0.05859375 // r = -4, n = 1537// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: expected compatible register or floating-point constant38// CHECK-NEXT: fdup z0.h, #0.05859375 // r = -4, n = 1539// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:40 41fdup z0.s, #0.05859375 // r = -4, n = 1542// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: expected compatible register or floating-point constant43// CHECK-NEXT: fdup z0.s, #0.05859375 // r = -4, n = 1544// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:45 46fdup z0.d, #0.05859375 // r = -4, n = 1547// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: expected compatible register or floating-point constant48// CHECK-NEXT: fdup z0.d, #0.05859375 // r = -4, n = 1549// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:50 51fdup z0.h, #64.00000000 // r = 5, n = 3252// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: expected compatible register or floating-point constant53// CHECK-NEXT: fdup z0.h, #64.00000000 // r = 5, n = 3254// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:55 56fdup z0.s, #64.00000000 // r = 5, n = 3257// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: expected compatible register or floating-point constant58// CHECK-NEXT: fdup z0.s, #64.00000000 // r = 5, n = 3259// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:60 61fdup z0.d, #64.00000000 // r = 5, n = 3262// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: expected compatible register or floating-point constant63// CHECK-NEXT: fdup z0.d, #64.00000000 // r = 5, n = 3264// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:65 66 67// --------------------------------------------------------------------------//68// Negative tests for instructions that are incompatible with movprfx69 70movprfx z0.d, p0/z, z7.d71fdup z0.d, #31.0000000072// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a movprfx, suggest replacing movprfx with mov73// CHECK-NEXT: fdup z0.d, #31.0000000074// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:75 76movprfx z0, z777fdup z0.d, #31.0000000078// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a movprfx, suggest replacing movprfx with mov79// CHECK-NEXT: fdup z0.d, #31.0000000080// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:81