AArch64/ARM64: move ARM64 into AArch64's place
[oota-llvm.git] / test / MC / AArch64 / neon-halving-add-sub.s
1 // RUN: llvm-mc -triple aarch64-none-linux-gnu -mattr=+neon -show-encoding < %s | FileCheck %s
2
3 // Check that the assembler can handle the documented syntax for AArch64
4
5
6 //------------------------------------------------------------------------------
7 // Vector Integer Halving Add (Signed)
8 //------------------------------------------------------------------------------
9          shadd v0.8b, v1.8b, v2.8b
10          shadd v0.16b, v1.16b, v2.16b
11          shadd v0.4h, v1.4h, v2.4h
12          shadd v0.8h, v1.8h, v2.8h
13          shadd v0.2s, v1.2s, v2.2s
14          shadd v0.4s, v1.4s, v2.4s
15
16 // CHECK: shadd v0.8b, v1.8b, v2.8b        // encoding: [0x20,0x04,0x22,0x0e]
17 // CHECK: shadd v0.16b, v1.16b, v2.16b     // encoding: [0x20,0x04,0x22,0x4e]
18 // CHECK: shadd v0.4h, v1.4h, v2.4h        // encoding: [0x20,0x04,0x62,0x0e]
19 // CHECK: shadd v0.8h, v1.8h, v2.8h        // encoding: [0x20,0x04,0x62,0x4e]
20 // CHECK: shadd v0.2s, v1.2s, v2.2s        // encoding: [0x20,0x04,0xa2,0x0e]
21 // CHECK: shadd v0.4s, v1.4s, v2.4s        // encoding: [0x20,0x04,0xa2,0x4e]
22
23
24 //------------------------------------------------------------------------------
25 // Vector Integer Halving Add (Unsigned)
26 //------------------------------------------------------------------------------
27          uhadd v0.8b, v1.8b, v2.8b
28          uhadd v0.16b, v1.16b, v2.16b
29          uhadd v0.4h, v1.4h, v2.4h
30          uhadd v0.8h, v1.8h, v2.8h
31          uhadd v0.2s, v1.2s, v2.2s
32          uhadd v0.4s, v1.4s, v2.4s
33
34 // CHECK: uhadd v0.8b, v1.8b, v2.8b        // encoding: [0x20,0x04,0x22,0x2e]
35 // CHECK: uhadd v0.16b, v1.16b, v2.16b     // encoding: [0x20,0x04,0x22,0x6e]
36 // CHECK: uhadd v0.4h, v1.4h, v2.4h        // encoding: [0x20,0x04,0x62,0x2e]
37 // CHECK: uhadd v0.8h, v1.8h, v2.8h        // encoding: [0x20,0x04,0x62,0x6e]
38 // CHECK: uhadd v0.2s, v1.2s, v2.2s        // encoding: [0x20,0x04,0xa2,0x2e]
39 // CHECK: uhadd v0.4s, v1.4s, v2.4s        // encoding: [0x20,0x04,0xa2,0x6e]
40
41 //------------------------------------------------------------------------------
42 // Vector Integer Halving Sub (Signed)
43 //------------------------------------------------------------------------------
44          shsub v0.8b, v1.8b, v2.8b
45          shsub v0.16b, v1.16b, v2.16b
46          shsub v0.4h, v1.4h, v2.4h
47          shsub v0.8h, v1.8h, v2.8h
48          shsub v0.2s, v1.2s, v2.2s
49          shsub v0.4s, v1.4s, v2.4s
50
51 // CHECK: shsub v0.8b, v1.8b, v2.8b        // encoding: [0x20,0x24,0x22,0x0e]
52 // CHECK: shsub v0.16b, v1.16b, v2.16b     // encoding: [0x20,0x24,0x22,0x4e]
53 // CHECK: shsub v0.4h, v1.4h, v2.4h        // encoding: [0x20,0x24,0x62,0x0e]
54 // CHECK: shsub v0.8h, v1.8h, v2.8h        // encoding: [0x20,0x24,0x62,0x4e]
55 // CHECK: shsub v0.2s, v1.2s, v2.2s        // encoding: [0x20,0x24,0xa2,0x0e]
56 // CHECK: shsub v0.4s, v1.4s, v2.4s        // encoding: [0x20,0x24,0xa2,0x4e]
57
58 //------------------------------------------------------------------------------
59 // Vector Integer Halving Sub (Unsigned)
60 //------------------------------------------------------------------------------
61          uhsub v0.8b, v1.8b, v2.8b
62          uhsub v0.16b, v1.16b, v2.16b
63          uhsub v0.4h, v1.4h, v2.4h
64          uhsub v0.8h, v1.8h, v2.8h
65          uhsub v0.2s, v1.2s, v2.2s
66          uhsub v0.4s, v1.4s, v2.4s
67
68 // CHECK: uhsub v0.8b, v1.8b, v2.8b        // encoding: [0x20,0x24,0x22,0x2e]
69 // CHECK: uhsub v0.16b, v1.16b, v2.16b     // encoding: [0x20,0x24,0x22,0x6e]
70 // CHECK: uhsub v0.4h, v1.4h, v2.4h        // encoding: [0x20,0x24,0x62,0x2e]
71 // CHECK: uhsub v0.8h, v1.8h, v2.8h        // encoding: [0x20,0x24,0x62,0x6e]
72 // CHECK: uhsub v0.2s, v1.2s, v2.2s        // encoding: [0x20,0x24,0xa2,0x2e]
73 // CHECK: uhsub v0.4s, v1.4s, v2.4s        // encoding: [0x20,0x24,0xa2,0x6e]
74