1# RUN: llvm-mc -triple aarch64-none-linux-gnu -mattr=+neon -disassemble < %s | FileCheck %s 2# RUN: llvm-mc -triple arm64-none-linux-gnu -mattr=+neon -disassemble < %s | FileCheck %s 3 4#------------------------------------------------------------------------------ 5# Vector Integer Add/Sub 6#------------------------------------------------------------------------------ 7# CHECK: add v31.8b, v31.8b, v31.8b 8# CHECK: sub v0.2d, v0.2d, v0.2d 90xff 0x87 0x3f 0x0e 100x00 0x84 0xe0 0x6e 11 12#------------------------------------------------------------------------------ 13# Vector Floating-Point Add/Sub 14#------------------------------------------------------------------------------ 15 16# CHECK: fadd v0.4s, v0.4s, v0.4s 17# CHECK: fsub v31.2s, v31.2s, v31.2s 180x00 0xd4 0x20 0x4e 190xff 0xd7 0xbf 0x0e 20 21#------------------------------------------------------------------------------ 22# Vector Integer Mul 23#------------------------------------------------------------------------------ 24# CHECK: mul v0.8b, v1.8b, v2.8b 250x20 0x9c 0x22 0x0e 26 27#------------------------------------------------------------------------------ 28# Vector Floating-Point Mul/Div 29#------------------------------------------------------------------------------ 30# CHECK: fmul v0.2s, v1.2s, v2.2s 31# CHECK: fdiv v31.2s, v31.2s, v31.2s 320x20 0xdc 0x22 0x2e 330xff 0xff 0x3f 0x2e 34 35#---------------------------------------------------------------------- 36# Vector Polynomial Multiply 37#---------------------------------------------------------------------- 38# CHECK: pmul v0.8b, v15.8b, v16.8b 39# CHECK: pmul v31.16b, v7.16b, v8.16b 400xe0 0x9d 0x30 0x2e 410xff 0x9c 0x28 0x6e 42 43#------------------------------------------------------------------------------ 44# Vector And, Orr, Eor, Orn, Bic 45#------------------------------------------------------------------------------ 46# CHECK: and v2.8b, v2.8b, v2.8b 47# CHECK: orr v31.16b, v31.16b, v30.16b 48# CHECK: eor v0.16b, v1.16b, v2.16b 49# CHECK: orn v9.16b, v10.16b, v11.16b 50# CHECK: bic v31.8b, v30.8b, v29.8b 510x42 0x1c 0x22 0x0e 520xff 0x1f 0xbe 0x4e 530x20 0x1c 0x22 0x6e 540x49 0x1d 0xeb 0x4e 550xdf 0x1f 0x7d 0x0e 56 57#------------------------------------------------------------------------------ 58# Vector Bsl, Bit, Bif 59#------------------------------------------------------------------------------ 60# CHECK: bsl v0.8b, v1.8b, v2.8b 61# CHECK: bit v31.16b, v31.16b, v31.16b 62# CHECK: bif v0.16b, v1.16b, v2.16b 630x20 0x1c 0x62 0x2e 640xff 0x1f 0xbf 0x6e 650x20 0x1c 0xe2 0x6e 66 67 68#------------------------------------------------------------------------------ 69# Vector Integer Multiply-accumulate and Multiply-subtract 70#------------------------------------------------------------------------------ 71# CHECK: mla v0.8b, v1.8b, v2.8b 72# CHECK: mls v31.4h, v31.4h, v31.4h 730x20 0x94 0x22 0x0e 740xff 0x97 0x7f 0x2e 75 76#------------------------------------------------------------------------------ 77# Vector Floating-Point Multiply-accumulate and Multiply-subtract 78#------------------------------------------------------------------------------ 79# CHECK: fmla v0.2s, v1.2s, v2.2s 80# CHECK: fmls v31.2s, v31.2s, v31.2s 810x20 0xcc 0x22 0x0e 820xff 0xcf 0xbf 0x0e 83 84#------------------------------------------------------------------------------ 85# Vector Move Immediate Shifted 86# Vector Move Inverted Immediate Shifted 87# Vector Bitwise Bit Clear (AND NOT) - immediate 88# Vector Bitwise OR - immedidate 89#------------------------------------------------------------------------------ 90# CHECK: movi v31.4s, #255, lsl #24 91# CHECK: mvni v0.2s, #{{0x0|0}} 92# CHECK: bic v15.4h, #15, lsl #8 93# CHECK: orr v16.8h, #31 940xff 0x67 0x07 0x4f 950x00 0x04 0x00 0x2f 960xef 0xb5 0x00 0x2f 970xf0 0x97 0x00 0x4f 98 99#------------------------------------------------------------------------------ 100# Vector Move Immediate Masked 101# Vector Move Inverted Immediate Masked 102#------------------------------------------------------------------------------ 103# CHECK: movi v8.2s, #8, msl #8 104# CHECK: mvni v16.4s, #16, msl #16 1050x08 0xc5 0x00 0x0f 1060x10 0xd6 0x00 0x6f 107 108#------------------------------------------------------------------------------ 109# Vector Immediate - per byte 110# Vector Move Immediate - bytemask, per doubleword 111# Vector Move Immediate - bytemask, one doubleword 112#------------------------------------------------------------------------------ 113# CHECK: movi v16.8b, #255 114# CHECK: movi v31.16b, #31 115# CHECK: movi d15, #0xff00ff00ff00ff 116# CHECK: movi v31.2d, #0xff0000ff0000ffff 1170xf0 0xe7 0x07 0x0f 1180xff 0xe7 0x00 0x4f 1190xaf 0xe6 0x02 0x2f 1200x7f 0xe6 0x04 0x6f 121 122#------------------------------------------------------------------------------ 123# Vector Floating Point Move Immediate 124#------------------------------------------------------------------------------ 125# CHECK: fmov v0.2s, #13.0 126# CHECK: fmov v15.4s, #1.0 127# CHECK: fmov v31.2d, #-1.25 1280x40 0xf5 0x01 0x0f 1290x0f 0xf6 0x03 0x4f 1300x9f 0xf6 0x07 0x6f 131 132#------------------------------------------------------------------------------ 133# Vector Move - register 134#------------------------------------------------------------------------------ 135 136# CHECK: mov v1.16b, v15.16b 137# CHECK: mov v25.8b, v4.8b 1380xe1 0x1d 0xaf 0x4e 1390x99 0x1c 0xa4 0x0e 140 141#---------------------------------------------------------------------- 142# Vector Absolute Difference and Accumulate (Signed, Unsigned) 143# Vector Absolute Difference (Signed, Unsigned) 144# Vector Absolute Difference (Floating Point) 145#---------------------------------------------------------------------- 146 147# CHECK: uaba v0.8b, v1.8b, v2.8b 148# CHECK: saba v31.16b, v30.16b, v29.16b 149# CHECK: uabd v15.4h, v16.4h, v17.4h 150# CHECK: sabd v5.4h, v4.4h, v6.4h 151# CHECK: fabd v1.4s, v31.4s, v16.4s 1520x20 0x7c 0x22 0x2e 1530xdf 0x7f 0x3d 0x4e 1540x0f 0x76 0x71 0x2e 1550x85 0x74 0x66 0x0e 1560xe1 0xd7 0xb0 0x6e 157 158#---------------------------------------------------------------------- 159# Scalar Integer Add 160# Scalar Integer Sub 161#---------------------------------------------------------------------- 162 163# CHECK: add d17, d31, d29 164# CHECK: sub d15, d5, d16 1650xf1 0x87 0xfd 0x5e 1660xaf 0x84 0xf0 0x7e 167 168#---------------------------------------------------------------------- 169# Vector Reciprocal Square Root Step (Floating Point) 170#---------------------------------------------------------------------- 171# CHECK: frsqrts v31.2d, v15.2d, v8.2d 1720xff 0xfd 0xe8 0x4e 173 174#---------------------------------------------------------------------- 175# Vector Reciprocal Step (Floating Point) 176#---------------------------------------------------------------------- 177# CHECK: frecps v5.4s, v7.4s, v16.4s 1780xe5 0xfc 0x30 0x4e 179 180#---------------------------------------------------------------------- 181# Vector Absolute Compare Mask Less Than Or Equal (Floating Point) 182#---------------------------------------------------------------------- 183# CHECK: facge v0.4s, v31.4s, v16.4s 1840xe0 0xef 0x30 0x6e 185 186#---------------------------------------------------------------------- 187# Vector Absolute Compare Mask Less Than (Floating Point) 188#---------------------------------------------------------------------- 189# CHECK: facgt v31.2d, v29.2d, v28.2d 1900xbf 0xef 0xfc 0x6e 191 192#---------------------------------------------------------------------- 193# Vector Compare Mask Equal (Integer) 194#---------------------------------------------------------------------- 195# CHECK: cmeq v5.16b, v15.16b, v31.16b 1960xe5 0x8d 0x3f 0x6e 197 198#---------------------------------------------------------------------- 199# Vector Compare Mask Higher or Same (Unsigned Integer) 200#---------------------------------------------------------------------- 201# CHECK: cmhs v1.8b, v16.8b, v30.8b 2020x01 0x3e 0x3e 0x2e 203 204#---------------------------------------------------------------------- 205# Vector Compare Mask Greater Than or Equal (Integer) 206#---------------------------------------------------------------------- 207# CHECK: cmge v20.4h, v11.4h, v23.4h 2080x74 0x3d 0x77 0x0e 209 210#---------------------------------------------------------------------- 211# Vector Compare Mask Higher (Unsigned Integer) 212# CHECK: cmhi v13.8h, v3.8h, v27.8h 2130x6d 0x34 0x7b 0x6e 214 215#---------------------------------------------------------------------- 216# Vector Compare Mask Greater Than (Integer) 217#---------------------------------------------------------------------- 218# CHECK: cmgt v9.4s, v4.4s, v28.4s 2190x89 0x34 0xbc 0x4e 220 221#---------------------------------------------------------------------- 222# Vector Compare Mask Bitwise Test (Integer) 223#---------------------------------------------------------------------- 224# CHECK: cmtst v21.2s, v19.2s, v18.2s 2250x75 0x8e 0xb2 0x0e 226 227#---------------------------------------------------------------------- 228# Vector Compare Mask Equal (Floating Point) 229#---------------------------------------------------------------------- 230# CHECK: fcmeq v0.2s, v15.2s, v16.2s 2310xe0 0xe5 0x30 0x0e 232 233#---------------------------------------------------------------------- 234# Vector Compare Mask Greater Than Or Equal (Floating Point) 235#---------------------------------------------------------------------- 236# CHECK: fcmge v31.4s, v7.4s, v29.4s 2370xff 0xe4 0x3d 0x6e 238 239#---------------------------------------------------------------------- 240# Vector Compare Mask Greater Than (Floating Point) 241#---------------------------------------------------------------------- 242# CHECK: fcmgt v17.4s, v8.4s, v25.4s 2430x11 0xe5 0xb9 0x6e 244 245#---------------------------------------------------------------------- 246# Vector Compare Mask Equal to Zero (Integer) 247#---------------------------------------------------------------------- 248# CHECK: cmeq v31.16b, v15.16b, #{{0x0|0}} 2490xff 0x99 0x20 0x4e 250 251#---------------------------------------------------------------------- 252# Vector Compare Mask Greater Than or Equal to Zero (Signed Integer) 253#---------------------------------------------------------------------- 254# CHECK: cmge v3.8b, v15.8b, #{{0x0|0}} 2550xe3 0x89 0x20 0x2e 256 257#---------------------------------------------------------------------- 258# Vector Compare Mask Greater Than Zero (Signed Integer) 259#---------------------------------------------------------------------- 260# CHECK: cmgt v22.2s, v9.2s, #{{0x0|0}} 2610x36 0x89 0xa0 0x0e 262 263#---------------------------------------------------------------------- 264# Vector Compare Mask Less Than or Equal To Zero (Signed Integer) 265#---------------------------------------------------------------------- 266# CHECK: cmle v5.2d, v14.2d, #{{0x0|0}} 2670xc5 0x99 0xe0 0x6e 268 269#---------------------------------------------------------------------- 270# Vector Compare Mask Less Than Zero (Signed Integer) 271#---------------------------------------------------------------------- 272# CHECK: cmlt v13.8h, v11.8h, #{{0x0|0}} 2730x6d 0xa9 0x60 0x4e 274 275#---------------------------------------------------------------------- 276# Vector Compare Mask Equal to Zero (Floating Point) 277#---------------------------------------------------------------------- 278# CHECK: fcmeq v15.2s, v21.2s, #0.0 2790xaf 0xda 0xa0 0x0e 280 281#---------------------------------------------------------------------- 282# Vector Compare Mask Greater Than or Equal to Zero (Floating Point) 283#---------------------------------------------------------------------- 284# CHECK: fcmge v14.2d, v13.2d, #0.0 2850xae 0xc9 0xe0 0x6e 286 287#---------------------------------------------------------------------- 288# Vector Compare Mask Greater Than Zero (Floating Point) 289#---------------------------------------------------------------------- 290# CHECK: fcmgt v9.4s, v23.4s, #0.0 2910xe9 0xca 0xa0 0x4e 292 293#---------------------------------------------------------------------- 294# Vector Compare Mask Less Than or Equal To Zero (Floating Point) 295#---------------------------------------------------------------------- 296# CHECK: fcmle v11.2d, v6.2d, #0.0 2970xcb 0xd8 0xe0 0x6e 298 299#---------------------------------------------------------------------- 300# Vector Compare Mask Less Than Zero (Floating Point) 301#---------------------------------------------------------------------- 302# CHECK: fcmlt v12.4s, v25.4s, #0.0 3030x2c 0xeb 0xa0 0x4e 304 305 306#------------------------------------------------------------------------------ 307# Vector Integer Halving Add (Signed) 308# Vector Integer Halving Add (Unsigned) 309# Vector Integer Halving Sub (Signed) 310# Vector Integer Halving Sub (Unsigned) 311#------------------------------------------------------------------------------ 312# CHECK: shadd v0.8b, v31.8b, v29.8b 313# CHECK: uhadd v15.16b, v16.16b, v17.16b 314# CHECK: shsub v0.4h, v1.4h, v2.4h 315# CHECK: uhadd v5.8h, v7.8h, v8.8h 316# CHECK: shsub v9.2s, v11.2s, v21.2s 317# CHECK: uhsub v22.4s, v30.4s, v19.4s 3180xe0 0x07 0x3d 0x0e 3190x0f 0x06 0x31 0x6e 3200x20 0x24 0x62 0x0e 3210xe5 0x04 0x68 0x6e 3220x69 0x25 0xb5 0x0e 3230xd6 0x27 0xb3 0x6e 324 325#------------------------------------------------------------------------------ 326# Vector Integer Rouding Halving Add (Signed) 327# Vector Integer Rouding Halving Add (Unsigned) 328#------------------------------------------------------------------------------ 329# CHECK: srhadd v3.8b, v5.8b, v7.8b 330# CHECK: urhadd v7.16b, v17.16b, v27.16b 331# CHECK: srhadd v10.4h, v11.4h, v13.4h 332# CHECK: urhadd v1.8h, v2.8h, v3.8h 333# CHECK: srhadd v4.2s, v5.2s, v6.2s 334# CHECK: urhadd v7.4s, v7.4s, v7.4s 3350xa3 0x14 0x27 0x0e 3360x27 0x16 0x3b 0x6e 3370x6a 0x15 0x6d 0x0e 3380x41 0x14 0x63 0x6e 3390xa4 0x14 0xa6 0x0e 3400xe7 0x14 0xa7 0x6e 341 342#------------------------------------------------------------------------------ 343# Vector Integer Saturating Add (Signed) 344# Vector Integer Saturating Add (Unsigned) 345# Vector Integer Saturating Sub (Signed) 346# Vector Integer Saturating Sub (Unsigned) 347#------------------------------------------------------------------------------ 348# CHECK: sqsub v0.8b, v1.8b, v2.8b 349# CHECK: sqadd v0.16b, v1.16b, v2.16b 350# CHECK: uqsub v0.4h, v1.4h, v2.4h 351# CHECK: uqadd v0.8h, v1.8h, v2.8h 352# CHECK: sqadd v0.2s, v1.2s, v2.2s 353# CHECK: sqsub v0.4s, v1.4s, v2.4s 354# CHECK: sqsub v0.2d, v1.2d, v2.2d 3550x20 0x2c 0x22 0x0e 3560x20 0x0c 0x22 0x4e 3570x20 0x2c 0x62 0x2e 3580x20 0x0c 0x62 0x6e 3590x20 0x0c 0xa2 0x0e 3600x20 0x2c 0xa2 0x4e 3610x20 0x2c 0xe2 0x4e 362 363#------------------------------------------------------------------------------ 364# Scalar Integer Saturating Add (Signed) 365# Scalar Integer Saturating Add (Unsigned) 366# Scalar Integer Saturating Sub (Signed) 367# Scalar Integer Saturating Add (Unsigned) 368#------------------------------------------------------------------------------ 369# CHECK: sqadd b20, b11, b15 370# CHECK: uqadd h0, h1, h5 371# CHECK: sqsub s20, s10, s7 372# CHECK: uqsub d16, d16, d16 3730x74 0x0d 0x2f 0x5e 3740x20 0x0c 0x65 0x7e 3750x54 0x2d 0xa7 0x5e 3760x10 0x2e 0xf0 0x7e 377 378 379#---------------------------------------------------------------------- 380# Vector Shift Left (Signed and Unsigned Integer) 381#---------------------------------------------------------------------- 382# CHECK: sshl v10.8b, v15.8b, v22.8b 383# CHECK: ushl v10.16b, v5.16b, v2.16b 384# CHECK: sshl v10.4h, v15.4h, v22.4h 385# CHECK: ushl v10.8h, v5.8h, v2.8h 386# CHECK: sshl v10.2s, v15.2s, v22.2s 387# CHECK: ushl v10.4s, v5.4s, v2.4s 388# CHECK: sshl v0.2d, v1.2d, v2.2d 3890xea 0x45 0x36 0x0e 3900xaa 0x44 0x22 0x6e 3910xea 0x45 0x76 0x0e 3920xaa 0x44 0x62 0x6e 3930xea 0x45 0xb6 0x0e 3940xaa 0x44 0xa2 0x6e 3950x20 0x44 0xe2 0x4e 396 397#---------------------------------------------------------------------- 398# Vector Saturating Shift Left (Signed and Unsigned Integer) 399#---------------------------------------------------------------------- 400# CHECK: sqshl v1.8b, v15.8b, v22.8b 401# CHECK: uqshl v2.16b, v14.16b, v23.16b 402# CHECK: sqshl v3.4h, v13.4h, v24.4h 403# CHECK: uqshl v4.8h, v12.8h, v25.8h 404# CHECK: sqshl v5.2s, v11.2s, v26.2s 405# CHECK: uqshl v6.4s, v10.4s, v27.4s 406# CHECK: uqshl v0.2d, v1.2d, v2.2d 4070xe1 0x4d 0x36 0x0e 4080xc2 0x4d 0x37 0x6e 4090xa3 0x4d 0x78 0x0e 4100x84 0x4d 0x79 0x6e 4110x65 0x4d 0xba 0x0e 4120x46 0x4d 0xbb 0x6e 4130x20 0x4c 0xe2 0x6e 414 415#---------------------------------------------------------------------- 416# Vector Rouding Shift Left (Signed and Unsigned Integer) 417#---------------------------------------------------------------------- 418# CHECK: srshl v10.8b, v5.8b, v22.8b 419# CHECK: urshl v10.16b, v5.16b, v2.16b 420# CHECK: srshl v1.4h, v5.4h, v31.4h 421# CHECK: urshl v1.8h, v5.8h, v2.8h 422# CHECK: srshl v10.2s, v15.2s, v2.2s 423# CHECK: urshl v1.4s, v5.4s, v2.4s 424# CHECK: urshl v0.2d, v1.2d, v2.2d 4250xaa 0x54 0x36 0x0e 4260xaa 0x54 0x22 0x6e 4270xa1 0x54 0x7f 0x0e 4280xa1 0x54 0x62 0x6e 4290xea 0x55 0xa2 0x0e 4300xa1 0x54 0xa2 0x6e 4310x20 0x54 0xe2 0x6e 432 433#---------------------------------------------------------------------- 434# Vector Saturating Rouding Shift Left (Signed and Unsigned Integer) 435#---------------------------------------------------------------------- 436# CHECK: sqrshl v1.8b, v15.8b, v22.8b 437# CHECK: uqrshl v2.16b, v14.16b, v23.16b 438# CHECK: sqrshl v3.4h, v13.4h, v24.4h 439# CHECK: uqrshl v4.8h, v12.8h, v25.8h 440# CHECK: sqrshl v5.2s, v11.2s, v26.2s 441# CHECK: uqrshl v6.4s, v10.4s, v27.4s 442# CHECK: uqrshl v6.4s, v10.4s, v27.4s 4430xe1 0x5d 0x36 0x0e 4440xc2 0x5d 0x37 0x6e 4450xa3 0x5d 0x78 0x0e 4460x84 0x5d 0x79 0x6e 4470x65 0x5d 0xba 0x0e 4480x46 0x5d 0xbb 0x6e 4490x46 0x5d 0xbb 0x6e 450 451#---------------------------------------------------------------------- 452# Scalar Integer Shift Left (Signed, Unsigned) 453#---------------------------------------------------------------------- 454# CHECK: sshl d31, d31, d31 455# CHECK: ushl d0, d0, d0 4560xff 0x47 0xff 0x5e 4570x00 0x44 0xe0 0x7e 458 459#---------------------------------------------------------------------- 460# Scalar Integer Saturating Shift Left (Signed, Unsigned) 461#---------------------------------------------------------------------- 462# CHECK: sqshl d31, d31, d31 463# CHECK: uqshl s23, s20, s16 464# CHECK: sqshl h3, h4, h15 465# CHECK: uqshl b11, b20, b30 4660xff 0x4f 0xff 0x5e 4670x97 0x4e 0xb0 0x7e 4680x83 0x4c 0x6f 0x5e 4690x8b 0x4e 0x3e 0x7e 470 471#---------------------------------------------------------------------- 472# Scalar Integer Rouding Shift Left (Signed, Unsigned) 473#---------------------------------------------------------------------- 474# CHECK: srshl d16, d16, d16 475# CHECK: urshl d8, d7, d4 4760x10 0x56 0xf0 0x5e 4770xe8 0x54 0xe4 0x7e 478 479#---------------------------------------------------------------------- 480# Scalar Integer Saturating Rounding Shift Left (Signed, Unsigned) 481#---------------------------------------------------------------------- 482# CHECK: sqrshl d31, d31, d31 483# CHECK: uqrshl s23, s20, s16 484# CHECK: sqrshl h3, h4, h15 485# CHECK: uqrshl b11, b20, b30 4860xff 0x5f 0xff 0x5e 4870x97 0x5e 0xb0 0x7e 4880x83 0x5c 0x6f 0x5e 4890x8b 0x5e 0x3e 0x7e 490 491#---------------------------------------------------------------------- 492# Vector Maximum (Signed and Unsigned Integer) 493#---------------------------------------------------------------------- 494# CHECK: smax v1.8b, v15.8b, v22.8b 495# CHECK: umax v2.16b, v14.16b, v23.16b 496# CHECK: smax v3.4h, v13.4h, v24.4h 497# CHECK: umax v4.8h, v12.8h, v25.8h 498# CHECK: smax v5.2s, v11.2s, v26.2s 499# CHECK: umax v6.4s, v10.4s, v27.4s 5000xe1 0x65 0x36 0x0e 5010xc2 0x65 0x37 0x6e 5020xa3 0x65 0x78 0x0e 5030x84 0x65 0x79 0x6e 5040x65 0x65 0xba 0x0e 5050x46 0x65 0xbb 0x6e 506 507#---------------------------------------------------------------------- 508# Vector Minimum (Signed and Unsigned Integer) 509#---------------------------------------------------------------------- 510# CHECK: umin v1.8b, v15.8b, v22.8b 511# CHECK: smin v2.16b, v14.16b, v23.16b 512# CHECK: umin v3.4h, v13.4h, v24.4h 513# CHECK: smin v4.8h, v12.8h, v25.8h 514# CHECK: umin v5.2s, v11.2s, v26.2s 515# CHECK: smin v6.4s, v10.4s, v27.4s 5160xe1 0x6d 0x36 0x2e 5170xc2 0x6d 0x37 0x4e 5180xa3 0x6d 0x78 0x2e 5190x84 0x6d 0x79 0x4e 5200x65 0x6d 0xba 0x2e 5210x46 0x6d 0xbb 0x4e 522 523#---------------------------------------------------------------------- 524# Vector Maximum (Floating Point) 525#---------------------------------------------------------------------- 526# CHECK: fmax v29.2s, v28.2s, v25.2s 527# CHECK: fmax v9.4s, v8.4s, v5.4s 528# CHECK: fmax v11.2d, v10.2d, v7.2d 5290x9d 0xf7 0x39 0x0e 5300x09 0xf5 0x25 0x4e 5310x4b 0xf5 0x67 0x4e 532 533#---------------------------------------------------------------------- 534# Vector Minimum (Floating Point) 535#---------------------------------------------------------------------- 536# CHECK: fmin v29.2s, v28.2s, v25.2s 537# CHECK: fmin v9.4s, v8.4s, v5.4s 538# CHECK: fmin v11.2d, v10.2d, v7.2d 5390x9d 0xf7 0xb9 0x0e 5400x09 0xf5 0xa5 0x4e 5410x4b 0xf5 0xe7 0x4e 542 543#---------------------------------------------------------------------- 544# Vector maxNum (Floating Point) 545#---------------------------------------------------------------------- 546# CHECK: fmaxnm v9.2s, v8.2s, v5.2s 547# CHECK: fmaxnm v9.4s, v8.4s, v5.4s 548# CHECK: fmaxnm v11.2d, v10.2d, v7.2d 5490x09 0xc5 0x25 0x0e 5500x09 0xc5 0x25 0x4e 5510x4b 0xc5 0x67 0x4e 552 553#---------------------------------------------------------------------- 554# Vector minNum (Floating Point) 555#---------------------------------------------------------------------- 556# CHECK: fminnm v2.2s, v8.2s, v25.2s 557# CHECK: fminnm v9.4s, v8.4s, v5.4s 558# CHECK: fminnm v11.2d, v10.2d, v7.2d 5590x02 0xc5 0xb9 0x0e 5600x09 0xc5 0xa5 0x4e 5610x4b 0xc5 0xe7 0x4e 562 563 564#---------------------------------------------------------------------- 565# Vector Maximum Pairwise (Signed and Unsigned Integer) 566#---------------------------------------------------------------------- 567# CHECK: smaxp v1.8b, v15.8b, v22.8b 568# CHECK: umaxp v2.16b, v14.16b, v23.16b 569# CHECK: smaxp v3.4h, v13.4h, v24.4h 570# CHECK: umaxp v4.8h, v12.8h, v25.8h 571# CHECK: smaxp v5.2s, v11.2s, v26.2s 572# CHECK: umaxp v6.4s, v10.4s, v27.4s 5730xe1 0xa5 0x36 0x0e 5740xc2 0xa5 0x37 0x6e 5750xa3 0xa5 0x78 0x0e 5760x84 0xa5 0x79 0x6e 5770x65 0xa5 0xba 0x0e 5780x46 0xa5 0xbb 0x6e 579 580#---------------------------------------------------------------------- 581# Vector Minimum Pairwise (Signed and Unsigned Integer) 582#---------------------------------------------------------------------- 583# CHECK: uminp v1.8b, v15.8b, v22.8b 584# CHECK: sminp v2.16b, v14.16b, v23.16b 585# CHECK: uminp v3.4h, v13.4h, v24.4h 586# CHECK: sminp v4.8h, v12.8h, v25.8h 587# CHECK: uminp v5.2s, v11.2s, v26.2s 588# CHECK: sminp v6.4s, v10.4s, v27.4s 5890xe1 0xad 0x36 0x2e 5900xc2 0xad 0x37 0x4e 5910xa3 0xad 0x78 0x2e 5920x84 0xad 0x79 0x4e 5930x65 0xad 0xba 0x2e 5940x46 0xad 0xbb 0x4e 595 596#---------------------------------------------------------------------- 597# Vector Maximum Pairwise (Floating Point) 598#---------------------------------------------------------------------- 599# CHECK: fmaxp v29.2s, v28.2s, v25.2s 600# CHECK: fmaxp v9.4s, v8.4s, v5.4s 601# CHECK: fmaxp v11.2d, v10.2d, v7.2d 6020x9d 0xf7 0x39 0x2e 6030x09 0xf5 0x25 0x6e 6040x4b 0xf5 0x67 0x6e 605 606#---------------------------------------------------------------------- 607# Vector Minimum Pairwise (Floating Point) 608#---------------------------------------------------------------------- 609# CHECK: fminp v29.2s, v28.2s, v25.2s 610# CHECK: fminp v9.4s, v8.4s, v5.4s 611# CHECK: fminp v11.2d, v10.2d, v7.2d 6120x9d 0xf7 0xb9 0x2e 6130x09 0xf5 0xa5 0x6e 6140x4b 0xf5 0xe7 0x6e 615 616#---------------------------------------------------------------------- 617# Vector maxNum Pairwise (Floating Point) 618#---------------------------------------------------------------------- 619# CHECK: fmaxnmp v9.2s, v8.2s, v5.2s 620# CHECK: fmaxnmp v9.4s, v8.4s, v5.4s 621# CHECK: fmaxnmp v11.2d, v10.2d, v7.2d 6220x09 0xc5 0x25 0x2e 6230x09 0xc5 0x25 0x6e 6240x4b 0xc5 0x67 0x6e 625 626#---------------------------------------------------------------------- 627# Vector minNum Pairwise (Floating Point) 628#---------------------------------------------------------------------- 629# CHECK: fminnmp v2.2s, v8.2s, v25.2s 630# CHECK: fminnmp v9.4s, v8.4s, v5.4s 631# CHECK: fminnmp v11.2d, v10.2d, v7.2d 6320x02 0xc5 0xb9 0x2e 6330x09 0xc5 0xa5 0x6e 6340x4b 0xc5 0xe7 0x6e 635 636#------------------------------------------------------------------------------ 637# Vector Add Pairwise (Integer) 638#------------------------------------------------------------------------------ 639# CHECK: addp v31.8b, v31.8b, v31.8b 640# CHECK: addp v0.2d, v0.2d, v0.2d 6410xff 0xbf 0x3f 0x0e 6420x00 0xbc 0xe0 0x4e 643 644#------------------------------------------------------------------------------ 645# Vector Add Pairwise (Floating Point) 646#------------------------------------------------------------------------------ 647# CHECK: faddp v0.4s, v0.4s, v0.4s 648# CHECK: faddp v31.2s, v31.2s, v31.2s 6490x00 0xd4 0x20 0x6e 6500xff 0xd7 0x3f 0x2e 651 652 653#------------------------------------------------------------------------------ 654# Vector Saturating Doubling Multiply High 655# Vector Saturating Rouding Doubling Multiply High 656#------------------------------------------------------------------------------ 657# CHECK: sqdmulh v31.2s, v31.2s, v31.2s 658# CHECK: sqdmulh v5.4s, v7.4s, v9.4s 659# CHECK: sqrdmulh v31.4h, v3.4h, v13.4h 660# CHECK: sqrdmulh v0.8h, v10.8h, v20.8h 6610xff 0xb7 0xbf 0x0e 6620xe5 0xb4 0xa9 0x4e 6630x7f 0xb4 0x6d 0x2e 6640x40 0xb5 0x74 0x6e 665 666#------------------------------------------------------------------------------ 667# Vector Multiply Extended 668#------------------------------------------------------------------------------ 669# CHECK: fmulx v1.2s, v22.2s, v2.2s 670# CHECK: fmulx v21.4s, v15.4s, v3.4s 671# CHECK: fmulx v11.2d, v5.2d, v23.2d 6720xc1 0xde 0x22 0x0e 6730xf5 0xdd 0x23 0x4e 6740xab 0xdc 0x77 0x4e 675 676#---------------------------------------------------------------------- 677# Vector Shift Left long 678#---------------------------------------------------------------------- 679# CHECK: shll2 v2.8h, v4.16b, #8 680# CHECK: shll2 v6.4s, v8.8h, #16 681# CHECK: shll2 v6.2d, v8.4s, #32 682# CHECK: shll v2.8h, v4.8b, #8 683# CHECK: shll v6.4s, v8.4h, #16 684# CHECK: shll v6.2d, v8.2s, #32 685 6860x82,0x38,0x21,0x6e 6870x06,0x39,0x61,0x6e 6880x06,0x39,0xa1,0x6e 6890x82,0x38,0x21,0x2e 6900x06,0x39,0x61,0x2e 6910x06,0x39,0xa1,0x2e 692 693#---------------------------------------------------------------------- 694# Vector Shift Left by Immediate 695#---------------------------------------------------------------------- 696# CHECK: shl v0.4h, v1.4h, #3 697# CHECK: shl v0.16b, v1.16b, #3 698# CHECK: shl v0.4s, v1.4s, #3 699# CHECK: shl v0.2d, v1.2d, #3 7000x20,0x54,0x13,0x0f 7010x20,0x54,0x0b,0x4f 7020x20,0x54,0x23,0x4f 7030x20,0x54,0x43,0x4f 704 705#---------------------------------------------------------------------- 706# Vector Shift Left Long (Signed, Unsigned) by Immediate 707#---------------------------------------------------------------------- 708# CHECK: sshll v0.2d, v1.2s, #3 709# CHECK: sshll2 v0.4s, v1.8h, #3 710# CHECK: ushll v0.4s, v1.4h, #3 711# CHECK: ushll2 v0.8h, v1.16b, #3 7120x20 0xa4 0x23 0x0f 7130x20 0xa4 0x13 0x4f 7140x20 0xa4 0x13 0x2f 7150x20 0xa4 0x0b 0x6f 716 717#----------------------------------------------------------------------------- 718#Integer shift right (Signed) 719#----------------------------------------------------------------------------- 720# CHECK: sshr v0.8b, v1.8b, #3 721# CHECK: sshr v0.4h, v1.4h, #3 722# CHECK: sshr v0.2s, v1.2s, #3 723# CHECK: sshr v0.16b, v1.16b, #3 724# CHECK: sshr v0.8h, v1.8h, #3 725# CHECK: sshr v0.4s, v1.4s, #3 726# CHECK: sshr v0.2d, v1.2d, #3 7270x20,0x04,0x0d,0x0f 7280x20,0x04,0x1d,0x0f 7290x20,0x04,0x3d,0x0f 7300x20,0x04,0x0d,0x4f 7310x20,0x04,0x1d,0x4f 7320x20,0x04,0x3d,0x4f 7330x20,0x04,0x7d,0x4f 734 735#----------------------------------------------------------------------------- 736#Integer shift right (Unsigned) 737#----------------------------------------------------------------------------- 738# CHECK: ushr v0.8b, v1.8b, #3 739# CHECK: ushr v0.4h, v1.4h, #3 740# CHECK: ushr v0.2s, v1.2s, #3 741# CHECK: ushr v0.16b, v1.16b, #3 742# CHECK: ushr v0.8h, v1.8h, #3 743# CHECK: ushr v0.4s, v1.4s, #3 744# CHECK: ushr v0.2d, v1.2d, #3 7450x20,0x04,0x0d,0x2f 7460x20,0x04,0x1d,0x2f 7470x20,0x04,0x3d,0x2f 7480x20,0x04,0x0d,0x6f 7490x20,0x04,0x1d,0x6f 7500x20,0x04,0x3d,0x6f 7510x20,0x04,0x7d,0x6f 752 753#----------------------------------------------------------------------------- 754#Integer shift right and accumulate (Signed) 755#----------------------------------------------------------------------------- 756# CHECK: ssra v0.8b, v1.8b, #3 757# CHECK: ssra v0.4h, v1.4h, #3 758# CHECK: ssra v0.2s, v1.2s, #3 759# CHECK: ssra v0.16b, v1.16b, #3 760# CHECK: ssra v0.8h, v1.8h, #3 761# CHECK: ssra v0.4s, v1.4s, #3 762# CHECK: ssra v0.2d, v1.2d, #3 7630x20,0x14,0x0d,0x0f 7640x20,0x14,0x1d,0x0f 7650x20,0x14,0x3d,0x0f 7660x20,0x14,0x0d,0x4f 7670x20,0x14,0x1d,0x4f 7680x20,0x14,0x3d,0x4f 7690x20,0x14,0x7d,0x4f 770 771#----------------------------------------------------------------------------- 772#Integer shift right and accumulate (Unsigned) 773#----------------------------------------------------------------------------- 774# CHECK: usra v0.8b, v1.8b, #3 775# CHECK: usra v0.4h, v1.4h, #3 776# CHECK: usra v0.2s, v1.2s, #3 777# CHECK: usra v0.16b, v1.16b, #3 778# CHECK: usra v0.8h, v1.8h, #3 779# CHECK: usra v0.4s, v1.4s, #3 780# CHECK: usra v0.2d, v1.2d, #3 7810x20,0x14,0x0d,0x2f 7820x20,0x14,0x1d,0x2f 7830x20,0x14,0x3d,0x2f 7840x20,0x14,0x0d,0x6f 7850x20,0x14,0x1d,0x6f 7860x20,0x14,0x3d,0x6f 7870x20,0x14,0x7d,0x6f 788 789#----------------------------------------------------------------------------- 790#Integer rounding shift right (Signed) 791#----------------------------------------------------------------------------- 792# CHECK: srshr v0.8b, v1.8b, #3 793# CHECK: srshr v0.4h, v1.4h, #3 794# CHECK: srshr v0.2s, v1.2s, #3 795# CHECK: srshr v0.16b, v1.16b, #3 796# CHECK: srshr v0.8h, v1.8h, #3 797# CHECK: srshr v0.4s, v1.4s, #3 798# CHECK: srshr v0.2d, v1.2d, #3 7990x20,0x24,0x0d,0x0f 8000x20,0x24,0x1d,0x0f 8010x20,0x24,0x3d,0x0f 8020x20,0x24,0x0d,0x4f 8030x20,0x24,0x1d,0x4f 8040x20,0x24,0x3d,0x4f 8050x20,0x24,0x7d,0x4f 806 807#----------------------------------------------------------------------------- 808#Integer rounding shift right (Unsigned) 809#----------------------------------------------------------------------------- 810# CHECK: urshr v0.8b, v1.8b, #3 811# CHECK: urshr v0.4h, v1.4h, #3 812# CHECK: urshr v0.2s, v1.2s, #3 813# CHECK: urshr v0.16b, v1.16b, #3 814# CHECK: urshr v0.8h, v1.8h, #3 815# CHECK: urshr v0.4s, v1.4s, #3 816# CHECK: urshr v0.2d, v1.2d, #3 8170x20,0x24,0x0d,0x2f 8180x20,0x24,0x1d,0x2f 8190x20,0x24,0x3d,0x2f 8200x20,0x24,0x0d,0x6f 8210x20,0x24,0x1d,0x6f 8220x20,0x24,0x3d,0x6f 8230x20,0x24,0x7d,0x6f 824 825#----------------------------------------------------------------------------- 826#Integer rounding shift right and accumulate (Signed) 827#----------------------------------------------------------------------------- 828# CHECK: srsra v0.8b, v1.8b, #3 829# CHECK: srsra v0.4h, v1.4h, #3 830# CHECK: srsra v0.2s, v1.2s, #3 831# CHECK: srsra v0.16b, v1.16b, #3 832# CHECK: srsra v0.8h, v1.8h, #3 833# CHECK: srsra v0.4s, v1.4s, #3 834# CHECK: srsra v0.2d, v1.2d, #3 8350x20,0x34,0x0d,0x0f 8360x20,0x34,0x1d,0x0f 8370x20,0x34,0x3d,0x0f 8380x20,0x34,0x0d,0x4f 8390x20,0x34,0x1d,0x4f 8400x20,0x34,0x3d,0x4f 8410x20,0x34,0x7d,0x4f 842 843#----------------------------------------------------------------------------- 844#Integer rounding shift right and accumulate (Unsigned) 845#----------------------------------------------------------------------------- 846# CHECK: ursra v0.8b, v1.8b, #3 847# CHECK: ursra v0.4h, v1.4h, #3 848# CHECK: ursra v0.2s, v1.2s, #3 849# CHECK: ursra v0.16b, v1.16b, #3 850# CHECK: ursra v0.8h, v1.8h, #3 851# CHECK: ursra v0.4s, v1.4s, #3 852# CHECK: ursra v0.2d, v1.2d, #3 8530x20,0x34,0x0d,0x2f 8540x20,0x34,0x1d,0x2f 8550x20,0x34,0x3d,0x2f 8560x20,0x34,0x0d,0x6f 8570x20,0x34,0x1d,0x6f 8580x20,0x34,0x3d,0x6f 8590x20,0x34,0x7d,0x6f 860 861#----------------------------------------------------------------------------- 862#Integer shift right and insert 863#----------------------------------------------------------------------------- 864# CHECK: sri v0.8b, v1.8b, #3 865# CHECK: sri v0.4h, v1.4h, #3 866# CHECK: sri v0.2s, v1.2s, #3 867# CHECK: sri v0.16b, v1.16b, #3 868# CHECK: sri v0.8h, v1.8h, #3 869# CHECK: sri v0.4s, v1.4s, #3 870# CHECK: sri v0.2d, v1.2d, #3 8710x20,0x44,0x0d,0x2f 8720x20,0x44,0x1d,0x2f 8730x20,0x44,0x3d,0x2f 8740x20,0x44,0x0d,0x6f 8750x20,0x44,0x1d,0x6f 8760x20,0x44,0x3d,0x6f 8770x20,0x44,0x7d,0x6f 878 879#----------------------------------------------------------------------------- 880#Integer shift left and insert 881#----------------------------------------------------------------------------- 882# CHECK: sli v0.8b, v1.8b, #3 883# CHECK: sli v0.4h, v1.4h, #3 884# CHECK: sli v0.2s, v1.2s, #3 885# CHECK: sli v0.16b, v1.16b, #3 886# CHECK: sli v0.8h, v1.8h, #3 887# CHECK: sli v0.4s, v1.4s, #3 888# CHECK: sli v0.2d, v1.2d, #3 8890x20,0x54,0x0b,0x2f 8900x20,0x54,0x13,0x2f 8910x20,0x54,0x23,0x2f 8920x20,0x54,0x0b,0x6f 8930x20,0x54,0x13,0x6f 8940x20,0x54,0x23,0x6f 8950x20,0x54,0x43,0x6f 896 897#----------------------------------------------------------------------------- 898#Integer saturating shift left unsigned 899#----------------------------------------------------------------------------- 900# CHECK: sqshlu v0.8b, v1.8b, #3 901# CHECK: sqshlu v0.4h, v1.4h, #3 902# CHECK: sqshlu v0.2s, v1.2s, #3 903# CHECK: sqshlu v0.16b, v1.16b, #3 904# CHECK: sqshlu v0.8h, v1.8h, #3 905# CHECK: sqshlu v0.4s, v1.4s, #3 906# CHECK: sqshlu v0.2d, v1.2d, #3 9070x20,0x64,0x0b,0x2f 9080x20,0x64,0x13,0x2f 9090x20,0x64,0x23,0x2f 9100x20,0x64,0x0b,0x6f 9110x20,0x64,0x13,0x6f 9120x20,0x64,0x23,0x6f 9130x20,0x64,0x43,0x6f 914 915#----------------------------------------------------------------------------- 916#Integer saturating shift left (Signed) 917#----------------------------------------------------------------------------- 918# CHECK: sqshl v0.8b, v1.8b, #3 919# CHECK: sqshl v0.4h, v1.4h, #3 920# CHECK: sqshl v0.2s, v1.2s, #3 921# CHECK: sqshl v0.16b, v1.16b, #3 922# CHECK: sqshl v0.8h, v1.8h, #3 923# CHECK: sqshl v0.4s, v1.4s, #3 924# CHECK: sqshl v0.2d, v1.2d, #3 9250x20,0x74,0x0b,0x0f 9260x20,0x74,0x13,0x0f 9270x20,0x74,0x23,0x0f 9280x20,0x74,0x0b,0x4f 9290x20,0x74,0x13,0x4f 9300x20,0x74,0x23,0x4f 9310x20,0x74,0x43,0x4f 932 933#----------------------------------------------------------------------------- 934#Integer saturating shift left (Unsigned) 935#----------------------------------------------------------------------------- 936# CHECK: uqshl v0.8b, v1.8b, #3 937# CHECK: uqshl v0.4h, v1.4h, #3 938# CHECK: uqshl v0.2s, v1.2s, #3 939# CHECK: uqshl v0.16b, v1.16b, #3 940# CHECK: uqshl v0.8h, v1.8h, #3 941# CHECK: uqshl v0.4s, v1.4s, #3 942# CHECK: uqshl v0.2d, v1.2d, #3 9430x20,0x74,0x0b,0x2f 9440x20,0x74,0x13,0x2f 9450x20,0x74,0x23,0x2f 9460x20,0x74,0x0b,0x6f 9470x20,0x74,0x13,0x6f 9480x20,0x74,0x23,0x6f 9490x20,0x74,0x43,0x6f 950 951#----------------------------------------------------------------------------- 952#Integer shift right narrow 953#----------------------------------------------------------------------------- 954# CHECK: shrn v0.8b, v1.8h, #3 955# CHECK: shrn v0.4h, v1.4s, #3 956# CHECK: shrn v0.2s, v1.2d, #3 957# CHECK: shrn2 v0.16b, v1.8h, #3 958# CHECK: shrn2 v0.8h, v1.4s, #3 959# CHECK: shrn2 v0.4s, v1.2d, #3 9600x20,0x84,0x0d,0x0f 9610x20,0x84,0x1d,0x0f 9620x20,0x84,0x3d,0x0f 9630x20,0x84,0x0d,0x4f 9640x20,0x84,0x1d,0x4f 9650x20,0x84,0x3d,0x4f 966 967#----------------------------------------------------------------------------- 968#Integer saturating shift right unsigned narrow (Signed) 969#----------------------------------------------------------------------------- 970# CHECK: sqshrun v0.8b, v1.8h, #3 971# CHECK: sqshrun v0.4h, v1.4s, #3 972# CHECK: sqshrun v0.2s, v1.2d, #3 973# CHECK: sqshrun2 v0.16b, v1.8h, #3 974# CHECK: sqshrun2 v0.8h, v1.4s, #3 975# CHECK: sqshrun2 v0.4s, v1.2d, #3 9760x20,0x84,0x0d,0x2f 9770x20,0x84,0x1d,0x2f 9780x20,0x84,0x3d,0x2f 9790x20,0x84,0x0d,0x6f 9800x20,0x84,0x1d,0x6f 9810x20,0x84,0x3d,0x6f 982 983#----------------------------------------------------------------------------- 984#Integer rounding shift right narrow 985#----------------------------------------------------------------------------- 986# CHECK: rshrn v0.8b, v1.8h, #3 987# CHECK: rshrn v0.4h, v1.4s, #3 988# CHECK: rshrn v0.2s, v1.2d, #3 989# CHECK: rshrn2 v0.16b, v1.8h, #3 990# CHECK: rshrn2 v0.8h, v1.4s, #3 991# CHECK: rshrn2 v0.4s, v1.2d, #3 9920x20,0x8c,0x0d,0x0f 9930x20,0x8c,0x1d,0x0f 9940x20,0x8c,0x3d,0x0f 9950x20,0x8c,0x0d,0x4f 9960x20,0x8c,0x1d,0x4f 9970x20,0x8c,0x3d,0x4f 998 999#----------------------------------------------------------------------------- 1000#Integer saturating shift right rounded unsigned narrow (Signed) 1001#----------------------------------------------------------------------------- 1002# CHECK: sqrshrun v0.8b, v1.8h, #3 1003# CHECK: sqrshrun v0.4h, v1.4s, #3 1004# CHECK: sqrshrun v0.2s, v1.2d, #3 1005# CHECK: sqrshrun2 v0.16b, v1.8h, #3 1006# CHECK: sqrshrun2 v0.8h, v1.4s, #3 1007# CHECK: sqrshrun2 v0.4s, v1.2d, #3 10080x20,0x8c,0x0d,0x2f 10090x20,0x8c,0x1d,0x2f 10100x20,0x8c,0x3d,0x2f 10110x20,0x8c,0x0d,0x6f 10120x20,0x8c,0x1d,0x6f 10130x20,0x8c,0x3d,0x6f 1014 1015#----------------------------------------------------------------------------- 1016#Integer saturating shift right narrow (Signed) 1017#----------------------------------------------------------------------------- 1018# CHECK: sqshrn v0.8b, v1.8h, #3 1019# CHECK: sqshrn v0.4h, v1.4s, #3 1020# CHECK: sqshrn v0.2s, v1.2d, #3 1021# CHECK: sqshrn2 v0.16b, v1.8h, #3 1022# CHECK: sqshrn2 v0.8h, v1.4s, #3 1023# CHECK: sqshrn2 v0.4s, v1.2d, #3 10240x20,0x94,0x0d,0x0f 10250x20,0x94,0x1d,0x0f 10260x20,0x94,0x3d,0x0f 10270x20,0x94,0x0d,0x4f 10280x20,0x94,0x1d,0x4f 10290x20,0x94,0x3d,0x4f 1030 1031#----------------------------------------------------------------------------- 1032#Integer saturating shift right narrow (Unsigned) 1033#----------------------------------------------------------------------------- 1034# CHECK: uqshrn v0.8b, v1.8h, #3 1035# CHECK: uqshrn v0.4h, v1.4s, #3 1036# CHECK: uqshrn v0.2s, v1.2d, #3 1037# CHECK: uqshrn2 v0.16b, v1.8h, #3 1038# CHECK: uqshrn2 v0.8h, v1.4s, #3 1039# CHECK: uqshrn2 v0.4s, v1.2d, #3 10400x20,0x94,0x0d,0x2f 10410x20,0x94,0x1d,0x2f 10420x20,0x94,0x3d,0x2f 10430x20,0x94,0x0d,0x6f 10440x20,0x94,0x1d,0x6f 10450x20,0x94,0x3d,0x6f 1046 1047#----------------------------------------------------------------------------- 1048#Integer saturating shift right rounded narrow (Signed) 1049#----------------------------------------------------------------------------- 1050# CHECK: sqrshrn v0.8b, v1.8h, #3 1051# CHECK: sqrshrn v0.4h, v1.4s, #3 1052# CHECK: sqrshrn v0.2s, v1.2d, #3 1053# CHECK: sqrshrn2 v0.16b, v1.8h, #3 1054# CHECK: sqrshrn2 v0.8h, v1.4s, #3 1055# CHECK: sqrshrn2 v0.4s, v1.2d, #3 10560x20,0x9c,0x0d,0x0f 10570x20,0x9c,0x1d,0x0f 10580x20,0x9c,0x3d,0x0f 10590x20,0x9c,0x0d,0x4f 10600x20,0x9c,0x1d,0x4f 10610x20,0x9c,0x3d,0x4f 1062 1063#----------------------------------------------------------------------------- 1064#Integer saturating shift right rounded narrow (Unsigned) 1065#----------------------------------------------------------------------------- 1066# CHECK: uqrshrn v0.8b, v1.8h, #3 1067# CHECK: uqrshrn v0.4h, v1.4s, #3 1068# CHECK: uqrshrn v0.2s, v1.2d, #3 1069# CHECK: uqrshrn2 v0.16b, v1.8h, #3 1070# CHECK: uqrshrn2 v0.8h, v1.4s, #3 1071# CHECK: uqrshrn2 v0.4s, v1.2d, #3 10720x20,0x9c,0x0d,0x2f 10730x20,0x9c,0x1d,0x2f 10740x20,0x9c,0x3d,0x2f 10750x20,0x9c,0x0d,0x6f 10760x20,0x9c,0x1d,0x6f 10770x20,0x9c,0x3d,0x6f 1078 1079#----------------------------------------------------------------------------- 1080#Fixed-point convert to floating-point 1081#----------------------------------------------------------------------------- 1082# CHECK: scvtf v0.2s, v1.2s, #3 1083# CHECK: scvtf v0.4s, v1.4s, #3 1084# CHECK: scvtf v0.2d, v1.2d, #3 1085# CHECK: ucvtf v0.2s, v1.2s, #3 1086# CHECK: ucvtf v0.4s, v1.4s, #3 1087# CHECK: ucvtf v0.2d, v1.2d, #3 1088 10890x20,0xe4,0x3d,0x0f 10900x20,0xe4,0x3d,0x4f 10910x20,0xe4,0x7d,0x4f 10920x20,0xe4,0x3d,0x2f 10930x20,0xe4,0x3d,0x6f 10940x20,0xe4,0x7d,0x6f 1095 1096#----------------------------------------------------------------------------- 1097#Floating-point convert to fixed-point 1098#----------------------------------------------------------------------------- 1099# CHECK: fcvtzs v0.2s, v1.2s, #3 1100# CHECK: fcvtzs v0.4s, v1.4s, #3 1101# CHECK: fcvtzs v0.2d, v1.2d, #3 1102# CHECK: fcvtzu v0.2s, v1.2s, #3 1103# CHECK: fcvtzu v0.4s, v1.4s, #3 1104# CHECK: fcvtzu v0.2d, v1.2d, #3 11050x20,0xfc,0x3d,0x0f 11060x20,0xfc,0x3d,0x4f 11070x20,0xfc,0x7d,0x4f 11080x20,0xfc,0x3d,0x2f 11090x20,0xfc,0x3d,0x6f 11100x20,0xfc,0x7d,0x6f 1111 1112 1113#------------------------------------------------------------------------------ 1114# Vector with 3 operands having different data types 1115#------------------------------------------------------------------------------ 1116 1117#------------------------------------------------------------------------------ 1118# Long 1119#------------------------------------------------------------------------------ 1120 1121#------------------------------------------------------------------------------ 1122# Long - Variant 1 1123#------------------------------------------------------------------------------ 1124 1125# CHECK: saddl v0.8h, v1.8b, v2.8b 1126# CHECK: saddl v0.4s, v1.4h, v2.4h 1127# CHECK: saddl v0.2d, v1.2s, v2.2s 11280x20 0x00 0x22 0x0e 11290x20 0x00 0x62 0x0e 11300x20 0x00 0xa2 0x0e 1131 1132# CHECK: saddl2 v0.4s, v1.8h, v2.8h 1133# CHECK: saddl2 v0.8h, v1.16b, v2.16b 1134# CHECK: saddl2 v0.2d, v1.4s, v2.4s 11350x20 0x00 0x62 0x4e 11360x20 0x00 0x22 0x4e 11370x20 0x00 0xa2 0x4e 1138 1139# CHECK: uaddl v0.8h, v1.8b, v2.8b 1140# CHECK: uaddl v0.4s, v1.4h, v2.4h 1141# CHECK: uaddl v0.2d, v1.2s, v2.2s 11420x20 0x00 0x22 0x2e 11430x20 0x00 0x62 0x2e 11440x20 0x00 0xa2 0x2e 1145 1146# CHECK: uaddl2 v0.8h, v1.16b, v2.16b 1147# CHECK: uaddl2 v0.4s, v1.8h, v2.8h 1148# CHECK: uaddl2 v0.2d, v1.4s, v2.4s 11490x20 0x00 0x22 0x6e 11500x20 0x00 0x62 0x6e 11510x20 0x00 0xa2 0x6e 1152 1153# CHECK: ssubl v0.8h, v1.8b, v2.8b 1154# CHECK: ssubl v0.4s, v1.4h, v2.4h 1155# CHECK: ssubl v0.2d, v1.2s, v2.2s 11560x20 0x20 0x22 0x0e 11570x20 0x20 0x62 0x0e 11580x20 0x20 0xa2 0x0e 1159 1160# CHECK: ssubl2 v0.8h, v1.16b, v2.16b 1161# CHECK: ssubl2 v0.4s, v1.8h, v2.8h 1162# CHECK: ssubl2 v0.2d, v1.4s, v2.4s 11630x20 0x20 0x22 0x4e 11640x20 0x20 0x62 0x4e 11650x20 0x20 0xa2 0x4e 1166 1167# CHECK: usubl v0.8h, v1.8b, v2.8b 1168# CHECK: usubl v0.4s, v1.4h, v2.4h 1169# CHECK: usubl v0.2d, v1.2s, v2.2s 11700x20 0x20 0x22 0x2e 11710x20 0x20 0x62 0x2e 11720x20 0x20 0xa2 0x2e 1173 1174# CHECK: usubl2 v0.8h, v1.16b, v2.16b 1175# CHECK: usubl2 v0.4s, v1.8h, v2.8h 1176# CHECK: usubl2 v0.2d, v1.4s, v2.4s 11770x20 0x20 0x22 0x6e 11780x20 0x20 0x62 0x6e 11790x20 0x20 0xa2 0x6e 1180 1181# CHECK: sabal v0.8h, v1.8b, v2.8b 1182# CHECK: sabal v0.4s, v1.4h, v2.4h 1183# CHECK: sabal v0.2d, v1.2s, v2.2s 11840x20 0x50 0x22 0x0e 11850x20 0x50 0x62 0x0e 11860x20 0x50 0xa2 0x0e 1187 1188# CHECK: sabal2 v0.8h, v1.16b, v2.16b 1189# CHECK: sabal2 v0.4s, v1.8h, v2.8h 1190# CHECK: sabal2 v0.2d, v1.4s, v2.4s 11910x20 0x50 0x22 0x4e 11920x20 0x50 0x62 0x4e 11930x20 0x50 0xa2 0x4e 1194 1195# CHECK: uabal v0.8h, v1.8b, v2.8b 1196# CHECK: uabal v0.4s, v1.4h, v2.4h 1197# CHECK: uabal v0.2d, v1.2s, v2.2s 11980x20 0x50 0x22 0x2e 11990x20 0x50 0x62 0x2e 12000x20 0x50 0xa2 0x2e 1201 1202# CHECK: uabal2 v0.8h, v1.16b, v2.16b 1203# CHECK: uabal2 v0.4s, v1.8h, v2.8h 1204# CHECK: uabal2 v0.2d, v1.4s, v2.4s 12050x20 0x50 0x22 0x6e 12060x20 0x50 0x62 0x6e 12070x20 0x50 0xa2 0x6e 1208 1209# CHECK: sabdl v0.8h, v1.8b, v2.8b 1210# CHECK: sabdl v0.4s, v1.4h, v2.4h 1211# CHECK: sabdl v0.2d, v1.2s, v2.2s 12120x20 0x70 0x22 0x0e 12130x20 0x70 0x62 0x0e 12140x20 0x70 0xa2 0x0e 1215 1216# CHECK: sabdl2 v0.8h, v1.16b, v2.16b 1217# CHECK: sabdl2 v0.4s, v1.8h, v2.8h 1218# CHECK: sabdl2 v0.2d, v1.4s, v2.4s 12190x20 0x70 0x22 0x4e 12200x20 0x70 0x62 0x4e 12210x20 0x70 0xa2 0x4e 1222 1223# CHECK: uabdl v0.8h, v1.8b, v2.8b 1224# CHECK: uabdl v0.4s, v1.4h, v2.4h 1225# CHECK: uabdl v0.2d, v1.2s, v2.2s 12260x20 0x70 0x22 0x2e 12270x20 0x70 0x62 0x2e 12280x20 0x70 0xa2 0x2e 1229 1230# CHECK: uabdl2 v0.8h, v1.16b, v2.16b 1231# CHECK: uabdl2 v0.4s, v1.8h, v2.8h 1232# CHECK: uabdl2 v0.2d, v1.4s, v2.4s 12330x20 0x70 0x22 0x6e 12340x20 0x70 0x62 0x6e 12350x20 0x70 0xa2 0x6e 1236 1237# CHECK: smlal v0.8h, v1.8b, v2.8b 1238# CHECK: smlal v0.4s, v1.4h, v2.4h 1239# CHECK: smlal v0.2d, v1.2s, v2.2s 12400x20 0x80 0x22 0x0e 12410x20 0x80 0x62 0x0e 12420x20 0x80 0xa2 0x0e 1243 1244# CHECK: smlal2 v0.8h, v1.16b, v2.16b 1245# CHECK: smlal2 v0.4s, v1.8h, v2.8h 1246# CHECK: smlal2 v0.2d, v1.4s, v2.4s 12470x20 0x80 0x22 0x4e 12480x20 0x80 0x62 0x4e 12490x20 0x80 0xa2 0x4e 1250 1251# CHECK: umlal v0.8h, v1.8b, v2.8b 1252# CHECK: umlal v0.4s, v1.4h, v2.4h 1253# CHECK: umlal v0.2d, v1.2s, v2.2s 1254 12550x20 0x80 0x22 0x2e 12560x20 0x80 0x62 0x2e 12570x20 0x80 0xa2 0x2e 1258 1259# CHECK: umlal2 v0.8h, v1.16b, v2.16b 1260# CHECK: umlal2 v0.4s, v1.8h, v2.8h 1261# CHECK: umlal2 v0.2d, v1.4s, v2.4s 12620x20 0x80 0x22 0x6e 12630x20 0x80 0x62 0x6e 12640x20 0x80 0xa2 0x6e 1265 1266# CHECK: smlsl v0.8h, v1.8b, v2.8b 1267# CHECK: smlsl v0.4s, v1.4h, v2.4h 1268# CHECK: smlsl v0.2d, v1.2s, v2.2s 12690x20 0xa0 0x22 0x0e 12700x20 0xa0 0x62 0x0e 12710x20 0xa0 0xa2 0x0e 1272 1273# CHECK: smlsl2 v0.8h, v1.16b, v2.16b 1274# CHECK: smlsl2 v0.4s, v1.8h, v2.8h 1275# CHECK: smlsl2 v0.2d, v1.4s, v2.4s 12760x20 0xa0 0x22 0x4e 12770x20 0xa0 0x62 0x4e 12780x20 0xa0 0xa2 0x4e 1279 1280# CHECK: umlsl v0.8h, v1.8b, v2.8b 1281# CHECK: umlsl v0.4s, v1.4h, v2.4h 1282# CHECK: umlsl v0.2d, v1.2s, v2.2s 12830x20 0xa0 0x22 0x2e 12840x20 0xa0 0x62 0x2e 12850x20 0xa0 0xa2 0x2e 1286 1287# CHECK: umlsl2 v0.8h, v1.16b, v2.16b 1288# CHECK: umlsl2 v0.4s, v1.8h, v2.8h 1289# CHECK: umlsl2 v0.2d, v1.4s, v2.4s 12900x20 0xa0 0x22 0x6e 12910x20 0xa0 0x62 0x6e 12920x20 0xa0 0xa2 0x6e 1293 1294# CHECK: smull v0.8h, v1.8b, v2.8b 1295# CHECK: smull v0.4s, v1.4h, v2.4h 1296# CHECK: smull v0.2d, v1.2s, v2.2s 12970x20 0xc0 0x22 0x0e 12980x20 0xc0 0x62 0x0e 12990x20 0xc0 0xa2 0x0e 1300 1301# CHECK: smull2 v0.8h, v1.16b, v2.16b 1302# CHECK: smull2 v0.4s, v1.8h, v2.8h 1303# CHECK: smull2 v0.2d, v1.4s, v2.4s 13040x20 0xc0 0x22 0x4e 13050x20 0xc0 0x62 0x4e 13060x20 0xc0 0xa2 0x4e 1307 1308# CHECK: umull v0.8h, v1.8b, v2.8b 1309# CHECK: umull v0.4s, v1.4h, v2.4h 1310# CHECK: umull v0.2d, v1.2s, v2.2s 13110x20 0xc0 0x22 0x2e 13120x20 0xc0 0x62 0x2e 13130x20 0xc0 0xa2 0x2e 1314 1315# CHECK: umull2 v0.8h, v1.16b, v2.16b 1316# CHECK: umull2 v0.4s, v1.8h, v2.8h 1317# CHECK: umull2 v0.2d, v1.4s, v2.4s 13180x20 0xc0 0x22 0x6e 13190x20 0xc0 0x62 0x6e 13200x20 0xc0 0xa2 0x6e 1321 1322#------------------------------------------------------------------------------ 1323# Long - Variant 2 1324#------------------------------------------------------------------------------ 1325 1326# CHECK: sqdmlal v0.4s, v1.4h, v2.4h 1327# CHECK: sqdmlal v0.2d, v1.2s, v2.2s 13280x20 0x90 0x62 0x0e 13290x20 0x90 0xa2 0x0e 1330 1331# CHECK: sqdmlal2 v0.4s, v1.8h, v2.8h 1332# CHECK: sqdmlal2 v0.2d, v1.4s, v2.4s 13330x20 0x90 0x62 0x4e 13340x20 0x90 0xa2 0x4e 1335 1336# CHECK: sqdmlsl v0.4s, v1.4h, v2.4h 1337# CHECK: sqdmlsl v0.2d, v1.2s, v2.2s 13380x20 0xb0 0x62 0x0e 13390x20 0xb0 0xa2 0x0e 1340 1341# CHECK: sqdmlsl2 v0.4s, v1.8h, v2.8h 1342# CHECK: sqdmlsl2 v0.2d, v1.4s, v2.4s 13430x20 0xb0 0x62 0x4e 13440x20 0xb0 0xa2 0x4e 1345 1346# CHECK: sqdmull v0.4s, v1.4h, v2.4h 1347# CHECK: sqdmull v0.2d, v1.2s, v2.2s 13480x20 0xd0 0x62 0x0e 13490x20 0xd0 0xa2 0x0e 1350 1351# CHECK: sqdmull2 v0.4s, v1.8h, v2.8h 1352# CHECK: sqdmull2 v0.2d, v1.4s, v2.4s 13530x20 0xd0 0x62 0x4e 13540x20 0xd0 0xa2 0x4e 1355 1356#------------------------------------------------------------------------------ 1357# Long - Variant 3 1358#------------------------------------------------------------------------------ 1359 1360# CHECK: pmull v0.8h, v1.8b, v2.8b 13610x20 0xe0 0x22 0x0e 1362 1363# CHECK: pmull2 v0.8h, v1.16b, v2.16b 13640x20 0xe0 0x22 0x4e 1365 1366#------------------------------------------------------------------------------ 1367# Widen 1368#------------------------------------------------------------------------------ 1369 1370# CHECK: saddw v0.8h, v1.8h, v2.8b 1371# CHECK: saddw v0.4s, v1.4s, v2.4h 1372# CHECK: saddw v0.2d, v1.2d, v2.2s 13730x20 0x10 0x22 0x0e 13740x20 0x10 0x62 0x0e 13750x20 0x10 0xa2 0x0e 1376 1377# CHECK: saddw2 v0.8h, v1.8h, v2.16b 1378# CHECK: saddw2 v0.4s, v1.4s, v2.8h 1379# CHECK: saddw2 v0.2d, v1.2d, v2.4s 13800x20 0x10 0x22 0x4e 13810x20 0x10 0x62 0x4e 13820x20 0x10 0xa2 0x4e 1383 1384# CHECK: uaddw v0.8h, v1.8h, v2.8b 1385# CHECK: uaddw v0.4s, v1.4s, v2.4h 1386# CHECK: uaddw v0.2d, v1.2d, v2.2s 13870x20 0x10 0x22 0x2e 13880x20 0x10 0x62 0x2e 13890x20 0x10 0xa2 0x2e 1390 1391# CHECK: uaddw2 v0.8h, v1.8h, v2.16b 1392# CHECK: uaddw2 v0.4s, v1.4s, v2.8h 1393# CHECK: uaddw2 v0.2d, v1.2d, v2.4s 13940x20 0x10 0x22 0x6e 13950x20 0x10 0x62 0x6e 13960x20 0x10 0xa2 0x6e 1397 1398# CHECK: ssubw v0.8h, v1.8h, v2.8b 1399# CHECK: ssubw v0.4s, v1.4s, v2.4h 1400# CHECK: ssubw v0.2d, v1.2d, v2.2s 14010x20 0x30 0x22 0x0e 14020x20 0x30 0x62 0x0e 14030x20 0x30 0xa2 0x0e 1404 1405# CHECK: ssubw2 v0.8h, v1.8h, v2.16b 1406# CHECK: ssubw2 v0.4s, v1.4s, v2.8h 1407# CHECK: ssubw2 v0.2d, v1.2d, v2.4s 14080x20 0x30 0x22 0x4e 14090x20 0x30 0x62 0x4e 14100x20 0x30 0xa2 0x4e 1411 1412# CHECK: usubw v0.8h, v1.8h, v2.8b 1413# CHECK: usubw v0.4s, v1.4s, v2.4h 1414# CHECK: usubw v0.2d, v1.2d, v2.2s 14150x20 0x30 0x22 0x2e 14160x20 0x30 0x62 0x2e 14170x20 0x30 0xa2 0x2e 1418 1419# CHECK: usubw2 v0.8h, v1.8h, v2.16b 1420# CHECK: usubw2 v0.4s, v1.4s, v2.8h 1421# CHECK: usubw2 v0.2d, v1.2d, v2.4s 14220x20 0x30 0x22 0x6e 14230x20 0x30 0x62 0x6e 14240x20 0x30 0xa2 0x6e 1425 1426#------------------------------------------------------------------------------ 1427# Narrow 1428#------------------------------------------------------------------------------ 1429 1430# CHECK: addhn v0.8b, v1.8h, v2.8h 1431# CHECK: addhn v0.4h, v1.4s, v2.4s 1432# CHECK: addhn v0.2s, v1.2d, v2.2d 14330x20 0x40 0x22 0x0e 14340x20 0x40 0x62 0x0e 14350x20 0x40 0xa2 0x0e 1436 1437# CHECK: addhn2 v0.16b, v1.8h, v2.8h 1438# CHECK: addhn2 v0.8h, v1.4s, v2.4s 1439# CHECK: addhn2 v0.4s, v1.2d, v2.2d 14400x20 0x40 0x22 0x4e 14410x20 0x40 0x62 0x4e 14420x20 0x40 0xa2 0x4e 1443 1444# CHECK: raddhn v0.8b, v1.8h, v2.8h 1445# CHECK: raddhn v0.4h, v1.4s, v2.4s 1446# CHECK: raddhn v0.2s, v1.2d, v2.2d 14470x20 0x40 0x22 0x2e 14480x20 0x40 0x62 0x2e 14490x20 0x40 0xa2 0x2e 1450 1451# CHECK: raddhn2 v0.16b, v1.8h, v2.8h 1452# CHECK: raddhn2 v0.8h, v1.4s, v2.4s 1453# CHECK: raddhn2 v0.4s, v1.2d, v2.2d 14540x20 0x40 0x22 0x6e 14550x20 0x40 0x62 0x6e 14560x20 0x40 0xa2 0x6e 1457 1458# CHECK: rsubhn v0.8b, v1.8h, v2.8h 1459# CHECK: rsubhn v0.4h, v1.4s, v2.4s 1460# CHECK: rsubhn v0.2s, v1.2d, v2.2d 14610x20 0x60 0x22 0x2e 14620x20 0x60 0x62 0x2e 14630x20 0x60 0xa2 0x2e 1464 1465# CHECK: rsubhn2 v0.16b, v1.8h, v2.8h 1466# CHECK: rsubhn2 v0.8h, v1.4s, v2.4s 1467# CHECK: rsubhn2 v0.4s, v1.2d, v2.2d 14680x20 0x60 0x22 0x6e 14690x20 0x60 0x62 0x6e 14700x20 0x60 0xa2 0x6e 1471 1472#---------------------------------------------------------------------- 1473# Scalar Integer Saturating Doubling Multiply Half High 1474#---------------------------------------------------------------------- 1475# CHECK: sqdmulh h10, h11, h12 1476# CHECK: sqdmulh s20, s21, s2 14770x6a,0xb5,0x6c,0x5e 14780xb4,0xb6,0xa2,0x5e 1479 1480#---------------------------------------------------------------------- 1481# Scalar Integer Saturating Rounding Doubling Multiply Half High 1482#---------------------------------------------------------------------- 1483# CHECK: sqrdmulh h10, h11, h12 1484# CHECK: sqrdmulh s20, s21, s2 14850x6a,0xb5,0x6c,0x7e 14860xb4,0xb6,0xa2,0x7e 1487 1488#---------------------------------------------------------------------- 1489# Floating-point multiply extended 1490#---------------------------------------------------------------------- 1491# CHECK: fmulx s20, s22, s15 1492# CHECK: fmulx d23, d11, d1 14930xd4,0xde,0x2f,0x5e 14940x77,0xdd,0x61,0x5e 1495 1496#---------------------------------------------------------------------- 1497# Floating-point Reciprocal Step 1498#---------------------------------------------------------------------- 1499# CHECK: frecps s21, s16, s13 1500# CHECK: frecps d22, d30, d21 15010x15,0xfe,0x2d,0x5e 15020xd6,0xff,0x75,0x5e 1503 1504#---------------------------------------------------------------------- 1505# Floating-point Reciprocal Square Root Step 1506#---------------------------------------------------------------------- 1507# CHECK: frsqrts s21, s5, s12 1508# CHECK: frsqrts d8, d22, d18 15090xb5,0xfc,0xac,0x5e 15100xc8,0xfe,0xf2,0x5e 1511 1512#---------------------------------------------------------------------- 1513# Scalar Signed Integer Convert To Floating-point 1514#---------------------------------------------------------------------- 1515# CHECK: scvtf s22, s13 1516# CHECK: scvtf d21, d12 15170xb6,0xd9,0x21,0x5e 15180x95,0xd9,0x61,0x5e 1519 1520#---------------------------------------------------------------------- 1521# Scalar Unsigned Integer Convert To Floating-point 1522#---------------------------------------------------------------------- 1523# CHECK: ucvtf s22, s13 1524# CHECK: ucvtf d21, d14 15250xb6,0xd9,0x21,0x7e 15260xd5,0xd9,0x61,0x7e 1527 1528#---------------------------------------------------------------------- 1529# Scalar Floating-point Reciprocal Estimate 1530#---------------------------------------------------------------------- 1531# CHECK: frecpe s19, s14 1532# CHECK: frecpe d13, d13 15330xd3,0xd9,0xa1,0x5e 15340xad,0xd9,0xe1,0x5e 1535 1536#---------------------------------------------------------------------- 1537# Scalar Floating-point Reciprocal Exponent 1538#---------------------------------------------------------------------- 1539# CHECK: frecpx s18, s10 1540# CHECK: frecpx d16, d19 15410x52,0xf9,0xa1,0x5e 15420x70,0xfa,0xe1,0x5e 1543 1544#---------------------------------------------------------------------- 1545# Scalar Floating-point Reciprocal Square Root Estimate 1546#---------------------------------------------------------------------- 1547# CHECK: frsqrte s22, s13 1548# CHECK: frsqrte d21, d12 15490xb6,0xd9,0xa1,0x7e 15500x95,0xd9,0xe1,0x7e 1551 1552#---------------------------------------------------------------------- 1553# Scalar Compare Bitwise Equal 1554#---------------------------------------------------------------------- 1555# CHECK: cmeq d20, d21, d22 15560xb4,0x8e,0xf6,0x7e 1557 1558#---------------------------------------------------------------------- 1559# Scalar Compare Bitwise Equal To Zero 1560#---------------------------------------------------------------------- 1561# CHECK: cmeq d20, d21, #{{0x0|0}} 15620xb4,0x9a,0xe0,0x5e 1563 1564#---------------------------------------------------------------------- 1565# Scalar Compare Unsigned Higher Or Same 1566#---------------------------------------------------------------------- 1567# CHECK: cmhs d20, d21, d22 15680xb4,0x3e,0xf6,0x7e 1569 1570 1571#---------------------------------------------------------------------- 1572# Scalar Compare Signed Greather Than Or Equal 1573#---------------------------------------------------------------------- 1574# CHECK: cmge d20, d21, d22 15750xb4,0x3e,0xf6,0x5e 1576 1577#---------------------------------------------------------------------- 1578# Scalar Compare Signed Greather Than Or Equal To Zero 1579#---------------------------------------------------------------------- 1580# CHECK: cmge d20, d21, #{{0x0|0}} 15810xb4,0x8a,0xe0,0x7e 1582 1583#---------------------------------------------------------------------- 1584# Scalar Compare Unsigned Higher 1585#---------------------------------------------------------------------- 1586# CHECK: cmhi d20, d21, d22 15870xb4,0x36,0xf6,0x7e 1588 1589#---------------------------------------------------------------------- 1590# Scalar Compare Signed Greater Than 1591#---------------------------------------------------------------------- 1592# CHECK: cmgt d20, d21, d22 15930xb4,0x36,0xf6,0x5e 1594 1595#---------------------------------------------------------------------- 1596# Scalar Compare Signed Greater Than Zero 1597#---------------------------------------------------------------------- 1598# CHECK: cmgt d20, d21, #{{0x0|0}} 15990xb4,0x8a,0xe0,0x5e 1600 1601#---------------------------------------------------------------------- 1602# Scalar Compare Signed Less Than Or Equal To Zero 1603#---------------------------------------------------------------------- 1604# CHECK: cmle d20, d21, #{{0x0|0}} 16050xb4,0x9a,0xe0,0x7e 1606 1607#---------------------------------------------------------------------- 1608# Scalar Compare Less Than Zero 1609#---------------------------------------------------------------------- 1610# CHECK: cmlt d20, d21, #{{0x0|0}} 16110xb4,0xaa,0xe0,0x5e 1612 1613#---------------------------------------------------------------------- 1614# Scalar Compare Bitwise Test Bits 1615#---------------------------------------------------------------------- 1616# CHECK: cmtst d20, d21, d22 16170xb4,0x8e,0xf6,0x5e 1618 1619#---------------------------------------------------------------------- 1620# Scalar Floating-point Compare Mask Equal 1621#---------------------------------------------------------------------- 1622# CHECK: fcmeq s10, s11, s12 1623# CHECK: fcmeq d20, d21, d22 16240x6a,0xe5,0x2c,0x5e 16250xb4,0xe6,0x76,0x5e 1626 1627#---------------------------------------------------------------------- 1628# Scalar Floating-point Compare Mask Equal To Zero 1629#---------------------------------------------------------------------- 1630# CHECK: fcmeq s10, s11, #0.0 1631# CHECK: fcmeq d20, d21, #0.0 16320x6a,0xd9,0xa0,0x5e 16330xb4,0xda,0xe0,0x5e 1634 1635#---------------------------------------------------------------------- 1636# Scalar Floating-point Compare Mask Greater Than Or Equal 1637#---------------------------------------------------------------------- 1638# CHECK: fcmge s10, s11, s12 1639# CHECK: fcmge d20, d21, d22 16400x6a,0xe5,0x2c,0x7e 16410xb4,0xe6,0x76,0x7e 1642 1643#---------------------------------------------------------------------- 1644# Scalar Floating-point Compare Mask Greater Than Or Equal To Zero 1645#---------------------------------------------------------------------- 1646# CHECK: fcmge s10, s11, #0.0 1647# CHECK: fcmge d20, d21, #0.0 16480x6a,0xc9,0xa0,0x7e 16490xb4,0xca,0xe0,0x7e 1650 1651#---------------------------------------------------------------------- 1652# Scalar Floating-point Compare Mask Greather Than 1653#---------------------------------------------------------------------- 1654# CHECK: fcmgt s10, s11, s12 1655# CHECK: fcmgt d20, d21, d22 16560x6a,0xe5,0xac,0x7e 16570xb4,0xe6,0xf6,0x7e 1658 1659#---------------------------------------------------------------------- 1660# Scalar Floating-point Compare Mask Greather Than Zero 1661#---------------------------------------------------------------------- 1662# CHECK: fcmgt s10, s11, #0.0 1663# CHECK: fcmgt d20, d21, #0.0 16640x6a,0xc9,0xa0,0x5e 16650xb4,0xca,0xe0,0x5e 1666 1667#---------------------------------------------------------------------- 1668# Scalar Floating-point Compare Mask Less Than Or Equal To Zero 1669#---------------------------------------------------------------------- 1670# CHECK: fcmle s10, s11, #0.0 1671# CHECK: fcmle d20, d21, #0.0 16720x6a,0xd9,0xa0,0x7e 16730xb4,0xda,0xe0,0x7e 1674 1675#---------------------------------------------------------------------- 1676# Scalar Floating-point Compare Mask Less Than 1677#---------------------------------------------------------------------- 1678# CHECK: fcmlt s10, s11, #0.0 1679# CHECK: fcmlt d20, d21, #0.0 16800x6a,0xe9,0xa0,0x5e 16810xb4,0xea,0xe0,0x5e 1682 1683#---------------------------------------------------------------------- 1684# Scalar Floating-point Absolute Compare Mask Greater Than Or Equal 1685#---------------------------------------------------------------------- 1686# CHECK: facge s10, s11, s12 1687# CHECK: facge d20, d21, d22 16880x6a,0xed,0x2c,0x7e 16890xb4,0xee,0x76,0x7e 1690 1691#---------------------------------------------------------------------- 1692# Scalar Floating-point Absolute Compare Mask Greater Than 1693#---------------------------------------------------------------------- 1694# CHECK: facgt s10, s11, s12 1695# CHECK: facgt d20, d21, d22 16960x6a,0xed,0xac,0x7e 16970xb4,0xee,0xf6,0x7e 1698 1699#---------------------------------------------------------------------- 1700# Scalar Absolute Value 1701#---------------------------------------------------------------------- 1702# CHECK: abs d29, d24 17030x1d,0xbb,0xe0,0x5e 1704 1705#---------------------------------------------------------------------- 1706# Scalar Signed Saturating Absolute Value 1707#---------------------------------------------------------------------- 1708# CHECK: sqabs b19, b14 1709# CHECK: sqabs h21, h15 1710# CHECK: sqabs s20, s12 1711# CHECK: sqabs d18, d12 17120xd3,0x79,0x20,0x5e 17130xf5,0x79,0x60,0x5e 17140x94,0x79,0xa0,0x5e 17150x92,0x79,0xe0,0x5e 1716 1717#---------------------------------------------------------------------- 1718# Scalar Negate 1719#---------------------------------------------------------------------- 1720# CHECK: neg d29, d24 17210x1d,0xbb,0xe0,0x7e 1722 1723#---------------------------------------------------------------------- 1724# Scalar Signed Saturating Negate 1725#---------------------------------------------------------------------- 1726# CHECK: sqneg b19, b14 1727# CHECK: sqneg h21, h15 1728# CHECK: sqneg s20, s12 1729# CHECK: sqneg d18, d12 17300xd3,0x79,0x20,0x7e 17310xf5,0x79,0x60,0x7e 17320x94,0x79,0xa0,0x7e 17330x92,0x79,0xe0,0x7e 1734 1735#---------------------------------------------------------------------- 1736# Signed Saturating Accumulated of Unsigned Value 1737#---------------------------------------------------------------------- 1738# CHECK: suqadd b19, b14 1739# CHECK: suqadd h20, h15 1740# CHECK: suqadd s21, s12 1741# CHECK: suqadd d18, d22 17420xd3,0x39,0x20,0x5e 17430xf4,0x39,0x60,0x5e 17440x95,0x39,0xa0,0x5e 17450xd2,0x3a,0xe0,0x5e 1746 1747#---------------------------------------------------------------------- 1748# Unsigned Saturating Accumulated of Signed Value 1749#---------------------------------------------------------------------- 1750# CHECK: usqadd b19, b14 1751# CHECK: usqadd h20, h15 1752# CHECK: usqadd s21, s12 1753# CHECK: usqadd d18, d22 17540xd3,0x39,0x20,0x7e 17550xf4,0x39,0x60,0x7e 17560x95,0x39,0xa0,0x7e 17570xd2,0x3a,0xe0,0x7e 1758 1759#---------------------------------------------------------------------- 1760# Signed Saturating Doubling Multiply-Add Long 1761#---------------------------------------------------------------------- 1762# CHECK: sqdmlal s17, h27, h12 1763# CHECK: sqdmlal d19, s24, s12 17640x71,0x93,0x6c,0x5e 17650x13,0x93,0xac,0x5e 1766 1767#---------------------------------------------------------------------- 1768# Signed Saturating Doubling Multiply-Subtract Long 1769#---------------------------------------------------------------------- 1770# CHECK: sqdmlsl s14, h12, h25 1771# CHECK: sqdmlsl d12, s23, s13 17720x8e,0xb1,0x79,0x5e 17730xec,0xb2,0xad,0x5e 1774 1775#---------------------------------------------------------------------- 1776# Signed Saturating Doubling Multiply Long 1777#---------------------------------------------------------------------- 1778# CHECK: sqdmull s12, h22, h12 1779# CHECK: sqdmull d15, s22, s12 17800xcc,0xd2,0x6c,0x5e 17810xcf,0xd2,0xac,0x5e 1782 1783#---------------------------------------------------------------------- 1784# Scalar Signed Saturating Extract Unsigned Narrow 1785#---------------------------------------------------------------------- 1786# CHECK: sqxtun b19, h14 1787# CHECK: sqxtun h21, s15 1788# CHECK: sqxtun s20, d12 17890xd3,0x29,0x21,0x7e 17900xf5,0x29,0x61,0x7e 17910x94,0x29,0xa1,0x7e 1792 1793#---------------------------------------------------------------------- 1794# Scalar Signed Saturating Extract Signed Narrow 1795#---------------------------------------------------------------------- 1796# CHECK: sqxtn b18, h18 1797# CHECK: sqxtn h20, s17 1798# CHECK: sqxtn s19, d14 17990x52,0x4a,0x21,0x5e 18000x34,0x4a,0x61,0x5e 18010xd3,0x49,0xa1,0x5e 1802 1803#---------------------------------------------------------------------- 1804# Scalar Unsigned Saturating Extract Narrow 1805#---------------------------------------------------------------------- 1806# CHECK: uqxtn b18, h18 1807# CHECK: uqxtn h20, s17 1808# CHECK: uqxtn s19, d14 18090x52,0x4a,0x21,0x7e 18100x34,0x4a,0x61,0x7e 18110xd3,0x49,0xa1,0x7e 1812 1813#---------------------------------------------------------------------- 1814# Scalar Signed Shift Right (Immediate) 1815#---------------------------------------------------------------------- 1816# CHECK: sshr d15, d16, #12 18170x0f,0x06,0x74,0x5f 1818 1819#---------------------------------------------------------------------- 1820# Scalar Unsigned Shift Right (Immediate) 1821#---------------------------------------------------------------------- 1822# CHECK: ushr d10, d17, #18 18230x2a,0x06,0x6e,0x7f 1824 1825#---------------------------------------------------------------------- 1826# Scalar Signed Rounding Shift Right (Immediate) 1827#---------------------------------------------------------------------- 1828# CHECK: srshr d19, d18, #7 18290x53,0x26,0x79,0x5f 1830 1831#---------------------------------------------------------------------- 1832# Scalar Unigned Rounding Shift Right (Immediate) 1833#---------------------------------------------------------------------- 1834# CHECK: urshr d20, d23, #31 18350xf4,0x26,0x61,0x7f 1836 1837#---------------------------------------------------------------------- 1838# Scalar Signed Shift Right and Accumulate (Immediate) 1839#---------------------------------------------------------------------- 1840# CHECK: ssra d18, d12, #21 18410x92,0x15,0x6b,0x5f 1842 1843#---------------------------------------------------------------------- 1844# Scalar Unsigned Shift Right and Accumulate (Immediate) 1845#---------------------------------------------------------------------- 1846# CHECK: usra d20, d13, #61 18470xb4,0x15,0x43,0x7f 1848 1849#---------------------------------------------------------------------- 1850# Scalar Signed Rounding Shift Right and Accumulate (Immediate) 1851#---------------------------------------------------------------------- 1852# CHECK: srsra d15, d11, #19 18530x6f,0x35,0x6d,0x5f 1854 1855#---------------------------------------------------------------------- 1856# Scalar Unsigned Rounding Shift Right and Accumulate (Immediate) 1857#---------------------------------------------------------------------- 1858# CHECK: ursra d18, d10, #13 18590x52,0x35,0x73,0x7f 1860 1861#---------------------------------------------------------------------- 1862# Scalar Shift Left (Immediate) 1863#---------------------------------------------------------------------- 1864# CHECK: shl d7, d10, #12 18650x47,0x55,0x4c,0x5f 1866 1867#---------------------------------------------------------------------- 1868# Signed Saturating Shift Left (Immediate) 1869#---------------------------------------------------------------------- 1870# CHECK: sqshl b11, b19, #7 1871# CHECK: sqshl h13, h18, #11 1872# CHECK: sqshl s14, s17, #22 1873# CHECK: sqshl d15, d16, #51 18740x6b,0x76,0x0f,0x5f 18750x4d,0x76,0x1b,0x5f 18760x2e,0x76,0x36,0x5f 18770x0f,0x76,0x73,0x5f 1878 1879#---------------------------------------------------------------------- 1880# Unsigned Saturating Shift Left (Immediate) 1881#---------------------------------------------------------------------- 1882# CHECK: uqshl b18, b15, #6 1883# CHECK: uqshl h11, h18, #7 1884# CHECK: uqshl s14, s19, #18 1885# CHECK: uqshl d15, d12, #19 18860xf2,0x75,0x0e,0x7f 18870x4b,0x76,0x17,0x7f 18880x6e,0x76,0x32,0x7f 18890x8f,0x75,0x53,0x7f 1890 1891#---------------------------------------------------------------------- 1892# Signed Saturating Shift Left Unsigned (Immediate) 1893#---------------------------------------------------------------------- 1894# CHECK: sqshlu b15, b18, #6 1895# CHECK: sqshlu h19, h17, #6 1896# CHECK: sqshlu s16, s14, #25 1897# CHECK: sqshlu d11, d13, #32 18980x4f,0x66,0x0e,0x7f 18990x33,0x66,0x16,0x7f 19000xd0,0x65,0x39,0x7f 19010xab,0x65,0x60,0x7f 1902 1903#---------------------------------------------------------------------- 1904# Shift Right And Insert (Immediate) 1905#---------------------------------------------------------------------- 1906# CHECK: sri d10, d12, #14 19070x8a,0x45,0x72,0x7f 1908 1909#---------------------------------------------------------------------- 1910# Shift Left And Insert (Immediate) 1911#---------------------------------------------------------------------- 1912# CHECK: sli d10, d14, #12 19130xca,0x55,0x4c,0x7f 1914 1915#---------------------------------------------------------------------- 1916# Signed Saturating Shift Right Narrow (Immediate) 1917#---------------------------------------------------------------------- 1918# CHECK: sqshrn b10, h15, #5 1919# CHECK: sqshrn h17, s10, #4 1920# CHECK: sqshrn s18, d10, #31 19210xea,0x95,0x0b,0x5f 19220x51,0x95,0x1c,0x5f 19230x52,0x95,0x21,0x5f 1924 1925#---------------------------------------------------------------------- 1926# Unsigned Saturating Shift Right Narrow (Immediate) 1927#---------------------------------------------------------------------- 1928# CHECK: uqshrn b12, h10, #7 1929# CHECK: uqshrn h10, s14, #5 1930# CHECK: uqshrn s10, d12, #13 19310x4c,0x95,0x09,0x7f 19320xca,0x95,0x1b,0x7f 19330x8a,0x95,0x33,0x7f 1934 1935#---------------------------------------------------------------------- 1936# Signed Saturating Rounded Shift Right Narrow (Immediate) 1937#---------------------------------------------------------------------- 1938# CHECK: sqrshrn b10, h13, #2 1939# CHECK: sqrshrn h15, s10, #6 1940# CHECK: sqrshrn s15, d12, #9 19410xaa,0x9d,0x0e,0x5f 19420x4f,0x9d,0x1a,0x5f 19430x8f,0x9d,0x37,0x5f 1944 1945#---------------------------------------------------------------------- 1946# Unsigned Saturating Rounded Shift Right Narrow (Immediate) 1947#---------------------------------------------------------------------- 1948# CHECK: uqrshrn b10, h12, #5 1949# CHECK: uqrshrn h12, s10, #14 1950# CHECK: uqrshrn s10, d10, #25 19510x8a,0x9d,0x0b,0x7f 19520x4c,0x9d,0x12,0x7f 19530x4a,0x9d,0x27,0x7f 1954 1955#---------------------------------------------------------------------- 1956# Signed Saturating Shift Right Unsigned Narrow (Immediate) 1957#---------------------------------------------------------------------- 1958# CHECK: sqshrun b15, h10, #7 1959# CHECK: sqshrun h20, s14, #3 1960# CHECK: sqshrun s10, d15, #15 19610x4f,0x85,0x09,0x7f 19620xd4,0x85,0x1d,0x7f 19630xea,0x85,0x31,0x7f 1964 1965#---------------------------------------------------------------------- 1966# Signed Saturating Rounded Shift Right Unsigned Narrow (Immediate) 1967#---------------------------------------------------------------------- 1968# CHECK: sqrshrun b17, h10, #6 1969# CHECK: sqrshrun h10, s13, #15 1970# CHECK: sqrshrun s22, d16, #31 19710x51,0x8d,0x0a,0x7f 19720xaa,0x8d,0x11,0x7f 19730x16,0x8e,0x21,0x7f 1974 1975#---------------------------------------------------------------------- 1976# Scalar Signed Fixed-point Convert To Floating-Point (Immediate) 1977#---------------------------------------------------------------------- 1978# CHECK: scvtf s22, s13, #32 1979# CHECK: scvtf d21, d12, #64 19800xb6,0xe5,0x20,0x5f 19810x95,0xe5,0x40,0x5f 1982 1983#---------------------------------------------------------------------- 1984# Scalar Unsigned Fixed-point Convert To Floating-Point (Immediate) 1985#---------------------------------------------------------------------- 1986# CHECK: ucvtf s22, s13, #32 1987# CHECK: ucvtf d21, d14, #64 19880xb6,0xe5,0x20,0x7f 19890xd5,0xe5,0x40,0x7f 1990 1991#---------------------------------------------------------------------- 1992# Scalar Floating-point Convert To Signed Fixed-point (Immediate) 1993#---------------------------------------------------------------------- 1994# CHECK: fcvtzs s21, s12, #1 1995# CHECK: fcvtzs d21, d12, #1 19960x95,0xfd,0x3f,0x5f 19970x95,0xfd,0x7f,0x5f 1998 1999#---------------------------------------------------------------------- 2000# Scalar Floating-point Convert To Unsigned Fixed-point (Immediate) 2001#---------------------------------------------------------------------- 2002# CHECK: fcvtzu s21, s12, #1 2003# CHECK: fcvtzu d21, d12, #1 20040x95,0xfd,0x3f,0x7f 20050x95,0xfd,0x7f,0x7f 2006 2007#---------------------------------------------------------------------- 2008# Vector load/store multiple N-element structure 2009#---------------------------------------------------------------------- 2010# CHECK: ld1 { v0.16b }, [x0] 2011# CHECK: ld1 { v15.8h, v16.8h }, [x15] 2012# CHECK: ld1 { v31.4s, v0.4s, v1.4s }, [sp] 2013# CHECK: ld1 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0] 20140x00,0x70,0x40,0x4c 20150xef,0xa5,0x40,0x4c 20160xff,0x6b,0x40,0x4c 20170x00,0x2c,0x40,0x4c 2018 2019# CHECK: ld2 { v0.8b, v1.8b }, [x0] 2020# CHECK: ld3 { v15.4h, v16.4h, v17.4h }, [x15] 2021# CHECK: ld4 { v31.2s, v0.2s, v1.2s, v2.2s }, [sp] 20220x00,0x80,0x40,0x0c 20230xef,0x45,0x40,0x0c 20240xff,0x0b,0x40,0x0c 2025 2026# CHECK: st1 { v0.16b }, [x0] 2027# CHECK: st1 { v15.8h, v16.8h }, [x15] 2028# CHECK: st1 { v31.4s, v0.4s, v1.4s }, [sp] 2029# CHECK: st1 { v0.2d, v1.2d, v2.2d, v3.2d }, [x0] 20300x00,0x70,0x00,0x4c 20310xef,0xa5,0x00,0x4c 20320xff,0x6b,0x00,0x4c 20330x00,0x2c,0x00,0x4c 2034 2035# CHECK: st2 { v0.8b, v1.8b }, [x0] 2036# CHECK: st3 { v15.4h, v16.4h, v17.4h }, [x15] 2037# CHECK: st4 { v31.2s, v0.2s, v1.2s, v2.2s }, [sp] 20380x00,0x80,0x00,0x0c 20390xef,0x45,0x00,0x0c 20400xff,0x0b,0x00,0x0c 2041 2042#---------------------------------------------------------------------- 2043# Vector load/store multiple N-element structure (post-index) 2044#---------------------------------------------------------------------- 2045# CHECK: ld1 { v15.8h }, [x15], x2 2046# CHECK: ld1 { v31.4s, v0.4s }, [sp], #32 2047# CHECK: ld1 { v0.2d, v1.2d, v2.2d }, [x0], #48 2048# CHECK: ld1 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0], x3 20490xef,0x75,0xc2,0x4c 20500xff,0xab,0xdf,0x4c 20510x00,0x6c,0xdf,0x4c 20520x00,0x20,0xc3,0x0c 2053 2054# CHECK: ld2 { v0.16b, v1.16b }, [x0], x1 2055# CHECK: ld3 { v15.8h, v16.8h, v17.8h }, [x15], x2 2056# CHECK: ld4 { v31.4s, v0.4s, v1.4s, v2.4s }, [sp], #64 20570x00,0x80,0xc1,0x4c 20580xef,0x45,0xc2,0x4c 20590xff,0x0b,0xdf,0x4c 2060 2061 2062# CHECK: st1 { v15.8h }, [x15], x2 2063# CHECK: st1 { v31.4s, v0.4s }, [sp], #32 2064# CHECK: st1 { v0.2d, v1.2d, v2.2d }, [x0], #48 2065# CHECK: st1 { v0.8b, v1.8b, v2.8b, v3.8b }, [x0], x3 20660xef,0x75,0x82,0x4c 20670xff,0xab,0x9f,0x4c 20680x00,0x6c,0x9f,0x4c 20690x00,0x20,0x83,0x0c 2070 2071# CHECK: st2 { v0.16b, v1.16b }, [x0], x1 2072# CHECK: st3 { v15.8h, v16.8h, v17.8h }, [x15], x2 2073# CHECK: st4 { v31.4s, v0.4s, v1.4s, v2.4s }, [sp], #64 20740x00,0x80,0x81,0x4c 20750xef,0x45,0x82,0x4c 20760xff,0x0b,0x9f,0x4c 2077 2078#---------------------------------------------------------------------- 2079# Vector load single N-element structure to all lane of N 2080# consecutive registers (N = 1,2,3,4) 2081#---------------------------------------------------------------------- 2082# CHECK: ld1r { v0.16b }, [x0] 2083# CHECK: ld1r { v15.8h }, [x15] 2084# CHECK: ld2r { v31.4s, v0.4s }, [sp] 2085# CHECK: ld2r { v0.2d, v1.2d }, [x0] 2086# CHECK: ld3r { v0.8b, v1.8b, v2.8b }, [x0] 2087# CHECK: ld3r { v15.4h, v16.4h, v17.4h }, [x15] 2088# CHECK: ld4r { v31.2s, v0.2s, v1.2s, v2.2s }, [sp] 2089# CHECK: ld4r { v31.1d, v0.1d, v1.1d, v2.1d }, [sp] 20900x00,0xc0,0x40,0x4d 20910xef,0xc5,0x40,0x4d 20920xff,0xcb,0x60,0x4d 20930x00,0xcc,0x60,0x4d 20940x00,0xe0,0x40,0x0d 20950xef,0xe5,0x40,0x0d 20960xff,0xeb,0x60,0x0d 20970xff,0xef,0x60,0x0d 2098 2099#---------------------------------------------------------------------- 2100# Vector load/store single N-element structure to/from one lane of N 2101# consecutive registers (N = 1,2,3,4) 2102#---------------------------------------------------------------------- 2103# CHECK: ld1 { v0.b }[9], [x0] 2104# CHECK: ld2 { v15.h, v16.h }[7], [x15] 2105# CHECK: ld3 { v31.s, v0.s, v1.s }[3], [sp] 2106# CHECK: ld4 { v0.d, v1.d, v2.d, v3.d }[1], [x0] 2107# CHECK: st1 { v0.d }[1], [x0] 2108# CHECK: st2 { v31.s, v0.s }[3], [sp] 2109# CHECK: st3 { v15.h, v16.h, v17.h }[7], [x15] 2110# CHECK: st4 { v0.b, v1.b, v2.b, v3.b }[9], [x0] 21110x00,0x04,0x40,0x4d 21120xef,0x59,0x60,0x4d 21130xff,0xb3,0x40,0x4d 21140x00,0xa4,0x60,0x4d 21150x00,0x84,0x00,0x4d 21160xff,0x93,0x20,0x4d 21170xef,0x79,0x00,0x4d 21180x00,0x24,0x20,0x4d 2119 2120#---------------------------------------------------------------------- 2121# Post-index of vector load single N-element structure to all lane of N 2122# consecutive registers (N = 1,2,3,4) 2123#---------------------------------------------------------------------- 2124# CHECK: ld1r { v0.16b }, [x0], #1 2125# CHECK: ld1r { v15.8h }, [x15], #2 2126# CHECK: ld2r { v31.4s, v0.4s }, [sp], #8 2127# CHECK: ld2r { v0.2d, v1.2d }, [x0], #16 2128# CHECK: ld3r { v0.8b, v1.8b, v2.8b }, [x0], #3 2129# CHECK: ld3r { v15.4h, v16.4h, v17.4h }, [x15], #6 2130# CHECK: ld4r { v31.2s, v0.2s, v1.2s, v2.2s }, [sp], x30 2131# CHECK: ld4r { v31.1d, v0.1d, v1.1d, v2.1d }, [sp], x7 21320x00,0xc0,0xdf,0x4d 21330xef,0xc5,0xdf,0x4d 21340xff,0xcb,0xff,0x4d 21350x00,0xcc,0xff,0x4d 21360x00,0xe0,0xdf,0x0d 21370xef,0xe5,0xdf,0x0d 21380xff,0xeb,0xfe,0x0d 21390xff,0xef,0xe7,0x0d 2140 2141#---------------------------------------------------------------------- 2142# Post-index of vector load/store single N-element structure to/from 2143# one lane of N consecutive registers (N = 1,2,3,4) 2144#---------------------------------------------------------------------- 2145# CHECK: ld1 { v0.b }[9], [x0], #1 2146# CHECK: ld2 { v15.h, v16.h }[7], [x15], #4 2147# CHECK: ld3 { v31.s, v0.s, v1.s }[3], [sp], x3 2148# CHECK: ld4 { v0.d, v1.d, v2.d, v3.d }[1], [x0], #32 2149# CHECK: ld4 { v0.h, v1.h, v2.h, v3.h }[7], [x0], x0 2150# CHECK: st1 { v0.d }[1], [x0], #8 2151# CHECK: st2 { v31.s, v0.s }[3], [sp], #8 2152# CHECK: st3 { v15.h, v16.h, v17.h }[7], [x15], #6 2153# CHECK: st4 { v0.b, v1.b, v2.b, v3.b }[9], [x0], x5 21540x00,0x04,0xdf,0x4d 21550xef,0x59,0xff,0x4d 21560xff,0xb3,0xc3,0x4d 21570x00,0xa4,0xff,0x4d 21580x00,0x78,0xe0,0x4d 21590x00,0x84,0x9f,0x4d 21600xff,0x93,0xbf,0x4d 21610xef,0x79,0x9f,0x4d 21620x00,0x24,0xa5,0x4d 2163 2164#---------------------------------------------------------------------- 2165# Bitwise extract 2166#---------------------------------------------------------------------- 21670x20,0x18,0x02,0x2e 21680x20,0x18,0x02,0x6e 2169# CHECK: ext v0.8b, v1.8b, v2.8b, #{{0x3|3}} 2170# CHECK: ext v0.16b, v1.16b, v2.16b, #{{0x3|3}} 2171 2172#---------------------------------------------------------------------- 2173# unzip with 3 same vectors to get primary result 2174#---------------------------------------------------------------------- 2175# CHECK: uzp1 v1.8b, v1.8b, v2.8b 2176# CHECK: uzp1 v2.16b, v1.16b, v2.16b 2177# CHECK: uzp1 v3.4h, v1.4h, v2.4h 2178# CHECK: uzp1 v4.8h, v1.8h, v2.8h 2179# CHECK: uzp1 v5.2s, v1.2s, v2.2s 2180# CHECK: uzp1 v6.4s, v1.4s, v2.4s 2181# CHECK: uzp1 v7.2d, v1.2d, v2.2d 21820x21,0x18,0x02,0x0e 21830x22,0x18,0x02,0x4e 21840x23,0x18,0x42,0x0e 21850x24,0x18,0x42,0x4e 21860x25,0x18,0x82,0x0e 21870x26,0x18,0x82,0x4e 21880x27,0x18,0xc2,0x4e 2189 2190#---------------------------------------------------------------------- 2191# transpose with 3 same vectors to get primary result 2192#---------------------------------------------------------------------- 2193# CHECK: trn1 v8.8b, v1.8b, v2.8b 2194# CHECK: trn1 v9.16b, v1.16b, v2.16b 2195# CHECK: trn1 v10.4h, v1.4h, v2.4h 2196# CHECK: trn1 v27.8h, v7.8h, v2.8h 2197# CHECK: trn1 v12.2s, v7.2s, v2.2s 2198# CHECK: trn1 v29.4s, v6.4s, v2.4s 2199# CHECK: trn1 v14.2d, v6.2d, v2.2d 22000x28,0x28,0x02,0x0e 22010x29,0x28,0x02,0x4e 22020x2a,0x28,0x42,0x0e 22030xfb,0x28,0x42,0x4e 22040xec,0x28,0x82,0x0e 22050xdd,0x28,0x82,0x4e 22060xce,0x28,0xc2,0x4e 2207 2208#---------------------------------------------------------------------- 2209# zip with 3 same vectors to get primary result 2210#---------------------------------------------------------------------- 2211# CHECK: zip1 v31.8b, v5.8b, v2.8b 2212# CHECK: zip1 v0.16b, v5.16b, v2.16b 2213# CHECK: zip1 v17.4h, v4.4h, v2.4h 2214# CHECK: zip1 v2.8h, v4.8h, v2.8h 2215# CHECK: zip1 v19.2s, v3.2s, v2.2s 2216# CHECK: zip1 v4.4s, v3.4s, v2.4s 2217# CHECK: zip1 v21.2d, v2.2d, v2.2d 22180xbf,0x38,0x02,0x0e 22190xa0,0x38,0x02,0x4e 22200x91,0x38,0x42,0x0e 22210x82,0x38,0x42,0x4e 22220x73,0x38,0x82,0x0e 22230x64,0x38,0x82,0x4e 22240x55,0x38,0xc2,0x4e 2225 2226#---------------------------------------------------------------------- 2227# unzip with 3 same vectors to get secondary result 2228#---------------------------------------------------------------------- 2229# CHECK: uzp2 v6.8b, v2.8b, v2.8b 2230# CHECK: uzp2 v23.16b, v1.16b, v2.16b 2231# CHECK: uzp2 v8.4h, v1.4h, v2.4h 2232# CHECK: uzp2 v25.8h, v0.8h, v2.8h 2233# CHECK: uzp2 v10.2s, v0.2s, v2.2s 2234# CHECK: uzp2 v27.4s, v7.4s, v2.4s 2235# CHECK: uzp2 v12.2d, v7.2d, v2.2d 22360x46,0x58,0x02,0x0e 22370x37,0x58,0x02,0x4e 22380x28,0x58,0x42,0x0e 22390x19,0x58,0x42,0x4e 22400x0a,0x58,0x82,0x0e 22410xfb,0x58,0x82,0x4e 22420xec,0x58,0xc2,0x4e 2243 2244#---------------------------------------------------------------------- 2245# transpose with 3 same vectors to get secondary result 2246#---------------------------------------------------------------------- 2247# CHECK: trn2 v29.8b, v6.8b, v2.8b 2248# CHECK: trn2 v14.16b, v6.16b, v2.16b 2249# CHECK: trn2 v31.4h, v5.4h, v2.4h 2250# CHECK: trn2 v0.8h, v5.8h, v2.8h 2251# CHECK: trn2 v17.2s, v4.2s, v2.2s 2252# CHECK: trn2 v2.4s, v4.4s, v2.4s 2253# CHECK: trn2 v19.2d, v3.2d, v2.2d 22540xdd,0x68,0x02,0x0e 22550xce,0x68,0x02,0x4e 22560xbf,0x68,0x42,0x0e 22570xa0,0x68,0x42,0x4e 22580x91,0x68,0x82,0x0e 22590x82,0x68,0x82,0x4e 22600x73,0x68,0xc2,0x4e 2261 2262#---------------------------------------------------------------------- 2263# zip with 3 same vectors to get secondary result 2264#---------------------------------------------------------------------- 2265# CHECK: zip2 v4.8b, v3.8b, v2.8b 2266# CHECK: zip2 v21.16b, v2.16b, v2.16b 2267# CHECK: zip2 v6.4h, v2.4h, v2.4h 2268# CHECK: zip2 v23.8h, v1.8h, v2.8h 2269# CHECK: zip2 v8.2s, v1.2s, v2.2s 2270# CHECK: zip2 v25.4s, v0.4s, v2.4s 2271# CHECK: zip2 v10.2d, v0.2d, v2.2d 22720x64,0x78,0x02,0x0e 22730x55,0x78,0x02,0x4e 22740x46,0x78,0x42,0x0e 22750x37,0x78,0x42,0x4e 22760x28,0x78,0x82,0x0e 22770x19,0x78,0x82,0x4e 22780x0a,0x78,0xc2,0x4e 2279 2280#---------------------------------------------------------------------- 2281# Scalar Floating Point multiply (scalar, by element) 2282#---------------------------------------------------------------------- 2283# CHECK: fmul s0, s1, v1.s[0] 2284# CHECK: fmul s0, s1, v1.s[3] 2285# CHECK: fmul d0, d1, v1.d[0] 2286# CHECK: fmul d0, d1, v1.d[1] 2287# CHECK: fmul d15, d15, v15.d[1] 22880x20 0x90 0x81 0x5f 22890x20 0x98 0xa1 0x5f 22900x20 0x90 0xc1 0x5f 22910x20 0x98 0xc1 0x5f 22920xef 0x99 0xcf 0x5f 2293 2294#---------------------------------------------------------------------- 2295# Scalar Floating Point multiply extended (scalar, by element) 2296#---------------------------------------------------------------------- 2297# CHECK: fmulx s3, s5, v7.s[0] 2298# CHECK: fmulx s3, s5, v7.s[3] 2299# CHECK: fmulx s3, s5, v15.s[3] 2300# CHECK: fmulx d0, d4, v8.d[0] 2301# CHECK: fmulx d0, d4, v8.d[1] 23020xa3 0x90 0x87 0x7f 23030xa3 0x98 0xa7 0x7f 23040xa3 0x98 0xaf 0x7f 23050x80 0x90 0xc8 0x7f 23060x80 0x98 0xc8 0x7f 2307 2308#---------------------------------------------------------------------- 2309# Scalar Floating Point fused multiply-add (scalar, by element) 2310#---------------------------------------------------------------------- 2311# CHECK: fmla s0, s1, v1.s[0] 2312# CHECK: fmla s0, s1, v1.s[3] 2313# CHECK: fmla d0, d1, v1.d[0] 2314# CHECK: fmla d0, d1, v1.d[1] 2315# CHECK: fmla d15, d15, v15.d[1] 23160x20 0x10 0x81 0x5f 23170x20 0x18 0xa1 0x5f 23180x20 0x10 0xc1 0x5f 23190x20 0x18 0xc1 0x5f 23200xef 0x19 0xcf 0x5f 2321 2322#---------------------------------------------------------------------- 2323# Scalar Floating Point fused multiply-sub (scalar, by element) 2324#---------------------------------------------------------------------- 2325# CHECK: fmls s3, s5, v7.s[0] 2326# CHECK: fmls s3, s5, v7.s[3] 2327# CHECK: fmls s3, s5, v15.s[3] 2328# CHECK: fmls d0, d4, v8.d[0] 2329# CHECK: fmls d0, d4, v8.d[1] 23300xa3 0x50 0x87 0x5f 23310xa3 0x58 0xa7 0x5f 23320xa3 0x58 0xaf 0x5f 23330x80 0x50 0xc8 0x5f 23340x80 0x58 0xc8 0x5f 2335 2336#---------------------------------------------------------------------- 2337# Scalar Signed saturating doubling 2338# multiply-add long (scalar, by element) 2339#---------------------------------------------------------------------- 2340# CHECK: sqdmlal s0, h0, v0.h[0] 2341# CHECK: sqdmlal s0, h0, v0.h[1] 2342# CHECK: sqdmlal s0, h0, v0.h[2] 2343# CHECK: sqdmlal s0, h0, v0.h[3] 2344# CHECK: sqdmlal s0, h0, v0.h[4] 2345# CHECK: sqdmlal s0, h0, v0.h[5] 2346# CHECK: sqdmlal s0, h0, v0.h[6] 2347# CHECK: sqdmlal s0, h0, v0.h[7] 2348# CHECK: sqdmlal d8, s9, v15.s[0] 2349# CHECK: sqdmlal d8, s9, v15.s[1] 2350# CHECK: sqdmlal d8, s9, v15.s[2] 2351# CHECK: sqdmlal d8, s9, v15.s[3] 23520x00 0x30 0x40 0x5f 23530x00 0x30 0x50 0x5f 23540x00 0x30 0x60 0x5f 23550x00 0x30 0x70 0x5f 23560x00 0x38 0x40 0x5f 23570x00 0x38 0x50 0x5f 23580x00 0x38 0x60 0x5f 23590x00 0x38 0x70 0x5f 23600x28 0x31 0x8f 0x5f 23610x28 0x31 0xaf 0x5f 23620x28 0x39 0x8f 0x5f 23630x28 0x39 0xaf 0x5f 2364 2365#---------------------------------------------------------------------- 2366# Scalar Signed saturating doubling 2367# multiply-sub long (scalar, by element) 2368#---------------------------------------------------------------------- 2369# CHECK: sqdmlsl s0, h0, v0.h[0] 2370# CHECK: sqdmlsl s0, h0, v0.h[1] 2371# CHECK: sqdmlsl s0, h0, v0.h[2] 2372# CHECK: sqdmlsl s0, h0, v0.h[3] 2373# CHECK: sqdmlsl s0, h0, v0.h[4] 2374# CHECK: sqdmlsl s0, h0, v0.h[5] 2375# CHECK: sqdmlsl s0, h0, v0.h[6] 2376# CHECK: sqdmlsl s0, h0, v0.h[7] 2377# CHECK: sqdmlsl d8, s9, v15.s[0] 2378# CHECK: sqdmlsl d8, s9, v15.s[1] 2379# CHECK: sqdmlsl d8, s9, v15.s[2] 2380# CHECK: sqdmlsl d8, s9, v15.s[3] 23810x00 0x70 0x40 0x5f 23820x00 0x70 0x50 0x5f 23830x00 0x70 0x60 0x5f 23840x00 0x70 0x70 0x5f 23850x00 0x78 0x40 0x5f 23860x00 0x78 0x50 0x5f 23870x00 0x78 0x60 0x5f 23880x00 0x78 0x70 0x5f 23890x28 0x71 0x8f 0x5f 23900x28 0x71 0xaf 0x5f 23910x28 0x79 0x8f 0x5f 23920x28 0x79 0xaf 0x5f 2393 2394#---------------------------------------------------------------------- 2395# Scalar Signed saturating doubling multiply long (scalar, by element) 2396#---------------------------------------------------------------------- 2397# CHECK: sqdmull s1, h1, v1.h[0] 2398# CHECK: sqdmull s1, h1, v1.h[1] 2399# CHECK: sqdmull s1, h1, v1.h[2] 2400# CHECK: sqdmull s1, h1, v1.h[3] 2401# CHECK: sqdmull s1, h1, v1.h[4] 2402# CHECK: sqdmull s1, h1, v1.h[5] 2403# CHECK: sqdmull s1, h1, v1.h[6] 2404# CHECK: sqdmull s1, h1, v1.h[7] 2405# CHECK: sqdmull d1, s1, v4.s[0] 2406# CHECK: sqdmull d1, s1, v4.s[1] 2407# CHECK: sqdmull d1, s1, v4.s[2] 2408# CHECK: sqdmull d1, s1, v4.s[3] 24090x21 0xb0 0x41 0x5f 24100x21 0xb0 0x51 0x5f 24110x21 0xb0 0x61 0x5f 24120x21 0xb0 0x71 0x5f 24130x21 0xb8 0x41 0x5f 24140x21 0xb8 0x51 0x5f 24150x21 0xb8 0x61 0x5f 24160x21 0xb8 0x71 0x5f 24170x21 0xb0 0x84 0x5f 24180x21 0xb0 0xa4 0x5f 24190x21 0xb8 0x84 0x5f 24200x21 0xb8 0xa4 0x5f 2421 2422#---------------------------------------------------------------------- 2423# Scalar Signed saturating doubling multiply returning 2424# high half (scalar, by element) 2425#---------------------------------------------------------------------- 2426# CHECK: sqdmulh h7, h1, v14.h[0] 2427# CHECK: sqdmulh h7, h15, v8.h[1] 2428# CHECK: sqdmulh h7, h15, v8.h[2] 2429# CHECK: sqdmulh h7, h15, v8.h[3] 2430# CHECK: sqdmulh h7, h15, v8.h[4] 2431# CHECK: sqdmulh h7, h15, v8.h[5] 2432# CHECK: sqdmulh h7, h15, v8.h[6] 2433# CHECK: sqdmulh h7, h15, v8.h[7] 2434# CHECK: sqdmulh s15, s3, v4.s[0] 2435# CHECK: sqdmulh s15, s14, v16.s[1] 2436# CHECK: sqdmulh s15, s15, v16.s[2] 2437# CHECK: sqdmulh s15, s16, v17.s[3] 24380x27 0xc0 0x4e 0x5f 24390xe7 0xc1 0x58 0x5f 24400xe7 0xc1 0x68 0x5f 24410xe7 0xc1 0x78 0x5f 24420xe7 0xc9 0x48 0x5f 24430xe7 0xc9 0x58 0x5f 24440xe7 0xc9 0x68 0x5f 24450xe7 0xc9 0x78 0x5f 24460x6f 0xc0 0x84 0x5f 24470xcf 0xc1 0xb0 0x5f 24480xef 0xc9 0x90 0x5f 24490x0f 0xca 0xb1 0x5f 2450 2451#---------------------------------------------------------------------- 2452# Scalar Signed saturating rounding doubling multiply 2453# returning high half (scalar, by element) 2454#---------------------------------------------------------------------- 2455# CHECK: sqrdmulh h7, h1, v14.h[0] 2456# CHECK: sqrdmulh h7, h15, v8.h[1] 2457# CHECK: sqrdmulh h7, h15, v8.h[2] 2458# CHECK: sqrdmulh h7, h15, v8.h[3] 2459# CHECK: sqrdmulh h7, h15, v8.h[4] 2460# CHECK: sqrdmulh h7, h15, v8.h[5] 2461# CHECK: sqrdmulh h7, h15, v8.h[6] 2462# CHECK: sqrdmulh h7, h15, v8.h[7] 2463# CHECK: sqrdmulh s15, s3, v4.s[0] 2464# CHECK: sqrdmulh s15, s14, v16.s[1] 2465# CHECK: sqrdmulh s15, s15, v16.s[2] 2466# CHECK: sqrdmulh s15, s16, v17.s[3] 24670x27 0xd0 0x4e 0x5f 24680xe7 0xd1 0x58 0x5f 24690xe7 0xd1 0x68 0x5f 24700xe7 0xd1 0x78 0x5f 24710xe7 0xd9 0x48 0x5f 24720xe7 0xd9 0x58 0x5f 24730xe7 0xd9 0x68 0x5f 24740xe7 0xd9 0x78 0x5f 24750x6f 0xd0 0x84 0x5f 24760xcf 0xd1 0xb0 0x5f 24770xef 0xd9 0x90 0x5f 24780x0f 0xda 0xb1 0x5f 2479 2480#---------------------------------------------------------------------- 2481#Duplicate element (scalar) 2482#---------------------------------------------------------------------- 2483# CHECK: {{dup|mov}} b0, v0.b[15] 2484# CHECK: {{dup|mov}} h2, v31.h[5] 2485# CHECK: {{dup|mov}} s17, v2.s[2] 2486# CHECK: {{dup|mov}} d6, v12.d[1] 24870x00 0x04 0x1f 0x5e 24880xe2 0x07 0x16 0x5e 24890x51 0x04 0x14 0x5e 24900x86 0x05 0x18 0x5e 2491 2492#---------------------------------------------------------------------- 2493# Table look up 2494#---------------------------------------------------------------------- 24950x20,0x00,0x02,0x0e 24960xf0,0x23,0x02,0x0e 24970x20,0x40,0x02,0x0e 24980xf0,0x62,0x02,0x0e 2499# CHECK: tbl v0.8b, { v1.16b }, v2.8b 2500# CHECK: tbl v16.8b, { v31.16b, v0.16b }, v2.8b 2501# CHECK: tbl v0.8b, { v1.16b, v2.16b, v3.16b }, v2.8b 2502# CHECK: tbl v16.8b, { v23.16b, v24.16b, v25.16b, v26.16b }, v2.8b 2503 25040x20,0x00,0x02,0x4e 25050xf0,0x23,0x02,0x4e 25060x20,0x40,0x02,0x4e 25070xe0,0x63,0x02,0x4e 2508# CHECK: tbl v0.16b, { v1.16b }, v2.16b 2509# CHECK: tbl v16.16b, { v31.16b, v0.16b }, v2.16b 2510# CHECK: tbl v0.16b, { v1.16b, v2.16b, v3.16b }, v2.16b 2511# CHECK: tbl v0.16b, { v31.16b, v0.16b, v1.16b, v2.16b }, v2.16b 2512 25130x20,0x10,0x02,0x0e 25140xf0,0x33,0x02,0x0e 25150x20,0x50,0x02,0x0e 25160xf0,0x72,0x02,0x0e 2517# CHECK: tbx v0.8b, { v1.16b }, v2.8b 2518# CHECK: tbx v16.8b, { v31.16b, v0.16b }, v2.8b 2519# CHECK: tbx v0.8b, { v1.16b, v2.16b, v3.16b }, v2.8b 2520# CHECK: tbx v16.8b, { v23.16b, v24.16b, v25.16b, v26.16b }, v2.8b 2521 25220x20,0x10,0x02,0x4e 25230xf0,0x33,0x02,0x4e 25240x20,0x50,0x02,0x4e 25250xf0,0x73,0x02,0x4e 2526# CHECK: tbx v0.16b, { v1.16b }, v2.16b 2527# CHECK: tbx v16.16b, { v31.16b, v0.16b }, v2.16b 2528# CHECK: tbx v0.16b, { v1.16b, v2.16b, v3.16b }, v2.16b 2529# CHECK: tbx v16.16b, { v31.16b, v0.16b, v1.16b, v2.16b }, v2.16b 2530 2531#---------------------------------------------------------------------- 2532# Scalar Floating-point Convert To Lower Precision Narrow, Rounding To 2533# Odd 2534#---------------------------------------------------------------------- 2535# CHECK: fcvtxn s22, d13 25360xb6,0x69,0x61,0x7e 2537 2538#---------------------------------------------------------------------- 2539# Scalar Floating-point Convert To Signed Integer, Rounding To Nearest 2540# With Ties To Away 2541#---------------------------------------------------------------------- 2542# CHECK: fcvtas s12, s13 2543# CHECK: fcvtas d21, d14 2544 25450xac,0xc9,0x21,0x5e 25460xd5,0xc9,0x61,0x5e 2547 2548#---------------------------------------------------------------------- 2549# Scalar Floating-point Convert To Unsigned Integer, Rounding To 2550# Nearest With Ties To Away 2551#---------------------------------------------------------------------- 2552# CHECK: fcvtau s12, s13 2553# CHECK: fcvtau d21, d14 25540xac,0xc9,0x21,0x7e 25550xd5,0xc9,0x61,0x7e 2556 2557#---------------------------------------------------------------------- 2558# Scalar Floating-point Convert To Signed Integer, Rounding Toward 2559# Minus Infinity 2560#---------------------------------------------------------------------- 2561# CHECK: fcvtms s22, s13 2562# CHECK: fcvtms d21, d14 25630xb6,0xb9,0x21,0x5e 25640xd5,0xb9,0x61,0x5e 2565 2566#---------------------------------------------------------------------- 2567# Scalar Floating-point Convert To Unsigned Integer, Rounding Toward 2568# Minus Infinity 2569#---------------------------------------------------------------------- 2570# CHECK: fcvtmu s12, s13 2571# CHECK: fcvtmu d21, d14 25720xac,0xb9,0x21,0x7e 25730xd5,0xb9,0x61,0x7e 2574 2575#---------------------------------------------------------------------- 2576# Scalar Floating-point Convert To Signed Integer, Rounding To Nearest 2577# With Ties To Even 2578#---------------------------------------------------------------------- 2579 2580# CHECK: fcvtns s22, s13 2581# CHECK: fcvtns d21, d14 2582 25830xb6,0xa9,0x21,0x5e 25840xd5,0xa9,0x61,0x5e 2585 2586#---------------------------------------------------------------------- 2587# Scalar Floating-point Convert To Unsigned Integer, Rounding To 2588# Nearest With Ties To Even 2589#---------------------------------------------------------------------- 2590 2591# CHECK: fcvtnu s12, s13 2592# CHECK: fcvtnu d21, d14 25930xac,0xa9,0x21,0x7e 25940xd5,0xa9,0x61,0x7e 2595 2596#---------------------------------------------------------------------- 2597# Scalar Floating-point Convert To Signed Integer, Rounding Toward 2598# Positive Infinity 2599#---------------------------------------------------------------------- 2600# CHECK: fcvtps s22, s13 2601# CHECK: fcvtps d21, d14 26020xb6,0xa9,0xa1,0x5e 26030xd5,0xa9,0xe1,0x5e 2604 2605#---------------------------------------------------------------------- 2606# Scalar Floating-point Convert To Unsigned Integer, Rounding Toward 2607# Positive Infinity 2608#---------------------------------------------------------------------- 2609# CHECK: fcvtpu s12, s13 2610# CHECK: fcvtpu d21, d14 26110xac,0xa9,0xa1,0x7e 26120xd5,0xa9,0xe1,0x7e 2613 2614#---------------------------------------------------------------------- 2615# Scalar Floating-point Convert To Signed Integer, Rounding Toward Zero 2616#---------------------------------------------------------------------- 2617# CHECK: fcvtzs s12, s13 2618# CHECK: fcvtzs d21, d14 26190xac,0xb9,0xa1,0x5e 26200xd5,0xb9,0xe1,0x5e 2621 2622#---------------------------------------------------------------------- 2623# Scalar Floating-point Convert To Unsigned Integer, Rounding Toward 2624# Zero 2625#---------------------------------------------------------------------- 2626# CHECK: fcvtzu s12, s13 2627# CHECK: fcvtzu d21, d14 26280xac,0xb9,0xa1,0x7e 26290xd5,0xb9,0xe1,0x7e 2630 2631#---------------------------------------------------------------------- 2632# Scalar Floating-point Absolute Difference 2633#---------------------------------------------------------------------- 2634# CHECK: fabd s29, s24, s20 2635# CHECK: fabd d29, d24, d20 26360x1d,0xd7,0xb4,0x7e 26370x1d,0xd7,0xf4,0x7e 2638