XVFRECIPD X2, X1 // 41f89c76
XVFRSQRTF X2, X1 // 41049d76
XVFRSQRTD X2, X1 // 41089d76
+
+ // [X]VNEG{B/H/W/V} instructions
+ VNEGB V1, V2 // 22309c72
+ VNEGH V1, V2 // 22349c72
+ VNEGW V1, V2 // 22389c72
+ VNEGV V1, V2 // 223c9c72
+ XVNEGB X2, X1 // 41309c76
+ XVNEGH X2, X1 // 41349c76
+ XVNEGW X2, X1 // 41389c76
+ XVNEGV X2, X1 // 413c9c76
opset(AVFRECIPD, r0)
opset(AVFRSQRTF, r0)
opset(AVFRSQRTD, r0)
+ opset(AVNEGB, r0)
+ opset(AVNEGH, r0)
+ opset(AVNEGW, r0)
+ opset(AVNEGV, r0)
case AXVPCNTB:
opset(AXVPCNTH, r0)
opset(AXVFRECIPD, r0)
opset(AXVFRSQRTF, r0)
opset(AXVFRSQRTD, r0)
+ opset(AXVNEGB, r0)
+ opset(AXVNEGH, r0)
+ opset(AXVNEGW, r0)
+ opset(AXVNEGV, r0)
case AVADDB:
opset(AVADDH, r0)
return 0x1da741 << 10 // xvfrsqrt.s
case AXVFRSQRTD:
return 0x1da742 << 10 // xvfrsqrt.d
+ case AVNEGB:
+ return 0x1ca70c << 10 // vneg.b
+ case AVNEGH:
+ return 0x1ca70d << 10 // vneg.h
+ case AVNEGW:
+ return 0x1ca70e << 10 // vneg.w
+ case AVNEGV:
+ return 0x1ca70f << 10 // vneg.d
+ case AXVNEGB:
+ return 0x1da70c << 10 // xvneg.b
+ case AXVNEGH:
+ return 0x1da70d << 10 // xvneg.h
+ case AXVNEGW:
+ return 0x1da70e << 10 // xvneg.w
+ case AXVNEGV:
+ return 0x1da70f << 10 // xvneg.d
}
c.ctxt.Diag("bad rr opcode %v", a)