Fix reading Time zone rules using Julian days (#17672)
[platform/upstream/coreclr.git] / src / jit / emitarm64.cpp
index 1b41280..dfca2cd 100644 (file)
@@ -4316,6 +4316,7 @@ void emitter::emitIns_R_R(
             fmt = IF_DR_2J;
             break;
 
+        case INS_sha256su0:
         case INS_sha1su1:
             assert(isVectorRegister(reg1));
             assert(isVectorRegister(reg2));
@@ -5387,6 +5388,9 @@ void emitter::emitIns_R_R_R(
             fmt = IF_LS_3D;
             break;
 
+        case INS_sha256h:
+        case INS_sha256h2:
+        case INS_sha256su1:
         case INS_sha1su0:
         case INS_sha1c:
         case INS_sha1p:
@@ -7352,6 +7356,16 @@ void emitter::emitIns_Call(EmitCallType          callType,
         {
             savedSet |= RBM_PROFILER_RET_SCRATCH;
         }
+
+#ifdef DEBUG
+        if (emitComp->verbose)
+        {
+            printf("NOGC Call: savedSet=");
+            printRegMaskInt(savedSet);
+            emitDispRegSet(savedSet);
+            printf("\n");
+        }
+#endif
     }
     else
     {
@@ -11438,8 +11452,16 @@ void emitter::emitDispIns(
                 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);