1// RUN: llvm-mc -o - -triple=aarch64 -show-encoding -mattr=+sve,+bf16 %s \ 2// RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST 3// RUN: llvm-mc -triple=aarch64 -show-encoding -mattr=+sme,+bf16 < %s \ 4// RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST 5// RUN: not llvm-mc -o - -triple=aarch64 -show-encoding %s 2>&1 \ 6// RUN: | FileCheck %s --check-prefix=CHECK-ERROR 7 8bfmlalb z0.S, z1.H, z2.H 9// CHECK-INST: bfmlalb z0.s, z1.h, z2.h 10// CHECK-ENCODING: [0x20,0x80,0xe2,0x64] 11// CHECK-ERROR: instruction requires: bf16 sve or sme 12 13bfmlalt z0.S, z1.H, z2.H 14// CHECK-INST: bfmlalt z0.s, z1.h, z2.h 15// CHECK-ENCODING: [0x20,0x84,0xe2,0x64] 16// CHECK-ERROR: instruction requires: bf16 sve or sme 17 18bfmlalb z0.S, z1.H, z2.H[0] 19// CHECK-INST: bfmlalb z0.s, z1.h, z2.h[0] 20// CHECK-ENCODING: [0x20,0x40,0xe2,0x64] 21// CHECK-ERROR: instruction requires: bf16 sve or sme 22 23bfmlalt z0.S, z1.H, z2.H[0] 24// CHECK-INST: bfmlalt z0.s, z1.h, z2.h[0] 25// CHECK-ENCODING: [0x20,0x44,0xe2,0x64] 26// CHECK-ERROR: instruction requires: bf16 sve or sme 27 28bfmlalb z0.S, z1.H, z2.H[7] 29// CHECK-INST: bfmlalb z0.s, z1.h, z2.h[7] 30// CHECK-ENCODING: [0x20,0x48,0xfa,0x64] 31// CHECK-ERROR: instruction requires: bf16 sve or sme 32 33bfmlalt z0.S, z1.H, z2.H[7] 34// CHECK-INST: bfmlalt z0.s, z1.h, z2.h[7] 35// CHECK-ENCODING: [0x20,0x4c,0xfa,0x64] 36// CHECK-ERROR: instruction requires: bf16 sve or sme 37 38bfmlalt z0.S, z1.H, z7.H[7] 39// CHECK-INST: bfmlalt z0.s, z1.h, z7.h[7] 40// CHECK-ENCODING: [0x20,0x4c,0xff,0x64] 41// CHECK-ERROR: instruction requires: bf16 sve or sme 42 43bfmlalb z10.S, z21.H, z14.H 44// CHECK-INST: bfmlalb z10.s, z21.h, z14.h 45// CHECK-ENCODING: [0xaa,0x82,0xee,0x64] 46// CHECK-ERROR: instruction requires: bf16 sve or sme 47 48bfmlalt z14.S, z10.H, z21.H 49// CHECK-INST: bfmlalt z14.s, z10.h, z21.h 50// CHECK-ENCODING: [0x4e,0x85,0xf5,0x64] 51// CHECK-ERROR: instruction requires: bf16 sve or sme 52 53bfmlalb z21.s, z14.h, z3.h[2] 54// CHECK-INST: bfmlalb z21.s, z14.h, z3.h[2] 55// CHECK-ENCODING: [0xd5,0x41,0xeb,0x64] 56// CHECK-ERROR: instruction requires: bf16 sve or sme 57 58// --------------------------------------------------------------------------// 59// Test compatibility with MOVPRFX instruction. 60 61movprfx z0, z7 62// CHECK-INST: movprfx z0, z7 63// CHECK-ENCODING: [0xe0,0xbc,0x20,0x04] 64// CHECK-ERROR: instruction requires: sve or sme 65 66bfmlalb z0.S, z1.H, z2.H 67// CHECK-INST: bfmlalb z0.s, z1.h, z2.h 68// CHECK-ENCODING: [0x20,0x80,0xe2,0x64] 69// CHECK-ERROR: instruction requires: bf16 sve or sme 70 71movprfx z0, z7 72// CHECK-INST: movprfx z0, z7 73// CHECK-ENCODING: [0xe0,0xbc,0x20,0x04] 74// CHECK-ERROR: instruction requires: sve or sme 75 76bfmlalt z0.S, z1.H, z2.H 77// CHECK-INST: bfmlalt z0.s, z1.h, z2.h 78// CHECK-ENCODING: [0x20,0x84,0xe2,0x64] 79// CHECK-ERROR: instruction requires: bf16 sve or sme 80 81movprfx z0, z7 82// CHECK-INST: movprfx z0, z7 83// CHECK-ENCODING: [0xe0,0xbc,0x20,0x04] 84// CHECK-ERROR: instruction requires: sve or sme 85 86bfmlalb z0.S, z1.H, z2.H[0] 87// CHECK-INST: bfmlalb z0.s, z1.h, z2.h[0] 88// CHECK-ENCODING: [0x20,0x40,0xe2,0x64] 89// CHECK-ERROR: instruction requires: bf16 sve or sme 90 91movprfx z0, z7 92// CHECK-INST: movprfx z0, z7 93// CHECK-ENCODING: [0xe0,0xbc,0x20,0x04] 94// CHECK-ERROR: instruction requires: sve or sme 95 96bfmlalt z0.S, z1.H, z2.H[0] 97// CHECK-INST: bfmlalt z0.s, z1.h, z2.h[0] 98// CHECK-ENCODING: [0x20,0x44,0xe2,0x64] 99// CHECK-ERROR: instruction requires: bf16 sve or sme 100 101movprfx z0, z7 102// CHECK-INST: movprfx z0, z7 103// CHECK-ENCODING: [0xe0,0xbc,0x20,0x04] 104// CHECK-ERROR: instruction requires: sve or sme 105 106bfmlalb z0.S, z1.H, z2.H[7] 107// CHECK-INST: bfmlalb z0.s, z1.h, z2.h[7] 108// CHECK-ENCODING: [0x20,0x48,0xfa,0x64] 109// CHECK-ERROR: instruction requires: bf16 sve or sme 110 111movprfx z0, z7 112// CHECK-INST: movprfx z0, z7 113// CHECK-ENCODING: [0xe0,0xbc,0x20,0x04] 114// CHECK-ERROR: instruction requires: sve or sme 115 116bfmlalt z0.S, z1.H, z2.H[7] 117// CHECK-INST: bfmlalt z0.s, z1.h, z2.h[7] 118// CHECK-ENCODING: [0x20,0x4c,0xfa,0x64] 119// CHECK-ERROR: instruction requires: bf16 sve or sme 120 121movprfx z0, z7 122// CHECK-INST: movprfx z0, z7 123// CHECK-ENCODING: [0xe0,0xbc,0x20,0x04] 124// CHECK-ERROR: instruction requires: sve or sme 125 126bfmlalt z0.S, z1.H, z7.H[7] 127// CHECK-INST: bfmlalt z0.s, z1.h, z7.h[7] 128// CHECK-ENCODING: [0x20,0x4c,0xff,0x64] 129// CHECK-ERROR: instruction requires: bf16 sve or sme 130 131movprfx z10, z7 132// CHECK-INST: movprfx z10, z7 133// CHECK-ENCODING: [0xea,0xbc,0x20,0x04] 134// CHECK-ERROR: instruction requires: sve or sme 135 136bfmlalb z10.S, z21.H, z14.H 137// CHECK-INST: bfmlalb z10.s, z21.h, z14.h 138// CHECK-ENCODING: [0xaa,0x82,0xee,0x64] 139// CHECK-ERROR: instruction requires: bf16 sve or sme 140 141movprfx z14, z7 142// CHECK-INST: movprfx z14, z7 143// CHECK-ENCODING: [0xee,0xbc,0x20,0x04] 144// CHECK-ERROR: instruction requires: sve or sme 145 146bfmlalt z14.S, z10.H, z21.H 147// CHECK-INST: bfmlalt z14.s, z10.h, z21.h 148// CHECK-ENCODING: [0x4e,0x85,0xf5,0x64] 149// CHECK-ERROR: instruction requires: bf16 sve or sme 150 151movprfx z21, z7 152// CHECK-INST: movprfx z21, z7 153// CHECK-ENCODING: [0xf5,0xbc,0x20,0x04] 154// CHECK-ERROR: instruction requires: sve or sme 155 156bfmlalb z21.s, z14.h, z3.h[2] 157// CHECK-INST: bfmlalb z21.s, z14.h, z3.h[2] 158// CHECK-ENCODING: [0xd5,0x41,0xeb,0x64] 159// CHECK-ERROR: instruction requires: bf16 sve or sme 160