# RUN: llvm-mc -triple aarch64-none-linux-gnu -mattr=+neon -disassemble < %s | FileCheck %s #------------------------------------------------------------------------------ # Vector Integer Add/Sub #------------------------------------------------------------------------------ # CHECK: add v31.8b, v31.8b, v31.8b # CHECK: sub v0.2d, v0.2d, v0.2d 0xff 0x87 0x3f 0x0e 0x00 0x84 0xe0 0x6e #------------------------------------------------------------------------------ # Vector Floating-Point Add/Sub #------------------------------------------------------------------------------ # CHECK: fadd v0.4s, v0.4s, v0.4s # CHECK: fsub v31.2s, v31.2s, v31.2s 0x00 0xd4 0x20 0x4e 0xff 0xd7 0xbf 0x0e #------------------------------------------------------------------------------ # Vector Integer Mul #------------------------------------------------------------------------------ # CHECK: mul v0.8b, v1.8b, v2.8b 0x20 0x9c 0x22 0x0e #------------------------------------------------------------------------------ # Vector Floating-Point Mul/Div #------------------------------------------------------------------------------ # CHECK: fmul v0.2s, v1.2s, v2.2s # CHECK: fdiv v31.2s, v31.2s, v31.2s 0x20 0xdc 0x22 0x2e 0xff 0xff 0x3f 0x2e #---------------------------------------------------------------------- # Vector Polynomial Multiply #---------------------------------------------------------------------- # CHECK: pmul v0.8b, v15.8b, v16.8b # CHECK: pmul v31.16b, v7.16b, v8.16b 0xe0 0x9d 0x30 0x2e 0xff 0x9c 0x28 0x6e #------------------------------------------------------------------------------ # Vector And, Orr, Eor, Orn, Bic #------------------------------------------------------------------------------ # CHECK: and v2.8b, v2.8b, v2.8b # CHECK: orr v31.16b, v31.16b, v30.16b # CHECK: eor v0.16b, v1.16b, v2.16b # CHECK: orn v9.16b, v10.16b, v11.16b # CHECK: bic v31.8b, v30.8b, v29.8b 0x42 0x1c 0x22 0x0e 0xff 0x1f 0xbe 0x4e 0x20 0x1c 0x22 0x6e 0x49 0x1d 0xeb 0x4e 0xdf 0x1f 0x7d 0x0e #------------------------------------------------------------------------------ # Vector Bsl, Bit, Bif #------------------------------------------------------------------------------ # CHECK: bsl v0.8b, v1.8b, v2.8b # CHECK: bit v31.16b, v31.16b, v31.16b # CHECK: bif v0.16b, v1.16b, v2.16b 0x20 0x1c 0x62 0x2e 0xff 0x1f 0xbf 0x6e 0x20 0x1c 0xe2 0x6e #------------------------------------------------------------------------------ # Vector Integer Multiply-accumulate and Multiply-subtract #------------------------------------------------------------------------------ # CHECK: mla v0.8b, v1.8b, v2.8b # CHECK: mls v31.4h, v31.4h, v31.4h 0x20 0x94 0x22 0x0e 0xff 0x97 0x7f 0x2e #------------------------------------------------------------------------------ # Vector Floating-Point Multiply-accumulate and Multiply-subtract #------------------------------------------------------------------------------ # CHECK: fmla v0.2s, v1.2s, v2.2s # CHECK: fmls v31.2s, v31.2s, v31.2s 0x20 0xcc 0x22 0x0e 0xff 0xcf 0xbf 0x0e #------------------------------------------------------------------------------ # Vector Move Immediate Shifted # Vector Move Inverted Immediate Shifted # Vector Bitwise Bit Clear (AND NOT) - immediate # Vector Bitwise OR - immedidate #------------------------------------------------------------------------------ # CHECK: movi v31.4s, #0xff, lsl #24 # CHECK: mvni v0.2s, #0x0 # CHECK: bic v15.4h, #0xf, lsl #8 # CHECK: orr v16.8h, #0x1f 0xff 0x67 0x07 0x4f 0x00 0x04 0x00 0x2f 0xef 0xb5 0x00 0x2f 0xf0 0x97 0x00 0x4f #------------------------------------------------------------------------------ # Vector Move Immediate Masked # Vector Move Inverted Immediate Masked #------------------------------------------------------------------------------ # CHECK: movi v8.2s, #0x8, msl #8 # CHECK: mvni v16.4s, #0x10, msl #16 0x08 0xc5 0x00 0x0f 0x10 0xd6 0x00 0x6f #------------------------------------------------------------------------------ # Vector Immediate - per byte # Vector Move Immediate - bytemask, per doubleword # Vector Move Immediate - bytemask, one doubleword #------------------------------------------------------------------------------ # CHECK: movi v16.8b, #0xff # CHECK: movi v31.16b, #0x1f # CHECK: movi d15, #0xff00ff00ff00ff # CHECK: movi v31.2d, #0xff0000ff0000ffff 0xf0 0xe7 0x07 0x0f 0xff 0xe7 0x00 0x4f 0xaf 0xe6 0x02 0x2f 0x7f 0xe6 0x04 0x6f #------------------------------------------------------------------------------ # Vector Floating Point Move Immediate #------------------------------------------------------------------------------ # CHECK: fmov v0.2s, #13.0 # CHECK: fmov v15.4s, #1.0 # CHECK: fmov v31.2d, #-1.25 0x40 0xf5 0x01 0x0f 0x0f 0xf6 0x03 0x4f 0x9f 0xf6 0x07 0x6f #------------------------------------------------------------------------------ # Vector Move - register #------------------------------------------------------------------------------ # CHECK: mov v1.16b, v15.16b # CHECK: mov v25.8b, v4.8b 0xe1 0x1d 0xaf 0x4e 0x99 0x1c 0xa4 0x0e #---------------------------------------------------------------------- # Vector Absolute Difference and Accumulate (Signed, Unsigned) # Vector Absolute Difference (Signed, Unsigned) # Vector Absolute Difference (Floating Point) #---------------------------------------------------------------------- # CHECK: uaba v0.8b, v1.8b, v2.8b # CHECK: saba v31.16b, v30.16b, v29.16b # CHECK: uabd v15.4h, v16.4h, v17.4h # CHECK: sabd v5.4h, v4.4h, v6.4h # CHECK: fabd v1.4s, v31.4s, v16.4s 0x20 0x7c 0x22 0x2e 0xdf 0x7f 0x3d 0x4e 0x0f 0x76 0x71 0x2e 0x85 0x74 0x66 0x0e 0xe1 0xd7 0xb0 0x6e #---------------------------------------------------------------------- # Scalar Integer Add # Scalar Integer Sub #---------------------------------------------------------------------- # CHECK: add d17, d31, d29 # CHECK: sub d15, d5, d16 0xf1 0x87 0xfd 0x5e 0xaf 0x84 0xf0 0x7e #---------------------------------------------------------------------- # Vector Reciprocal Square Root Step (Floating Point) #---------------------------------------------------------------------- # CHECK: frsqrts v31.2d, v15.2d, v8.2d 0xff 0xfd 0xe8 0x4e #---------------------------------------------------------------------- # Vector Reciprocal Step (Floating Point) #---------------------------------------------------------------------- # CHECK: frecps v5.4s, v7.4s, v16.4s 0xe5 0xfc 0x30 0x4e #---------------------------------------------------------------------- # Vector Absolute Compare Mask Less Than Or Equal (Floating Point) #---------------------------------------------------------------------- # CHECK: facge v0.4s, v31.4s, v16.4s 0xe0 0xef 0x30 0x6e #---------------------------------------------------------------------- # Vector Absolute Compare Mask Less Than (Floating Point) #---------------------------------------------------------------------- # CHECK: facgt v31.2d, v29.2d, v28.2d 0xbf 0xef 0xfc 0x6e #---------------------------------------------------------------------- # Vector Compare Mask Equal (Integer) #---------------------------------------------------------------------- # CHECK: cmeq v5.16b, v15.16b, v31.16b 0xe5 0x8d 0x3f 0x6e #---------------------------------------------------------------------- # Vector Compare Mask Higher or Same (Unsigned Integer) #---------------------------------------------------------------------- # CHECK: cmhs v1.8b, v16.8b, v30.8b 0x01 0x3e 0x3e 0x2e #---------------------------------------------------------------------- # Vector Compare Mask Greater Than or Equal (Integer) #---------------------------------------------------------------------- # CHECK: cmge v20.4h, v11.4h, v23.4h 0x74 0x3d 0x77 0x0e #---------------------------------------------------------------------- # Vector Compare Mask Higher (Unsigned Integer) # CHECK: cmhi v13.8h, v3.8h, v27.8h 0x6d 0x34 0x7b 0x6e #---------------------------------------------------------------------- # Vector Compare Mask Greater Than (Integer) #---------------------------------------------------------------------- # CHECK: cmgt v9.4s, v4.4s, v28.4s 0x89 0x34 0xbc 0x4e #---------------------------------------------------------------------- # Vector Compare Mask Bitwise Test (Integer) #---------------------------------------------------------------------- # CHECK: cmtst v21.2s, v19.2s, v18.2s 0x75 0x8e 0xb2 0x0e #---------------------------------------------------------------------- # Vector Compare Mask Equal (Floating Point) #---------------------------------------------------------------------- # CHECK: fcmeq v0.2s, v15.2s, v16.2s 0xe0 0xe5 0x30 0x0e #---------------------------------------------------------------------- # Vector Compare Mask Greater Than Or Equal (Floating Point) #---------------------------------------------------------------------- # CHECK: fcmge v31.4s, v7.4s, v29.4s 0xff 0xe4 0x3d 0x6e #---------------------------------------------------------------------- # Vector Compare Mask Greater Than (Floating Point) #---------------------------------------------------------------------- # CHECK: fcmgt v17.4s, v8.4s, v25.4s 0x11 0xe5 0xb9 0x6e #---------------------------------------------------------------------- # Vector Compare Mask Equal to Zero (Integer) #---------------------------------------------------------------------- # CHECK: cmeq v31.16b, v15.16b, #0x0 0xff 0x99 0x20 0x4e #---------------------------------------------------------------------- # Vector Compare Mask Greater Than or Equal to Zero (Signed Integer) #---------------------------------------------------------------------- # CHECK: cmge v3.8b, v15.8b, #0x0 0xe3 0x89 0x20 0x2e #---------------------------------------------------------------------- # Vector Compare Mask Greater Than Zero (Signed Integer) #---------------------------------------------------------------------- # CHECK: cmgt v22.2s, v9.2s, #0x0 0x36 0x89 0xa0 0x0e #---------------------------------------------------------------------- # Vector Compare Mask Less Than or Equal To Zero (Signed Integer) #---------------------------------------------------------------------- # CHECK: cmle v5.2d, v14.2d, #0x0 0xc5 0x99 0xe0 0x6e #---------------------------------------------------------------------- # Vector Compare Mask Less Than Zero (Signed Integer) #---------------------------------------------------------------------- # CHECK: cmlt v13.8h, v11.8h, #0x0 0x6d 0xa9 0x60 0x4e #---------------------------------------------------------------------- # Vector Compare Mask Equal to Zero (Floating Point) #---------------------------------------------------------------------- # CHECK: fcmeq v15.2s, v21.2s, #0.0 0xaf 0xda 0xa0 0x0e #---------------------------------------------------------------------- # Vector Compare Mask Greater Than or Equal to Zero (Floating Point) #---------------------------------------------------------------------- # CHECK: fcmge v14.2d, v13.2d, #0.0 0xae 0xc9 0xe0 0x6e #---------------------------------------------------------------------- # Vector Compare Mask Greater Than Zero (Floating Point) #---------------------------------------------------------------------- # CHECK: fcmgt v9.4s, v23.4s, #0.0 0xe9 0xca 0xa0 0x4e #---------------------------------------------------------------------- # Vector Compare Mask Less Than or Equal To Zero (Floating Point) #---------------------------------------------------------------------- # CHECK: fcmle v11.2d, v6.2d, #0.0 0xcb 0xd8 0xe0 0x6e #---------------------------------------------------------------------- # Vector Compare Mask Less Than Zero (Floating Point) #---------------------------------------------------------------------- # CHECK: fcmlt v12.4s, v25.4s, #0.0 0x2c 0xeb 0xa0 0x4e #------------------------------------------------------------------------------ # Vector Integer Halving Add (Signed) # Vector Integer Halving Add (Unsigned) # Vector Integer Halving Sub (Signed) # Vector Integer Halving Sub (Unsigned) #------------------------------------------------------------------------------ # CHECK: shadd v0.8b, v31.8b, v29.8b # CHECK: uhadd v15.16b, v16.16b, v17.16b # CHECK: shsub v0.4h, v1.4h, v2.4h # CHECK: uhadd v5.8h, v7.8h, v8.8h # CHECK: shsub v9.2s, v11.2s, v21.2s # CHECK: uhsub v22.4s, v30.4s, v19.4s 0xe0 0x07 0x3d 0x0e 0x0f 0x06 0x31 0x6e 0x20 0x24 0x62 0x0e 0xe5 0x04 0x68 0x6e 0x69 0x25 0xb5 0x0e 0xd6 0x27 0xb3 0x6e #------------------------------------------------------------------------------ # Vector Integer Rouding Halving Add (Signed) # Vector Integer Rouding Halving Add (Unsigned) #------------------------------------------------------------------------------ # CHECK: srhadd v3.8b, v5.8b, v7.8b # CHECK: urhadd v7.16b, v17.16b, v27.16b # CHECK: srhadd v10.4h, v11.4h, v13.4h # CHECK: urhadd v1.8h, v2.8h, v3.8h # CHECK: srhadd v4.2s, v5.2s, v6.2s # CHECK: urhadd v7.4s, v7.4s, v7.4s 0xa3 0x14 0x27 0x0e 0x27 0x16 0x3b 0x6e 0x6a 0x15 0x6d 0x0e 0x41 0x14 0x63 0x6e 0xa4 0x14 0xa6 0x0e 0xe7 0x14 0xa7 0x6e #------------------------------------------------------------------------------ # Vector Integer Saturating Add (Signed) # Vector Integer Saturating Add (Unsigned) # Vector Integer Saturating Sub (Signed) # Vector Integer Saturating Sub (Unsigned) #------------------------------------------------------------------------------ # CHECK: sqsub v0.8b, v1.8b, v2.8b # CHECK: sqadd v0.16b, v1.16b, v2.16b # CHECK: uqsub v0.4h, v1.4h, v2.4h # CHECK: uqadd v0.8h, v1.8h, v2.8h # CHECK: sqadd v0.2s, v1.2s, v2.2s # CHECK: sqsub v0.4s, v1.4s, v2.4s # CHECK: sqsub v0.2d, v1.2d, v2.2d 0x20 0x2c 0x22 0x0e 0x20 0x0c 0x22 0x4e 0x20 0x2c 0x62 0x2e 0x20 0x0c 0x62 0x6e 0x20 0x0c 0xa2 0x0e 0x20 0x2c 0xa2 0x4e 0x20 0x2c 0xe2 0x4e #------------------------------------------------------------------------------ # Scalar Integer Saturating Add (Signed) # Scalar Integer Saturating Add (Unsigned) # Scalar Integer Saturating Sub (Signed) # Scalar Integer Saturating Add (Unsigned) #------------------------------------------------------------------------------ # CHECK: sqadd b20, b11, b15 # CHECK: uqadd h0, h1, h5 # CHECK: sqsub s20, s10, s7 # CHECK: uqsub d16, d16, d16 0x74 0x0d 0x2f 0x5e 0x20 0x0c 0x65 0x7e 0x54 0x2d 0xa7 0x5e 0x10 0x2e 0xf0 0x7e #---------------------------------------------------------------------- # Vector Shift Left (Signed and Unsigned Integer) #---------------------------------------------------------------------- # CHECK: sshl v10.8b, v15.8b, v22.8b # CHECK: ushl v10.16b, v5.16b, v2.16b # CHECK: sshl v10.4h, v15.4h, v22.4h # CHECK: ushl v10.8h, v5.8h, v2.8h # CHECK: sshl v10.2s, v15.2s, v22.2s # CHECK: ushl v10.4s, v5.4s, v2.4s # CHECK: sshl v0.2d, v1.2d, v2.2d 0xea 0x45 0x36 0x0e 0xaa 0x44 0x22 0x6e 0xea 0x45 0x76 0x0e 0xaa 0x44 0x62 0x6e 0xea 0x45 0xb6 0x0e 0xaa 0x44 0xa2 0x6e 0x20 0x44 0xe2 0x4e #---------------------------------------------------------------------- # Vector Saturating Shift Left (Signed and Unsigned Integer) #---------------------------------------------------------------------- # CHECK: sqshl v1.8b, v15.8b, v22.8b # CHECK: uqshl v2.16b, v14.16b, v23.16b # CHECK: sqshl v3.4h, v13.4h, v24.4h # CHECK: uqshl v4.8h, v12.8h, v25.8h # CHECK: sqshl v5.2s, v11.2s, v26.2s # CHECK: uqshl v6.4s, v10.4s, v27.4s # CHECK: uqshl v0.2d, v1.2d, v2.2d 0xe1 0x4d 0x36 0x0e 0xc2 0x4d 0x37 0x6e 0xa3 0x4d 0x78 0x0e 0x84 0x4d 0x79 0x6e 0x65 0x4d 0xba 0x0e 0x46 0x4d 0xbb 0x6e 0x20 0x4c 0xe2 0x6e #---------------------------------------------------------------------- # Vector Rouding Shift Left (Signed and Unsigned Integer) #---------------------------------------------------------------------- # CHECK: srshl v10.8b, v5.8b, v22.8b # CHECK: urshl v10.16b, v5.16b, v2.16b # CHECK: srshl v1.4h, v5.4h, v31.4h # CHECK: urshl v1.8h, v5.8h, v2.8h # CHECK: srshl v10.2s, v15.2s, v2.2s # CHECK: urshl v1.4s, v5.4s, v2.4s # CHECK: urshl v0.2d, v1.2d, v2.2d 0xaa 0x54 0x36 0x0e 0xaa 0x54 0x22 0x6e 0xa1 0x54 0x7f 0x0e 0xa1 0x54 0x62 0x6e 0xea 0x55 0xa2 0x0e 0xa1 0x54 0xa2 0x6e 0x20 0x54 0xe2 0x6e #---------------------------------------------------------------------- # Vector Saturating Rouding Shift Left (Signed and Unsigned Integer) #---------------------------------------------------------------------- # CHECK: sqrshl v1.8b, v15.8b, v22.8b # CHECK: uqrshl v2.16b, v14.16b, v23.16b # CHECK: sqrshl v3.4h, v13.4h, v24.4h # CHECK: uqrshl v4.8h, v12.8h, v25.8h # CHECK: sqrshl v5.2s, v11.2s, v26.2s # CHECK: uqrshl v6.4s, v10.4s, v27.4s # CHECK: uqrshl v6.4s, v10.4s, v27.4s 0xe1 0x5d 0x36 0x0e 0xc2 0x5d 0x37 0x6e 0xa3 0x5d 0x78 0x0e 0x84 0x5d 0x79 0x6e 0x65 0x5d 0xba 0x0e 0x46 0x5d 0xbb 0x6e 0x46 0x5d 0xbb 0x6e #---------------------------------------------------------------------- # Scalar Integer Shift Left (Signed, Unsigned) #---------------------------------------------------------------------- # CHECK: sshl d31, d31, d31 # CHECK: ushl d0, d0, d0 0xff 0x47 0xff 0x5e 0x00 0x44 0xe0 0x7e #---------------------------------------------------------------------- # Scalar Integer Saturating Shift Left (Signed, Unsigned) #---------------------------------------------------------------------- # CHECK: sqshl d31, d31, d31 # CHECK: uqshl s23, s20, s16 # CHECK: sqshl h3, h4, h15 # CHECK: uqshl b11, b20, b30 0xff 0x4f 0xff 0x5e 0x97 0x4e 0xb0 0x7e 0x83 0x4c 0x6f 0x5e 0x8b 0x4e 0x3e 0x7e #---------------------------------------------------------------------- # Scalar Integer Rouding Shift Left (Signed, Unsigned) #---------------------------------------------------------------------- # CHECK: srshl d16, d16, d16 # CHECK: urshl d8, d7, d4 0x10 0x56 0xf0 0x5e 0xe8 0x54 0xe4 0x7e #---------------------------------------------------------------------- # Scalar Integer Saturating Rounding Shift Left (Signed, Unsigned) #---------------------------------------------------------------------- # CHECK: sqrshl d31, d31, d31 # CHECK: uqrshl s23, s20, s16 # CHECK: sqrshl h3, h4, h15 # CHECK: uqrshl b11, b20, b30 0xff 0x5f 0xff 0x5e 0x97 0x5e 0xb0 0x7e 0x83 0x5c 0x6f 0x5e 0x8b 0x5e 0x3e 0x7e #---------------------------------------------------------------------- # Vector Maximum (Signed and Unsigned Integer) #---------------------------------------------------------------------- # CHECK: smax v1.8b, v15.8b, v22.8b # CHECK: umax v2.16b, v14.16b, v23.16b # CHECK: smax v3.4h, v13.4h, v24.4h # CHECK: umax v4.8h, v12.8h, v25.8h # CHECK: smax v5.2s, v11.2s, v26.2s # CHECK: umax v6.4s, v10.4s, v27.4s 0xe1 0x65 0x36 0x0e 0xc2 0x65 0x37 0x6e 0xa3 0x65 0x78 0x0e 0x84 0x65 0x79 0x6e 0x65 0x65 0xba 0x0e 0x46 0x65 0xbb 0x6e #---------------------------------------------------------------------- # Vector Minimum (Signed and Unsigned Integer) #---------------------------------------------------------------------- # CHECK: umin v1.8b, v15.8b, v22.8b # CHECK: smin v2.16b, v14.16b, v23.16b # CHECK: umin v3.4h, v13.4h, v24.4h # CHECK: smin v4.8h, v12.8h, v25.8h # CHECK: umin v5.2s, v11.2s, v26.2s # CHECK: smin v6.4s, v10.4s, v27.4s 0xe1 0x6d 0x36 0x2e 0xc2 0x6d 0x37 0x4e 0xa3 0x6d 0x78 0x2e 0x84 0x6d 0x79 0x4e 0x65 0x6d 0xba 0x2e 0x46 0x6d 0xbb 0x4e #---------------------------------------------------------------------- # Vector Maximum (Floating Point) #---------------------------------------------------------------------- # CHECK: fmax v29.2s, v28.2s, v25.2s # CHECK: fmax v9.4s, v8.4s, v5.4s # CHECK: fmax v11.2d, v10.2d, v7.2d 0x9d 0xf7 0x39 0x0e 0x09 0xf5 0x25 0x4e 0x4b 0xf5 0x67 0x4e #---------------------------------------------------------------------- # Vector Minimum (Floating Point) #---------------------------------------------------------------------- # CHECK: fmin v29.2s, v28.2s, v25.2s # CHECK: fmin v9.4s, v8.4s, v5.4s # CHECK: fmin v11.2d, v10.2d, v7.2d 0x9d 0xf7 0xb9 0x0e 0x09 0xf5 0xa5 0x4e 0x4b 0xf5 0xe7 0x4e #---------------------------------------------------------------------- # Vector maxNum (Floating Point) #---------------------------------------------------------------------- # CHECK: fmaxnm v9.2s, v8.2s, v5.2s # CHECK: fmaxnm v9.4s, v8.4s, v5.4s # CHECK: fmaxnm v11.2d, v10.2d, v7.2d 0x09 0xc5 0x25 0x0e 0x09 0xc5 0x25 0x4e 0x4b 0xc5 0x67 0x4e #---------------------------------------------------------------------- # Vector minNum (Floating Point) #---------------------------------------------------------------------- # CHECK: fminnm v2.2s, v8.2s, v25.2s # CHECK: fminnm v9.4s, v8.4s, v5.4s # CHECK: fminnm v11.2d, v10.2d, v7.2d 0x02 0xc5 0xb9 0x0e 0x09 0xc5 0xa5 0x4e 0x4b 0xc5 0xe7 0x4e #---------------------------------------------------------------------- # Vector Maximum Pairwise (Signed and Unsigned Integer) #---------------------------------------------------------------------- # CHECK: smaxp v1.8b, v15.8b, v22.8b # CHECK: umaxp v2.16b, v14.16b, v23.16b # CHECK: smaxp v3.4h, v13.4h, v24.4h # CHECK: umaxp v4.8h, v12.8h, v25.8h # CHECK: smaxp v5.2s, v11.2s, v26.2s # CHECK: umaxp v6.4s, v10.4s, v27.4s 0xe1 0xa5 0x36 0x0e 0xc2 0xa5 0x37 0x6e 0xa3 0xa5 0x78 0x0e 0x84 0xa5 0x79 0x6e 0x65 0xa5 0xba 0x0e 0x46 0xa5 0xbb 0x6e #---------------------------------------------------------------------- # Vector Minimum Pairwise (Signed and Unsigned Integer) #---------------------------------------------------------------------- # CHECK: uminp v1.8b, v15.8b, v22.8b # CHECK: sminp v2.16b, v14.16b, v23.16b # CHECK: uminp v3.4h, v13.4h, v24.4h # CHECK: sminp v4.8h, v12.8h, v25.8h # CHECK: uminp v5.2s, v11.2s, v26.2s # CHECK: sminp v6.4s, v10.4s, v27.4s 0xe1 0xad 0x36 0x2e 0xc2 0xad 0x37 0x4e 0xa3 0xad 0x78 0x2e 0x84 0xad 0x79 0x4e 0x65 0xad 0xba 0x2e 0x46 0xad 0xbb 0x4e #---------------------------------------------------------------------- # Vector Maximum Pairwise (Floating Point) #---------------------------------------------------------------------- # CHECK: fmaxp v29.2s, v28.2s, v25.2s # CHECK: fmaxp v9.4s, v8.4s, v5.4s # CHECK: fmaxp v11.2d, v10.2d, v7.2d 0x9d 0xf7 0x39 0x2e 0x09 0xf5 0x25 0x6e 0x4b 0xf5 0x67 0x6e #---------------------------------------------------------------------- # Vector Minimum Pairwise (Floating Point) #---------------------------------------------------------------------- # CHECK: fminp v29.2s, v28.2s, v25.2s # CHECK: fminp v9.4s, v8.4s, v5.4s # CHECK: fminp v11.2d, v10.2d, v7.2d 0x9d 0xf7 0xb9 0x2e 0x09 0xf5 0xa5 0x6e 0x4b 0xf5 0xe7 0x6e #---------------------------------------------------------------------- # Vector maxNum Pairwise (Floating Point) #---------------------------------------------------------------------- # CHECK: fmaxnmp v9.2s, v8.2s, v5.2s # CHECK: fmaxnmp v9.4s, v8.4s, v5.4s # CHECK: fmaxnmp v11.2d, v10.2d, v7.2d 0x09 0xc5 0x25 0x2e 0x09 0xc5 0x25 0x6e 0x4b 0xc5 0x67 0x6e #---------------------------------------------------------------------- # Vector minNum Pairwise (Floating Point) #---------------------------------------------------------------------- # CHECK: fminnmp v2.2s, v8.2s, v25.2s # CHECK: fminnmp v9.4s, v8.4s, v5.4s # CHECK: fminnmp v11.2d, v10.2d, v7.2d 0x02 0xc5 0xb9 0x2e 0x09 0xc5 0xa5 0x6e 0x4b 0xc5 0xe7 0x6e #------------------------------------------------------------------------------ # Vector Add Pairwise (Integer) #------------------------------------------------------------------------------ # CHECK: addp v31.8b, v31.8b, v31.8b # CHECK: addp v0.2d, v0.2d, v0.2d 0xff 0xbf 0x3f 0x0e 0x00 0xbc 0xe0 0x4e #------------------------------------------------------------------------------ # Vector Add Pairwise (Floating Point) #------------------------------------------------------------------------------ # CHECK: faddp v0.4s, v0.4s, v0.4s # CHECK: faddp v31.2s, v31.2s, v31.2s 0x00 0xd4 0x20 0x6e 0xff 0xd7 0x3f 0x2e #------------------------------------------------------------------------------ # Vector Saturating Doubling Multiply High # Vector Saturating Rouding Doubling Multiply High #------------------------------------------------------------------------------ # CHECK: sqdmulh v31.2s, v31.2s, v31.2s # CHECK: sqdmulh v5.4s, v7.4s, v9.4s # CHECK: sqrdmulh v31.4h, v3.4h, v13.4h # CHECK: sqrdmulh v0.8h, v10.8h, v20.8h 0xff 0xb7 0xbf 0x0e 0xe5 0xb4 0xa9 0x4e 0x7f 0xb4 0x6d 0x2e 0x40 0xb5 0x74 0x6e #------------------------------------------------------------------------------ # Vector Multiply Extended #------------------------------------------------------------------------------ # CHECK: fmulx v1.2s, v22.2s, v2.2s # CHECK: fmulx v21.4s, v15.4s, v3.4s # CHECK: fmulx v11.2d, v5.2d, v23.2d 0xc1 0xde 0x22 0x0e 0xf5 0xdd 0x23 0x4e 0xab 0xdc 0x77 0x4e #---------------------------------------------------------------------- # Vector Shift Left by Immediate #---------------------------------------------------------------------- # CHECK: shl v0.4h, v1.4h, #3 # CHECK: shl v0.16b, v1.16b, #3 # CHECK: shl v0.4s, v1.4s, #3 # CHECK: shl v0.2d, v1.2d, #3 0x20,0x54,0x13,0x0f 0x20,0x54,0x0b,0x4f 0x20,0x54,0x23,0x4f 0x20,0x54,0x43,0x4f #---------------------------------------------------------------------- # Vector Shift Left Long (Signed, Unsigned) by Immediate #---------------------------------------------------------------------- # CHECK: sshll v0.2d, v1.2s, #3 # CHECK: sshll2 v0.4s, v1.8h, #3 # CHECK: ushll v0.4s, v1.4h, #3 # CHECK: ushll2 v0.8h, v1.16b, #3 0x20 0xa4 0x23 0x0f 0x20 0xa4 0x13 0x4f 0x20 0xa4 0x13 0x2f 0x20 0xa4 0x0b 0x6f #----------------------------------------------------------------------------- #Integer shift right (Signed) #----------------------------------------------------------------------------- # CHECK: sshr v0.8b, v1.8b, #3 # CHECK: sshr v0.4h, v1.4h, #3 # CHECK: sshr v0.2s, v1.2s, #3 # CHECK: sshr v0.16b, v1.16b, #3 # CHECK: sshr v0.8h, v1.8h, #3 # CHECK: sshr v0.4s, v1.4s, #3 # CHECK: sshr v0.2d, v1.2d, #3 0x20,0x04,0x0d,0x0f 0x20,0x04,0x1d,0x0f 0x20,0x04,0x3d,0x0f 0x20,0x04,0x0d,0x4f 0x20,0x04,0x1d,0x4f 0x20,0x04,0x3d,0x4f 0x20,0x04,0x7d,0x4f #----------------------------------------------------------------------------- #Integer shift right (Unsigned) #----------------------------------------------------------------------------- # CHECK: ushr v0.8b, v1.8b, #3 # CHECK: ushr v0.4h, v1.4h, #3 # CHECK: ushr v0.2s, v1.2s, #3 # CHECK: ushr v0.16b, v1.16b, #3 # CHECK: ushr v0.8h, v1.8h, #3 # CHECK: ushr v0.4s, v1.4s, #3 # CHECK: ushr v0.2d, v1.2d, #3 0x20,0x04,0x0d,0x2f 0x20,0x04,0x1d,0x2f 0x20,0x04,0x3d,0x2f 0x20,0x04,0x0d,0x6f 0x20,0x04,0x1d,0x6f 0x20,0x04,0x3d,0x6f 0x20,0x04,0x7d,0x6f #----------------------------------------------------------------------------- #Integer shift right and accumulate (Signed) #----------------------------------------------------------------------------- # CHECK: ssra v0.8b, v1.8b, #3 # CHECK: ssra v0.4h, v1.4h, #3 # CHECK: ssra v0.2s, v1.2s, #3 # CHECK: ssra v0.16b, v1.16b, #3 # CHECK: ssra v0.8h, v1.8h, #3 # CHECK: ssra v0.4s, v1.4s, #3 # CHECK: ssra v0.2d, v1.2d, #3 0x20,0x14,0x0d,0x0f 0x20,0x14,0x1d,0x0f 0x20,0x14,0x3d,0x0f 0x20,0x14,0x0d,0x4f 0x20,0x14,0x1d,0x4f 0x20,0x14,0x3d,0x4f 0x20,0x14,0x7d,0x4f #----------------------------------------------------------------------------- #Integer shift right and accumulate (Unsigned) #----------------------------------------------------------------------------- # CHECK: usra v0.8b, v1.8b, #3 # CHECK: usra v0.4h, v1.4h, #3 # CHECK: usra v0.2s, v1.2s, #3 # CHECK: usra v0.16b, v1.16b, #3 # CHECK: usra v0.8h, v1.8h, #3 # CHECK: usra v0.4s, v1.4s, #3 # CHECK: usra v0.2d, v1.2d, #3 0x20,0x14,0x0d,0x2f 0x20,0x14,0x1d,0x2f 0x20,0x14,0x3d,0x2f 0x20,0x14,0x0d,0x6f 0x20,0x14,0x1d,0x6f 0x20,0x14,0x3d,0x6f 0x20,0x14,0x7d,0x6f #----------------------------------------------------------------------------- #Integer rounding shift right (Signed) #----------------------------------------------------------------------------- # CHECK: srshr v0.8b, v1.8b, #3 # CHECK: srshr v0.4h, v1.4h, #3 # CHECK: srshr v0.2s, v1.2s, #3 # CHECK: srshr v0.16b, v1.16b, #3 # CHECK: srshr v0.8h, v1.8h, #3 # CHECK: srshr v0.4s, v1.4s, #3 # CHECK: srshr v0.2d, v1.2d, #3 0x20,0x24,0x0d,0x0f 0x20,0x24,0x1d,0x0f 0x20,0x24,0x3d,0x0f 0x20,0x24,0x0d,0x4f 0x20,0x24,0x1d,0x4f 0x20,0x24,0x3d,0x4f 0x20,0x24,0x7d,0x4f #----------------------------------------------------------------------------- #Integer rounding shift right (Unsigned) #----------------------------------------------------------------------------- # CHECK: urshr v0.8b, v1.8b, #3 # CHECK: urshr v0.4h, v1.4h, #3 # CHECK: urshr v0.2s, v1.2s, #3 # CHECK: urshr v0.16b, v1.16b, #3 # CHECK: urshr v0.8h, v1.8h, #3 # CHECK: urshr v0.4s, v1.4s, #3 # CHECK: urshr v0.2d, v1.2d, #3 0x20,0x24,0x0d,0x2f 0x20,0x24,0x1d,0x2f 0x20,0x24,0x3d,0x2f 0x20,0x24,0x0d,0x6f 0x20,0x24,0x1d,0x6f 0x20,0x24,0x3d,0x6f 0x20,0x24,0x7d,0x6f #----------------------------------------------------------------------------- #Integer rounding shift right and accumulate (Signed) #----------------------------------------------------------------------------- # CHECK: srsra v0.8b, v1.8b, #3 # CHECK: srsra v0.4h, v1.4h, #3 # CHECK: srsra v0.2s, v1.2s, #3 # CHECK: srsra v0.16b, v1.16b, #3 # CHECK: srsra v0.8h, v1.8h, #3 # CHECK: srsra v0.4s, v1.4s, #3 # CHECK: srsra v0.2d, v1.2d, #3 0x20,0x34,0x0d,0x0f 0x20,0x34,0x1d,0x0f 0x20,0x34,0x3d,0x0f 0x20,0x34,0x0d,0x4f 0x20,0x34,0x1d,0x4f 0x20,0x34,0x3d,0x4f 0x20,0x34,0x7d,0x4f #----------------------------------------------------------------------------- #Integer rounding shift right and accumulate (Unsigned) #----------------------------------------------------------------------------- # CHECK: ursra v0.8b, v1.8b, #3 # CHECK: ursra v0.4h, v1.4h, #3 # CHECK: ursra v0.2s, v1.2s, #3 # CHECK: ursra v0.16b, v1.16b, #3 # CHECK: ursra v0.8h, v1.8h, #3 # CHECK: ursra v0.4s, v1.4s, #3 # CHECK: ursra v0.2d, v1.2d, #3 0x20,0x34,0x0d,0x2f 0x20,0x34,0x1d,0x2f 0x20,0x34,0x3d,0x2f 0x20,0x34,0x0d,0x6f 0x20,0x34,0x1d,0x6f 0x20,0x34,0x3d,0x6f 0x20,0x34,0x7d,0x6f #----------------------------------------------------------------------------- #Integer shift right and insert #----------------------------------------------------------------------------- # CHECK: sri v0.8b, v1.8b, #3 # CHECK: sri v0.4h, v1.4h, #3 # CHECK: sri v0.2s, v1.2s, #3 # CHECK: sri v0.16b, v1.16b, #3 # CHECK: sri v0.8h, v1.8h, #3 # CHECK: sri v0.4s, v1.4s, #3 # CHECK: sri v0.2d, v1.2d, #3 0x20,0x44,0x0d,0x2f 0x20,0x44,0x1d,0x2f 0x20,0x44,0x3d,0x2f 0x20,0x44,0x0d,0x6f 0x20,0x44,0x1d,0x6f 0x20,0x44,0x3d,0x6f 0x20,0x44,0x7d,0x6f #----------------------------------------------------------------------------- #Integer shift left and insert #----------------------------------------------------------------------------- # CHECK: sli v0.8b, v1.8b, #3 # CHECK: sli v0.4h, v1.4h, #3 # CHECK: sli v0.2s, v1.2s, #3 # CHECK: sli v0.16b, v1.16b, #3 # CHECK: sli v0.8h, v1.8h, #3 # CHECK: sli v0.4s, v1.4s, #3 # CHECK: sli v0.2d, v1.2d, #3 0x20,0x54,0x0b,0x2f 0x20,0x54,0x13,0x2f 0x20,0x54,0x23,0x2f 0x20,0x54,0x0b,0x6f 0x20,0x54,0x13,0x6f 0x20,0x54,0x23,0x6f 0x20,0x54,0x43,0x6f #----------------------------------------------------------------------------- #Integer saturating shift left unsigned #----------------------------------------------------------------------------- # CHECK: sqshlu v0.8b, v1.8b, #3 # CHECK: sqshlu v0.4h, v1.4h, #3 # CHECK: sqshlu v0.2s, v1.2s, #3 # CHECK: sqshlu v0.16b, v1.16b, #3 # CHECK: sqshlu v0.8h, v1.8h, #3 # CHECK: sqshlu v0.4s, v1.4s, #3 # CHECK: sqshlu v0.2d, v1.2d, #3 0x20,0x64,0x0b,0x2f 0x20,0x64,0x13,0x2f 0x20,0x64,0x23,0x2f 0x20,0x64,0x0b,0x6f 0x20,0x64,0x13,0x6f 0x20,0x64,0x23,0x6f 0x20,0x64,0x43,0x6f #----------------------------------------------------------------------------- #Integer saturating shift left (Signed) #----------------------------------------------------------------------------- # CHECK: sqshl v0.8b, v1.8b, #3 # CHECK: sqshl v0.4h, v1.4h, #3 # CHECK: sqshl v0.2s, v1.2s, #3 # CHECK: sqshl v0.16b, v1.16b, #3 # CHECK: sqshl v0.8h, v1.8h, #3 # CHECK: sqshl v0.4s, v1.4s, #3 # CHECK: sqshl v0.2d, v1.2d, #3 0x20,0x74,0x0b,0x0f 0x20,0x74,0x13,0x0f 0x20,0x74,0x23,0x0f 0x20,0x74,0x0b,0x4f 0x20,0x74,0x13,0x4f 0x20,0x74,0x23,0x4f 0x20,0x74,0x43,0x4f #----------------------------------------------------------------------------- #Integer saturating shift left (Unsigned) #----------------------------------------------------------------------------- # CHECK: uqshl v0.8b, v1.8b, #3 # CHECK: uqshl v0.4h, v1.4h, #3 # CHECK: uqshl v0.2s, v1.2s, #3 # CHECK: uqshl v0.16b, v1.16b, #3 # CHECK: uqshl v0.8h, v1.8h, #3 # CHECK: uqshl v0.4s, v1.4s, #3 # CHECK: uqshl v0.2d, v1.2d, #3 0x20,0x74,0x0b,0x2f 0x20,0x74,0x13,0x2f 0x20,0x74,0x23,0x2f 0x20,0x74,0x0b,0x6f 0x20,0x74,0x13,0x6f 0x20,0x74,0x23,0x6f 0x20,0x74,0x43,0x6f #----------------------------------------------------------------------------- #Integer shift right narrow #----------------------------------------------------------------------------- # CHECK: shrn v0.8b, v1.8h, #3 # CHECK: shrn v0.4h, v1.4s, #3 # CHECK: shrn v0.2s, v1.2d, #3 # CHECK: shrn2 v0.16b, v1.8h, #3 # CHECK: shrn2 v0.8h, v1.4s, #3 # CHECK: shrn2 v0.4s, v1.2d, #3 0x20,0x84,0x0d,0x0f 0x20,0x84,0x1d,0x0f 0x20,0x84,0x3d,0x0f 0x20,0x84,0x0d,0x4f 0x20,0x84,0x1d,0x4f 0x20,0x84,0x3d,0x4f #----------------------------------------------------------------------------- #Integer saturating shift right unsigned narrow (Signed) #----------------------------------------------------------------------------- # CHECK: sqshrun v0.8b, v1.8h, #3 # CHECK: sqshrun v0.4h, v1.4s, #3 # CHECK: sqshrun v0.2s, v1.2d, #3 # CHECK: sqshrun2 v0.16b, v1.8h, #3 # CHECK: sqshrun2 v0.8h, v1.4s, #3 # CHECK: sqshrun2 v0.4s, v1.2d, #3 0x20,0x84,0x0d,0x2f 0x20,0x84,0x1d,0x2f 0x20,0x84,0x3d,0x2f 0x20,0x84,0x0d,0x6f 0x20,0x84,0x1d,0x6f 0x20,0x84,0x3d,0x6f #----------------------------------------------------------------------------- #Integer rounding shift right narrow #----------------------------------------------------------------------------- # CHECK: rshrn v0.8b, v1.8h, #3 # CHECK: rshrn v0.4h, v1.4s, #3 # CHECK: rshrn v0.2s, v1.2d, #3 # CHECK: rshrn2 v0.16b, v1.8h, #3 # CHECK: rshrn2 v0.8h, v1.4s, #3 # CHECK: rshrn2 v0.4s, v1.2d, #3 0x20,0x8c,0x0d,0x0f 0x20,0x8c,0x1d,0x0f 0x20,0x8c,0x3d,0x0f 0x20,0x8c,0x0d,0x4f 0x20,0x8c,0x1d,0x4f 0x20,0x8c,0x3d,0x4f #----------------------------------------------------------------------------- #Integer saturating shift right rounded unsigned narrow (Signed) #----------------------------------------------------------------------------- # CHECK: sqrshrun v0.8b, v1.8h, #3 # CHECK: sqrshrun v0.4h, v1.4s, #3 # CHECK: sqrshrun v0.2s, v1.2d, #3 # CHECK: sqrshrun2 v0.16b, v1.8h, #3 # CHECK: sqrshrun2 v0.8h, v1.4s, #3 # CHECK: sqrshrun2 v0.4s, v1.2d, #3 0x20,0x8c,0x0d,0x2f 0x20,0x8c,0x1d,0x2f 0x20,0x8c,0x3d,0x2f 0x20,0x8c,0x0d,0x6f 0x20,0x8c,0x1d,0x6f 0x20,0x8c,0x3d,0x6f #----------------------------------------------------------------------------- #Integer saturating shift right narrow (Signed) #----------------------------------------------------------------------------- # CHECK: sqshrn v0.8b, v1.8h, #3 # CHECK: sqshrn v0.4h, v1.4s, #3 # CHECK: sqshrn v0.2s, v1.2d, #3 # CHECK: sqshrn2 v0.16b, v1.8h, #3 # CHECK: sqshrn2 v0.8h, v1.4s, #3 # CHECK: sqshrn2 v0.4s, v1.2d, #3 0x20,0x94,0x0d,0x0f 0x20,0x94,0x1d,0x0f 0x20,0x94,0x3d,0x0f 0x20,0x94,0x0d,0x4f 0x20,0x94,0x1d,0x4f 0x20,0x94,0x3d,0x4f #----------------------------------------------------------------------------- #Integer saturating shift right narrow (Unsigned) #----------------------------------------------------------------------------- # CHECK: uqshrn v0.8b, v1.8h, #3 # CHECK: uqshrn v0.4h, v1.4s, #3 # CHECK: uqshrn v0.2s, v1.2d, #3 # CHECK: uqshrn2 v0.16b, v1.8h, #3 # CHECK: uqshrn2 v0.8h, v1.4s, #3 # CHECK: uqshrn2 v0.4s, v1.2d, #3 0x20,0x94,0x0d,0x2f 0x20,0x94,0x1d,0x2f 0x20,0x94,0x3d,0x2f 0x20,0x94,0x0d,0x6f 0x20,0x94,0x1d,0x6f 0x20,0x94,0x3d,0x6f #----------------------------------------------------------------------------- #Integer saturating shift right rounded narrow (Signed) #----------------------------------------------------------------------------- # CHECK: sqrshrn v0.8b, v1.8h, #3 # CHECK: sqrshrn v0.4h, v1.4s, #3 # CHECK: sqrshrn v0.2s, v1.2d, #3 # CHECK: sqrshrn2 v0.16b, v1.8h, #3 # CHECK: sqrshrn2 v0.8h, v1.4s, #3 # CHECK: sqrshrn2 v0.4s, v1.2d, #3 0x20,0x9c,0x0d,0x0f 0x20,0x9c,0x1d,0x0f 0x20,0x9c,0x3d,0x0f 0x20,0x9c,0x0d,0x4f 0x20,0x9c,0x1d,0x4f 0x20,0x9c,0x3d,0x4f #----------------------------------------------------------------------------- #Integer saturating shift right rounded narrow (Unsigned) #----------------------------------------------------------------------------- # CHECK: uqrshrn v0.8b, v1.8h, #3 # CHECK: uqrshrn v0.4h, v1.4s, #3 # CHECK: uqrshrn v0.2s, v1.2d, #3 # CHECK: uqrshrn2 v0.16b, v1.8h, #3 # CHECK: uqrshrn2 v0.8h, v1.4s, #3 # CHECK: uqrshrn2 v0.4s, v1.2d, #3 0x20,0x9c,0x0d,0x2f 0x20,0x9c,0x1d,0x2f 0x20,0x9c,0x3d,0x2f 0x20,0x9c,0x0d,0x6f 0x20,0x9c,0x1d,0x6f 0x20,0x9c,0x3d,0x6f #----------------------------------------------------------------------------- #Fixed-point convert to floating-point #----------------------------------------------------------------------------- # CHECK: scvtf v0.2s, v1.2s, #3 # CHECK: scvtf v0.4s, v1.4s, #3 # CHECK: scvtf v0.2d, v1.2d, #3 # CHECK: ucvtf v0.2s, v1.2s, #3 # CHECK: ucvtf v0.4s, v1.4s, #3 # CHECK: ucvtf v0.2d, v1.2d, #3 0x20,0xe4,0x3d,0x0f 0x20,0xe4,0x3d,0x4f 0x20,0xe4,0x7d,0x4f 0x20,0xe4,0x3d,0x2f 0x20,0xe4,0x3d,0x6f 0x20,0xe4,0x7d,0x6f #----------------------------------------------------------------------------- #Floating-point convert to fixed-point #----------------------------------------------------------------------------- # CHECK: fcvtzs v0.2s, v1.2s, #3 # CHECK: fcvtzs v0.4s, v1.4s, #3 # CHECK: fcvtzs v0.2d, v1.2d, #3 # CHECK: fcvtzu v0.2s, v1.2s, #3 # CHECK: fcvtzu v0.4s, v1.4s, #3 # CHECK: fcvtzu v0.2d, v1.2d, #3 0x20,0xfc,0x3d,0x0f 0x20,0xfc,0x3d,0x4f 0x20,0xfc,0x7d,0x4f 0x20,0xfc,0x3d,0x2f 0x20,0xfc,0x3d,0x6f 0x20,0xfc,0x7d,0x6f