mirror of https://github.com/golang/go.git
cmd/asm: sort test cases in the arm64.s file
This patch sorts the test cases in the arm64.s file by instruction category and deletes comments related to the old parser. Change-Id: I9bbf56281e247a4fd8d5e670e8ad67c923aef1ee Reviewed-on: https://go-review.googlesource.com/c/go/+/263458 Trust: fannie zhang <Fannie.Zhang@arm.com> Trust: Emmanuel Odeke <emmanuel@orijtech.com> Reviewed-by: Cherry Zhang <cherryyz@google.com>
This commit is contained in:
parent
3089ef6bd7
commit
53efbdb12e
|
|
@ -10,14 +10,8 @@
|
|||
|
||||
TEXT foo(SB), DUPOK|NOSPLIT, $-8
|
||||
|
||||
//
|
||||
// ADD
|
||||
//
|
||||
// LTYPE1 imsr ',' spreg ',' reg
|
||||
// {
|
||||
// outcode($1, &$2, $4, &$6);
|
||||
// }
|
||||
// imsr comes from the old 7a, we only support immediates and registers
|
||||
|
||||
// arithmetic operations
|
||||
ADDW $1, R2, R3
|
||||
ADDW R1, R2, R3
|
||||
ADDW R1, ZR, R3
|
||||
|
|
@ -25,18 +19,29 @@ TEXT foo(SB), DUPOK|NOSPLIT, $-8
|
|||
ADD R1, R2, R3
|
||||
ADD R1, ZR, R3
|
||||
ADD $1, R2, R3
|
||||
ADD $0x000aaa, R2, R3 // ADD $2730, R2, R3 // 43a82a91
|
||||
ADD $0x000aaa, R2 // ADD $2730, R2 // 42a82a91
|
||||
ADD $0xaaa000, R2, R3 // ADD $11182080, R2, R3 // 43a86a91
|
||||
ADD $0xaaa000, R2 // ADD $11182080, R2 // 42a86a91
|
||||
ADD $0xaaaaaa, R2, R3 // ADD $11184810, R2, R3 // 43a82a9163a86a91
|
||||
ADD $0xaaaaaa, R2 // ADD $11184810, R2 // 42a82a9142a86a91
|
||||
SUB $0x000aaa, R2, R3 // SUB $2730, R2, R3 // 43a82ad1
|
||||
SUB $0x000aaa, R2 // SUB $2730, R2 // 42a82ad1
|
||||
SUB $0xaaa000, R2, R3 // SUB $11182080, R2, R3 // 43a86ad1
|
||||
SUB $0xaaa000, R2 // SUB $11182080, R2 // 42a86ad1
|
||||
SUB $0xaaaaaa, R2, R3 // SUB $11184810, R2, R3 // 43a82ad163a86ad1
|
||||
SUB $0xaaaaaa, R2 // SUB $11184810, R2 // 42a82ad142a86ad1
|
||||
ADDW $1, R2
|
||||
ADDW R1, R2
|
||||
ADD $1, R2
|
||||
ADD R1, R2
|
||||
ADD R1>>11, R2
|
||||
ADD R1<<22, R2
|
||||
ADD R1->33, R2
|
||||
ADD $0x000aaa, R2, R3 // ADD $2730, R2, R3 // 43a82a91
|
||||
ADD $0x000aaa, R2 // ADD $2730, R2 // 42a82a91
|
||||
ADD $0xaaa000, R2, R3 // ADD $11182080, R2, R3 // 43a86a91
|
||||
ADD $0xaaa000, R2 // ADD $11182080, R2 // 42a86a91
|
||||
ADD $0xaaaaaa, R2, R3 // ADD $11184810, R2, R3 // 43a82a9163a86a91
|
||||
ADD $0xaaaaaa, R2 // ADD $11184810, R2 // 42a82a9142a86a91
|
||||
SUB $0x000aaa, R2, R3 // SUB $2730, R2, R3 // 43a82ad1
|
||||
SUB $0x000aaa, R2 // SUB $2730, R2 // 42a82ad1
|
||||
SUB $0xaaa000, R2, R3 // SUB $11182080, R2, R3 // 43a86ad1
|
||||
SUB $0xaaa000, R2 // SUB $11182080, R2 // 42a86ad1
|
||||
SUB $0xaaaaaa, R2, R3 // SUB $11184810, R2, R3 // 43a82ad163a86ad1
|
||||
SUB $0xaaaaaa, R2 // SUB $11184810, R2 // 42a82ad142a86ad1
|
||||
ADDW $0x60060, R2 // ADDW $393312, R2 // 4280011142804111
|
||||
ADD $0x186a0, R2, R5 // ADD $100000, R2, R5 // 45801a91a5604091
|
||||
SUB $0xe7791f700, R3, R1 // SUB $62135596800, R3, R1 // 1be09ed23bf2aef2db01c0f261001bcb
|
||||
ADD $0x3fffffffc000, R5 // ADD $70368744161280, R5 // fb7f72b2a5001b8b
|
||||
ADD R1>>11, R2, R3
|
||||
ADD R1<<22, R2, R3
|
||||
ADD R1->33, R2, R3
|
||||
|
|
@ -59,6 +64,30 @@ TEXT foo(SB), DUPOK|NOSPLIT, $-8
|
|||
CMN R1.SXTX<<2, R10 // 5fe921ab
|
||||
CMPW R2.UXTH<<3, R11 // 7f2d226b
|
||||
CMNW R1.SXTB, R9 // 3f81212b
|
||||
CMPW $0x60060, R2 // CMPW $393312, R2 // 1b0c8052db00a0725f001b6b
|
||||
CMPW $40960, R0 // 1f284071
|
||||
CMPW $27745, R2 // 3b8c8d525f001b6b
|
||||
CMNW $0x3fffffc0, R2 // CMNW $1073741760, R2 // fb5f1a325f001b2b
|
||||
CMPW $0xffff0, R1 // CMPW $1048560, R1 // fb3f1c323f001b6b
|
||||
CMP $0xffffffffffa0, R3 // CMP $281474976710560, R3 // fb0b80921b00e0f27f001beb
|
||||
CMP $0xf4240, R1 // CMP $1000000, R1 // 1b4888d2fb01a0f23f001beb
|
||||
CMP $3343198598084851058, R3 // 5bae8ed2db8daef23badcdf2bbcce5f27f001beb
|
||||
CMP $3, R2
|
||||
CMP R1, R2
|
||||
CMP R1->11, R2
|
||||
CMP R1>>22, R2
|
||||
CMP R1<<33, R2
|
||||
CMP R22.SXTX, RSP // ffe336eb
|
||||
CMP $0x22220000, RSP // CMP $572653568, RSP // 5b44a4d2ff633beb
|
||||
CMPW $0x22220000, RSP // CMPW $572653568, RSP // 5b44a452ff633b6b
|
||||
CCMN MI, ZR, R1, $4 // e44341ba
|
||||
// MADD Rn,Rm,Ra,Rd
|
||||
MADD R1, R2, R3, R4 // 6408019b
|
||||
// CLS
|
||||
CLSW R1, R2
|
||||
CLS R1, R2
|
||||
|
||||
// fp/simd instructions.
|
||||
VADDP V1.B16, V2.B16, V3.B16 // 43bc214e
|
||||
VADDP V1.S4, V2.S4, V3.S4 // 43bca14e
|
||||
VADDP V1.D2, V2.D2, V3.D2 // 43bce14e
|
||||
|
|
@ -67,22 +96,6 @@ TEXT foo(SB), DUPOK|NOSPLIT, $-8
|
|||
VORR V5.B16, V4.B16, V3.B16 // 831ca54e
|
||||
VADD V16.S4, V5.S4, V9.S4 // a984b04e
|
||||
VEOR V0.B16, V1.B16, V0.B16 // 201c206e
|
||||
SHA256H V9.S4, V3, V2 // 6240095e
|
||||
SHA256H2 V9.S4, V4, V3 // 8350095e
|
||||
SHA256SU0 V8.S4, V7.S4 // 0729285e
|
||||
SHA256SU1 V6.S4, V5.S4, V7.S4 // a760065e
|
||||
SHA1SU0 V11.S4, V8.S4, V6.S4 // 06310b5e
|
||||
SHA1SU1 V5.S4, V1.S4 // a118285e
|
||||
SHA1C V1.S4, V2, V3 // 4300015e
|
||||
SHA1H V5, V4 // a408285e
|
||||
SHA1M V8.S4, V7, V6 // e620085e
|
||||
SHA1P V11.S4, V10, V9 // 49110b5e
|
||||
SHA512H V2.D2, V1, V0 // 208062ce
|
||||
SHA512H2 V4.D2, V3, V2 // 628464ce
|
||||
SHA512SU0 V9.D2, V8.D2 // 2881c0ce
|
||||
SHA512SU1 V7.D2, V6.D2, V5.D2 // c58867ce
|
||||
VRAX1 V26.D2, V29.D2, V30.D2 // be8f7ace
|
||||
VXAR $63, V27.D2, V21.D2, V26.D2 // bafe9bce
|
||||
VADDV V0.S4, V0 // 00b8b14e
|
||||
VMOVI $82, V0.B16 // 40e6024f
|
||||
VUADDLV V6.B16, V6 // c638306e
|
||||
|
|
@ -96,10 +109,6 @@ TEXT foo(SB), DUPOK|NOSPLIT, $-8
|
|||
VFMLS V1.D2, V12.D2, V1.D2 // 81cde14e
|
||||
VFMLS V1.S2, V12.S2, V1.S2 // 81cda10e
|
||||
VFMLS V1.S4, V12.S4, V1.S4 // 81cda14e
|
||||
VPMULL V2.D1, V1.D1, V3.Q1 // 23e0e20e
|
||||
VPMULL2 V2.D2, V1.D2, V4.Q1 // 24e0e24e
|
||||
VPMULL V2.B8, V1.B8, V3.H8 // 23e0220e
|
||||
VPMULL2 V2.B16, V1.B16, V4.H8 // 24e0224e
|
||||
VEXT $4, V2.B8, V1.B8, V3.B8 // 2320022e
|
||||
VEXT $8, V2.B16, V1.B16, V3.B16 // 2340026e
|
||||
VRBIT V24.B16, V24.B16 // 185b606e
|
||||
|
|
@ -125,6 +134,14 @@ TEXT foo(SB), DUPOK|NOSPLIT, $-8
|
|||
VSRI $8, V1.H8, V2.H8 // 2244186f
|
||||
VSRI $2, V1.B8, V2.B8 // 22440e2f
|
||||
VSRI $2, V1.B16, V2.B16 // 22440e6f
|
||||
VSLI $7, V2.B16, V3.B16 // 43540f6f
|
||||
VSLI $15, V3.H4, V4.H4 // 64541f2f
|
||||
VSLI $31, V5.S4, V6.S4 // a6543f6f
|
||||
VSLI $63, V7.D2, V8.D2 // e8547f6f
|
||||
VUSRA $8, V2.B16, V3.B16 // 4314086f
|
||||
VUSRA $16, V3.H4, V4.H4 // 6414102f
|
||||
VUSRA $32, V5.S4, V6.S4 // a614206f
|
||||
VUSRA $64, V7.D2, V8.D2 // e814406f
|
||||
VTBL V22.B16, [V28.B16, V29.B16], V11.B16 // 8b23164e
|
||||
VTBL V18.B8, [V17.B16, V18.B16, V19.B16], V22.B8 // 3642120e
|
||||
VTBL V31.B8, [V14.B16, V15.B16, V16.B16, V17.B16], V15.B8 // cf611f0e
|
||||
|
|
@ -141,8 +158,6 @@ TEXT foo(SB), DUPOK|NOSPLIT, $-8
|
|||
VTBL V14.B16, [V3.B16, V4.B16, V5.B16], V17.B16 // 71400e4e
|
||||
VTBL V13.B16, [V29.B16, V30.B16, V31.B16, V0.B16], V28.B16 // bc630d4e
|
||||
VTBL V3.B8, [V27.B16], V8.B8 // 6803030e
|
||||
VEOR3 V2.B16, V7.B16, V12.B16, V25.B16 // 990907ce
|
||||
VBCAX V1.B16, V2.B16, V26.B16, V31.B16 // 5f0722ce
|
||||
VZIP1 V16.H8, V3.H8, V19.H8 // 7338504e
|
||||
VZIP2 V22.D2, V25.D2, V21.D2 // 357bd64e
|
||||
VZIP1 V6.D2, V9.D2, V11.D2 // 2b39c64e
|
||||
|
|
@ -180,114 +195,95 @@ TEXT foo(SB), DUPOK|NOSPLIT, $-8
|
|||
VUSHLL2 $31, V30.S4, V2.D2 // c2a73f6f
|
||||
VBIF V0.B8, V30.B8, V1.B8 // c11fe02e
|
||||
VBIF V30.B16, V0.B16, V2.B16 // 021cfe6e
|
||||
MOVD (R2)(R6.SXTW), R4 // 44c866f8
|
||||
MOVD (R3)(R6), R5 // MOVD (R3)(R6*1), R5 // 656866f8
|
||||
MOVD (R2)(R6), R4 // MOVD (R2)(R6*1), R4 // 446866f8
|
||||
MOVWU (R19)(R20<<2), R20 // 747a74b8
|
||||
MOVD (R2)(R6<<3), R4 // 447866f8
|
||||
MOVD (R3)(R7.SXTX<<3), R8 // 68f867f8
|
||||
MOVWU (R5)(R4.UXTW), R10 // aa4864b8
|
||||
MOVBU (R3)(R9.UXTW), R8 // 68486938
|
||||
MOVBU (R5)(R8), R10 // MOVBU (R5)(R8*1), R10 // aa686838
|
||||
MOVHU (R2)(R7.SXTW<<1), R11 // 4bd86778
|
||||
MOVHU (R1)(R2<<1), R5 // 25786278
|
||||
MOVB (R9)(R3.UXTW), R6 // 2649a338
|
||||
MOVB (R10)(R6), R15 // MOVB (R10)(R6*1), R15 // 4f69a638
|
||||
MOVH (R5)(R7.SXTX<<1), R19 // b3f8a778
|
||||
MOVH (R8)(R4<<1), R10 // 0a79a478
|
||||
MOVW (R9)(R8.SXTW<<2), R19 // 33d9a8b8
|
||||
MOVW (R1)(R4.SXTX), R11 // 2be8a4b8
|
||||
MOVW (R1)(R4.SXTX), ZR // 3fe8a4b8
|
||||
MOVW (R2)(R5), R12 // MOVW (R2)(R5*1), R12 // 4c68a5b8
|
||||
MOVD R5, (R2)(R6<<3) // 457826f8
|
||||
MOVD R9, (R6)(R7.SXTX<<3) // c9f827f8
|
||||
MOVD ZR, (R6)(R7.SXTX<<3) // dff827f8
|
||||
MOVW R8, (R2)(R3.UXTW<<2) // 485823b8
|
||||
MOVW R7, (R3)(R4.SXTW) // 67c824b8
|
||||
MOVB R4, (R2)(R6.SXTX) // 44e82638
|
||||
MOVB R8, (R3)(R9.UXTW) // 68482938
|
||||
MOVB R10, (R5)(R8) // MOVB R10, (R5)(R8*1) // aa682838
|
||||
MOVH R11, (R2)(R7.SXTW<<1) // 4bd82778
|
||||
MOVH R5, (R1)(R2<<1) // 25782278
|
||||
MOVH R7, (R2)(R5.SXTX<<1) // 47f82578
|
||||
MOVH R8, (R3)(R6.UXTW) // 68482678
|
||||
MOVB (R29)(R30<<0), R14 // ae7bbe38
|
||||
MOVB (R29)(R30), R14 // MOVB (R29)(R30*1), R14 // ae6bbe38
|
||||
MOVB R4, (R2)(R6.SXTX) // 44e82638
|
||||
FMOVS $(4.0), F0 // 0010221e
|
||||
FMOVD $(4.0), F0 // 0010621e
|
||||
FMOVS $(0.265625), F1 // 01302a1e
|
||||
FMOVD $(0.1796875), F2 // 02f0681e
|
||||
FMOVS $(0.96875), F3 // 03f02d1e
|
||||
FMOVD $(28.0), F4 // 0490671e
|
||||
VUADDW V9.B8, V12.H8, V14.H8 // 8e11292e
|
||||
VUADDW V13.H4, V10.S4, V11.S4 // 4b116d2e
|
||||
VUADDW V21.S2, V24.D2, V29.D2 // 1d13b52e
|
||||
VUADDW2 V9.B16, V12.H8, V14.H8 // 8e11296e
|
||||
VUADDW2 V13.H8, V20.S4, V30.S4 // 9e126d6e
|
||||
VUADDW2 V21.S4, V24.D2, V29.D2 // 1d13b56e
|
||||
FCCMPS LT, F1, F2, $1 // 41b4211e
|
||||
FMADDS F1, F3, F2, F4 // 440c011f
|
||||
FMADDD F4, F5, F4, F4 // 8414441f
|
||||
FMSUBS F13, F21, F13, F19 // b3d50d1f
|
||||
FMSUBD F11, F7, F15, F31 // ff9d4b1f
|
||||
FNMADDS F1, F3, F2, F4 // 440c211f
|
||||
FNMADDD F1, F3, F2, F4 // 440c611f
|
||||
FNMSUBS F1, F3, F2, F4 // 448c211f
|
||||
FNMSUBD F1, F3, F2, F4 // 448c611f
|
||||
FADDS F2, F3, F4 // 6428221e
|
||||
FADDD F1, F2 // 4228611e
|
||||
VDUP V19.S[0], V17.S4 // 7106044e
|
||||
|
||||
// move a large constant to a Vd.
|
||||
VMOVS $0x80402010, V11 // VMOVS $2151686160, V11
|
||||
VMOVD $0x8040201008040201, V20 // VMOVD $-9205322385119247871, V20
|
||||
VMOVQ $0x7040201008040201, $0x8040201008040201, V10 // VMOVQ $8088500183983456769, $-9205322385119247871, V10
|
||||
VMOVQ $0x8040201008040202, $0x7040201008040201, V20 // VMOVQ $-9205322385119247870, $8088500183983456769, V20
|
||||
|
||||
FMOVS (R2)(R6), F4 // FMOVS (R2)(R6*1), F4 // 446866bc
|
||||
FMOVS (R2)(R6<<2), F4 // 447866bc
|
||||
FMOVD (R2)(R6), F4 // FMOVD (R2)(R6*1), F4 // 446866fc
|
||||
FMOVD (R2)(R6<<3), F4 // 447866fc
|
||||
FMOVS F4, (R2)(R6) // FMOVS F4, (R2)(R6*1) // 446826bc
|
||||
FMOVS F4, (R2)(R6<<2) // 447826bc
|
||||
FMOVD F4, (R2)(R6) // FMOVD F4, (R2)(R6*1) // 446826fc
|
||||
FMOVD F4, (R2)(R6<<3) // 447826fc
|
||||
// special
|
||||
PRFM (R2), PLDL1KEEP // 400080f9
|
||||
PRFM 16(R2), PLDL1KEEP // 400880f9
|
||||
PRFM 48(R6), PSTL2STRM // d31880f9
|
||||
PRFM 8(R12), PLIL3STRM // 8d0580f9
|
||||
PRFM (R8), $25 // 190180f9
|
||||
PRFM 8(R9), $30 // 3e0580f9
|
||||
NOOP // 1f2003d5
|
||||
HINT $0 // 1f2003d5
|
||||
DMB $1
|
||||
SVC
|
||||
|
||||
CMPW $40960, R0 // 1f284071
|
||||
CMPW $27745, R2 // 3b8c8d525f001b6b
|
||||
CMNW $0x3fffffc0, R2 // CMNW $1073741760, R2 // fb5f1a325f001b2b
|
||||
CMPW $0xffff0, R1 // CMPW $1048560, R1 // fb3f1c323f001b6b
|
||||
CMP $0xffffffffffa0, R3 // CMP $281474976710560, R3 // fb0b80921b00e0f27f001beb
|
||||
CMP $0xf4240, R1 // CMP $1000000, R1 // 1b4888d2fb01a0f23f001beb
|
||||
ADD $0x186a0, R2, R5 // ADD $100000, R2, R5 // 45801a91a5604091
|
||||
SUB $0xe7791f700, R3, R1 // SUB $62135596800, R3, R1 // 1be09ed23bf2aef2db01c0f261001bcb
|
||||
CMP $3343198598084851058, R3 // 5bae8ed2db8daef23badcdf2bbcce5f27f001beb
|
||||
ADD $0x3fffffffc000, R5 // ADD $70368744161280, R5 // fb7f72b2a5001b8b
|
||||
// LTYPE1 imsr ',' spreg ','
|
||||
// {
|
||||
// outcode($1, &$2, $4, &nullgen);
|
||||
// }
|
||||
// LTYPE1 imsr ',' reg
|
||||
// {
|
||||
// outcode($1, &$2, NREG, &$4);
|
||||
// }
|
||||
ADDW $1, R2
|
||||
ADDW R1, R2
|
||||
ADD $1, R2
|
||||
ADD R1, R2
|
||||
ADD R1>>11, R2
|
||||
ADD R1<<22, R2
|
||||
ADD R1->33, R2
|
||||
AND R1@>33, R2
|
||||
// encryption
|
||||
SHA256H V9.S4, V3, V2 // 6240095e
|
||||
SHA256H2 V9.S4, V4, V3 // 8350095e
|
||||
SHA256SU0 V8.S4, V7.S4 // 0729285e
|
||||
SHA256SU1 V6.S4, V5.S4, V7.S4 // a760065e
|
||||
SHA1SU0 V11.S4, V8.S4, V6.S4 // 06310b5e
|
||||
SHA1SU1 V5.S4, V1.S4 // a118285e
|
||||
SHA1C V1.S4, V2, V3 // 4300015e
|
||||
SHA1H V5, V4 // a408285e
|
||||
SHA1M V8.S4, V7, V6 // e620085e
|
||||
SHA1P V11.S4, V10, V9 // 49110b5e
|
||||
SHA512H V2.D2, V1, V0 // 208062ce
|
||||
SHA512H2 V4.D2, V3, V2 // 628464ce
|
||||
SHA512SU0 V9.D2, V8.D2 // 2881c0ce
|
||||
SHA512SU1 V7.D2, V6.D2, V5.D2 // c58867ce
|
||||
VRAX1 V26.D2, V29.D2, V30.D2 // be8f7ace
|
||||
VXAR $63, V27.D2, V21.D2, V26.D2 // bafe9bce
|
||||
VPMULL V2.D1, V1.D1, V3.Q1 // 23e0e20e
|
||||
VPMULL2 V2.D2, V1.D2, V4.Q1 // 24e0e24e
|
||||
VPMULL V2.B8, V1.B8, V3.H8 // 23e0220e
|
||||
VPMULL2 V2.B16, V1.B16, V4.H8 // 24e0224e
|
||||
VEOR3 V2.B16, V7.B16, V12.B16, V25.B16 // 990907ce
|
||||
VBCAX V1.B16, V2.B16, V26.B16, V31.B16 // 5f0722ce
|
||||
VREV32 V5.B16, V5.B16 // a508206e
|
||||
VREV64 V2.S2, V3.S2 // 4308a00e
|
||||
VREV64 V2.S4, V3.S4 // 4308a04e
|
||||
|
||||
// logical ops
|
||||
//
|
||||
// make sure constants get encoded into an instruction when it could
|
||||
AND $(1<<63), R1 // AND $-9223372036854775808, R1 // 21004192
|
||||
AND $(1<<63-1), R1 // AND $9223372036854775807, R1 // 21f84092
|
||||
ORR $(1<<63), R1 // ORR $-9223372036854775808, R1 // 210041b2
|
||||
ORR $(1<<63-1), R1 // ORR $9223372036854775807, R1 // 21f840b2
|
||||
EOR $(1<<63), R1 // EOR $-9223372036854775808, R1 // 210041d2
|
||||
EOR $(1<<63-1), R1 // EOR $9223372036854775807, R1 // 21f840d2
|
||||
|
||||
ANDW $0x3ff00000, R2 // ANDW $1072693248, R2 // 42240c12
|
||||
BICW $0x3ff00000, R2 // BICW $1072693248, R2 // 42540212
|
||||
ORRW $0x3ff00000, R2 // ORRW $1072693248, R2 // 42240c32
|
||||
ORNW $0x3ff00000, R2 // ORNW $1072693248, R2 // 42540232
|
||||
EORW $0x3ff00000, R2 // EORW $1072693248, R2 // 42240c52
|
||||
EONW $0x3ff00000, R2 // EONW $1072693248, R2 // 42540252
|
||||
|
||||
AND $0x22220000, R3, R4 // AND $572653568, R3, R4 // 5b44a4d264001b8a
|
||||
ORR $0x22220000, R3, R4 // ORR $572653568, R3, R4 // 5b44a4d264001baa
|
||||
EOR $0x22220000, R3, R4 // EOR $572653568, R3, R4 // 5b44a4d264001bca
|
||||
BIC $0x22220000, R3, R4 // BIC $572653568, R3, R4 // 5b44a4d264003b8a
|
||||
ORN $0x22220000, R3, R4 // ORN $572653568, R3, R4 // 5b44a4d264003baa
|
||||
EON $0x22220000, R3, R4 // EON $572653568, R3, R4 // 5b44a4d264003bca
|
||||
ANDS $0x22220000, R3, R4 // ANDS $572653568, R3, R4 // 5b44a4d264001bea
|
||||
BICS $0x22220000, R3, R4 // BICS $572653568, R3, R4 // 5b44a4d264003bea
|
||||
|
||||
AND R1@>33, R2
|
||||
AND $(1<<63), R1 // AND $-9223372036854775808, R1 // 21004192
|
||||
AND $(1<<63-1), R1 // AND $9223372036854775807, R1 // 21f84092
|
||||
ORR $(1<<63), R1 // ORR $-9223372036854775808, R1 // 210041b2
|
||||
ORR $(1<<63-1), R1 // ORR $9223372036854775807, R1 // 21f840b2
|
||||
EOR $(1<<63), R1 // EOR $-9223372036854775808, R1 // 210041d2
|
||||
EOR $(1<<63-1), R1 // EOR $9223372036854775807, R1 // 21f840d2
|
||||
ANDW $0x3ff00000, R2 // ANDW $1072693248, R2 // 42240c12
|
||||
BICW $0x3ff00000, R2 // BICW $1072693248, R2 // 42540212
|
||||
ORRW $0x3ff00000, R2 // ORRW $1072693248, R2 // 42240c32
|
||||
ORNW $0x3ff00000, R2 // ORNW $1072693248, R2 // 42540232
|
||||
EORW $0x3ff00000, R2 // EORW $1072693248, R2 // 42240c52
|
||||
EONW $0x3ff00000, R2 // EONW $1072693248, R2 // 42540252
|
||||
AND $0x22220000, R3, R4 // AND $572653568, R3, R4 // 5b44a4d264001b8a
|
||||
ORR $0x22220000, R3, R4 // ORR $572653568, R3, R4 // 5b44a4d264001baa
|
||||
EOR $0x22220000, R3, R4 // EOR $572653568, R3, R4 // 5b44a4d264001bca
|
||||
BIC $0x22220000, R3, R4 // BIC $572653568, R3, R4 // 5b44a4d264003b8a
|
||||
ORN $0x22220000, R3, R4 // ORN $572653568, R3, R4 // 5b44a4d264003baa
|
||||
EON $0x22220000, R3, R4 // EON $572653568, R3, R4 // 5b44a4d264003bca
|
||||
ANDS $0x22220000, R3, R4 // ANDS $572653568, R3, R4 // 5b44a4d264001bea
|
||||
BICS $0x22220000, R3, R4 // BICS $572653568, R3, R4 // 5b44a4d264003bea
|
||||
EOR $0xe03fffffffffffff, R20, R22 // EOR $-2287828610704211969, R20, R22 // 96e243d2
|
||||
TSTW $0x600000006, R1 // TSTW $25769803782, R1 // 3f041f72
|
||||
TST $0x4900000049, R0 // TST $313532612681, R0 // 3b0980d23b09c0f21f001bea
|
||||
|
|
@ -316,19 +312,22 @@ TEXT foo(SB), DUPOK|NOSPLIT, $-8
|
|||
EONW $0x6006000060060, R5 // EONW $1689262177517664, R5 // 1b0c8052db00a072a5003b4a
|
||||
ORNW $0x6006000060060, R5 // ORNW $1689262177517664, R5 // 1b0c8052db00a072a5003b2a
|
||||
BICSW $0x6006000060060, R5 // BICSW $1689262177517664, R5 // 1b0c8052db00a072a5003b6a
|
||||
ADDW $0x60060, R2 // ADDW $393312, R2 // 4280011142804111
|
||||
CMPW $0x60060, R2 // CMPW $393312, R2 // 1b0c8052db00a0725f001b6b
|
||||
|
||||
// TODO: this could have better encoding
|
||||
ANDW $-1, R10 // 1b0080124a011b0a
|
||||
|
||||
AND $8, R0, RSP // 1f007d92
|
||||
ORR $8, R0, RSP // 1f007db2
|
||||
EOR $8, R0, RSP // 1f007dd2
|
||||
BIC $8, R0, RSP // 1ff87c92
|
||||
ORN $8, R0, RSP // 1ff87cb2
|
||||
EON $8, R0, RSP // 1ff87cd2
|
||||
ANDW $-1, R10 // 1b0080124a011b0a
|
||||
AND $8, R0, RSP // 1f007d92
|
||||
ORR $8, R0, RSP // 1f007db2
|
||||
EOR $8, R0, RSP // 1f007dd2
|
||||
BIC $8, R0, RSP // 1ff87c92
|
||||
ORN $8, R0, RSP // 1ff87cb2
|
||||
EON $8, R0, RSP // 1ff87cd2
|
||||
TST $15, R2 // 5f0c40f2
|
||||
TST R1, R2 // 5f0001ea
|
||||
TST R1->11, R2 // 5f2c81ea
|
||||
TST R1>>22, R2 // 5f5841ea
|
||||
TST R1<<33, R2 // 5f8401ea
|
||||
TST $0x22220000, R3 // TST $572653568, R3 // 5b44a4d27f001bea
|
||||
|
||||
// move an immediate to a Rn.
|
||||
MOVD $0x3fffffffc000, R0 // MOVD $70368744161280, R0 // e07f72b2
|
||||
MOVW $1000000, R4 // 04488852e401a072
|
||||
MOVW $0xaaaa0000, R1 // MOVW $2863267840, R1 // 4155b552
|
||||
|
|
@ -348,46 +347,37 @@ TEXT foo(SB), DUPOK|NOSPLIT, $-8
|
|||
MOVD $-1, R1 // 01008092
|
||||
MOVD $0x210000, R0 // MOVD $2162688, R0 // 2004a0d2
|
||||
MOVD $0xffffffffffffaaaa, R1 // MOVD $-21846, R1 // a1aa8a92
|
||||
MOVW $1, ZR
|
||||
MOVW $1, R1
|
||||
MOVD $1, ZR
|
||||
MOVD $1, R1
|
||||
MOVK $1, R1
|
||||
|
||||
// move a large constant to a Vd.
|
||||
VMOVS $0x80402010, V11 // VMOVS $2151686160, V11
|
||||
VMOVD $0x8040201008040201, V20 // VMOVD $-9205322385119247871, V20
|
||||
VMOVQ $0x7040201008040201, $0x8040201008040201, V10 // VMOVQ $8088500183983456769, $-9205322385119247871, V10
|
||||
VMOVQ $0x8040201008040202, $0x7040201008040201, V20 // VMOVQ $-9205322385119247870, $8088500183983456769, V20
|
||||
|
||||
// mov(to/from sp)
|
||||
MOVD $0x1002(RSP), R1 // MOVD $4098(RSP), R1 // fb074091610b0091
|
||||
MOVD $0x1708(RSP), RSP // MOVD $5896(RSP), RSP // fb0740917f231c91
|
||||
MOVD $0x2001(R7), R1 // MOVD $8193(R7), R1 // fb08409161070091
|
||||
MOVD $0xffffff(R7), R1 // MOVD $16777215(R7), R1 // fbfc7f9161ff3f91
|
||||
|
||||
MOVD $-0x1(R7), R1 // MOVD $-1(R7), R1 // e10400d1
|
||||
MOVD $-0x30(R7), R1 // MOVD $-48(R7), R1 // e1c000d1
|
||||
MOVD $-0x708(R7), R1 // MOVD $-1800(R7), R1 // e1201cd1
|
||||
MOVD $-0x2000(RSP), R1 // MOVD $-8192(RSP), R1 // e10b40d1
|
||||
MOVD $-0x10000(RSP), RSP // MOVD $-65536(RSP), RSP // ff4340d1
|
||||
|
||||
//
|
||||
// CLS
|
||||
//
|
||||
// LTYPE2 imsr ',' reg
|
||||
// {
|
||||
// outcode($1, &$2, NREG, &$4);
|
||||
// }
|
||||
CLSW R1, R2
|
||||
CLS R1, R2
|
||||
|
||||
//
|
||||
// MOV
|
||||
//
|
||||
// LTYPE3 addr ',' addr
|
||||
// {
|
||||
// outcode($1, &$2, NREG, &$4);
|
||||
// }
|
||||
MOVW R1, R2
|
||||
MOVW ZR, R1
|
||||
MOVW R1, ZR
|
||||
MOVW $1, ZR
|
||||
MOVW $1, R1
|
||||
MOVW ZR, (R1)
|
||||
MOVD R1, R2
|
||||
MOVD ZR, R1
|
||||
MOVD $1, ZR
|
||||
MOVD $1, R1
|
||||
MOVD ZR, (R1)
|
||||
|
||||
// store and load
|
||||
//
|
||||
// LD1/ST1
|
||||
VLD1 (R8), [V1.B16, V2.B16] // 01a1404c
|
||||
VLD1.P (R3), [V31.H8, V0.H8] // 7fa4df4c
|
||||
VLD1.P (R8)(R20), [V21.B16, V22.B16] // VLD1.P (R8)(R20*1), [V21.B16,V22.B16] // 15a1d44c
|
||||
|
|
@ -445,45 +435,21 @@ TEXT foo(SB), DUPOK|NOSPLIT, $-8
|
|||
VST4 [V22.D2, V23.D2, V24.D2, V25.D2], (R3) // 760c004c
|
||||
VST4.P [V14.D2, V15.D2, V16.D2, V17.D2], 64(R15) // ee0d9f4c
|
||||
VST4.P [V24.B8, V25.B8, V26.B8, V27.B8], (R3)(R23) // VST4.P [V24.B8, V25.B8, V26.B8, V27.B8], (R3)(R23*1) // 7800970c
|
||||
FMOVS F20, (R0) // 140000bd
|
||||
|
||||
// pre/post-indexed
|
||||
FMOVS.P F20, 4(R0) // 144400bc
|
||||
FMOVS.W F20, 4(R0) // 144c00bc
|
||||
FMOVS (R0), F20 // 140040bd
|
||||
FMOVS.P 8(R0), F20 // 148440bc
|
||||
FMOVS.W 8(R0), F20 // 148c40bc
|
||||
FMOVD F20, (R2) // 540000fd
|
||||
FMOVD.P F20, 8(R1) // 348400fc
|
||||
FMOVD.W 8(R1), F20 // 348c40fc
|
||||
FMOVQ.P F13, 11(R10) // 4db5803c
|
||||
FMOVQ.W F15, 11(R20) // 8fbe803c
|
||||
|
||||
FMOVS.P 8(R0), F20 // 148440bc
|
||||
FMOVS.W 8(R0), F20 // 148c40bc
|
||||
FMOVD.W 8(R1), F20 // 348c40fc
|
||||
FMOVQ.P 11(R10), F13 // 4db5c03c
|
||||
FMOVQ.W 11(R20), F15 // 8fbec03c
|
||||
FMOVQ F10, 65520(R10) // 4afdbf3d
|
||||
FMOVQ F11, 64(RSP) // eb13803d
|
||||
FMOVQ F11, 8(R20) // 8b82803c
|
||||
FMOVQ F11, 4(R20) // 8b42803c
|
||||
FMOVQ 32(R5), F2 // a208c03d
|
||||
FMOVQ 65520(R10), F10 // 4afdff3d
|
||||
FMOVQ 64(RSP), F11 // eb13c03d
|
||||
PRFM (R2), PLDL1KEEP // 400080f9
|
||||
PRFM 16(R2), PLDL1KEEP // 400880f9
|
||||
PRFM 48(R6), PSTL2STRM // d31880f9
|
||||
PRFM 8(R12), PLIL3STRM // 8d0580f9
|
||||
PRFM (R8), $25 // 190180f9
|
||||
PRFM 8(R9), $30 // 3e0580f9
|
||||
|
||||
// small offset fits into instructions
|
||||
MOVB 1(R1), R2 // 22048039
|
||||
MOVH 1(R1), R2 // 22108078
|
||||
MOVH 2(R1), R2 // 22048079
|
||||
MOVW 1(R1), R2 // 221080b8
|
||||
MOVW 4(R1), R2 // 220480b9
|
||||
MOVD 1(R1), R2 // 221040f8
|
||||
MOVD 8(R1), R2 // 220440f9
|
||||
FMOVS 1(R1), F2 // 221040bc
|
||||
FMOVS 4(R1), F2 // 220440bd
|
||||
FMOVD 1(R1), F2 // 221040fc
|
||||
FMOVD 8(R1), F2 // 220440fd
|
||||
// small offset fits into instructions
|
||||
MOVB R1, 1(R2) // 41040039
|
||||
MOVH R1, 1(R2) // 41100078
|
||||
MOVH R1, 2(R2) // 41040079
|
||||
|
|
@ -491,18 +457,37 @@ TEXT foo(SB), DUPOK|NOSPLIT, $-8
|
|||
MOVW R1, 4(R2) // 410400b9
|
||||
MOVD R1, 1(R2) // 411000f8
|
||||
MOVD R1, 8(R2) // 410400f9
|
||||
MOVD ZR, (R1)
|
||||
MOVW ZR, (R1)
|
||||
FMOVS F1, 1(R2) // 411000bc
|
||||
FMOVS F1, 4(R2) // 410400bd
|
||||
FMOVS F20, (R0) // 140000bd
|
||||
FMOVD F1, 1(R2) // 411000fc
|
||||
FMOVD F1, 8(R2) // 410400fd
|
||||
FMOVD F20, (R2) // 540000fd
|
||||
FMOVQ F0, 32(R5)// a008803d
|
||||
FMOVQ F10, 65520(R10) // 4afdbf3d
|
||||
FMOVQ F11, 64(RSP) // eb13803d
|
||||
FMOVQ F11, 8(R20) // 8b82803c
|
||||
FMOVQ F11, 4(R20) // 8b42803c
|
||||
|
||||
// large aligned offset, use two instructions
|
||||
MOVB 0x1001(R1), R2 // MOVB 4097(R1), R2 // 3b04409162078039
|
||||
MOVH 0x2002(R1), R2 // MOVH 8194(R1), R2 // 3b08409162078079
|
||||
MOVW 0x4004(R1), R2 // MOVW 16388(R1), R2 // 3b104091620780b9
|
||||
MOVD 0x8008(R1), R2 // MOVD 32776(R1), R2 // 3b204091620740f9
|
||||
FMOVS 0x4004(R1), F2 // FMOVS 16388(R1), F2 // 3b104091620740bd
|
||||
FMOVD 0x8008(R1), F2 // FMOVD 32776(R1), F2 // 3b204091620740fd
|
||||
MOVB 1(R1), R2 // 22048039
|
||||
MOVH 1(R1), R2 // 22108078
|
||||
MOVH 2(R1), R2 // 22048079
|
||||
MOVW 1(R1), R2 // 221080b8
|
||||
MOVW 4(R1), R2 // 220480b9
|
||||
MOVD 1(R1), R2 // 221040f8
|
||||
MOVD 8(R1), R2 // 220440f9
|
||||
FMOVS (R0), F20 // 140040bd
|
||||
FMOVS 1(R1), F2 // 221040bc
|
||||
FMOVS 4(R1), F2 // 220440bd
|
||||
FMOVD 1(R1), F2 // 221040fc
|
||||
FMOVD 8(R1), F2 // 220440fd
|
||||
FMOVQ 32(R5), F2 // a208c03d
|
||||
FMOVQ 65520(R10), F10 // 4afdff3d
|
||||
FMOVQ 64(RSP), F11 // eb13c03d
|
||||
|
||||
// large aligned offset, use two instructions(add+ldr/store).
|
||||
MOVB R1, 0x1001(R2) // MOVB R1, 4097(R2) // 5b04409161070039
|
||||
MOVH R1, 0x2002(R2) // MOVH R1, 8194(R2) // 5b08409161070079
|
||||
MOVW R1, 0x4004(R2) // MOVW R1, 16388(R2) // 5b104091610700b9
|
||||
|
|
@ -510,15 +495,16 @@ TEXT foo(SB), DUPOK|NOSPLIT, $-8
|
|||
FMOVS F1, 0x4004(R2) // FMOVS F1, 16388(R2) // 5b104091610700bd
|
||||
FMOVD F1, 0x8008(R2) // FMOVD F1, 32776(R2) // 5b204091610700fd
|
||||
|
||||
// very large or unaligned offset uses constant pool
|
||||
// the encoding cannot be checked as the address of the constant pool is unknown.
|
||||
// here we only test that they can be assembled.
|
||||
MOVB 0x44332211(R1), R2 // MOVB 1144201745(R1), R2
|
||||
MOVH 0x44332211(R1), R2 // MOVH 1144201745(R1), R2
|
||||
MOVW 0x44332211(R1), R2 // MOVW 1144201745(R1), R2
|
||||
MOVD 0x44332211(R1), R2 // MOVD 1144201745(R1), R2
|
||||
FMOVS 0x44332211(R1), F2 // FMOVS 1144201745(R1), F2
|
||||
FMOVD 0x44332211(R1), F2 // FMOVD 1144201745(R1), F2
|
||||
MOVB 0x1001(R1), R2 // MOVB 4097(R1), R2 // 3b04409162078039
|
||||
MOVH 0x2002(R1), R2 // MOVH 8194(R1), R2 // 3b08409162078079
|
||||
MOVW 0x4004(R1), R2 // MOVW 16388(R1), R2 // 3b104091620780b9
|
||||
MOVD 0x8008(R1), R2 // MOVD 32776(R1), R2 // 3b204091620740f9
|
||||
FMOVS 0x4004(R1), F2 // FMOVS 16388(R1), F2 // 3b104091620740bd
|
||||
FMOVD 0x8008(R1), F2 // FMOVD 32776(R1), F2 // 3b204091620740fd
|
||||
|
||||
// very large or unaligned offset uses constant pool.
|
||||
// the encoding cannot be checked as the address of the constant pool is unknown.
|
||||
// here we only test that they can be assembled.
|
||||
MOVB R1, 0x44332211(R2) // MOVB R1, 1144201745(R2)
|
||||
MOVH R1, 0x44332211(R2) // MOVH R1, 1144201745(R2)
|
||||
MOVW R1, 0x44332211(R2) // MOVW R1, 1144201745(R2)
|
||||
|
|
@ -526,14 +512,59 @@ TEXT foo(SB), DUPOK|NOSPLIT, $-8
|
|||
FMOVS F1, 0x44332211(R2) // FMOVS F1, 1144201745(R2)
|
||||
FMOVD F1, 0x44332211(R2) // FMOVD F1, 1144201745(R2)
|
||||
|
||||
//
|
||||
// MOVK
|
||||
//
|
||||
// LMOVK imm ',' reg
|
||||
// {
|
||||
// outcode($1, &$2, NREG, &$4);
|
||||
// }
|
||||
MOVK $1, R1
|
||||
MOVB 0x44332211(R1), R2 // MOVB 1144201745(R1), R2
|
||||
MOVH 0x44332211(R1), R2 // MOVH 1144201745(R1), R2
|
||||
MOVW 0x44332211(R1), R2 // MOVW 1144201745(R1), R2
|
||||
MOVD 0x44332211(R1), R2 // MOVD 1144201745(R1), R2
|
||||
FMOVS 0x44332211(R1), F2 // FMOVS 1144201745(R1), F2
|
||||
FMOVD 0x44332211(R1), F2 // FMOVD 1144201745(R1), F2
|
||||
|
||||
// shifted or extended register offset.
|
||||
MOVD (R2)(R6.SXTW), R4 // 44c866f8
|
||||
MOVD (R3)(R6), R5 // MOVD (R3)(R6*1), R5 // 656866f8
|
||||
MOVD (R2)(R6), R4 // MOVD (R2)(R6*1), R4 // 446866f8
|
||||
MOVWU (R19)(R20<<2), R20 // 747a74b8
|
||||
MOVD (R2)(R6<<3), R4 // 447866f8
|
||||
MOVD (R3)(R7.SXTX<<3), R8 // 68f867f8
|
||||
MOVWU (R5)(R4.UXTW), R10 // aa4864b8
|
||||
MOVBU (R3)(R9.UXTW), R8 // 68486938
|
||||
MOVBU (R5)(R8), R10 // MOVBU (R5)(R8*1), R10 // aa686838
|
||||
MOVHU (R2)(R7.SXTW<<1), R11 // 4bd86778
|
||||
MOVHU (R1)(R2<<1), R5 // 25786278
|
||||
MOVB (R9)(R3.UXTW), R6 // 2649a338
|
||||
MOVB (R10)(R6), R15 // MOVB (R10)(R6*1), R15 // 4f69a638
|
||||
MOVB (R29)(R30<<0), R14 // ae7bbe38
|
||||
MOVB (R29)(R30), R14 // MOVB (R29)(R30*1), R14 // ae6bbe38
|
||||
MOVH (R5)(R7.SXTX<<1), R19 // b3f8a778
|
||||
MOVH (R8)(R4<<1), R10 // 0a79a478
|
||||
MOVW (R9)(R8.SXTW<<2), R19 // 33d9a8b8
|
||||
MOVW (R1)(R4.SXTX), R11 // 2be8a4b8
|
||||
MOVW (R1)(R4.SXTX), ZR // 3fe8a4b8
|
||||
MOVW (R2)(R5), R12 // MOVW (R2)(R5*1), R12 // 4c68a5b8
|
||||
FMOVS (R2)(R6), F4 // FMOVS (R2)(R6*1), F4 // 446866bc
|
||||
FMOVS (R2)(R6<<2), F4 // 447866bc
|
||||
FMOVD (R2)(R6), F4 // FMOVD (R2)(R6*1), F4 // 446866fc
|
||||
FMOVD (R2)(R6<<3), F4 // 447866fc
|
||||
|
||||
MOVD R5, (R2)(R6<<3) // 457826f8
|
||||
MOVD R9, (R6)(R7.SXTX<<3) // c9f827f8
|
||||
MOVD ZR, (R6)(R7.SXTX<<3) // dff827f8
|
||||
MOVW R8, (R2)(R3.UXTW<<2) // 485823b8
|
||||
MOVW R7, (R3)(R4.SXTW) // 67c824b8
|
||||
MOVB R4, (R2)(R6.SXTX) // 44e82638
|
||||
MOVB R8, (R3)(R9.UXTW) // 68482938
|
||||
MOVB R10, (R5)(R8) // MOVB R10, (R5)(R8*1) // aa682838
|
||||
MOVH R11, (R2)(R7.SXTW<<1) // 4bd82778
|
||||
MOVH R5, (R1)(R2<<1) // 25782278
|
||||
MOVH R7, (R2)(R5.SXTX<<1) // 47f82578
|
||||
MOVH R8, (R3)(R6.UXTW) // 68482678
|
||||
MOVB R4, (R2)(R6.SXTX) // 44e82638
|
||||
FMOVS F4, (R2)(R6) // FMOVS F4, (R2)(R6*1) // 446826bc
|
||||
FMOVS F4, (R2)(R6<<2) // 447826bc
|
||||
FMOVD F4, (R2)(R6) // FMOVD F4, (R2)(R6*1) // 446826fc
|
||||
FMOVD F4, (R2)(R6<<3) // 447826fc
|
||||
|
||||
// vmov
|
||||
VMOV V8.S[1], R1 // 013d0c0e
|
||||
VMOV V0.D[0], R11 // 0b3c084e
|
||||
VMOV V0.D[1], R11 // 0b3c184e
|
||||
|
|
@ -548,205 +579,28 @@ TEXT foo(SB), DUPOK|NOSPLIT, $-8
|
|||
VMOV V9.H[0], V12.H[1] // 2c05066e
|
||||
VMOV V8.B[0], V12.B[1] // 0c05036e
|
||||
VMOV V8.B[7], V4.B[8] // 043d116e
|
||||
VREV32 V5.B16, V5.B16 // a508206e
|
||||
VREV64 V2.S2, V3.S2 // 4308a00e
|
||||
VREV64 V2.S4, V3.S4 // 4308a04e
|
||||
VDUP V19.S[0], V17.S4 // 7106044e
|
||||
//
|
||||
// B/BL
|
||||
//
|
||||
// LTYPE4 comma rel
|
||||
// {
|
||||
// outcode($1, &nullgen, NREG, &$3);
|
||||
// }
|
||||
BL 1(PC) // CALL 1(PC)
|
||||
|
||||
// LTYPE4 comma nireg
|
||||
// {
|
||||
// outcode($1, &nullgen, NREG, &$3);
|
||||
// }
|
||||
BL (R2) // CALL (R2)
|
||||
BL foo(SB) // CALL foo(SB)
|
||||
BL bar<>(SB) // CALL bar<>(SB)
|
||||
//
|
||||
// BEQ
|
||||
//
|
||||
// LTYPE5 comma rel
|
||||
// {
|
||||
// outcode($1, &nullgen, NREG, &$3);
|
||||
// }
|
||||
BEQ 1(PC)
|
||||
//
|
||||
// SVC
|
||||
//
|
||||
// LTYPE6
|
||||
// {
|
||||
// outcode($1, &nullgen, NREG, &nullgen);
|
||||
// }
|
||||
SVC
|
||||
|
||||
//
|
||||
// CMP
|
||||
//
|
||||
// LTYPE7 imsr ',' spreg comma
|
||||
// {
|
||||
// outcode($1, &$2, $4, &nullgen);
|
||||
// }
|
||||
CMP $3, R2
|
||||
CMP R1, R2
|
||||
CMP R1->11, R2
|
||||
CMP R1>>22, R2
|
||||
CMP R1<<33, R2
|
||||
CMP R22.SXTX, RSP // ffe336eb
|
||||
|
||||
CMP $0x22220000, RSP // CMP $572653568, RSP // 5b44a4d2ff633beb
|
||||
CMPW $0x22220000, RSP // CMPW $572653568, RSP // 5b44a452ff633b6b
|
||||
|
||||
// TST
|
||||
TST $15, R2 // 5f0c40f2
|
||||
TST R1, R2 // 5f0001ea
|
||||
TST R1->11, R2 // 5f2c81ea
|
||||
TST R1>>22, R2 // 5f5841ea
|
||||
TST R1<<33, R2 // 5f8401ea
|
||||
TST $0x22220000, R3 // TST $572653568, R3 // 5b44a4d27f001bea
|
||||
|
||||
//
|
||||
// CBZ
|
||||
//
|
||||
// LTYPE8 reg ',' rel
|
||||
// {
|
||||
// outcode($1, &$2, NREG, &$4);
|
||||
// }
|
||||
again:
|
||||
CBZ R1, again // CBZ R1
|
||||
|
||||
//
|
||||
// CSET
|
||||
//
|
||||
// LTYPER cond ',' reg
|
||||
// {
|
||||
// outcode($1, &$2, NREG, &$4);
|
||||
// }
|
||||
CSET GT, R1 // e1d79f9a
|
||||
CSETW HI, R2 // e2979f1a
|
||||
//
|
||||
// CSEL/CSINC/CSNEG/CSINV
|
||||
//
|
||||
// LTYPES cond ',' reg ',' reg ',' reg
|
||||
// {
|
||||
// outgcode($1, &$2, $6.reg, &$4, &$8);
|
||||
// }
|
||||
// conditional operations
|
||||
CSET GT, R1 // e1d79f9a
|
||||
CSETW HI, R2 // e2979f1a
|
||||
CSEL LT, R1, R2, ZR // 3fb0829a
|
||||
CSELW LT, R2, R3, R4 // 44b0831a
|
||||
CSINC GT, R1, ZR, R3 // 23c49f9a
|
||||
CSNEG MI, R1, R2, R3 // 234482da
|
||||
CSINV CS, R1, R2, R3 // CSINV HS, R1, R2, R3 // 232082da
|
||||
CSINVW MI, R2, ZR, R2 // 42409f5a
|
||||
|
||||
// LTYPES cond ',' reg ',' reg
|
||||
// {
|
||||
// outcode($1, &$2, $4.reg, &$6);
|
||||
// }
|
||||
CINC EQ, R4, R9 // 8914849a
|
||||
CINCW PL, R2, ZR // 5f44821a
|
||||
CINV PL, R11, R22 // 76418bda
|
||||
CINVW LS, R7, R13 // ed80875a
|
||||
CNEG LS, R13, R7 // a7858dda
|
||||
CNEGW EQ, R8, R13 // 0d15885a
|
||||
//
|
||||
// CCMN
|
||||
//
|
||||
// LTYPEU cond ',' imsr ',' reg ',' imm comma
|
||||
// {
|
||||
// outgcode($1, &$2, $6.reg, &$4, &$8);
|
||||
// }
|
||||
CCMN MI, ZR, R1, $4 // e44341ba
|
||||
|
||||
//
|
||||
// FADDD
|
||||
//
|
||||
// LTYPEK frcon ',' freg
|
||||
// {
|
||||
// outcode($1, &$2, NREG, &$4);
|
||||
// }
|
||||
// FADDD $0.5, F1 // FADDD $(0.5), F1
|
||||
FADDD F1, F2
|
||||
|
||||
// LTYPEK frcon ',' freg ',' freg
|
||||
// {
|
||||
// outcode($1, &$2, $4.reg, &$6);
|
||||
// }
|
||||
// FADDD $0.7, F1, F2 // FADDD $(0.69999999999999996), F1, F2
|
||||
FADDD F1, F2, F3
|
||||
|
||||
//
|
||||
// FCMP
|
||||
//
|
||||
// LTYPEL frcon ',' freg comma
|
||||
// {
|
||||
// outcode($1, &$2, $4.reg, &nullgen);
|
||||
// }
|
||||
// FCMP $0.2, F1
|
||||
// FCMP F1, F2
|
||||
|
||||
//
|
||||
// FCCMP
|
||||
//
|
||||
// LTYPEF cond ',' freg ',' freg ',' imm comma
|
||||
// {
|
||||
// outgcode($1, &$2, $6.reg, &$4, &$8);
|
||||
// }
|
||||
FCCMPS LT, F1, F2, $1 // 41b4211e
|
||||
|
||||
//
|
||||
// FMULA
|
||||
//
|
||||
// LTYPE9 freg ',' freg ',' freg ',' freg comma
|
||||
// {
|
||||
// outgcode($1, &$2, $4.reg, &$6, &$8);
|
||||
// }
|
||||
// FMULA F1, F2, F3, F4
|
||||
|
||||
//
|
||||
// FCSEL
|
||||
//
|
||||
// LFCSEL cond ',' freg ',' freg ',' freg
|
||||
// {
|
||||
// outgcode($1, &$2, $6.reg, &$4, &$8);
|
||||
// }
|
||||
//
|
||||
// MADD Rn,Rm,Ra,Rd
|
||||
//
|
||||
// LTYPEM reg ',' reg ',' sreg ',' reg
|
||||
// {
|
||||
// outgcode($1, &$2, $6, &$4, &$8);
|
||||
// }
|
||||
// MADD R1, R2, R3, R4
|
||||
|
||||
FMADDS F1, F3, F2, F4 // 440c011f
|
||||
FMADDD F4, F5, F4, F4 // 8414441f
|
||||
FMSUBS F13, F21, F13, F19 // b3d50d1f
|
||||
FMSUBD F11, F7, F15, F31 // ff9d4b1f
|
||||
FNMADDS F1, F3, F2, F4 // 440c211f
|
||||
FNMADDD F1, F3, F2, F4 // 440c611f
|
||||
FNMSUBS F1, F3, F2, F4 // 448c211f
|
||||
FNMSUBD F1, F3, F2, F4 // 448c611f
|
||||
|
||||
// DMB, HINT
|
||||
//
|
||||
// LDMB imm
|
||||
// {
|
||||
// outcode($1, &$2, NREG, &nullgen);
|
||||
// }
|
||||
DMB $1
|
||||
|
||||
//
|
||||
// STXR
|
||||
//
|
||||
// LSTXR reg ',' addr ',' reg
|
||||
// {
|
||||
// outcode($1, &$2, &$4, &$6);
|
||||
// }
|
||||
// atomic ops
|
||||
LDARB (R25), R2 // 22ffdf08
|
||||
LDARH (R5), R7 // a7fcdf48
|
||||
LDAXPW (R10), (R20, R16) // 54c17f88
|
||||
|
|
@ -923,21 +777,18 @@ again:
|
|||
LDORLH R5, (RSP), R7 // e7336578
|
||||
LDORLB R5, (R6), R7 // c7306538
|
||||
LDORLB R5, (RSP), R7 // e7336538
|
||||
|
||||
// RET
|
||||
//
|
||||
// LTYPEA comma
|
||||
// {
|
||||
// outcode($1, &nullgen, NREG, &nullgen);
|
||||
// }
|
||||
BEQ 2(PC)
|
||||
RET
|
||||
RET foo(SB)
|
||||
|
||||
// More B/BL cases, and canonical names JMP, CALL.
|
||||
|
||||
BEQ 2(PC)
|
||||
B foo(SB) // JMP foo(SB)
|
||||
BL foo(SB) // CALL foo(SB)
|
||||
// B/BL/B.cond cases, and canonical names JMP, CALL.
|
||||
BL 1(PC) // CALL 1(PC)
|
||||
BL (R2) // CALL (R2)
|
||||
BL foo(SB) // CALL foo(SB)
|
||||
BL bar<>(SB) // CALL bar<>(SB)
|
||||
B foo(SB) // JMP foo(SB)
|
||||
BEQ 1(PC)
|
||||
BEQ 2(PC)
|
||||
TBZ $1, R1, 2(PC)
|
||||
TBNZ $2, R2, 2(PC)
|
||||
|
|
@ -1112,8 +963,6 @@ again:
|
|||
FSTPS (F3, F4), 1024(RSP) // fb0310916313002d
|
||||
FSTPS (F3, F4), x(SB)
|
||||
FSTPS (F3, F4), x+8(SB)
|
||||
NOOP // 1f2003d5
|
||||
HINT $0 // 1f2003d5
|
||||
|
||||
// System Register
|
||||
MSR $1, SPSel // bf4100d5
|
||||
|
|
@ -1675,11 +1524,4 @@ again:
|
|||
MSR R13, ZCR_EL1 // 0d1218d5
|
||||
MRS ZCR_EL1, R23 // 171238d5
|
||||
MSR R17, ZCR_EL1 // 111218d5
|
||||
|
||||
// END
|
||||
//
|
||||
// LTYPEE comma
|
||||
// {
|
||||
// outcode($1, &nullgen, NREG, &nullgen);
|
||||
// }
|
||||
END
|
||||
|
|
|
|||
Loading…
Reference in New Issue