1f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar// RUN: llvm-mc -triple=arm64 -mattr=+neon,+fullfp16 -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
93f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar        fmaxnmv h0, v1.4h
94f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar        fminnmv h0, v1.4h
95f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar        fmaxv h0, v1.4h
96f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar        fminv h0, v1.4h
97f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar        fmaxnmv h0, v1.8h
98f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar        fminnmv h0, v1.8h
99f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar        fmaxv h0, v1.8h
100f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar        fminv h0, v1.8h
101beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu        fmaxnmv s0, v1.4s
102beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu        fminnmv s0, v1.4s
103beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu        fmaxv s0, v1.4s
104beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu        fminv s0, v1.4s
105beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu
106f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar// CHECK: fmaxnmv h0, v1.4h               // encoding: [0x20,0xc8,0x30,0x0e]
107f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar// CHECK: fminnmv h0, v1.4h               // encoding: [0x20,0xc8,0xb0,0x0e]
108f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar// CHECK: fmaxv   h0, v1.4h               // encoding: [0x20,0xf8,0x30,0x0e]
109f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar// CHECK: fminv   h0, v1.4h               // encoding: [0x20,0xf8,0xb0,0x0e]
110f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar// CHECK: fmaxnmv h0, v1.8h               // encoding: [0x20,0xc8,0x30,0x4e]
111f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar// CHECK: fminnmv h0, v1.8h               // encoding: [0x20,0xc8,0xb0,0x4e]
112f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar// CHECK: fmaxv   h0, v1.8h               // encoding: [0x20,0xf8,0x30,0x4e]
113f3ef5332fa3f4d5ec72c178a2b19dac363a19383Pirama Arumuga Nainar// CHECK: fminv   h0, v1.8h               // encoding: [0x20,0xf8,0xb0,0x4e]
114beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu// CHECK: fmaxnmv	s0, v1.4s               // encoding: [0x20,0xc8,0x30,0x6e]
115beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu// CHECK: fminnmv	s0, v1.4s               // encoding: [0x20,0xc8,0xb0,0x6e]
116beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu// CHECK: fmaxv	s0, v1.4s               // encoding: [0x20,0xf8,0x30,0x6e]
117beb6afa84397a27e48a9d72ac1d588bc6fcaf564Jiangning Liu// CHECK: fminv	s0, v1.4s               // encoding: [0x20,0xf8,0xb0,0x6e]
118