1 // RUN
: llvm-mc
-triple aarch64-none-linux-gnu
-mattr
=+neon
-show-encoding
< %s | FileCheck
%s
3 //-----------------------------------------------------------------------------
4 // Signed saturating doubling multiply long
(scalar
, by element
)
5 //-----------------------------------------------------------------------------
6 sqdmull s1
, h1
, v1.h
[1]
7 sqdmull s8
, h2
, v5.h
[2]
8 sqdmull s12
, h17
, v9.h
[3]
9 sqdmull s31
, h31
, v15.h
[7]
10 sqdmull d1
, s1
, v4.s
[0]
11 sqdmull d31
, s31
, v31.s
[3]
12 sqdmull d9
, s10
, v15.s
[0]
15 // CHECK
: sqdmull s1
, h1
, v1.h
[1] // encoding
: [0x21,0xb0,0x51,0x5f]
16 // CHECK
: sqdmull s8
, h2
, v5.h
[2] // encoding
: [0x48,0xb0,0x65,0x5f]
17 // CHECK
: sqdmull s12
, h17
, v9.h
[3] // encoding
: [0x2c,0xb2,0x79,0x5f]
18 // CHECK
: sqdmull s31
, h31
, v15.h
[7] // encoding
: [0xff,0xbb,0x7f,0x5f]
19 // CHECK
: sqdmull d1
, s1
, v4.s
[0] // encoding
: [0x21,0xb0,0x84,0x5f]
20 // CHECK
: sqdmull d31
, s31
, v31.s
[3] // encoding
: [0xff,0xbb,0xbf,0x5f]
21 // CHECK
: sqdmull d9
, s10
, v15.s
[0] // encoding
: [0x49,0xb1,0x8f,0x5f]
23 //-----------------------------------------------------------------------------
24 // Scalar Signed saturating doubling multiply returning
25 // high half
(scalar
, by element
)
26 //-----------------------------------------------------------------------------
27 sqdmulh h0
, h1
, v0.h
[0]
28 sqdmulh h10
, h11
, v10.h
[4]
29 sqdmulh h20
, h21
, v15.h
[7]
30 sqdmulh s25
, s26
, v27.s
[3]
31 sqdmulh s2
, s6
, v7.s
[0]
33 // CHECK
: sqdmulh h0
, h1
, v0.h
[0] // encoding
: [0x20,0xc0,0x40,0x5f]
34 // CHECK
: sqdmulh h10
, h11
, v10.h
[4] // encoding
: [0x6a,0xc9,0x4a,0x5f]
35 // CHECK
: sqdmulh h20
, h21
, v15.h
[7] // encoding
: [0xb4,0xca,0x7f,0x5f]
36 // CHECK
: sqdmulh s25
, s26
, v27.s
[3] // encoding
: [0x59,0xcb,0xbb,0x5f]
37 // CHECK
: sqdmulh s2
, s6
, v7.s
[0] // encoding
: [0xc2,0xc0,0x87,0x5f]
39 //-----------------------------------------------------------------------------
40 // Signed saturating rounding doubling multiply returning
41 // high half
(scalar
, by element
)
42 //-----------------------------------------------------------------------------
43 sqrdmulh h31
, h30
, v14.h
[2]
44 sqrdmulh h1
, h1
, v1.h
[4]
45 sqrdmulh h21
, h22
, v15.h
[7]
46 sqrdmulh s5
, s6
, v7.s
[2]
47 sqrdmulh s20
, s26
, v27.s
[1]
49 // CHECK
: sqrdmulh h31
, h30
, v14.h
[2] // encoding
: [0xdf,0xd3,0x6e,0x5f]
50 // CHECK
: sqrdmulh h1
, h1
, v1.h
[4] // encoding
: [0x21,0xd8,0x41,0x5f]
51 // CHECK
: sqrdmulh h21
, h22
, v15.h
[7] // encoding
: [0xd5,0xda,0x7f,0x5f]
52 // CHECK
: sqrdmulh s5
, s6
, v7.s
[2] // encoding
: [0xc5,0xd8,0x87,0x5f]
53 // CHECK
: sqrdmulh s20
, s26
, v27.s
[1] // encoding
: [0x54,0xd3,0xbb,0x5f]