mirror of
https://github.com/golang/go.git
synced 2026-04-04 10:20:00 +09:00
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:
File diff suppressed because it is too large
Load Diff
917
src/cmd/internal/obj/loong64/instOp.go
Normal file
917
src/cmd/internal/obj/loong64/instOp.go
Normal 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
|
||||
}
|
||||
Reference in New Issue
Block a user