@@ -1051,6 +1051,12 @@ def CC_X86_64_Preserve_None : CallingConv<[
10511051 CCDelegateTo<CC_X86_64_C>
10521052]>;
10531053
1054+ def CC_X86_32_Preserve_None : CallingConv<[
1055+ // 32-bit variant of CC_X86_64_Preserve_None, above.
1056+ CCIfType<[i32], CCAssignToReg<[EDI, ESI, EDX, ECX, EAX]>>,
1057+ CCDelegateTo<CC_X86_32_C>
1058+ ]>;
1059+
10541060//===----------------------------------------------------------------------===//
10551061// X86 Root Argument Calling Conventions
10561062//===----------------------------------------------------------------------===//
@@ -1072,6 +1078,7 @@ def CC_X86_32 : CallingConv<[
10721078 CCIfCC<"CallingConv::X86_RegCall",
10731079 CCIfSubtarget<"isTargetWin32()", CCIfRegCallv4<CCDelegateTo<CC_X86_32_RegCallv4_Win>>>>,
10741080 CCIfCC<"CallingConv::X86_RegCall", CCDelegateTo<CC_X86_32_RegCall>>,
1081+ CCIfCC<"CallingConv::PreserveNone", CCDelegateTo<CC_X86_32_Preserve_None>>,
10751082
10761083 // Otherwise, drop to normal X86-32 CC
10771084 CCDelegateTo<CC_X86_32_C>
@@ -1187,6 +1194,7 @@ def CSR_64_AllRegs_AVX512 : CalleeSavedRegs<(sub (add CSR_64_MostRegs, RAX,
11871194 (sequence "K%u", 0, 7)),
11881195 (sequence "XMM%u", 0, 15))>;
11891196def CSR_64_NoneRegs : CalleeSavedRegs<(add RBP)>;
1197+ def CSR_32_NoneRegs : CalleeSavedRegs<(add EBP)>;
11901198
11911199// Standard C + YMM6-15
11921200def CSR_Win64_Intel_OCL_BI_AVX : CalleeSavedRegs<(add RBX, RBP, RDI, RSI, R12,
0 commit comments