xref: /llvm-project/llvm/test/MC/AArch64/armv8.4a-flag.s (revision 7d4a8bc417bf75b5e4034674a4255173d0089e68)
1// RUN: llvm-mc -triple aarch64-none-linux-gnu -show-encoding -mattr=+v8.4a %s -o - | \
2// RUN: FileCheck %s
3
4// RUN: llvm-mc -triple aarch64-none-linux-gnu -show-encoding -mattr=+flagm %s -o - 2>&1 | \
5// RUN: FileCheck %s
6
7// RUN: not llvm-mc -triple aarch64-none-linux-gnu -show-encoding -mattr=-v8.4a %s -o - 2>&1 | \
8// RUN: FileCheck %s --check-prefix=ERROR
9
10// RUN: not llvm-mc -triple aarch64-none-linux-gnu -show-encoding -mattr=+v8.4a,-flagm %s -o - 2>&1 | \
11// RUN: FileCheck %s --check-prefix=ERROR
12
13//------------------------------------------------------------------------------
14// Armv8.4-A flag manipulation instructions
15//------------------------------------------------------------------------------
16
17  cfinv
18  setf8 w1
19  setf8 wzr
20  setf16 w1
21  setf16 wzr
22  rmif x1, #63, #15
23  rmif xzr, #63, #15
24
25//CHECK:      cfinv                        // encoding: [0x1f,0x40,0x00,0xd5]
26//CHECK-NEXT: setf8 w1                     // encoding: [0x2d,0x08,0x00,0x3a]
27//CHECK-NEXT: setf8 wzr                    // encoding: [0xed,0x0b,0x00,0x3a]
28//CHECK-NEXT: setf16 w1                    // encoding: [0x2d,0x48,0x00,0x3a]
29//CHECK-NEXT: setf16 wzr                   // encoding: [0xed,0x4b,0x00,0x3a]
30//CHECK-NEXT: rmif x1, #63, #15            // encoding: [0x2f,0x84,0x1f,0xba]
31//CHECK-NEXT: rmif xzr, #63, #15           // encoding: [0xef,0x87,0x1f,0xba]
32
33//ERROR:      error: instruction requires: flagm
34//ERROR-NEXT: cfinv
35//ERROR-NEXT: ^
36//ERROR-NEXT: error: instruction requires: flagm
37//ERROR-NEXT: setf8 w1
38//ERROR-NEXT: ^
39//ERROR-NEXT: error: instruction requires: flagm
40//ERROR-NEXT: setf8 wzr
41//ERROR-NEXT: ^
42//ERROR-NEXT: error: instruction requires: flagm
43//ERROR-NEXT: setf16 w1
44//ERROR-NEXT: ^
45//ERROR-NEXT: error: instruction requires: flagm
46//ERROR-NEXT: setf16 wzr
47//ERROR-NEXT: ^
48//ERROR-NEXT: error: instruction requires: flagm
49//ERROR-NEXT: rmif x1, #63, #15
50//ERROR-NEXT: ^
51//ERROR-NEXT: error: instruction requires: flagm
52//ERROR-NEXT: rmif xzr, #63, #15
53//ERROR-NEXT: ^
54