1 // RUN: llvm-mc -triple=aarch64 -mattr=+neon -show-encoding < %s | FileCheck %s
2 // RUN: llvm-mc -triple=arm64 -mattr=+neon -show-encoding < %s | FileCheck %s
4 // Check that the assembler can handle the documented syntax for AArch64
6 //------------------------------------------------------------------------------
7 // Instructions for permute
8 //------------------------------------------------------------------------------
10 uzp1 v0.8b, v1.8b, v2.8b
11 uzp1 v0.16b, v1.16b, v2.16b
12 uzp1 v0.4h, v1.4h, v2.4h
13 uzp1 v0.8h, v1.8h, v2.8h
14 uzp1 v0.2s, v1.2s, v2.2s
15 uzp1 v0.4s, v1.4s, v2.4s
16 uzp1 v0.2d, v1.2d, v2.2d
18 // CHECK: uzp1 v0.8b, v1.8b, v2.8b // encoding: [0x20,0x18,0x02,0x0e]
19 // CHECK: uzp1 v0.16b, v1.16b, v2.16b // encoding: [0x20,0x18,0x02,0x4e]
20 // CHECK: uzp1 v0.4h, v1.4h, v2.4h // encoding: [0x20,0x18,0x42,0x0e]
21 // CHECK: uzp1 v0.8h, v1.8h, v2.8h // encoding: [0x20,0x18,0x42,0x4e]
22 // CHECK: uzp1 v0.2s, v1.2s, v2.2s // encoding: [0x20,0x18,0x82,0x0e]
23 // CHECK: uzp1 v0.4s, v1.4s, v2.4s // encoding: [0x20,0x18,0x82,0x4e]
24 // CHECK: uzp1 v0.2d, v1.2d, v2.2d // encoding: [0x20,0x18,0xc2,0x4e]
26 trn1 v0.8b, v1.8b, v2.8b
27 trn1 v0.16b, v1.16b, v2.16b
28 trn1 v0.4h, v1.4h, v2.4h
29 trn1 v0.8h, v1.8h, v2.8h
30 trn1 v0.2s, v1.2s, v2.2s
31 trn1 v0.4s, v1.4s, v2.4s
32 trn1 v0.2d, v1.2d, v2.2d
34 // CHECK: trn1 v0.8b, v1.8b, v2.8b // encoding: [0x20,0x28,0x02,0x0e]
35 // CHECK: trn1 v0.16b, v1.16b, v2.16b // encoding: [0x20,0x28,0x02,0x4e]
36 // CHECK: trn1 v0.4h, v1.4h, v2.4h // encoding: [0x20,0x28,0x42,0x0e]
37 // CHECK: trn1 v0.8h, v1.8h, v2.8h // encoding: [0x20,0x28,0x42,0x4e]
38 // CHECK: trn1 v0.2s, v1.2s, v2.2s // encoding: [0x20,0x28,0x82,0x0e]
39 // CHECK: trn1 v0.4s, v1.4s, v2.4s // encoding: [0x20,0x28,0x82,0x4e]
40 // CHECK: trn1 v0.2d, v1.2d, v2.2d // encoding: [0x20,0x28,0xc2,0x4e]
42 zip1 v0.8b, v1.8b, v2.8b
43 zip1 v0.16b, v1.16b, v2.16b
44 zip1 v0.4h, v1.4h, v2.4h
45 zip1 v0.8h, v1.8h, v2.8h
46 zip1 v0.2s, v1.2s, v2.2s
47 zip1 v0.4s, v1.4s, v2.4s
48 zip1 v0.2d, v1.2d, v2.2d
50 // CHECK: zip1 v0.8b, v1.8b, v2.8b // encoding: [0x20,0x38,0x02,0x0e]
51 // CHECK: zip1 v0.16b, v1.16b, v2.16b // encoding: [0x20,0x38,0x02,0x4e]
52 // CHECK: zip1 v0.4h, v1.4h, v2.4h // encoding: [0x20,0x38,0x42,0x0e]
53 // CHECK: zip1 v0.8h, v1.8h, v2.8h // encoding: [0x20,0x38,0x42,0x4e]
54 // CHECK: zip1 v0.2s, v1.2s, v2.2s // encoding: [0x20,0x38,0x82,0x0e]
55 // CHECK: zip1 v0.4s, v1.4s, v2.4s // encoding: [0x20,0x38,0x82,0x4e]
56 // CHECK: zip1 v0.2d, v1.2d, v2.2d // encoding: [0x20,0x38,0xc2,0x4e]
58 uzp2 v0.8b, v1.8b, v2.8b
59 uzp2 v0.16b, v1.16b, v2.16b
60 uzp2 v0.4h, v1.4h, v2.4h
61 uzp2 v0.8h, v1.8h, v2.8h
62 uzp2 v0.2s, v1.2s, v2.2s
63 uzp2 v0.4s, v1.4s, v2.4s
64 uzp2 v0.2d, v1.2d, v2.2d
66 // CHECK: uzp2 v0.8b, v1.8b, v2.8b // encoding: [0x20,0x58,0x02,0x0e]
67 // CHECK: uzp2 v0.16b, v1.16b, v2.16b // encoding: [0x20,0x58,0x02,0x4e]
68 // CHECK: uzp2 v0.4h, v1.4h, v2.4h // encoding: [0x20,0x58,0x42,0x0e]
69 // CHECK: uzp2 v0.8h, v1.8h, v2.8h // encoding: [0x20,0x58,0x42,0x4e]
70 // CHECK: uzp2 v0.2s, v1.2s, v2.2s // encoding: [0x20,0x58,0x82,0x0e]
71 // CHECK: uzp2 v0.4s, v1.4s, v2.4s // encoding: [0x20,0x58,0x82,0x4e]
72 // CHECK: uzp2 v0.2d, v1.2d, v2.2d // encoding: [0x20,0x58,0xc2,0x4e]
74 trn2 v0.8b, v1.8b, v2.8b
75 trn2 v0.16b, v1.16b, v2.16b
76 trn2 v0.4h, v1.4h, v2.4h
77 trn2 v0.8h, v1.8h, v2.8h
78 trn2 v0.2s, v1.2s, v2.2s
79 trn2 v0.4s, v1.4s, v2.4s
80 trn2 v0.2d, v1.2d, v2.2d
82 // CHECK: trn2 v0.8b, v1.8b, v2.8b // encoding: [0x20,0x68,0x02,0x0e]
83 // CHECK: trn2 v0.16b, v1.16b, v2.16b // encoding: [0x20,0x68,0x02,0x4e]
84 // CHECK: trn2 v0.4h, v1.4h, v2.4h // encoding: [0x20,0x68,0x42,0x0e]
85 // CHECK: trn2 v0.8h, v1.8h, v2.8h // encoding: [0x20,0x68,0x42,0x4e]
86 // CHECK: trn2 v0.2s, v1.2s, v2.2s // encoding: [0x20,0x68,0x82,0x0e]
87 // CHECK: trn2 v0.4s, v1.4s, v2.4s // encoding: [0x20,0x68,0x82,0x4e]
88 // CHECK: trn2 v0.2d, v1.2d, v2.2d // encoding: [0x20,0x68,0xc2,0x4e]
90 zip2 v0.8b, v1.8b, v2.8b
91 zip2 v0.16b, v1.16b, v2.16b
92 zip2 v0.4h, v1.4h, v2.4h
93 zip2 v0.8h, v1.8h, v2.8h
94 zip2 v0.2s, v1.2s, v2.2s
95 zip2 v0.4s, v1.4s, v2.4s
96 zip2 v0.2d, v1.2d, v2.2d
98 // CHECK: zip2 v0.8b, v1.8b, v2.8b // encoding: [0x20,0x78,0x02,0x0e]
99 // CHECK: zip2 v0.16b, v1.16b, v2.16b // encoding: [0x20,0x78,0x02,0x4e]
100 // CHECK: zip2 v0.4h, v1.4h, v2.4h // encoding: [0x20,0x78,0x42,0x0e]
101 // CHECK: zip2 v0.8h, v1.8h, v2.8h // encoding: [0x20,0x78,0x42,0x4e]
102 // CHECK: zip2 v0.2s, v1.2s, v2.2s // encoding: [0x20,0x78,0x82,0x0e]
103 // CHECK: zip2 v0.4s, v1.4s, v2.4s // encoding: [0x20,0x78,0x82,0x4e]
104 // CHECK: zip2 v0.2d, v1.2d, v2.2d // encoding: [0x20,0x78,0xc2,0x4e]