1# RUN: llvm-mc -triple aarch64-none-linux-gnu -mattr=+neon -disassemble < %s | FileCheck %s 2 3#------------------------------------------------------------------------------ 4# Vector Integer Add/Sub 5#------------------------------------------------------------------------------ 6# CHECK: add v31.8b, v31.8b, v31.8b 7# CHECK: sub v0.2d, v0.2d, v0.2d 80xff 0x87 0x3f 0x0e 90x00 0x84 0xe0 0x6e 10 11#------------------------------------------------------------------------------ 12# Vector Floating-Point Add/Sub 13#------------------------------------------------------------------------------ 14 15# CHECK: fadd v0.4s, v0.4s, v0.4s 16# CHECK: fsub v31.2s, v31.2s, v31.2s 170x00 0xd4 0x20 0x4e 180xff 0xd7 0xbf 0x0e 19 20#------------------------------------------------------------------------------ 21# Vector Integer Mul 22#------------------------------------------------------------------------------ 23# CHECK: mul v0.8b, v1.8b, v2.8b 240x20 0x9c 0x22 0x0e 25 26#------------------------------------------------------------------------------ 27# Vector Floating-Point Mul/Div 28#------------------------------------------------------------------------------ 29# CHECK: fmul v0.2s, v1.2s, v2.2s 30# CHECK: fdiv v31.2s, v31.2s, v31.2s 310x20 0xdc 0x22 0x2e 320xff 0xff 0x3f 0x2e 33 34#---------------------------------------------------------------------- 35# Vector Polynomial Multiply 36#---------------------------------------------------------------------- 37# CHECK: pmul v0.8b, v15.8b, v16.8b 38# CHECK: pmul v31.16b, v7.16b, v8.16b 390xe0 0x9d 0x30 0x2e 400xff 0x9c 0x28 0x6e 41 42#------------------------------------------------------------------------------ 43# Vector And, Orr, Eor, Orn, Bic 44#------------------------------------------------------------------------------ 45# CHECK: and v2.8b, v2.8b, v2.8b 46# CHECK: orr v31.16b, v31.16b, v30.16b 47# CHECK: eor v0.16b, v1.16b, v2.16b 48# CHECK: orn v9.16b, v10.16b, v11.16b 49# CHECK: bic v31.8b, v30.8b, v29.8b 500x42 0x1c 0x22 0x0e 510xff 0x1f 0xbe 0x4e 520x20 0x1c 0x22 0x6e 530x49 0x1d 0xeb 0x4e 540xdf 0x1f 0x7d 0x0e 55 56#------------------------------------------------------------------------------ 57# Vector Bsl, Bit, Bif 58#------------------------------------------------------------------------------ 59# CHECK: bsl v0.8b, v1.8b, v2.8b 60# CHECK: bit v31.16b, v31.16b, v31.16b 61# CHECK: bif v0.16b, v1.16b, v2.16b 620x20 0x1c 0x62 0x2e 630xff 0x1f 0xbf 0x6e 640x20 0x1c 0xe2 0x6e 65 66 67#------------------------------------------------------------------------------ 68# Vector Integer Multiply-accumulate and Multiply-subtract 69#------------------------------------------------------------------------------ 70# CHECK: mla v0.8b, v1.8b, v2.8b 71# CHECK: mls v31.4h, v31.4h, v31.4h 720x20 0x94 0x22 0x0e 730xff 0x97 0x7f 0x2e 74 75#------------------------------------------------------------------------------ 76# Vector Floating-Point Multiply-accumulate and Multiply-subtract 77#------------------------------------------------------------------------------ 78# CHECK: fmla v0.2s, v1.2s, v2.2s 79# CHECK: fmls v31.2s, v31.2s, v31.2s 800x20 0xcc 0x22 0x0e 810xff 0xcf 0xbf 0x0e 82 83#------------------------------------------------------------------------------ 84# Vector Move Immediate Shifted 85# Vector Move Inverted Immediate Shifted 86# Vector Bitwise Bit Clear (AND NOT) - immediate 87# Vector Bitwise OR - immedidate 88#------------------------------------------------------------------------------ 89# CHECK: movi v31.4s, #0xff, lsl #24 90# CHECK: mvni v0.2s, #0x0 91# CHECK: bic v15.4h, #0xf, lsl #8 92# CHECK: orr v16.8h, #0x1f 930xff 0x67 0x07 0x4f 940x00 0x04 0x00 0x2f 950xef 0xb5 0x00 0x2f 960xf0 0x97 0x00 0x4f 97 98#------------------------------------------------------------------------------ 99# Vector Move Immediate Masked 100# Vector Move Inverted Immediate Masked 101#------------------------------------------------------------------------------ 102# CHECK: movi v8.2s, #0x8, msl #8 103# CHECK: mvni v16.4s, #0x10, msl #16 1040x08 0xc5 0x00 0x0f 1050x10 0xd6 0x00 0x6f 106 107#------------------------------------------------------------------------------ 108# Vector Immediate - per byte 109# Vector Move Immediate - bytemask, per doubleword 110# Vector Move Immediate - bytemask, one doubleword 111#------------------------------------------------------------------------------ 112# CHECK: movi v16.8b, #0xff 113# CHECK: movi v31.16b, #0x1f 114# CHECK: movi d15, #0xff00ff00ff00ff 115# CHECK: movi v31.2d, #0xff0000ff0000ffff 1160xf0 0xe7 0x07 0x0f 1170xff 0xe7 0x00 0x4f 1180xaf 0xe6 0x02 0x2f 1190x7f 0xe6 0x04 0x6f 120 121#------------------------------------------------------------------------------ 122# Vector Floating Point Move Immediate 123#------------------------------------------------------------------------------ 124# CHECK: fmov v0.2s, #13.0 125# CHECK: fmov v15.4s, #1.0 126# CHECK: fmov v31.2d, #-1.25 1270x40 0xf5 0x01 0x0f 1280x0f 0xf6 0x03 0x4f 1290x9f 0xf6 0x07 0x6f 130 131#------------------------------------------------------------------------------ 132# Vector Move - register 133#------------------------------------------------------------------------------ 134 135# FIXME: these should print as "mov", but TableGen can't handle it. 136 137# CHECK: orr v1.16b, v15.16b, v15.16b 138# CHECK: orr v25.8b, v4.8b, v4.8b 1390xe1 0x1d 0xaf 0x4e 1400x99 0x1c 0xa4 0x0e 141 142#---------------------------------------------------------------------- 143# Vector Absolute Difference and Accumulate (Signed, Unsigned) 144# Vector Absolute Difference (Signed, Unsigned) 145# Vector Absolute Difference (Floating Point) 146#---------------------------------------------------------------------- 147 148# CHECK: uaba v0.8b, v1.8b, v2.8b 149# CHECK: saba v31.16b, v30.16b, v29.16b 150# CHECK: uabd v15.4h, v16.4h, v17.4h 151# CHECK: sabd v5.4h, v4.4h, v6.4h 152# CHECK: fabd v1.4s, v31.4s, v16.4s 1530x20 0x7c 0x22 0x2e 1540xdf 0x7f 0x3d 0x4e 1550x0f 0x76 0x71 0x2e 1560x85 0x74 0x66 0x0e 1570xe1 0xd7 0xb0 0x6e 158 159#---------------------------------------------------------------------- 160# Scalar Integer Add 161# Scalar Integer Sub 162#---------------------------------------------------------------------- 163 164# CHECK: add d17, d31, d29 165# CHECK: sub d15, d5, d16 1660xf1 0x87 0xfd 0x5e 1670xaf 0x84 0xf0 0x7e 168 169#---------------------------------------------------------------------- 170# Vector Reciprocal Square Root Step (Floating Point) 171#---------------------------------------------------------------------- 172# CHECK: frsqrts v31.2d, v15.2d, v8.2d 1730xff 0xfd 0xe8 0x4e 174 175#---------------------------------------------------------------------- 176# Vector Reciprocal Step (Floating Point) 177#---------------------------------------------------------------------- 178# CHECK: frecps v5.4s, v7.4s, v16.4s 1790xe5 0xfc 0x30 0x4e 180 181#---------------------------------------------------------------------- 182# Vector Absolute Compare Mask Less Than Or Equal (Floating Point) 183#---------------------------------------------------------------------- 184# CHECK: facge v0.4s, v31.4s, v16.4s 1850xe0 0xef 0x30 0x6e 186 187#---------------------------------------------------------------------- 188# Vector Absolute Compare Mask Less Than (Floating Point) 189#---------------------------------------------------------------------- 190# CHECK: facgt v31.2d, v29.2d, v28.2d 1910xbf 0xef 0xfc 0x6e 192 193#---------------------------------------------------------------------- 194# Vector Compare Mask Equal (Integer) 195#---------------------------------------------------------------------- 196# CHECK: cmeq v5.16b, v15.16b, v31.16b 1970xe5 0x8d 0x3f 0x6e 198 199#---------------------------------------------------------------------- 200# Vector Compare Mask Higher or Same (Unsigned Integer) 201#---------------------------------------------------------------------- 202# CHECK: cmhs v1.8b, v16.8b, v30.8b 2030x01 0x3e 0x3e 0x2e 204 205#---------------------------------------------------------------------- 206# Vector Compare Mask Greater Than or Equal (Integer) 207#---------------------------------------------------------------------- 208# CHECK: cmge v20.4h, v11.4h, v23.4h 2090x74 0x3d 0x77 0x0e 210 211#---------------------------------------------------------------------- 212# Vector Compare Mask Higher (Unsigned Integer) 213# CHECK: cmhi v13.8h, v3.8h, v27.8h 2140x6d 0x34 0x7b 0x6e 215 216#---------------------------------------------------------------------- 217# Vector Compare Mask Greater Than (Integer) 218#---------------------------------------------------------------------- 219# CHECK: cmgt v9.4s, v4.4s, v28.4s 2200x89 0x34 0xbc 0x4e 221 222#---------------------------------------------------------------------- 223# Vector Compare Mask Bitwise Test (Integer) 224#---------------------------------------------------------------------- 225# CHECK: cmtst v21.2s, v19.2s, v18.2s 2260x75 0x8e 0xb2 0x0e 227 228#---------------------------------------------------------------------- 229# Vector Compare Mask Equal (Floating Point) 230#---------------------------------------------------------------------- 231# CHECK: fcmeq v0.2s, v15.2s, v16.2s 2320xe0 0xe5 0x30 0x0e 233 234#---------------------------------------------------------------------- 235# Vector Compare Mask Greater Than Or Equal (Floating Point) 236#---------------------------------------------------------------------- 237# CHECK: fcmge v31.4s, v7.4s, v29.4s 2380xff 0xe4 0x3d 0x6e 239 240#---------------------------------------------------------------------- 241# Vector Compare Mask Greater Than (Floating Point) 242#---------------------------------------------------------------------- 243# CHECK: fcmgt v17.4s, v8.4s, v25.4s 2440x11 0xe5 0xb9 0x6e 245 246#---------------------------------------------------------------------- 247# Vector Compare Mask Equal to Zero (Integer) 248#---------------------------------------------------------------------- 249# CHECK: cmeq v31.16b, v15.16b, #0x0 2500xff 0x99 0x20 0x4e 251 252#---------------------------------------------------------------------- 253# Vector Compare Mask Greater Than or Equal to Zero (Signed Integer) 254#---------------------------------------------------------------------- 255# CHECK: cmge v3.8b, v15.8b, #0x0 2560xe3 0x89 0x20 0x2e 257 258#---------------------------------------------------------------------- 259# Vector Compare Mask Greater Than Zero (Signed Integer) 260#---------------------------------------------------------------------- 261# CHECK: cmgt v22.2s, v9.2s, #0x0 2620x36 0x89 0xa0 0x0e 263 264#---------------------------------------------------------------------- 265# Vector Compare Mask Less Than or Equal To Zero (Signed Integer) 266#---------------------------------------------------------------------- 267# CHECK: cmle v5.2d, v14.2d, #0x0 2680xc5 0x99 0xe0 0x6e 269 270#---------------------------------------------------------------------- 271# Vector Compare Mask Less Than Zero (Signed Integer) 272#---------------------------------------------------------------------- 273# CHECK: cmlt v13.8h, v11.8h, #0x0 2740x6d 0xa9 0x60 0x4e 275 276#---------------------------------------------------------------------- 277# Vector Compare Mask Equal to Zero (Floating Point) 278#---------------------------------------------------------------------- 279# CHECK: fcmeq v15.2s, v21.2s, #0.0 2800xaf 0xda 0xa0 0x0e 281 282#---------------------------------------------------------------------- 283# Vector Compare Mask Greater Than or Equal to Zero (Floating Point) 284#---------------------------------------------------------------------- 285# CHECK: fcmge v14.2d, v13.2d, #0.0 2860xae 0xc9 0xe0 0x6e 287 288#---------------------------------------------------------------------- 289# Vector Compare Mask Greater Than Zero (Floating Point) 290#---------------------------------------------------------------------- 291# CHECK: fcmgt v9.4s, v23.4s, #0.0 2920xe9 0xca 0xa0 0x4e 293 294#---------------------------------------------------------------------- 295# Vector Compare Mask Less Than or Equal To Zero (Floating Point) 296#---------------------------------------------------------------------- 297# CHECK: fcmle v11.2d, v6.2d, #0.0 2980xcb 0xd8 0xe0 0x6e 299 300#---------------------------------------------------------------------- 301# Vector Compare Mask Less Than Zero (Floating Point) 302#---------------------------------------------------------------------- 303# CHECK: fcmlt v12.4s, v25.4s, #0.0 3040x2c 0xeb 0xa0 0x4e 305 306 307#------------------------------------------------------------------------------ 308# Vector Integer Halving Add (Signed) 309# Vector Integer Halving Add (Unsigned) 310# Vector Integer Halving Sub (Signed) 311# Vector Integer Halving Sub (Unsigned) 312#------------------------------------------------------------------------------ 313# CHECK: shadd v0.8b, v31.8b, v29.8b 314# CHECK: uhadd v15.16b, v16.16b, v17.16b 315# CHECK: shsub v0.4h, v1.4h, v2.4h 316# CHECK: uhadd v5.8h, v7.8h, v8.8h 317# CHECK: shsub v9.2s, v11.2s, v21.2s 318# CHECK: uhsub v22.4s, v30.4s, v19.4s 3190xe0 0x07 0x3d 0x0e 3200x0f 0x06 0x31 0x6e 3210x20 0x24 0x62 0x0e 3220xe5 0x04 0x68 0x6e 3230x69 0x25 0xb5 0x0e 3240xd6 0x27 0xb3 0x6e 325 326#------------------------------------------------------------------------------ 327# Vector Integer Rouding Halving Add (Signed) 328# Vector Integer Rouding Halving Add (Unsigned) 329#------------------------------------------------------------------------------ 330# CHECK: srhadd v3.8b, v5.8b, v7.8b 331# CHECK: urhadd v7.16b, v17.16b, v27.16b 332# CHECK: srhadd v10.4h, v11.4h, v13.4h 333# CHECK: urhadd v1.8h, v2.8h, v3.8h 334# CHECK: srhadd v4.2s, v5.2s, v6.2s 335# CHECK: urhadd v7.4s, v7.4s, v7.4s 3360xa3 0x14 0x27 0x0e 3370x27 0x16 0x3b 0x6e 3380x6a 0x15 0x6d 0x0e 3390x41 0x14 0x63 0x6e 3400xa4 0x14 0xa6 0x0e 3410xe7 0x14 0xa7 0x6e 342 343#------------------------------------------------------------------------------ 344# Vector Integer Saturating Add (Signed) 345# Vector Integer Saturating Add (Unsigned) 346# Vector Integer Saturating Sub (Signed) 347# Vector Integer Saturating Sub (Unsigned) 348#------------------------------------------------------------------------------ 349# CHECK: sqsub v0.8b, v1.8b, v2.8b 350# CHECK: sqadd v0.16b, v1.16b, v2.16b 351# CHECK: uqsub v0.4h, v1.4h, v2.4h 352# CHECK: uqadd v0.8h, v1.8h, v2.8h 353# CHECK: sqadd v0.2s, v1.2s, v2.2s 354# CHECK: sqsub v0.4s, v1.4s, v2.4s 355# CHECK: sqsub v0.2d, v1.2d, v2.2d 3560x20 0x2c 0x22 0x0e 3570x20 0x0c 0x22 0x4e 3580x20 0x2c 0x62 0x2e 3590x20 0x0c 0x62 0x6e 3600x20 0x0c 0xa2 0x0e 3610x20 0x2c 0xa2 0x4e 3620x20 0x2c 0xe2 0x4e 363 364#------------------------------------------------------------------------------ 365# Scalar Integer Saturating Add (Signed) 366# Scalar Integer Saturating Add (Unsigned) 367# Scalar Integer Saturating Sub (Signed) 368# Scalar Integer Saturating Add (Unsigned) 369#------------------------------------------------------------------------------ 370# CHECK: sqadd b20, b11, b15 371# CHECK: uqadd h0, h1, h5 372# CHECK: sqsub s20, s10, s7 373# CHECK: uqsub d16, d16, d16 3740x74 0x0d 0x2f 0x5e 3750x20 0x0c 0x65 0x7e 3760x54 0x2d 0xa7 0x5e 3770x10 0x2e 0xf0 0x7e 378 379 380#---------------------------------------------------------------------- 381# Vector Shift Left (Signed and Unsigned Integer) 382#---------------------------------------------------------------------- 383# CHECK: sshl v10.8b, v15.8b, v22.8b 384# CHECK: ushl v10.16b, v5.16b, v2.16b 385# CHECK: sshl v10.4h, v15.4h, v22.4h 386# CHECK: ushl v10.8h, v5.8h, v2.8h 387# CHECK: sshl v10.2s, v15.2s, v22.2s 388# CHECK: ushl v10.4s, v5.4s, v2.4s 389# CHECK: sshl v0.2d, v1.2d, v2.2d 3900xea 0x45 0x36 0x0e 3910xaa 0x44 0x22 0x6e 3920xea 0x45 0x76 0x0e 3930xaa 0x44 0x62 0x6e 3940xea 0x45 0xb6 0x0e 3950xaa 0x44 0xa2 0x6e 3960x20 0x44 0xe2 0x4e 397 398#---------------------------------------------------------------------- 399# Vector Saturating Shift Left (Signed and Unsigned Integer) 400#---------------------------------------------------------------------- 401# CHECK: sqshl v1.8b, v15.8b, v22.8b 402# CHECK: uqshl v2.16b, v14.16b, v23.16b 403# CHECK: sqshl v3.4h, v13.4h, v24.4h 404# CHECK: uqshl v4.8h, v12.8h, v25.8h 405# CHECK: sqshl v5.2s, v11.2s, v26.2s 406# CHECK: uqshl v6.4s, v10.4s, v27.4s 407# CHECK: uqshl v0.2d, v1.2d, v2.2d 4080xe1 0x4d 0x36 0x0e 4090xc2 0x4d 0x37 0x6e 4100xa3 0x4d 0x78 0x0e 4110x84 0x4d 0x79 0x6e 4120x65 0x4d 0xba 0x0e 4130x46 0x4d 0xbb 0x6e 4140x20 0x4c 0xe2 0x6e 415 416#---------------------------------------------------------------------- 417# Vector Rouding Shift Left (Signed and Unsigned Integer) 418#---------------------------------------------------------------------- 419# CHECK: srshl v10.8b, v5.8b, v22.8b 420# CHECK: urshl v10.16b, v5.16b, v2.16b 421# CHECK: srshl v1.4h, v5.4h, v31.4h 422# CHECK: urshl v1.8h, v5.8h, v2.8h 423# CHECK: srshl v10.2s, v15.2s, v2.2s 424# CHECK: urshl v1.4s, v5.4s, v2.4s 425# CHECK: urshl v0.2d, v1.2d, v2.2d 4260xaa 0x54 0x36 0x0e 4270xaa 0x54 0x22 0x6e 4280xa1 0x54 0x7f 0x0e 4290xa1 0x54 0x62 0x6e 4300xea 0x55 0xa2 0x0e 4310xa1 0x54 0xa2 0x6e 4320x20 0x54 0xe2 0x6e 433 434#---------------------------------------------------------------------- 435# Vector Saturating Rouding Shift Left (Signed and Unsigned Integer) 436#---------------------------------------------------------------------- 437# CHECK: sqrshl v1.8b, v15.8b, v22.8b 438# CHECK: uqrshl v2.16b, v14.16b, v23.16b 439# CHECK: sqrshl v3.4h, v13.4h, v24.4h 440# CHECK: uqrshl v4.8h, v12.8h, v25.8h 441# CHECK: sqrshl v5.2s, v11.2s, v26.2s 442# CHECK: uqrshl v6.4s, v10.4s, v27.4s 443# CHECK: uqrshl v6.4s, v10.4s, v27.4s 4440xe1 0x5d 0x36 0x0e 4450xc2 0x5d 0x37 0x6e 4460xa3 0x5d 0x78 0x0e 4470x84 0x5d 0x79 0x6e 4480x65 0x5d 0xba 0x0e 4490x46 0x5d 0xbb 0x6e 4500x46 0x5d 0xbb 0x6e 451 452#---------------------------------------------------------------------- 453# Scalar Integer Shift Left (Signed, Unsigned) 454#---------------------------------------------------------------------- 455# CHECK: sshl d31, d31, d31 456# CHECK: ushl d0, d0, d0 4570xff 0x47 0xff 0x5e 4580x00 0x44 0xe0 0x7e 459 460#---------------------------------------------------------------------- 461# Scalar Integer Saturating Shift Left (Signed, Unsigned) 462#---------------------------------------------------------------------- 463# CHECK: sqshl d31, d31, d31 464# CHECK: uqshl s23, s20, s16 465# CHECK: sqshl h3, h4, h15 466# CHECK: uqshl b11, b20, b30 4670xff 0x4f 0xff 0x5e 4680x97 0x4e 0xb0 0x7e 4690x83 0x4c 0x6f 0x5e 4700x8b 0x4e 0x3e 0x7e 471 472#---------------------------------------------------------------------- 473# Scalar Integer Rouding Shift Left (Signed, Unsigned) 474#---------------------------------------------------------------------- 475# CHECK: srshl d16, d16, d16 476# CHECK: urshl d8, d7, d4 4770x10 0x56 0xf0 0x5e 4780xe8 0x54 0xe4 0x7e 479 480#---------------------------------------------------------------------- 481# Scalar Integer Saturating Rounding Shift Left (Signed, Unsigned) 482#---------------------------------------------------------------------- 483# CHECK: sqrshl d31, d31, d31 484# CHECK: uqrshl s23, s20, s16 485# CHECK: sqrshl h3, h4, h15 486# CHECK: uqrshl b11, b20, b30 4870xff 0x5f 0xff 0x5e 4880x97 0x5e 0xb0 0x7e 4890x83 0x5c 0x6f 0x5e 4900x8b 0x5e 0x3e 0x7e 491 492#---------------------------------------------------------------------- 493# Vector Maximum (Signed and Unsigned Integer) 494#---------------------------------------------------------------------- 495# CHECK: smax v1.8b, v15.8b, v22.8b 496# CHECK: umax v2.16b, v14.16b, v23.16b 497# CHECK: smax v3.4h, v13.4h, v24.4h 498# CHECK: umax v4.8h, v12.8h, v25.8h 499# CHECK: smax v5.2s, v11.2s, v26.2s 500# CHECK: umax v6.4s, v10.4s, v27.4s 5010xe1 0x65 0x36 0x0e 5020xc2 0x65 0x37 0x6e 5030xa3 0x65 0x78 0x0e 5040x84 0x65 0x79 0x6e 5050x65 0x65 0xba 0x0e 5060x46 0x65 0xbb 0x6e 507 508#---------------------------------------------------------------------- 509# Vector Minimum (Signed and Unsigned Integer) 510#---------------------------------------------------------------------- 511# CHECK: umin v1.8b, v15.8b, v22.8b 512# CHECK: smin v2.16b, v14.16b, v23.16b 513# CHECK: umin v3.4h, v13.4h, v24.4h 514# CHECK: smin v4.8h, v12.8h, v25.8h 515# CHECK: umin v5.2s, v11.2s, v26.2s 516# CHECK: smin v6.4s, v10.4s, v27.4s 5170xe1 0x6d 0x36 0x2e 5180xc2 0x6d 0x37 0x4e 5190xa3 0x6d 0x78 0x2e 5200x84 0x6d 0x79 0x4e 5210x65 0x6d 0xba 0x2e 5220x46 0x6d 0xbb 0x4e 523 524#---------------------------------------------------------------------- 525# Vector Maximum (Floating Point) 526#---------------------------------------------------------------------- 527# CHECK: fmax v29.2s, v28.2s, v25.2s 528# CHECK: fmax v9.4s, v8.4s, v5.4s 529# CHECK: fmax v11.2d, v10.2d, v7.2d 5300x9d 0xf7 0x39 0x0e 5310x09 0xf5 0x25 0x4e 5320x4b 0xf5 0x67 0x4e 533 534#---------------------------------------------------------------------- 535# Vector Minimum (Floating Point) 536#---------------------------------------------------------------------- 537# CHECK: fmin v29.2s, v28.2s, v25.2s 538# CHECK: fmin v9.4s, v8.4s, v5.4s 539# CHECK: fmin v11.2d, v10.2d, v7.2d 5400x9d 0xf7 0xb9 0x0e 5410x09 0xf5 0xa5 0x4e 5420x4b 0xf5 0xe7 0x4e 543 544#---------------------------------------------------------------------- 545# Vector maxNum (Floating Point) 546#---------------------------------------------------------------------- 547# CHECK: fmaxnm v9.2s, v8.2s, v5.2s 548# CHECK: fmaxnm v9.4s, v8.4s, v5.4s 549# CHECK: fmaxnm v11.2d, v10.2d, v7.2d 5500x09 0xc5 0x25 0x0e 5510x09 0xc5 0x25 0x4e 5520x4b 0xc5 0x67 0x4e 553 554#---------------------------------------------------------------------- 555# Vector minNum (Floating Point) 556#---------------------------------------------------------------------- 557# CHECK: fminnm v2.2s, v8.2s, v25.2s 558# CHECK: fminnm v9.4s, v8.4s, v5.4s 559# CHECK: fminnm v11.2d, v10.2d, v7.2d 5600x02 0xc5 0xb9 0x0e 5610x09 0xc5 0xa5 0x4e 5620x4b 0xc5 0xe7 0x4e 563 564 565#---------------------------------------------------------------------- 566# Vector Maximum Pairwise (Signed and Unsigned Integer) 567#---------------------------------------------------------------------- 568# CHECK: smaxp v1.8b, v15.8b, v22.8b 569# CHECK: umaxp v2.16b, v14.16b, v23.16b 570# CHECK: smaxp v3.4h, v13.4h, v24.4h 571# CHECK: umaxp v4.8h, v12.8h, v25.8h 572# CHECK: smaxp v5.2s, v11.2s, v26.2s 573# CHECK: umaxp v6.4s, v10.4s, v27.4s 5740xe1 0xa5 0x36 0x0e 5750xc2 0xa5 0x37 0x6e 5760xa3 0xa5 0x78 0x0e 5770x84 0xa5 0x79 0x6e 5780x65 0xa5 0xba 0x0e 5790x46 0xa5 0xbb 0x6e 580 581#---------------------------------------------------------------------- 582# Vector Minimum Pairwise (Signed and Unsigned Integer) 583#---------------------------------------------------------------------- 584# CHECK: uminp v1.8b, v15.8b, v22.8b 585# CHECK: sminp v2.16b, v14.16b, v23.16b 586# CHECK: uminp v3.4h, v13.4h, v24.4h 587# CHECK: sminp v4.8h, v12.8h, v25.8h 588# CHECK: uminp v5.2s, v11.2s, v26.2s 589# CHECK: sminp v6.4s, v10.4s, v27.4s 5900xe1 0xad 0x36 0x2e 5910xc2 0xad 0x37 0x4e 5920xa3 0xad 0x78 0x2e 5930x84 0xad 0x79 0x4e 5940x65 0xad 0xba 0x2e 5950x46 0xad 0xbb 0x4e 596 597#---------------------------------------------------------------------- 598# Vector Maximum Pairwise (Floating Point) 599#---------------------------------------------------------------------- 600# CHECK: fmaxp v29.2s, v28.2s, v25.2s 601# CHECK: fmaxp v9.4s, v8.4s, v5.4s 602# CHECK: fmaxp v11.2d, v10.2d, v7.2d 6030x9d 0xf7 0x39 0x2e 6040x09 0xf5 0x25 0x6e 6050x4b 0xf5 0x67 0x6e 606 607#---------------------------------------------------------------------- 608# Vector Minimum Pairwise (Floating Point) 609#---------------------------------------------------------------------- 610# CHECK: fminp v29.2s, v28.2s, v25.2s 611# CHECK: fminp v9.4s, v8.4s, v5.4s 612# CHECK: fminp v11.2d, v10.2d, v7.2d 6130x9d 0xf7 0xb9 0x2e 6140x09 0xf5 0xa5 0x6e 6150x4b 0xf5 0xe7 0x6e 616 617#---------------------------------------------------------------------- 618# Vector maxNum Pairwise (Floating Point) 619#---------------------------------------------------------------------- 620# CHECK: fmaxnmp v9.2s, v8.2s, v5.2s 621# CHECK: fmaxnmp v9.4s, v8.4s, v5.4s 622# CHECK: fmaxnmp v11.2d, v10.2d, v7.2d 6230x09 0xc5 0x25 0x2e 6240x09 0xc5 0x25 0x6e 6250x4b 0xc5 0x67 0x6e 626 627#---------------------------------------------------------------------- 628# Vector minNum Pairwise (Floating Point) 629#---------------------------------------------------------------------- 630# CHECK: fminnmp v2.2s, v8.2s, v25.2s 631# CHECK: fminnmp v9.4s, v8.4s, v5.4s 632# CHECK: fminnmp v11.2d, v10.2d, v7.2d 6330x02 0xc5 0xb9 0x2e 6340x09 0xc5 0xa5 0x6e 6350x4b 0xc5 0xe7 0x6e 636 637#------------------------------------------------------------------------------ 638# Vector Add Pairwise (Integer) 639#------------------------------------------------------------------------------ 640# CHECK: addp v31.8b, v31.8b, v31.8b 641# CHECK: addp v0.2d, v0.2d, v0.2d 6420xff 0xbf 0x3f 0x0e 6430x00 0xbc 0xe0 0x4e 644 645#------------------------------------------------------------------------------ 646# Vector Add Pairwise (Floating Point) 647#------------------------------------------------------------------------------ 648# CHECK: faddp v0.4s, v0.4s, v0.4s 649# CHECK: faddp v31.2s, v31.2s, v31.2s 6500x00 0xd4 0x20 0x6e 6510xff 0xd7 0x3f 0x2e 652 653 654#------------------------------------------------------------------------------ 655# Vector Saturating Doubling Multiply High 656# Vector Saturating Rouding Doubling Multiply High 657#------------------------------------------------------------------------------ 658# CHECK: sqdmulh v31.2s, v31.2s, v31.2s 659# CHECK: sqdmulh v5.4s, v7.4s, v9.4s 660# CHECK: sqrdmulh v31.4h, v3.4h, v13.4h 661# CHECK: sqrdmulh v0.8h, v10.8h, v20.8h 6620xff 0xb7 0xbf 0x0e 6630xe5 0xb4 0xa9 0x4e 6640x7f 0xb4 0x6d 0x2e 6650x40 0xb5 0x74 0x6e 666 667#------------------------------------------------------------------------------ 668# Vector Multiply Extended 669#------------------------------------------------------------------------------ 670# CHECK: fmulx v1.2s, v22.2s, v2.2s 671# CHECK: fmulx v21.4s, v15.4s, v3.4s 672# CHECK: fmulx v11.2d, v5.2d, v23.2d 6730xc1 0xde 0x22 0x0e 6740xf5 0xdd 0x23 0x4e 6750xab 0xdc 0x77 0x4e 676 677#---------------------------------------------------------------------- 678# Vector Shift Left by Immediate 679#---------------------------------------------------------------------- 680# CHECK: shl v0.4h, v1.4h, #3 681# CHECK: shl v0.16b, v1.16b, #3 682# CHECK: shl v0.4s, v1.4s, #3 683# CHECK: shl v0.2d, v1.2d, #3 6840x20,0x54,0x13,0x0f 6850x20,0x54,0x0b,0x4f 6860x20,0x54,0x23,0x4f 6870x20,0x54,0x43,0x4f 688 689#---------------------------------------------------------------------- 690# Vector Shift Left Long (Signed, Unsigned) by Immediate 691#---------------------------------------------------------------------- 692# CHECK: sshll v0.2d, v1.2s, #3 693# CHECK: sshll2 v0.4s, v1.8h, #3 694# CHECK: ushll v0.4s, v1.4h, #3 695# CHECK: ushll2 v0.8h, v1.16b, #3 6960x20 0xa4 0x23 0x0f 6970x20 0xa4 0x13 0x4f 6980x20 0xa4 0x13 0x2f 6990x20 0xa4 0x0b 0x6f 700 701#----------------------------------------------------------------------------- 702#Integer shift right (Signed) 703#----------------------------------------------------------------------------- 704# CHECK: sshr v0.8b, v1.8b, #3 705# CHECK: sshr v0.4h, v1.4h, #3 706# CHECK: sshr v0.2s, v1.2s, #3 707# CHECK: sshr v0.16b, v1.16b, #3 708# CHECK: sshr v0.8h, v1.8h, #3 709# CHECK: sshr v0.4s, v1.4s, #3 710# CHECK: sshr v0.2d, v1.2d, #3 7110x20,0x04,0x0d,0x0f 7120x20,0x04,0x1d,0x0f 7130x20,0x04,0x3d,0x0f 7140x20,0x04,0x0d,0x4f 7150x20,0x04,0x1d,0x4f 7160x20,0x04,0x3d,0x4f 7170x20,0x04,0x7d,0x4f 718 719#----------------------------------------------------------------------------- 720#Integer shift right (Unsigned) 721#----------------------------------------------------------------------------- 722# CHECK: ushr v0.8b, v1.8b, #3 723# CHECK: ushr v0.4h, v1.4h, #3 724# CHECK: ushr v0.2s, v1.2s, #3 725# CHECK: ushr v0.16b, v1.16b, #3 726# CHECK: ushr v0.8h, v1.8h, #3 727# CHECK: ushr v0.4s, v1.4s, #3 728# CHECK: ushr v0.2d, v1.2d, #3 7290x20,0x04,0x0d,0x2f 7300x20,0x04,0x1d,0x2f 7310x20,0x04,0x3d,0x2f 7320x20,0x04,0x0d,0x6f 7330x20,0x04,0x1d,0x6f 7340x20,0x04,0x3d,0x6f 7350x20,0x04,0x7d,0x6f 736 737#----------------------------------------------------------------------------- 738#Integer shift right and accumulate (Signed) 739#----------------------------------------------------------------------------- 740# CHECK: ssra v0.8b, v1.8b, #3 741# CHECK: ssra v0.4h, v1.4h, #3 742# CHECK: ssra v0.2s, v1.2s, #3 743# CHECK: ssra v0.16b, v1.16b, #3 744# CHECK: ssra v0.8h, v1.8h, #3 745# CHECK: ssra v0.4s, v1.4s, #3 746# CHECK: ssra v0.2d, v1.2d, #3 7470x20,0x14,0x0d,0x0f 7480x20,0x14,0x1d,0x0f 7490x20,0x14,0x3d,0x0f 7500x20,0x14,0x0d,0x4f 7510x20,0x14,0x1d,0x4f 7520x20,0x14,0x3d,0x4f 7530x20,0x14,0x7d,0x4f 754 755#----------------------------------------------------------------------------- 756#Integer shift right and accumulate (Unsigned) 757#----------------------------------------------------------------------------- 758# CHECK: usra v0.8b, v1.8b, #3 759# CHECK: usra v0.4h, v1.4h, #3 760# CHECK: usra v0.2s, v1.2s, #3 761# CHECK: usra v0.16b, v1.16b, #3 762# CHECK: usra v0.8h, v1.8h, #3 763# CHECK: usra v0.4s, v1.4s, #3 764# CHECK: usra v0.2d, v1.2d, #3 7650x20,0x14,0x0d,0x2f 7660x20,0x14,0x1d,0x2f 7670x20,0x14,0x3d,0x2f 7680x20,0x14,0x0d,0x6f 7690x20,0x14,0x1d,0x6f 7700x20,0x14,0x3d,0x6f 7710x20,0x14,0x7d,0x6f 772 773#----------------------------------------------------------------------------- 774#Integer rounding shift right (Signed) 775#----------------------------------------------------------------------------- 776# CHECK: srshr v0.8b, v1.8b, #3 777# CHECK: srshr v0.4h, v1.4h, #3 778# CHECK: srshr v0.2s, v1.2s, #3 779# CHECK: srshr v0.16b, v1.16b, #3 780# CHECK: srshr v0.8h, v1.8h, #3 781# CHECK: srshr v0.4s, v1.4s, #3 782# CHECK: srshr v0.2d, v1.2d, #3 7830x20,0x24,0x0d,0x0f 7840x20,0x24,0x1d,0x0f 7850x20,0x24,0x3d,0x0f 7860x20,0x24,0x0d,0x4f 7870x20,0x24,0x1d,0x4f 7880x20,0x24,0x3d,0x4f 7890x20,0x24,0x7d,0x4f 790 791#----------------------------------------------------------------------------- 792#Integer rounding shift right (Unsigned) 793#----------------------------------------------------------------------------- 794# CHECK: urshr v0.8b, v1.8b, #3 795# CHECK: urshr v0.4h, v1.4h, #3 796# CHECK: urshr v0.2s, v1.2s, #3 797# CHECK: urshr v0.16b, v1.16b, #3 798# CHECK: urshr v0.8h, v1.8h, #3 799# CHECK: urshr v0.4s, v1.4s, #3 800# CHECK: urshr v0.2d, v1.2d, #3 8010x20,0x24,0x0d,0x2f 8020x20,0x24,0x1d,0x2f 8030x20,0x24,0x3d,0x2f 8040x20,0x24,0x0d,0x6f 8050x20,0x24,0x1d,0x6f 8060x20,0x24,0x3d,0x6f 8070x20,0x24,0x7d,0x6f 808 809#----------------------------------------------------------------------------- 810#Integer rounding shift right and accumulate (Signed) 811#----------------------------------------------------------------------------- 812# CHECK: srsra v0.8b, v1.8b, #3 813# CHECK: srsra v0.4h, v1.4h, #3 814# CHECK: srsra v0.2s, v1.2s, #3 815# CHECK: srsra v0.16b, v1.16b, #3 816# CHECK: srsra v0.8h, v1.8h, #3 817# CHECK: srsra v0.4s, v1.4s, #3 818# CHECK: srsra v0.2d, v1.2d, #3 8190x20,0x34,0x0d,0x0f 8200x20,0x34,0x1d,0x0f 8210x20,0x34,0x3d,0x0f 8220x20,0x34,0x0d,0x4f 8230x20,0x34,0x1d,0x4f 8240x20,0x34,0x3d,0x4f 8250x20,0x34,0x7d,0x4f 826 827#----------------------------------------------------------------------------- 828#Integer rounding shift right and accumulate (Unsigned) 829#----------------------------------------------------------------------------- 830# CHECK: ursra v0.8b, v1.8b, #3 831# CHECK: ursra v0.4h, v1.4h, #3 832# CHECK: ursra v0.2s, v1.2s, #3 833# CHECK: ursra v0.16b, v1.16b, #3 834# CHECK: ursra v0.8h, v1.8h, #3 835# CHECK: ursra v0.4s, v1.4s, #3 836# CHECK: ursra v0.2d, v1.2d, #3 8370x20,0x34,0x0d,0x2f 8380x20,0x34,0x1d,0x2f 8390x20,0x34,0x3d,0x2f 8400x20,0x34,0x0d,0x6f 8410x20,0x34,0x1d,0x6f 8420x20,0x34,0x3d,0x6f 8430x20,0x34,0x7d,0x6f 844 845#----------------------------------------------------------------------------- 846#Integer shift right and insert 847#----------------------------------------------------------------------------- 848# CHECK: sri v0.8b, v1.8b, #3 849# CHECK: sri v0.4h, v1.4h, #3 850# CHECK: sri v0.2s, v1.2s, #3 851# CHECK: sri v0.16b, v1.16b, #3 852# CHECK: sri v0.8h, v1.8h, #3 853# CHECK: sri v0.4s, v1.4s, #3 854# CHECK: sri v0.2d, v1.2d, #3 8550x20,0x44,0x0d,0x2f 8560x20,0x44,0x1d,0x2f 8570x20,0x44,0x3d,0x2f 8580x20,0x44,0x0d,0x6f 8590x20,0x44,0x1d,0x6f 8600x20,0x44,0x3d,0x6f 8610x20,0x44,0x7d,0x6f 862 863#----------------------------------------------------------------------------- 864#Integer shift left and insert 865#----------------------------------------------------------------------------- 866# CHECK: sli v0.8b, v1.8b, #3 867# CHECK: sli v0.4h, v1.4h, #3 868# CHECK: sli v0.2s, v1.2s, #3 869# CHECK: sli v0.16b, v1.16b, #3 870# CHECK: sli v0.8h, v1.8h, #3 871# CHECK: sli v0.4s, v1.4s, #3 872# CHECK: sli v0.2d, v1.2d, #3 8730x20,0x54,0x0b,0x2f 8740x20,0x54,0x13,0x2f 8750x20,0x54,0x23,0x2f 8760x20,0x54,0x0b,0x6f 8770x20,0x54,0x13,0x6f 8780x20,0x54,0x23,0x6f 8790x20,0x54,0x43,0x6f 880 881#----------------------------------------------------------------------------- 882#Integer saturating shift left unsigned 883#----------------------------------------------------------------------------- 884# CHECK: sqshlu v0.8b, v1.8b, #3 885# CHECK: sqshlu v0.4h, v1.4h, #3 886# CHECK: sqshlu v0.2s, v1.2s, #3 887# CHECK: sqshlu v0.16b, v1.16b, #3 888# CHECK: sqshlu v0.8h, v1.8h, #3 889# CHECK: sqshlu v0.4s, v1.4s, #3 890# CHECK: sqshlu v0.2d, v1.2d, #3 8910x20,0x64,0x0b,0x2f 8920x20,0x64,0x13,0x2f 8930x20,0x64,0x23,0x2f 8940x20,0x64,0x0b,0x6f 8950x20,0x64,0x13,0x6f 8960x20,0x64,0x23,0x6f 8970x20,0x64,0x43,0x6f 898 899#----------------------------------------------------------------------------- 900#Integer saturating shift left (Signed) 901#----------------------------------------------------------------------------- 902# CHECK: sqshl v0.8b, v1.8b, #3 903# CHECK: sqshl v0.4h, v1.4h, #3 904# CHECK: sqshl v0.2s, v1.2s, #3 905# CHECK: sqshl v0.16b, v1.16b, #3 906# CHECK: sqshl v0.8h, v1.8h, #3 907# CHECK: sqshl v0.4s, v1.4s, #3 908# CHECK: sqshl v0.2d, v1.2d, #3 9090x20,0x74,0x0b,0x0f 9100x20,0x74,0x13,0x0f 9110x20,0x74,0x23,0x0f 9120x20,0x74,0x0b,0x4f 9130x20,0x74,0x13,0x4f 9140x20,0x74,0x23,0x4f 9150x20,0x74,0x43,0x4f 916 917#----------------------------------------------------------------------------- 918#Integer saturating shift left (Unsigned) 919#----------------------------------------------------------------------------- 920# CHECK: uqshl v0.8b, v1.8b, #3 921# CHECK: uqshl v0.4h, v1.4h, #3 922# CHECK: uqshl v0.2s, v1.2s, #3 923# CHECK: uqshl v0.16b, v1.16b, #3 924# CHECK: uqshl v0.8h, v1.8h, #3 925# CHECK: uqshl v0.4s, v1.4s, #3 926# CHECK: uqshl v0.2d, v1.2d, #3 9270x20,0x74,0x0b,0x2f 9280x20,0x74,0x13,0x2f 9290x20,0x74,0x23,0x2f 9300x20,0x74,0x0b,0x6f 9310x20,0x74,0x13,0x6f 9320x20,0x74,0x23,0x6f 9330x20,0x74,0x43,0x6f 934 935#----------------------------------------------------------------------------- 936#Integer shift right narrow 937#----------------------------------------------------------------------------- 938# CHECK: shrn v0.8b, v1.8h, #3 939# CHECK: shrn v0.4h, v1.4s, #3 940# CHECK: shrn v0.2s, v1.2d, #3 941# CHECK: shrn2 v0.16b, v1.8h, #3 942# CHECK: shrn2 v0.8h, v1.4s, #3 943# CHECK: shrn2 v0.4s, v1.2d, #3 9440x20,0x84,0x0d,0x0f 9450x20,0x84,0x1d,0x0f 9460x20,0x84,0x3d,0x0f 9470x20,0x84,0x0d,0x4f 9480x20,0x84,0x1d,0x4f 9490x20,0x84,0x3d,0x4f 950 951#----------------------------------------------------------------------------- 952#Integer saturating shift right unsigned narrow (Signed) 953#----------------------------------------------------------------------------- 954# CHECK: sqshrun v0.8b, v1.8h, #3 955# CHECK: sqshrun v0.4h, v1.4s, #3 956# CHECK: sqshrun v0.2s, v1.2d, #3 957# CHECK: sqshrun2 v0.16b, v1.8h, #3 958# CHECK: sqshrun2 v0.8h, v1.4s, #3 959# CHECK: sqshrun2 v0.4s, v1.2d, #3 9600x20,0x84,0x0d,0x2f 9610x20,0x84,0x1d,0x2f 9620x20,0x84,0x3d,0x2f 9630x20,0x84,0x0d,0x6f 9640x20,0x84,0x1d,0x6f 9650x20,0x84,0x3d,0x6f 966 967#----------------------------------------------------------------------------- 968#Integer rounding shift right narrow 969#----------------------------------------------------------------------------- 970# CHECK: rshrn v0.8b, v1.8h, #3 971# CHECK: rshrn v0.4h, v1.4s, #3 972# CHECK: rshrn v0.2s, v1.2d, #3 973# CHECK: rshrn2 v0.16b, v1.8h, #3 974# CHECK: rshrn2 v0.8h, v1.4s, #3 975# CHECK: rshrn2 v0.4s, v1.2d, #3 9760x20,0x8c,0x0d,0x0f 9770x20,0x8c,0x1d,0x0f 9780x20,0x8c,0x3d,0x0f 9790x20,0x8c,0x0d,0x4f 9800x20,0x8c,0x1d,0x4f 9810x20,0x8c,0x3d,0x4f 982 983#----------------------------------------------------------------------------- 984#Integer saturating shift right rounded unsigned narrow (Signed) 985#----------------------------------------------------------------------------- 986# CHECK: sqrshrun v0.8b, v1.8h, #3 987# CHECK: sqrshrun v0.4h, v1.4s, #3 988# CHECK: sqrshrun v0.2s, v1.2d, #3 989# CHECK: sqrshrun2 v0.16b, v1.8h, #3 990# CHECK: sqrshrun2 v0.8h, v1.4s, #3 991# CHECK: sqrshrun2 v0.4s, v1.2d, #3 9920x20,0x8c,0x0d,0x2f 9930x20,0x8c,0x1d,0x2f 9940x20,0x8c,0x3d,0x2f 9950x20,0x8c,0x0d,0x6f 9960x20,0x8c,0x1d,0x6f 9970x20,0x8c,0x3d,0x6f 998 999#----------------------------------------------------------------------------- 1000#Integer saturating shift right narrow (Signed) 1001#----------------------------------------------------------------------------- 1002# CHECK: sqshrn v0.8b, v1.8h, #3 1003# CHECK: sqshrn v0.4h, v1.4s, #3 1004# CHECK: sqshrn v0.2s, v1.2d, #3 1005# CHECK: sqshrn2 v0.16b, v1.8h, #3 1006# CHECK: sqshrn2 v0.8h, v1.4s, #3 1007# CHECK: sqshrn2 v0.4s, v1.2d, #3 10080x20,0x94,0x0d,0x0f 10090x20,0x94,0x1d,0x0f 10100x20,0x94,0x3d,0x0f 10110x20,0x94,0x0d,0x4f 10120x20,0x94,0x1d,0x4f 10130x20,0x94,0x3d,0x4f 1014 1015#----------------------------------------------------------------------------- 1016#Integer saturating shift right narrow (Unsigned) 1017#----------------------------------------------------------------------------- 1018# CHECK: uqshrn v0.8b, v1.8h, #3 1019# CHECK: uqshrn v0.4h, v1.4s, #3 1020# CHECK: uqshrn v0.2s, v1.2d, #3 1021# CHECK: uqshrn2 v0.16b, v1.8h, #3 1022# CHECK: uqshrn2 v0.8h, v1.4s, #3 1023# CHECK: uqshrn2 v0.4s, v1.2d, #3 10240x20,0x94,0x0d,0x2f 10250x20,0x94,0x1d,0x2f 10260x20,0x94,0x3d,0x2f 10270x20,0x94,0x0d,0x6f 10280x20,0x94,0x1d,0x6f 10290x20,0x94,0x3d,0x6f 1030 1031#----------------------------------------------------------------------------- 1032#Integer saturating shift right rounded narrow (Signed) 1033#----------------------------------------------------------------------------- 1034# CHECK: sqrshrn v0.8b, v1.8h, #3 1035# CHECK: sqrshrn v0.4h, v1.4s, #3 1036# CHECK: sqrshrn v0.2s, v1.2d, #3 1037# CHECK: sqrshrn2 v0.16b, v1.8h, #3 1038# CHECK: sqrshrn2 v0.8h, v1.4s, #3 1039# CHECK: sqrshrn2 v0.4s, v1.2d, #3 10400x20,0x9c,0x0d,0x0f 10410x20,0x9c,0x1d,0x0f 10420x20,0x9c,0x3d,0x0f 10430x20,0x9c,0x0d,0x4f 10440x20,0x9c,0x1d,0x4f 10450x20,0x9c,0x3d,0x4f 1046 1047#----------------------------------------------------------------------------- 1048#Integer saturating shift right rounded narrow (Unsigned) 1049#----------------------------------------------------------------------------- 1050# CHECK: uqrshrn v0.8b, v1.8h, #3 1051# CHECK: uqrshrn v0.4h, v1.4s, #3 1052# CHECK: uqrshrn v0.2s, v1.2d, #3 1053# CHECK: uqrshrn2 v0.16b, v1.8h, #3 1054# CHECK: uqrshrn2 v0.8h, v1.4s, #3 1055# CHECK: uqrshrn2 v0.4s, v1.2d, #3 10560x20,0x9c,0x0d,0x2f 10570x20,0x9c,0x1d,0x2f 10580x20,0x9c,0x3d,0x2f 10590x20,0x9c,0x0d,0x6f 10600x20,0x9c,0x1d,0x6f 10610x20,0x9c,0x3d,0x6f 1062 1063#----------------------------------------------------------------------------- 1064#Fixed-point convert to floating-point 1065#----------------------------------------------------------------------------- 1066# CHECK: scvtf v0.2s, v1.2s, #3 1067# CHECK: scvtf v0.4s, v1.4s, #3 1068# CHECK: scvtf v0.2d, v1.2d, #3 1069# CHECK: ucvtf v0.2s, v1.2s, #3 1070# CHECK: ucvtf v0.4s, v1.4s, #3 1071# CHECK: ucvtf v0.2d, v1.2d, #3 1072 10730x20,0xe4,0x3d,0x0f 10740x20,0xe4,0x3d,0x4f 10750x20,0xe4,0x7d,0x4f 10760x20,0xe4,0x3d,0x2f 10770x20,0xe4,0x3d,0x6f 10780x20,0xe4,0x7d,0x6f 1079 1080#----------------------------------------------------------------------------- 1081#Floating-point convert to fixed-point 1082#----------------------------------------------------------------------------- 1083# CHECK: fcvtzs v0.2s, v1.2s, #3 1084# CHECK: fcvtzs v0.4s, v1.4s, #3 1085# CHECK: fcvtzs v0.2d, v1.2d, #3 1086# CHECK: fcvtzu v0.2s, v1.2s, #3 1087# CHECK: fcvtzu v0.4s, v1.4s, #3 1088# CHECK: fcvtzu v0.2d, v1.2d, #3 10890x20,0xfc,0x3d,0x0f 10900x20,0xfc,0x3d,0x4f 10910x20,0xfc,0x7d,0x4f 10920x20,0xfc,0x3d,0x2f 10930x20,0xfc,0x3d,0x6f 10940x20,0xfc,0x7d,0x6f 1095 1096 1097#------------------------------------------------------------------------------ 1098# Vector with 3 operands having different data types 1099#------------------------------------------------------------------------------ 1100 1101#------------------------------------------------------------------------------ 1102# Long 1103#------------------------------------------------------------------------------ 1104 1105#------------------------------------------------------------------------------ 1106# Long - Variant 1 1107#------------------------------------------------------------------------------ 1108 1109# CHECK: saddl v0.8h, v1.8b, v2.8b 1110# CHECK: saddl v0.4s, v1.4h, v2.4h 1111# CHECK: saddl v0.2d, v1.2s, v2.2s 11120x20 0x00 0x22 0x0e 11130x20 0x00 0x62 0x0e 11140x20 0x00 0xa2 0x0e 1115 1116# CHECK: saddl2 v0.4s, v1.8h, v2.8h 1117# CHECK: saddl2 v0.8h, v1.16b, v2.16b 1118# CHECK: saddl2 v0.2d, v1.4s, v2.4s 11190x20 0x00 0x62 0x4e 11200x20 0x00 0x22 0x4e 11210x20 0x00 0xa2 0x4e 1122 1123# CHECK: uaddl v0.8h, v1.8b, v2.8b 1124# CHECK: uaddl v0.4s, v1.4h, v2.4h 1125# CHECK: uaddl v0.2d, v1.2s, v2.2s 11260x20 0x00 0x22 0x2e 11270x20 0x00 0x62 0x2e 11280x20 0x00 0xa2 0x2e 1129 1130# CHECK: uaddl2 v0.8h, v1.16b, v2.16b 1131# CHECK: uaddl2 v0.4s, v1.8h, v2.8h 1132# CHECK: uaddl2 v0.2d, v1.4s, v2.4s 11330x20 0x00 0x22 0x6e 11340x20 0x00 0x62 0x6e 11350x20 0x00 0xa2 0x6e 1136 1137# CHECK: ssubl v0.8h, v1.8b, v2.8b 1138# CHECK: ssubl v0.4s, v1.4h, v2.4h 1139# CHECK: ssubl v0.2d, v1.2s, v2.2s 11400x20 0x20 0x22 0x0e 11410x20 0x20 0x62 0x0e 11420x20 0x20 0xa2 0x0e 1143 1144# CHECK: ssubl2 v0.8h, v1.16b, v2.16b 1145# CHECK: ssubl2 v0.4s, v1.8h, v2.8h 1146# CHECK: ssubl2 v0.2d, v1.4s, v2.4s 11470x20 0x20 0x22 0x4e 11480x20 0x20 0x62 0x4e 11490x20 0x20 0xa2 0x4e 1150 1151# CHECK: usubl v0.8h, v1.8b, v2.8b 1152# CHECK: usubl v0.4s, v1.4h, v2.4h 1153# CHECK: usubl v0.2d, v1.2s, v2.2s 11540x20 0x20 0x22 0x2e 11550x20 0x20 0x62 0x2e 11560x20 0x20 0xa2 0x2e 1157 1158# CHECK: usubl2 v0.8h, v1.16b, v2.16b 1159# CHECK: usubl2 v0.4s, v1.8h, v2.8h 1160# CHECK: usubl2 v0.2d, v1.4s, v2.4s 11610x20 0x20 0x22 0x6e 11620x20 0x20 0x62 0x6e 11630x20 0x20 0xa2 0x6e 1164 1165# CHECK: sabal v0.8h, v1.8b, v2.8b 1166# CHECK: sabal v0.4s, v1.4h, v2.4h 1167# CHECK: sabal v0.2d, v1.2s, v2.2s 11680x20 0x50 0x22 0x0e 11690x20 0x50 0x62 0x0e 11700x20 0x50 0xa2 0x0e 1171 1172# CHECK: sabal2 v0.8h, v1.16b, v2.16b 1173# CHECK: sabal2 v0.4s, v1.8h, v2.8h 1174# CHECK: sabal2 v0.2d, v1.4s, v2.4s 11750x20 0x50 0x22 0x4e 11760x20 0x50 0x62 0x4e 11770x20 0x50 0xa2 0x4e 1178 1179# CHECK: uabal v0.8h, v1.8b, v2.8b 1180# CHECK: uabal v0.4s, v1.4h, v2.4h 1181# CHECK: uabal v0.2d, v1.2s, v2.2s 11820x20 0x50 0x22 0x2e 11830x20 0x50 0x62 0x2e 11840x20 0x50 0xa2 0x2e 1185 1186# CHECK: uabal2 v0.8h, v1.16b, v2.16b 1187# CHECK: uabal2 v0.4s, v1.8h, v2.8h 1188# CHECK: uabal2 v0.2d, v1.4s, v2.4s 11890x20 0x50 0x22 0x6e 11900x20 0x50 0x62 0x6e 11910x20 0x50 0xa2 0x6e 1192 1193# CHECK: sabdl v0.8h, v1.8b, v2.8b 1194# CHECK: sabdl v0.4s, v1.4h, v2.4h 1195# CHECK: sabdl v0.2d, v1.2s, v2.2s 11960x20 0x70 0x22 0x0e 11970x20 0x70 0x62 0x0e 11980x20 0x70 0xa2 0x0e 1199 1200# CHECK: sabdl2 v0.8h, v1.16b, v2.16b 1201# CHECK: sabdl2 v0.4s, v1.8h, v2.8h 1202# CHECK: sabdl2 v0.2d, v1.4s, v2.4s 12030x20 0x70 0x22 0x4e 12040x20 0x70 0x62 0x4e 12050x20 0x70 0xa2 0x4e 1206 1207# CHECK: uabdl v0.8h, v1.8b, v2.8b 1208# CHECK: uabdl v0.4s, v1.4h, v2.4h 1209# CHECK: uabdl v0.2d, v1.2s, v2.2s 12100x20 0x70 0x22 0x2e 12110x20 0x70 0x62 0x2e 12120x20 0x70 0xa2 0x2e 1213 1214# CHECK: uabdl2 v0.8h, v1.16b, v2.16b 1215# CHECK: uabdl2 v0.4s, v1.8h, v2.8h 1216# CHECK: uabdl2 v0.2d, v1.4s, v2.4s 12170x20 0x70 0x22 0x6e 12180x20 0x70 0x62 0x6e 12190x20 0x70 0xa2 0x6e 1220 1221# CHECK: smlal v0.8h, v1.8b, v2.8b 1222# CHECK: smlal v0.4s, v1.4h, v2.4h 1223# CHECK: smlal v0.2d, v1.2s, v2.2s 12240x20 0x80 0x22 0x0e 12250x20 0x80 0x62 0x0e 12260x20 0x80 0xa2 0x0e 1227 1228# CHECK: smlal2 v0.8h, v1.16b, v2.16b 1229# CHECK: smlal2 v0.4s, v1.8h, v2.8h 1230# CHECK: smlal2 v0.2d, v1.4s, v2.4s 12310x20 0x80 0x22 0x4e 12320x20 0x80 0x62 0x4e 12330x20 0x80 0xa2 0x4e 1234 1235# CHECK: umlal v0.8h, v1.8b, v2.8b 1236# CHECK: umlal v0.4s, v1.4h, v2.4h 1237# CHECK: umlal v0.2d, v1.2s, v2.2s 1238 12390x20 0x80 0x22 0x2e 12400x20 0x80 0x62 0x2e 12410x20 0x80 0xa2 0x2e 1242 1243# CHECK: umlal2 v0.8h, v1.16b, v2.16b 1244# CHECK: umlal2 v0.4s, v1.8h, v2.8h 1245# CHECK: umlal2 v0.2d, v1.4s, v2.4s 12460x20 0x80 0x22 0x6e 12470x20 0x80 0x62 0x6e 12480x20 0x80 0xa2 0x6e 1249 1250# CHECK: smlsl v0.8h, v1.8b, v2.8b 1251# CHECK: smlsl v0.4s, v1.4h, v2.4h 1252# CHECK: smlsl v0.2d, v1.2s, v2.2s 12530x20 0xa0 0x22 0x0e 12540x20 0xa0 0x62 0x0e 12550x20 0xa0 0xa2 0x0e 1256 1257# CHECK: smlsl2 v0.8h, v1.16b, v2.16b 1258# CHECK: smlsl2 v0.4s, v1.8h, v2.8h 1259# CHECK: smlsl2 v0.2d, v1.4s, v2.4s 12600x20 0xa0 0x22 0x4e 12610x20 0xa0 0x62 0x4e 12620x20 0xa0 0xa2 0x4e 1263 1264# CHECK: umlsl v0.8h, v1.8b, v2.8b 1265# CHECK: umlsl v0.4s, v1.4h, v2.4h 1266# CHECK: umlsl v0.2d, v1.2s, v2.2s 12670x20 0xa0 0x22 0x2e 12680x20 0xa0 0x62 0x2e 12690x20 0xa0 0xa2 0x2e 1270 1271# CHECK: umlsl2 v0.8h, v1.16b, v2.16b 1272# CHECK: umlsl2 v0.4s, v1.8h, v2.8h 1273# CHECK: umlsl2 v0.2d, v1.4s, v2.4s 12740x20 0xa0 0x22 0x6e 12750x20 0xa0 0x62 0x6e 12760x20 0xa0 0xa2 0x6e 1277 1278# CHECK: smull v0.8h, v1.8b, v2.8b 1279# CHECK: smull v0.4s, v1.4h, v2.4h 1280# CHECK: smull v0.2d, v1.2s, v2.2s 12810x20 0xc0 0x22 0x0e 12820x20 0xc0 0x62 0x0e 12830x20 0xc0 0xa2 0x0e 1284 1285# CHECK: smull2 v0.8h, v1.16b, v2.16b 1286# CHECK: smull2 v0.4s, v1.8h, v2.8h 1287# CHECK: smull2 v0.2d, v1.4s, v2.4s 12880x20 0xc0 0x22 0x4e 12890x20 0xc0 0x62 0x4e 12900x20 0xc0 0xa2 0x4e 1291 1292# CHECK: umull v0.8h, v1.8b, v2.8b 1293# CHECK: umull v0.4s, v1.4h, v2.4h 1294# CHECK: umull v0.2d, v1.2s, v2.2s 12950x20 0xc0 0x22 0x2e 12960x20 0xc0 0x62 0x2e 12970x20 0xc0 0xa2 0x2e 1298 1299# CHECK: umull2 v0.8h, v1.16b, v2.16b 1300# CHECK: umull2 v0.4s, v1.8h, v2.8h 1301# CHECK: umull2 v0.2d, v1.4s, v2.4s 13020x20 0xc0 0x22 0x6e 13030x20 0xc0 0x62 0x6e 13040x20 0xc0 0xa2 0x6e 1305 1306#------------------------------------------------------------------------------ 1307# Long - Variant 2 1308#------------------------------------------------------------------------------ 1309 1310# CHECK: sqdmlal v0.4s, v1.4h, v2.4h 1311# CHECK: sqdmlal v0.2d, v1.2s, v2.2s 13120x20 0x90 0x62 0x0e 13130x20 0x90 0xa2 0x0e 1314 1315# CHECK: sqdmlal2 v0.4s, v1.8h, v2.8h 1316# CHECK: sqdmlal2 v0.2d, v1.4s, v2.4s 13170x20 0x90 0x62 0x4e 13180x20 0x90 0xa2 0x4e 1319 1320# CHECK: sqdmlsl v0.4s, v1.4h, v2.4h 1321# CHECK: sqdmlsl v0.2d, v1.2s, v2.2s 13220x20 0xb0 0x62 0x0e 13230x20 0xb0 0xa2 0x0e 1324 1325# CHECK: sqdmlsl2 v0.4s, v1.8h, v2.8h 1326# CHECK: sqdmlsl2 v0.2d, v1.4s, v2.4s 13270x20 0xb0 0x62 0x4e 13280x20 0xb0 0xa2 0x4e 1329 1330# CHECK: sqdmull v0.4s, v1.4h, v2.4h 1331# CHECK: sqdmull v0.2d, v1.2s, v2.2s 13320x20 0xd0 0x62 0x0e 13330x20 0xd0 0xa2 0x0e 1334 1335# CHECK: sqdmull2 v0.4s, v1.8h, v2.8h 1336# CHECK: sqdmull2 v0.2d, v1.4s, v2.4s 13370x20 0xd0 0x62 0x4e 13380x20 0xd0 0xa2 0x4e 1339 1340#------------------------------------------------------------------------------ 1341# Long - Variant 3 1342#------------------------------------------------------------------------------ 1343 1344# CHECK: pmull v0.8h, v1.8b, v2.8b 13450x20 0xe0 0x22 0x0e 1346 1347# CHECK: pmull2 v0.8h, v1.16b, v2.16b 13480x20 0xe0 0x22 0x4e 1349 1350#------------------------------------------------------------------------------ 1351# Widen 1352#------------------------------------------------------------------------------ 1353 1354# CHECK: saddw v0.8h, v1.8h, v2.8b 1355# CHECK: saddw v0.4s, v1.4s, v2.4h 1356# CHECK: saddw v0.2d, v1.2d, v2.2s 13570x20 0x10 0x22 0x0e 13580x20 0x10 0x62 0x0e 13590x20 0x10 0xa2 0x0e 1360 1361# CHECK: saddw2 v0.8h, v1.8h, v2.16b 1362# CHECK: saddw2 v0.4s, v1.4s, v2.8h 1363# CHECK: saddw2 v0.2d, v1.2d, v2.4s 13640x20 0x10 0x22 0x4e 13650x20 0x10 0x62 0x4e 13660x20 0x10 0xa2 0x4e 1367 1368# CHECK: uaddw v0.8h, v1.8h, v2.8b 1369# CHECK: uaddw v0.4s, v1.4s, v2.4h 1370# CHECK: uaddw v0.2d, v1.2d, v2.2s 13710x20 0x10 0x22 0x2e 13720x20 0x10 0x62 0x2e 13730x20 0x10 0xa2 0x2e 1374 1375# CHECK: uaddw2 v0.8h, v1.8h, v2.16b 1376# CHECK: uaddw2 v0.4s, v1.4s, v2.8h 1377# CHECK: uaddw2 v0.2d, v1.2d, v2.4s 13780x20 0x10 0x22 0x6e 13790x20 0x10 0x62 0x6e 13800x20 0x10 0xa2 0x6e 1381 1382# CHECK: ssubw v0.8h, v1.8h, v2.8b 1383# CHECK: ssubw v0.4s, v1.4s, v2.4h 1384# CHECK: ssubw v0.2d, v1.2d, v2.2s 13850x20 0x30 0x22 0x0e 13860x20 0x30 0x62 0x0e 13870x20 0x30 0xa2 0x0e 1388 1389# CHECK: ssubw2 v0.8h, v1.8h, v2.16b 1390# CHECK: ssubw2 v0.4s, v1.4s, v2.8h 1391# CHECK: ssubw2 v0.2d, v1.2d, v2.4s 13920x20 0x30 0x22 0x4e 13930x20 0x30 0x62 0x4e 13940x20 0x30 0xa2 0x4e 1395 1396# CHECK: usubw v0.8h, v1.8h, v2.8b 1397# CHECK: usubw v0.4s, v1.4s, v2.4h 1398# CHECK: usubw v0.2d, v1.2d, v2.2s 13990x20 0x30 0x22 0x2e 14000x20 0x30 0x62 0x2e 14010x20 0x30 0xa2 0x2e 1402 1403# CHECK: usubw2 v0.8h, v1.8h, v2.16b 1404# CHECK: usubw2 v0.4s, v1.4s, v2.8h 1405# CHECK: usubw2 v0.2d, v1.2d, v2.4s 14060x20 0x30 0x22 0x6e 14070x20 0x30 0x62 0x6e 14080x20 0x30 0xa2 0x6e 1409 1410#------------------------------------------------------------------------------ 1411# Narrow 1412#------------------------------------------------------------------------------ 1413 1414# CHECK: addhn v0.8b, v1.8h, v2.8h 1415# CHECK: addhn v0.4h, v1.4s, v2.4s 1416# CHECK: addhn v0.2s, v1.2d, v2.2d 14170x20 0x40 0x22 0x0e 14180x20 0x40 0x62 0x0e 14190x20 0x40 0xa2 0x0e 1420 1421# CHECK: addhn2 v0.16b, v1.8h, v2.8h 1422# CHECK: addhn2 v0.8h, v1.4s, v2.4s 1423# CHECK: addhn2 v0.4s, v1.2d, v2.2d 14240x20 0x40 0x22 0x4e 14250x20 0x40 0x62 0x4e 14260x20 0x40 0xa2 0x4e 1427 1428# CHECK: raddhn v0.8b, v1.8h, v2.8h 1429# CHECK: raddhn v0.4h, v1.4s, v2.4s 1430# CHECK: raddhn v0.2s, v1.2d, v2.2d 14310x20 0x40 0x22 0x2e 14320x20 0x40 0x62 0x2e 14330x20 0x40 0xa2 0x2e 1434 1435# CHECK: raddhn2 v0.16b, v1.8h, v2.8h 1436# CHECK: raddhn2 v0.8h, v1.4s, v2.4s 1437# CHECK: raddhn2 v0.4s, v1.2d, v2.2d 14380x20 0x40 0x22 0x6e 14390x20 0x40 0x62 0x6e 14400x20 0x40 0xa2 0x6e 1441 1442# CHECK: rsubhn v0.8b, v1.8h, v2.8h 1443# CHECK: rsubhn v0.4h, v1.4s, v2.4s 1444# CHECK: rsubhn v0.2s, v1.2d, v2.2d 14450x20 0x60 0x22 0x2e 14460x20 0x60 0x62 0x2e 14470x20 0x60 0xa2 0x2e 1448 1449# CHECK: rsubhn2 v0.16b, v1.8h, v2.8h 1450# CHECK: rsubhn2 v0.8h, v1.4s, v2.4s 1451# CHECK: rsubhn2 v0.4s, v1.2d, v2.2d 14520x20 0x60 0x22 0x6e 14530x20 0x60 0x62 0x6e 14540x20 0x60 0xa2 0x6e 1455 1456#---------------------------------------------------------------------- 1457# Scalar Integer Saturating Doubling Multiply Half High 1458#---------------------------------------------------------------------- 1459# CHECK: sqdmulh h10, h11, h12 1460# CHECK: sqdmulh s20, s21, s2 14610x6a,0xb5,0x6c,0x5e 14620xb4,0xb6,0xa2,0x5e 1463 1464#---------------------------------------------------------------------- 1465# Scalar Integer Saturating Rounding Doubling Multiply Half High 1466#---------------------------------------------------------------------- 1467# CHECK: sqrdmulh h10, h11, h12 1468# CHECK: sqrdmulh s20, s21, s2 14690x6a,0xb5,0x6c,0x7e 14700xb4,0xb6,0xa2,0x7e 1471 1472#---------------------------------------------------------------------- 1473# Floating-point multiply extended 1474#---------------------------------------------------------------------- 1475# CHECK: fmulx s20, s22, s15 1476# CHECK: fmulx d23, d11, d1 14770xd4,0xde,0x2f,0x5e 14780x77,0xdd,0x61,0x5e 1479 1480#---------------------------------------------------------------------- 1481# Floating-point Reciprocal Step 1482#---------------------------------------------------------------------- 1483# CHECK: frecps s21, s16, s13 1484# CHECK: frecps d22, d30, d21 14850x15,0xfe,0x2d,0x5e 14860xd6,0xff,0x75,0x5e 1487 1488#---------------------------------------------------------------------- 1489# Floating-point Reciprocal Square Root Step 1490#---------------------------------------------------------------------- 1491# CHECK: frsqrts s21, s5, s12 1492# CHECK: frsqrts d8, d22, d18 14930xb5,0xfc,0xac,0x5e 14940xc8,0xfe,0xf2,0x5e 1495 1496#---------------------------------------------------------------------- 1497# Scalar Signed Integer Convert To Floating-point 1498#---------------------------------------------------------------------- 1499# CHECK: scvtf s22, s13 1500# CHECK: scvtf d21, d12 15010xb6,0xd9,0x21,0x5e 15020x95,0xd9,0x61,0x5e 1503 1504#---------------------------------------------------------------------- 1505# Scalar Unsigned Integer Convert To Floating-point 1506#---------------------------------------------------------------------- 1507# CHECK: ucvtf s22, s13 1508# CHECK: ucvtf d21, d14 15090xb6,0xd9,0x21,0x7e 15100xd5,0xd9,0x61,0x7e 1511 1512#---------------------------------------------------------------------- 1513# Scalar Floating-point Reciprocal Estimate 1514#---------------------------------------------------------------------- 1515# CHECK: frecpe s19, s14 1516# CHECK: frecpe d13, d13 15170xd3,0xd9,0xa1,0x5e 15180xad,0xd9,0xe1,0x5e 1519 1520#---------------------------------------------------------------------- 1521# Scalar Floating-point Reciprocal Exponent 1522#---------------------------------------------------------------------- 1523# CHECK: frecpx s18, s10 1524# CHECK: frecpx d16, d19 15250x52,0xf9,0xa1,0x5e 15260x70,0xfa,0xe1,0x5e 1527 1528#---------------------------------------------------------------------- 1529# Scalar Floating-point Reciprocal Square Root Estimate 1530#---------------------------------------------------------------------- 1531# CHECK: frsqrte s22, s13 1532# CHECK: frsqrte d21, d12 15330xb6,0xd9,0xa1,0x7e 15340x95,0xd9,0xe1,0x7e 1535 1536#---------------------------------------------------------------------- 1537# Scalar Compare Bitwise Equal 1538#---------------------------------------------------------------------- 1539# CHECK: cmeq d20, d21, d22 15400xb4,0x8e,0xf6,0x7e 1541 1542#---------------------------------------------------------------------- 1543# Scalar Compare Bitwise Equal To Zero 1544#---------------------------------------------------------------------- 1545# CHECK: cmeq d20, d21, #0x0 15460xb4,0x9a,0xe0,0x5e 1547 1548#---------------------------------------------------------------------- 1549# Scalar Compare Unsigned Higher Or Same 1550#---------------------------------------------------------------------- 1551# CHECK: cmhs d20, d21, d22 15520xb4,0x3e,0xf6,0x7e 1553 1554 1555#---------------------------------------------------------------------- 1556# Scalar Compare Signed Greather Than Or Equal 1557#---------------------------------------------------------------------- 1558# CHECK: cmge d20, d21, d22 15590xb4,0x3e,0xf6,0x5e 1560 1561#---------------------------------------------------------------------- 1562# Scalar Compare Signed Greather Than Or Equal To Zero 1563#---------------------------------------------------------------------- 1564# CHECK: cmge d20, d21, #0x0 15650xb4,0x8a,0xe0,0x7e 1566 1567#---------------------------------------------------------------------- 1568# Scalar Compare Unsigned Higher 1569#---------------------------------------------------------------------- 1570# CHECK: cmhi d20, d21, d22 15710xb4,0x36,0xf6,0x7e 1572 1573#---------------------------------------------------------------------- 1574# Scalar Compare Signed Greater Than 1575#---------------------------------------------------------------------- 1576# CHECK: cmgt d20, d21, d22 15770xb4,0x36,0xf6,0x5e 1578 1579#---------------------------------------------------------------------- 1580# Scalar Compare Signed Greater Than Zero 1581#---------------------------------------------------------------------- 1582# CHECK: cmgt d20, d21, #0x0 15830xb4,0x8a,0xe0,0x5e 1584 1585#---------------------------------------------------------------------- 1586# Scalar Compare Signed Less Than Or Equal To Zero 1587#---------------------------------------------------------------------- 1588# CHECK: cmle d20, d21, #0x0 15890xb4,0x9a,0xe0,0x7e 1590 1591#---------------------------------------------------------------------- 1592# Scalar Compare Less Than Zero 1593#---------------------------------------------------------------------- 1594# CHECK: cmlt d20, d21, #0x0 15950xb4,0xaa,0xe0,0x5e 1596 1597#---------------------------------------------------------------------- 1598# Scalar Compare Bitwise Test Bits 1599#---------------------------------------------------------------------- 1600# CHECK: cmtst d20, d21, d22 16010xb4,0x8e,0xf6,0x5e 1602 1603#---------------------------------------------------------------------- 1604# Scalar Floating-point Compare Mask Equal 1605#---------------------------------------------------------------------- 1606# CHECK: fcmeq s10, s11, s12 1607# CHECK: fcmeq d20, d21, d22 16080x6a,0xe5,0x2c,0x5e 16090xb4,0xe6,0x76,0x5e 1610 1611#---------------------------------------------------------------------- 1612# Scalar Floating-point Compare Mask Equal To Zero 1613#---------------------------------------------------------------------- 1614# CHECK: fcmeq s10, s11, #0.0 1615# CHECK: fcmeq d20, d21, #0.0 16160x6a,0xd9,0xa0,0x5e 16170xb4,0xda,0xe0,0x5e 1618 1619#---------------------------------------------------------------------- 1620# Scalar Floating-point Compare Mask Greater Than Or Equal 1621#---------------------------------------------------------------------- 1622# CHECK: fcmge s10, s11, s12 1623# CHECK: fcmge d20, d21, d22 16240x6a,0xe5,0x2c,0x7e 16250xb4,0xe6,0x76,0x7e 1626 1627#---------------------------------------------------------------------- 1628# Scalar Floating-point Compare Mask Greater Than Or Equal To Zero 1629#---------------------------------------------------------------------- 1630# CHECK: fcmge s10, s11, #0.0 1631# CHECK: fcmge d20, d21, #0.0 16320x6a,0xc9,0xa0,0x7e 16330xb4,0xca,0xe0,0x7e 1634 1635#---------------------------------------------------------------------- 1636# Scalar Floating-point Compare Mask Greather Than 1637#---------------------------------------------------------------------- 1638# CHECK: fcmgt s10, s11, s12 1639# CHECK: fcmgt d20, d21, d22 16400x6a,0xe5,0xac,0x7e 16410xb4,0xe6,0xf6,0x7e 1642 1643#---------------------------------------------------------------------- 1644# Scalar Floating-point Compare Mask Greather Than Zero 1645#---------------------------------------------------------------------- 1646# CHECK: fcmgt s10, s11, #0.0 1647# CHECK: fcmgt d20, d21, #0.0 16480x6a,0xc9,0xa0,0x5e 16490xb4,0xca,0xe0,0x5e 1650 1651#---------------------------------------------------------------------- 1652# Scalar Floating-point Compare Mask Less Than Or Equal To Zero 1653#---------------------------------------------------------------------- 1654# CHECK: fcmle s10, s11, #0.0 1655# CHECK: fcmle d20, d21, #0.0 16560x6a,0xd9,0xa0,0x7e 16570xb4,0xda,0xe0,0x7e 1658 1659#---------------------------------------------------------------------- 1660# Scalar Floating-point Compare Mask Less Than 1661#---------------------------------------------------------------------- 1662# CHECK: fcmlt s10, s11, #0.0 1663# CHECK: fcmlt d20, d21, #0.0 16640x6a,0xe9,0xa0,0x5e 16650xb4,0xea,0xe0,0x5e 1666 1667#---------------------------------------------------------------------- 1668# Scalar Floating-point Absolute Compare Mask Greater Than Or Equal 1669#---------------------------------------------------------------------- 1670# CHECK: facge s10, s11, s12 1671# CHECK: facge d20, d21, d22 16720x6a,0xed,0x2c,0x7e 16730xb4,0xee,0x76,0x7e 1674 1675#---------------------------------------------------------------------- 1676# Scalar Floating-point Absolute Compare Mask Greater Than 1677#---------------------------------------------------------------------- 1678# CHECK: facgt s10, s11, s12 1679# CHECK: facgt d20, d21, d22 16800x6a,0xed,0xac,0x7e 16810xb4,0xee,0xf6,0x7e 1682 1683#---------------------------------------------------------------------- 1684# Scalar Absolute Value 1685#---------------------------------------------------------------------- 1686# CHECK: abs d29, d24 16870x1d,0xbb,0xe0,0x5e 1688 1689#---------------------------------------------------------------------- 1690# Scalar Signed Saturating Absolute Value 1691#---------------------------------------------------------------------- 1692# CHECK: sqabs b19, b14 1693# CHECK: sqabs h21, h15 1694# CHECK: sqabs s20, s12 1695# CHECK: sqabs d18, d12 16960xd3,0x79,0x20,0x5e 16970xf5,0x79,0x60,0x5e 16980x94,0x79,0xa0,0x5e 16990x92,0x79,0xe0,0x5e 1700 1701#---------------------------------------------------------------------- 1702# Scalar Negate 1703#---------------------------------------------------------------------- 1704# CHECK: neg d29, d24 17050x1d,0xbb,0xe0,0x7e 1706 1707#---------------------------------------------------------------------- 1708# Scalar Signed Saturating Negate 1709#---------------------------------------------------------------------- 1710# CHECK: sqneg b19, b14 1711# CHECK: sqneg h21, h15 1712# CHECK: sqneg s20, s12 1713# CHECK: sqneg d18, d12 17140xd3,0x79,0x20,0x7e 17150xf5,0x79,0x60,0x7e 17160x94,0x79,0xa0,0x7e 17170x92,0x79,0xe0,0x7e 1718 1719#---------------------------------------------------------------------- 1720# Signed Saturating Accumulated of Unsigned Value 1721#---------------------------------------------------------------------- 1722# CHECK: suqadd b19, b14 1723# CHECK: suqadd h20, h15 1724# CHECK: suqadd s21, s12 1725# CHECK: suqadd d18, d22 17260xd3,0x39,0x20,0x5e 17270xf4,0x39,0x60,0x5e 17280x95,0x39,0xa0,0x5e 17290xd2,0x3a,0xe0,0x5e 1730 1731#---------------------------------------------------------------------- 1732# Unsigned Saturating Accumulated of Signed Value 1733#---------------------------------------------------------------------- 1734# CHECK: usqadd b19, b14 1735# CHECK: usqadd h20, h15 1736# CHECK: usqadd s21, s12 1737# CHECK: usqadd d18, d22 17380xd3,0x39,0x20,0x7e 17390xf4,0x39,0x60,0x7e 17400x95,0x39,0xa0,0x7e 17410xd2,0x3a,0xe0,0x7e 1742 1743#---------------------------------------------------------------------- 1744# Signed Saturating Doubling Multiply-Add Long 1745#---------------------------------------------------------------------- 1746# CHECK: sqdmlal s17, h27, h12 1747# CHECK: sqdmlal d19, s24, s12 17480x71,0x93,0x6c,0x5e 17490x13,0x93,0xac,0x5e 1750 1751#---------------------------------------------------------------------- 1752# Signed Saturating Doubling Multiply-Subtract Long 1753#---------------------------------------------------------------------- 1754# CHECK: sqdmlsl s14, h12, h25 1755# CHECK: sqdmlsl d12, s23, s13 17560x8e,0xb1,0x79,0x5e 17570xec,0xb2,0xad,0x5e 1758 1759#---------------------------------------------------------------------- 1760# Signed Saturating Doubling Multiply Long 1761#---------------------------------------------------------------------- 1762# CHECK: sqdmull s12, h22, h12 1763# CHECK: sqdmull d15, s22, s12 17640xcc,0xd2,0x6c,0x5e 17650xcf,0xd2,0xac,0x5e 1766 1767#---------------------------------------------------------------------- 1768# Scalar Signed Saturating Extract Unsigned Narrow 1769#---------------------------------------------------------------------- 1770# CHECK: sqxtun b19, h14 1771# CHECK: sqxtun h21, s15 1772# CHECK: sqxtun s20, d12 17730xd3,0x29,0x21,0x7e 17740xf5,0x29,0x61,0x7e 17750x94,0x29,0xa1,0x7e 1776 1777#---------------------------------------------------------------------- 1778# Scalar Signed Saturating Extract Signed Narrow 1779#---------------------------------------------------------------------- 1780# CHECK: sqxtn b18, h18 1781# CHECK: sqxtn h20, s17 1782# CHECK: sqxtn s19, d14 17830x52,0x4a,0x21,0x5e 17840x34,0x4a,0x61,0x5e 17850xd3,0x49,0xa1,0x5e 1786 1787#---------------------------------------------------------------------- 1788# Scalar Unsigned Saturating Extract Narrow 1789#---------------------------------------------------------------------- 1790# CHECK: uqxtn b18, h18 1791# CHECK: uqxtn h20, s17 1792# CHECK: uqxtn s19, d14 17930x52,0x4a,0x21,0x7e 17940x34,0x4a,0x61,0x7e 17950xd3,0x49,0xa1,0x7e 1796 1797#---------------------------------------------------------------------- 1798# Scalar Signed Shift Right (Immediate) 1799#---------------------------------------------------------------------- 1800# CHECK: sshr d15, d16, #12 18010x0f,0x06,0x74,0x5f 1802 1803#---------------------------------------------------------------------- 1804# Scalar Unsigned Shift Right (Immediate) 1805#---------------------------------------------------------------------- 1806# CHECK: ushr d10, d17, #18 18070x2a,0x06,0x6e,0x7f 1808 1809#---------------------------------------------------------------------- 1810# Scalar Signed Rounding Shift Right (Immediate) 1811#---------------------------------------------------------------------- 1812# CHECK: srshr d19, d18, #7 18130x53,0x26,0x79,0x5f 1814 1815#---------------------------------------------------------------------- 1816# Scalar Unigned Rounding Shift Right (Immediate) 1817#---------------------------------------------------------------------- 1818# CHECK: urshr d20, d23, #31 18190xf4,0x26,0x61,0x7f 1820 1821#---------------------------------------------------------------------- 1822# Scalar Signed Shift Right and Accumulate (Immediate) 1823#---------------------------------------------------------------------- 1824# CHECK: ssra d18, d12, #21 18250x92,0x15,0x6b,0x5f 1826 1827#---------------------------------------------------------------------- 1828# Scalar Unsigned Shift Right and Accumulate (Immediate) 1829#---------------------------------------------------------------------- 1830# CHECK: usra d20, d13, #61 18310xb4,0x15,0x43,0x7f 1832 1833#---------------------------------------------------------------------- 1834# Scalar Signed Rounding Shift Right and Accumulate (Immediate) 1835#---------------------------------------------------------------------- 1836# CHECK: srsra d15, d11, #19 18370x6f,0x35,0x6d,0x5f 1838 1839#---------------------------------------------------------------------- 1840# Scalar Unsigned Rounding Shift Right and Accumulate (Immediate) 1841#---------------------------------------------------------------------- 1842# CHECK: ursra d18, d10, #13 18430x52,0x35,0x73,0x7f 1844 1845#---------------------------------------------------------------------- 1846# Scalar Shift Left (Immediate) 1847#---------------------------------------------------------------------- 1848# CHECK: shl d7, d10, #12 18490x47,0x55,0x4c,0x5f 1850 1851#---------------------------------------------------------------------- 1852# Signed Saturating Shift Left (Immediate) 1853#---------------------------------------------------------------------- 1854# CHECK: sqshl b11, b19, #7 1855# CHECK: sqshl h13, h18, #11 1856# CHECK: sqshl s14, s17, #22 1857# CHECK: sqshl d15, d16, #51 18580x6b,0x76,0x0f,0x5f 18590x4d,0x76,0x1b,0x5f 18600x2e,0x76,0x36,0x5f 18610x0f,0x76,0x73,0x5f 1862 1863#---------------------------------------------------------------------- 1864# Unsigned Saturating Shift Left (Immediate) 1865#---------------------------------------------------------------------- 1866# CHECK: uqshl b18, b15, #6 1867# CHECK: uqshl h11, h18, #7 1868# CHECK: uqshl s14, s19, #18 1869# CHECK: uqshl d15, d12, #19 18700xf2,0x75,0x0e,0x7f 18710x4b,0x76,0x17,0x7f 18720x6e,0x76,0x32,0x7f 18730x8f,0x75,0x53,0x7f 1874 1875#---------------------------------------------------------------------- 1876# Signed Saturating Shift Left Unsigned (Immediate) 1877#---------------------------------------------------------------------- 1878# CHECK: sqshlu b15, b18, #6 1879# CHECK: sqshlu h19, h17, #6 1880# CHECK: sqshlu s16, s14, #25 1881# CHECK: sqshlu d11, d13, #32 18820x4f,0x66,0x0e,0x7f 18830x33,0x66,0x16,0x7f 18840xd0,0x65,0x39,0x7f 18850xab,0x65,0x60,0x7f 1886 1887#---------------------------------------------------------------------- 1888# Shift Right And Insert (Immediate) 1889#---------------------------------------------------------------------- 1890# CHECK: sri d10, d12, #14 18910x8a,0x45,0x72,0x7f 1892 1893#---------------------------------------------------------------------- 1894# Shift Left And Insert (Immediate) 1895#---------------------------------------------------------------------- 1896# CHECK: sli d10, d14, #12 18970xca,0x55,0x4c,0x7f 1898 1899#---------------------------------------------------------------------- 1900# Signed Saturating Shift Right Narrow (Immediate) 1901#---------------------------------------------------------------------- 1902# CHECK: sqshrn b10, h15, #5 1903# CHECK: sqshrn h17, s10, #4 1904# CHECK: sqshrn s18, d10, #31 19050xea,0x95,0x0b,0x5f 19060x51,0x95,0x1c,0x5f 19070x52,0x95,0x21,0x5f 1908 1909#---------------------------------------------------------------------- 1910# Unsigned Saturating Shift Right Narrow (Immediate) 1911#---------------------------------------------------------------------- 1912# CHECK: uqshrn b12, h10, #7 1913# CHECK: uqshrn h10, s14, #5 1914# CHECK: uqshrn s10, d12, #13 19150x4c,0x95,0x09,0x7f 19160xca,0x95,0x1b,0x7f 19170x8a,0x95,0x33,0x7f 1918 1919#---------------------------------------------------------------------- 1920# Signed Saturating Rounded Shift Right Narrow (Immediate) 1921#---------------------------------------------------------------------- 1922# CHECK: sqrshrn b10, h13, #2 1923# CHECK: sqrshrn h15, s10, #6 1924# CHECK: sqrshrn s15, d12, #9 19250xaa,0x9d,0x0e,0x5f 19260x4f,0x9d,0x1a,0x5f 19270x8f,0x9d,0x37,0x5f 1928 1929#---------------------------------------------------------------------- 1930# Unsigned Saturating Rounded Shift Right Narrow (Immediate) 1931#---------------------------------------------------------------------- 1932# CHECK: uqrshrn b10, h12, #5 1933# CHECK: uqrshrn h12, s10, #14 1934# CHECK: uqrshrn s10, d10, #25 19350x8a,0x9d,0x0b,0x7f 19360x4c,0x9d,0x12,0x7f 19370x4a,0x9d,0x27,0x7f 1938 1939#---------------------------------------------------------------------- 1940# Signed Saturating Shift Right Unsigned Narrow (Immediate) 1941#---------------------------------------------------------------------- 1942# CHECK: sqshrun b15, h10, #7 1943# CHECK: sqshrun h20, s14, #3 1944# CHECK: sqshrun s10, d15, #15 19450x4f,0x85,0x09,0x7f 19460xd4,0x85,0x1d,0x7f 19470xea,0x85,0x31,0x7f 1948 1949#---------------------------------------------------------------------- 1950# Signed Saturating Rounded Shift Right Unsigned Narrow (Immediate) 1951#---------------------------------------------------------------------- 1952# CHECK: sqrshrun b17, h10, #6 1953# CHECK: sqrshrun h10, s13, #15 1954# CHECK: sqrshrun s22, d16, #31 19550x51,0x8d,0x0a,0x7f 19560xaa,0x8d,0x11,0x7f 19570x16,0x8e,0x21,0x7f 1958 1959#---------------------------------------------------------------------- 1960# Scalar Signed Fixed-point Convert To Floating-Point (Immediate) 1961#---------------------------------------------------------------------- 1962# CHECK: scvtf s22, s13, #32 1963# CHECK: scvtf d21, d12, #64 19640xb6,0xe5,0x20,0x5f 19650x95,0xe5,0x40,0x5f 1966 1967#---------------------------------------------------------------------- 1968# Scalar Unsigned Fixed-point Convert To Floating-Point (Immediate) 1969#---------------------------------------------------------------------- 1970# CHECK: ucvtf s22, s13, #32 1971# CHECK: ucvtf d21, d14, #64 19720xb6,0xe5,0x20,0x7f 19730xd5,0xe5,0x40,0x7f 1974 1975#---------------------------------------------------------------------- 1976# Scalar Floating-point Convert To Signed Fixed-point (Immediate) 1977#---------------------------------------------------------------------- 1978# CHECK: fcvtzs s21, s12, #1 1979# CHECK: fcvtzs d21, d12, #1 19800x95,0xfd,0x3f,0x5f 19810x95,0xfd,0x7f,0x5f 1982 1983#---------------------------------------------------------------------- 1984# Scalar Floating-point Convert To Unsigned Fixed-point (Immediate) 1985#---------------------------------------------------------------------- 1986# CHECK: fcvtzu s21, s12, #1 1987# CHECK: fcvtzu d21, d12, #1 19880x95,0xfd,0x3f,0x7f 19890x95,0xfd,0x7f,0x7f 1990 1991#---------------------------------------------------------------------- 1992# Vector load/store multiple N-element structure 1993#---------------------------------------------------------------------- 1994# CHECK: ld1 {v0.16b}, [x0] 1995# CHECK: ld1 {v15.8h, v16.8h}, [x15] 1996# CHECK: ld1 {v31.4s, v0.4s, v1.4s}, [sp] 1997# CHECK: ld1 {v0.2d, v1.2d, v2.2d, v3.2d}, [x0] 19980x00,0x70,0x40,0x4c 19990xef,0xa5,0x40,0x4c 20000xff,0x6b,0x40,0x4c 20010x00,0x2c,0x40,0x4c 2002 2003# CHECK: ld2 {v0.8b, v1.8b}, [x0] 2004# CHECK: ld3 {v15.4h, v16.4h, v17.4h}, [x15] 2005# CHECK: ld4 {v31.2s, v0.2s, v1.2s, v2.2s}, [sp] 20060x00,0x80,0x40,0x0c 20070xef,0x45,0x40,0x0c 20080xff,0x0b,0x40,0x0c 2009 2010# CHECK: st1 {v0.16b}, [x0] 2011# CHECK: st1 {v15.8h, v16.8h}, [x15] 2012# CHECK: st1 {v31.4s, v0.4s, v1.4s}, [sp] 2013# CHECK: st1 {v0.2d, v1.2d, v2.2d, v3.2d}, [x0] 20140x00,0x70,0x00,0x4c 20150xef,0xa5,0x00,0x4c 20160xff,0x6b,0x00,0x4c 20170x00,0x2c,0x00,0x4c 2018 2019# CHECK: st2 {v0.8b, v1.8b}, [x0] 2020# CHECK: st3 {v15.4h, v16.4h, v17.4h}, [x15] 2021# CHECK: st4 {v31.2s, v0.2s, v1.2s, v2.2s}, [sp] 20220x00,0x80,0x00,0x0c 20230xef,0x45,0x00,0x0c 20240xff,0x0b,0x00,0x0c 2025 2026#---------------------------------------------------------------------- 2027# Vector load/store multiple N-element structure (post-index) 2028#---------------------------------------------------------------------- 2029# CHECK: ld1 {v15.8h}, [x15], x2 2030# CHECK: ld1 {v31.4s, v0.4s}, [sp], #32 2031# CHECK: ld1 {v0.2d, v1.2d, v2.2d}, [x0], #48 2032# CHECK: ld1 {v0.8b, v1.8b, v2.8b, v3.8b}, [x0], x3 20330xef,0x75,0xc2,0x4c 20340xff,0xab,0xdf,0x4c 20350x00,0x6c,0xdf,0x4c 20360x00,0x20,0xc3,0x0c 2037 2038# CHECK: ld2 {v0.16b, v1.16b}, [x0], x1 2039# CHECK: ld3 {v15.8h, v16.8h, v17.8h}, [x15], x2 2040# CHECK: ld4 {v31.4s, v0.4s, v1.4s, v2.4s}, [sp], #64 20410x00,0x80,0xc1,0x4c 20420xef,0x45,0xc2,0x4c 20430xff,0x0b,0xdf,0x4c 2044 2045 2046# CHECK: st1 {v15.8h}, [x15], x2 2047# CHECK: st1 {v31.4s, v0.4s}, [sp], #32 2048# CHECK: st1 {v0.2d, v1.2d, v2.2d}, [x0], #48 2049# CHECK: st1 {v0.8b, v1.8b, v2.8b, v3.8b}, [x0], x3 20500xef,0x75,0x82,0x4c 20510xff,0xab,0x9f,0x4c 20520x00,0x6c,0x9f,0x4c 20530x00,0x20,0x83,0x0c 2054 2055# CHECK: st2 {v0.16b, v1.16b}, [x0], x1 2056# CHECK: st3 {v15.8h, v16.8h, v17.8h}, [x15], x2 2057# CHECK: st4 {v31.4s, v0.4s, v1.4s, v2.4s}, [sp], #64 20580x00,0x80,0x81,0x4c 20590xef,0x45,0x82,0x4c 20600xff,0x0b,0x9f,0x4c 2061 2062#---------------------------------------------------------------------- 2063# Vector load single N-element structure to all lane of N 2064# consecutive registers (N = 1,2,3,4) 2065#---------------------------------------------------------------------- 2066# CHECK: ld1r {v0.16b}, [x0] 2067# CHECK: ld1r {v15.8h}, [x15] 2068# CHECK: ld2r {v31.4s, v0.4s}, [sp] 2069# CHECK: ld2r {v0.2d, v1.2d}, [x0] 2070# CHECK: ld3r {v0.8b, v1.8b, v2.8b}, [x0] 2071# CHECK: ld3r {v15.4h, v16.4h, v17.4h}, [x15] 2072# CHECK: ld4r {v31.2s, v0.2s, v1.2s, v2.2s}, [sp] 2073# CHECK: ld4r {v31.1d, v0.1d, v1.1d, v2.1d}, [sp] 20740x00,0xc0,0x40,0x4d 20750xef,0xc5,0x40,0x4d 20760xff,0xcb,0x60,0x4d 20770x00,0xcc,0x60,0x4d 20780x00,0xe0,0x40,0x0d 20790xef,0xe5,0x40,0x0d 20800xff,0xeb,0x60,0x0d 20810xff,0xef,0x60,0x0d 2082 2083#---------------------------------------------------------------------- 2084# Vector load/store single N-element structure to/from one lane of N 2085# consecutive registers (N = 1,2,3,4) 2086#---------------------------------------------------------------------- 2087# CHECK: ld1 {v0.b}[9], [x0] 2088# CHECK: ld2 {v15.h, v16.h}[7], [x15] 2089# CHECK: ld3 {v31.s, v0.s, v1.s}[3], [sp] 2090# CHECK: ld4 {v0.d, v1.d, v2.d, v3.d}[1], [x0] 2091# CHECK: st1 {v0.d}[1], [x0] 2092# CHECK: st2 {v31.s, v0.s}[3], [sp] 2093# CHECK: st3 {v15.h, v16.h, v17.h}[7], [x15] 2094# CHECK: st4 {v0.b, v1.b, v2.b, v3.b}[9], [x0] 20950x00,0x04,0x40,0x4d 20960xef,0x59,0x60,0x4d 20970xff,0xb3,0x40,0x4d 20980x00,0xa4,0x60,0x4d 20990x00,0x84,0x00,0x4d 21000xff,0x93,0x20,0x4d 21010xef,0x79,0x00,0x4d 21020x00,0x24,0x20,0x4d 2103 2104#---------------------------------------------------------------------- 2105# Post-index of vector load single N-element structure to all lane of N 2106# consecutive registers (N = 1,2,3,4) 2107#---------------------------------------------------------------------- 2108# CHECK: ld1r {v0.16b}, [x0], #1 2109# CHECK: ld1r {v15.8h}, [x15], #2 2110# CHECK: ld2r {v31.4s, v0.4s}, [sp], #8 2111# CHECK: ld2r {v0.2d, v1.2d}, [x0], #16 2112# CHECK: ld3r {v0.8b, v1.8b, v2.8b}, [x0], #3 2113# CHECK: ld3r {v15.4h, v16.4h, v17.4h}, [x15], #6 2114# CHECK: ld4r {v31.2s, v0.2s, v1.2s, v2.2s}, [sp], x30 2115# CHECK: ld4r {v31.1d, v0.1d, v1.1d, v2.1d}, [sp], x7 21160x00,0xc0,0xdf,0x4d 21170xef,0xc5,0xdf,0x4d 21180xff,0xcb,0xff,0x4d 21190x00,0xcc,0xff,0x4d 21200x00,0xe0,0xdf,0x0d 21210xef,0xe5,0xdf,0x0d 21220xff,0xeb,0xfe,0x0d 21230xff,0xef,0xe7,0x0d 2124 2125#---------------------------------------------------------------------- 2126# Post-index of vector load/store single N-element structure to/from 2127# one lane of N consecutive registers (N = 1,2,3,4) 2128#---------------------------------------------------------------------- 2129# CHECK: ld1 {v0.b}[9], [x0], #1 2130# CHECK: ld2 {v15.h, v16.h}[7], [x15], #4 2131# CHECK: ld3 {v31.s, v0.s, v1.s}[3], [sp], x3 2132# CHECK: ld4 {v0.d, v1.d, v2.d, v3.d}[1], [x0], #24 2133# CHECK: st1 {v0.d}[1], [x0], #8 2134# CHECK: st2 {v31.s, v0.s}[3], [sp], #8 2135# CHECK: st3 {v15.h, v16.h, v17.h}[7], [x15], #6 2136# CHECK: st4 {v0.b, v1.b, v2.b, v3.b}[9], [x0], x5 21370x00,0x04,0xdf,0x4d 21380xef,0x59,0xff,0x4d 21390xff,0xb3,0xc3,0x4d 21400x00,0xa4,0xff,0x4d 21410x00,0x84,0x9f,0x4d 21420xff,0x93,0xbf,0x4d 21430xef,0x79,0x9f,0x4d 21440x00,0x24,0xa5,0x4d 2145 2146#---------------------------------------------------------------------- 2147# Bitwise extract 2148#---------------------------------------------------------------------- 21490x20,0x18,0x02,0x2e 21500x20,0x18,0x02,0x6e 2151# CHECK: ext v0.8b, v1.8b, v2.8b, #0x3 2152# CHECK: ext v0.16b, v1.16b, v2.16b, #0x3 2153 2154#---------------------------------------------------------------------- 2155# unzip with 3 same vectors to get primary result 2156#---------------------------------------------------------------------- 2157# CHECK: uzp1 v1.8b, v1.8b, v2.8b 2158# CHECK: uzp1 v2.16b, v1.16b, v2.16b 2159# CHECK: uzp1 v3.4h, v1.4h, v2.4h 2160# CHECK: uzp1 v4.8h, v1.8h, v2.8h 2161# CHECK: uzp1 v5.2s, v1.2s, v2.2s 2162# CHECK: uzp1 v6.4s, v1.4s, v2.4s 2163# CHECK: uzp1 v7.2d, v1.2d, v2.2d 21640x21,0x18,0x02,0x0e 21650x22,0x18,0x02,0x4e 21660x23,0x18,0x42,0x0e 21670x24,0x18,0x42,0x4e 21680x25,0x18,0x82,0x0e 21690x26,0x18,0x82,0x4e 21700x27,0x18,0xc2,0x4e 2171 2172#---------------------------------------------------------------------- 2173# transpose with 3 same vectors to get primary result 2174#---------------------------------------------------------------------- 2175# CHECK: trn1 v8.8b, v1.8b, v2.8b 2176# CHECK: trn1 v9.16b, v1.16b, v2.16b 2177# CHECK: trn1 v10.4h, v1.4h, v2.4h 2178# CHECK: trn1 v27.8h, v7.8h, v2.8h 2179# CHECK: trn1 v12.2s, v7.2s, v2.2s 2180# CHECK: trn1 v29.4s, v6.4s, v2.4s 2181# CHECK: trn1 v14.2d, v6.2d, v2.2d 21820x28,0x28,0x02,0x0e 21830x29,0x28,0x02,0x4e 21840x2a,0x28,0x42,0x0e 21850xfb,0x28,0x42,0x4e 21860xec,0x28,0x82,0x0e 21870xdd,0x28,0x82,0x4e 21880xce,0x28,0xc2,0x4e 2189 2190#---------------------------------------------------------------------- 2191# zip with 3 same vectors to get primary result 2192#---------------------------------------------------------------------- 2193# CHECK: zip1 v31.8b, v5.8b, v2.8b 2194# CHECK: zip1 v0.16b, v5.16b, v2.16b 2195# CHECK: zip1 v17.4h, v4.4h, v2.4h 2196# CHECK: zip1 v2.8h, v4.8h, v2.8h 2197# CHECK: zip1 v19.2s, v3.2s, v2.2s 2198# CHECK: zip1 v4.4s, v3.4s, v2.4s 2199# CHECK: zip1 v21.2d, v2.2d, v2.2d 22000xbf,0x38,0x02,0x0e 22010xa0,0x38,0x02,0x4e 22020x91,0x38,0x42,0x0e 22030x82,0x38,0x42,0x4e 22040x73,0x38,0x82,0x0e 22050x64,0x38,0x82,0x4e 22060x55,0x38,0xc2,0x4e 2207 2208#---------------------------------------------------------------------- 2209# unzip with 3 same vectors to get secondary result 2210#---------------------------------------------------------------------- 2211# CHECK: uzp2 v6.8b, v2.8b, v2.8b 2212# CHECK: uzp2 v23.16b, v1.16b, v2.16b 2213# CHECK: uzp2 v8.4h, v1.4h, v2.4h 2214# CHECK: uzp2 v25.8h, v0.8h, v2.8h 2215# CHECK: uzp2 v10.2s, v0.2s, v2.2s 2216# CHECK: uzp2 v27.4s, v7.4s, v2.4s 2217# CHECK: uzp2 v12.2d, v7.2d, v2.2d 22180x46,0x58,0x02,0x0e 22190x37,0x58,0x02,0x4e 22200x28,0x58,0x42,0x0e 22210x19,0x58,0x42,0x4e 22220x0a,0x58,0x82,0x0e 22230xfb,0x58,0x82,0x4e 22240xec,0x58,0xc2,0x4e 2225 2226#---------------------------------------------------------------------- 2227# transpose with 3 same vectors to get secondary result 2228#---------------------------------------------------------------------- 2229# CHECK: trn2 v29.8b, v6.8b, v2.8b 2230# CHECK: trn2 v14.16b, v6.16b, v2.16b 2231# CHECK: trn2 v31.4h, v5.4h, v2.4h 2232# CHECK: trn2 v0.8h, v5.8h, v2.8h 2233# CHECK: trn2 v17.2s, v4.2s, v2.2s 2234# CHECK: trn2 v2.4s, v4.4s, v2.4s 2235# CHECK: trn2 v19.2d, v3.2d, v2.2d 22360xdd,0x68,0x02,0x0e 22370xce,0x68,0x02,0x4e 22380xbf,0x68,0x42,0x0e 22390xa0,0x68,0x42,0x4e 22400x91,0x68,0x82,0x0e 22410x82,0x68,0x82,0x4e 22420x73,0x68,0xc2,0x4e 2243 2244#---------------------------------------------------------------------- 2245# zip with 3 same vectors to get secondary result 2246#---------------------------------------------------------------------- 2247# CHECK: zip2 v4.8b, v3.8b, v2.8b 2248# CHECK: zip2 v21.16b, v2.16b, v2.16b 2249# CHECK: zip2 v6.4h, v2.4h, v2.4h 2250# CHECK: zip2 v23.8h, v1.8h, v2.8h 2251# CHECK: zip2 v8.2s, v1.2s, v2.2s 2252# CHECK: zip2 v25.4s, v0.4s, v2.4s 2253# CHECK: zip2 v10.2d, v0.2d, v2.2d 22540x64,0x78,0x02,0x0e 22550x55,0x78,0x02,0x4e 22560x46,0x78,0x42,0x0e 22570x37,0x78,0x42,0x4e 22580x28,0x78,0x82,0x0e 22590x19,0x78,0x82,0x4e 22600x0a,0x78,0xc2,0x4e 2261 2262#---------------------------------------------------------------------- 2263# Scalar Floating Point multiply (scalar, by element) 2264#---------------------------------------------------------------------- 2265# CHECK: fmul s0, s1, v1.s[0] 2266# CHECK: fmul s0, s1, v1.s[3] 2267# CHECK: fmul d0, d1, v1.d[0] 2268# CHECK: fmul d0, d1, v1.d[1] 2269# CHECK: fmul d15, d15, v15.d[1] 22700x20 0x90 0x81 0x5f 22710x20 0x98 0xa1 0x5f 22720x20 0x90 0xc1 0x5f 22730x20 0x98 0xc1 0x5f 22740xef 0x99 0xcf 0x5f 2275 2276#---------------------------------------------------------------------- 2277# Scalar Floating Point multiply extended (scalar, by element) 2278#---------------------------------------------------------------------- 2279# CHECK: fmulx s3, s5, v7.s[0] 2280# CHECK: fmulx s3, s5, v7.s[3] 2281# CHECK: fmulx s3, s5, v15.s[3] 2282# CHECK: fmulx d0, d4, v8.d[0] 2283# CHECK: fmulx d0, d4, v8.d[1] 22840xa3 0x90 0x87 0x7f 22850xa3 0x98 0xa7 0x7f 22860xa3 0x98 0xaf 0x7f 22870x80 0x90 0xc8 0x7f 22880x80 0x98 0xc8 0x7f 2289 2290#---------------------------------------------------------------------- 2291# Scalar Floating Point fused multiply-add (scalar, by element) 2292#---------------------------------------------------------------------- 2293# CHECK: fmla s0, s1, v1.s[0] 2294# CHECK: fmla s0, s1, v1.s[3] 2295# CHECK: fmla d0, d1, v1.d[0] 2296# CHECK: fmla d0, d1, v1.d[1] 2297# CHECK: fmla d15, d15, v15.d[1] 22980x20 0x10 0x81 0x5f 22990x20 0x18 0xa1 0x5f 23000x20 0x10 0xc1 0x5f 23010x20 0x18 0xc1 0x5f 23020xef 0x19 0xcf 0x5f 2303 2304#---------------------------------------------------------------------- 2305# Scalar Floating Point fused multiply-sub (scalar, by element) 2306#---------------------------------------------------------------------- 2307# CHECK: fmls s3, s5, v7.s[0] 2308# CHECK: fmls s3, s5, v7.s[3] 2309# CHECK: fmls s3, s5, v15.s[3] 2310# CHECK: fmls d0, d4, v8.d[0] 2311# CHECK: fmls d0, d4, v8.d[1] 23120xa3 0x50 0x87 0x5f 23130xa3 0x58 0xa7 0x5f 23140xa3 0x58 0xaf 0x5f 23150x80 0x50 0xc8 0x5f 23160x80 0x58 0xc8 0x5f 2317 2318#---------------------------------------------------------------------- 2319# Scalar Signed saturating doubling 2320# multiply-add long (scalar, by element) 2321#---------------------------------------------------------------------- 2322# CHECK: sqdmlal s0, h0, v0.h[0] 2323# CHECK: sqdmlal s0, h0, v0.h[1] 2324# CHECK: sqdmlal s0, h0, v0.h[2] 2325# CHECK: sqdmlal s0, h0, v0.h[3] 2326# CHECK: sqdmlal s0, h0, v0.h[4] 2327# CHECK: sqdmlal s0, h0, v0.h[5] 2328# CHECK: sqdmlal s0, h0, v0.h[6] 2329# CHECK: sqdmlal s0, h0, v0.h[7] 2330# CHECK: sqdmlal d8, s9, v15.s[0] 2331# CHECK: sqdmlal d8, s9, v15.s[1] 2332# CHECK: sqdmlal d8, s9, v15.s[2] 2333# CHECK: sqdmlal d8, s9, v15.s[3] 23340x00 0x30 0x40 0x5f 23350x00 0x30 0x50 0x5f 23360x00 0x30 0x60 0x5f 23370x00 0x30 0x70 0x5f 23380x00 0x38 0x40 0x5f 23390x00 0x38 0x50 0x5f 23400x00 0x38 0x60 0x5f 23410x00 0x38 0x70 0x5f 23420x28 0x31 0x8f 0x5f 23430x28 0x31 0xaf 0x5f 23440x28 0x39 0x8f 0x5f 23450x28 0x39 0xaf 0x5f 2346 2347#---------------------------------------------------------------------- 2348# Scalar Signed saturating doubling 2349# multiply-sub long (scalar, by element) 2350#---------------------------------------------------------------------- 2351# CHECK: sqdmlsl s0, h0, v0.h[0] 2352# CHECK: sqdmlsl s0, h0, v0.h[1] 2353# CHECK: sqdmlsl s0, h0, v0.h[2] 2354# CHECK: sqdmlsl s0, h0, v0.h[3] 2355# CHECK: sqdmlsl s0, h0, v0.h[4] 2356# CHECK: sqdmlsl s0, h0, v0.h[5] 2357# CHECK: sqdmlsl s0, h0, v0.h[6] 2358# CHECK: sqdmlsl s0, h0, v0.h[7] 2359# CHECK: sqdmlsl d8, s9, v15.s[0] 2360# CHECK: sqdmlsl d8, s9, v15.s[1] 2361# CHECK: sqdmlsl d8, s9, v15.s[2] 2362# CHECK: sqdmlsl d8, s9, v15.s[3] 23630x00 0x70 0x40 0x5f 23640x00 0x70 0x50 0x5f 23650x00 0x70 0x60 0x5f 23660x00 0x70 0x70 0x5f 23670x00 0x78 0x40 0x5f 23680x00 0x78 0x50 0x5f 23690x00 0x78 0x60 0x5f 23700x00 0x78 0x70 0x5f 23710x28 0x71 0x8f 0x5f 23720x28 0x71 0xaf 0x5f 23730x28 0x79 0x8f 0x5f 23740x28 0x79 0xaf 0x5f 2375 2376#---------------------------------------------------------------------- 2377# Scalar Signed saturating doubling multiply long (scalar, by element) 2378#---------------------------------------------------------------------- 2379# CHECK: sqdmull s1, h1, v1.h[0] 2380# CHECK: sqdmull s1, h1, v1.h[1] 2381# CHECK: sqdmull s1, h1, v1.h[2] 2382# CHECK: sqdmull s1, h1, v1.h[3] 2383# CHECK: sqdmull s1, h1, v1.h[4] 2384# CHECK: sqdmull s1, h1, v1.h[5] 2385# CHECK: sqdmull s1, h1, v1.h[6] 2386# CHECK: sqdmull s1, h1, v1.h[7] 2387# CHECK: sqdmull d1, s1, v4.s[0] 2388# CHECK: sqdmull d1, s1, v4.s[1] 2389# CHECK: sqdmull d1, s1, v4.s[2] 2390# CHECK: sqdmull d1, s1, v4.s[3] 23910x21 0xb0 0x41 0x5f 23920x21 0xb0 0x51 0x5f 23930x21 0xb0 0x61 0x5f 23940x21 0xb0 0x71 0x5f 23950x21 0xb8 0x41 0x5f 23960x21 0xb8 0x51 0x5f 23970x21 0xb8 0x61 0x5f 23980x21 0xb8 0x71 0x5f 23990x21 0xb0 0x84 0x5f 24000x21 0xb0 0xa4 0x5f 24010x21 0xb8 0x84 0x5f 24020x21 0xb8 0xa4 0x5f 2403 2404#---------------------------------------------------------------------- 2405# Scalar Signed saturating doubling multiply returning 2406# high half (scalar, by element) 2407#---------------------------------------------------------------------- 2408# CHECK: sqdmulh h7, h1, v14.h[0] 2409# CHECK: sqdmulh h7, h15, v8.h[1] 2410# CHECK: sqdmulh h7, h15, v8.h[2] 2411# CHECK: sqdmulh h7, h15, v8.h[3] 2412# CHECK: sqdmulh h7, h15, v8.h[4] 2413# CHECK: sqdmulh h7, h15, v8.h[5] 2414# CHECK: sqdmulh h7, h15, v8.h[6] 2415# CHECK: sqdmulh h7, h15, v8.h[7] 2416# CHECK: sqdmulh s15, s3, v4.s[0] 2417# CHECK: sqdmulh s15, s14, v16.s[1] 2418# CHECK: sqdmulh s15, s15, v16.s[2] 2419# CHECK: sqdmulh s15, s16, v17.s[3] 24200x27 0xc0 0x4e 0x5f 24210xe7 0xc1 0x58 0x5f 24220xe7 0xc1 0x68 0x5f 24230xe7 0xc1 0x78 0x5f 24240xe7 0xc9 0x48 0x5f 24250xe7 0xc9 0x58 0x5f 24260xe7 0xc9 0x68 0x5f 24270xe7 0xc9 0x78 0x5f 24280x6f 0xc0 0x84 0x5f 24290xcf 0xc1 0xb0 0x5f 24300xef 0xc9 0x90 0x5f 24310x0f 0xca 0xb1 0x5f 2432 2433#---------------------------------------------------------------------- 2434# Scalar Signed saturating rounding doubling multiply 2435# returning high half (scalar, by element) 2436#---------------------------------------------------------------------- 2437# CHECK: sqrdmulh h7, h1, v14.h[0] 2438# CHECK: sqrdmulh h7, h15, v8.h[1] 2439# CHECK: sqrdmulh h7, h15, v8.h[2] 2440# CHECK: sqrdmulh h7, h15, v8.h[3] 2441# CHECK: sqrdmulh h7, h15, v8.h[4] 2442# CHECK: sqrdmulh h7, h15, v8.h[5] 2443# CHECK: sqrdmulh h7, h15, v8.h[6] 2444# CHECK: sqrdmulh h7, h15, v8.h[7] 2445# CHECK: sqrdmulh s15, s3, v4.s[0] 2446# CHECK: sqrdmulh s15, s14, v16.s[1] 2447# CHECK: sqrdmulh s15, s15, v16.s[2] 2448# CHECK: sqrdmulh s15, s16, v17.s[3] 24490x27 0xd0 0x4e 0x5f 24500xe7 0xd1 0x58 0x5f 24510xe7 0xd1 0x68 0x5f 24520xe7 0xd1 0x78 0x5f 24530xe7 0xd9 0x48 0x5f 24540xe7 0xd9 0x58 0x5f 24550xe7 0xd9 0x68 0x5f 24560xe7 0xd9 0x78 0x5f 24570x6f 0xd0 0x84 0x5f 24580xcf 0xd1 0xb0 0x5f 24590xef 0xd9 0x90 0x5f 24600x0f 0xda 0xb1 0x5f 2461 2462#---------------------------------------------------------------------- 2463#Duplicate element (scalar) 2464#---------------------------------------------------------------------- 2465# CHECK: dup b0, v0.b[15] 2466# CHECK: dup h2, v31.h[5] 2467# CHECK: dup s17, v2.s[2] 2468# CHECK: dup d6, v12.d[1] 24690x00 0x04 0x1f 0x5e 24700xe2 0x07 0x16 0x5e 24710x51 0x04 0x14 0x5e 24720x86 0x05 0x18 0x5e 2473 2474#---------------------------------------------------------------------- 2475# Table look up 2476#---------------------------------------------------------------------- 24770x20,0x00,0x02,0x0e 24780xf0,0x23,0x02,0x0e 24790x20,0x40,0x02,0x0e 24800xf0,0x62,0x02,0x0e 2481# CHECK: tbl v0.8b, {v1.16b}, v2.8b 2482# CHECK: tbl v16.8b, {v31.16b, v0.16b}, v2.8b 2483# CHECK: tbl v0.8b, {v1.16b, v2.16b, v3.16b}, v2.8b 2484# CHECK: tbl v16.8b, {v23.16b, v24.16b, v25.16b, v26.16b}, v2.8b 2485 24860x20,0x00,0x02,0x4e 24870xf0,0x23,0x02,0x4e 24880x20,0x40,0x02,0x4e 24890xe0,0x63,0x02,0x4e 2490# CHECK: tbl v0.16b, {v1.16b}, v2.16b 2491# CHECK: tbl v16.16b, {v31.16b, v0.16b}, v2.16b 2492# CHECK: tbl v0.16b, {v1.16b, v2.16b, v3.16b}, v2.16b 2493# CHECK: tbl v0.16b, {v31.16b, v0.16b, v1.16b, v2.16b}, v2.16b 2494 24950x20,0x10,0x02,0x0e 24960xf0,0x33,0x02,0x0e 24970x20,0x50,0x02,0x0e 24980xf0,0x72,0x02,0x0e 2499# CHECK: tbx v0.8b, {v1.16b}, v2.8b 2500# CHECK: tbx v16.8b, {v31.16b, v0.16b}, v2.8b 2501# CHECK: tbx v0.8b, {v1.16b, v2.16b, v3.16b}, v2.8b 2502# CHECK: tbx v16.8b, {v23.16b, v24.16b, v25.16b, v26.16b}, v2.8b 2503 25040x20,0x10,0x02,0x4e 25050xf0,0x33,0x02,0x4e 25060x20,0x50,0x02,0x4e 25070xf0,0x73,0x02,0x4e 2508# CHECK: tbx v0.16b, {v1.16b}, v2.16b 2509# CHECK: tbx v16.16b, {v31.16b, v0.16b}, v2.16b 2510# CHECK: tbx v0.16b, {v1.16b, v2.16b, v3.16b}, v2.16b 2511# CHECK: tbx v16.16b, {v31.16b, v0.16b, v1.16b, v2.16b}, v2.16b 2512 2513