xref: /aosp_15_r20/external/llvm/test/MC/AArch64/neon-scalar-shift-imm.s (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker// RUN: llvm-mc -triple aarch64-none-linux-gnu -mattr=+neon -show-encoding < %s | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker
3*9880d681SAndroid Build Coastguard Worker// Check that the assembler can handle the documented syntax for AArch64
4*9880d681SAndroid Build Coastguard Worker
5*9880d681SAndroid Build Coastguard Worker//----------------------------------------------------------------------
6*9880d681SAndroid Build Coastguard Worker// Scalar Signed Shift Right (Immediate)
7*9880d681SAndroid Build Coastguard Worker//----------------------------------------------------------------------
8*9880d681SAndroid Build Coastguard Worker        sshr d15, d16, #12
9*9880d681SAndroid Build Coastguard Worker
10*9880d681SAndroid Build Coastguard Worker// CHECK: sshr d15, d16, #12  // encoding: [0x0f,0x06,0x74,0x5f]
11*9880d681SAndroid Build Coastguard Worker
12*9880d681SAndroid Build Coastguard Worker//----------------------------------------------------------------------
13*9880d681SAndroid Build Coastguard Worker// Scalar Unsigned Shift Right (Immediate)
14*9880d681SAndroid Build Coastguard Worker//----------------------------------------------------------------------
15*9880d681SAndroid Build Coastguard Worker        ushr d10, d17, #18
16*9880d681SAndroid Build Coastguard Worker
17*9880d681SAndroid Build Coastguard Worker// CHECK: ushr d10, d17, #18  // encoding: [0x2a,0x06,0x6e,0x7f]
18*9880d681SAndroid Build Coastguard Worker
19*9880d681SAndroid Build Coastguard Worker//----------------------------------------------------------------------
20*9880d681SAndroid Build Coastguard Worker// Scalar Signed Rounding Shift Right (Immediate)
21*9880d681SAndroid Build Coastguard Worker//----------------------------------------------------------------------
22*9880d681SAndroid Build Coastguard Worker        srshr d19, d18, #7
23*9880d681SAndroid Build Coastguard Worker
24*9880d681SAndroid Build Coastguard Worker// CHECK: srshr d19, d18, #7  // encoding: [0x53,0x26,0x79,0x5f]
25*9880d681SAndroid Build Coastguard Worker
26*9880d681SAndroid Build Coastguard Worker//----------------------------------------------------------------------
27*9880d681SAndroid Build Coastguard Worker// Scalar Unigned Rounding Shift Right (Immediate)
28*9880d681SAndroid Build Coastguard Worker//----------------------------------------------------------------------
29*9880d681SAndroid Build Coastguard Worker        urshr d20, d23, #31
30*9880d681SAndroid Build Coastguard Worker
31*9880d681SAndroid Build Coastguard Worker// CHECK: urshr d20, d23, #31  // encoding: [0xf4,0x26,0x61,0x7f]
32*9880d681SAndroid Build Coastguard Worker
33*9880d681SAndroid Build Coastguard Worker//----------------------------------------------------------------------
34*9880d681SAndroid Build Coastguard Worker// Scalar Signed Shift Right and Accumulate (Immediate)
35*9880d681SAndroid Build Coastguard Worker//----------------------------------------------------------------------
36*9880d681SAndroid Build Coastguard Worker        ssra d18, d12, #21
37*9880d681SAndroid Build Coastguard Worker
38*9880d681SAndroid Build Coastguard Worker// CHECK: ssra d18, d12, #21  // encoding: [0x92,0x15,0x6b,0x5f]
39*9880d681SAndroid Build Coastguard Worker
40*9880d681SAndroid Build Coastguard Worker//----------------------------------------------------------------------
41*9880d681SAndroid Build Coastguard Worker// Scalar Unsigned Shift Right and Accumulate (Immediate)
42*9880d681SAndroid Build Coastguard Worker//----------------------------------------------------------------------
43*9880d681SAndroid Build Coastguard Worker        usra d20, d13, #61
44*9880d681SAndroid Build Coastguard Worker
45*9880d681SAndroid Build Coastguard Worker// CHECK: usra d20, d13, #61  // encoding: [0xb4,0x15,0x43,0x7f]
46*9880d681SAndroid Build Coastguard Worker
47*9880d681SAndroid Build Coastguard Worker//----------------------------------------------------------------------
48*9880d681SAndroid Build Coastguard Worker// Scalar Signed Rounding Shift Right and Accumulate (Immediate)
49*9880d681SAndroid Build Coastguard Worker//----------------------------------------------------------------------
50*9880d681SAndroid Build Coastguard Worker        srsra d15, d11, #19
51*9880d681SAndroid Build Coastguard Worker
52*9880d681SAndroid Build Coastguard Worker// CHECK: srsra d15, d11, #19  // encoding: [0x6f,0x35,0x6d,0x5f]
53*9880d681SAndroid Build Coastguard Worker
54*9880d681SAndroid Build Coastguard Worker//----------------------------------------------------------------------
55*9880d681SAndroid Build Coastguard Worker// Scalar Unsigned Rounding Shift Right and Accumulate (Immediate)
56*9880d681SAndroid Build Coastguard Worker//----------------------------------------------------------------------
57*9880d681SAndroid Build Coastguard Worker        ursra d18, d10, #13
58*9880d681SAndroid Build Coastguard Worker
59*9880d681SAndroid Build Coastguard Worker// CHECK: ursra d18, d10, #13  // encoding: [0x52,0x35,0x73,0x7f]
60*9880d681SAndroid Build Coastguard Worker
61*9880d681SAndroid Build Coastguard Worker//----------------------------------------------------------------------
62*9880d681SAndroid Build Coastguard Worker// Scalar Shift Left (Immediate)
63*9880d681SAndroid Build Coastguard Worker//----------------------------------------------------------------------
64*9880d681SAndroid Build Coastguard Worker        shl d7, d10, #12
65*9880d681SAndroid Build Coastguard Worker
66*9880d681SAndroid Build Coastguard Worker// CHECK: shl d7, d10, #12  // encoding: [0x47,0x55,0x4c,0x5f]
67*9880d681SAndroid Build Coastguard Worker
68*9880d681SAndroid Build Coastguard Worker//----------------------------------------------------------------------
69*9880d681SAndroid Build Coastguard Worker// Signed Saturating Shift Left (Immediate)
70*9880d681SAndroid Build Coastguard Worker//----------------------------------------------------------------------
71*9880d681SAndroid Build Coastguard Worker        sqshl b11, b19, #7
72*9880d681SAndroid Build Coastguard Worker        sqshl h13, h18, #11
73*9880d681SAndroid Build Coastguard Worker        sqshl s14, s17, #22
74*9880d681SAndroid Build Coastguard Worker        sqshl d15, d16, #51
75*9880d681SAndroid Build Coastguard Worker
76*9880d681SAndroid Build Coastguard Worker// CHECK: sqshl b11, b19, #7   // encoding: [0x6b,0x76,0x0f,0x5f]
77*9880d681SAndroid Build Coastguard Worker// CHECK: sqshl h13, h18, #11  // encoding: [0x4d,0x76,0x1b,0x5f]
78*9880d681SAndroid Build Coastguard Worker// CHECK: sqshl s14, s17, #22  // encoding: [0x2e,0x76,0x36,0x5f]
79*9880d681SAndroid Build Coastguard Worker// CHECK: sqshl d15, d16, #51  // encoding: [0x0f,0x76,0x73,0x5f]
80*9880d681SAndroid Build Coastguard Worker
81*9880d681SAndroid Build Coastguard Worker//----------------------------------------------------------------------
82*9880d681SAndroid Build Coastguard Worker// Unsigned Saturating Shift Left (Immediate)
83*9880d681SAndroid Build Coastguard Worker//----------------------------------------------------------------------
84*9880d681SAndroid Build Coastguard Worker        uqshl b18, b15, #6
85*9880d681SAndroid Build Coastguard Worker        uqshl h11, h18, #7
86*9880d681SAndroid Build Coastguard Worker        uqshl s14, s19, #18
87*9880d681SAndroid Build Coastguard Worker        uqshl d15, d12, #19
88*9880d681SAndroid Build Coastguard Worker
89*9880d681SAndroid Build Coastguard Worker// CHECK: uqshl b18, b15, #6   // encoding: [0xf2,0x75,0x0e,0x7f]
90*9880d681SAndroid Build Coastguard Worker// CHECK: uqshl h11, h18, #7   // encoding: [0x4b,0x76,0x17,0x7f]
91*9880d681SAndroid Build Coastguard Worker// CHECK: uqshl s14, s19, #18  // encoding: [0x6e,0x76,0x32,0x7f]
92*9880d681SAndroid Build Coastguard Worker// CHECK: uqshl d15, d12, #19  // encoding: [0x8f,0x75,0x53,0x7f]
93*9880d681SAndroid Build Coastguard Worker
94*9880d681SAndroid Build Coastguard Worker//----------------------------------------------------------------------
95*9880d681SAndroid Build Coastguard Worker// Signed Saturating Shift Left Unsigned (Immediate)
96*9880d681SAndroid Build Coastguard Worker//----------------------------------------------------------------------
97*9880d681SAndroid Build Coastguard Worker        sqshlu b15, b18, #6
98*9880d681SAndroid Build Coastguard Worker        sqshlu h19, h17, #6
99*9880d681SAndroid Build Coastguard Worker        sqshlu s16, s14, #25
100*9880d681SAndroid Build Coastguard Worker        sqshlu d11, d13, #32
101*9880d681SAndroid Build Coastguard Worker
102*9880d681SAndroid Build Coastguard Worker// CHECK: sqshlu  b15, b18, #6   // encoding: [0x4f,0x66,0x0e,0x7f]
103*9880d681SAndroid Build Coastguard Worker// CHECK: sqshlu  h19, h17, #6   // encoding: [0x33,0x66,0x16,0x7f]
104*9880d681SAndroid Build Coastguard Worker// CHECK: sqshlu  s16, s14, #25  // encoding: [0xd0,0x65,0x39,0x7f]
105*9880d681SAndroid Build Coastguard Worker// CHECK: sqshlu  d11, d13, #32  // encoding: [0xab,0x65,0x60,0x7f]
106*9880d681SAndroid Build Coastguard Worker
107*9880d681SAndroid Build Coastguard Worker//----------------------------------------------------------------------
108*9880d681SAndroid Build Coastguard Worker// Shift Right And Insert (Immediate)
109*9880d681SAndroid Build Coastguard Worker//----------------------------------------------------------------------
110*9880d681SAndroid Build Coastguard Worker        sri d10, d12, #14
111*9880d681SAndroid Build Coastguard Worker
112*9880d681SAndroid Build Coastguard Worker// CHECK: sri d10, d12, #14  // encoding: [0x8a,0x45,0x72,0x7f]
113*9880d681SAndroid Build Coastguard Worker
114*9880d681SAndroid Build Coastguard Worker//----------------------------------------------------------------------
115*9880d681SAndroid Build Coastguard Worker// Shift Left And Insert (Immediate)
116*9880d681SAndroid Build Coastguard Worker//----------------------------------------------------------------------
117*9880d681SAndroid Build Coastguard Worker        sli d10, d14, #12
118*9880d681SAndroid Build Coastguard Worker
119*9880d681SAndroid Build Coastguard Worker// CHECK: sli d10, d14, #12  // encoding: [0xca,0x55,0x4c,0x7f]
120*9880d681SAndroid Build Coastguard Worker
121*9880d681SAndroid Build Coastguard Worker//----------------------------------------------------------------------
122*9880d681SAndroid Build Coastguard Worker// Signed Saturating Shift Right Narrow (Immediate)
123*9880d681SAndroid Build Coastguard Worker//----------------------------------------------------------------------
124*9880d681SAndroid Build Coastguard Worker        sqshrn b10, h15, #5
125*9880d681SAndroid Build Coastguard Worker        sqshrn h17, s10, #4
126*9880d681SAndroid Build Coastguard Worker        sqshrn s18, d10, #31
127*9880d681SAndroid Build Coastguard Worker
128*9880d681SAndroid Build Coastguard Worker// CHECK: sqshrn  b10, h15, #5   // encoding: [0xea,0x95,0x0b,0x5f]
129*9880d681SAndroid Build Coastguard Worker// CHECK: sqshrn  h17, s10, #4   // encoding: [0x51,0x95,0x1c,0x5f]
130*9880d681SAndroid Build Coastguard Worker// CHECK: sqshrn  s18, d10, #31  // encoding: [0x52,0x95,0x21,0x5f]
131*9880d681SAndroid Build Coastguard Worker
132*9880d681SAndroid Build Coastguard Worker//----------------------------------------------------------------------
133*9880d681SAndroid Build Coastguard Worker// Unsigned Saturating Shift Right Narrow (Immediate)
134*9880d681SAndroid Build Coastguard Worker//----------------------------------------------------------------------
135*9880d681SAndroid Build Coastguard Worker        uqshrn b12, h10, #7
136*9880d681SAndroid Build Coastguard Worker        uqshrn h10, s14, #5
137*9880d681SAndroid Build Coastguard Worker        uqshrn s10, d12, #13
138*9880d681SAndroid Build Coastguard Worker
139*9880d681SAndroid Build Coastguard Worker// CHECK: uqshrn  b12, h10, #7   // encoding: [0x4c,0x95,0x09,0x7f]
140*9880d681SAndroid Build Coastguard Worker// CHECK: uqshrn  h10, s14, #5   // encoding: [0xca,0x95,0x1b,0x7f]
141*9880d681SAndroid Build Coastguard Worker// CHECK: uqshrn  s10, d12, #13  // encoding: [0x8a,0x95,0x33,0x7f]
142*9880d681SAndroid Build Coastguard Worker
143*9880d681SAndroid Build Coastguard Worker//----------------------------------------------------------------------
144*9880d681SAndroid Build Coastguard Worker// Signed Saturating Rounded Shift Right Narrow (Immediate)
145*9880d681SAndroid Build Coastguard Worker//----------------------------------------------------------------------
146*9880d681SAndroid Build Coastguard Worker        sqrshrn b10, h13, #2
147*9880d681SAndroid Build Coastguard Worker        sqrshrn h15, s10, #6
148*9880d681SAndroid Build Coastguard Worker        sqrshrn s15, d12, #9
149*9880d681SAndroid Build Coastguard Worker
150*9880d681SAndroid Build Coastguard Worker// CHECK: sqrshrn b10, h13, #2  // encoding: [0xaa,0x9d,0x0e,0x5f]
151*9880d681SAndroid Build Coastguard Worker// CHECK: sqrshrn h15, s10, #6  // encoding: [0x4f,0x9d,0x1a,0x5f]
152*9880d681SAndroid Build Coastguard Worker// CHECK: sqrshrn s15, d12, #9  // encoding: [0x8f,0x9d,0x37,0x5f]
153*9880d681SAndroid Build Coastguard Worker
154*9880d681SAndroid Build Coastguard Worker//----------------------------------------------------------------------
155*9880d681SAndroid Build Coastguard Worker// Unsigned Saturating Rounded Shift Right Narrow (Immediate)
156*9880d681SAndroid Build Coastguard Worker//----------------------------------------------------------------------
157*9880d681SAndroid Build Coastguard Worker        uqrshrn b10, h12, #5
158*9880d681SAndroid Build Coastguard Worker        uqrshrn h12, s10, #14
159*9880d681SAndroid Build Coastguard Worker        uqrshrn s10, d10, #25
160*9880d681SAndroid Build Coastguard Worker
161*9880d681SAndroid Build Coastguard Worker// CHECK: uqrshrn b10, h12, #5   // encoding: [0x8a,0x9d,0x0b,0x7f]
162*9880d681SAndroid Build Coastguard Worker// CHECK: uqrshrn h12, s10, #14  // encoding: [0x4c,0x9d,0x12,0x7f]
163*9880d681SAndroid Build Coastguard Worker// CHECK: uqrshrn s10, d10, #25  // encoding: [0x4a,0x9d,0x27,0x7f]
164*9880d681SAndroid Build Coastguard Worker
165*9880d681SAndroid Build Coastguard Worker//----------------------------------------------------------------------
166*9880d681SAndroid Build Coastguard Worker// Signed Saturating Shift Right Unsigned Narrow (Immediate)
167*9880d681SAndroid Build Coastguard Worker//----------------------------------------------------------------------
168*9880d681SAndroid Build Coastguard Worker        sqshrun b15, h10, #7
169*9880d681SAndroid Build Coastguard Worker        sqshrun h20, s14, #3
170*9880d681SAndroid Build Coastguard Worker        sqshrun s10, d15, #15
171*9880d681SAndroid Build Coastguard Worker
172*9880d681SAndroid Build Coastguard Worker// CHECK: sqshrun b15, h10, #7   // encoding: [0x4f,0x85,0x09,0x7f]
173*9880d681SAndroid Build Coastguard Worker// CHECK: sqshrun h20, s14, #3   // encoding: [0xd4,0x85,0x1d,0x7f]
174*9880d681SAndroid Build Coastguard Worker// CHECK: sqshrun s10, d15, #15  // encoding: [0xea,0x85,0x31,0x7f]
175*9880d681SAndroid Build Coastguard Worker
176*9880d681SAndroid Build Coastguard Worker//----------------------------------------------------------------------
177*9880d681SAndroid Build Coastguard Worker// Signed Saturating Rounded Shift Right Unsigned Narrow (Immediate)
178*9880d681SAndroid Build Coastguard Worker//----------------------------------------------------------------------
179*9880d681SAndroid Build Coastguard Worker
180*9880d681SAndroid Build Coastguard Worker        sqrshrun b17, h10, #6
181*9880d681SAndroid Build Coastguard Worker        sqrshrun h10, s13, #15
182*9880d681SAndroid Build Coastguard Worker        sqrshrun s22, d16, #31
183*9880d681SAndroid Build Coastguard Worker
184*9880d681SAndroid Build Coastguard Worker// CHECK: sqrshrun b17, h10, #6   // encoding: [0x51,0x8d,0x0a,0x7f]
185*9880d681SAndroid Build Coastguard Worker// CHECK: sqrshrun h10, s13, #15  // encoding: [0xaa,0x8d,0x11,0x7f]
186*9880d681SAndroid Build Coastguard Worker// CHECK: sqrshrun s22, d16, #31  // encoding: [0x16,0x8e,0x21,0x7f]
187