From 69b95158e03df204457f57ca4b00fc942fdeb2c9 Mon Sep 17 00:00:00 2001 From: Jakob Botsch Nielsen Date: Mon, 1 Sep 2025 15:04:57 +0200 Subject: [PATCH] JIT: Disallow insertions into SIMD registers for argument passing The backend would produce illegal IR for this case (like SIMD16 <- long bitcasts). --- src/coreclr/jit/lower.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/coreclr/jit/lower.cpp b/src/coreclr/jit/lower.cpp index f8c3a7bc0975e3..2c02c16f04f0e3 100644 --- a/src/coreclr/jit/lower.cpp +++ b/src/coreclr/jit/lower.cpp @@ -5177,6 +5177,14 @@ bool Lowering::IsFieldListCompatibleWithRegisters(GenTreeFieldList* fieldList, return false; } + // All SIMDs insertions are not yet supported + if (varTypeIsSIMD(regType) && ((fieldStart != regStart) || (fieldEnd != regEnd))) + { + JITDUMP("it is not; field [%06u] requires an insertion into SIMD register %u\n", + Compiler::dspTreeID(use->GetNode()), i); + return false; + } + use = use->GetNext(); } while (use != nullptr); }