fmt = IF_DR_2J;
break;
+ case INS_sha256su0:
case INS_sha1su1:
assert(isVectorRegister(reg1));
assert(isVectorRegister(reg2));
fmt = IF_LS_3D;
break;
+ case INS_sha256h:
+ case INS_sha256h2:
+ case INS_sha256su1:
case INS_sha1su0:
case INS_sha1c:
case INS_sha1p:
{
savedSet |= RBM_PROFILER_RET_SCRATCH;
}
+
+#ifdef DEBUG
+ if (emitComp->verbose)
+ {
+ printf("NOGC Call: savedSet=");
+ printRegMaskInt(savedSet);
+ emitDispRegSet(savedSet);
+ printf("\n");
+ }
+#endif
}
else
{
emitDispReg(id->idReg2(), EA_4BYTE, true);
emitDispVectorReg(id->idReg3(), id->idInsOpt(), false);
}
- else
+ else if ((ins == INS_sha256h) || (ins == INS_sha256h2))
+ {
+ // Qd Qn Vm (vector)
+ emitDispReg(id->idReg1(), size, true);
+ emitDispReg(id->idReg2(), size, true);
+ emitDispVectorReg(id->idReg3(), id->idInsOpt(), false);
+ }
+ else // INS_sha1su0, INS_sha256su1
{
+ // Vd, Vn, Vm (vector)
emitDispVectorReg(id->idReg1(), id->idInsOpt(), true);
emitDispVectorReg(id->idReg2(), id->idInsOpt(), true);
emitDispVectorReg(id->idReg3(), id->idInsOpt(), false);