AArch64/ARM64: run AArch64 NEON MC tests through ARM64 too.
[oota-llvm.git] / test / MC / AArch64 / neon-perm.s
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
3
4 // Check that the assembler can handle the documented syntax for AArch64
5
6 //------------------------------------------------------------------------------
7 // Instructions for permute
8 //------------------------------------------------------------------------------
9
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
17
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]
25
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
33
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]
41
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
49
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]
57
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
65
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]
73
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
81
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]
89
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
97
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]