mirror of
https://github.com/jeremysrand/llvm-65816.git
synced 2024-11-18 23:05:00 +00:00
2639 lines
86 KiB
Plaintext
2639 lines
86 KiB
Plaintext
# 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
|
|
#------------------------------------------------------------------------------
|
|
|
|
# FIXME: these should print as "mov", but TableGen can't handle it.
|
|
|
|
# CHECK: orr v1.16b, v15.16b, v15.16b
|
|
# CHECK: orr v25.8b, v4.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 long
|
|
#----------------------------------------------------------------------
|
|
# CHECK: shll2 v2.8h, v4.16b, #8
|
|
# CHECK: shll2 v6.4s, v8.8h, #16
|
|
# CHECK: shll2 v6.2d, v8.4s, #32
|
|
# CHECK: shll v2.8h, v4.8b, #8
|
|
# CHECK: shll v6.4s, v8.4h, #16
|
|
# CHECK: shll v6.2d, v8.2s, #32
|
|
|
|
0x82,0x38,0x21,0x6e
|
|
0x06,0x39,0x61,0x6e
|
|
0x06,0x39,0xa1,0x6e
|
|
0x82,0x38,0x21,0x2e
|
|
0x06,0x39,0x61,0x2e
|
|
0x06,0x39,0xa1,0x2e
|
|
|
|
#----------------------------------------------------------------------
|
|
# 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
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# Vector with 3 operands having different data types
|
|
#------------------------------------------------------------------------------
|
|
|
|
#------------------------------------------------------------------------------
|
|
# Long
|
|
#------------------------------------------------------------------------------
|
|
|
|
#------------------------------------------------------------------------------
|
|
# Long - Variant 1
|
|
#------------------------------------------------------------------------------
|
|
|
|
# CHECK: saddl v0.8h, v1.8b, v2.8b
|
|
# CHECK: saddl v0.4s, v1.4h, v2.4h
|
|
# CHECK: saddl v0.2d, v1.2s, v2.2s
|
|
0x20 0x00 0x22 0x0e
|
|
0x20 0x00 0x62 0x0e
|
|
0x20 0x00 0xa2 0x0e
|
|
|
|
# CHECK: saddl2 v0.4s, v1.8h, v2.8h
|
|
# CHECK: saddl2 v0.8h, v1.16b, v2.16b
|
|
# CHECK: saddl2 v0.2d, v1.4s, v2.4s
|
|
0x20 0x00 0x62 0x4e
|
|
0x20 0x00 0x22 0x4e
|
|
0x20 0x00 0xa2 0x4e
|
|
|
|
# CHECK: uaddl v0.8h, v1.8b, v2.8b
|
|
# CHECK: uaddl v0.4s, v1.4h, v2.4h
|
|
# CHECK: uaddl v0.2d, v1.2s, v2.2s
|
|
0x20 0x00 0x22 0x2e
|
|
0x20 0x00 0x62 0x2e
|
|
0x20 0x00 0xa2 0x2e
|
|
|
|
# CHECK: uaddl2 v0.8h, v1.16b, v2.16b
|
|
# CHECK: uaddl2 v0.4s, v1.8h, v2.8h
|
|
# CHECK: uaddl2 v0.2d, v1.4s, v2.4s
|
|
0x20 0x00 0x22 0x6e
|
|
0x20 0x00 0x62 0x6e
|
|
0x20 0x00 0xa2 0x6e
|
|
|
|
# CHECK: ssubl v0.8h, v1.8b, v2.8b
|
|
# CHECK: ssubl v0.4s, v1.4h, v2.4h
|
|
# CHECK: ssubl v0.2d, v1.2s, v2.2s
|
|
0x20 0x20 0x22 0x0e
|
|
0x20 0x20 0x62 0x0e
|
|
0x20 0x20 0xa2 0x0e
|
|
|
|
# CHECK: ssubl2 v0.8h, v1.16b, v2.16b
|
|
# CHECK: ssubl2 v0.4s, v1.8h, v2.8h
|
|
# CHECK: ssubl2 v0.2d, v1.4s, v2.4s
|
|
0x20 0x20 0x22 0x4e
|
|
0x20 0x20 0x62 0x4e
|
|
0x20 0x20 0xa2 0x4e
|
|
|
|
# CHECK: usubl v0.8h, v1.8b, v2.8b
|
|
# CHECK: usubl v0.4s, v1.4h, v2.4h
|
|
# CHECK: usubl v0.2d, v1.2s, v2.2s
|
|
0x20 0x20 0x22 0x2e
|
|
0x20 0x20 0x62 0x2e
|
|
0x20 0x20 0xa2 0x2e
|
|
|
|
# CHECK: usubl2 v0.8h, v1.16b, v2.16b
|
|
# CHECK: usubl2 v0.4s, v1.8h, v2.8h
|
|
# CHECK: usubl2 v0.2d, v1.4s, v2.4s
|
|
0x20 0x20 0x22 0x6e
|
|
0x20 0x20 0x62 0x6e
|
|
0x20 0x20 0xa2 0x6e
|
|
|
|
# CHECK: sabal v0.8h, v1.8b, v2.8b
|
|
# CHECK: sabal v0.4s, v1.4h, v2.4h
|
|
# CHECK: sabal v0.2d, v1.2s, v2.2s
|
|
0x20 0x50 0x22 0x0e
|
|
0x20 0x50 0x62 0x0e
|
|
0x20 0x50 0xa2 0x0e
|
|
|
|
# CHECK: sabal2 v0.8h, v1.16b, v2.16b
|
|
# CHECK: sabal2 v0.4s, v1.8h, v2.8h
|
|
# CHECK: sabal2 v0.2d, v1.4s, v2.4s
|
|
0x20 0x50 0x22 0x4e
|
|
0x20 0x50 0x62 0x4e
|
|
0x20 0x50 0xa2 0x4e
|
|
|
|
# CHECK: uabal v0.8h, v1.8b, v2.8b
|
|
# CHECK: uabal v0.4s, v1.4h, v2.4h
|
|
# CHECK: uabal v0.2d, v1.2s, v2.2s
|
|
0x20 0x50 0x22 0x2e
|
|
0x20 0x50 0x62 0x2e
|
|
0x20 0x50 0xa2 0x2e
|
|
|
|
# CHECK: uabal2 v0.8h, v1.16b, v2.16b
|
|
# CHECK: uabal2 v0.4s, v1.8h, v2.8h
|
|
# CHECK: uabal2 v0.2d, v1.4s, v2.4s
|
|
0x20 0x50 0x22 0x6e
|
|
0x20 0x50 0x62 0x6e
|
|
0x20 0x50 0xa2 0x6e
|
|
|
|
# CHECK: sabdl v0.8h, v1.8b, v2.8b
|
|
# CHECK: sabdl v0.4s, v1.4h, v2.4h
|
|
# CHECK: sabdl v0.2d, v1.2s, v2.2s
|
|
0x20 0x70 0x22 0x0e
|
|
0x20 0x70 0x62 0x0e
|
|
0x20 0x70 0xa2 0x0e
|
|
|
|
# CHECK: sabdl2 v0.8h, v1.16b, v2.16b
|
|
# CHECK: sabdl2 v0.4s, v1.8h, v2.8h
|
|
# CHECK: sabdl2 v0.2d, v1.4s, v2.4s
|
|
0x20 0x70 0x22 0x4e
|
|
0x20 0x70 0x62 0x4e
|
|
0x20 0x70 0xa2 0x4e
|
|
|
|
# CHECK: uabdl v0.8h, v1.8b, v2.8b
|
|
# CHECK: uabdl v0.4s, v1.4h, v2.4h
|
|
# CHECK: uabdl v0.2d, v1.2s, v2.2s
|
|
0x20 0x70 0x22 0x2e
|
|
0x20 0x70 0x62 0x2e
|
|
0x20 0x70 0xa2 0x2e
|
|
|
|
# CHECK: uabdl2 v0.8h, v1.16b, v2.16b
|
|
# CHECK: uabdl2 v0.4s, v1.8h, v2.8h
|
|
# CHECK: uabdl2 v0.2d, v1.4s, v2.4s
|
|
0x20 0x70 0x22 0x6e
|
|
0x20 0x70 0x62 0x6e
|
|
0x20 0x70 0xa2 0x6e
|
|
|
|
# CHECK: smlal v0.8h, v1.8b, v2.8b
|
|
# CHECK: smlal v0.4s, v1.4h, v2.4h
|
|
# CHECK: smlal v0.2d, v1.2s, v2.2s
|
|
0x20 0x80 0x22 0x0e
|
|
0x20 0x80 0x62 0x0e
|
|
0x20 0x80 0xa2 0x0e
|
|
|
|
# CHECK: smlal2 v0.8h, v1.16b, v2.16b
|
|
# CHECK: smlal2 v0.4s, v1.8h, v2.8h
|
|
# CHECK: smlal2 v0.2d, v1.4s, v2.4s
|
|
0x20 0x80 0x22 0x4e
|
|
0x20 0x80 0x62 0x4e
|
|
0x20 0x80 0xa2 0x4e
|
|
|
|
# CHECK: umlal v0.8h, v1.8b, v2.8b
|
|
# CHECK: umlal v0.4s, v1.4h, v2.4h
|
|
# CHECK: umlal v0.2d, v1.2s, v2.2s
|
|
|
|
0x20 0x80 0x22 0x2e
|
|
0x20 0x80 0x62 0x2e
|
|
0x20 0x80 0xa2 0x2e
|
|
|
|
# CHECK: umlal2 v0.8h, v1.16b, v2.16b
|
|
# CHECK: umlal2 v0.4s, v1.8h, v2.8h
|
|
# CHECK: umlal2 v0.2d, v1.4s, v2.4s
|
|
0x20 0x80 0x22 0x6e
|
|
0x20 0x80 0x62 0x6e
|
|
0x20 0x80 0xa2 0x6e
|
|
|
|
# CHECK: smlsl v0.8h, v1.8b, v2.8b
|
|
# CHECK: smlsl v0.4s, v1.4h, v2.4h
|
|
# CHECK: smlsl v0.2d, v1.2s, v2.2s
|
|
0x20 0xa0 0x22 0x0e
|
|
0x20 0xa0 0x62 0x0e
|
|
0x20 0xa0 0xa2 0x0e
|
|
|
|
# CHECK: smlsl2 v0.8h, v1.16b, v2.16b
|
|
# CHECK: smlsl2 v0.4s, v1.8h, v2.8h
|
|
# CHECK: smlsl2 v0.2d, v1.4s, v2.4s
|
|
0x20 0xa0 0x22 0x4e
|
|
0x20 0xa0 0x62 0x4e
|
|
0x20 0xa0 0xa2 0x4e
|
|
|
|
# CHECK: umlsl v0.8h, v1.8b, v2.8b
|
|
# CHECK: umlsl v0.4s, v1.4h, v2.4h
|
|
# CHECK: umlsl v0.2d, v1.2s, v2.2s
|
|
0x20 0xa0 0x22 0x2e
|
|
0x20 0xa0 0x62 0x2e
|
|
0x20 0xa0 0xa2 0x2e
|
|
|
|
# CHECK: umlsl2 v0.8h, v1.16b, v2.16b
|
|
# CHECK: umlsl2 v0.4s, v1.8h, v2.8h
|
|
# CHECK: umlsl2 v0.2d, v1.4s, v2.4s
|
|
0x20 0xa0 0x22 0x6e
|
|
0x20 0xa0 0x62 0x6e
|
|
0x20 0xa0 0xa2 0x6e
|
|
|
|
# CHECK: smull v0.8h, v1.8b, v2.8b
|
|
# CHECK: smull v0.4s, v1.4h, v2.4h
|
|
# CHECK: smull v0.2d, v1.2s, v2.2s
|
|
0x20 0xc0 0x22 0x0e
|
|
0x20 0xc0 0x62 0x0e
|
|
0x20 0xc0 0xa2 0x0e
|
|
|
|
# CHECK: smull2 v0.8h, v1.16b, v2.16b
|
|
# CHECK: smull2 v0.4s, v1.8h, v2.8h
|
|
# CHECK: smull2 v0.2d, v1.4s, v2.4s
|
|
0x20 0xc0 0x22 0x4e
|
|
0x20 0xc0 0x62 0x4e
|
|
0x20 0xc0 0xa2 0x4e
|
|
|
|
# CHECK: umull v0.8h, v1.8b, v2.8b
|
|
# CHECK: umull v0.4s, v1.4h, v2.4h
|
|
# CHECK: umull v0.2d, v1.2s, v2.2s
|
|
0x20 0xc0 0x22 0x2e
|
|
0x20 0xc0 0x62 0x2e
|
|
0x20 0xc0 0xa2 0x2e
|
|
|
|
# CHECK: umull2 v0.8h, v1.16b, v2.16b
|
|
# CHECK: umull2 v0.4s, v1.8h, v2.8h
|
|
# CHECK: umull2 v0.2d, v1.4s, v2.4s
|
|
0x20 0xc0 0x22 0x6e
|
|
0x20 0xc0 0x62 0x6e
|
|
0x20 0xc0 0xa2 0x6e
|
|
|
|
#------------------------------------------------------------------------------
|
|
# Long - Variant 2
|
|
#------------------------------------------------------------------------------
|
|
|
|
# CHECK: sqdmlal v0.4s, v1.4h, v2.4h
|
|
# CHECK: sqdmlal v0.2d, v1.2s, v2.2s
|
|
0x20 0x90 0x62 0x0e
|
|
0x20 0x90 0xa2 0x0e
|
|
|
|
# CHECK: sqdmlal2 v0.4s, v1.8h, v2.8h
|
|
# CHECK: sqdmlal2 v0.2d, v1.4s, v2.4s
|
|
0x20 0x90 0x62 0x4e
|
|
0x20 0x90 0xa2 0x4e
|
|
|
|
# CHECK: sqdmlsl v0.4s, v1.4h, v2.4h
|
|
# CHECK: sqdmlsl v0.2d, v1.2s, v2.2s
|
|
0x20 0xb0 0x62 0x0e
|
|
0x20 0xb0 0xa2 0x0e
|
|
|
|
# CHECK: sqdmlsl2 v0.4s, v1.8h, v2.8h
|
|
# CHECK: sqdmlsl2 v0.2d, v1.4s, v2.4s
|
|
0x20 0xb0 0x62 0x4e
|
|
0x20 0xb0 0xa2 0x4e
|
|
|
|
# CHECK: sqdmull v0.4s, v1.4h, v2.4h
|
|
# CHECK: sqdmull v0.2d, v1.2s, v2.2s
|
|
0x20 0xd0 0x62 0x0e
|
|
0x20 0xd0 0xa2 0x0e
|
|
|
|
# CHECK: sqdmull2 v0.4s, v1.8h, v2.8h
|
|
# CHECK: sqdmull2 v0.2d, v1.4s, v2.4s
|
|
0x20 0xd0 0x62 0x4e
|
|
0x20 0xd0 0xa2 0x4e
|
|
|
|
#------------------------------------------------------------------------------
|
|
# Long - Variant 3
|
|
#------------------------------------------------------------------------------
|
|
|
|
# CHECK: pmull v0.8h, v1.8b, v2.8b
|
|
0x20 0xe0 0x22 0x0e
|
|
|
|
# CHECK: pmull2 v0.8h, v1.16b, v2.16b
|
|
0x20 0xe0 0x22 0x4e
|
|
|
|
#------------------------------------------------------------------------------
|
|
# Widen
|
|
#------------------------------------------------------------------------------
|
|
|
|
# CHECK: saddw v0.8h, v1.8h, v2.8b
|
|
# CHECK: saddw v0.4s, v1.4s, v2.4h
|
|
# CHECK: saddw v0.2d, v1.2d, v2.2s
|
|
0x20 0x10 0x22 0x0e
|
|
0x20 0x10 0x62 0x0e
|
|
0x20 0x10 0xa2 0x0e
|
|
|
|
# CHECK: saddw2 v0.8h, v1.8h, v2.16b
|
|
# CHECK: saddw2 v0.4s, v1.4s, v2.8h
|
|
# CHECK: saddw2 v0.2d, v1.2d, v2.4s
|
|
0x20 0x10 0x22 0x4e
|
|
0x20 0x10 0x62 0x4e
|
|
0x20 0x10 0xa2 0x4e
|
|
|
|
# CHECK: uaddw v0.8h, v1.8h, v2.8b
|
|
# CHECK: uaddw v0.4s, v1.4s, v2.4h
|
|
# CHECK: uaddw v0.2d, v1.2d, v2.2s
|
|
0x20 0x10 0x22 0x2e
|
|
0x20 0x10 0x62 0x2e
|
|
0x20 0x10 0xa2 0x2e
|
|
|
|
# CHECK: uaddw2 v0.8h, v1.8h, v2.16b
|
|
# CHECK: uaddw2 v0.4s, v1.4s, v2.8h
|
|
# CHECK: uaddw2 v0.2d, v1.2d, v2.4s
|
|
0x20 0x10 0x22 0x6e
|
|
0x20 0x10 0x62 0x6e
|
|
0x20 0x10 0xa2 0x6e
|
|
|
|
# CHECK: ssubw v0.8h, v1.8h, v2.8b
|
|
# CHECK: ssubw v0.4s, v1.4s, v2.4h
|
|
# CHECK: ssubw v0.2d, v1.2d, v2.2s
|
|
0x20 0x30 0x22 0x0e
|
|
0x20 0x30 0x62 0x0e
|
|
0x20 0x30 0xa2 0x0e
|
|
|
|
# CHECK: ssubw2 v0.8h, v1.8h, v2.16b
|
|
# CHECK: ssubw2 v0.4s, v1.4s, v2.8h
|
|
# CHECK: ssubw2 v0.2d, v1.2d, v2.4s
|
|
0x20 0x30 0x22 0x4e
|
|
0x20 0x30 0x62 0x4e
|
|
0x20 0x30 0xa2 0x4e
|
|
|
|
# CHECK: usubw v0.8h, v1.8h, v2.8b
|
|
# CHECK: usubw v0.4s, v1.4s, v2.4h
|
|
# CHECK: usubw v0.2d, v1.2d, v2.2s
|
|
0x20 0x30 0x22 0x2e
|
|
0x20 0x30 0x62 0x2e
|
|
0x20 0x30 0xa2 0x2e
|
|
|
|
# CHECK: usubw2 v0.8h, v1.8h, v2.16b
|
|
# CHECK: usubw2 v0.4s, v1.4s, v2.8h
|
|
# CHECK: usubw2 v0.2d, v1.2d, v2.4s
|
|
0x20 0x30 0x22 0x6e
|
|
0x20 0x30 0x62 0x6e
|
|
0x20 0x30 0xa2 0x6e
|
|
|
|
#------------------------------------------------------------------------------
|
|
# Narrow
|
|
#------------------------------------------------------------------------------
|
|
|
|
# CHECK: addhn v0.8b, v1.8h, v2.8h
|
|
# CHECK: addhn v0.4h, v1.4s, v2.4s
|
|
# CHECK: addhn v0.2s, v1.2d, v2.2d
|
|
0x20 0x40 0x22 0x0e
|
|
0x20 0x40 0x62 0x0e
|
|
0x20 0x40 0xa2 0x0e
|
|
|
|
# CHECK: addhn2 v0.16b, v1.8h, v2.8h
|
|
# CHECK: addhn2 v0.8h, v1.4s, v2.4s
|
|
# CHECK: addhn2 v0.4s, v1.2d, v2.2d
|
|
0x20 0x40 0x22 0x4e
|
|
0x20 0x40 0x62 0x4e
|
|
0x20 0x40 0xa2 0x4e
|
|
|
|
# CHECK: raddhn v0.8b, v1.8h, v2.8h
|
|
# CHECK: raddhn v0.4h, v1.4s, v2.4s
|
|
# CHECK: raddhn v0.2s, v1.2d, v2.2d
|
|
0x20 0x40 0x22 0x2e
|
|
0x20 0x40 0x62 0x2e
|
|
0x20 0x40 0xa2 0x2e
|
|
|
|
# CHECK: raddhn2 v0.16b, v1.8h, v2.8h
|
|
# CHECK: raddhn2 v0.8h, v1.4s, v2.4s
|
|
# CHECK: raddhn2 v0.4s, v1.2d, v2.2d
|
|
0x20 0x40 0x22 0x6e
|
|
0x20 0x40 0x62 0x6e
|
|
0x20 0x40 0xa2 0x6e
|
|
|
|
# CHECK: rsubhn v0.8b, v1.8h, v2.8h
|
|
# CHECK: rsubhn v0.4h, v1.4s, v2.4s
|
|
# CHECK: rsubhn v0.2s, v1.2d, v2.2d
|
|
0x20 0x60 0x22 0x2e
|
|
0x20 0x60 0x62 0x2e
|
|
0x20 0x60 0xa2 0x2e
|
|
|
|
# CHECK: rsubhn2 v0.16b, v1.8h, v2.8h
|
|
# CHECK: rsubhn2 v0.8h, v1.4s, v2.4s
|
|
# CHECK: rsubhn2 v0.4s, v1.2d, v2.2d
|
|
0x20 0x60 0x22 0x6e
|
|
0x20 0x60 0x62 0x6e
|
|
0x20 0x60 0xa2 0x6e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Scalar Integer Saturating Doubling Multiply Half High
|
|
#----------------------------------------------------------------------
|
|
# CHECK: sqdmulh h10, h11, h12
|
|
# CHECK: sqdmulh s20, s21, s2
|
|
0x6a,0xb5,0x6c,0x5e
|
|
0xb4,0xb6,0xa2,0x5e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Scalar Integer Saturating Rounding Doubling Multiply Half High
|
|
#----------------------------------------------------------------------
|
|
# CHECK: sqrdmulh h10, h11, h12
|
|
# CHECK: sqrdmulh s20, s21, s2
|
|
0x6a,0xb5,0x6c,0x7e
|
|
0xb4,0xb6,0xa2,0x7e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Floating-point multiply extended
|
|
#----------------------------------------------------------------------
|
|
# CHECK: fmulx s20, s22, s15
|
|
# CHECK: fmulx d23, d11, d1
|
|
0xd4,0xde,0x2f,0x5e
|
|
0x77,0xdd,0x61,0x5e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Floating-point Reciprocal Step
|
|
#----------------------------------------------------------------------
|
|
# CHECK: frecps s21, s16, s13
|
|
# CHECK: frecps d22, d30, d21
|
|
0x15,0xfe,0x2d,0x5e
|
|
0xd6,0xff,0x75,0x5e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Floating-point Reciprocal Square Root Step
|
|
#----------------------------------------------------------------------
|
|
# CHECK: frsqrts s21, s5, s12
|
|
# CHECK: frsqrts d8, d22, d18
|
|
0xb5,0xfc,0xac,0x5e
|
|
0xc8,0xfe,0xf2,0x5e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Scalar Signed Integer Convert To Floating-point
|
|
#----------------------------------------------------------------------
|
|
# CHECK: scvtf s22, s13
|
|
# CHECK: scvtf d21, d12
|
|
0xb6,0xd9,0x21,0x5e
|
|
0x95,0xd9,0x61,0x5e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Scalar Unsigned Integer Convert To Floating-point
|
|
#----------------------------------------------------------------------
|
|
# CHECK: ucvtf s22, s13
|
|
# CHECK: ucvtf d21, d14
|
|
0xb6,0xd9,0x21,0x7e
|
|
0xd5,0xd9,0x61,0x7e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Scalar Floating-point Reciprocal Estimate
|
|
#----------------------------------------------------------------------
|
|
# CHECK: frecpe s19, s14
|
|
# CHECK: frecpe d13, d13
|
|
0xd3,0xd9,0xa1,0x5e
|
|
0xad,0xd9,0xe1,0x5e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Scalar Floating-point Reciprocal Exponent
|
|
#----------------------------------------------------------------------
|
|
# CHECK: frecpx s18, s10
|
|
# CHECK: frecpx d16, d19
|
|
0x52,0xf9,0xa1,0x5e
|
|
0x70,0xfa,0xe1,0x5e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Scalar Floating-point Reciprocal Square Root Estimate
|
|
#----------------------------------------------------------------------
|
|
# CHECK: frsqrte s22, s13
|
|
# CHECK: frsqrte d21, d12
|
|
0xb6,0xd9,0xa1,0x7e
|
|
0x95,0xd9,0xe1,0x7e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Scalar Compare Bitwise Equal
|
|
#----------------------------------------------------------------------
|
|
# CHECK: cmeq d20, d21, d22
|
|
0xb4,0x8e,0xf6,0x7e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Scalar Compare Bitwise Equal To Zero
|
|
#----------------------------------------------------------------------
|
|
# CHECK: cmeq d20, d21, #0x0
|
|
0xb4,0x9a,0xe0,0x5e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Scalar Compare Unsigned Higher Or Same
|
|
#----------------------------------------------------------------------
|
|
# CHECK: cmhs d20, d21, d22
|
|
0xb4,0x3e,0xf6,0x7e
|
|
|
|
|
|
#----------------------------------------------------------------------
|
|
# Scalar Compare Signed Greather Than Or Equal
|
|
#----------------------------------------------------------------------
|
|
# CHECK: cmge d20, d21, d22
|
|
0xb4,0x3e,0xf6,0x5e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Scalar Compare Signed Greather Than Or Equal To Zero
|
|
#----------------------------------------------------------------------
|
|
# CHECK: cmge d20, d21, #0x0
|
|
0xb4,0x8a,0xe0,0x7e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Scalar Compare Unsigned Higher
|
|
#----------------------------------------------------------------------
|
|
# CHECK: cmhi d20, d21, d22
|
|
0xb4,0x36,0xf6,0x7e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Scalar Compare Signed Greater Than
|
|
#----------------------------------------------------------------------
|
|
# CHECK: cmgt d20, d21, d22
|
|
0xb4,0x36,0xf6,0x5e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Scalar Compare Signed Greater Than Zero
|
|
#----------------------------------------------------------------------
|
|
# CHECK: cmgt d20, d21, #0x0
|
|
0xb4,0x8a,0xe0,0x5e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Scalar Compare Signed Less Than Or Equal To Zero
|
|
#----------------------------------------------------------------------
|
|
# CHECK: cmle d20, d21, #0x0
|
|
0xb4,0x9a,0xe0,0x7e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Scalar Compare Less Than Zero
|
|
#----------------------------------------------------------------------
|
|
# CHECK: cmlt d20, d21, #0x0
|
|
0xb4,0xaa,0xe0,0x5e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Scalar Compare Bitwise Test Bits
|
|
#----------------------------------------------------------------------
|
|
# CHECK: cmtst d20, d21, d22
|
|
0xb4,0x8e,0xf6,0x5e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Scalar Floating-point Compare Mask Equal
|
|
#----------------------------------------------------------------------
|
|
# CHECK: fcmeq s10, s11, s12
|
|
# CHECK: fcmeq d20, d21, d22
|
|
0x6a,0xe5,0x2c,0x5e
|
|
0xb4,0xe6,0x76,0x5e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Scalar Floating-point Compare Mask Equal To Zero
|
|
#----------------------------------------------------------------------
|
|
# CHECK: fcmeq s10, s11, #0.0
|
|
# CHECK: fcmeq d20, d21, #0.0
|
|
0x6a,0xd9,0xa0,0x5e
|
|
0xb4,0xda,0xe0,0x5e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Scalar Floating-point Compare Mask Greater Than Or Equal
|
|
#----------------------------------------------------------------------
|
|
# CHECK: fcmge s10, s11, s12
|
|
# CHECK: fcmge d20, d21, d22
|
|
0x6a,0xe5,0x2c,0x7e
|
|
0xb4,0xe6,0x76,0x7e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Scalar Floating-point Compare Mask Greater Than Or Equal To Zero
|
|
#----------------------------------------------------------------------
|
|
# CHECK: fcmge s10, s11, #0.0
|
|
# CHECK: fcmge d20, d21, #0.0
|
|
0x6a,0xc9,0xa0,0x7e
|
|
0xb4,0xca,0xe0,0x7e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Scalar Floating-point Compare Mask Greather Than
|
|
#----------------------------------------------------------------------
|
|
# CHECK: fcmgt s10, s11, s12
|
|
# CHECK: fcmgt d20, d21, d22
|
|
0x6a,0xe5,0xac,0x7e
|
|
0xb4,0xe6,0xf6,0x7e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Scalar Floating-point Compare Mask Greather Than Zero
|
|
#----------------------------------------------------------------------
|
|
# CHECK: fcmgt s10, s11, #0.0
|
|
# CHECK: fcmgt d20, d21, #0.0
|
|
0x6a,0xc9,0xa0,0x5e
|
|
0xb4,0xca,0xe0,0x5e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Scalar Floating-point Compare Mask Less Than Or Equal To Zero
|
|
#----------------------------------------------------------------------
|
|
# CHECK: fcmle s10, s11, #0.0
|
|
# CHECK: fcmle d20, d21, #0.0
|
|
0x6a,0xd9,0xa0,0x7e
|
|
0xb4,0xda,0xe0,0x7e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Scalar Floating-point Compare Mask Less Than
|
|
#----------------------------------------------------------------------
|
|
# CHECK: fcmlt s10, s11, #0.0
|
|
# CHECK: fcmlt d20, d21, #0.0
|
|
0x6a,0xe9,0xa0,0x5e
|
|
0xb4,0xea,0xe0,0x5e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Scalar Floating-point Absolute Compare Mask Greater Than Or Equal
|
|
#----------------------------------------------------------------------
|
|
# CHECK: facge s10, s11, s12
|
|
# CHECK: facge d20, d21, d22
|
|
0x6a,0xed,0x2c,0x7e
|
|
0xb4,0xee,0x76,0x7e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Scalar Floating-point Absolute Compare Mask Greater Than
|
|
#----------------------------------------------------------------------
|
|
# CHECK: facgt s10, s11, s12
|
|
# CHECK: facgt d20, d21, d22
|
|
0x6a,0xed,0xac,0x7e
|
|
0xb4,0xee,0xf6,0x7e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Scalar Absolute Value
|
|
#----------------------------------------------------------------------
|
|
# CHECK: abs d29, d24
|
|
0x1d,0xbb,0xe0,0x5e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Scalar Signed Saturating Absolute Value
|
|
#----------------------------------------------------------------------
|
|
# CHECK: sqabs b19, b14
|
|
# CHECK: sqabs h21, h15
|
|
# CHECK: sqabs s20, s12
|
|
# CHECK: sqabs d18, d12
|
|
0xd3,0x79,0x20,0x5e
|
|
0xf5,0x79,0x60,0x5e
|
|
0x94,0x79,0xa0,0x5e
|
|
0x92,0x79,0xe0,0x5e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Scalar Negate
|
|
#----------------------------------------------------------------------
|
|
# CHECK: neg d29, d24
|
|
0x1d,0xbb,0xe0,0x7e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Scalar Signed Saturating Negate
|
|
#----------------------------------------------------------------------
|
|
# CHECK: sqneg b19, b14
|
|
# CHECK: sqneg h21, h15
|
|
# CHECK: sqneg s20, s12
|
|
# CHECK: sqneg d18, d12
|
|
0xd3,0x79,0x20,0x7e
|
|
0xf5,0x79,0x60,0x7e
|
|
0x94,0x79,0xa0,0x7e
|
|
0x92,0x79,0xe0,0x7e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Signed Saturating Accumulated of Unsigned Value
|
|
#----------------------------------------------------------------------
|
|
# CHECK: suqadd b19, b14
|
|
# CHECK: suqadd h20, h15
|
|
# CHECK: suqadd s21, s12
|
|
# CHECK: suqadd d18, d22
|
|
0xd3,0x39,0x20,0x5e
|
|
0xf4,0x39,0x60,0x5e
|
|
0x95,0x39,0xa0,0x5e
|
|
0xd2,0x3a,0xe0,0x5e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Unsigned Saturating Accumulated of Signed Value
|
|
#----------------------------------------------------------------------
|
|
# CHECK: usqadd b19, b14
|
|
# CHECK: usqadd h20, h15
|
|
# CHECK: usqadd s21, s12
|
|
# CHECK: usqadd d18, d22
|
|
0xd3,0x39,0x20,0x7e
|
|
0xf4,0x39,0x60,0x7e
|
|
0x95,0x39,0xa0,0x7e
|
|
0xd2,0x3a,0xe0,0x7e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Signed Saturating Doubling Multiply-Add Long
|
|
#----------------------------------------------------------------------
|
|
# CHECK: sqdmlal s17, h27, h12
|
|
# CHECK: sqdmlal d19, s24, s12
|
|
0x71,0x93,0x6c,0x5e
|
|
0x13,0x93,0xac,0x5e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Signed Saturating Doubling Multiply-Subtract Long
|
|
#----------------------------------------------------------------------
|
|
# CHECK: sqdmlsl s14, h12, h25
|
|
# CHECK: sqdmlsl d12, s23, s13
|
|
0x8e,0xb1,0x79,0x5e
|
|
0xec,0xb2,0xad,0x5e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Signed Saturating Doubling Multiply Long
|
|
#----------------------------------------------------------------------
|
|
# CHECK: sqdmull s12, h22, h12
|
|
# CHECK: sqdmull d15, s22, s12
|
|
0xcc,0xd2,0x6c,0x5e
|
|
0xcf,0xd2,0xac,0x5e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Scalar Signed Saturating Extract Unsigned Narrow
|
|
#----------------------------------------------------------------------
|
|
# CHECK: sqxtun b19, h14
|
|
# CHECK: sqxtun h21, s15
|
|
# CHECK: sqxtun s20, d12
|
|
0xd3,0x29,0x21,0x7e
|
|
0xf5,0x29,0x61,0x7e
|
|
0x94,0x29,0xa1,0x7e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Scalar Signed Saturating Extract Signed Narrow
|
|
#----------------------------------------------------------------------
|
|
# CHECK: sqxtn b18, h18
|
|
# CHECK: sqxtn h20, s17
|
|
# CHECK: sqxtn s19, d14
|
|
0x52,0x4a,0x21,0x5e
|
|
0x34,0x4a,0x61,0x5e
|
|
0xd3,0x49,0xa1,0x5e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Scalar Unsigned Saturating Extract Narrow
|
|
#----------------------------------------------------------------------
|
|
# CHECK: uqxtn b18, h18
|
|
# CHECK: uqxtn h20, s17
|
|
# CHECK: uqxtn s19, d14
|
|
0x52,0x4a,0x21,0x7e
|
|
0x34,0x4a,0x61,0x7e
|
|
0xd3,0x49,0xa1,0x7e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Scalar Signed Shift Right (Immediate)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: sshr d15, d16, #12
|
|
0x0f,0x06,0x74,0x5f
|
|
|
|
#----------------------------------------------------------------------
|
|
# Scalar Unsigned Shift Right (Immediate)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: ushr d10, d17, #18
|
|
0x2a,0x06,0x6e,0x7f
|
|
|
|
#----------------------------------------------------------------------
|
|
# Scalar Signed Rounding Shift Right (Immediate)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: srshr d19, d18, #7
|
|
0x53,0x26,0x79,0x5f
|
|
|
|
#----------------------------------------------------------------------
|
|
# Scalar Unigned Rounding Shift Right (Immediate)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: urshr d20, d23, #31
|
|
0xf4,0x26,0x61,0x7f
|
|
|
|
#----------------------------------------------------------------------
|
|
# Scalar Signed Shift Right and Accumulate (Immediate)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: ssra d18, d12, #21
|
|
0x92,0x15,0x6b,0x5f
|
|
|
|
#----------------------------------------------------------------------
|
|
# Scalar Unsigned Shift Right and Accumulate (Immediate)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: usra d20, d13, #61
|
|
0xb4,0x15,0x43,0x7f
|
|
|
|
#----------------------------------------------------------------------
|
|
# Scalar Signed Rounding Shift Right and Accumulate (Immediate)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: srsra d15, d11, #19
|
|
0x6f,0x35,0x6d,0x5f
|
|
|
|
#----------------------------------------------------------------------
|
|
# Scalar Unsigned Rounding Shift Right and Accumulate (Immediate)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: ursra d18, d10, #13
|
|
0x52,0x35,0x73,0x7f
|
|
|
|
#----------------------------------------------------------------------
|
|
# Scalar Shift Left (Immediate)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: shl d7, d10, #12
|
|
0x47,0x55,0x4c,0x5f
|
|
|
|
#----------------------------------------------------------------------
|
|
# Signed Saturating Shift Left (Immediate)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: sqshl b11, b19, #7
|
|
# CHECK: sqshl h13, h18, #11
|
|
# CHECK: sqshl s14, s17, #22
|
|
# CHECK: sqshl d15, d16, #51
|
|
0x6b,0x76,0x0f,0x5f
|
|
0x4d,0x76,0x1b,0x5f
|
|
0x2e,0x76,0x36,0x5f
|
|
0x0f,0x76,0x73,0x5f
|
|
|
|
#----------------------------------------------------------------------
|
|
# Unsigned Saturating Shift Left (Immediate)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: uqshl b18, b15, #6
|
|
# CHECK: uqshl h11, h18, #7
|
|
# CHECK: uqshl s14, s19, #18
|
|
# CHECK: uqshl d15, d12, #19
|
|
0xf2,0x75,0x0e,0x7f
|
|
0x4b,0x76,0x17,0x7f
|
|
0x6e,0x76,0x32,0x7f
|
|
0x8f,0x75,0x53,0x7f
|
|
|
|
#----------------------------------------------------------------------
|
|
# Signed Saturating Shift Left Unsigned (Immediate)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: sqshlu b15, b18, #6
|
|
# CHECK: sqshlu h19, h17, #6
|
|
# CHECK: sqshlu s16, s14, #25
|
|
# CHECK: sqshlu d11, d13, #32
|
|
0x4f,0x66,0x0e,0x7f
|
|
0x33,0x66,0x16,0x7f
|
|
0xd0,0x65,0x39,0x7f
|
|
0xab,0x65,0x60,0x7f
|
|
|
|
#----------------------------------------------------------------------
|
|
# Shift Right And Insert (Immediate)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: sri d10, d12, #14
|
|
0x8a,0x45,0x72,0x7f
|
|
|
|
#----------------------------------------------------------------------
|
|
# Shift Left And Insert (Immediate)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: sli d10, d14, #12
|
|
0xca,0x55,0x4c,0x7f
|
|
|
|
#----------------------------------------------------------------------
|
|
# Signed Saturating Shift Right Narrow (Immediate)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: sqshrn b10, h15, #5
|
|
# CHECK: sqshrn h17, s10, #4
|
|
# CHECK: sqshrn s18, d10, #31
|
|
0xea,0x95,0x0b,0x5f
|
|
0x51,0x95,0x1c,0x5f
|
|
0x52,0x95,0x21,0x5f
|
|
|
|
#----------------------------------------------------------------------
|
|
# Unsigned Saturating Shift Right Narrow (Immediate)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: uqshrn b12, h10, #7
|
|
# CHECK: uqshrn h10, s14, #5
|
|
# CHECK: uqshrn s10, d12, #13
|
|
0x4c,0x95,0x09,0x7f
|
|
0xca,0x95,0x1b,0x7f
|
|
0x8a,0x95,0x33,0x7f
|
|
|
|
#----------------------------------------------------------------------
|
|
# Signed Saturating Rounded Shift Right Narrow (Immediate)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: sqrshrn b10, h13, #2
|
|
# CHECK: sqrshrn h15, s10, #6
|
|
# CHECK: sqrshrn s15, d12, #9
|
|
0xaa,0x9d,0x0e,0x5f
|
|
0x4f,0x9d,0x1a,0x5f
|
|
0x8f,0x9d,0x37,0x5f
|
|
|
|
#----------------------------------------------------------------------
|
|
# Unsigned Saturating Rounded Shift Right Narrow (Immediate)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: uqrshrn b10, h12, #5
|
|
# CHECK: uqrshrn h12, s10, #14
|
|
# CHECK: uqrshrn s10, d10, #25
|
|
0x8a,0x9d,0x0b,0x7f
|
|
0x4c,0x9d,0x12,0x7f
|
|
0x4a,0x9d,0x27,0x7f
|
|
|
|
#----------------------------------------------------------------------
|
|
# Signed Saturating Shift Right Unsigned Narrow (Immediate)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: sqshrun b15, h10, #7
|
|
# CHECK: sqshrun h20, s14, #3
|
|
# CHECK: sqshrun s10, d15, #15
|
|
0x4f,0x85,0x09,0x7f
|
|
0xd4,0x85,0x1d,0x7f
|
|
0xea,0x85,0x31,0x7f
|
|
|
|
#----------------------------------------------------------------------
|
|
# Signed Saturating Rounded Shift Right Unsigned Narrow (Immediate)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: sqrshrun b17, h10, #6
|
|
# CHECK: sqrshrun h10, s13, #15
|
|
# CHECK: sqrshrun s22, d16, #31
|
|
0x51,0x8d,0x0a,0x7f
|
|
0xaa,0x8d,0x11,0x7f
|
|
0x16,0x8e,0x21,0x7f
|
|
|
|
#----------------------------------------------------------------------
|
|
# Scalar Signed Fixed-point Convert To Floating-Point (Immediate)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: scvtf s22, s13, #32
|
|
# CHECK: scvtf d21, d12, #64
|
|
0xb6,0xe5,0x20,0x5f
|
|
0x95,0xe5,0x40,0x5f
|
|
|
|
#----------------------------------------------------------------------
|
|
# Scalar Unsigned Fixed-point Convert To Floating-Point (Immediate)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: ucvtf s22, s13, #32
|
|
# CHECK: ucvtf d21, d14, #64
|
|
0xb6,0xe5,0x20,0x7f
|
|
0xd5,0xe5,0x40,0x7f
|
|
|
|
#----------------------------------------------------------------------
|
|
# Scalar Floating-point Convert To Signed Fixed-point (Immediate)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: fcvtzs s21, s12, #1
|
|
# CHECK: fcvtzs d21, d12, #1
|
|
0x95,0xfd,0x3f,0x5f
|
|
0x95,0xfd,0x7f,0x5f
|
|
|
|
#----------------------------------------------------------------------
|
|
# Scalar Floating-point Convert To Unsigned Fixed-point (Immediate)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: fcvtzu s21, s12, #1
|
|
# CHECK: fcvtzu d21, d12, #1
|
|
0x95,0xfd,0x3f,0x7f
|
|
0x95,0xfd,0x7f,0x7f
|
|
|
|
#----------------------------------------------------------------------
|
|
# Vector load/store multiple N-element structure
|
|
#----------------------------------------------------------------------
|
|
# CHECK: ld1 {v0.16b}, [x0]
|
|
# CHECK: ld1 {v15.8h, v16.8h}, [x15]
|
|
# CHECK: ld1 {v31.4s, v0.4s, v1.4s}, [sp]
|
|
# CHECK: ld1 {v0.2d, v1.2d, v2.2d, v3.2d}, [x0]
|
|
0x00,0x70,0x40,0x4c
|
|
0xef,0xa5,0x40,0x4c
|
|
0xff,0x6b,0x40,0x4c
|
|
0x00,0x2c,0x40,0x4c
|
|
|
|
# CHECK: ld2 {v0.8b, v1.8b}, [x0]
|
|
# CHECK: ld3 {v15.4h, v16.4h, v17.4h}, [x15]
|
|
# CHECK: ld4 {v31.2s, v0.2s, v1.2s, v2.2s}, [sp]
|
|
0x00,0x80,0x40,0x0c
|
|
0xef,0x45,0x40,0x0c
|
|
0xff,0x0b,0x40,0x0c
|
|
|
|
# CHECK: st1 {v0.16b}, [x0]
|
|
# CHECK: st1 {v15.8h, v16.8h}, [x15]
|
|
# CHECK: st1 {v31.4s, v0.4s, v1.4s}, [sp]
|
|
# CHECK: st1 {v0.2d, v1.2d, v2.2d, v3.2d}, [x0]
|
|
0x00,0x70,0x00,0x4c
|
|
0xef,0xa5,0x00,0x4c
|
|
0xff,0x6b,0x00,0x4c
|
|
0x00,0x2c,0x00,0x4c
|
|
|
|
# CHECK: st2 {v0.8b, v1.8b}, [x0]
|
|
# CHECK: st3 {v15.4h, v16.4h, v17.4h}, [x15]
|
|
# CHECK: st4 {v31.2s, v0.2s, v1.2s, v2.2s}, [sp]
|
|
0x00,0x80,0x00,0x0c
|
|
0xef,0x45,0x00,0x0c
|
|
0xff,0x0b,0x00,0x0c
|
|
|
|
#----------------------------------------------------------------------
|
|
# Vector load/store multiple N-element structure (post-index)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: ld1 {v15.8h}, [x15], x2
|
|
# CHECK: ld1 {v31.4s, v0.4s}, [sp], #32
|
|
# CHECK: ld1 {v0.2d, v1.2d, v2.2d}, [x0], #48
|
|
# CHECK: ld1 {v0.8b, v1.8b, v2.8b, v3.8b}, [x0], x3
|
|
0xef,0x75,0xc2,0x4c
|
|
0xff,0xab,0xdf,0x4c
|
|
0x00,0x6c,0xdf,0x4c
|
|
0x00,0x20,0xc3,0x0c
|
|
|
|
# CHECK: ld2 {v0.16b, v1.16b}, [x0], x1
|
|
# CHECK: ld3 {v15.8h, v16.8h, v17.8h}, [x15], x2
|
|
# CHECK: ld4 {v31.4s, v0.4s, v1.4s, v2.4s}, [sp], #64
|
|
0x00,0x80,0xc1,0x4c
|
|
0xef,0x45,0xc2,0x4c
|
|
0xff,0x0b,0xdf,0x4c
|
|
|
|
|
|
# CHECK: st1 {v15.8h}, [x15], x2
|
|
# CHECK: st1 {v31.4s, v0.4s}, [sp], #32
|
|
# CHECK: st1 {v0.2d, v1.2d, v2.2d}, [x0], #48
|
|
# CHECK: st1 {v0.8b, v1.8b, v2.8b, v3.8b}, [x0], x3
|
|
0xef,0x75,0x82,0x4c
|
|
0xff,0xab,0x9f,0x4c
|
|
0x00,0x6c,0x9f,0x4c
|
|
0x00,0x20,0x83,0x0c
|
|
|
|
# CHECK: st2 {v0.16b, v1.16b}, [x0], x1
|
|
# CHECK: st3 {v15.8h, v16.8h, v17.8h}, [x15], x2
|
|
# CHECK: st4 {v31.4s, v0.4s, v1.4s, v2.4s}, [sp], #64
|
|
0x00,0x80,0x81,0x4c
|
|
0xef,0x45,0x82,0x4c
|
|
0xff,0x0b,0x9f,0x4c
|
|
|
|
#----------------------------------------------------------------------
|
|
# Vector load single N-element structure to all lane of N
|
|
# consecutive registers (N = 1,2,3,4)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: ld1r {v0.16b}, [x0]
|
|
# CHECK: ld1r {v15.8h}, [x15]
|
|
# CHECK: ld2r {v31.4s, v0.4s}, [sp]
|
|
# CHECK: ld2r {v0.2d, v1.2d}, [x0]
|
|
# CHECK: ld3r {v0.8b, v1.8b, v2.8b}, [x0]
|
|
# CHECK: ld3r {v15.4h, v16.4h, v17.4h}, [x15]
|
|
# CHECK: ld4r {v31.2s, v0.2s, v1.2s, v2.2s}, [sp]
|
|
# CHECK: ld4r {v31.1d, v0.1d, v1.1d, v2.1d}, [sp]
|
|
0x00,0xc0,0x40,0x4d
|
|
0xef,0xc5,0x40,0x4d
|
|
0xff,0xcb,0x60,0x4d
|
|
0x00,0xcc,0x60,0x4d
|
|
0x00,0xe0,0x40,0x0d
|
|
0xef,0xe5,0x40,0x0d
|
|
0xff,0xeb,0x60,0x0d
|
|
0xff,0xef,0x60,0x0d
|
|
|
|
#----------------------------------------------------------------------
|
|
# Vector load/store single N-element structure to/from one lane of N
|
|
# consecutive registers (N = 1,2,3,4)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: ld1 {v0.b}[9], [x0]
|
|
# CHECK: ld2 {v15.h, v16.h}[7], [x15]
|
|
# CHECK: ld3 {v31.s, v0.s, v1.s}[3], [sp]
|
|
# CHECK: ld4 {v0.d, v1.d, v2.d, v3.d}[1], [x0]
|
|
# CHECK: st1 {v0.d}[1], [x0]
|
|
# CHECK: st2 {v31.s, v0.s}[3], [sp]
|
|
# CHECK: st3 {v15.h, v16.h, v17.h}[7], [x15]
|
|
# CHECK: st4 {v0.b, v1.b, v2.b, v3.b}[9], [x0]
|
|
0x00,0x04,0x40,0x4d
|
|
0xef,0x59,0x60,0x4d
|
|
0xff,0xb3,0x40,0x4d
|
|
0x00,0xa4,0x60,0x4d
|
|
0x00,0x84,0x00,0x4d
|
|
0xff,0x93,0x20,0x4d
|
|
0xef,0x79,0x00,0x4d
|
|
0x00,0x24,0x20,0x4d
|
|
|
|
#----------------------------------------------------------------------
|
|
# Post-index of vector load single N-element structure to all lane of N
|
|
# consecutive registers (N = 1,2,3,4)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: ld1r {v0.16b}, [x0], #1
|
|
# CHECK: ld1r {v15.8h}, [x15], #2
|
|
# CHECK: ld2r {v31.4s, v0.4s}, [sp], #8
|
|
# CHECK: ld2r {v0.2d, v1.2d}, [x0], #16
|
|
# CHECK: ld3r {v0.8b, v1.8b, v2.8b}, [x0], #3
|
|
# CHECK: ld3r {v15.4h, v16.4h, v17.4h}, [x15], #6
|
|
# CHECK: ld4r {v31.2s, v0.2s, v1.2s, v2.2s}, [sp], x30
|
|
# CHECK: ld4r {v31.1d, v0.1d, v1.1d, v2.1d}, [sp], x7
|
|
0x00,0xc0,0xdf,0x4d
|
|
0xef,0xc5,0xdf,0x4d
|
|
0xff,0xcb,0xff,0x4d
|
|
0x00,0xcc,0xff,0x4d
|
|
0x00,0xe0,0xdf,0x0d
|
|
0xef,0xe5,0xdf,0x0d
|
|
0xff,0xeb,0xfe,0x0d
|
|
0xff,0xef,0xe7,0x0d
|
|
|
|
#----------------------------------------------------------------------
|
|
# Post-index of vector load/store single N-element structure to/from
|
|
# one lane of N consecutive registers (N = 1,2,3,4)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: ld1 {v0.b}[9], [x0], #1
|
|
# CHECK: ld2 {v15.h, v16.h}[7], [x15], #4
|
|
# CHECK: ld3 {v31.s, v0.s, v1.s}[3], [sp], x3
|
|
# CHECK: ld4 {v0.d, v1.d, v2.d, v3.d}[1], [x0], #32
|
|
# CHECK: ld4 {v0.h, v1.h, v2.h, v3.h}[7], [x0], x0
|
|
# CHECK: st1 {v0.d}[1], [x0], #8
|
|
# CHECK: st2 {v31.s, v0.s}[3], [sp], #8
|
|
# CHECK: st3 {v15.h, v16.h, v17.h}[7], [x15], #6
|
|
# CHECK: st4 {v0.b, v1.b, v2.b, v3.b}[9], [x0], x5
|
|
0x00,0x04,0xdf,0x4d
|
|
0xef,0x59,0xff,0x4d
|
|
0xff,0xb3,0xc3,0x4d
|
|
0x00,0xa4,0xff,0x4d
|
|
0x00,0x78,0xe0,0x4d
|
|
0x00,0x84,0x9f,0x4d
|
|
0xff,0x93,0xbf,0x4d
|
|
0xef,0x79,0x9f,0x4d
|
|
0x00,0x24,0xa5,0x4d
|
|
|
|
#----------------------------------------------------------------------
|
|
# Bitwise extract
|
|
#----------------------------------------------------------------------
|
|
0x20,0x18,0x02,0x2e
|
|
0x20,0x18,0x02,0x6e
|
|
# CHECK: ext v0.8b, v1.8b, v2.8b, #0x3
|
|
# CHECK: ext v0.16b, v1.16b, v2.16b, #0x3
|
|
|
|
#----------------------------------------------------------------------
|
|
# unzip with 3 same vectors to get primary result
|
|
#----------------------------------------------------------------------
|
|
# CHECK: uzp1 v1.8b, v1.8b, v2.8b
|
|
# CHECK: uzp1 v2.16b, v1.16b, v2.16b
|
|
# CHECK: uzp1 v3.4h, v1.4h, v2.4h
|
|
# CHECK: uzp1 v4.8h, v1.8h, v2.8h
|
|
# CHECK: uzp1 v5.2s, v1.2s, v2.2s
|
|
# CHECK: uzp1 v6.4s, v1.4s, v2.4s
|
|
# CHECK: uzp1 v7.2d, v1.2d, v2.2d
|
|
0x21,0x18,0x02,0x0e
|
|
0x22,0x18,0x02,0x4e
|
|
0x23,0x18,0x42,0x0e
|
|
0x24,0x18,0x42,0x4e
|
|
0x25,0x18,0x82,0x0e
|
|
0x26,0x18,0x82,0x4e
|
|
0x27,0x18,0xc2,0x4e
|
|
|
|
#----------------------------------------------------------------------
|
|
# transpose with 3 same vectors to get primary result
|
|
#----------------------------------------------------------------------
|
|
# CHECK: trn1 v8.8b, v1.8b, v2.8b
|
|
# CHECK: trn1 v9.16b, v1.16b, v2.16b
|
|
# CHECK: trn1 v10.4h, v1.4h, v2.4h
|
|
# CHECK: trn1 v27.8h, v7.8h, v2.8h
|
|
# CHECK: trn1 v12.2s, v7.2s, v2.2s
|
|
# CHECK: trn1 v29.4s, v6.4s, v2.4s
|
|
# CHECK: trn1 v14.2d, v6.2d, v2.2d
|
|
0x28,0x28,0x02,0x0e
|
|
0x29,0x28,0x02,0x4e
|
|
0x2a,0x28,0x42,0x0e
|
|
0xfb,0x28,0x42,0x4e
|
|
0xec,0x28,0x82,0x0e
|
|
0xdd,0x28,0x82,0x4e
|
|
0xce,0x28,0xc2,0x4e
|
|
|
|
#----------------------------------------------------------------------
|
|
# zip with 3 same vectors to get primary result
|
|
#----------------------------------------------------------------------
|
|
# CHECK: zip1 v31.8b, v5.8b, v2.8b
|
|
# CHECK: zip1 v0.16b, v5.16b, v2.16b
|
|
# CHECK: zip1 v17.4h, v4.4h, v2.4h
|
|
# CHECK: zip1 v2.8h, v4.8h, v2.8h
|
|
# CHECK: zip1 v19.2s, v3.2s, v2.2s
|
|
# CHECK: zip1 v4.4s, v3.4s, v2.4s
|
|
# CHECK: zip1 v21.2d, v2.2d, v2.2d
|
|
0xbf,0x38,0x02,0x0e
|
|
0xa0,0x38,0x02,0x4e
|
|
0x91,0x38,0x42,0x0e
|
|
0x82,0x38,0x42,0x4e
|
|
0x73,0x38,0x82,0x0e
|
|
0x64,0x38,0x82,0x4e
|
|
0x55,0x38,0xc2,0x4e
|
|
|
|
#----------------------------------------------------------------------
|
|
# unzip with 3 same vectors to get secondary result
|
|
#----------------------------------------------------------------------
|
|
# CHECK: uzp2 v6.8b, v2.8b, v2.8b
|
|
# CHECK: uzp2 v23.16b, v1.16b, v2.16b
|
|
# CHECK: uzp2 v8.4h, v1.4h, v2.4h
|
|
# CHECK: uzp2 v25.8h, v0.8h, v2.8h
|
|
# CHECK: uzp2 v10.2s, v0.2s, v2.2s
|
|
# CHECK: uzp2 v27.4s, v7.4s, v2.4s
|
|
# CHECK: uzp2 v12.2d, v7.2d, v2.2d
|
|
0x46,0x58,0x02,0x0e
|
|
0x37,0x58,0x02,0x4e
|
|
0x28,0x58,0x42,0x0e
|
|
0x19,0x58,0x42,0x4e
|
|
0x0a,0x58,0x82,0x0e
|
|
0xfb,0x58,0x82,0x4e
|
|
0xec,0x58,0xc2,0x4e
|
|
|
|
#----------------------------------------------------------------------
|
|
# transpose with 3 same vectors to get secondary result
|
|
#----------------------------------------------------------------------
|
|
# CHECK: trn2 v29.8b, v6.8b, v2.8b
|
|
# CHECK: trn2 v14.16b, v6.16b, v2.16b
|
|
# CHECK: trn2 v31.4h, v5.4h, v2.4h
|
|
# CHECK: trn2 v0.8h, v5.8h, v2.8h
|
|
# CHECK: trn2 v17.2s, v4.2s, v2.2s
|
|
# CHECK: trn2 v2.4s, v4.4s, v2.4s
|
|
# CHECK: trn2 v19.2d, v3.2d, v2.2d
|
|
0xdd,0x68,0x02,0x0e
|
|
0xce,0x68,0x02,0x4e
|
|
0xbf,0x68,0x42,0x0e
|
|
0xa0,0x68,0x42,0x4e
|
|
0x91,0x68,0x82,0x0e
|
|
0x82,0x68,0x82,0x4e
|
|
0x73,0x68,0xc2,0x4e
|
|
|
|
#----------------------------------------------------------------------
|
|
# zip with 3 same vectors to get secondary result
|
|
#----------------------------------------------------------------------
|
|
# CHECK: zip2 v4.8b, v3.8b, v2.8b
|
|
# CHECK: zip2 v21.16b, v2.16b, v2.16b
|
|
# CHECK: zip2 v6.4h, v2.4h, v2.4h
|
|
# CHECK: zip2 v23.8h, v1.8h, v2.8h
|
|
# CHECK: zip2 v8.2s, v1.2s, v2.2s
|
|
# CHECK: zip2 v25.4s, v0.4s, v2.4s
|
|
# CHECK: zip2 v10.2d, v0.2d, v2.2d
|
|
0x64,0x78,0x02,0x0e
|
|
0x55,0x78,0x02,0x4e
|
|
0x46,0x78,0x42,0x0e
|
|
0x37,0x78,0x42,0x4e
|
|
0x28,0x78,0x82,0x0e
|
|
0x19,0x78,0x82,0x4e
|
|
0x0a,0x78,0xc2,0x4e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Scalar Floating Point multiply (scalar, by element)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: fmul s0, s1, v1.s[0]
|
|
# CHECK: fmul s0, s1, v1.s[3]
|
|
# CHECK: fmul d0, d1, v1.d[0]
|
|
# CHECK: fmul d0, d1, v1.d[1]
|
|
# CHECK: fmul d15, d15, v15.d[1]
|
|
0x20 0x90 0x81 0x5f
|
|
0x20 0x98 0xa1 0x5f
|
|
0x20 0x90 0xc1 0x5f
|
|
0x20 0x98 0xc1 0x5f
|
|
0xef 0x99 0xcf 0x5f
|
|
|
|
#----------------------------------------------------------------------
|
|
# Scalar Floating Point multiply extended (scalar, by element)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: fmulx s3, s5, v7.s[0]
|
|
# CHECK: fmulx s3, s5, v7.s[3]
|
|
# CHECK: fmulx s3, s5, v15.s[3]
|
|
# CHECK: fmulx d0, d4, v8.d[0]
|
|
# CHECK: fmulx d0, d4, v8.d[1]
|
|
0xa3 0x90 0x87 0x7f
|
|
0xa3 0x98 0xa7 0x7f
|
|
0xa3 0x98 0xaf 0x7f
|
|
0x80 0x90 0xc8 0x7f
|
|
0x80 0x98 0xc8 0x7f
|
|
|
|
#----------------------------------------------------------------------
|
|
# Scalar Floating Point fused multiply-add (scalar, by element)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: fmla s0, s1, v1.s[0]
|
|
# CHECK: fmla s0, s1, v1.s[3]
|
|
# CHECK: fmla d0, d1, v1.d[0]
|
|
# CHECK: fmla d0, d1, v1.d[1]
|
|
# CHECK: fmla d15, d15, v15.d[1]
|
|
0x20 0x10 0x81 0x5f
|
|
0x20 0x18 0xa1 0x5f
|
|
0x20 0x10 0xc1 0x5f
|
|
0x20 0x18 0xc1 0x5f
|
|
0xef 0x19 0xcf 0x5f
|
|
|
|
#----------------------------------------------------------------------
|
|
# Scalar Floating Point fused multiply-sub (scalar, by element)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: fmls s3, s5, v7.s[0]
|
|
# CHECK: fmls s3, s5, v7.s[3]
|
|
# CHECK: fmls s3, s5, v15.s[3]
|
|
# CHECK: fmls d0, d4, v8.d[0]
|
|
# CHECK: fmls d0, d4, v8.d[1]
|
|
0xa3 0x50 0x87 0x5f
|
|
0xa3 0x58 0xa7 0x5f
|
|
0xa3 0x58 0xaf 0x5f
|
|
0x80 0x50 0xc8 0x5f
|
|
0x80 0x58 0xc8 0x5f
|
|
|
|
#----------------------------------------------------------------------
|
|
# Scalar Signed saturating doubling
|
|
# multiply-add long (scalar, by element)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: sqdmlal s0, h0, v0.h[0]
|
|
# CHECK: sqdmlal s0, h0, v0.h[1]
|
|
# CHECK: sqdmlal s0, h0, v0.h[2]
|
|
# CHECK: sqdmlal s0, h0, v0.h[3]
|
|
# CHECK: sqdmlal s0, h0, v0.h[4]
|
|
# CHECK: sqdmlal s0, h0, v0.h[5]
|
|
# CHECK: sqdmlal s0, h0, v0.h[6]
|
|
# CHECK: sqdmlal s0, h0, v0.h[7]
|
|
# CHECK: sqdmlal d8, s9, v15.s[0]
|
|
# CHECK: sqdmlal d8, s9, v15.s[1]
|
|
# CHECK: sqdmlal d8, s9, v15.s[2]
|
|
# CHECK: sqdmlal d8, s9, v15.s[3]
|
|
0x00 0x30 0x40 0x5f
|
|
0x00 0x30 0x50 0x5f
|
|
0x00 0x30 0x60 0x5f
|
|
0x00 0x30 0x70 0x5f
|
|
0x00 0x38 0x40 0x5f
|
|
0x00 0x38 0x50 0x5f
|
|
0x00 0x38 0x60 0x5f
|
|
0x00 0x38 0x70 0x5f
|
|
0x28 0x31 0x8f 0x5f
|
|
0x28 0x31 0xaf 0x5f
|
|
0x28 0x39 0x8f 0x5f
|
|
0x28 0x39 0xaf 0x5f
|
|
|
|
#----------------------------------------------------------------------
|
|
# Scalar Signed saturating doubling
|
|
# multiply-sub long (scalar, by element)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: sqdmlsl s0, h0, v0.h[0]
|
|
# CHECK: sqdmlsl s0, h0, v0.h[1]
|
|
# CHECK: sqdmlsl s0, h0, v0.h[2]
|
|
# CHECK: sqdmlsl s0, h0, v0.h[3]
|
|
# CHECK: sqdmlsl s0, h0, v0.h[4]
|
|
# CHECK: sqdmlsl s0, h0, v0.h[5]
|
|
# CHECK: sqdmlsl s0, h0, v0.h[6]
|
|
# CHECK: sqdmlsl s0, h0, v0.h[7]
|
|
# CHECK: sqdmlsl d8, s9, v15.s[0]
|
|
# CHECK: sqdmlsl d8, s9, v15.s[1]
|
|
# CHECK: sqdmlsl d8, s9, v15.s[2]
|
|
# CHECK: sqdmlsl d8, s9, v15.s[3]
|
|
0x00 0x70 0x40 0x5f
|
|
0x00 0x70 0x50 0x5f
|
|
0x00 0x70 0x60 0x5f
|
|
0x00 0x70 0x70 0x5f
|
|
0x00 0x78 0x40 0x5f
|
|
0x00 0x78 0x50 0x5f
|
|
0x00 0x78 0x60 0x5f
|
|
0x00 0x78 0x70 0x5f
|
|
0x28 0x71 0x8f 0x5f
|
|
0x28 0x71 0xaf 0x5f
|
|
0x28 0x79 0x8f 0x5f
|
|
0x28 0x79 0xaf 0x5f
|
|
|
|
#----------------------------------------------------------------------
|
|
# Scalar Signed saturating doubling multiply long (scalar, by element)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: sqdmull s1, h1, v1.h[0]
|
|
# CHECK: sqdmull s1, h1, v1.h[1]
|
|
# CHECK: sqdmull s1, h1, v1.h[2]
|
|
# CHECK: sqdmull s1, h1, v1.h[3]
|
|
# CHECK: sqdmull s1, h1, v1.h[4]
|
|
# CHECK: sqdmull s1, h1, v1.h[5]
|
|
# CHECK: sqdmull s1, h1, v1.h[6]
|
|
# CHECK: sqdmull s1, h1, v1.h[7]
|
|
# CHECK: sqdmull d1, s1, v4.s[0]
|
|
# CHECK: sqdmull d1, s1, v4.s[1]
|
|
# CHECK: sqdmull d1, s1, v4.s[2]
|
|
# CHECK: sqdmull d1, s1, v4.s[3]
|
|
0x21 0xb0 0x41 0x5f
|
|
0x21 0xb0 0x51 0x5f
|
|
0x21 0xb0 0x61 0x5f
|
|
0x21 0xb0 0x71 0x5f
|
|
0x21 0xb8 0x41 0x5f
|
|
0x21 0xb8 0x51 0x5f
|
|
0x21 0xb8 0x61 0x5f
|
|
0x21 0xb8 0x71 0x5f
|
|
0x21 0xb0 0x84 0x5f
|
|
0x21 0xb0 0xa4 0x5f
|
|
0x21 0xb8 0x84 0x5f
|
|
0x21 0xb8 0xa4 0x5f
|
|
|
|
#----------------------------------------------------------------------
|
|
# Scalar Signed saturating doubling multiply returning
|
|
# high half (scalar, by element)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: sqdmulh h7, h1, v14.h[0]
|
|
# CHECK: sqdmulh h7, h15, v8.h[1]
|
|
# CHECK: sqdmulh h7, h15, v8.h[2]
|
|
# CHECK: sqdmulh h7, h15, v8.h[3]
|
|
# CHECK: sqdmulh h7, h15, v8.h[4]
|
|
# CHECK: sqdmulh h7, h15, v8.h[5]
|
|
# CHECK: sqdmulh h7, h15, v8.h[6]
|
|
# CHECK: sqdmulh h7, h15, v8.h[7]
|
|
# CHECK: sqdmulh s15, s3, v4.s[0]
|
|
# CHECK: sqdmulh s15, s14, v16.s[1]
|
|
# CHECK: sqdmulh s15, s15, v16.s[2]
|
|
# CHECK: sqdmulh s15, s16, v17.s[3]
|
|
0x27 0xc0 0x4e 0x5f
|
|
0xe7 0xc1 0x58 0x5f
|
|
0xe7 0xc1 0x68 0x5f
|
|
0xe7 0xc1 0x78 0x5f
|
|
0xe7 0xc9 0x48 0x5f
|
|
0xe7 0xc9 0x58 0x5f
|
|
0xe7 0xc9 0x68 0x5f
|
|
0xe7 0xc9 0x78 0x5f
|
|
0x6f 0xc0 0x84 0x5f
|
|
0xcf 0xc1 0xb0 0x5f
|
|
0xef 0xc9 0x90 0x5f
|
|
0x0f 0xca 0xb1 0x5f
|
|
|
|
#----------------------------------------------------------------------
|
|
# Scalar Signed saturating rounding doubling multiply
|
|
# returning high half (scalar, by element)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: sqrdmulh h7, h1, v14.h[0]
|
|
# CHECK: sqrdmulh h7, h15, v8.h[1]
|
|
# CHECK: sqrdmulh h7, h15, v8.h[2]
|
|
# CHECK: sqrdmulh h7, h15, v8.h[3]
|
|
# CHECK: sqrdmulh h7, h15, v8.h[4]
|
|
# CHECK: sqrdmulh h7, h15, v8.h[5]
|
|
# CHECK: sqrdmulh h7, h15, v8.h[6]
|
|
# CHECK: sqrdmulh h7, h15, v8.h[7]
|
|
# CHECK: sqrdmulh s15, s3, v4.s[0]
|
|
# CHECK: sqrdmulh s15, s14, v16.s[1]
|
|
# CHECK: sqrdmulh s15, s15, v16.s[2]
|
|
# CHECK: sqrdmulh s15, s16, v17.s[3]
|
|
0x27 0xd0 0x4e 0x5f
|
|
0xe7 0xd1 0x58 0x5f
|
|
0xe7 0xd1 0x68 0x5f
|
|
0xe7 0xd1 0x78 0x5f
|
|
0xe7 0xd9 0x48 0x5f
|
|
0xe7 0xd9 0x58 0x5f
|
|
0xe7 0xd9 0x68 0x5f
|
|
0xe7 0xd9 0x78 0x5f
|
|
0x6f 0xd0 0x84 0x5f
|
|
0xcf 0xd1 0xb0 0x5f
|
|
0xef 0xd9 0x90 0x5f
|
|
0x0f 0xda 0xb1 0x5f
|
|
|
|
#----------------------------------------------------------------------
|
|
#Duplicate element (scalar)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: dup b0, v0.b[15]
|
|
# CHECK: dup h2, v31.h[5]
|
|
# CHECK: dup s17, v2.s[2]
|
|
# CHECK: dup d6, v12.d[1]
|
|
0x00 0x04 0x1f 0x5e
|
|
0xe2 0x07 0x16 0x5e
|
|
0x51 0x04 0x14 0x5e
|
|
0x86 0x05 0x18 0x5e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Table look up
|
|
#----------------------------------------------------------------------
|
|
0x20,0x00,0x02,0x0e
|
|
0xf0,0x23,0x02,0x0e
|
|
0x20,0x40,0x02,0x0e
|
|
0xf0,0x62,0x02,0x0e
|
|
# CHECK: tbl v0.8b, {v1.16b}, v2.8b
|
|
# CHECK: tbl v16.8b, {v31.16b, v0.16b}, v2.8b
|
|
# CHECK: tbl v0.8b, {v1.16b, v2.16b, v3.16b}, v2.8b
|
|
# CHECK: tbl v16.8b, {v23.16b, v24.16b, v25.16b, v26.16b}, v2.8b
|
|
|
|
0x20,0x00,0x02,0x4e
|
|
0xf0,0x23,0x02,0x4e
|
|
0x20,0x40,0x02,0x4e
|
|
0xe0,0x63,0x02,0x4e
|
|
# CHECK: tbl v0.16b, {v1.16b}, v2.16b
|
|
# CHECK: tbl v16.16b, {v31.16b, v0.16b}, v2.16b
|
|
# CHECK: tbl v0.16b, {v1.16b, v2.16b, v3.16b}, v2.16b
|
|
# CHECK: tbl v0.16b, {v31.16b, v0.16b, v1.16b, v2.16b}, v2.16b
|
|
|
|
0x20,0x10,0x02,0x0e
|
|
0xf0,0x33,0x02,0x0e
|
|
0x20,0x50,0x02,0x0e
|
|
0xf0,0x72,0x02,0x0e
|
|
# CHECK: tbx v0.8b, {v1.16b}, v2.8b
|
|
# CHECK: tbx v16.8b, {v31.16b, v0.16b}, v2.8b
|
|
# CHECK: tbx v0.8b, {v1.16b, v2.16b, v3.16b}, v2.8b
|
|
# CHECK: tbx v16.8b, {v23.16b, v24.16b, v25.16b, v26.16b}, v2.8b
|
|
|
|
0x20,0x10,0x02,0x4e
|
|
0xf0,0x33,0x02,0x4e
|
|
0x20,0x50,0x02,0x4e
|
|
0xf0,0x73,0x02,0x4e
|
|
# CHECK: tbx v0.16b, {v1.16b}, v2.16b
|
|
# CHECK: tbx v16.16b, {v31.16b, v0.16b}, v2.16b
|
|
# CHECK: tbx v0.16b, {v1.16b, v2.16b, v3.16b}, v2.16b
|
|
# CHECK: tbx v16.16b, {v31.16b, v0.16b, v1.16b, v2.16b}, v2.16b
|
|
|
|
#----------------------------------------------------------------------
|
|
# Scalar Floating-point Convert To Lower Precision Narrow, Rounding To
|
|
# Odd
|
|
#----------------------------------------------------------------------
|
|
# CHECK: fcvtxn s22, d13
|
|
0xb6,0x69,0x61,0x7e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Scalar Floating-point Convert To Signed Integer, Rounding To Nearest
|
|
# With Ties To Away
|
|
#----------------------------------------------------------------------
|
|
# CHECK: fcvtas s12, s13
|
|
# CHECK: fcvtas d21, d14
|
|
|
|
0xac,0xc9,0x21,0x5e
|
|
0xd5,0xc9,0x61,0x5e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Scalar Floating-point Convert To Unsigned Integer, Rounding To
|
|
# Nearest With Ties To Away
|
|
#----------------------------------------------------------------------
|
|
# CHECK: fcvtau s12, s13
|
|
# CHECK: fcvtau d21, d14
|
|
0xac,0xc9,0x21,0x7e
|
|
0xd5,0xc9,0x61,0x7e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Scalar Floating-point Convert To Signed Integer, Rounding Toward
|
|
# Minus Infinity
|
|
#----------------------------------------------------------------------
|
|
# CHECK: fcvtms s22, s13
|
|
# CHECK: fcvtms d21, d14
|
|
0xb6,0xb9,0x21,0x5e
|
|
0xd5,0xb9,0x61,0x5e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Scalar Floating-point Convert To Unsigned Integer, Rounding Toward
|
|
# Minus Infinity
|
|
#----------------------------------------------------------------------
|
|
# CHECK: fcvtmu s12, s13
|
|
# CHECK: fcvtmu d21, d14
|
|
0xac,0xb9,0x21,0x7e
|
|
0xd5,0xb9,0x61,0x7e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Scalar Floating-point Convert To Signed Integer, Rounding To Nearest
|
|
# With Ties To Even
|
|
#----------------------------------------------------------------------
|
|
|
|
# CHECK: fcvtns s22, s13
|
|
# CHECK: fcvtns d21, d14
|
|
|
|
0xb6,0xa9,0x21,0x5e
|
|
0xd5,0xa9,0x61,0x5e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Scalar Floating-point Convert To Unsigned Integer, Rounding To
|
|
# Nearest With Ties To Even
|
|
#----------------------------------------------------------------------
|
|
|
|
# CHECK: fcvtnu s12, s13
|
|
# CHECK: fcvtnu d21, d14
|
|
0xac,0xa9,0x21,0x7e
|
|
0xd5,0xa9,0x61,0x7e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Scalar Floating-point Convert To Signed Integer, Rounding Toward
|
|
# Positive Infinity
|
|
#----------------------------------------------------------------------
|
|
# CHECK: fcvtps s22, s13
|
|
# CHECK: fcvtps d21, d14
|
|
0xb6,0xa9,0xa1,0x5e
|
|
0xd5,0xa9,0xe1,0x5e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Scalar Floating-point Convert To Unsigned Integer, Rounding Toward
|
|
# Positive Infinity
|
|
#----------------------------------------------------------------------
|
|
# CHECK: fcvtpu s12, s13
|
|
# CHECK: fcvtpu d21, d14
|
|
0xac,0xa9,0xa1,0x7e
|
|
0xd5,0xa9,0xe1,0x7e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Scalar Floating-point Convert To Signed Integer, Rounding Toward Zero
|
|
#----------------------------------------------------------------------
|
|
# CHECK: fcvtzs s12, s13
|
|
# CHECK: fcvtzs d21, d14
|
|
0xac,0xb9,0xa1,0x5e
|
|
0xd5,0xb9,0xe1,0x5e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Scalar Floating-point Convert To Unsigned Integer, Rounding Toward
|
|
# Zero
|
|
#----------------------------------------------------------------------
|
|
# CHECK: fcvtzu s12, s13
|
|
# CHECK: fcvtzu d21, d14
|
|
0xac,0xb9,0xa1,0x7e
|
|
0xd5,0xb9,0xe1,0x7e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Scalar Floating-point Absolute Difference
|
|
#----------------------------------------------------------------------
|
|
# CHECK: fabd s29, s24, s20
|
|
# CHECK: fabd d29, d24, d20
|
|
0x1d,0xd7,0xb4,0x7e
|
|
0x1d,0xd7,0xf4,0x7e
|