1 @ RUN: llvm-mc -mcpu=cortex-a8 -triple arm-unknown-unknown -show-encoding < %s \ 2 @ RUN: | FileCheck %s 3 4 vand d16, d17, d16 5 vand q8, q8, q9 6 7 @ CHECK: vand d16, d17, d16 @ encoding: [0xb0,0x01,0x41,0xf2] 8 @ CHECK: vand q8, q8, q9 @ encoding: [0xf2,0x01,0x40,0xf2] 9 10 veor d16, d17, d16 11 veor q8, q8, q9 12 13 @ CHECK: veor d16, d17, d16 @ encoding: [0xb0,0x01,0x41,0xf3] 14 @ CHECK: veor q8, q8, q9 @ encoding: [0xf2,0x01,0x40,0xf3] 15 16 vorr d16, d17, d16 17 vorr q8, q8, q9 18 19 @ CHECK: vorr d16, d17, d16 @ encoding: [0xb0,0x01,0x61,0xf2] 20 @ CHECK: vorr q8, q8, q9 @ encoding: [0xf2,0x01,0x60,0xf2] 21 22 vorr.i32 d16, #0x1000000 23 vorr.i32 q8, #0x1000000 24 vorr.i32 q8, #0x0 25 26 @ CHECK: vorr.i32 d16, #0x1000000 @ encoding: [0x11,0x07,0xc0,0xf2] 27 @ CHECK: vorr.i32 q8, #0x1000000 @ encoding: [0x51,0x07,0xc0,0xf2] 28 @ CHECK: vorr.i32 q8, #0x0 @ encoding: [0x50,0x01,0xc0,0xf2] 29 30 vbic d16, d17, d16 31 vbic q8, q8, q9 32 vbic q10, q11 33 vbic d9, d1 34 vbic.i16 d16, #0xFF00 35 vbic.i16 q8, #0xFF00 36 vbic.i16 d16, #0x00FF 37 vbic.i16 q8, #0x00FF 38 vbic.i32 d16, #0xFF000000 39 vbic.i32 q8, #0xFF000000 40 vbic.i32 d16, #0x00FF0000 41 vbic.i32 q8, #0x00FF0000 42 vbic.i32 d16, #0x0000FF00 43 vbic.i32 q8, #0x0000FF00 44 vbic.i32 d16, #0x000000FF 45 vbic.i32 q8, #0x000000FF 46 47 @ CHECK: vbic d16, d17, d16 @ encoding: [0xb0,0x01,0x51,0xf2] 48 @ CHECK: vbic q8, q8, q9 @ encoding: [0xf2,0x01,0x50,0xf2] 49 @ CHECK: vbic q10, q10, q11 @ encoding: [0xf6,0x41,0x54,0xf2] 50 @ CHECK: vbic d9, d9, d1 @ encoding: [0x11,0x91,0x19,0xf2] 51 @ CHECK: vbic.i16 d16, #0xff00 @ encoding: [0x3f,0x0b,0xc7,0xf3] 52 @ CHECK: vbic.i16 q8, #0xff00 @ encoding: [0x7f,0x0b,0xc7,0xf3] 53 @ CHECK: vbic.i16 d16, #0xff @ encoding: [0x3f,0x09,0xc7,0xf3] 54 @ CHECK: vbic.i16 q8, #0xff @ encoding: [0x7f,0x09,0xc7,0xf3] 55 @ CHECK: vbic.i32 d16, #0xff000000 @ encoding: [0x3f,0x07,0xc7,0xf3] 56 @ CHECK: vbic.i32 q8, #0xff000000 @ encoding: [0x7f,0x07,0xc7,0xf3] 57 @ CHECK: vbic.i32 d16, #0xff0000 @ encoding: [0x3f,0x05,0xc7,0xf3] 58 @ CHECK: vbic.i32 q8, #0xff0000 @ encoding: [0x7f,0x05,0xc7,0xf3] 59 @ CHECK: vbic.i32 d16, #0xff00 @ encoding: [0x3f,0x03,0xc7,0xf3] 60 @ CHECK: vbic.i32 q8, #0xff00 @ encoding: [0x7f,0x03,0xc7,0xf3] 61 @ CHECK: vbic.i32 d16, #0xff @ encoding: [0x3f,0x01,0xc7,0xf3] 62 @ CHECK: vbic.i32 q8, #0xff @ encoding: [0x7f,0x01,0xc7,0xf3] 63 64 vand.i16 d10, #0xff03 65 vand.i16 q10, #0xff03 66 vand.i16 d10, #0x03ff 67 vand.i16 q10, #0x03ff 68 vand.i32 d10, #0x03ffffff 69 vand.i32 q10, #0x03ffffff 70 vand.i32 d10, #0xff03ffff 71 vand.i32 q10, #0xff03ffff 72 vand.i32 d10, #0xffff03ff 73 vand.i32 q10, #0xffff03ff 74 vand.i32 d10, #0xffffff03 75 vand.i32 q10, #0xffffff03 76 77 @ CHECK: vbic.i16 d10, #0xfc @ encoding: [0x3c,0xa9,0x87,0xf3] 78 @ CHECK: vbic.i16 q10, #0xfc @ encoding: [0x7c,0x49,0xc7,0xf3] 79 @ CHECK: vbic.i16 d10, #0xfc00 @ encoding: [0x3c,0xab,0x87,0xf3] 80 @ CHECK: vbic.i16 q10, #0xfc00 @ encoding: [0x7c,0x4b,0xc7,0xf3] 81 @ CHECK: vbic.i32 d10, #0xfc000000 @ encoding: [0x3c,0xa7,0x87,0xf3] 82 @ CHECK: vbic.i32 q10, #0xfc000000 @ encoding: [0x7c,0x47,0xc7,0xf3] 83 @ CHECK: vbic.i32 d10, #0xfc0000 @ encoding: [0x3c,0xa5,0x87,0xf3] 84 @ CHECK: vbic.i32 q10, #0xfc0000 @ encoding: [0x7c,0x45,0xc7,0xf3] 85 @ CHECK: vbic.i32 d10, #0xfc00 @ encoding: [0x3c,0xa3,0x87,0xf3] 86 @ CHECK: vbic.i32 q10, #0xfc00 @ encoding: [0x7c,0x43,0xc7,0xf3] 87 @ CHECK: vbic.i32 d10, #0xfc @ encoding: [0x3c,0xa1,0x87,0xf3] 88 @ CHECK: vbic.i32 q10, #0xfc @ encoding: [0x7c,0x41,0xc7,0xf3] 89 90 vorn d16, d17, d16 91 vorn q8, q8, q9 92 93 @ CHECK: vorn d16, d17, d16 @ encoding: [0xb0,0x01,0x71,0xf2] 94 @ CHECK: vorn q8, q8, q9 @ encoding: [0xf2,0x01,0x70,0xf2] 95 96 vmvn d16, d16 97 vmvn q8, q8 98 99 @ CHECK: vmvn d16, d16 @ encoding: [0xa0,0x05,0xf0,0xf3] 100 @ CHECK: vmvn q8, q8 @ encoding: [0xe0,0x05,0xf0,0xf3] 101 102 vbsl d18, d17, d16 103 vbsl q8, q10, q9 104 105 @ CHECK: vbsl d18, d17, d16 @ encoding: [0xb0,0x21,0x51,0xf3] 106 @ CHECK: vbsl q8, q10, q9 @ encoding: [0xf2,0x01,0x54,0xf3] 107 108 109 @ Size suffices are optional. 110 veor q4, q7, q3 111 veor.8 q4, q7, q3 112 veor.16 q4, q7, q3 113 veor.32 q4, q7, q3 114 veor.64 q4, q7, q3 115 116 veor.i8 q4, q7, q3 117 veor.i16 q4, q7, q3 118 veor.i32 q4, q7, q3 119 veor.i64 q4, q7, q3 120 121 veor.s8 q4, q7, q3 122 veor.s16 q4, q7, q3 123 veor.s32 q4, q7, q3 124 veor.s64 q4, q7, q3 125 126 veor.u8 q4, q7, q3 127 veor.u16 q4, q7, q3 128 veor.u32 q4, q7, q3 129 veor.u64 q4, q7, q3 130 131 veor.p8 q4, q7, q3 132 veor.p16 q4, q7, q3 133 veor.f32 q4, q7, q3 134 veor.f64 q4, q7, q3 135 136 veor.f q4, q7, q3 137 veor.d q4, q7, q3 138 139 @ CHECK: veor q4, q7, q3 @ encoding: [0x56,0x81,0x0e,0xf3] 140 @ CHECK: veor q4, q7, q3 @ encoding: [0x56,0x81,0x0e,0xf3] 141 @ CHECK: veor q4, q7, q3 @ encoding: [0x56,0x81,0x0e,0xf3] 142 @ CHECK: veor q4, q7, q3 @ encoding: [0x56,0x81,0x0e,0xf3] 143 @ CHECK: veor q4, q7, q3 @ encoding: [0x56,0x81,0x0e,0xf3] 144 145 @ CHECK: veor q4, q7, q3 @ encoding: [0x56,0x81,0x0e,0xf3] 146 @ CHECK: veor q4, q7, q3 @ encoding: [0x56,0x81,0x0e,0xf3] 147 @ CHECK: veor q4, q7, q3 @ encoding: [0x56,0x81,0x0e,0xf3] 148 @ CHECK: veor q4, q7, q3 @ encoding: [0x56,0x81,0x0e,0xf3] 149 150 @ CHECK: veor q4, q7, q3 @ encoding: [0x56,0x81,0x0e,0xf3] 151 @ CHECK: veor q4, q7, q3 @ encoding: [0x56,0x81,0x0e,0xf3] 152 @ CHECK: veor q4, q7, q3 @ encoding: [0x56,0x81,0x0e,0xf3] 153 @ CHECK: veor q4, q7, q3 @ encoding: [0x56,0x81,0x0e,0xf3] 154 155 @ CHECK: veor q4, q7, q3 @ encoding: [0x56,0x81,0x0e,0xf3] 156 @ CHECK: veor q4, q7, q3 @ encoding: [0x56,0x81,0x0e,0xf3] 157 @ CHECK: veor q4, q7, q3 @ encoding: [0x56,0x81,0x0e,0xf3] 158 @ CHECK: veor q4, q7, q3 @ encoding: [0x56,0x81,0x0e,0xf3] 159 160 @ CHECK: veor q4, q7, q3 @ encoding: [0x56,0x81,0x0e,0xf3] 161 @ CHECK: veor q4, q7, q3 @ encoding: [0x56,0x81,0x0e,0xf3] 162 @ CHECK: veor q4, q7, q3 @ encoding: [0x56,0x81,0x0e,0xf3] 163 @ CHECK: veor q4, q7, q3 @ encoding: [0x56,0x81,0x0e,0xf3] 164 165 @ CHECK: veor q4, q7, q3 @ encoding: [0x56,0x81,0x0e,0xf3] 166 @ CHECK: veor q4, q7, q3 @ encoding: [0x56,0x81,0x0e,0xf3] 167 168 169 vand d4, d7, d3 170 vand.8 d4, d7, d3 171 vand.16 d4, d7, d3 172 vand.32 d4, d7, d3 173 vand.64 d4, d7, d3 174 175 vand.i8 d4, d7, d3 176 vand.i16 d4, d7, d3 177 vand.i32 d4, d7, d3 178 vand.i64 d4, d7, d3 179 180 vand.s8 d4, d7, d3 181 vand.s16 d4, d7, d3 182 vand.s32 d4, d7, d3 183 vand.s64 d4, d7, d3 184 185 vand.u8 d4, d7, d3 186 vand.u16 d4, d7, d3 187 vand.u32 d4, d7, d3 188 vand.u64 d4, d7, d3 189 190 vand.p8 d4, d7, d3 191 vand.p16 d4, d7, d3 192 vand.f32 d4, d7, d3 193 vand.f64 d4, d7, d3 194 195 vand.f d4, d7, d3 196 vand.d d4, d7, d3 197 198 @ CHECK: vand d4, d7, d3 @ encoding: [0x13,0x41,0x07,0xf2] 199 @ CHECK: vand d4, d7, d3 @ encoding: [0x13,0x41,0x07,0xf2] 200 @ CHECK: vand d4, d7, d3 @ encoding: [0x13,0x41,0x07,0xf2] 201 @ CHECK: vand d4, d7, d3 @ encoding: [0x13,0x41,0x07,0xf2] 202 @ CHECK: vand d4, d7, d3 @ encoding: [0x13,0x41,0x07,0xf2] 203 204 @ CHECK: vand d4, d7, d3 @ encoding: [0x13,0x41,0x07,0xf2] 205 @ CHECK: vand d4, d7, d3 @ encoding: [0x13,0x41,0x07,0xf2] 206 @ CHECK: vand d4, d7, d3 @ encoding: [0x13,0x41,0x07,0xf2] 207 @ CHECK: vand d4, d7, d3 @ encoding: [0x13,0x41,0x07,0xf2] 208 209 @ CHECK: vand d4, d7, d3 @ encoding: [0x13,0x41,0x07,0xf2] 210 @ CHECK: vand d4, d7, d3 @ encoding: [0x13,0x41,0x07,0xf2] 211 @ CHECK: vand d4, d7, d3 @ encoding: [0x13,0x41,0x07,0xf2] 212 @ CHECK: vand d4, d7, d3 @ encoding: [0x13,0x41,0x07,0xf2] 213 214 @ CHECK: vand d4, d7, d3 @ encoding: [0x13,0x41,0x07,0xf2] 215 @ CHECK: vand d4, d7, d3 @ encoding: [0x13,0x41,0x07,0xf2] 216 @ CHECK: vand d4, d7, d3 @ encoding: [0x13,0x41,0x07,0xf2] 217 @ CHECK: vand d4, d7, d3 @ encoding: [0x13,0x41,0x07,0xf2] 218 219 @ CHECK: vand d4, d7, d3 @ encoding: [0x13,0x41,0x07,0xf2] 220 @ CHECK: vand d4, d7, d3 @ encoding: [0x13,0x41,0x07,0xf2] 221 @ CHECK: vand d4, d7, d3 @ encoding: [0x13,0x41,0x07,0xf2] 222 @ CHECK: vand d4, d7, d3 @ encoding: [0x13,0x41,0x07,0xf2] 223 224 @ CHECK: vand d4, d7, d3 @ encoding: [0x13,0x41,0x07,0xf2] 225 @ CHECK: vand d4, d7, d3 @ encoding: [0x13,0x41,0x07,0xf2] 226 227 vorr d4, d7, d3 228 vorr.8 d4, d7, d3 229 vorr.16 d4, d7, d3 230 vorr.32 d4, d7, d3 231 vorr.64 d4, d7, d3 232 233 vorr.i8 d4, d7, d3 234 vorr.i16 d4, d7, d3 235 vorr.i32 d4, d7, d3 236 vorr.i64 d4, d7, d3 237 238 vorr.s8 d4, d7, d3 239 vorr.s16 d4, d7, d3 240 vorr.s32 q4, q7, q3 241 vorr.s64 q4, q7, q3 242 243 vorr.u8 q4, q7, q3 244 vorr.u16 q4, q7, q3 245 vorr.u32 q4, q7, q3 246 vorr.u64 q4, q7, q3 247 248 vorr.p8 q4, q7, q3 249 vorr.p16 q4, q7, q3 250 vorr.f32 q4, q7, q3 251 vorr.f64 q4, q7, q3 252 253 vorr.f q4, q7, q3 254 vorr.d q4, q7, q3 255 256 @ CHECK: vorr d4, d7, d3 @ encoding: [0x13,0x41,0x27,0xf2] 257 @ CHECK: vorr d4, d7, d3 @ encoding: [0x13,0x41,0x27,0xf2] 258 @ CHECK: vorr d4, d7, d3 @ encoding: [0x13,0x41,0x27,0xf2] 259 @ CHECK: vorr d4, d7, d3 @ encoding: [0x13,0x41,0x27,0xf2] 260 @ CHECK: vorr d4, d7, d3 @ encoding: [0x13,0x41,0x27,0xf2] 261 262 @ CHECK: vorr d4, d7, d3 @ encoding: [0x13,0x41,0x27,0xf2] 263 @ CHECK: vorr d4, d7, d3 @ encoding: [0x13,0x41,0x27,0xf2] 264 @ CHECK: vorr d4, d7, d3 @ encoding: [0x13,0x41,0x27,0xf2] 265 @ CHECK: vorr d4, d7, d3 @ encoding: [0x13,0x41,0x27,0xf2] 266 267 @ CHECK: vorr d4, d7, d3 @ encoding: [0x13,0x41,0x27,0xf2] 268 @ CHECK: vorr d4, d7, d3 @ encoding: [0x13,0x41,0x27,0xf2] 269 @ CHECK: vorr q4, q7, q3 @ encoding: [0x56,0x81,0x2e,0xf2] 270 @ CHECK: vorr q4, q7, q3 @ encoding: [0x56,0x81,0x2e,0xf2] 271 272 @ CHECK: vorr q4, q7, q3 @ encoding: [0x56,0x81,0x2e,0xf2] 273 @ CHECK: vorr q4, q7, q3 @ encoding: [0x56,0x81,0x2e,0xf2] 274 @ CHECK: vorr q4, q7, q3 @ encoding: [0x56,0x81,0x2e,0xf2] 275 @ CHECK: vorr q4, q7, q3 @ encoding: [0x56,0x81,0x2e,0xf2] 276 277 @ CHECK: vorr q4, q7, q3 @ encoding: [0x56,0x81,0x2e,0xf2] 278 @ CHECK: vorr q4, q7, q3 @ encoding: [0x56,0x81,0x2e,0xf2] 279 @ CHECK: vorr q4, q7, q3 @ encoding: [0x56,0x81,0x2e,0xf2] 280 @ CHECK: vorr q4, q7, q3 @ encoding: [0x56,0x81,0x2e,0xf2] 281 282 @ CHECK: vorr q4, q7, q3 @ encoding: [0x56,0x81,0x2e,0xf2] 283 @ CHECK: vorr q4, q7, q3 @ encoding: [0x56,0x81,0x2e,0xf2] 284 285 @ Two-operand aliases 286 vand q6, q5 287 vand.s8 q6, q5 288 vand.s16 q7, q1 289 vand.s32 q8, q2 290 vand.f64 q8, q2 291 292 veor q6, q5 293 veor.8 q6, q5 294 veor.p16 q7, q1 295 veor.u32 q8, q2 296 veor.d q8, q2 297 298 veor q6, q5 299 veor.i8 q6, q5 300 veor.16 q7, q1 301 veor.f q8, q2 302 veor.i64 q8, q2 303 304 vclt.s16 q5, #0 305 vclt.s16 d5, #0 306 307 vceq.s16 q5, q3 308 vceq.s16 d5, d3 309 310 vcgt.s16 q5, q3 311 vcgt.s16 d5, d3 312 313 vcge.s16 q5, q3 314 vcge.s16 d5, d3 315 316 vcgt.s16 q5, #0 317 vcgt.s16 d5, #0 318 319 vcge.s16 q5, #0 320 vcge.s16 d5, #0 321 322 vceq.s16 q5, #0 323 vceq.s16 d5, #0 324 325 vcle.s16 q5, #0 326 vcle.s16 d5, #0 327 328 vacge.f32 d5, d30 329 vacge.f32 q5, q3 330 331 vacgt.f32 d5, d30 332 vacgt.f32 q5, q3 333 334 @ FIXME: We don't have an alias that reverses the operands 335 @ vacle.f32 d5, d30 336 @ vacle.f32 q5, q3 337 @ vaclt.f32 d5, d30 338 @ vaclt.f32 q5, q3 339 340 @ CHECK: vand q6, q6, q5 @ encoding: [0x5a,0xc1,0x0c,0xf2] 341 @ CHECK: vand q6, q6, q5 @ encoding: [0x5a,0xc1,0x0c,0xf2] 342 @ CHECK: vand q7, q7, q1 @ encoding: [0x52,0xe1,0x0e,0xf2] 343 @ CHECK: vand q8, q8, q2 @ encoding: [0xd4,0x01,0x40,0xf2] 344 @ CHECK: vand q8, q8, q2 @ encoding: [0xd4,0x01,0x40,0xf2] 345 346 @ CHECK: veor q6, q6, q5 @ encoding: [0x5a,0xc1,0x0c,0xf3] 347 @ CHECK: veor q6, q6, q5 @ encoding: [0x5a,0xc1,0x0c,0xf3] 348 @ CHECK: veor q7, q7, q1 @ encoding: [0x52,0xe1,0x0e,0xf3] 349 @ CHECK: veor q8, q8, q2 @ encoding: [0xd4,0x01,0x40,0xf3] 350 @ CHECK: veor q8, q8, q2 @ encoding: [0xd4,0x01,0x40,0xf3] 351 352 @ CHECK: veor q6, q6, q5 @ encoding: [0x5a,0xc1,0x0c,0xf3] 353 @ CHECK: veor q6, q6, q5 @ encoding: [0x5a,0xc1,0x0c,0xf3] 354 @ CHECK: veor q7, q7, q1 @ encoding: [0x52,0xe1,0x0e,0xf3] 355 @ CHECK: veor q8, q8, q2 @ encoding: [0xd4,0x01,0x40,0xf3] 356 @ CHECK: veor q8, q8, q2 @ encoding: [0xd4,0x01,0x40,0xf3] 357 @ CHECK: vclt.s16 q5, q5, #0 @ encoding: [0x4a,0xa2,0xb5,0xf3] 358 @ CHECK: vclt.s16 d5, d5, #0 @ encoding: [0x05,0x52,0xb5,0xf3] 359 360 @ CHECK: vceq.i16 q5, q5, q3 @ encoding: [0x56,0xa8,0x1a,0xf3] 361 @ CHECK: vceq.i16 d5, d5, d3 @ encoding: [0x13,0x58,0x15,0xf3] 362 363 @ CHECK: vcgt.s16 q5, q5, q3 @ encoding: [0x46,0xa3,0x1a,0xf2] 364 @ CHECK: vcgt.s16 d5, d5, d3 @ encoding: [0x03,0x53,0x15,0xf2] 365 366 @ CHECK: vcge.s16 q5, q5, q3 @ encoding: [0x56,0xa3,0x1a,0xf2] 367 @ CHECK: vcge.s16 d5, d5, d3 @ encoding: [0x13,0x53,0x15,0xf2] 368 369 @ CHECK: vcgt.s16 q5, q5, #0 @ encoding: [0x4a,0xa0,0xb5,0xf3] 370 @ CHECK: vcgt.s16 d5, d5, #0 @ encoding: [0x05,0x50,0xb5,0xf3] 371 372 @ CHECK: vcge.s16 q5, q5, #0 @ encoding: [0xca,0xa0,0xb5,0xf3] 373 @ CHECK: vcge.s16 d5, d5, #0 @ encoding: [0x85,0x50,0xb5,0xf3] 374 375 @ CHECK: vceq.i16 q5, q5, #0 @ encoding: [0x4a,0xa1,0xb5,0xf3] 376 @ CHECK: vceq.i16 d5, d5, #0 @ encoding: [0x05,0x51,0xb5,0xf3] 377 378 @ CHECK: vcle.s16 q5, q5, #0 @ encoding: [0xca,0xa1,0xb5,0xf3] 379 @ CHECK: vcle.s16 d5, d5, #0 @ encoding: [0x85,0x51,0xb5,0xf3] 380 381 @ CHECK: vacge.f32 d5, d5, d30 @ encoding: [0x3e,0x5e,0x05,0xf3] 382 @ CHECK: vacge.f32 q5, q5, q3 @ encoding: [0x56,0xae,0x0a,0xf3] 383 384 @ CHECK: vacgt.f32 d5, d5, d30 @ encoding: [0x3e,0x5e,0x25,0xf3] 385 @ CHECK: vacgt.f32 q5, q5, q3 @ encoding: [0x56,0xae,0x2a,0xf3] 386