xref: /llvm-project/llvm/test/MC/AArch64/SVE/matrix-multiply-int8.s (revision ae16b2ed9871b5624fdcb4286fbd0d6ddfd88961)
1// RUN: llvm-mc -triple=aarch64 -show-encoding -mattr=+sve,+i8mm < %s \
2// RUN:        | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST
3// RUN: not llvm-mc -triple=aarch64 -show-encoding < %s 2>&1 \
4// RUN:        | FileCheck %s --check-prefix=CHECK-ERROR
5// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+sve,+i8mm < %s \
6// RUN:        | llvm-objdump -d --mattr=+sve,+i8mm - | FileCheck %s --check-prefix=CHECK-INST
7// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+sve,+i8mm < %s \
8// RUN:   | llvm-objdump -d --mattr=-sve - | FileCheck %s --check-prefix=CHECK-UNKNOWN
9
10
11// --------------------------------------------------------------------------//
12// SMMLA, UMMLA, USMMLA (SVE)
13
14ummla z0.s, z1.b, z2.b
15// CHECK-INST: ummla z0.s, z1.b, z2.b
16// CHECK-ENCODING: [0x20,0x98,0xc2,0x45]
17// CHECK-ERROR: instruction requires: i8mm sve
18// CHECK-UNKNOWN: 45c29820 <unknown>
19
20smmla z0.s, z1.b, z2.b
21// CHECK-INST: smmla z0.s, z1.b, z2.b
22// CHECK-ENCODING: [0x20,0x98,0x02,0x45]
23// CHECK-ERROR: instruction requires: i8mm sve
24// CHECK-UNKNOWN: 45029820 <unknown>
25
26usmmla z0.s, z1.b, z2.b
27// CHECK-INST: usmmla z0.s, z1.b, z2.b
28// CHECK-ENCODING: [0x20,0x98,0x82,0x45]
29// CHECK-ERROR: instruction requires: i8mm sve
30// CHECK-UNKNOWN: 45829820 <unknown>
31
32
33// Test compatibility with MOVPRFX instruction.
34
35movprfx z0, z7
36// CHECK-INST: movprfx	z0, z7
37// CHECK-ENCODING: [0xe0,0xbc,0x20,0x04]
38// CHECK-UNKNOWN: 0420bce0 <unknown>
39
40ummla z0.s, z1.b, z2.b
41// CHECK-INST: ummla z0.s, z1.b, z2.b
42// CHECK-ENCODING: [0x20,0x98,0xc2,0x45]
43// CHECK-ERROR: instruction requires: i8mm sve
44// CHECK-UNKNOWN: 45c29820 <unknown>
45
46movprfx z0, z7
47// CHECK-INST: movprfx	z0, z7
48// CHECK-ENCODING: [0xe0,0xbc,0x20,0x04]
49// CHECK-UNKNOWN: 0420bce0 <unknown>
50
51smmla z0.s, z1.b, z2.b
52// CHECK-INST: smmla z0.s, z1.b, z2.b
53// CHECK-ENCODING: [0x20,0x98,0x02,0x45]
54// CHECK-ERROR: instruction requires: i8mm sve
55// CHECK-UNKNOWN: 45029820 <unknown>
56
57movprfx z0, z7
58// CHECK-INST: movprfx	z0, z7
59// CHECK-ENCODING: [0xe0,0xbc,0x20,0x04]
60// CHECK-UNKNOWN: 0420bce0 <unknown>
61
62usmmla z0.s, z1.b, z2.b
63// CHECK-INST: usmmla z0.s, z1.b, z2.b
64// CHECK-ENCODING: [0x20,0x98,0x82,0x45]
65// CHECK-ERROR: instruction requires: i8mm sve
66// CHECK-UNKNOWN: 45829820 <unknown>
67
68
69// --------------------------------------------------------------------------//
70// USDOT (SVE, vectors)
71
72usdot z0.s, z1.b, z2.b
73// CHECK-INST: usdot z0.s, z1.b, z2.b
74// CHECK-ENCODING: [0x20,0x78,0x82,0x44]
75// CHECK-ERROR: instruction requires: i8mm sve or sme
76// CHECK-UNKNOWN: 44827820 <unknown>
77
78// Test compatibility with MOVPRFX instruction.
79
80movprfx z0, z7
81// CHECK-INST: movprfx	z0, z7
82// CHECK-ENCODING: [0xe0,0xbc,0x20,0x04]
83// CHECK-UNKNOWN: 0420bce0 <unknown>
84
85usdot z0.s, z1.b, z2.b
86// CHECK-INST: usdot z0.s, z1.b, z2.b
87// CHECK-ENCODING: [0x20,0x78,0x82,0x44]
88// CHECK-ERROR: instruction requires: i8mm sve or sme
89// CHECK-UNKNOWN: 44827820 <unknown>
90
91
92// --------------------------------------------------------------------------//
93// USDOT, SUDOT (SVE, indexed)
94
95usdot z0.s, z1.b, z2.b[0]
96// CHECK-INST: usdot z0.s, z1.b, z2.b[0]
97// CHECK-ENCODING: [0x20,0x18,0xa2,0x44]
98// CHECK-ERROR: instruction requires: i8mm sve or sme
99// CHECK-UNKNOWN: 44a21820 <unknown>
100
101sudot z0.s, z1.b, z2.b[3]
102// CHECK-INST: sudot z0.s, z1.b, z2.b[3]
103// CHECK-ENCODING: [0x20,0x1c,0xba,0x44]
104// CHECK-ERROR: instruction requires: i8mm sve or sme
105// CHECK-UNKNOWN: 44ba1c20 <unknown>
106
107// Test compatibility with MOVPRFX instruction.
108
109movprfx z0, z7
110// CHECK-INST: movprfx	z0, z7
111// CHECK-ENCODING: [0xe0,0xbc,0x20,0x04]
112// CHECK-UNKNOWN: 0420bce0 <unknown>
113
114usdot z0.s, z1.b, z2.b[0]
115// CHECK-INST: usdot z0.s, z1.b, z2.b[0]
116// CHECK-ENCODING: [0x20,0x18,0xa2,0x44]
117// CHECK-ERROR: instruction requires: i8mm sve or sme
118// CHECK-UNKNOWN: 44a21820 <unknown>
119
120movprfx z0, z7
121// CHECK-INST: movprfx	z0, z7
122// CHECK-ENCODING: [0xe0,0xbc,0x20,0x04]
123// CHECK-UNKNOWN: 0420bce0 <unknown>
124
125sudot z0.s, z1.b, z2.b[0]
126// CHECK-INST: sudot z0.s, z1.b, z2.b[0]
127// CHECK-ENCODING: [0x20,0x1c,0xa2,0x44]
128// CHECK-ERROR: instruction requires: i8mm sve or sme
129// CHECK-UNKNOWN: 44a21c20 <unknown>
130