1032ae47e20ec026e9ba24745cea4647be39cc15
[oota-llvm.git] / test / MC / AArch64 / neon-saturating-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 Saturating Add (Signed)
8 //------------------------------------------------------------------------------
9          sqadd v0.8b, v1.8b, v2.8b
10          sqadd v0.16b, v1.16b, v2.16b
11          sqadd v0.4h, v1.4h, v2.4h
12          sqadd v0.8h, v1.8h, v2.8h
13          sqadd v0.2s, v1.2s, v2.2s
14          sqadd v0.4s, v1.4s, v2.4s
15          sqadd v0.2d, v1.2d, v2.2d
16
17 // CHECK: sqadd v0.8b, v1.8b, v2.8b        // encoding: [0x20,0x0c,0x22,0x0e]
18 // CHECK: sqadd v0.16b, v1.16b, v2.16b     // encoding: [0x20,0x0c,0x22,0x4e]
19 // CHECK: sqadd v0.4h, v1.4h, v2.4h        // encoding: [0x20,0x0c,0x62,0x0e]
20 // CHECK: sqadd v0.8h, v1.8h, v2.8h        // encoding: [0x20,0x0c,0x62,0x4e]
21 // CHECK: sqadd v0.2s, v1.2s, v2.2s        // encoding: [0x20,0x0c,0xa2,0x0e]
22 // CHECK: sqadd v0.4s, v1.4s, v2.4s        // encoding: [0x20,0x0c,0xa2,0x4e]
23 // CHECK: sqadd v0.2d, v1.2d, v2.2d        // encoding: [0x20,0x0c,0xe2,0x4e]
24
25 //------------------------------------------------------------------------------
26 // Vector Integer Saturating Add (Unsigned)
27 //------------------------------------------------------------------------------
28          uqadd v0.8b, v1.8b, v2.8b
29          uqadd v0.16b, v1.16b, v2.16b
30          uqadd v0.4h, v1.4h, v2.4h
31          uqadd v0.8h, v1.8h, v2.8h
32          uqadd v0.2s, v1.2s, v2.2s
33          uqadd v0.4s, v1.4s, v2.4s
34          uqadd v0.2d, v1.2d, v2.2d
35
36 // CHECK: uqadd v0.8b, v1.8b, v2.8b        // encoding: [0x20,0x0c,0x22,0x2e]
37 // CHECK: uqadd v0.16b, v1.16b, v2.16b     // encoding: [0x20,0x0c,0x22,0x6e]
38 // CHECK: uqadd v0.4h, v1.4h, v2.4h        // encoding: [0x20,0x0c,0x62,0x2e]
39 // CHECK: uqadd v0.8h, v1.8h, v2.8h        // encoding: [0x20,0x0c,0x62,0x6e]
40 // CHECK: uqadd v0.2s, v1.2s, v2.2s        // encoding: [0x20,0x0c,0xa2,0x2e]
41 // CHECK: uqadd v0.4s, v1.4s, v2.4s        // encoding: [0x20,0x0c,0xa2,0x6e]
42 // CHECK: uqadd v0.2d, v1.2d, v2.2d        // encoding: [0x20,0x0c,0xe2,0x6e]
43
44 //------------------------------------------------------------------------------
45 // Vector Integer Saturating Sub (Signed)
46 //------------------------------------------------------------------------------
47          sqsub v0.8b, v1.8b, v2.8b
48          sqsub v0.16b, v1.16b, v2.16b
49          sqsub v0.4h, v1.4h, v2.4h
50          sqsub v0.8h, v1.8h, v2.8h
51          sqsub v0.2s, v1.2s, v2.2s
52          sqsub v0.4s, v1.4s, v2.4s
53          sqsub v0.2d, v1.2d, v2.2d
54
55 // CHECK: sqsub v0.8b, v1.8b, v2.8b        // encoding: [0x20,0x2c,0x22,0x0e]
56 // CHECK: sqsub v0.16b, v1.16b, v2.16b     // encoding: [0x20,0x2c,0x22,0x4e]
57 // CHECK: sqsub v0.4h, v1.4h, v2.4h        // encoding: [0x20,0x2c,0x62,0x0e]
58 // CHECK: sqsub v0.8h, v1.8h, v2.8h        // encoding: [0x20,0x2c,0x62,0x4e]
59 // CHECK: sqsub v0.2s, v1.2s, v2.2s        // encoding: [0x20,0x2c,0xa2,0x0e]
60 // CHECK: sqsub v0.4s, v1.4s, v2.4s        // encoding: [0x20,0x2c,0xa2,0x4e]
61 // CHECK: sqsub v0.2d, v1.2d, v2.2d        // encoding: [0x20,0x2c,0xe2,0x4e]
62
63 //------------------------------------------------------------------------------
64 // Vector Integer Saturating Sub (Unsigned)
65 //------------------------------------------------------------------------------
66          uqsub v0.8b, v1.8b, v2.8b
67          uqsub v0.16b, v1.16b, v2.16b
68          uqsub v0.4h, v1.4h, v2.4h
69          uqsub v0.8h, v1.8h, v2.8h
70          uqsub v0.2s, v1.2s, v2.2s
71          uqsub v0.4s, v1.4s, v2.4s
72          uqsub v0.2d, v1.2d, v2.2d
73
74 // CHECK: uqsub v0.8b, v1.8b, v2.8b        // encoding: [0x20,0x2c,0x22,0x2e]
75 // CHECK: uqsub v0.16b, v1.16b, v2.16b     // encoding: [0x20,0x2c,0x22,0x6e]
76 // CHECK: uqsub v0.4h, v1.4h, v2.4h        // encoding: [0x20,0x2c,0x62,0x2e]
77 // CHECK: uqsub v0.8h, v1.8h, v2.8h        // encoding: [0x20,0x2c,0x62,0x6e]
78 // CHECK: uqsub v0.2s, v1.2s, v2.2s        // encoding: [0x20,0x2c,0xa2,0x2e]
79 // CHECK: uqsub v0.4s, v1.4s, v2.4s        // encoding: [0x20,0x2c,0xa2,0x6e]
80 // CHECK: uqsub v0.2d, v1.2d, v2.2d        // encoding: [0x20,0x2c,0xe2,0x6e]
81
82 //------------------------------------------------------------------------------
83 // Scalar Integer Saturating Add (Signed)
84 //------------------------------------------------------------------------------
85          sqadd b0, b1, b2
86          sqadd h10, h11, h12
87          sqadd s20, s21, s2
88          sqadd d17, d31, d8
89
90 // CHECK: sqadd b0, b1, b2        // encoding: [0x20,0x0c,0x22,0x5e]
91 // CHECK: sqadd h10, h11, h12     // encoding: [0x6a,0x0d,0x6c,0x5e]
92 // CHECK: sqadd s20, s21, s2      // encoding: [0xb4,0x0e,0xa2,0x5e]
93 // CHECK: sqadd d17, d31, d8      // encoding: [0xf1,0x0f,0xe8,0x5e]
94
95 //------------------------------------------------------------------------------
96 // Scalar Integer Saturating Add (Unsigned)
97 //------------------------------------------------------------------------------
98          uqadd b0, b1, b2
99          uqadd h10, h11, h12
100          uqadd s20, s21, s2
101          uqadd d17, d31, d8
102
103 // CHECK: uqadd b0, b1, b2        // encoding: [0x20,0x0c,0x22,0x7e]
104 // CHECK: uqadd h10, h11, h12     // encoding: [0x6a,0x0d,0x6c,0x7e]
105 // CHECK: uqadd s20, s21, s2      // encoding: [0xb4,0x0e,0xa2,0x7e]
106 // CHECK: uqadd d17, d31, d8      // encoding: [0xf1,0x0f,0xe8,0x7e]
107
108 //------------------------------------------------------------------------------
109 // Scalar Integer Saturating Sub (Signed)
110 //------------------------------------------------------------------------------
111          sqsub b0, b1, b2
112          sqsub h10, h11, h12
113          sqsub s20, s21, s2
114          sqsub d17, d31, d8
115
116 // CHECK: sqsub b0, b1, b2        // encoding: [0x20,0x2c,0x22,0x5e]
117 // CHECK: sqsub h10, h11, h12     // encoding: [0x6a,0x2d,0x6c,0x5e]
118 // CHECK: sqsub s20, s21, s2      // encoding: [0xb4,0x2e,0xa2,0x5e]
119 // CHECK: sqsub d17, d31, d8      // encoding: [0xf1,0x2f,0xe8,0x5e]
120
121 //------------------------------------------------------------------------------
122 // Scalar Integer Saturating Sub (Unsigned)
123 //------------------------------------------------------------------------------
124          uqsub b0, b1, b2
125          uqsub h10, h11, h12
126          uqsub s20, s21, s2
127          uqsub d17, d31, d8
128
129 // CHECK: uqsub b0, b1, b2        // encoding: [0x20,0x2c,0x22,0x7e]
130 // CHECK: uqsub h10, h11, h12     // encoding: [0x6a,0x2d,0x6c,0x7e]
131 // CHECK: uqsub s20, s21, s2      // encoding: [0xb4,0x2e,0xa2,0x7e]
132 // CHECK: uqsub d17, d31, d8      // encoding: [0xf1,0x2f,0xe8,0x7e]
133