1 // RUN
: llvm-mc
-triple
=aarch64-none-linux-gnu
-mattr
=+neon
-show-encoding
< %s | FileCheck
%s
3 // Check that the assembler can handle the documented syntax for AArch64
6 //------------------------------------------------------------------------------
7 // Insert element
(vector
, from main
)
8 //------------------------------------------------------------------------------
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]
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]
30 //------------------------------------------------------------------------------
31 // Signed integer move
(main
, from element
)
32 //------------------------------------------------------------------------------
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]
46 //------------------------------------------------------------------------------
47 // Unsigned integer move
(main
, from element
)
48 //------------------------------------------------------------------------------
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]
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]
65 //------------------------------------------------------------------------------
66 // Insert element
(vector
, from element
)
67 //------------------------------------------------------------------------------
71 ins v15.s
[3], v22.s
[2]
76 mov v15.s
[3], v22.s
[2]
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]
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]
89 //------------------------------------------------------------------------------
90 // Duplicate to all lanes
( vector
, from element
)
91 //------------------------------------------------------------------------------
100 // CHECK
: {{mov|dup
}} v1.8
b, 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.16
b, 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]
108 //------------------------------------------------------------------------------
109 // Duplicate to all lanes
( vector
, from main
)
110 //------------------------------------------------------------------------------
119 // CHECK
: {{mov|dup
}} v1.8
b, 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.16
b, 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]