Handle 16 byte HFA fields in arm64 profiler (#40482)
authorAndy Ayers <andya@microsoft.com>
Fri, 7 Aug 2020 16:05:39 +0000 (09:05 -0700)
committerGitHub <noreply@github.com>
Fri, 7 Aug 2020 16:05:39 +0000 (09:05 -0700)
Fixes #40277.

src/coreclr/src/vm/arm64/profiler.cpp

index ba35eb1..2b6a2e6 100644 (file)
@@ -260,12 +260,17 @@ LPVOID ProfileArgIterator::GetReturnBufferAddr(void)
                     *(UINT32*)dest = *(UINT32*)&pData->floatArgumentRegisters.q[floatRegIdx];
                     dest += 4;
                 }
-                else
+                else if (hfaFieldSize == 8)
                 {
-                    _ASSERTE(hfaFieldSize == 8);
                     *(UINT64*)dest = *(UINT64*)&pData->floatArgumentRegisters.q[floatRegIdx];
                     dest += 8;
                 }
+                else
+                {
+                    _ASSERTE(hfaFieldSize == 16);
+                    *(NEON128*)dest = pData->floatArgumentRegisters.q[floatRegIdx];
+                    dest += 16;
+                }
 
                 if (floatRegIdx > 8)
                 {