mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-14 11:32:34 +00:00
d9767021f8
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188451 91177308-0d34-0410-b5e6-96231b3b80d8
697 lines
25 KiB
Plaintext
697 lines
25 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
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: mov v1.16b, v15.16b
|
|
# CHECK: mov v25.8b, v4.8b
|
|
0xe1 0x1d 0xaf 0x4e
|
|
0x99 0x1c 0xa4 0x0e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Vector Absolute Difference and Accumulate (Signed, Unsigned)
|
|
# Vector Absolute Difference (Signed, Unsigned)
|
|
# Vector Absolute Difference (Floating Point)
|
|
#----------------------------------------------------------------------
|
|
|
|
# CHECK: uaba v0.8b, v1.8b, v2.8b
|
|
# CHECK: saba v31.16b, v30.16b, v29.16b
|
|
# CHECK: uabd v15.4h, v16.4h, v17.4h
|
|
# CHECK: sabd v5.4h, v4.4h, v6.4h
|
|
# CHECK: fabd v1.4s, v31.4s, v16.4s
|
|
0x20 0x7c 0x22 0x2e
|
|
0xdf 0x7f 0x3d 0x4e
|
|
0x0f 0x76 0x71 0x2e
|
|
0x85 0x74 0x66 0x0e
|
|
0xe1 0xd7 0xb0 0x6e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Scalar Integer Add
|
|
# Scalar Integer Sub
|
|
#----------------------------------------------------------------------
|
|
|
|
# CHECK: add d17, d31, d29
|
|
# CHECK: sub d15, d5, d16
|
|
0xf1 0x87 0xfd 0x5e
|
|
0xaf 0x84 0xf0 0x7e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Vector Reciprocal Square Root Step (Floating Point)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: frsqrts v31.2d, v15.2d, v8.2d
|
|
0xff 0xfd 0xe8 0x4e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Vector Reciprocal Step (Floating Point)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: frecps v5.4s, v7.4s, v16.4s
|
|
0xe5 0xfc 0x30 0x4e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Vector Absolute Compare Mask Less Than Or Equal (Floating Point)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: facge v0.4s, v31.4s, v16.4s
|
|
0xe0 0xef 0x30 0x6e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Vector Absolute Compare Mask Less Than (Floating Point)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: facgt v31.2d, v29.2d, v28.2d
|
|
0xbf 0xef 0xfc 0x6e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Vector Compare Mask Equal (Integer)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: cmeq v5.16b, v15.16b, v31.16b
|
|
0xe5 0x8d 0x3f 0x6e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Vector Compare Mask Higher or Same (Unsigned Integer)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: cmhs v1.8b, v16.8b, v30.8b
|
|
0x01 0x3e 0x3e 0x2e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Vector Compare Mask Greater Than or Equal (Integer)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: cmge v20.4h, v11.4h, v23.4h
|
|
0x74 0x3d 0x77 0x0e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Vector Compare Mask Higher (Unsigned Integer)
|
|
# CHECK: cmhi v13.8h, v3.8h, v27.8h
|
|
0x6d 0x34 0x7b 0x6e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Vector Compare Mask Greater Than (Integer)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: cmgt v9.4s, v4.4s, v28.4s
|
|
0x89 0x34 0xbc 0x4e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Vector Compare Mask Bitwise Test (Integer)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: cmtst v21.2s, v19.2s, v18.2s
|
|
0x75 0x8e 0xb2 0x0e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Vector Compare Mask Equal (Floating Point)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: fcmeq v0.2s, v15.2s, v16.2s
|
|
0xe0 0xe5 0x30 0x0e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Vector Compare Mask Greater Than Or Equal (Floating Point)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: fcmge v31.4s, v7.4s, v29.4s
|
|
0xff 0xe4 0x3d 0x6e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Vector Compare Mask Greater Than (Floating Point)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: fcmgt v17.4s, v8.4s, v25.4s
|
|
0x11 0xe5 0xb9 0x6e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Vector Compare Mask Equal to Zero (Integer)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: cmeq v31.16b, v15.16b, #0x0
|
|
0xff 0x99 0x20 0x4e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Vector Compare Mask Greater Than or Equal to Zero (Signed Integer)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: cmge v3.8b, v15.8b, #0x0
|
|
0xe3 0x89 0x20 0x2e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Vector Compare Mask Greater Than Zero (Signed Integer)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: cmgt v22.2s, v9.2s, #0x0
|
|
0x36 0x89 0xa0 0x0e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Vector Compare Mask Less Than or Equal To Zero (Signed Integer)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: cmle v5.2d, v14.2d, #0x0
|
|
0xc5 0x99 0xe0 0x6e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Vector Compare Mask Less Than Zero (Signed Integer)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: cmlt v13.8h, v11.8h, #0x0
|
|
0x6d 0xa9 0x60 0x4e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Vector Compare Mask Equal to Zero (Floating Point)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: fcmeq v15.2s, v21.2s, #0.0
|
|
0xaf 0xda 0xa0 0x0e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Vector Compare Mask Greater Than or Equal to Zero (Floating Point)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: fcmge v14.2d, v13.2d, #0.0
|
|
0xae 0xc9 0xe0 0x6e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Vector Compare Mask Greater Than Zero (Floating Point)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: fcmgt v9.4s, v23.4s, #0.0
|
|
0xe9 0xca 0xa0 0x4e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Vector Compare Mask Less Than or Equal To Zero (Floating Point)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: fcmle v11.2d, v6.2d, #0.0
|
|
0xcb 0xd8 0xe0 0x6e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Vector Compare Mask Less Than Zero (Floating Point)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: fcmlt v12.4s, v25.4s, #0.0
|
|
0x2c 0xeb 0xa0 0x4e
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# Vector Integer Halving Add (Signed)
|
|
# Vector Integer Halving Add (Unsigned)
|
|
# Vector Integer Halving Sub (Signed)
|
|
# Vector Integer Halving Sub (Unsigned)
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: shadd v0.8b, v31.8b, v29.8b
|
|
# CHECK: uhadd v15.16b, v16.16b, v17.16b
|
|
# CHECK: shsub v0.4h, v1.4h, v2.4h
|
|
# CHECK: uhadd v5.8h, v7.8h, v8.8h
|
|
# CHECK: shsub v9.2s, v11.2s, v21.2s
|
|
# CHECK: uhsub v22.4s, v30.4s, v19.4s
|
|
0xe0 0x07 0x3d 0x0e
|
|
0x0f 0x06 0x31 0x6e
|
|
0x20 0x24 0x62 0x0e
|
|
0xe5 0x04 0x68 0x6e
|
|
0x69 0x25 0xb5 0x0e
|
|
0xd6 0x27 0xb3 0x6e
|
|
|
|
#------------------------------------------------------------------------------
|
|
# Vector Integer Rouding Halving Add (Signed)
|
|
# Vector Integer Rouding Halving Add (Unsigned)
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: srhadd v3.8b, v5.8b, v7.8b
|
|
# CHECK: urhadd v7.16b, v17.16b, v27.16b
|
|
# CHECK: srhadd v10.4h, v11.4h, v13.4h
|
|
# CHECK: urhadd v1.8h, v2.8h, v3.8h
|
|
# CHECK: srhadd v4.2s, v5.2s, v6.2s
|
|
# CHECK: urhadd v7.4s, v7.4s, v7.4s
|
|
0xa3 0x14 0x27 0x0e
|
|
0x27 0x16 0x3b 0x6e
|
|
0x6a 0x15 0x6d 0x0e
|
|
0x41 0x14 0x63 0x6e
|
|
0xa4 0x14 0xa6 0x0e
|
|
0xe7 0x14 0xa7 0x6e
|
|
|
|
#------------------------------------------------------------------------------
|
|
# Vector Integer Saturating Add (Signed)
|
|
# Vector Integer Saturating Add (Unsigned)
|
|
# Vector Integer Saturating Sub (Signed)
|
|
# Vector Integer Saturating Sub (Unsigned)
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: sqsub v0.8b, v1.8b, v2.8b
|
|
# CHECK: sqadd v0.16b, v1.16b, v2.16b
|
|
# CHECK: uqsub v0.4h, v1.4h, v2.4h
|
|
# CHECK: uqadd v0.8h, v1.8h, v2.8h
|
|
# CHECK: sqadd v0.2s, v1.2s, v2.2s
|
|
# CHECK: sqsub v0.4s, v1.4s, v2.4s
|
|
# CHECK: sqsub v0.2d, v1.2d, v2.2d
|
|
0x20 0x2c 0x22 0x0e
|
|
0x20 0x0c 0x22 0x4e
|
|
0x20 0x2c 0x62 0x2e
|
|
0x20 0x0c 0x62 0x6e
|
|
0x20 0x0c 0xa2 0x0e
|
|
0x20 0x2c 0xa2 0x4e
|
|
0x20 0x2c 0xe2 0x4e
|
|
|
|
#------------------------------------------------------------------------------
|
|
# Scalar Integer Saturating Add (Signed)
|
|
# Scalar Integer Saturating Add (Unsigned)
|
|
# Scalar Integer Saturating Sub (Signed)
|
|
# Scalar Integer Saturating Add (Unsigned)
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: sqadd b20, b11, b15
|
|
# CHECK: uqadd h0, h1, h5
|
|
# CHECK: sqsub s20, s10, s7
|
|
# CHECK: uqsub d16, d16, d16
|
|
0x74 0x0d 0x2f 0x5e
|
|
0x20 0x0c 0x65 0x7e
|
|
0x54 0x2d 0xa7 0x5e
|
|
0x10 0x2e 0xf0 0x7e
|
|
|
|
|
|
#----------------------------------------------------------------------
|
|
# Vector Shift Left (Signed and Unsigned Integer)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: sshl v10.8b, v15.8b, v22.8b
|
|
# CHECK: ushl v10.16b, v5.16b, v2.16b
|
|
# CHECK: sshl v10.4h, v15.4h, v22.4h
|
|
# CHECK: ushl v10.8h, v5.8h, v2.8h
|
|
# CHECK: sshl v10.2s, v15.2s, v22.2s
|
|
# CHECK: ushl v10.4s, v5.4s, v2.4s
|
|
# CHECK: sshl v0.2d, v1.2d, v2.2d
|
|
0xea 0x45 0x36 0x0e
|
|
0xaa 0x44 0x22 0x6e
|
|
0xea 0x45 0x76 0x0e
|
|
0xaa 0x44 0x62 0x6e
|
|
0xea 0x45 0xb6 0x0e
|
|
0xaa 0x44 0xa2 0x6e
|
|
0x20 0x44 0xe2 0x4e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Vector Saturating Shift Left (Signed and Unsigned Integer)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: sqshl v1.8b, v15.8b, v22.8b
|
|
# CHECK: uqshl v2.16b, v14.16b, v23.16b
|
|
# CHECK: sqshl v3.4h, v13.4h, v24.4h
|
|
# CHECK: uqshl v4.8h, v12.8h, v25.8h
|
|
# CHECK: sqshl v5.2s, v11.2s, v26.2s
|
|
# CHECK: uqshl v6.4s, v10.4s, v27.4s
|
|
# CHECK: uqshl v0.2d, v1.2d, v2.2d
|
|
0xe1 0x4d 0x36 0x0e
|
|
0xc2 0x4d 0x37 0x6e
|
|
0xa3 0x4d 0x78 0x0e
|
|
0x84 0x4d 0x79 0x6e
|
|
0x65 0x4d 0xba 0x0e
|
|
0x46 0x4d 0xbb 0x6e
|
|
0x20 0x4c 0xe2 0x6e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Vector Rouding Shift Left (Signed and Unsigned Integer)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: srshl v10.8b, v5.8b, v22.8b
|
|
# CHECK: urshl v10.16b, v5.16b, v2.16b
|
|
# CHECK: srshl v1.4h, v5.4h, v31.4h
|
|
# CHECK: urshl v1.8h, v5.8h, v2.8h
|
|
# CHECK: srshl v10.2s, v15.2s, v2.2s
|
|
# CHECK: urshl v1.4s, v5.4s, v2.4s
|
|
# CHECK: urshl v0.2d, v1.2d, v2.2d
|
|
0xaa 0x54 0x36 0x0e
|
|
0xaa 0x54 0x22 0x6e
|
|
0xa1 0x54 0x7f 0x0e
|
|
0xa1 0x54 0x62 0x6e
|
|
0xea 0x55 0xa2 0x0e
|
|
0xa1 0x54 0xa2 0x6e
|
|
0x20 0x54 0xe2 0x6e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Vector Saturating Rouding Shift Left (Signed and Unsigned Integer)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: sqrshl v1.8b, v15.8b, v22.8b
|
|
# CHECK: uqrshl v2.16b, v14.16b, v23.16b
|
|
# CHECK: sqrshl v3.4h, v13.4h, v24.4h
|
|
# CHECK: uqrshl v4.8h, v12.8h, v25.8h
|
|
# CHECK: sqrshl v5.2s, v11.2s, v26.2s
|
|
# CHECK: uqrshl v6.4s, v10.4s, v27.4s
|
|
# CHECK: uqrshl v6.4s, v10.4s, v27.4s
|
|
0xe1 0x5d 0x36 0x0e
|
|
0xc2 0x5d 0x37 0x6e
|
|
0xa3 0x5d 0x78 0x0e
|
|
0x84 0x5d 0x79 0x6e
|
|
0x65 0x5d 0xba 0x0e
|
|
0x46 0x5d 0xbb 0x6e
|
|
0x46 0x5d 0xbb 0x6e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Scalar Integer Shift Left (Signed, Unsigned)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: sshl d31, d31, d31
|
|
# CHECK: ushl d0, d0, d0
|
|
0xff 0x47 0xff 0x5e
|
|
0x00 0x44 0xe0 0x7e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Scalar Integer Saturating Shift Left (Signed, Unsigned)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: sqshl d31, d31, d31
|
|
# CHECK: uqshl s23, s20, s16
|
|
# CHECK: sqshl h3, h4, h15
|
|
# CHECK: uqshl b11, b20, b30
|
|
0xff 0x4f 0xff 0x5e
|
|
0x97 0x4e 0xb0 0x7e
|
|
0x83 0x4c 0x6f 0x5e
|
|
0x8b 0x4e 0x3e 0x7e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Scalar Integer Rouding Shift Left (Signed, Unsigned)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: srshl d16, d16, d16
|
|
# CHECK: urshl d8, d7, d4
|
|
0x10 0x56 0xf0 0x5e
|
|
0xe8 0x54 0xe4 0x7e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Scalar Integer Saturating Rounding Shift Left (Signed, Unsigned)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: sqrshl d31, d31, d31
|
|
# CHECK: uqrshl s23, s20, s16
|
|
# CHECK: sqrshl h3, h4, h15
|
|
# CHECK: uqrshl b11, b20, b30
|
|
0xff 0x5f 0xff 0x5e
|
|
0x97 0x5e 0xb0 0x7e
|
|
0x83 0x5c 0x6f 0x5e
|
|
0x8b 0x5e 0x3e 0x7e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Vector Maximum (Signed and Unsigned Integer)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: smax v1.8b, v15.8b, v22.8b
|
|
# CHECK: umax v2.16b, v14.16b, v23.16b
|
|
# CHECK: smax v3.4h, v13.4h, v24.4h
|
|
# CHECK: umax v4.8h, v12.8h, v25.8h
|
|
# CHECK: smax v5.2s, v11.2s, v26.2s
|
|
# CHECK: umax v6.4s, v10.4s, v27.4s
|
|
0xe1 0x65 0x36 0x0e
|
|
0xc2 0x65 0x37 0x6e
|
|
0xa3 0x65 0x78 0x0e
|
|
0x84 0x65 0x79 0x6e
|
|
0x65 0x65 0xba 0x0e
|
|
0x46 0x65 0xbb 0x6e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Vector Minimum (Signed and Unsigned Integer)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: umin v1.8b, v15.8b, v22.8b
|
|
# CHECK: smin v2.16b, v14.16b, v23.16b
|
|
# CHECK: umin v3.4h, v13.4h, v24.4h
|
|
# CHECK: smin v4.8h, v12.8h, v25.8h
|
|
# CHECK: umin v5.2s, v11.2s, v26.2s
|
|
# CHECK: smin v6.4s, v10.4s, v27.4s
|
|
0xe1 0x6d 0x36 0x2e
|
|
0xc2 0x6d 0x37 0x4e
|
|
0xa3 0x6d 0x78 0x2e
|
|
0x84 0x6d 0x79 0x4e
|
|
0x65 0x6d 0xba 0x2e
|
|
0x46 0x6d 0xbb 0x4e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Vector Maximum (Floating Point)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: fmax v29.2s, v28.2s, v25.2s
|
|
# CHECK: fmax v9.4s, v8.4s, v5.4s
|
|
# CHECK: fmax v11.2d, v10.2d, v7.2d
|
|
0x9d 0xf7 0x39 0x0e
|
|
0x09 0xf5 0x25 0x4e
|
|
0x4b 0xf5 0x67 0x4e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Vector Minimum (Floating Point)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: fmin v29.2s, v28.2s, v25.2s
|
|
# CHECK: fmin v9.4s, v8.4s, v5.4s
|
|
# CHECK: fmin v11.2d, v10.2d, v7.2d
|
|
0x9d 0xf7 0xb9 0x0e
|
|
0x09 0xf5 0xa5 0x4e
|
|
0x4b 0xf5 0xe7 0x4e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Vector maxNum (Floating Point)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: fmaxnm v9.2s, v8.2s, v5.2s
|
|
# CHECK: fmaxnm v9.4s, v8.4s, v5.4s
|
|
# CHECK: fmaxnm v11.2d, v10.2d, v7.2d
|
|
0x09 0xc5 0x25 0x0e
|
|
0x09 0xc5 0x25 0x4e
|
|
0x4b 0xc5 0x67 0x4e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Vector minNum (Floating Point)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: fminnm v2.2s, v8.2s, v25.2s
|
|
# CHECK: fminnm v9.4s, v8.4s, v5.4s
|
|
# CHECK: fminnm v11.2d, v10.2d, v7.2d
|
|
0x02 0xc5 0xb9 0x0e
|
|
0x09 0xc5 0xa5 0x4e
|
|
0x4b 0xc5 0xe7 0x4e
|
|
|
|
|
|
#----------------------------------------------------------------------
|
|
# Vector Maximum Pairwise (Signed and Unsigned Integer)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: smaxp v1.8b, v15.8b, v22.8b
|
|
# CHECK: umaxp v2.16b, v14.16b, v23.16b
|
|
# CHECK: smaxp v3.4h, v13.4h, v24.4h
|
|
# CHECK: umaxp v4.8h, v12.8h, v25.8h
|
|
# CHECK: smaxp v5.2s, v11.2s, v26.2s
|
|
# CHECK: umaxp v6.4s, v10.4s, v27.4s
|
|
0xe1 0xa5 0x36 0x0e
|
|
0xc2 0xa5 0x37 0x6e
|
|
0xa3 0xa5 0x78 0x0e
|
|
0x84 0xa5 0x79 0x6e
|
|
0x65 0xa5 0xba 0x0e
|
|
0x46 0xa5 0xbb 0x6e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Vector Minimum Pairwise (Signed and Unsigned Integer)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: uminp v1.8b, v15.8b, v22.8b
|
|
# CHECK: sminp v2.16b, v14.16b, v23.16b
|
|
# CHECK: uminp v3.4h, v13.4h, v24.4h
|
|
# CHECK: sminp v4.8h, v12.8h, v25.8h
|
|
# CHECK: uminp v5.2s, v11.2s, v26.2s
|
|
# CHECK: sminp v6.4s, v10.4s, v27.4s
|
|
0xe1 0xad 0x36 0x2e
|
|
0xc2 0xad 0x37 0x4e
|
|
0xa3 0xad 0x78 0x2e
|
|
0x84 0xad 0x79 0x4e
|
|
0x65 0xad 0xba 0x2e
|
|
0x46 0xad 0xbb 0x4e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Vector Maximum Pairwise (Floating Point)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: fmaxp v29.2s, v28.2s, v25.2s
|
|
# CHECK: fmaxp v9.4s, v8.4s, v5.4s
|
|
# CHECK: fmaxp v11.2d, v10.2d, v7.2d
|
|
0x9d 0xf7 0x39 0x2e
|
|
0x09 0xf5 0x25 0x6e
|
|
0x4b 0xf5 0x67 0x6e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Vector Minimum Pairwise (Floating Point)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: fminp v29.2s, v28.2s, v25.2s
|
|
# CHECK: fminp v9.4s, v8.4s, v5.4s
|
|
# CHECK: fminp v11.2d, v10.2d, v7.2d
|
|
0x9d 0xf7 0xb9 0x2e
|
|
0x09 0xf5 0xa5 0x6e
|
|
0x4b 0xf5 0xe7 0x6e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Vector maxNum Pairwise (Floating Point)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: fmaxnmp v9.2s, v8.2s, v5.2s
|
|
# CHECK: fmaxnmp v9.4s, v8.4s, v5.4s
|
|
# CHECK: fmaxnmp v11.2d, v10.2d, v7.2d
|
|
0x09 0xc5 0x25 0x2e
|
|
0x09 0xc5 0x25 0x6e
|
|
0x4b 0xc5 0x67 0x6e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Vector minNum Pairwise (Floating Point)
|
|
#----------------------------------------------------------------------
|
|
# CHECK: fminnmp v2.2s, v8.2s, v25.2s
|
|
# CHECK: fminnmp v9.4s, v8.4s, v5.4s
|
|
# CHECK: fminnmp v11.2d, v10.2d, v7.2d
|
|
0x02 0xc5 0xb9 0x2e
|
|
0x09 0xc5 0xa5 0x6e
|
|
0x4b 0xc5 0xe7 0x6e
|
|
|
|
#------------------------------------------------------------------------------
|
|
# Vector Add Pairwise (Integer)
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: addp v31.8b, v31.8b, v31.8b
|
|
# CHECK: addp v0.2d, v0.2d, v0.2d
|
|
0xff 0xbf 0x3f 0x0e
|
|
0x00 0xbc 0xe0 0x4e
|
|
|
|
#------------------------------------------------------------------------------
|
|
# Vector Add Pairwise (Floating Point)
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: faddp v0.4s, v0.4s, v0.4s
|
|
# CHECK: faddp v31.2s, v31.2s, v31.2s
|
|
0x00 0xd4 0x20 0x6e
|
|
0xff 0xd7 0x3f 0x2e
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# Vector Saturating Doubling Multiply High
|
|
# Vector Saturating Rouding Doubling Multiply High
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: sqdmulh v31.2s, v31.2s, v31.2s
|
|
# CHECK: sqdmulh v5.4s, v7.4s, v9.4s
|
|
# CHECK: sqrdmulh v31.4h, v3.4h, v13.4h
|
|
# CHECK: sqrdmulh v0.8h, v10.8h, v20.8h
|
|
0xff 0xb7 0xbf 0x0e
|
|
0xe5 0xb4 0xa9 0x4e
|
|
0x7f 0xb4 0x6d 0x2e
|
|
0x40 0xb5 0x74 0x6e
|
|
|
|
#------------------------------------------------------------------------------
|
|
# Vector Multiply Extended
|
|
#------------------------------------------------------------------------------
|
|
# CHECK: fmulx v1.2s, v22.2s, v2.2s
|
|
# CHECK: fmulx v21.4s, v15.4s, v3.4s
|
|
# CHECK: fmulx v11.2d, v5.2d, v23.2d
|
|
0xc1 0xde 0x22 0x0e
|
|
0xf5 0xdd 0x23 0x4e
|
|
0xab 0xdc 0x77 0x4e
|
|
|
|
#----------------------------------------------------------------------
|
|
# Vector Shift Left by Immediate
|
|
#----------------------------------------------------------------------
|
|
# CHECK: shl v0.4h, v1.4h, #3
|
|
# CHECK: shl v0.16b, v1.16b, #3
|
|
# CHECK: shl v0.4s, v1.4s, #3
|
|
# CHECK: shl v0.2d, v1.2d, #3
|
|
0x20,0x54,0x13,0x0f
|
|
0x20,0x54,0x0b,0x4f
|
|
0x20,0x54,0x23,0x4f
|
|
0x20,0x54,0x43,0x4f
|
|
|
|
#----------------------------------------------------------------------
|
|
# Vector Shift Left Long (Signed, Unsigned) by Immediate
|
|
#----------------------------------------------------------------------
|
|
# CHECK: sshll v0.2d, v1.2s, #3
|
|
# CHECK: sshll2 v0.4s, v1.8h, #3
|
|
# CHECK: ushll v0.4s, v1.4h, #3
|
|
# CHECK: ushll2 v0.8h, v1.16b, #3
|
|
0x20 0xa4 0x23 0x0f
|
|
0x20 0xa4 0x13 0x4f
|
|
0x20 0xa4 0x13 0x2f
|
|
0x20 0xa4 0x0b 0x6f
|