113c83a2a09a0842ff57ec020fe3f534de766ccd1Chad Rosier// RUN: llvm-mc -triple=aarch64-none-linux-gnu -mattr=+neon -show-encoding < %s | FileCheck %s
2e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin
3e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin// Check that the assembler can handle the documented syntax for AArch64
4e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin
5e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin
6e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin//------------------------------------------------------------------------------
7e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin// Insert element (vector, from main)
8e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin//------------------------------------------------------------------------------
9e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin         ins v2.b[2], w1
10e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin         ins v7.h[7], w14
11e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin         ins v20.s[0], w30
12e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin         ins v1.d[1], x7
13e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin
1469b2447b6a3fcc303e03cba8c7c50d745b0284d2Kevin Qin         mov v2.b[2], w1
1569b2447b6a3fcc303e03cba8c7c50d745b0284d2Kevin Qin         mov v7.h[7], w14
1669b2447b6a3fcc303e03cba8c7c50d745b0284d2Kevin Qin         mov v20.s[0], w30
1769b2447b6a3fcc303e03cba8c7c50d745b0284d2Kevin Qin         mov v1.d[1], x7
1869b2447b6a3fcc303e03cba8c7c50d745b0284d2Kevin Qin
19dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// CHECK: {{mov|ins}}	v2.b[2], w1           // encoding: [0x22,0x1c,0x05,0x4e]
20dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// CHECK: {{mov|ins}}	v7.h[7], w14          // encoding: [0xc7,0x1d,0x1e,0x4e]
21dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// CHECK: {{mov|ins}}	v20.s[0], w30         // encoding: [0xd4,0x1f,0x04,0x4e]
22dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// CHECK: {{mov|ins}}	v1.d[1], x7           // encoding: [0xe1,0x1c,0x18,0x4e]
23e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin
24dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// CHECK: {{mov|ins}} v2.b[2], w1           // encoding: [0x22,0x1c,0x05,0x4e]
25dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// CHECK: {{mov|ins}} v7.h[7], w14          // encoding: [0xc7,0x1d,0x1e,0x4e]
26dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// CHECK: {{mov|ins}} v20.s[0], w30         // encoding: [0xd4,0x1f,0x04,0x4e]
27dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// CHECK: {{mov|ins}} v1.d[1], x7           // encoding: [0xe1,0x1c,0x18,0x4e]
2869b2447b6a3fcc303e03cba8c7c50d745b0284d2Kevin Qin
29e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin
30e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin//------------------------------------------------------------------------------
31e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin// Signed integer move (main, from element)
32e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin//------------------------------------------------------------------------------
33e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin         smov w1, v0.b[15]
34e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin         smov w14, v6.h[4]
35e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin         smov x1, v0.b[15]
36e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin         smov x14, v6.h[4]
37e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin         smov x20, v9.s[2]
38e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin
39e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin// CHECK: smov	w1, v0.b[15]          // encoding: [0x01,0x2c,0x1f,0x0e]
40e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin// CHECK: smov	w14, v6.h[4]          // encoding: [0xce,0x2c,0x12,0x0e]
41e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin// CHECK: smov	x1, v0.b[15]          // encoding: [0x01,0x2c,0x1f,0x4e]
42e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin// CHECK: smov	x14, v6.h[4]          // encoding: [0xce,0x2c,0x12,0x4e]
4369b2447b6a3fcc303e03cba8c7c50d745b0284d2Kevin Qin// CHECK: smov	x20, v9.s[2]          // encoding: [0x34,0x2d,0x14,0x4e]
44e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin
45e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin
46e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin//------------------------------------------------------------------------------
47e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin// Unsigned integer move (main, from element)
48e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin//------------------------------------------------------------------------------
49e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin         umov w1, v0.b[15]
50e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin         umov w14, v6.h[4]
51e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin         umov w20, v9.s[2]
52e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin         umov x7, v18.d[1]
53e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin
5469b2447b6a3fcc303e03cba8c7c50d745b0284d2Kevin Qin         mov w20, v9.s[2]
5569b2447b6a3fcc303e03cba8c7c50d745b0284d2Kevin Qin         mov x7, v18.d[1]
5669b2447b6a3fcc303e03cba8c7c50d745b0284d2Kevin Qin
57dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// CHECK: {{mov|umov}}	w1, v0.b[15]          // encoding: [0x01,0x3c,0x1f,0x0e]
58dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// CHECK: {{mov|umov}}	w14, v6.h[4]          // encoding: [0xce,0x3c,0x12,0x0e]
59dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// CHECK: {{mov|umov}}	w20, v9.s[2]          // encoding: [0x34,0x3d,0x14,0x0e]
60dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// CHECK: {{mov|umov}}	x7, v18.d[1]          // encoding: [0x47,0x3e,0x18,0x4e]
61e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin
62dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// CHECK: {{mov|umov}}  w20, v9.s[2]          // encoding: [0x34,0x3d,0x14,0x0e]
63dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// CHECK: {{mov|umov}}  x7, v18.d[1]          // encoding: [0x47,0x3e,0x18,0x4e]
6469b2447b6a3fcc303e03cba8c7c50d745b0284d2Kevin Qin
65e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin//------------------------------------------------------------------------------
66e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin// Insert element (vector, from element)
67e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin//------------------------------------------------------------------------------
68e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin
6969b2447b6a3fcc303e03cba8c7c50d745b0284d2Kevin Qin         ins v1.b[14], v3.b[6]
7069b2447b6a3fcc303e03cba8c7c50d745b0284d2Kevin Qin         ins v6.h[7], v7.h[5]
7169b2447b6a3fcc303e03cba8c7c50d745b0284d2Kevin Qin         ins v15.s[3], v22.s[2]
7269b2447b6a3fcc303e03cba8c7c50d745b0284d2Kevin Qin         ins v0.d[0], v4.d[1]
7369b2447b6a3fcc303e03cba8c7c50d745b0284d2Kevin Qin
7469b2447b6a3fcc303e03cba8c7c50d745b0284d2Kevin Qin         mov v1.b[14], v3.b[6]
7569b2447b6a3fcc303e03cba8c7c50d745b0284d2Kevin Qin         mov v6.h[7], v7.h[5]
7669b2447b6a3fcc303e03cba8c7c50d745b0284d2Kevin Qin         mov v15.s[3], v22.s[2]
7769b2447b6a3fcc303e03cba8c7c50d745b0284d2Kevin Qin         mov v0.d[0], v4.d[1]
78e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin
79dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// CHECK: {{mov|ins}}	v1.b[14], v3.b[6]       // encoding: [0x61,0x34,0x1d,0x6e]
80dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// CHECK: {{mov|ins}}	v6.h[7], v7.h[5]        // encoding: [0xe6,0x54,0x1e,0x6e]
81dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// CHECK: {{mov|ins}}	v15.s[3], v22.s[2]      // encoding: [0xcf,0x46,0x1c,0x6e]
82dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// CHECK: {{mov|ins}}	v0.d[0], v4.d[1]        // encoding: [0x80,0x44,0x08,0x6e]
83e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin
84dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// CHECK: {{mov|ins}} v1.b[14], v3.b[6]       // encoding: [0x61,0x34,0x1d,0x6e]
85dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// CHECK: {{mov|ins}} v6.h[7], v7.h[5]        // encoding: [0xe6,0x54,0x1e,0x6e]
86dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// CHECK: {{mov|ins}} v15.s[3], v22.s[2]      // encoding: [0xcf,0x46,0x1c,0x6e]
87dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// CHECK: {{mov|ins}} v0.d[0], v4.d[1]        // encoding: [0x80,0x44,0x08,0x6e]
8869b2447b6a3fcc303e03cba8c7c50d745b0284d2Kevin Qin
89767f816b926376bd850a62a28d35343ad0559c91Kevin Qin//------------------------------------------------------------------------------
90767f816b926376bd850a62a28d35343ad0559c91Kevin Qin// Duplicate to all lanes( vector, from element)
91767f816b926376bd850a62a28d35343ad0559c91Kevin Qin//------------------------------------------------------------------------------
92767f816b926376bd850a62a28d35343ad0559c91Kevin Qin         dup v1.8b, v2.b[2]
93767f816b926376bd850a62a28d35343ad0559c91Kevin Qin         dup v11.4h, v7.h[7]
94767f816b926376bd850a62a28d35343ad0559c91Kevin Qin         dup v17.2s, v20.s[0]
95767f816b926376bd850a62a28d35343ad0559c91Kevin Qin         dup v1.16b, v2.b[2]
96767f816b926376bd850a62a28d35343ad0559c91Kevin Qin         dup v11.8h, v7.h[7]
97767f816b926376bd850a62a28d35343ad0559c91Kevin Qin         dup v17.4s, v20.s[0]
98767f816b926376bd850a62a28d35343ad0559c91Kevin Qin         dup v5.2d, v1.d[1]
99767f816b926376bd850a62a28d35343ad0559c91Kevin Qin
100dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// CHECK: {{mov|dup}} v1.8b, v2.b[2]        // encoding: [0x41,0x04,0x05,0x0e]
101dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// CHECK: {{mov|dup}} v11.4h, v7.h[7]       // encoding: [0xeb,0x04,0x1e,0x0e]
102dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// CHECK: {{mov|dup}} v17.2s, v20.s[0]      // encoding: [0x91,0x06,0x04,0x0e]
103dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// CHECK: {{mov|dup}} v1.16b, v2.b[2]       // encoding: [0x41,0x04,0x05,0x4e]
104dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// CHECK: {{mov|dup}} v11.8h, v7.h[7]       // encoding: [0xeb,0x04,0x1e,0x4e]
105dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// CHECK: {{mov|dup}} v17.4s, v20.s[0]      // encoding: [0x91,0x06,0x04,0x4e]
106dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// CHECK: {{mov|dup}} v5.2d, v1.d[1]        // encoding: [0x25,0x04,0x18,0x4e]
107767f816b926376bd850a62a28d35343ad0559c91Kevin Qin
108767f816b926376bd850a62a28d35343ad0559c91Kevin Qin//------------------------------------------------------------------------------
109767f816b926376bd850a62a28d35343ad0559c91Kevin Qin// Duplicate to all lanes( vector, from main)
110767f816b926376bd850a62a28d35343ad0559c91Kevin Qin//------------------------------------------------------------------------------
111767f816b926376bd850a62a28d35343ad0559c91Kevin Qin         dup v1.8b, w1
112767f816b926376bd850a62a28d35343ad0559c91Kevin Qin         dup v11.4h, w14
113767f816b926376bd850a62a28d35343ad0559c91Kevin Qin         dup v17.2s, w30
114767f816b926376bd850a62a28d35343ad0559c91Kevin Qin         dup v1.16b, w2
115767f816b926376bd850a62a28d35343ad0559c91Kevin Qin         dup v11.8h, w16
116767f816b926376bd850a62a28d35343ad0559c91Kevin Qin         dup v17.4s, w28
117767f816b926376bd850a62a28d35343ad0559c91Kevin Qin         dup v5.2d, x0
118767f816b926376bd850a62a28d35343ad0559c91Kevin Qin
119dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// CHECK: {{mov|dup}}	v1.8b, w1             // encoding: [0x21,0x0c,0x01,0x0e]
120dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// CHECK: {{mov|dup}}	v11.4h, w14           // encoding: [0xcb,0x0d,0x02,0x0e]
121dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// CHECK: {{mov|dup}}	v17.2s, w30           // encoding: [0xd1,0x0f,0x04,0x0e]
122dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// CHECK: {{mov|dup}}	v1.16b, w2            // encoding: [0x41,0x0c,0x01,0x4e]
123dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// CHECK: {{mov|dup}}	v11.8h, w16           // encoding: [0x0b,0x0e,0x02,0x4e]
124dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// CHECK: {{mov|dup}}	v17.4s, w28           // encoding: [0x91,0x0f,0x04,0x4e]
125dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// CHECK: {{mov|dup}}	v5.2d, x0             // encoding: [0x05,0x0c,0x08,0x4e]
126767f816b926376bd850a62a28d35343ad0559c91Kevin Qin
127e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin
128e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin
129e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin
130e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin
131e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin
132e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin
133e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin
134e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin
135e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin
136