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
5 //----------------------------------------------------------------------
6 // Scalar Signed Shift Right
(Immediate
)
7 //----------------------------------------------------------------------
10 // CHECK
: sshr d15
, d16
, #12 // encoding: [0x0f,0x06,0x74,0x5f]
12 //----------------------------------------------------------------------
13 // Scalar Unsigned Shift Right
(Immediate
)
14 //----------------------------------------------------------------------
17 // CHECK
: ushr d10
, d17
, #18 // encoding: [0x2a,0x06,0x6e,0x7f]
19 //----------------------------------------------------------------------
20 // Scalar Signed Rounding Shift Right
(Immediate
)
21 //----------------------------------------------------------------------
24 // CHECK
: srshr d19
, d18
, #7 // encoding: [0x53,0x26,0x79,0x5f]
26 //----------------------------------------------------------------------
27 // Scalar Unigned Rounding Shift Right
(Immediate
)
28 //----------------------------------------------------------------------
31 // CHECK
: urshr d20
, d23
, #31 // encoding: [0xf4,0x26,0x61,0x7f]
33 //----------------------------------------------------------------------
34 // Scalar Signed Shift Right
and Accumulate
(Immediate
)
35 //----------------------------------------------------------------------
38 // CHECK
: ssra d18
, d12
, #21 // encoding: [0x92,0x15,0x6b,0x5f]
40 //----------------------------------------------------------------------
41 // Scalar Unsigned Shift Right
and Accumulate
(Immediate
)
42 //----------------------------------------------------------------------
45 // CHECK
: usra d20
, d13
, #61 // encoding: [0xb4,0x15,0x43,0x7f]
47 //----------------------------------------------------------------------
48 // Scalar Signed Rounding Shift Right
and Accumulate
(Immediate
)
49 //----------------------------------------------------------------------
52 // CHECK
: srsra d15
, d11
, #19 // encoding: [0x6f,0x35,0x6d,0x5f]
54 //----------------------------------------------------------------------
55 // Scalar Unsigned Rounding Shift Right
and Accumulate
(Immediate
)
56 //----------------------------------------------------------------------
59 // CHECK
: ursra d18
, d10
, #13 // encoding: [0x52,0x35,0x73,0x7f]
61 //----------------------------------------------------------------------
62 // Scalar Shift Left
(Immediate
)
63 //----------------------------------------------------------------------
66 // CHECK
: shl d7
, d10
, #12 // encoding: [0x47,0x55,0x4c,0x5f]
68 //----------------------------------------------------------------------
69 // Signed Saturating Shift Left
(Immediate
)
70 //----------------------------------------------------------------------
76 // CHECK
: sqshl b11
, b19
, #7 // encoding: [0x6b,0x76,0x0f,0x5f]
77 // CHECK
: sqshl h13
, h18
, #11 // encoding: [0x4d,0x76,0x1b,0x5f]
78 // CHECK
: sqshl s14
, s17
, #22 // encoding: [0x2e,0x76,0x36,0x5f]
79 // CHECK
: sqshl d15
, d16
, #51 // encoding: [0x0f,0x76,0x73,0x5f]
81 //----------------------------------------------------------------------
82 // Unsigned Saturating Shift Left
(Immediate
)
83 //----------------------------------------------------------------------
89 // CHECK
: uqshl b18
, b15
, #6 // encoding: [0xf2,0x75,0x0e,0x7f]
90 // CHECK
: uqshl h11
, h18
, #7 // encoding: [0x4b,0x76,0x17,0x7f]
91 // CHECK
: uqshl s14
, s19
, #18 // encoding: [0x6e,0x76,0x32,0x7f]
92 // CHECK
: uqshl d15
, d12
, #19 // encoding: [0x8f,0x75,0x53,0x7f]
94 //----------------------------------------------------------------------
95 // Signed Saturating Shift Left Unsigned
(Immediate
)
96 //----------------------------------------------------------------------
102 // CHECK
: sqshlu b15
, b18
, #6 // encoding: [0x4f,0x66,0x0e,0x7f]
103 // CHECK
: sqshlu h19
, h17
, #6 // encoding: [0x33,0x66,0x16,0x7f]
104 // CHECK
: sqshlu s16
, s14
, #25 // encoding: [0xd0,0x65,0x39,0x7f]
105 // CHECK
: sqshlu d11
, d13
, #32 // encoding: [0xab,0x65,0x60,0x7f]
107 //----------------------------------------------------------------------
108 // Shift Right
And Insert
(Immediate
)
109 //----------------------------------------------------------------------
112 // CHECK
: sri d10
, d12
, #14 // encoding: [0x8a,0x45,0x72,0x7f]
114 //----------------------------------------------------------------------
115 // Shift Left
And Insert
(Immediate
)
116 //----------------------------------------------------------------------
119 // CHECK
: sli d10
, d14
, #12 // encoding: [0xca,0x55,0x4c,0x7f]
121 //----------------------------------------------------------------------
122 // Signed Saturating Shift Right Narrow
(Immediate
)
123 //----------------------------------------------------------------------
128 // CHECK
: sqshrn b10
, h15
, #5 // encoding: [0xea,0x95,0x0b,0x5f]
129 // CHECK
: sqshrn h17
, s10
, #4 // encoding: [0x51,0x95,0x1c,0x5f]
130 // CHECK
: sqshrn s18
, d10
, #31 // encoding: [0x52,0x95,0x21,0x5f]
132 //----------------------------------------------------------------------
133 // Unsigned Saturating Shift Right Narrow
(Immediate
)
134 //----------------------------------------------------------------------
139 // CHECK
: uqshrn b12
, h10
, #7 // encoding: [0x4c,0x95,0x09,0x7f]
140 // CHECK
: uqshrn h10
, s14
, #5 // encoding: [0xca,0x95,0x1b,0x7f]
141 // CHECK
: uqshrn s10
, d12
, #13 // encoding: [0x8a,0x95,0x33,0x7f]
143 //----------------------------------------------------------------------
144 // Signed Saturating Rounded Shift Right Narrow
(Immediate
)
145 //----------------------------------------------------------------------
150 // CHECK
: sqrshrn b10
, h13
, #2 // encoding: [0xaa,0x9d,0x0e,0x5f]
151 // CHECK
: sqrshrn h15
, s10
, #6 // encoding: [0x4f,0x9d,0x1a,0x5f]
152 // CHECK
: sqrshrn s15
, d12
, #9 // encoding: [0x8f,0x9d,0x37,0x5f]
154 //----------------------------------------------------------------------
155 // Unsigned Saturating Rounded Shift Right Narrow
(Immediate
)
156 //----------------------------------------------------------------------
158 uqrshrn h12
, s10
, #14
159 uqrshrn s10
, d10
, #25
161 // CHECK
: uqrshrn b10
, h12
, #5 // encoding: [0x8a,0x9d,0x0b,0x7f]
162 // CHECK
: uqrshrn h12
, s10
, #14 // encoding: [0x4c,0x9d,0x12,0x7f]
163 // CHECK
: uqrshrn s10
, d10
, #25 // encoding: [0x4a,0x9d,0x27,0x7f]
165 //----------------------------------------------------------------------
166 // Signed Saturating Shift Right Unsigned Narrow
(Immediate
)
167 //----------------------------------------------------------------------
170 sqshrun s10
, d15
, #15
172 // CHECK
: sqshrun b15
, h10
, #7 // encoding: [0x4f,0x85,0x09,0x7f]
173 // CHECK
: sqshrun h20
, s14
, #3 // encoding: [0xd4,0x85,0x1d,0x7f]
174 // CHECK
: sqshrun s10
, d15
, #15 // encoding: [0xea,0x85,0x31,0x7f]
176 //----------------------------------------------------------------------
177 // Signed Saturating Rounded Shift Right Unsigned Narrow
(Immediate
)
178 //----------------------------------------------------------------------
180 sqrshrun b17
, h10
, #6
181 sqrshrun h10
, s13
, #15
182 sqrshrun s22
, d16
, #31
184 // CHECK
: sqrshrun b17
, h10
, #6 // encoding: [0x51,0x8d,0x0a,0x7f]
185 // CHECK
: sqrshrun h10
, s13
, #15 // encoding: [0xaa,0x8d,0x11,0x7f]
186 // CHECK
: sqrshrun s22
, d16
, #31 // encoding: [0x16,0x8e,0x21,0x7f]