1dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// RUN: llvm-mc -triple=arm64 -mattr=+neon -show-encoding < %s | FileCheck %s
2beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu
3beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu// Check that the assembler can handle the documented syntax for AArch64
4beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu
5beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu//------------------------------------------------------------------------------
6beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu// Instructions across vector registers
7beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu//------------------------------------------------------------------------------
8beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu
9beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu        saddlv h0, v1.8b
10beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu        saddlv h0, v1.16b
11beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu        saddlv s0, v1.4h
12beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu        saddlv s0, v1.8h
13beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu        saddlv d0, v1.4s
14beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu
15beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu// CHECK: saddlv	h0, v1.8b               // encoding: [0x20,0x38,0x30,0x0e]
16beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu// CHECK: saddlv	h0, v1.16b              // encoding: [0x20,0x38,0x30,0x4e]
17beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu// CHECK: saddlv	s0, v1.4h               // encoding: [0x20,0x38,0x70,0x0e]
18beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu// CHECK: saddlv	s0, v1.8h               // encoding: [0x20,0x38,0x70,0x4e]
19beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu// CHECK: saddlv	d0, v1.4s               // encoding: [0x20,0x38,0xb0,0x4e]
20beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu
21beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu        uaddlv h0, v1.8b
22beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu        uaddlv h0, v1.16b
23beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu        uaddlv s0, v1.4h
24beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu        uaddlv s0, v1.8h
25beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu        uaddlv d0, v1.4s
26beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu
27beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu// CHECK: uaddlv	h0, v1.8b               // encoding: [0x20,0x38,0x30,0x2e]
28beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu// CHECK: uaddlv	h0, v1.16b              // encoding: [0x20,0x38,0x30,0x6e]
29beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu// CHECK: uaddlv	s0, v1.4h               // encoding: [0x20,0x38,0x70,0x2e]
30beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu// CHECK: uaddlv	s0, v1.8h               // encoding: [0x20,0x38,0x70,0x6e]
31beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu// CHECK: uaddlv	d0, v1.4s               // encoding: [0x20,0x38,0xb0,0x6e]
32beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu
33beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu        smaxv b0, v1.8b
34beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu        smaxv b0, v1.16b
35beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu        smaxv h0, v1.4h
36beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu        smaxv h0, v1.8h
37beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu        smaxv s0, v1.4s
38beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu
39beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu// CHECK: smaxv	b0, v1.8b               // encoding: [0x20,0xa8,0x30,0x0e]
40beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu// CHECK: smaxv	b0, v1.16b              // encoding: [0x20,0xa8,0x30,0x4e]
41beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu// CHECK: smaxv	h0, v1.4h               // encoding: [0x20,0xa8,0x70,0x0e]
42beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu// CHECK: smaxv	h0, v1.8h               // encoding: [0x20,0xa8,0x70,0x4e]
43beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu// CHECK: smaxv	s0, v1.4s               // encoding: [0x20,0xa8,0xb0,0x4e]
44beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu
45beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu        sminv b0, v1.8b
46beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu        sminv b0, v1.16b
47beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu        sminv h0, v1.4h
48beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu        sminv h0, v1.8h
49beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu        sminv s0, v1.4s
50beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu
51beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu// CHECK: sminv	b0, v1.8b               // encoding: [0x20,0xa8,0x31,0x0e]
52beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu// CHECK: sminv	b0, v1.16b              // encoding: [0x20,0xa8,0x31,0x4e]
53beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu// CHECK: sminv	h0, v1.4h               // encoding: [0x20,0xa8,0x71,0x0e]
54beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu// CHECK: sminv	h0, v1.8h               // encoding: [0x20,0xa8,0x71,0x4e]
55beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu// CHECK: sminv	s0, v1.4s               // encoding: [0x20,0xa8,0xb1,0x4e]
56beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu
57beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu        umaxv b0, v1.8b
58beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu        umaxv b0, v1.16b
59beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu        umaxv h0, v1.4h
60beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu        umaxv h0, v1.8h
61beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu        umaxv s0, v1.4s
62beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu
63beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu// CHECK: umaxv	b0, v1.8b               // encoding: [0x20,0xa8,0x30,0x2e]
64beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu// CHECK: umaxv	b0, v1.16b              // encoding: [0x20,0xa8,0x30,0x6e]
65beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu// CHECK: umaxv	h0, v1.4h               // encoding: [0x20,0xa8,0x70,0x2e]
66beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu// CHECK: umaxv	h0, v1.8h               // encoding: [0x20,0xa8,0x70,0x6e]
67beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu// CHECK: umaxv	s0, v1.4s               // encoding: [0x20,0xa8,0xb0,0x6e]
68beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu
69beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu        uminv b0, v1.8b
70beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu        uminv b0, v1.16b
71beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu        uminv h0, v1.4h
72beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu        uminv h0, v1.8h
73beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu        uminv s0, v1.4s
74beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu
75beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu// CHECK: uminv	b0, v1.8b               // encoding: [0x20,0xa8,0x31,0x2e]
76beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu// CHECK: uminv	b0, v1.16b              // encoding: [0x20,0xa8,0x31,0x6e]
77beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu// CHECK: uminv	h0, v1.4h               // encoding: [0x20,0xa8,0x71,0x2e]
78beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu// CHECK: uminv	h0, v1.8h               // encoding: [0x20,0xa8,0x71,0x6e]
79beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu// CHECK: uminv	s0, v1.4s               // encoding: [0x20,0xa8,0xb1,0x6e]
80beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu
81beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu        addv b0, v1.8b
82beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu        addv b0, v1.16b
83beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu        addv h0, v1.4h
84beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu        addv h0, v1.8h
85beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu        addv s0, v1.4s
86beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu
87beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu// CHECK: addv	b0, v1.8b               // encoding: [0x20,0xb8,0x31,0x0e]
88beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu// CHECK: addv	b0, v1.16b              // encoding: [0x20,0xb8,0x31,0x4e]
89beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu// CHECK: addv	h0, v1.4h               // encoding: [0x20,0xb8,0x71,0x0e]
90beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu// CHECK: addv	h0, v1.8h               // encoding: [0x20,0xb8,0x71,0x4e]
91beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu// CHECK: addv	s0, v1.4s               // encoding: [0x20,0xb8,0xb1,0x4e]
92beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu
93beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu        fmaxnmv s0, v1.4s
94beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu        fminnmv s0, v1.4s
95beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu        fmaxv s0, v1.4s
96beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu        fminv s0, v1.4s
97beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu
98beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu// CHECK: fmaxnmv	s0, v1.4s               // encoding: [0x20,0xc8,0x30,0x6e]
99beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu// CHECK: fminnmv	s0, v1.4s               // encoding: [0x20,0xc8,0xb0,0x6e]
100beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu// CHECK: fmaxv	s0, v1.4s               // encoding: [0x20,0xf8,0x30,0x6e]
101beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu// CHECK: fminv	s0, v1.4s               // encoding: [0x20,0xf8,0xb0,0x6e]
102