cmd/internal/obj/loong64: change to get the opcodes of assembly instructions from a map

Change-Id: I0b481bea96d78d931070a96c392fb329195d17de
Reviewed-on: https://go-review.googlesource.com/c/go/+/748380
Reviewed-by: abner chenc <chenguoqi@loongson.cn>
Reviewed-by: David Chase <drchase@google.com>
Reviewed-by: Russ Cox <rsc@golang.org>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
This commit is contained in:
limeidan
2026-02-05 19:23:22 +08:00
committed by abner chenc
parent 03d9d24404
commit de0d77c6f8
2 changed files with 951 additions and 1748 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,917 @@
// Copyright 2026 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.
package loong64
import (
"cmd/internal/obj"
)
var oprrrr = map[obj.As]uint32{
AFMADDF: 0x81 << 20, // fmadd.s
AFMADDD: 0x82 << 20, // fmadd.d
AFMSUBF: 0x85 << 20, // fmsub.s
AFMSUBD: 0x86 << 20, // fmsub.d
AFNMADDF: 0x89 << 20, // fnmadd.f
AFNMADDD: 0x8a << 20, // fnmadd.d
AFNMSUBF: 0x8d << 20, // fnmsub.s
AFNMSUBD: 0x8e << 20, // fnmsub.d
AVSHUFB: 0x0d5 << 20, // vshuf.b
AXVSHUFB: 0x0d6 << 20, // xvshuf.b
}
var oprrr = map[obj.As]uint32{
AADD: 0x20 << 15, // add.w
AADDW: 0x20 << 15, // add.w
AADDV: 0x21 << 15, // add.d
AADDVU: 0x21 << 15, // add.d
ASUB: 0x22 << 15, // sub.w
ASUBW: 0x22 << 15, // sub.w
ANEGW: 0x22 << 15, // sub.w
ASUBV: 0x23 << 15, // sub.d
ASUBVU: 0x23 << 15, // sub.d
ANEGV: 0x23 << 15, // sub.d
ASGT: 0x24 << 15, // slt
ASGTU: 0x25 << 15, // sltu
AMASKEQZ: 0x26 << 15, // maskeqz
AMASKNEZ: 0x27 << 15, // masknez
ANOR: 0x28 << 15, // nor
AAND: 0x29 << 15, // and
AOR: 0x2a << 15, // or
AXOR: 0x2b << 15, // xor
AORN: 0x2c << 15, // orn
AANDN: 0x2d << 15, // andn
ASLL: 0x2e << 15, // sll.w
ASRL: 0x2f << 15, // srl.w
ASRA: 0x30 << 15, // sra.w
ASLLV: 0x31 << 15, // sll.d
ASRLV: 0x32 << 15, // srl.d
ASRAV: 0x33 << 15, // sra.d
AROTR: 0x36 << 15, // rotr.w
AROTRV: 0x37 << 15, // rotr.d
AMUL: 0x38 << 15, // mul.w
AMULW: 0x38 << 15, // mul.w
AMULH: 0x39 << 15, // mulh.w
AMULHU: 0x3a << 15, // mulhu.w
AMULV: 0x3b << 15, // mul.d
AMULVU: 0x3b << 15, // mul.d
AMULHV: 0x3c << 15, // mulh.d
AMULHVU: 0x3d << 15, // mulhu.d
AMULWVW: 0x3e << 15, // mulw.d.w
AMULWVWU: 0x3f << 15, // mulw.d.wu
ADIV: 0x40 << 15, // div.w
ADIVW: 0x40 << 15, // div.w
AREM: 0x41 << 15, // mod.w
AREMW: 0x41 << 15, // mod.w
ADIVU: 0x42 << 15, // div.wu
ADIVWU: 0x42 << 15, // div.wu
AREMU: 0x43 << 15, // mod.wu
AREMWU: 0x43 << 15, // mod.wu
ADIVV: 0x44 << 15, // div.d
AREMV: 0x45 << 15, // mod.d
ADIVVU: 0x46 << 15, // div.du
AREMVU: 0x47 << 15, // mod.du
ACRCWBW: 0x48 << 15, // crc.w.b.w
ACRCWHW: 0x49 << 15, // crc.w.h.w
ACRCWWW: 0x4a << 15, // crc.w.w.w
ACRCWVW: 0x4b << 15, // crc.w.d.w
ACRCCWBW: 0x4c << 15, // crcc.w.b.w
ACRCCWHW: 0x4d << 15, // crcc.w.h.w
ACRCCWWW: 0x4e << 15, // crcc.w.w.w
ACRCCWVW: 0x4f << 15, // crcc.w.d.w
AJMP: 0x13 << 26, // jirl r0, rj, 0
AJAL: 0x13<<26 | 1<<0, // jirl r1, rj, 0
AMULF: 0x209 << 15, // fmul.s
AMULD: 0x20a << 15, // fmul.d
ADIVF: 0x20d << 15, // fdiv.s
ADIVD: 0x20e << 15, // fdiv.d
ASUBF: 0x205 << 15, // fsub.s
ASUBD: 0x206 << 15, // fsub.d
AADDF: 0x201 << 15, // fadd.s
AADDD: 0x202 << 15, // fadd.d
ACMPEQF: 0x0c1<<20 | 0x4<<15, // FCMP.CEQ.S
ACMPEQD: 0x0c2<<20 | 0x4<<15, // FCMP.CEQ.D
ACMPGED: 0x0c2<<20 | 0x7<<15, // FCMP.SLE.D
ACMPGEF: 0x0c1<<20 | 0x7<<15, // FCMP.SLE.S
ACMPGTD: 0x0c2<<20 | 0x3<<15, // FCMP.SLT.D
ACMPGTF: 0x0c1<<20 | 0x3<<15, // FCMP.SLT.S
AFMINF: 0x215 << 15, // fmin.s
AFMIND: 0x216 << 15, // fmin.d
AFMAXF: 0x211 << 15, // fmax.s
AFMAXD: 0x212 << 15, // fmax.d
AFMAXAF: 0x219 << 15, // fmaxa.s
AFMAXAD: 0x21a << 15, // fmaxa.d
AFMINAF: 0x21d << 15, // fmina.s
AFMINAD: 0x21e << 15, // fmina.d
AFSCALEBF: 0x221 << 15, // fscaleb.s
AFSCALEBD: 0x222 << 15, // fscaleb.d
AFCOPYSGF: 0x225 << 15, // fcopysign.s
AFCOPYSGD: 0x226 << 15, // fcopysign.d
-AMOVB: 0x07000 << 15, // ldx.b
-AMOVH: 0x07008 << 15, // ldx.h
-AMOVW: 0x07010 << 15, // ldx.w
-AMOVV: 0x07018 << 15, // ldx.d
-AMOVBU: 0x07040 << 15, // ldx.bu
-AMOVHU: 0x07048 << 15, // ldx.hu
-AMOVWU: 0x07050 << 15, // ldx.wu
AMOVB: 0x07020 << 15, // stx.b
AMOVH: 0x07028 << 15, // stx.h
AMOVW: 0x07030 << 15, // stx.w
AMOVV: 0x07038 << 15, // stx.d
-AMOVF: 0x07060 << 15, // fldx.s
-AMOVD: 0x07068 << 15, // fldx.d
AMOVF: 0x07070 << 15, // fstx.s
AMOVD: 0x07078 << 15, // fstx.d
-AVMOVQ: 0x07080 << 15, // vldx
-AXVMOVQ: 0x07090 << 15, // xvldx
AVMOVQ: 0x07088 << 15, // vstx
AXVMOVQ: 0x07098 << 15, // xvstx
AVSEQB: 0x0e000 << 15, // vseq.b
AXVSEQB: 0x0e800 << 15, // xvseq.b
AVSEQH: 0x0e001 << 15, // vseq.h
AXVSEQH: 0x0e801 << 15, // xvseq.h
AVSEQW: 0x0e002 << 15, // vseq.w
AXVSEQW: 0x0e802 << 15, // xvseq.w
AVSEQV: 0x0e003 << 15, // vseq.d
AXVSEQV: 0x0e803 << 15, // xvseq.d
AVSLTB: 0x0e00c << 15, // vslt.b
AVSLTH: 0x0e00d << 15, // vslt.h
AVSLTW: 0x0e00e << 15, // vslt.w
AVSLTV: 0x0e00f << 15, // vslt.d
AVSLTBU: 0x0e010 << 15, // vslt.bu
AVSLTHU: 0x0e011 << 15, // vslt.hu
AVSLTWU: 0x0e012 << 15, // vslt.wu
AVSLTVU: 0x0e013 << 15, // vslt.du
AXVSLTB: 0x0e80c << 15, // xvslt.b
AXVSLTH: 0x0e80d << 15, // xvslt.h
AXVSLTW: 0x0e80e << 15, // xvslt.w
AXVSLTV: 0x0e80f << 15, // xvslt.d
AXVSLTBU: 0x0e810 << 15, // xvslt.bu
AXVSLTHU: 0x0e811 << 15, // xvslt.hu
AXVSLTWU: 0x0e812 << 15, // xvslt.wu
AXVSLTVU: 0x0e813 << 15, // xvslt.du
AVANDV: 0x0e24c << 15, // vand.v
AVORV: 0x0e24d << 15, // vor.v
AVXORV: 0x0e24e << 15, // vxor.v
AVNORV: 0x0e24f << 15, // vnor.v
AVANDNV: 0x0e250 << 15, // vandn.v
AVORNV: 0x0e251 << 15, // vorn.v
AXVANDV: 0x0ea4c << 15, // xvand.v
AXVORV: 0x0ea4d << 15, // xvor.v
AXVXORV: 0x0ea4e << 15, // xvxor.v
AXVNORV: 0x0ea4f << 15, // xvnor.v
AXVANDNV: 0x0ea50 << 15, // xvandn.v
AXVORNV: 0x0ea51 << 15, // xvorn.v
AVDIVB: 0xe1c0 << 15, // vdiv.b
AVDIVH: 0xe1c1 << 15, // vdiv.h
AVDIVW: 0xe1c2 << 15, // vdiv.w
AVDIVV: 0xe1c3 << 15, // vdiv.d
AVMODB: 0xe1c4 << 15, // vmod.b
AVMODH: 0xe1c5 << 15, // vmod.h
AVMODW: 0xe1c6 << 15, // vmod.w
AVMODV: 0xe1c7 << 15, // vmod.d
AVDIVBU: 0xe1c8 << 15, // vdiv.bu
AVDIVHU: 0xe1c9 << 15, // vdiv.hu
AVDIVWU: 0xe1ca << 15, // vdiv.wu
AVDIVVU: 0xe1cb << 15, // vdiv.du
AVMODBU: 0xe1cc << 15, // vmod.bu
AVMODHU: 0xe1cd << 15, // vmod.hu
AVMODWU: 0xe1ce << 15, // vmod.wu
AVMODVU: 0xe1cf << 15, // vmod.du
AXVDIVB: 0xe9c0 << 15, // xvdiv.b
AXVDIVH: 0xe9c1 << 15, // xvdiv.h
AXVDIVW: 0xe9c2 << 15, // xvdiv.w
AXVDIVV: 0xe9c3 << 15, // xvdiv.d
AXVMODB: 0xe9c4 << 15, // xvmod.b
AXVMODH: 0xe9c5 << 15, // xvmod.h
AXVMODW: 0xe9c6 << 15, // xvmod.w
AXVMODV: 0xe9c7 << 15, // xvmod.d
AXVDIVBU: 0xe9c8 << 15, // xvdiv.bu
AXVDIVHU: 0xe9c9 << 15, // xvdiv.hu
AXVDIVWU: 0xe9ca << 15, // xvdiv.wu
AXVDIVVU: 0xe9cb << 15, // xvdiv.du
AXVMODBU: 0xe9cc << 15, // xvmod.bu
AXVMODHU: 0xe9cd << 15, // xvmod.hu
AXVMODWU: 0xe9ce << 15, // xvmod.wu
AXVMODVU: 0xe9cf << 15, // xvmod.du
AVMULWEVHB: 0xe120 << 15, // vmulwev.h.b
AVMULWEVWH: 0xe121 << 15, // vmulwev.w.h
AVMULWEVVW: 0xe122 << 15, // vmulwev.d.w
AVMULWEVQV: 0xe123 << 15, // vmulwev.q.d
AVMULWODHB: 0xe124 << 15, // vmulwod.h.b
AVMULWODWH: 0xe125 << 15, // vmulwod.w.h
AVMULWODVW: 0xe126 << 15, // vmulwod.d.w
AVMULWODQV: 0xe127 << 15, // vmulwod.q.d
AVMULWEVHBU: 0xe130 << 15, // vmulwev.h.bu
AVMULWEVWHU: 0xe131 << 15, // vmulwev.w.hu
AVMULWEVVWU: 0xe132 << 15, // vmulwev.d.wu
AVMULWEVQVU: 0xe133 << 15, // vmulwev.q.du
AVMULWODHBU: 0xe134 << 15, // vmulwod.h.bu
AVMULWODWHU: 0xe135 << 15, // vmulwod.w.hu
AVMULWODVWU: 0xe136 << 15, // vmulwod.d.wu
AVMULWODQVU: 0xe137 << 15, // vmulwod.q.du
AVMULWEVHBUB: 0xe140 << 15, // vmulwev.h.bu.b
AVMULWEVWHUH: 0xe141 << 15, // vmulwev.w.hu.h
AVMULWEVVWUW: 0xe142 << 15, // vmulwev.d.wu.w
AVMULWEVQVUV: 0xe143 << 15, // vmulwev.q.du.d
AVMULWODHBUB: 0xe144 << 15, // vmulwod.h.bu.b
AVMULWODWHUH: 0xe145 << 15, // vmulwod.w.hu.h
AVMULWODVWUW: 0xe146 << 15, // vmulwod.d.wu.w
AVMULWODQVUV: 0xe147 << 15, // vmulwod.q.du.d
AXVMULWEVHB: 0xe920 << 15, // xvmulwev.h.b
AXVMULWEVWH: 0xe921 << 15, // xvmulwev.w.h
AXVMULWEVVW: 0xe922 << 15, // xvmulwev.d.w
AXVMULWEVQV: 0xe923 << 15, // xvmulwev.q.d
AXVMULWODHB: 0xe924 << 15, // xvmulwod.h.b
AXVMULWODWH: 0xe925 << 15, // xvmulwod.w.h
AXVMULWODVW: 0xe926 << 15, // xvmulwod.d.w
AXVMULWODQV: 0xe927 << 15, // xvmulwod.q.d
AXVMULWEVHBU: 0xe930 << 15, // xvmulwev.h.bu
AXVMULWEVWHU: 0xe931 << 15, // xvmulwev.w.hu
AXVMULWEVVWU: 0xe932 << 15, // xvmulwev.d.wu
AXVMULWEVQVU: 0xe933 << 15, // xvmulwev.q.du
AXVMULWODHBU: 0xe934 << 15, // xvmulwod.h.bu
AXVMULWODWHU: 0xe935 << 15, // xvmulwod.w.hu
AXVMULWODVWU: 0xe936 << 15, // xvmulwod.d.wu
AXVMULWODQVU: 0xe937 << 15, // xvmulwod.q.du
AXVMULWEVHBUB: 0xe940 << 15, // xvmulwev.h.bu.b
AXVMULWEVWHUH: 0xe941 << 15, // xvmulwev.w.hu.h
AXVMULWEVVWUW: 0xe942 << 15, // xvmulwev.d.wu.w
AXVMULWEVQVUV: 0xe943 << 15, // xvmulwev.q.du.d
AXVMULWODHBUB: 0xe944 << 15, // xvmulwod.h.bu.b
AXVMULWODWHUH: 0xe945 << 15, // xvmulwod.w.hu.h
AXVMULWODVWUW: 0xe946 << 15, // xvmulwod.d.wu.w
AXVMULWODQVUV: 0xe947 << 15, // xvmulwod.q.du.d
AVADDWEVHB: 0x0e03c << 15, // vaddwev.h.b
AVADDWEVWH: 0x0e03d << 15, // vaddwev.w.h
AVADDWEVVW: 0x0e03e << 15, // vaddwev.d.w
AVADDWEVQV: 0x0e03f << 15, // vaddwev.q.d
AVSUBWEVHB: 0x0e040 << 15, // vsubwev.h.b
AVSUBWEVWH: 0x0e041 << 15, // vsubwev.w.h
AVSUBWEVVW: 0x0e042 << 15, // vsubwev.d.w
AVSUBWEVQV: 0x0e043 << 15, // vsubwev.q.d
AVADDWODHB: 0x0e044 << 15, // vaddwod.h.b
AVADDWODWH: 0x0e045 << 15, // vaddwod.w.h
AVADDWODVW: 0x0e046 << 15, // vaddwod.d.w
AVADDWODQV: 0x0e047 << 15, // vaddwod.q.d
AVSUBWODHB: 0x0e048 << 15, // vsubwod.h.b
AVSUBWODWH: 0x0e049 << 15, // vsubwod.w.h
AVSUBWODVW: 0x0e04a << 15, // vsubwod.d.w
AVSUBWODQV: 0x0e04b << 15, // vsubwod.q.d
AXVADDWEVHB: 0x0e83c << 15, // xvaddwev.h.b
AXVADDWEVWH: 0x0e83d << 15, // xvaddwev.w.h
AXVADDWEVVW: 0x0e83e << 15, // xvaddwev.d.w
AXVADDWEVQV: 0x0e83f << 15, // xvaddwev.q.d
AXVSUBWEVHB: 0x0e840 << 15, // xvsubwev.h.b
AXVSUBWEVWH: 0x0e841 << 15, // xvsubwev.w.h
AXVSUBWEVVW: 0x0e842 << 15, // xvsubwev.d.w
AXVSUBWEVQV: 0x0e843 << 15, // xvsubwev.q.d
AXVADDWODHB: 0x0e844 << 15, // xvaddwod.h.b
AXVADDWODWH: 0x0e845 << 15, // xvaddwod.w.h
AXVADDWODVW: 0x0e846 << 15, // xvaddwod.d.w
AXVADDWODQV: 0x0e847 << 15, // xvaddwod.q.d
AXVSUBWODHB: 0x0e848 << 15, // xvsubwod.h.b
AXVSUBWODWH: 0x0e849 << 15, // xvsubwod.w.h
AXVSUBWODVW: 0x0e84a << 15, // xvsubwod.d.w
AXVSUBWODQV: 0x0e84b << 15, // xvsubwod.q.d
AVADDWEVHBU: 0x0e05c << 15, // vaddwev.h.bu
AVADDWEVWHU: 0x0e05e << 15, // vaddwev.w.hu
AVADDWEVVWU: 0x0e05e << 15, // vaddwev.d.wu
AVADDWEVQVU: 0x0e05f << 15, // vaddwev.q.du
AVSUBWEVHBU: 0x0e060 << 15, // vsubwev.h.bu
AVSUBWEVWHU: 0x0e061 << 15, // vsubwev.w.hu
AVSUBWEVVWU: 0x0e062 << 15, // vsubwev.d.wu
AVSUBWEVQVU: 0x0e063 << 15, // vsubwev.q.du
AVADDWODHBU: 0x0e064 << 15, // vaddwod.h.bu
AVADDWODWHU: 0x0e065 << 15, // vaddwod.w.hu
AVADDWODVWU: 0x0e066 << 15, // vaddwod.d.wu
AVADDWODQVU: 0x0e067 << 15, // vaddwod.q.du
AVSUBWODHBU: 0x0e068 << 15, // vsubwod.h.bu
AVSUBWODWHU: 0x0e069 << 15, // vsubwod.w.hu
AVSUBWODVWU: 0x0e06a << 15, // vsubwod.d.wu
AVSUBWODQVU: 0x0e06b << 15, // vsubwod.q.du
AXVADDWEVHBU: 0x0e85c << 15, // xvaddwev.h.bu
AXVADDWEVWHU: 0x0e85d << 15, // xvaddwev.w.hu
AXVADDWEVVWU: 0x0e85e << 15, // xvaddwev.d.wu
AXVADDWEVQVU: 0x0e85f << 15, // xvaddwev.q.du
AXVSUBWEVHBU: 0x0e860 << 15, // xvsubwev.h.bu
AXVSUBWEVWHU: 0x0e861 << 15, // xvsubwev.w.hu
AXVSUBWEVVWU: 0x0e862 << 15, // xvsubwev.d.wu
AXVSUBWEVQVU: 0x0e863 << 15, // xvsubwev.q.du
AXVADDWODHBU: 0x0e864 << 15, // xvaddwod.h.bu
AXVADDWODWHU: 0x0e865 << 15, // xvaddwod.w.hu
AXVADDWODVWU: 0x0e866 << 15, // xvaddwod.d.wu
AXVADDWODQVU: 0x0e867 << 15, // xvaddwod.q.du
AXVSUBWODHBU: 0x0e868 << 15, // xvsubwod.h.bu
AXVSUBWODWHU: 0x0e869 << 15, // xvsubwod.w.hu
AXVSUBWODVWU: 0x0e86a << 15, // xvsubwod.d.wu
AXVSUBWODQVU: 0x0e86b << 15, // xvsubwod.q.du
AVMADDB: 0x0e150 << 15, // vmadd.b
AVMADDH: 0x0e151 << 15, // vmadd.h
AVMADDW: 0x0e152 << 15, // vmadd.w
AVMADDV: 0x0e153 << 15, // vmadd.d
AVMSUBB: 0x0e154 << 15, // vmsub.b
AVMSUBH: 0x0e155 << 15, // vmsub.h
AVMSUBW: 0x0e156 << 15, // vmsub.w
AVMSUBV: 0x0e157 << 15, // vmsub.d
AXVMADDB: 0x0e950 << 15, // xvmadd.b
AXVMADDH: 0x0e951 << 15, // xvmadd.h
AXVMADDW: 0x0e952 << 15, // xvmadd.w
AXVMADDV: 0x0e953 << 15, // xvmadd.d
AXVMSUBB: 0x0e954 << 15, // xvmsub.b
AXVMSUBH: 0x0e955 << 15, // xvmsub.h
AXVMSUBW: 0x0e956 << 15, // xvmsub.w
AXVMSUBV: 0x0e957 << 15, // xvmsub.d
AVMADDWEVHB: 0x0e158 << 15, // vmaddwev.h.b
AVMADDWEVWH: 0x0e159 << 15, // vmaddwev.w.h
AVMADDWEVVW: 0x0e15a << 15, // vmaddwev.d.w
AVMADDWEVQV: 0x0e15b << 15, // vmaddwev.q.d
AVMADDWODHB: 0x0e15c << 15, // vmaddwov.h.b
AVMADDWODWH: 0x0e15d << 15, // vmaddwod.w.h
AVMADDWODVW: 0x0e15e << 15, // vmaddwod.d.w
AVMADDWODQV: 0x0e15f << 15, // vmaddwod.q.d
AVMADDWEVHBU: 0x0e168 << 15, // vmaddwev.h.bu
AVMADDWEVWHU: 0x0e169 << 15, // vmaddwev.w.hu
AVMADDWEVVWU: 0x0e16a << 15, // vmaddwev.d.wu
AVMADDWEVQVU: 0x0e16b << 15, // vmaddwev.q.du
AVMADDWODHBU: 0x0e16c << 15, // vmaddwov.h.bu
AVMADDWODWHU: 0x0e16d << 15, // vmaddwod.w.hu
AVMADDWODVWU: 0x0e16e << 15, // vmaddwod.d.wu
AVMADDWODQVU: 0x0e16f << 15, // vmaddwod.q.du
AVMADDWEVHBUB: 0x0e178 << 15, // vmaddwev.h.bu.b
AVMADDWEVWHUH: 0x0e179 << 15, // vmaddwev.w.hu.h
AVMADDWEVVWUW: 0x0e17a << 15, // vmaddwev.d.wu.w
AVMADDWEVQVUV: 0x0e17b << 15, // vmaddwev.q.du.d
AVMADDWODHBUB: 0x0e17c << 15, // vmaddwov.h.bu.b
AVMADDWODWHUH: 0x0e17d << 15, // vmaddwod.w.hu.h
AVMADDWODVWUW: 0x0e17e << 15, // vmaddwod.d.wu.w
AVMADDWODQVUV: 0x0e17f << 15, // vmaddwod.q.du.d
AXVMADDWEVHB: 0x0e958 << 15, // xvmaddwev.h.b
AXVMADDWEVWH: 0x0e959 << 15, // xvmaddwev.w.h
AXVMADDWEVVW: 0x0e95a << 15, // xvmaddwev.d.w
AXVMADDWEVQV: 0x0e95b << 15, // xvmaddwev.q.d
AXVMADDWODHB: 0x0e95c << 15, // xvmaddwov.h.b
AXVMADDWODWH: 0x0e95d << 15, // xvmaddwod.w.h
AXVMADDWODVW: 0x0e95e << 15, // xvmaddwod.d.w
AXVMADDWODQV: 0x0e95f << 15, // xvmaddwod.q.d
AXVMADDWEVHBU: 0x0e968 << 15, // xvmaddwev.h.bu
AXVMADDWEVWHU: 0x0e969 << 15, // xvmaddwev.w.hu
AXVMADDWEVVWU: 0x0e96a << 15, // xvmaddwev.d.wu
AXVMADDWEVQVU: 0x0e96b << 15, // xvmaddwev.q.du
AXVMADDWODHBU: 0x0e96c << 15, // xvmaddwov.h.bu
AXVMADDWODWHU: 0x0e96d << 15, // xvmaddwod.w.hu
AXVMADDWODVWU: 0x0e96e << 15, // xvmaddwod.d.wu
AXVMADDWODQVU: 0x0e96f << 15, // xvmaddwod.q.du
AXVMADDWEVHBUB: 0x0e978 << 15, // xvmaddwev.h.bu.b
AXVMADDWEVWHUH: 0x0e979 << 15, // xvmaddwev.w.hu.h
AXVMADDWEVVWUW: 0x0e97a << 15, // xvmaddwev.d.wu.w
AXVMADDWEVQVUV: 0x0e97b << 15, // xvmaddwev.q.du.d
AXVMADDWODHBUB: 0x0e97c << 15, // xvmaddwov.h.bu.b
AXVMADDWODWHUH: 0x0e97d << 15, // xvmaddwod.w.hu.h
AXVMADDWODVWUW: 0x0e97e << 15, // xvmaddwod.d.wu.w
AXVMADDWODQVUV: 0x0e97f << 15, // xvmaddwod.q.du.d
AVSLLB: 0xe1d0 << 15, // vsll.b
AVSLLH: 0xe1d1 << 15, // vsll.h
AVSLLW: 0xe1d2 << 15, // vsll.w
AVSLLV: 0xe1d3 << 15, // vsll.d
AVSRLB: 0xe1d4 << 15, // vsrl.b
AVSRLH: 0xe1d5 << 15, // vsrl.h
AVSRLW: 0xe1d6 << 15, // vsrl.w
AVSRLV: 0xe1d7 << 15, // vsrl.d
AVSRAB: 0xe1d8 << 15, // vsra.b
AVSRAH: 0xe1d9 << 15, // vsra.h
AVSRAW: 0xe1da << 15, // vsra.w
AVSRAV: 0xe1db << 15, // vsra.d
AVROTRB: 0xe1dc << 15, // vrotr.b
AVROTRH: 0xe1dd << 15, // vrotr.h
AVROTRW: 0xe1de << 15, // vrotr.w
AVROTRV: 0xe1df << 15, // vrotr.d
AXVSLLB: 0xe9d0 << 15, // xvsll.b
AXVSLLH: 0xe9d1 << 15, // xvsll.h
AXVSLLW: 0xe9d2 << 15, // xvsll.w
AXVSLLV: 0xe9d3 << 15, // xvsll.d
AXVSRLB: 0xe9d4 << 15, // xvsrl.b
AXVSRLH: 0xe9d5 << 15, // xvsrl.h
AXVSRLW: 0xe9d6 << 15, // xvsrl.w
AXVSRLV: 0xe9d7 << 15, // xvsrl.d
AXVSRAB: 0xe9d8 << 15, // xvsra.b
AXVSRAH: 0xe9d9 << 15, // xvsra.h
AXVSRAW: 0xe9da << 15, // xvsra.w
AXVSRAV: 0xe9db << 15, // xvsra.d
AXVROTRB: 0xe9dc << 15, // xvrotr.b
AXVROTRH: 0xe9dd << 15, // xvrotr.h
AXVROTRW: 0xe9de << 15, // xvrotr.w
AXVROTRV: 0xe9df << 15, // xvrotr.d
AVADDB: 0xe014 << 15, // vadd.b
AVADDH: 0xe015 << 15, // vadd.h
AVADDW: 0xe016 << 15, // vadd.w
AVADDV: 0xe017 << 15, // vadd.d
AVADDQ: 0xe25a << 15, // vadd.q
AVSUBB: 0xe018 << 15, // vsub.b
AVSUBH: 0xe019 << 15, // vsub.h
AVSUBW: 0xe01a << 15, // vsub.w
AVSUBV: 0xe01b << 15, // vsub.d
AVSUBQ: 0xe25b << 15, // vsub.q
AXVADDB: 0xe814 << 15, // xvadd.b
AXVADDH: 0xe815 << 15, // xvadd.h
AXVADDW: 0xe816 << 15, // xvadd.w
AXVADDV: 0xe817 << 15, // xvadd.d
AXVADDQ: 0xea5a << 15, // xvadd.q
AXVSUBB: 0xe818 << 15, // xvsub.b
AXVSUBH: 0xe819 << 15, // xvsub.h
AXVSUBW: 0xe81a << 15, // xvsub.w
AXVSUBV: 0xe81b << 15, // xvsub.d
AXVSUBQ: 0xea5b << 15, // xvsub.q
AVSADDB: 0x0e08c << 15, // vsadd.b
AVSADDH: 0x0e08d << 15, // vsadd.h
AVSADDW: 0x0e08e << 15, // vsadd.w
AVSADDV: 0x0e08f << 15, // vsadd.d
AVSSUBB: 0x0e090 << 15, // vssub.b
AVSSUBH: 0x0e091 << 15, // vssub.w
AVSSUBW: 0x0e092 << 15, // vssub.h
AVSSUBV: 0x0e093 << 15, // vssub.d
AVSADDBU: 0x0e094 << 15, // vsadd.bu
AVSADDHU: 0x0e095 << 15, // vsadd.hu
AVSADDWU: 0x0e096 << 15, // vsadd.wu
AVSADDVU: 0x0e097 << 15, // vsadd.du
AVSSUBBU: 0x0e098 << 15, // vssub.bu
AVSSUBHU: 0x0e099 << 15, // vssub.wu
AVSSUBWU: 0x0e09a << 15, // vssub.hu
AVSSUBVU: 0x0e09b << 15, // vssub.du
AXVSADDB: 0x0e88c << 15, // vxsadd.b
AXVSADDH: 0x0e88d << 15, // vxsadd.h
AXVSADDW: 0x0e88e << 15, // vxsadd.w
AXVSADDV: 0x0e88f << 15, // vxsadd.d
AXVSSUBB: 0x0e890 << 15, // xvssub.b
AXVSSUBH: 0x0e891 << 15, // xvssub.h
AXVSSUBW: 0x0e892 << 15, // xvssub.w
AXVSSUBV: 0x0e893 << 15, // xvssub.d
AXVSADDBU: 0x0e894 << 15, // vxsadd.bu
AXVSADDHU: 0x0e896 << 15, // vxsadd.hu
AXVSADDWU: 0x0e896 << 15, // vxsadd.wu
AXVSADDVU: 0x0e897 << 15, // vxsadd.du
AXVSSUBBU: 0x0e898 << 15, // xvssub.bu
AXVSSUBHU: 0x0e899 << 15, // xvssub.hu
AXVSSUBWU: 0x0e89a << 15, // xvssub.wu
AXVSSUBVU: 0x0e89b << 15, // xvssub.du
AVILVLB: 0xe234 << 15, // vilvl.b
AVILVLH: 0xe235 << 15, // vilvl.h
AVILVLW: 0xe236 << 15, // vilvl.w
AVILVLV: 0xe237 << 15, // vilvl.d
AVILVHB: 0xe238 << 15, // vilvh.b
AVILVHH: 0xe239 << 15, // vilvh.h
AVILVHW: 0xe23a << 15, // vilvh.w
AVILVHV: 0xe23b << 15, // vilvh.d
AXVILVLB: 0xea34 << 15, // xvilvl.b
AXVILVLH: 0xea35 << 15, // xvilvl.h
AXVILVLW: 0xea36 << 15, // xvilvl.w
AXVILVLV: 0xea37 << 15, // xvilvl.d
AXVILVHB: 0xea38 << 15, // xvilvh.b
AXVILVHH: 0xea39 << 15, // xvilvh.h
AXVILVHW: 0xea3a << 15, // xvilvh.w
AXVILVHV: 0xea3b << 15, // xvilvh.d
AVMULB: 0xe108 << 15, // vmul.b
AVMULH: 0xe109 << 15, // vmul.h
AVMULW: 0xe10a << 15, // vmul.w
AVMULV: 0xe10b << 15, // vmul.d
AVMUHB: 0xe10c << 15, // vmuh.b
AVMUHH: 0xe10d << 15, // vmuh.h
AVMUHW: 0xe10e << 15, // vmuh.w
AVMUHV: 0xe10f << 15, // vmuh.d
AVMUHBU: 0xe110 << 15, // vmuh.bu
AVMUHHU: 0xe111 << 15, // vmuh.hu
AVMUHWU: 0xe112 << 15, // vmuh.wu
AVMUHVU: 0xe113 << 15, // vmuh.du
AXVMULB: 0xe908 << 15, // xvmul.b
AXVMULH: 0xe909 << 15, // xvmul.h
AXVMULW: 0xe90a << 15, // xvmul.w
AXVMULV: 0xe90b << 15, // xvmul.d
AXVMUHB: 0xe90c << 15, // xvmuh.b
AXVMUHH: 0xe90d << 15, // xvmuh.h
AXVMUHW: 0xe90e << 15, // xvmuh.w
AXVMUHV: 0xe90f << 15, // xvmuh.d
AXVMUHBU: 0xe910 << 15, // xvmuh.bu
AXVMUHHU: 0xe911 << 15, // xvmuh.hu
AXVMUHWU: 0xe912 << 15, // xvmuh.wu
AXVMUHVU: 0xe913 << 15, // xvmuh.du
AVADDF: 0xe261 << 15, // vfadd.s
AVADDD: 0xe262 << 15, // vfadd.d
AVSUBF: 0xe265 << 15, // vfsub.s
AVSUBD: 0xe266 << 15, // vfsub.d
AVMULF: 0xe271 << 15, // vfmul.s
AVMULD: 0xe272 << 15, // vfmul.d
AVDIVF: 0xe275 << 15, // vfdiv.s
AVDIVD: 0xe276 << 15, // vfdiv.d
AXVADDF: 0xea61 << 15, // xvfadd.s
AXVADDD: 0xea62 << 15, // xvfadd.d
AXVSUBF: 0xea65 << 15, // xvfsub.s
AXVSUBD: 0xea66 << 15, // xvfsub.d
AXVMULF: 0xea71 << 15, // xvfmul.s
AXVMULD: 0xea72 << 15, // xvfmul.d
AXVDIVF: 0xea75 << 15, // xvfdiv.s
AXVDIVD: 0xea76 << 15, // xvfdiv.d
AVBITCLRB: 0xe218 << 15, // vbitclr.b
AVBITCLRH: 0xe219 << 15, // vbitclr.h
AVBITCLRW: 0xe21a << 15, // vbitclr.w
AVBITCLRV: 0xe21b << 15, // vbitclr.d
AVBITSETB: 0xe21c << 15, // vbitset.b
AVBITSETH: 0xe21d << 15, // vbitset.h
AVBITSETW: 0xe21e << 15, // vbitset.w
AVBITSETV: 0xe21f << 15, // vbitset.d
AVBITREVB: 0xe220 << 15, // vbitrev.b
AVBITREVH: 0xe221 << 15, // vbitrev.h
AVBITREVW: 0xe222 << 15, // vbitrev.w
AVBITREVV: 0xe223 << 15, // vbitrev.d
AXVBITCLRB: 0xea18 << 15, // xvbitclr.b
AXVBITCLRH: 0xea19 << 15, // xvbitclr.h
AXVBITCLRW: 0xea1a << 15, // xvbitclr.w
AXVBITCLRV: 0xea1b << 15, // xvbitclr.d
AXVBITSETB: 0xea1c << 15, // xvbitset.b
AXVBITSETH: 0xea1d << 15, // xvbitset.h
AXVBITSETW: 0xea1e << 15, // xvbitset.w
AXVBITSETV: 0xea1f << 15, // xvbitset.d
AXVBITREVB: 0xea20 << 15, // xvbitrev.b
AXVBITREVH: 0xea21 << 15, // xvbitrev.h
AXVBITREVW: 0xea22 << 15, // xvbitrev.w
AXVBITREVV: 0xea23 << 15, // xvbitrev.d
AVSHUFH: 0x0e2f5 << 15, // vshuf.h
AVSHUFW: 0x0e2f6 << 15, // vshuf.w
AVSHUFV: 0x0e2f7 << 15, // vshuf.d
AXVSHUFH: 0x0eaf5 << 15, // xvshuf.h
AXVSHUFW: 0x0eaf6 << 15, // xvshuf.w
AXVSHUFV: 0x0eaf7 << 15, // xvshuf.d
}
var oprr = map[obj.As]uint32{
ACLOW: 0x4 << 10, // clo.w
ACLZW: 0x5 << 10, // clz.w
ACTOW: 0x6 << 10, // cto.w
ACTZW: 0x7 << 10, // ctz.w
ACLOV: 0x8 << 10, // clo.d
ACLZV: 0x9 << 10, // clz.d
ACTOV: 0xa << 10, // cto.d
ACTZV: 0xb << 10, // ctz.d
AREVB2H: 0xc << 10, // revb.2h
AREVB4H: 0xd << 10, // revb.4h
AREVB2W: 0xe << 10, // revb.2w
AREVBV: 0xf << 10, // revb.d
AREVH2W: 0x10 << 10, // revh.2w
AREVHV: 0x11 << 10, // revh.d
ABITREV4B: 0x12 << 10, // bitrev.4b
ABITREV8B: 0x13 << 10, // bitrev.8b
ABITREVW: 0x14 << 10, // bitrev.w
ABITREVV: 0x15 << 10, // bitrev.d
AEXTWH: 0x16 << 10, // ext.w.h
AEXTWB: 0x17 << 10, // ext.w.h
ACPUCFG: 0x1b << 10, // cpucfg
ARDTIMELW: 0x18 << 10, // rdtimel.w
ARDTIMEHW: 0x19 << 10, // rdtimeh.w
ARDTIMED: 0x1a << 10, // rdtime.d
ATRUNCFV: 0x46a9 << 10, // ftintrz.l.s
ATRUNCDV: 0x46aa << 10, // ftintrz.l.d
ATRUNCFW: 0x46a1 << 10, // ftintrz.w.s
ATRUNCDW: 0x46a2 << 10, // ftintrz.w.d
AMOVWF: 0x4744 << 10, // ffint.s.w
AFFINTFW: 0x4744 << 10, // ffint.s.w
AMOVVF: 0x4746 << 10, // ffint.s.l
AFFINTFV: 0x4746 << 10, // ffint.s.l
AMOVWD: 0x4748 << 10, // ffint.d.w
AFFINTDW: 0x4748 << 10, // ffint.d.w
AMOVVD: 0x474a << 10, // ffint.d.l
AFFINTDV: 0x474a << 10, // ffint.d.l
AMOVFW: 0x46c1 << 10, // ftint.w.s
AFTINTWF: 0x46c1 << 10, // ftint.w.s
AMOVDW: 0x46c2 << 10, // ftint.w.d
AFTINTWD: 0x46c2 << 10, // ftint.w.d
AMOVFV: 0x46c9 << 10, // ftint.l.s
AFTINTVF: 0x46c9 << 10, // ftint.l.s
AMOVDV: 0x46ca << 10, // ftint.l.d
AFTINTVD: 0x46ca << 10, // ftint.l.d
AMOVDF: 0x4646 << 10, // fcvt.s.d
AMOVFD: 0x4649 << 10, // fcvt.d.s
AABSF: 0x4501 << 10, // fabs.s
AABSD: 0x4502 << 10, // fabs.d
AMOVF: 0x4525 << 10, // fmov.s
AMOVD: 0x4526 << 10, // fmov.d
ANEGF: 0x4505 << 10, // fneg.s
ANEGD: 0x4506 << 10, // fneg.d
ASQRTF: 0x4511 << 10, // fsqrt.s
ASQRTD: 0x4512 << 10, // fsqrt.d
AFLOGBF: 0x4509 << 10, // flogb.s
AFLOGBD: 0x450a << 10, // flogb.d
AFCLASSF: 0x450d << 10, // fclass.s
AFCLASSD: 0x450e << 10, // fclass.d
AFTINTRMWF: 0x4681 << 10, // ftintrm.w.s
AFTINTRMWD: 0x4682 << 10, // ftintrm.w.d
AFTINTRMVF: 0x4689 << 10, // ftintrm.l.s
AFTINTRMVD: 0x468a << 10, // ftintrm.l.d
AFTINTRPWF: 0x4691 << 10, // ftintrp.w.s
AFTINTRPWD: 0x4692 << 10, // ftintrp.w.d
AFTINTRPVF: 0x4699 << 10, // ftintrp.l.s
AFTINTRPVD: 0x469a << 10, // ftintrp.l.d
AFTINTRZWF: 0x46a1 << 10, // ftintrz.w.s
AFTINTRZWD: 0x46a2 << 10, // ftintrz.w.d
AFTINTRZVF: 0x46a9 << 10, // ftintrz.l.s
AFTINTRZVD: 0x46aa << 10, // ftintrz.l.d
AFTINTRNEWF: 0x46b1 << 10, // ftintrne.w.s
AFTINTRNEWD: 0x46b2 << 10, // ftintrne.w.d
AFTINTRNEVF: 0x46b9 << 10, // ftintrne.l.s
AFTINTRNEVD: 0x46ba << 10, // ftintrne.l.d
AVPCNTB: 0x1ca708 << 10, // vpcnt.b
AVPCNTH: 0x1ca709 << 10, // vpcnt.h
AVPCNTW: 0x1ca70a << 10, // vpcnt.w
AVPCNTV: 0x1ca70b << 10, // vpcnt.v
AXVPCNTB: 0x1da708 << 10, // xvpcnt.b
AXVPCNTH: 0x1da709 << 10, // xvpcnt.h
AXVPCNTW: 0x1da70a << 10, // xvpcnt.w
AXVPCNTV: 0x1da70b << 10, // xvpcnt.v
AVFSQRTF: 0x1ca739 << 10, // vfsqrt.s
AVFSQRTD: 0x1ca73a << 10, // vfsqrt.d
AVFRECIPF: 0x1ca73d << 10, // vfrecip.s
AVFRECIPD: 0x1ca73e << 10, // vfrecip.d
AVFRSQRTF: 0x1ca741 << 10, // vfrsqrt.s
AVFRSQRTD: 0x1ca742 << 10, // vfrsqrt.d
AXVFSQRTF: 0x1da739 << 10, // xvfsqrt.s
AXVFSQRTD: 0x1da73a << 10, // xvfsqrt.d
AXVFRECIPF: 0x1da73d << 10, // xvfrecip.s
AXVFRECIPD: 0x1da73e << 10, // xvfrecip.d
AXVFRSQRTF: 0x1da741 << 10, // xvfrsqrt.s
AXVFRSQRTD: 0x1da742 << 10, // xvfrsqrt.d
AVNEGB: 0x1ca70c << 10, // vneg.b
AVNEGH: 0x1ca70d << 10, // vneg.h
AVNEGW: 0x1ca70e << 10, // vneg.w
AVNEGV: 0x1ca70f << 10, // vneg.d
AXVNEGB: 0x1da70c << 10, // xvneg.b
AXVNEGH: 0x1da70d << 10, // xvneg.h
AXVNEGW: 0x1da70e << 10, // xvneg.w
AXVNEGV: 0x1da70f << 10, // xvneg.d
AVFRINTRNEF: 0x1ca75d << 10, // vfrintrne.s
AVFRINTRNED: 0x1ca75e << 10, // vfrintrne.d
AVFRINTRZF: 0x1ca759 << 10, // vfrintrz.s
AVFRINTRZD: 0x1ca75a << 10, // vfrintrz.d
AVFRINTRPF: 0x1ca755 << 10, // vfrintrp.s
AVFRINTRPD: 0x1ca756 << 10, // vfrintrp.d
AVFRINTRMF: 0x1ca751 << 10, // vfrintrm.s
AVFRINTRMD: 0x1ca752 << 10, // vfrintrm.d
AVFRINTF: 0x1ca74d << 10, // vfrint.s
AVFRINTD: 0x1ca74e << 10, // vfrint.d
AXVFRINTRNEF: 0x1da75d << 10, // xvfrintrne.s
AXVFRINTRNED: 0x1da75e << 10, // xvfrintrne.d
AXVFRINTRZF: 0x1da759 << 10, // xvfrintrz.s
AXVFRINTRZD: 0x1da75a << 10, // xvfrintrz.d
AXVFRINTRPF: 0x1da755 << 10, // xvfrintrp.s
AXVFRINTRPD: 0x1da756 << 10, // xvfrintrp.d
AXVFRINTRMF: 0x1da751 << 10, // xvfrintrm.s
AXVFRINTRMD: 0x1da752 << 10, // xvfrintrm.d
AXVFRINTF: 0x1da74d << 10, // xvfrint.s
AXVFRINTD: 0x1da74e << 10, // xvfrint.d
AVFCLASSF: 0x1ca735 << 10, // vfclass.s
AVFCLASSD: 0x1ca736 << 10, // vfclass.d
AXVFCLASSF: 0x1da735 << 10, // xvfclass.s
AXVFCLASSD: 0x1da736 << 10, // xvfclass.d
AVSETEQV: 0x1ca726<<10 | 0x0<<3, // vseteqz.v
AVSETNEV: 0x1ca727<<10 | 0x0<<3, // vsetnez.v
AVSETANYEQB: 0x1ca728<<10 | 0x0<<3, // vsetanyeqz.b
AVSETANYEQH: 0x1ca729<<10 | 0x0<<3, // vsetanyeqz.h
AVSETANYEQW: 0x1ca72a<<10 | 0x0<<3, // vsetanyeqz.w
AVSETANYEQV: 0x1ca72b<<10 | 0x0<<3, // vsetanyeqz.d
AVSETALLNEB: 0x1ca72c<<10 | 0x0<<3, // vsetallnez.b
AVSETALLNEH: 0x1ca72d<<10 | 0x0<<3, // vsetallnez.h
AVSETALLNEW: 0x1ca72e<<10 | 0x0<<3, // vsetallnez.w
AVSETALLNEV: 0x1ca72f<<10 | 0x0<<3, // vsetallnez.d
AXVSETEQV: 0x1da726<<10 | 0x0<<3, // xvseteqz.v
AXVSETNEV: 0x1da727<<10 | 0x0<<3, // xvsetnez.v
AXVSETANYEQB: 0x1da728<<10 | 0x0<<3, // xvsetanyeqz.b
AXVSETANYEQH: 0x1da729<<10 | 0x0<<3, // xvsetanyeqz.h
AXVSETANYEQW: 0x1da72a<<10 | 0x0<<3, // xvsetanyeqz.w
AXVSETANYEQV: 0x1da72b<<10 | 0x0<<3, // xvsetanyeqz.d
AXVSETALLNEB: 0x1da72c<<10 | 0x0<<3, // xvsetallnez.b
AXVSETALLNEH: 0x1da72d<<10 | 0x0<<3, // xvsetallnez.h
AXVSETALLNEW: 0x1da72e<<10 | 0x0<<3, // xvsetallnez.w
AXVSETALLNEV: 0x1da72f<<10 | 0x0<<3, // xvsetallnez.d
}
var opi = map[obj.As]uint32{
ASYSCALL: 0x56 << 15, // syscall
ABREAK: 0x54 << 15, // break
ADBAR: 0x70e4 << 15, // dbar
}
var opir = map[obj.As]uint32{
ALU12IW: 0x0a << 25, // lu12i.w
ALU32ID: 0x0b << 25, // lu32i.d
APCALAU12I: 0x0d << 25, // pcalau12i
APCADDU12I: 0x0e << 25, // pcaddu12i
}
var opirr = map[obj.As]uint32{
ASGT: 0x008 << 22, // slti
ASGTU: 0x009 << 22, // sltui
AADD: 0x00a << 22, // addi.w
AADDW: 0x00a << 22, // addi.w
AADDV: 0x00b << 22, // addi.d
AADDVU: 0x00b << 22, // addi.d
ALU52ID: 0x00c << 22, // lu52i.d
AAND: 0x00d << 22, // andi
AOR: 0x00e << 22, // ori
AXOR: 0x00f << 22, // xori
ASLL: 0x00081 << 15, // slli.w
ASRL: 0x00089 << 15, // srli.w
ASRA: 0x00091 << 15, // srai.w
AROTR: 0x00099 << 15, // rotri.w
AADDV16: 0x4 << 26, // addu16i.d
-ABEQ: 0x10 << 26, // beqz
-ABNE: 0x11 << 26, // bnez
AJIRL: 0x13 << 26, // jirl
AJMP: 0x14 << 26, // b
AJAL: 0x15 << 26, // bl
ABEQ: 0x16 << 26, // beq
ABNE: 0x17 << 26, // bne
ABLT: 0x18 << 26, // blt
ABLTZ: 0x18 << 26, // blt
ABGTZ: 0x18 << 26, // blt
ABGE: 0x19 << 26, // bge
ABGEZ: 0x19 << 26, // bge
ABLEZ: 0x19 << 26, // bge
ABLTU: 0x1a << 26, // bltu
ABGEU: 0x1b << 26, // bgeu
ABFPT: 0x12<<26 | 0x1<<8, // bcnez
ABFPF: 0x12<<26 | 0x0<<8, // bceqz
APRELDX: 0x07058 << 15, // preldx
-AMOVB: 0x0a0 << 22, // ld.b
-AMOVH: 0x0a1 << 22, // ld.h
-AMOVW: 0x0a2 << 22, // ld.w
-AMOVV: 0x0a3 << 22, // ld.d
AMOVB: 0x0a4 << 22, // st.b
AMOVBU: 0x0a4 << 22, // st.b
AMOVH: 0x0a5 << 22, // st.h
AMOVHU: 0x0a5 << 22, // st.h
AMOVW: 0x0a6 << 22, // st.w
AMOVWU: 0x0a6 << 22, // st.w
AMOVV: 0x0a7 << 22, // st.d
-AMOVBU: 0x0a8 << 22, // ld.bu
-AMOVHU: 0x0a9 << 22, // ld.hu
-AMOVWU: 0x0aa << 22, // ld.wu
-AMOVF: 0x0ac << 22, // fld.s
AMOVF: 0x0ad << 22, // fst.s
-AMOVD: 0x0ae << 22, // fld.d
AMOVD: 0x0af << 22, // fst.d
-ALL: 0x020 << 24, // ll.w
ASC: 0x021 << 24, // sc.w
-ALLV: 0x022 << 24, // ll.d
ASCV: 0x023 << 24, // sc.d
-AMOVWP: 0x24 << 24, // ldptr.w
AMOVWP: 0x25 << 24, // stptr.w
-AMOVVP: 0x26 << 24, // ldptr.d
AMOVVP: 0x27 << 24, // stptr.d
-AVMOVQ: 0x0b0 << 22, // vld
AVMOVQ: 0x0b1 << 22, // vst
-AXVMOVQ: 0x0b2 << 22, // xvld
AXVMOVQ: 0x0b3 << 22, // xvst
ASLLV: 0x0041 << 16, // slli.d
ASRLV: 0x0045 << 16, // srli.d
ASRAV: 0x0049 << 16, // srai.d
AROTRV: 0x004d << 16, // rotri.d
AVANDB: 0x1cf4 << 18, // vandi.b
AVORB: 0x1cf5 << 18, // vori.b
AVXORB: 0x1cf6 << 18, // xori.b
AVNORB: 0x1cf7 << 18, // xnori.b
AXVANDB: 0x1df4 << 18, // xvandi.b
AXVORB: 0x1df5 << 18, // xvori.b
AXVXORB: 0x1df6 << 18, // xvxori.b
AXVNORB: 0x1df7 << 18, // xvnor.b
AVSEQB: 0x0e500 << 15, // vseqi.b
AVSEQH: 0x0e501 << 15, // vseqi.h
AVSEQW: 0x0e502 << 15, // vseqi.w
AVSEQV: 0x0e503 << 15, // vseqi.d
AXVSEQB: 0x0ed00 << 15, // xvseqi.b
AXVSEQH: 0x0ed01 << 15, // xvseqi.h
AXVSEQW: 0x0ed02 << 15, // xvseqi.w
AXVSEQV: 0x0ed03 << 15, // xvseqi.d
AVSLTB: 0x0e50c << 15, // vslti.b
AVSLTH: 0x0e50d << 15, // vslti.h
AVSLTW: 0x0e50e << 15, // vslti.w
AVSLTV: 0x0e50f << 15, // vslti.d
AVSLTBU: 0x0e510 << 15, // vslti.bu
AVSLTHU: 0x0e511 << 15, // vslti.hu
AVSLTWU: 0x0e512 << 15, // vslti.wu
AVSLTVU: 0x0e513 << 15, // vslti.du
AXVSLTB: 0x0ed0c << 15, // xvslti.b
AXVSLTH: 0x0ed0d << 15, // xvslti.h
AXVSLTW: 0x0ed0e << 15, // xvslti.w
AXVSLTV: 0x0ed0f << 15, // xvslti.d
AXVSLTBU: 0x0ed10 << 15, // xvslti.bu
AXVSLTHU: 0x0ed11 << 15, // xvslti.hu
AXVSLTWU: 0x0ed12 << 15, // xvslti.wu
AXVSLTVU: 0x0ed13 << 15, // xvslti.du
AVROTRB: 0x1ca8<<18 | 0x1<<13, // vrotri.b
AVROTRH: 0x1ca8<<18 | 0x1<<14, // vrotri.h
AVROTRW: 0x1ca8<<18 | 0x1<<15, // vrotri.w
AVROTRV: 0x1ca8<<18 | 0x1<<16, // vrotri.d
AXVROTRB: 0x1da8<<18 | 0x1<<13, // xvrotri.b
AXVROTRH: 0x1da8<<18 | 0x1<<14, // xvrotri.h
AXVROTRW: 0x1da8<<18 | 0x1<<15, // xvrotri.w
AXVROTRV: 0x1da8<<18 | 0x1<<16, // xvrotri.d
AVSLLB: 0x1ccb<<18 | 0x1<<13, // vslli.b
AVSLLH: 0x1ccb<<18 | 0x1<<14, // vslli.h
AVSLLW: 0x1ccb<<18 | 0x1<<15, // vslli.w
AVSLLV: 0x1ccb<<18 | 0x1<<16, // vslli.d
AVSRLB: 0x1ccc<<18 | 0x1<<13, // vsrli.b
AVSRLH: 0x1ccc<<18 | 0x1<<14, // vsrli.h
AVSRLW: 0x1ccc<<18 | 0x1<<15, // vsrli.w
AVSRLV: 0x1ccc<<18 | 0x1<<16, // vsrli.d
AVSRAB: 0x1ccd<<18 | 0x1<<13, // vsrai.b
AVSRAH: 0x1ccd<<18 | 0x1<<14, // vsrai.h
AVSRAW: 0x1ccd<<18 | 0x1<<15, // vsrai.w
AVSRAV: 0x1ccd<<18 | 0x1<<16, // vsrai.d
AXVSLLB: 0x1dcb<<18 | 0x1<<13, // xvslli.b
AXVSLLH: 0x1dcb<<18 | 0x1<<14, // xvslli.h
AXVSLLW: 0x1dcb<<18 | 0x1<<15, // xvslli.w
AXVSLLV: 0x1dcb<<18 | 0x1<<16, // xvslli.d
AXVSRLB: 0x1dcc<<18 | 0x1<<13, // xvsrli.b
AXVSRLH: 0x1dcc<<18 | 0x1<<14, // xvsrli.h
AXVSRLW: 0x1dcc<<18 | 0x1<<15, // xvsrli.w
AXVSRLV: 0x1dcc<<18 | 0x1<<16, // xvsrli.d
AXVSRAB: 0x1dcd<<18 | 0x1<<13, // xvsrai.b
AXVSRAH: 0x1dcd<<18 | 0x1<<14, // xvsrai.h
AXVSRAW: 0x1dcd<<18 | 0x1<<15, // xvsrai.w
AXVSRAV: 0x1dcd<<18 | 0x1<<16, // xvsrai.d
AVADDBU: 0xe514 << 15, // vaddi.bu
AVADDHU: 0xe515 << 15, // vaddi.hu
AVADDWU: 0xe516 << 15, // vaddi.wu
AVADDVU: 0xe517 << 15, // vaddi.du
AVSUBBU: 0xe518 << 15, // vsubi.bu
AVSUBHU: 0xe519 << 15, // vsubi.hu
AVSUBWU: 0xe51a << 15, // vsubi.wu
AVSUBVU: 0xe51b << 15, // vsubi.du
AXVADDBU: 0xed14 << 15, // xvaddi.bu
AXVADDHU: 0xed15 << 15, // xvaddi.hu
AXVADDWU: 0xed16 << 15, // xvaddi.wu
AXVADDVU: 0xed17 << 15, // xvaddi.du
AXVSUBBU: 0xed18 << 15, // xvsubi.bu
AXVSUBHU: 0xed19 << 15, // xvsubi.hu
AXVSUBWU: 0xed1a << 15, // xvsubi.wu
AXVSUBVU: 0xed1b << 15, // xvsubi.du
AVSHUF4IB: 0x1ce4 << 18, // vshuf4i.b
AVSHUF4IH: 0x1ce5 << 18, // vshuf4i.h
AVSHUF4IW: 0x1ce6 << 18, // vshuf4i.w
AVSHUF4IV: 0x1ce7 << 18, // vshuf4i.d
AXVSHUF4IB: 0x1de4 << 18, // xvshuf4i.b
AXVSHUF4IH: 0x1de5 << 18, // xvshuf4i.h
AXVSHUF4IW: 0x1de6 << 18, // xvshuf4i.w
AXVSHUF4IV: 0x1de7 << 18, // xvshuf4i.d
AVPERMIW: 0x1cf9 << 18, // vpermi.w
AXVPERMIW: 0x1df9 << 18, // xvpermi.w
AXVPERMIV: 0x1dfa << 18, // xvpermi.d
AXVPERMIQ: 0x1dfb << 18, // xvpermi.q
AVEXTRINSB: 0x1ce3 << 18, // vextrins.b
AVEXTRINSH: 0x1ce2 << 18, // vextrins.h
AVEXTRINSW: 0x1ce1 << 18, // vextrins.w
AVEXTRINSV: 0x1ce0 << 18, // vextrins.d
AXVEXTRINSB: 0x1de3 << 18, // xvextrins.b
AXVEXTRINSH: 0x1de2 << 18, // xvextrins.h
AXVEXTRINSW: 0x1de1 << 18, // xvextrins.w
AXVEXTRINSV: 0x1de0 << 18, // xvextrins.d
AVBITCLRB: 0x1cc4<<18 | 0x1<<13, // vbitclri.b
AVBITCLRH: 0x1cc4<<18 | 0x1<<14, // vbitclri.h
AVBITCLRW: 0x1cc4<<18 | 0x1<<15, // vbitclri.w
AVBITCLRV: 0x1cc4<<18 | 0x1<<16, // vbitclri.d
AVBITSETB: 0x1cc5<<18 | 0x1<<13, // vbitseti.b
AVBITSETH: 0x1cc5<<18 | 0x1<<14, // vbitseti.h
AVBITSETW: 0x1cc5<<18 | 0x1<<15, // vbitseti.w
AVBITSETV: 0x1cc5<<18 | 0x1<<16, // vbitseti.d
AVBITREVB: 0x1cc6<<18 | 0x1<<13, // vbitrevi.b
AVBITREVH: 0x1cc6<<18 | 0x1<<14, // vbitrevi.h
AVBITREVW: 0x1cc6<<18 | 0x1<<15, // vbitrevi.w
AVBITREVV: 0x1cc6<<18 | 0x1<<16, // vbitrevi.d
AXVBITCLRB: 0x1dc4<<18 | 0x1<<13, // xvbitclri.b
AXVBITCLRH: 0x1dc4<<18 | 0x1<<14, // xvbitclri.h
AXVBITCLRW: 0x1dc4<<18 | 0x1<<15, // xvbitclri.w
AXVBITCLRV: 0x1dc4<<18 | 0x1<<16, // xvbitclri.d
AXVBITSETB: 0x1dc5<<18 | 0x1<<13, // xvbitseti.b
AXVBITSETH: 0x1dc5<<18 | 0x1<<14, // xvbitseti.h
AXVBITSETW: 0x1dc5<<18 | 0x1<<15, // xvbitseti.w
AXVBITSETV: 0x1dc5<<18 | 0x1<<16, // xvbitseti.d
AXVBITREVB: 0x1dc6<<18 | 0x1<<13, // xvbitrevi.b
AXVBITREVH: 0x1dc6<<18 | 0x1<<14, // xvbitrevi.h
AXVBITREVW: 0x1dc6<<18 | 0x1<<15, // xvbitrevi.w
AXVBITREVV: 0x1dc6<<18 | 0x1<<16, // xvbitrevi.d
}
var opirrr = map[obj.As]uint32{
AALSLW: 0x2 << 17, // alsl.w
AALSLWU: 0x3 << 17, // alsl.wu
AALSLV: 0x16 << 17, // alsl.d
}
var opirir = map[obj.As]uint32{
ABSTRINSW: 0x3<<21 | 0x0<<15, // bstrins.w
ABSTRINSV: 0x2 << 22, // bstrins.d
ABSTRPICKW: 0x3<<21 | 0x1<<15, // bstrpick.w
ABSTRPICKV: 0x3 << 22, // bstrpick.d
}
var opiir = map[obj.As]uint32{
APRELD: 0x0ab << 22, // preld
}