// 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 }