diff options
Diffstat (limited to 'src/cmd/asm/internal/asm/testdata/s390x.s')
-rw-r--r-- | src/cmd/asm/internal/asm/testdata/s390x.s | 524 |
1 files changed, 524 insertions, 0 deletions
diff --git a/src/cmd/asm/internal/asm/testdata/s390x.s b/src/cmd/asm/internal/asm/testdata/s390x.s new file mode 100644 index 0000000..7c5d26b --- /dev/null +++ b/src/cmd/asm/internal/asm/testdata/s390x.s @@ -0,0 +1,524 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +#include "../../../../../runtime/textflag.h" + +TEXT main·foo(SB),DUPOK|NOSPLIT,$16-0 // TEXT main.foo(SB), DUPOK|NOSPLIT, $16-0 + MOVD R1, R2 // b9040021 + MOVW R3, R4 // b9140043 + MOVH R5, R6 // b9070065 + MOVB R7, R8 // b9060087 + MOVWZ R1, R2 // b9160021 + MOVHZ R2, R3 // b9850032 + MOVBZ R4, R5 // b9840054 + MOVDBR R1, R2 // b90f0021 + MOVWBR R3, R4 // b91f0043 + + MOVDEQ R0, R1 // b9e28010 + MOVDGE R2, R3 // b9e2a032 + MOVDGT R4, R5 // b9e22054 + MOVDLE R6, R7 // b9e2c076 + MOVDLT R8, R9 // b9e24098 + MOVDNE R10, R11 // b9e270ba + + LOCR $3, R2, R1 // b9f23012 + LOCGR $7, R5, R6 // b9e27065 + + MOVD (R15), R1 // e310f0000004 + MOVW (R15), R2 // e320f0000014 + MOVH (R15), R3 // e330f0000015 + MOVB (R15), R4 // e340f0000077 + MOVWZ (R15), R5 // e350f0000016 + MOVHZ (R15), R6 // e360f0000091 + MOVBZ (R15), R7 // e370f0000090 + MOVDBR (R15), R8 // e380f000000f + MOVWBR (R15), R9 // e390f000001e + + MOVD R1, n-8(SP) // e310f0100024 + MOVW R2, n-8(SP) // 5020f010 + MOVH R3, n-8(SP) // 4030f010 + MOVB R4, n-8(SP) // 4240f010 + MOVWZ R5, n-8(SP) // 5050f010 + MOVHZ R6, n-8(SP) // 4060f010 + MOVBZ R7, n-8(SP) // 4270f010 + MOVDBR R8, n-8(SP) // e380f010002f + MOVWBR R9, n-8(SP) // e390f010003e + + MOVD $-8589934592, R1 // c01efffffffe + MOVW $-131072, R2 // c021fffe0000 + MOVH $-512, R3 // a739fe00 + MOVB $-1, R4 // a749ffff + + MOVD $32767, n-8(SP) // e548f0107fff + MOVD $-1, -524288(R1) // e3a010008071e548a000ffff + MOVW $32767, n-8(SP) // e54cf0107fff + MOVW $-32768, 4096(R2) // e3a020000171e54ca0008000 + MOVH $512, n-8(SP) // e544f0100200 + MOVH $-512, 524288(R3) // c0a10008000041aa3000e544a000fe00 + MOVB $-1, n-8(SP) // 92fff010 + MOVB $255, 4096(R4) // ebff40000152 + MOVB $-128, -524288(R5) // eb8050008052 + MOVB $1, -524289(R6) // c0a1fff7ffff41aa60009201a000 + + // RX (12-bit displacement) and RXY (20-bit displacement) instruction encoding (e.g: ST vs STY) + MOVW R1, 4095(R2)(R3) // 50132fff + MOVW R1, 4096(R2)(R3) // e31320000150 + MOVWZ R1, 4095(R2)(R3) // 50132fff + MOVWZ R1, 4096(R2)(R3) // e31320000150 + MOVH R1, 4095(R2)(R3) // 40132fff + MOVHZ R1, 4095(R2)(R3) // 40132fff + MOVH R1, 4096(R2)(R3) // e31320000170 + MOVHZ R1, 4096(R2)(R3) // e31320000170 + MOVB R1, 4095(R2)(R3) // 42132fff + MOVBZ R1, 4095(R2)(R3) // 42132fff + MOVB R1, 4096(R2)(R3) // e31320000172 + MOVBZ R1, 4096(R2)(R3) // e31320000172 + + ADD R1, R2 // b9e81022 + ADD R1, R2, R3 // b9e81032 + ADD $8192, R1 // a71b2000 + ADD $8192, R1, R2 // ec21200000d9 + ADD $32768, R1 // c21800008000 + ADD $32768, R1, R2 // b9040021c22800008000 + ADDC R1, R2 // b9ea1022 + ADDC $1, R1, R2 // ec21000100db + ADDC $-1, R1, R2 // ec21ffff00db + ADDC R1, R2, R3 // b9ea1032 + ADDW R1, R2 // 1a21 + ADDW R1, R2, R3 // b9f81032 + ADDW $8192, R1 // a71a2000 + ADDW $8192, R1, R2 // ec21200000d8 + ADDE R1, R2 // b9880021 + SUB R3, R4 // b9090043 + SUB R3, R4, R5 // b9e93054 + SUB $8192, R3 // a73be000 + SUB $8192, R3, R4 // ec43e00000d9 + SUBC R1, R2 // b90b0021 + SUBC $1, R1, R2 // ec21ffff00db + SUBC R2, R3, R4 // b9eb2043 + SUBW R3, R4 // 1b43 + SUBW R3, R4, R5 // b9f93054 + SUBW $8192, R1 // c21500002000 + SUBW $8192, R1, R2 // 1821c22500002000 + MULLW R6, R7 // b91c0076 + MULLW R6, R7, R8 // b9040087b91c0086 + MULLW $8192, R6 // a76c2000 + MULLW $8192, R6, R7 // 1876a77c2000 + MULLW $-32769, R8 // c281ffff7fff + MULLW $-32769, R8, R9 // 1898c291ffff7fff + MULLD $-2147483648, R1 // c21080000000 + MULLD $-2147483648, R1, R2 // b9040021c22080000000 + MULHD R9, R8 // b90400b8b98600a9ebb9003f000ab98000b8b90900abebb8003f000ab98000b9b9e9b08a + MULHD R7, R2, R1 // b90400b2b98600a7ebb7003f000ab98000b2b90900abebb2003f000ab98000b7b9e9b01a + MULHDU R3, R4 // b90400b4b98600a3b904004a + MULHDU R5, R6, R7 // b90400b6b98600a5b904007a + MLGR R1, R2 // b9860021 + DIVD R1, R2 // b90400b2b90d00a1b904002b + DIVD R1, R2, R3 // b90400b2b90d00a1b904003b + DIVW R4, R5 // b90400b5b91d00a4b904005b + DIVW R4, R5, R6 // b90400b5b91d00a4b904006b + DIVDU R7, R8 // a7a90000b90400b8b98700a7b904008b + DIVDU R7, R8, R9 // a7a90000b90400b8b98700a7b904009b + DIVWU R1, R2 // a7a90000b90400b2b99700a1b904002b + DIVWU R1, R2, R3 // a7a90000b90400b2b99700a1b904003b + MODD R1, R2 // b90400b2b90d00a1b904002a + MODD R1, R2, R3 // b90400b2b90d00a1b904003a + MODW R4, R5 // b90400b5b91d00a4b904005a + MODW R4, R5, R6 // b90400b5b91d00a4b904006a + MODDU R7, R8 // a7a90000b90400b8b98700a7b904008a + MODDU R7, R8, R9 // a7a90000b90400b8b98700a7b904009a + MODWU R1, R2 // a7a90000b90400b2b99700a1b904002a + MODWU R1, R2, R3 // a7a90000b90400b2b99700a1b904003a + NEG R1 // b9030011 + NEG R1, R2 // b9030021 + NEGW R1 // b9130011 + NEGW R1, R2 // b9130021 + FLOGR R2, R2 // b9830022 + POPCNT R3, R4 // b9e10043 + + AND R1, R2 // b9800021 + AND R1, R2, R3 // b9e42031 + AND $-2, R1 // a517fffe + AND $-65536, R1 // c01bffff0000 + AND $1, R1 // c0a100000001b980001a + ANDW R1, R2 // 1421 + ANDW R1, R2, R3 // b9f42031 + ANDW $1, R1 // c01b00000001 + ANDW $131071, R1 // a5160001 + ANDW $65536, R1 // c01b00010000 + ANDW $-2, R1 // a517fffe + OR R1, R2 // b9810021 + OR R1, R2, R3 // b9e62031 + OR $1, R1 // a51b0001 + OR $131071, R1 // c01d0001ffff + OR $65536, R1 // c01d00010000 + OR $-2, R1 // c0a1fffffffeb981001a + ORW R1, R2 // 1621 + ORW R1, R2, R3 // b9f62031 + ORW $1, R1 // a51b0001 + ORW $131071, R1 // c01d0001ffff + ORW $65536, R1 // a51a0001 + ORW $-2, R1 // c01dfffffffe + XOR R1, R2 // b9820021 + XOR R1, R2, R3 // b9e72031 + XOR $1, R1 // c01700000001 + XOR $131071, R1 // c0170001ffff + XOR $65536, R1 // c01700010000 + XOR $-2, R1 // c0a1fffffffeb982001a + XORW R1, R2 // 1721 + XORW R1, R2, R3 // b9f72031 + XORW $1, R1 // c01700000001 + XORW $131071, R1 // c0170001ffff + XORW $65536, R1 // c01700010000 + XORW $-2, R1 // c017fffffffe + + ADD -524288(R1), R2 // e32010008008 + ADD 524287(R3), R4 // e3403fff7f08 + ADD -524289(R1), R2 // c0a1fff7ffffe32a10000008 + ADD 524288(R3), R4 // c0a100080000e34a30000008 + ADD -524289(R1)(R2*1), R3 // c0a1fff7ffff41aa2000e33a10000008 + ADD 524288(R3)(R4*1), R5 // c0a10008000041aa4000e35a30000008 + ADDC (R1), R2 // e3201000000a + ADDW (R5), R6 // 5a605000 + ADDW 4095(R7), R8 // 5a807fff + ADDW -1(R1), R2 // e3201fffff5a + ADDW 4096(R3), R4 // e3403000015a + ADDE 4096(R3), R4 // e34030000188 + ADDE 4096(R3)(R2*1), R4 // e34230000188 + ADDE 524288(R3)(R4*1), R5 // c0a10008000041aa4000e35a30000088 + MULLD (R1)(R2*1), R3 // e3321000000c + MULLW (R3)(R4*1), R5 // 71543000 + MULLW 4096(R3), R4 // e34030000151 + SUB (R1), R2 // e32010000009 + SUBC (R1), R2 // e3201000000b + SUBE (R1), R2 // e32010000089 + SUBW (R1), R2 // 5b201000 + SUBW -1(R1), R2 // e3201fffff5b + AND (R1), R2 // e32010000080 + ANDW (R1), R2 // 54201000 + ANDW -1(R1), R2 // e3201fffff54 + OR (R1), R2 // e32010000081 + ORW (R1), R2 // 56201000 + ORW -1(R1), R2 // e3201fffff56 + XOR (R1), R2 // e32010000082 + XORW (R1), R2 // 57201000 + XORW -1(R1), R2 // e3201fffff57 + + // shift and rotate instructions + SRD $4, R4, R7 // eb740004000c + SRD R1, R4, R7 // eb741000000c + SRW $4, R4, R7 // eb74000400de + SRW R1, R4, R7 // eb74100000de + SLW $4, R3, R6 // eb63000400df + SLW R2, R3, R6 // eb63200000df + SLD $4, R3, R6 // eb630004000d + SLD R2, R3, R6 // eb632000000d + SRAD $4, R5, R8 // eb850004000a + SRAD R3, R5, R8 // eb853000000a + SRAW $4, R5, R8 // eb85000400dc + SRAW R3, R5, R8 // eb85300000dc + RLL R1, R2, R3 // eb321000001d + RLL $4, R2, R3 // eb320004001d + RLLG R1, R2, R3 // eb321000001c + RLLG $4, R2, R3 // eb320004001c + + RNSBG $0, $31, $32, R1, R2 // ec21001f2054 + RXSBG $17, $8, $16, R3, R4 // ec4311081057 + ROSBG $9, $24, $11, R5, R6 // ec6509180b56 + RNSBGT $0, $31, $32, R7, R8 // ec87801f2054 + RXSBGT $17, $8, $16, R9, R10 // eca991081057 + ROSBGT $9, $24, $11, R11, R0 // ec0b89180b56 + RISBG $0, $31, $32, R1, R2 // ec21001f2055 + RISBGN $17, $8, $16, R3, R4 // ec4311081059 + RISBGZ $9, $24, $11, R5, R6 // ec6509980b55 + RISBGNZ $0, $31, $32, R7, R8 // ec87009f2059 + RISBHG $17, $8, $16, R9, R10 // eca91108105d + RISBLG $9, $24, $11, R11, R0 // ec0b09180b51 + RISBHGZ $17, $8, $16, R9, R10 // eca91188105d + RISBLGZ $9, $24, $11, R11, R0 // ec0b09980b51 + + LAA R1, R2, 524287(R3) // eb213fff7ff8 + LAAG R4, R5, -524288(R6) // eb54600080e8 + LAAL R7, R8, 8192(R9) // eb87900002fa + LAALG R10, R11, -8192(R12) // ebbac000feea + LAN R1, R2, (R3) // eb21300000f4 + LANG R4, R5, (R6) // eb54600000e4 + LAX R7, R8, (R9) // eb87900000f7 + LAXG R10, R11, (R12) // ebbac00000e7 + LAO R1, R2, (R3) // eb21300000f6 + LAOG R4, R5, (R6) // eb54600000e6 + + // load and store multiple + LMG n-8(SP), R3, R4 // eb34f0100004 + LMG -5(R5), R3, R4 // eb345ffbff04 + LMY n-8(SP), R3, R4 // 9834f010 + LMY 4096(R1), R3, R4 // eb3410000198 + STMG R1, R2, n-8(SP) // eb12f0100024 + STMG R1, R2, -5(R3) // eb123ffbff24 + STMY R1, R2, n-8(SP) // 9012f010 + STMY R1, R2, 4096(R3) // eb1230000190 + + XC $8, (R15), n-8(SP) // d707f010f000 + NC $8, (R15), n-8(SP) // d407f010f000 + OC $8, (R15), n-8(SP) // d607f010f000 + MVC $8, (R15), n-8(SP) // d207f010f000 + MVCIN $8, (R15), n-8(SP) // e807f010f000 + CLC $8, (R15), n-8(SP) // d507f000f010 + XC $256, -8(R15), -8(R15) // b90400afc2a8fffffff8d7ffa000a000 + MVC $256, 8192(R1), 8192(R2) // b90400a2c2a800002000b90400b1c2b800002000d2ffa000b000 + + CMP R1, R2 // b9200012 + CMP R3, $32767 // a73f7fff + CMP R3, $32768 // c23c00008000 + CMP R3, $-2147483648 // c23c80000000 + CMPU R4, R5 // b9210045 + CMPU R6, $4294967295 // c26effffffff + CMPW R7, R8 // 1978 + CMPW R9, $-32768 // a79e8000 + CMPW R9, $-32769 // c29dffff7fff + CMPW R9, $-2147483648 // c29d80000000 + CMPWU R1, R2 // 1512 + CMPWU R3, $4294967295 // c23fffffffff + + TMHH R1, $65535 // a712ffff + TMHL R2, $1 // a7230001 + TMLH R3, $0 // a7300000 + TMLL R4, $32768 // a7418000 + + IPM R3 // b2220030 + IPM R12 // b22200c0 + + SPM R1 // 0410 + SPM R10 // 04a0 + + BRC $7, 0(PC) // a7740000 + BNE 0(PC) // a7740000 + BEQ 0(PC) // a7840000 + BLT 0(PC) // a7440000 + BLE 0(PC) // a7c40000 + BGT 0(PC) // a7240000 + BGE 0(PC) // a7a40000 + BLTU 0(PC) // a7540000 + BLEU 0(PC) // a7d40000 + + BRCT R1, 0(PC) // a7160000 + BRCTG R2, 0(PC) // a7270000 + + CMPBNE R1, R2, 0(PC) // ec1200007064 + CMPBEQ R3, R4, 0(PC) // ec3400008064 + CMPBLT R5, R6, 0(PC) // ec5600004064 + CMPBLE R7, R8, 0(PC) // ec780000c064 + CMPBGT R9, R1, 0(PC) // ec9100002064 + CMPBGE R2, R3, 0(PC) // ec230000a064 + + CMPBNE R1, $-127, 0(PC) // ec170000817c + CMPBEQ R3, $0, 0(PC) // ec380000007c + CMPBLT R5, $128, 0(PC) // ec540000807c + CMPBLE R7, $127, 0(PC) // ec7c00007f7c + CMPBGT R9, $0, 0(PC) // ec920000007c + CMPBGE R2, $128, 0(PC) // ec2a0000807c + + CMPUBNE R1, R2, 0(PC) // ec1200007065 + CMPUBEQ R3, R4, 0(PC) // ec3400008065 + CMPUBLT R5, R6, 0(PC) // ec5600004065 + CMPUBLE R7, R8, 0(PC) // ec780000c065 + CMPUBGT R9, R1, 0(PC) // ec9100002065 + CMPUBGE R2, R3, 0(PC) // ec230000a065 + + CMPUBNE R1, $256, 0(PC) // ec170000007d + CMPUBEQ R3, $0, 0(PC) // ec380000007d + CMPUBLT R5, $256, 0(PC) // ec540000007d + CMPUBLE R7, $0, 0(PC) // ec7c0000007d + CMPUBGT R9, $256, 0(PC) // ec920000007d + CMPUBGE R2, $0, 0(PC) // ec2a0000007d + + CRJ $15, R1, R2, 0(PC) // ec120000f076 + CGRJ $12, R3, R4, 0(PC) // ec340000c064 + CLRJ $3, R5, R6, 0(PC) // ec5600003077 + CLGRJ $0, R7, R8, 0(PC) // ec7800000065 + + CIJ $4, R9, $127, 0(PC) // ec9400007f7e + CGIJ $8, R11, $-128, 0(PC) // ecb80000807c + CLIJ $1, R1, $255, 0(PC) // ec110000ff7f + CLGIJ $2, R3, $0, 0(PC) // ec320000007d + + LGDR F1, R12 // b3cd00c1 + LDGR R2, F15 // b3c100f2 + + CEFBRA R0, F15 // b39400f0 + CDFBRA R1, F14 // b39500e1 + CEGBRA R2, F13 // b3a400d2 + CDGBRA R3, F12 // b3a500c3 + + CELFBR R0, F15 // b39000f0 + CDLFBR R1, F14 // b39100e1 + CELGBR R2, F13 // b3a000d2 + CDLGBR R3, F12 // b3a100c3 + + CFEBRA F15, R1 // b398501f + CFDBRA F14, R2 // b399502e + CGEBRA F13, R3 // b3a8503d + CGDBRA F12, R4 // b3a9504c + + CLFEBR F15, R1 // b39c501f + CLFDBR F14, R2 // b39d502e + CLGEBR F13, R3 // b3ac503d + CLGDBR F12, R4 // b3ad504c + + FMOVS $0, F11 // b37400b0 + FMOVD $0, F12 // b37500c0 + FMOVS (R1)(R2*1), F0 // 78021000 + FMOVS n-8(SP), F15 // 78f0f010 + FMOVD -9999999(R8)(R9*1), F8 // c0a1ff67698141aa9000688a8000 + FMOVD F4, F5 // 2854 + + // RX (12-bit displacement) and RXY (20-bit displacement) instruction encoding (e.g. LD vs LDY) + FMOVD (R1), F0 // 68001000 + FMOVD 4095(R2), F13 // 68d02fff + FMOVD 4096(R2), F15 // edf020000165 + FMOVS 4095(R2)(R3), F13 // 78d32fff + FMOVS 4096(R2)(R4), F15 // edf420000164 + FMOVD F0, 4095(R1) // 60001fff + FMOVD F0, 4096(R1) // ed0010000167 + FMOVS F13, 4095(R2)(R3) // 70d32fff + FMOVS F13, 4096(R2)(R3) // edd320000166 + + FADDS F0, F15 // b30a00f0 + FADD F1, F14 // b31a00e1 + FSUBS F2, F13 // b30b00d2 + FSUB F3, F12 // b31b00c3 + FMULS F4, F11 // b31700b4 + FMUL F5, F10 // b31c00a5 + FDIVS F6, F9 // b30d0096 + FDIV F7, F8 // b31d0087 + FABS F1, F2 // b3100021 + FSQRTS F3, F4 // b3140043 + FSQRT F5, F15 // b31500f5 + FIEBR $0, F0, F1 // b3570010 + FIDBR $7, F2, F3 // b35f7032 + FMADD F1, F1, F1 // b31e1011 + FMADDS F1, F2, F3 // b30e3012 + FMSUB F4, F5, F5 // b31f5045 + FMSUBS F6, F6, F7 // b30f7066 + LPDFR F1, F2 // b3700021 + LNDFR F3, F4 // b3710043 + CPSDR F5, F6, F7 // b3725076 + LTEBR F1, F2 // b3020021 + LTDBR F3, F4 // b3120043 + TCEB F5, $8 // ed5000080010 + TCDB F15, $4095 // edf00fff0011 + + UNDEF // 00000000 + NOPH // 0700 + + SYNC // 07e0 + + // vector add and sub instructions + VAB V3, V4, V4 // e743400000f3 + VAH V3, V4, V4 // e743400010f3 + VAF V3, V4, V4 // e743400020f3 + VAG V3, V4, V4 // e743400030f3 + VAQ V3, V4, V4 // e743400040f3 + VAB V1, V2 // e721200000f3 + VAH V1, V2 // e721200010f3 + VAF V1, V2 // e721200020f3 + VAG V1, V2 // e721200030f3 + VAQ V1, V2 // e721200040f3 + VSB V3, V4, V4 // e744300000f7 + VSH V3, V4, V4 // e744300010f7 + VSF V3, V4, V4 // e744300020f7 + VSG V3, V4, V4 // e744300030f7 + VSQ V3, V4, V4 // e744300040f7 + VSB V1, V2 // e722100000f7 + VSH V1, V2 // e722100010f7 + VSF V1, V2 // e722100020f7 + VSG V1, V2 // e722100030f7 + VSQ V1, V2 // e722100040f7 + + VCEQB V1, V3, V3 // e731300000f8 + VL (R15), V1 // e710f0000006 + VST V1, (R15) // e710f000000e + VL (R15), V31 // e7f0f0000806 + VST V31, (R15) // e7f0f000080e + VESLB $5, V14 // e7ee00050030 + VESRAG $0, V15, V16 // e70f0000383a + VLM (R15), V8, V23 // e787f0000436 + VSTM V8, V23, (R15) // e787f000043e + VONE V1 // e710ffff0044 + VZERO V16 // e70000000844 + VGBM $52428, V31 // e7f0cccc0844 + VREPIB $255, V4 // e74000ff0045 + VREPIH $-1, V16 // e700ffff1845 + VREPIF $-32768, V0 // e70080002045 + VREPIG $32767, V31 // e7f07fff3845 + VREPG $1, V4, V16 // e7040001384d + VREPB $4, V31, V1 // e71f0004044d + VFTCIDB $4095, V1, V2 // e721fff0304a + WFTCIDB $3276, V15, V16 // e70fccc8384a + VPOPCT V8, V19 // e73800000850 + VFEEZBS V1, V2, V31 // e7f120300880 + WFCHDBS V22, V23, V4 // e746701836eb + VMNH V1, V2, V30 // e7e1200018fe + VERLLVF V2, V30, V27 // e7be20002c73 + VSCBIB V0, V23, V24 // e78700000cf5 + VN V2, V1, V0 // e70210000068 + VNC V2, V1, V0 // e70210000069 + VO V2, V1, V0 // e7021000006a + VX V2, V1, V0 // e7021000006d + VN V16, V1 // e71010000468 + VNC V16, V1 // e71010000469 + VO V16, V1 // e7101000046a + VX V16, V1 // e7101000046d + VNOT V16, V1 // e7101000046b + VCLZF V16, V17 // e71000002c53 + VLVGP R3, R4, V8 // e78340000062 + VGEG $1, 8(R15)(V30*1), V31 // e7fef0081c12 + VSCEG $1, V31, 16(R15)(V30*1) // e7fef0101c1a + VGEF $0, 2048(R15)(V1*1), V2 // e721f8000013 + VSCEF $0, V2, 4095(R15)(V1*1) // e721ffff001b + VLL R0, (R15), V1 // e710f0000037 + VSTL R0, V16, (R15) // e700f000083f + VGMH $8, $16, V12 // e7c008101046 + VLEIB $15, $255, V0 // e70000fff040 + VLEIH $7, $-32768, V15 // e7f080007041 + VLEIF $2, $-43, V16 // e700ffd52843 + VLEIG $1, $32767, V31 // e7f07fff1842 + VSLDB $3, V1, V16, V18 // e72100030a77 + VERIMB $2, V31, V1, V2 // e72f10020472 + VSEL V1, V2, V3, V4 // e7412000308d + VGFMAH V21, V31, V24, V0 // e705f10087bc + VFMADB V16, V8, V9, V10 // e7a08300948f + WFMADB V17, V18, V19, V20 // e74123083f8f + VFMSDB V2, V25, V24, V31 // e7f293008b8e + WFMSDB V31, V2, V3, V4 // e74f2308348e + VPERM V31, V0, V2, V3 // e73f0000248c + VPDI $1, V2, V31, V1 // e712f0001284 + VLEG $1, (R3), V1 // e71030001002 + VLEF $2, (R0), V31 // e7f000002803 + VLEH $3, (R12), V16 // e700c0003801 + VLEB $15, 4095(R9), V15 // e7f09ffff000 + VSTEG $1, V30, (R1)(R2*1) // e7e21000180a + VSTEF $3, V2, (R9) // e7209000300b + VSTEH $7, V31, (R2) // e7f020007809 + VSTEB $15, V29, 4094(R12) // e7d0cffef808 + VMSLG V21, V22, V23, V24 // e78563007fb8 + VMSLEG V21, V22, V23, V24 // e78563807fb8 + VMSLOG V21, V22, V23, V24 // e78563407fb8 + VMSLEOG V21, V22, V23, V24 // e78563c07fb8 + VSUMGH V1, V2, V3 // e73120001065 + VSUMGF V16, V17, V18 // e72010002e65 + VSUMQF V4, V5, V6 // e76450002067 + VSUMQG V19, V20, V21 // e75340003e67 + VSUMB V7, V8, V9 // e79780000064 + VSUMH V22, V23, V24 // e78670001e64 + + RET + RET foo(SB) + +TEXT main·init(SB),DUPOK|NOSPLIT,$0 // TEXT main.init(SB), DUPOK|NOSPLIT, $0 + RET + +TEXT main·main(SB),DUPOK|NOSPLIT,$0 // TEXT main.main(SB), DUPOK|NOSPLIT, $0 + BL main·foo(SB) // CALL main.foo(SB) + RET |