xref: /llvm-project/llvm/test/MC/AArch64/SVE/bfmlal.s (revision 9c38fc111b9e1319ffa8e4a165e40ff7c7814406)
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