MOVV R4, R5 // 85001500
MOVBU R4, R5 // 85fc4303
SUB R4, R5, R6 // a6101100
+ SUBW R4, R5, R6 // a6101100
SUBV R4, R5, R6 // a6901100
ADD R4, R5, R6 // a6101000
+ ADDW R4, R5, R6 // a6101000
ADDV R4, R5, R6 // a6901000
AND R4, R5, R6 // a6901400
SUB R4, R5 // a5101100
+ SUBW R4, R5 // a5101100
SUBV R4, R5 // a5901100
ADD R4, R5 // a5101000
+ ADDW R4, R5 // a5101000
ADDV R4, R5 // a5901000
AND R4, R5 // a5901400
NEGW R4, R5 // 05101100
MOVV $1, R4 // 04048003
ADD $-1, R4, R5 // 85fcbf02
ADD $-1, R4 // 84fcbf02
+ ADDW $-1, R4, R5 // 85fcbf02
+ ADDW $-1, R4 // 84fcbf02
ADDV $-1, R4, R5 // 85fcff02
ADDV $-1, R4 // 84fcff02
AND $1, R4, R5 // 85044003
// mul
MUL R4, R5 // a5101c00
MUL R4, R5, R6 // a6101c00
+ MULW R4, R5 // a5101c00
+ MULW R4, R5, R6 // a6101c00
MULV R4, R5 // a5901d00
MULV R4, R5, R6 // a6901d00
MULVU R4, R5 // a5901d00
MULHU R4, R5, R6 // a6101d00
REM R4, R5 // a5902000
REM R4, R5, R6 // a6902000
+ REMW R4, R5 // a5902000
+ REMW R4, R5, R6 // a6902000
REMU R4, R5 // a5902100
REMU R4, R5, R6 // a6902100
+ REMWU R4, R5 // a5902100
+ REMWU R4, R5, R6 // a6902100
DIV R4, R5 // a5102000
DIV R4, R5, R6 // a6102000
+ DIVW R4, R5 // a5102000
+ DIVW R4, R5, R6 // a6102000
DIVU R4, R5 // a5102100
DIVU R4, R5, R6 // a6102100
+ DIVWU R4, R5 // a5102100
+ DIVWU R4, R5, R6 // a6102100
SRLV R4, R5 // a5101900
SRLV R4, R5, R6 // a6101900
SRLV $4, R4, R5 // 85104500
ADD $4096, R4, R5 // 3e00001485781000
ADD $65536, R4 // 1e02001484781000
ADD $4096, R4 // 3e00001484781000
+ ADDW $65536, R4, R5 // 1e02001485781000
+ ADDW $4096, R4, R5 // 3e00001485781000
+ ADDW $65536, R4 // 1e02001484781000
+ ADDW $4096, R4 // 3e00001484781000
ADDV $65536, R4, R5 // 1e02001485f81000
ADDV $4096, R4, R5 // 3e00001485f81000
ADDV $65536, R4 // 1e02001484f81000
MOVV $4096(R4), R5 // 3e000014de03800385f81000
ADD $74565, R4 // 5e020014de178d0384781000
ADD $4097, R4 // 3e000014de07800384781000
+ ADDW $74565, R4 // 5e020014de178d0384781000
+ ADDW $4097, R4 // 3e000014de07800384781000
ADDV $74565, R4 // 5e020014de178d0384f81000
ADDV $4097, R4 // 3e000014de07800384f81000
AND $74565, R4 // 5e020014de178d0384f81400
AND $4097, R4 // 3e000014de07800384f81400
ADD $74565, R4, R5 // 5e020014de178d0385781000
ADD $4097, R4, R5 // 3e000014de07800385781000
+ ADDW $74565, R4, R5 // 5e020014de178d0385781000
+ ADDW $4097, R4, R5 // 3e000014de07800385781000
ADDV $74565, R4, R5 // 5e020014de178d0385f81000
ADDV $4097, R4, R5 // 3e000014de07800385f81000
AND $74565, R4, R5 // 5e020014de178d0385f81400
opset(AFTINTRNEVD, r0)
case AADD:
+ opset(AADDW, r0)
opset(ASGT, r0)
opset(ASGTU, r0)
opset(AADDU, r0)
opset(ABSTRINSV, r0)
case ASUB:
+ opset(ASUBW, r0)
opset(ASUBU, r0)
opset(ANOR, r0)
opset(ASUBV, r0)
opset(ASUBVU, r0)
opset(AMUL, r0)
+ opset(AMULW, r0)
opset(AMULU, r0)
opset(AMULH, r0)
opset(AMULHU, r0)
opset(AREM, r0)
+ opset(AREMW, r0)
opset(AREMU, r0)
+ opset(AREMWU, r0)
opset(ADIV, r0)
+ opset(ADIVW, r0)
opset(ADIVU, r0)
+ opset(ADIVWU, r0)
opset(AMULV, r0)
opset(AMULVU, r0)
opset(AMULHV, r0)
func (c *ctxt0) oprrr(a obj.As) uint32 {
switch a {
- case AADD:
+ case AADD, AADDW:
return 0x20 << 15
case AADDU:
return 0x20 << 15
return 0x2c << 15 // orn
case AANDN:
return 0x2d << 15 // andn
- case ASUB:
+ case ASUB, ASUBW:
return 0x22 << 15
case ASUBU, ANEGW:
return 0x22 << 15
case ASUBVU, ANEGV:
return 0x23 << 15
- case AMUL:
+ case AMUL, AMULW:
return 0x38 << 15 // mul.w
case AMULU:
return 0x38 << 15 // mul.w
return 0x3e << 15 // mulw.d.w
case AMULWVWU:
return 0x3f << 15 // mulw.d.wu
- case ADIV:
+ case ADIV, ADIVW:
return 0x40 << 15 // div.w
- case ADIVU:
+ case ADIVU, ADIVWU:
return 0x42 << 15 // div.wu
case ADIVV:
return 0x44 << 15 // div.d
case ADIVVU:
return 0x46 << 15 // div.du
- case AREM:
+ case AREM, AREMW:
return 0x41 << 15 // mod.w
- case AREMU:
+ case AREMU, AREMWU:
return 0x43 << 15 // mod.wu
case AREMV:
return 0x45 << 15 // mod.d
func (c *ctxt0) opirr(a obj.As) uint32 {
switch a {
- case AADD, AADDU:
+ case AADD, AADDW, AADDU:
return 0x00a << 22
case ASGT:
return 0x008 << 22