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