Passing -mno-sse alone is not enough: The compiler may still find (questionable) reasons to use MMX insns. In particular with gcc12 use of MOVD+PUNPCKLDQ+MOVQ was observed in an apparent attempt to auto- vectorize the storing of two adjacent zeroes, 32 bits each.
Reported-by: ChrisD <[email protected]> Signed-off-by: Jan Beulich <[email protected]> --- a/xen/arch/x86/arch.mk +++ b/xen/arch/x86/arch.mk @@ -36,9 +36,9 @@ $(call cc-option-add,CFLAGS,CC,-Wa$$(com CFLAGS += -mno-red-zone -fpic -# Xen doesn't use SSE interally. If the compiler supports it, also skip the -# SSE setup for variadic function calls. -CFLAGS += -mno-sse $(call cc-option,$(CC),-mskip-rax-setup) +# Xen doesn't use MMX or SSE interally. If the compiler supports it, also skip +# the SSE setup for variadic function calls. +CFLAGS += -mno-mmx -mno-sse $(call cc-option,$(CC),-mskip-rax-setup) ifeq ($(CONFIG_INDIRECT_THUNK),y) # Compile with gcc thunk-extern, indirect-branch-register if available.
