1// RUN: llvm-mc -triple=aarch64 -show-encoding -mattr=+sme-f64 < %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=+sme-f64 < %s \
6// RUN:        | llvm-objdump -d --mattr=+sme-f64 - | FileCheck %s --check-prefix=CHECK-INST
7// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+sme-f64 < %s \
8// RUN:        | llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-UNKNOWN
9// Disassemble encoding and check the re-encoding (-show-encoding) matches.
10// RUN: llvm-mc -triple=aarch64 -show-encoding -mattr=+sme-f64 < %s \
11// RUN:        | sed '/.text/d' | sed 's/.*encoding: //g' \
12// RUN:        | llvm-mc -triple=aarch64 -mattr=+sme-f64 -disassemble -show-encoding \
13// RUN:        | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST
14
15// --------------------------------------------------------------------------//
16// Non-widening (double-precision)
17
18fmopa   za0.d, p0/m, p0/m, z0.d, z0.d
19// CHECK-INST: fmopa   za0.d, p0/m, p0/m, z0.d, z0.d
20// CHECK-ENCODING: [0x00,0x00,0xc0,0x80]
21// CHECK-ERROR: instruction requires: sme-f64
22// CHECK-UNKNOWN: 00 00 c0 80 <unknown>
23
24fmopa   za5.d, p5/m, p2/m, z10.d, z21.d
25// CHECK-INST: fmopa   za5.d, p5/m, p2/m, z10.d, z21.d
26// CHECK-ENCODING: [0x45,0x55,0xd5,0x80]
27// CHECK-ERROR: instruction requires: sme-f64
28// CHECK-UNKNOWN: 45 55 d5 80 <unknown>
29
30fmopa   za7.d, p3/m, p7/m, z13.d, z8.d
31// CHECK-INST: fmopa   za7.d, p3/m, p7/m, z13.d, z8.d
32// CHECK-ENCODING: [0xa7,0xed,0xc8,0x80]
33// CHECK-ERROR: instruction requires: sme-f64
34// CHECK-UNKNOWN: a7 ed c8 80 <unknown>
35
36fmopa   za7.d, p7/m, p7/m, z31.d, z31.d
37// CHECK-INST: fmopa   za7.d, p7/m, p7/m, z31.d, z31.d
38// CHECK-ENCODING: [0xe7,0xff,0xdf,0x80]
39// CHECK-ERROR: instruction requires: sme-f64
40// CHECK-UNKNOWN: e7 ff df 80 <unknown>
41
42fmopa   za5.d, p3/m, p0/m, z17.d, z16.d
43// CHECK-INST: fmopa   za5.d, p3/m, p0/m, z17.d, z16.d
44// CHECK-ENCODING: [0x25,0x0e,0xd0,0x80]
45// CHECK-ERROR: instruction requires: sme-f64
46// CHECK-UNKNOWN: 25 0e d0 80 <unknown>
47
48fmopa   za1.d, p1/m, p4/m, z1.d, z30.d
49// CHECK-INST: fmopa   za1.d, p1/m, p4/m, z1.d, z30.d
50// CHECK-ENCODING: [0x21,0x84,0xde,0x80]
51// CHECK-ERROR: instruction requires: sme-f64
52// CHECK-UNKNOWN: 21 84 de 80 <unknown>
53
54fmopa   za0.d, p5/m, p2/m, z19.d, z20.d
55// CHECK-INST: fmopa   za0.d, p5/m, p2/m, z19.d, z20.d
56// CHECK-ENCODING: [0x60,0x56,0xd4,0x80]
57// CHECK-ERROR: instruction requires: sme-f64
58// CHECK-UNKNOWN: 60 56 d4 80 <unknown>
59
60fmopa   za0.d, p6/m, p0/m, z12.d, z2.d
61// CHECK-INST: fmopa   za0.d, p6/m, p0/m, z12.d, z2.d
62// CHECK-ENCODING: [0x80,0x19,0xc2,0x80]
63// CHECK-ERROR: instruction requires: sme-f64
64// CHECK-UNKNOWN: 80 19 c2 80 <unknown>
65
66fmopa   za1.d, p2/m, p6/m, z1.d, z26.d
67// CHECK-INST: fmopa   za1.d, p2/m, p6/m, z1.d, z26.d
68// CHECK-ENCODING: [0x21,0xc8,0xda,0x80]
69// CHECK-ERROR: instruction requires: sme-f64
70// CHECK-UNKNOWN: 21 c8 da 80 <unknown>
71
72fmopa   za5.d, p2/m, p0/m, z22.d, z30.d
73// CHECK-INST: fmopa   za5.d, p2/m, p0/m, z22.d, z30.d
74// CHECK-ENCODING: [0xc5,0x0a,0xde,0x80]
75// CHECK-ERROR: instruction requires: sme-f64
76// CHECK-UNKNOWN: c5 0a de 80 <unknown>
77
78fmopa   za2.d, p5/m, p7/m, z9.d, z1.d
79// CHECK-INST: fmopa   za2.d, p5/m, p7/m, z9.d, z1.d
80// CHECK-ENCODING: [0x22,0xf5,0xc1,0x80]
81// CHECK-ERROR: instruction requires: sme-f64
82// CHECK-UNKNOWN: 22 f5 c1 80 <unknown>
83
84fmopa   za7.d, p2/m, p5/m, z12.d, z11.d
85// CHECK-INST: fmopa   za7.d, p2/m, p5/m, z12.d, z11.d
86// CHECK-ENCODING: [0x87,0xa9,0xcb,0x80]
87// CHECK-ERROR: instruction requires: sme-f64
88// CHECK-UNKNOWN: 87 a9 cb 80 <unknown>
89