10011011 0 10 Rm 011111 Rn Rd SMULH Xd,Xn,Xm
*/
if (INSN(31,24) == BITS8(1,0,0,1,1,0,1,1)
- && INSN(22,21) == BITS2(1,0) && INSN(15,10) == BITS6(0,1,1,1,1,1)
- && INSN(23,23) == 1/*ATC*/) {
+ && INSN(22,21) == BITS2(1,0) && INSN(15,10) == BITS6(0,1,1,1,1,1)) {
Bool isU = INSN(23,23) == 1;
UInt mm = INSN(20,16);
UInt nn = INSN(9,5);
case ARM64mul_ZX:
*p++ = X_3_8_5_6_5_5(X100, X11011110, mm, X011111, nn, dd);
goto done;
- //case ARM64mul_SX:
- // *p++ = X_3_8_5_6_5_5(X100, X11011010, mm, X011111, nn, dd);
- // goto done;
+ case ARM64mul_SX:
+ *p++ = X_3_8_5_6_5_5(X100, X11011010, mm, X011111, nn, dd);
+ goto done;
case ARM64mul_PLAIN:
*p++ = X_3_8_5_6_5_5(X100, X11011000, mm, X011111, nn, dd);
goto done;
switch (e->Iex.Binop.op) {
/* 64 x 64 -> 128 multiply */
case Iop_MullU64:
- /*case Iop_MullS64:*/ {
+ case Iop_MullS64: {
Bool syned = toBool(e->Iex.Binop.op == Iop_MullS64);
HReg argL = iselIntExpr_R(env, e->Iex.Binop.arg1);
HReg argR = iselIntExpr_R(env, e->Iex.Binop.arg2);