Update test to use llvm-readobj. NFC.
[oota-llvm.git] / test / MC / AArch64 / neon-simd-copy.s
1 // RUN: llvm-mc -triple=aarch64-none-linux-gnu -mattr=+neon -show-encoding < %s | FileCheck %s
2
3 // Check that the assembler can handle the documented syntax for AArch64
4
5
6 //------------------------------------------------------------------------------
7 // Insert element (vector, from main)
8 //------------------------------------------------------------------------------
9          ins v2.b[2], w1
10          ins v7.h[7], w14
11          ins v20.s[0], w30
12          ins v1.d[1], x7
13          
14          mov v2.b[2], w1
15          mov v7.h[7], w14
16          mov v20.s[0], w30
17          mov v1.d[1], x7
18
19 // CHECK: {{mov|ins}}   v2.b[2], w1           // encoding: [0x22,0x1c,0x05,0x4e]
20 // CHECK: {{mov|ins}}   v7.h[7], w14          // encoding: [0xc7,0x1d,0x1e,0x4e]
21 // CHECK: {{mov|ins}}   v20.s[0], w30         // encoding: [0xd4,0x1f,0x04,0x4e]
22 // CHECK: {{mov|ins}}   v1.d[1], x7           // encoding: [0xe1,0x1c,0x18,0x4e]
23
24 // CHECK: {{mov|ins}} v2.b[2], w1           // encoding: [0x22,0x1c,0x05,0x4e]
25 // CHECK: {{mov|ins}} v7.h[7], w14          // encoding: [0xc7,0x1d,0x1e,0x4e]
26 // CHECK: {{mov|ins}} v20.s[0], w30         // encoding: [0xd4,0x1f,0x04,0x4e]
27 // CHECK: {{mov|ins}} v1.d[1], x7           // encoding: [0xe1,0x1c,0x18,0x4e]
28
29
30 //------------------------------------------------------------------------------
31 // Signed integer move (main, from element)
32 //------------------------------------------------------------------------------
33          smov w1, v0.b[15]
34          smov w14, v6.h[4]
35          smov x1, v0.b[15]
36          smov x14, v6.h[4]
37          smov x20, v9.s[2]
38
39 // CHECK: smov  w1, v0.b[15]          // encoding: [0x01,0x2c,0x1f,0x0e]
40 // CHECK: smov  w14, v6.h[4]          // encoding: [0xce,0x2c,0x12,0x0e]
41 // CHECK: smov  x1, v0.b[15]          // encoding: [0x01,0x2c,0x1f,0x4e]
42 // CHECK: smov  x14, v6.h[4]          // encoding: [0xce,0x2c,0x12,0x4e]
43 // CHECK: smov  x20, v9.s[2]          // encoding: [0x34,0x2d,0x14,0x4e]
44
45
46 //------------------------------------------------------------------------------
47 // Unsigned integer move (main, from element)
48 //------------------------------------------------------------------------------
49          umov w1, v0.b[15]
50          umov w14, v6.h[4]
51          umov w20, v9.s[2]
52          umov x7, v18.d[1]
53
54          mov w20, v9.s[2]
55          mov x7, v18.d[1]
56
57 // CHECK: {{mov|umov}}  w1, v0.b[15]          // encoding: [0x01,0x3c,0x1f,0x0e]
58 // CHECK: {{mov|umov}}  w14, v6.h[4]          // encoding: [0xce,0x3c,0x12,0x0e]
59 // CHECK: {{mov|umov}}  w20, v9.s[2]          // encoding: [0x34,0x3d,0x14,0x0e]
60 // CHECK: {{mov|umov}}  x7, v18.d[1]          // encoding: [0x47,0x3e,0x18,0x4e]
61
62 // CHECK: {{mov|umov}}  w20, v9.s[2]          // encoding: [0x34,0x3d,0x14,0x0e]
63 // CHECK: {{mov|umov}}  x7, v18.d[1]          // encoding: [0x47,0x3e,0x18,0x4e]
64
65 //------------------------------------------------------------------------------
66 // Insert element (vector, from element)
67 //------------------------------------------------------------------------------
68
69          ins v1.b[14], v3.b[6]
70          ins v6.h[7], v7.h[5]
71          ins v15.s[3], v22.s[2]
72          ins v0.d[0], v4.d[1]
73
74          mov v1.b[14], v3.b[6]
75          mov v6.h[7], v7.h[5]
76          mov v15.s[3], v22.s[2]
77          mov v0.d[0], v4.d[1]
78
79 // CHECK: {{mov|ins}}   v1.b[14], v3.b[6]       // encoding: [0x61,0x34,0x1d,0x6e]
80 // CHECK: {{mov|ins}}   v6.h[7], v7.h[5]        // encoding: [0xe6,0x54,0x1e,0x6e]
81 // CHECK: {{mov|ins}}   v15.s[3], v22.s[2]      // encoding: [0xcf,0x46,0x1c,0x6e]
82 // CHECK: {{mov|ins}}   v0.d[0], v4.d[1]        // encoding: [0x80,0x44,0x08,0x6e]
83
84 // CHECK: {{mov|ins}} v1.b[14], v3.b[6]       // encoding: [0x61,0x34,0x1d,0x6e]
85 // CHECK: {{mov|ins}} v6.h[7], v7.h[5]        // encoding: [0xe6,0x54,0x1e,0x6e]
86 // CHECK: {{mov|ins}} v15.s[3], v22.s[2]      // encoding: [0xcf,0x46,0x1c,0x6e]
87 // CHECK: {{mov|ins}} v0.d[0], v4.d[1]        // encoding: [0x80,0x44,0x08,0x6e]
88
89 //------------------------------------------------------------------------------
90 // Duplicate to all lanes( vector, from element)
91 //------------------------------------------------------------------------------
92          dup v1.8b, v2.b[2]
93          dup v11.4h, v7.h[7]
94          dup v17.2s, v20.s[0]
95          dup v1.16b, v2.b[2]
96          dup v11.8h, v7.h[7]
97          dup v17.4s, v20.s[0]
98          dup v5.2d, v1.d[1]         
99
100 // CHECK: {{mov|dup}} v1.8b, v2.b[2]        // encoding: [0x41,0x04,0x05,0x0e]
101 // CHECK: {{mov|dup}} v11.4h, v7.h[7]       // encoding: [0xeb,0x04,0x1e,0x0e]
102 // CHECK: {{mov|dup}} v17.2s, v20.s[0]      // encoding: [0x91,0x06,0x04,0x0e]
103 // CHECK: {{mov|dup}} v1.16b, v2.b[2]       // encoding: [0x41,0x04,0x05,0x4e]
104 // CHECK: {{mov|dup}} v11.8h, v7.h[7]       // encoding: [0xeb,0x04,0x1e,0x4e]
105 // CHECK: {{mov|dup}} v17.4s, v20.s[0]      // encoding: [0x91,0x06,0x04,0x4e]
106 // CHECK: {{mov|dup}} v5.2d, v1.d[1]        // encoding: [0x25,0x04,0x18,0x4e]
107
108 //------------------------------------------------------------------------------
109 // Duplicate to all lanes( vector, from main)
110 //------------------------------------------------------------------------------
111          dup v1.8b, w1
112          dup v11.4h, w14
113          dup v17.2s, w30
114          dup v1.16b, w2
115          dup v11.8h, w16
116          dup v17.4s, w28
117          dup v5.2d, x0        
118
119 // CHECK: {{mov|dup}}   v1.8b, w1             // encoding: [0x21,0x0c,0x01,0x0e]
120 // CHECK: {{mov|dup}}   v11.4h, w14           // encoding: [0xcb,0x0d,0x02,0x0e]
121 // CHECK: {{mov|dup}}   v17.2s, w30           // encoding: [0xd1,0x0f,0x04,0x0e]
122 // CHECK: {{mov|dup}}   v1.16b, w2            // encoding: [0x41,0x0c,0x01,0x4e]
123 // CHECK: {{mov|dup}}   v11.8h, w16           // encoding: [0x0b,0x0e,0x02,0x4e]
124 // CHECK: {{mov|dup}}   v17.4s, w28           // encoding: [0x91,0x0f,0x04,0x4e]
125 // CHECK: {{mov|dup}}   v5.2d, x0             // encoding: [0x05,0x0c,0x08,0x4e]
126
127
128
129
130
131
132
133
134
135