1
// RUN: not llvm-mc -triple aarch64-none-linux-gnu -mattr=+v8.1a -show-encoding < %s 2> %t | FileCheck %s
2
// RUN: FileCheck --check-prefix=CHECK-ERROR <%t %s
11
//CHECK: casb w0, w1, [x2] // encoding: [0x41,0x7c,0xa0,0x08]
12
//CHECK: casab w0, w1, [x2] // encoding: [0x41,0x7c,0xe0,0x08]
13
//CHECK: caslb w0, w1, [x2] // encoding: [0x41,0xfc,0xa0,0x08]
14
//CHECK: casalb w0, w1, [x2] // encoding: [0x41,0xfc,0xe0,0x08]
18
//CHECK-ERROR: error: invalid operand for instruction
19
//CHECK-ERROR: casb w0, w1, [w2]
21
//CHECK-ERROR: error: invalid operand for instruction
22
//CHECK-ERROR: casalb x0, x1, [x2]
31
//CHECK: cash w0, w1, [x2] // encoding: [0x41,0x7c,0xa0,0x48]
32
//CHECK: casah w0, w1, [x2] // encoding: [0x41,0x7c,0xe0,0x48]
33
//CHECK: caslh w0, w1, [x2] // encoding: [0x41,0xfc,0xa0,0x48]
34
//CHECK: casalh w0, w1, [x2] // encoding: [0x41,0xfc,0xe0,0x48]
42
//CHECK: cas w0, w1, [x2] // encoding: [0x41,0x7c,0xa0,0x88]
43
//CHECK: casa w0, w1, [x2] // encoding: [0x41,0x7c,0xe0,0x88]
44
//CHECK: casl w0, w1, [x2] // encoding: [0x41,0xfc,0xa0,0x88]
45
//CHECK: casal w0, w1, [x2] // encoding: [0x41,0xfc,0xe0,0x88]
50
//CHECK-ERROR: error: invalid operand for instruction
51
//CHECK-ERROR: cas w0, w1, [w2]
53
//CHECK-ERROR: error: invalid operand for instruction
54
//CHECK-ERROR: casl w0, x1, [x2]
63
//CHECK: cas x0, x1, [x2] // encoding: [0x41,0x7c,0xa0,0xc8]
64
//CHECK: casa x0, x1, [x2] // encoding: [0x41,0x7c,0xe0,0xc8]
65
//CHECK: casl x0, x1, [x2] // encoding: [0x41,0xfc,0xa0,0xc8]
66
//CHECK: casal x0, x1, [x2] // encoding: [0x41,0xfc,0xe0,0xc8]
71
//CHECK-ERROR: error: invalid operand for instruction
72
//CHECK-ERROR: casa x0, x1, [w2]
74
//CHECK-ERROR: error: invalid operand for instruction
75
//CHECK-ERROR: casal x0, w1, [x2]
85
ldumaxalh w0, w1, [x2]
88
//CHECK: ldadda x0, x1, [x2] // encoding: [0x41,0x00,0xa0,0xf8]
89
//CHECK: ldclrl x0, x1, [x2] // encoding: [0x41,0x10,0x60,0xf8]
90
//CHECK: ldeoral x0, x1, [x2] // encoding: [0x41,0x20,0xe0,0xf8]
91
//CHECK: ldset x0, x1, [x2] // encoding: [0x41,0x30,0x20,0xf8]
92
//CHECK: ldsmaxa w0, w1, [x2] // encoding: [0x41,0x40,0xa0,0xb8]
93
//CHECK: ldsminlb w0, w1, [x2] // encoding: [0x41,0x50,0x60,0x38]
94
//CHECK: ldumaxalh w0, w1, [x2] // encoding: [0x41,0x60,0xe0,0x78]
95
//CHECK: ldumin w0, w1, [x2] // encoding: [0x41,0x70,0x20,0xb8]
96
//CHECK: ldsminb w2, w3, [x5] // encoding: [0xa3,0x50,0x22,0x38]
98
// ST<OP> intructions: aliases to LD<OP>
108
//CHECK: staddlb w0, [x2] // encoding: [0x5f,0x00,0x60,0x38]
109
//CHECK: stclrlh w0, [x2] // encoding: [0x5f,0x10,0x60,0x78]
110
//CHECK: steorl w0, [x2] // encoding: [0x5f,0x20,0x60,0xb8]
111
//CHECK: stsetl x0, [x2] // encoding: [0x5f,0x30,0x60,0xf8]
112
//CHECK: stsmaxb w0, [x2] // encoding: [0x5f,0x40,0x20,0x38]
113
//CHECK: stsminh w0, [x2] // encoding: [0x5f,0x50,0x20,0x78]
114
//CHECK: stumax w0, [x2] // encoding: [0x5f,0x60,0x20,0xb8]
115
//CHECK: stumin x0, [x2] // encoding: [0x5f,0x70,0x20,0xf8]
116
//CHECK: stsminl x29, [sp] // encoding: [0xff,0x53,0x7d,0xf8]
121
//CHECK-ERROR: error: invalid operand for instruction
122
//CHECK-ERROR: ldsmax x0, x1, [w2]
124
//CHECK-ERROR: error: invalid operand for instruction
125
//CHECK-ERROR: ldeorl w0, w1, [w2]
133
//CHECK: swp x0, x1, [x2] // encoding: [0x41,0x80,0x20,0xf8]
134
//CHECK: swpb w0, w1, [x2] // encoding: [0x41,0x80,0x20,0x38]
135
//CHECK: swplh w0, w1, [x2] // encoding: [0x41,0x80,0x60,0x78]
136
//CHECK: swpal x0, x1, [sp] // encoding: [0xe1,0x83,0xe0,0xf8]
140
//CHECK-ERROR: error: invalid operand for instruction
141
//CHECK-ERROR: swp x0, x1, [w2]
143
//CHECK-ERROR: error: invalid operand for instruction
144
//CHECK-ERROR: swp x0, x1, [xzr]
148
casp x0, x1, x2, x3, [x4]
149
casp w0, w1, w2, w3, [x4]
150
//CHECK: casp x0, x1, x2, x3, [x4] // encoding: [0x82,0x7c,0x20,0x48]
151
//CHECK: casp w0, w1, w2, w3, [x4] // encoding: [0x82,0x7c,0x20,0x08]
153
casp x1, x2, x4, x5, [x6]
154
casp x0, x1, x3, x4, [x5]
155
casp x0, x2, x4, x5, [x6]
156
casp x0, x1, x2, x4, [x5]
157
casp x0, w1, x2, x3, [x5]
158
casp w0, x1, x2, x3, [x5]
159
casp w0, x1, w2, w3, [x5]
160
casp x0, x1, w2, w3, [x5]
161
//CHECK-ERROR: error: expected first even register of a consecutive same-size even/odd register pair
162
//CHECK-ERROR: casp x1, x2, x4, x5, [x6]
164
//CHECK-ERROR: error: expected first even register of a consecutive same-size even/odd register pair
165
//CHECK-ERROR: casp x0, x1, x3, x4, [x5]
167
//CHECK-ERROR: error: expected second odd register of a consecutive same-size even/odd register pair
168
//CHECK-ERROR: casp x0, x2, x4, x5, [x6]
170
//CHECK-ERROR: error: expected second odd register of a consecutive same-size even/odd register pair
171
//CHECK-ERROR: casp x0, x1, x2, x4, [x5]
173
//CHECK-ERROR: error: expected second odd register of a consecutive same-size even/odd register pair
174
//CHECK-ERROR: casp x0, w1, x2, x3, [x5]
176
//CHECK-ERROR: error: expected second odd register of a consecutive same-size even/odd register pair
177
//CHECK-ERROR: casp w0, x1, x2, x3, [x5]
179
//CHECK-ERROR: error: expected second odd register of a consecutive same-size even/odd register pair
180
//CHECK-ERROR: casp w0, x1, w2, w3, [x5]
182
//CHECK-ERROR: error: invalid operand for instruction
183
//CHECK-ERROR: casp x0, x1, w2, w3, [x5]