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