This is an attept to start cleaning up the messy compiler intrinsics situation. Today we don't have a core intrinsics library, resulting in everybody creating their own. ArmPkg has one, CryptoPkg has one. I'm sure there are many more.
This doesn't make sense. Given we can't avoid compiler intrinsics (as proven by the existence of those libraries) we should better have them as core library so we have to maintain a single version only. Given we already have BaseIoLibIntrinsic in MdePkg we can place the compiler intrinsics there too. This little patch series does just that: It moves over the existing ArmPkg intrinsics, fixes them to build on non-arm too, and adds additional bits from the CryptoPkg intrinsics. take care, Gerd Gerd Hoffmann (3): MdePkg: promote CompilerIntrinsicsLib from ArmPkg to MdePkg MdePkg/CompilerIntrinsicsLib: fix msft sources for x64 MdePkg/CompilerIntrinsicsLib: move ia32 intrinsics and strcmp ArmVirtPkg/ArmVirt.dsc.inc | 4 +- .../UnitTestFrameworkPkgTarget.dsc.inc | 2 +- ArmPkg/ArmPkg.dsc | 3 +- .../ArmCrashDumpDxe/ArmCrashDumpDxe.dsc | 2 +- ArmPlatformPkg/ArmPlatformPkg.dsc | 2 +- CryptoPkg/CryptoPkg.dsc | 5 +- DynamicTablesPkg/DynamicTablesPkg.dsc | 2 +- EmbeddedPkg/EmbeddedPkg.dsc | 2 +- EmulatorPkg/EmulatorPkg.dsc | 2 +- FatPkg/FatPkg.dsc | 2 +- FmpDevicePkg/FmpDevicePkg.dsc | 4 +- MdeModulePkg/MdeModulePkg.dsc | 2 +- MdePkg/MdePkg.dsc | 1 + NetworkPkg/NetworkPkg.dsc | 4 +- OvmfPkg/AmdSev/AmdSevX64.dsc | 2 +- OvmfPkg/Bhyve/BhyveX64.dsc | 2 +- OvmfPkg/CloudHv/CloudHvX64.dsc | 2 +- OvmfPkg/Microvm/MicrovmX64.dsc | 2 +- OvmfPkg/OvmfPkgIa32.dsc | 2 +- OvmfPkg/OvmfPkgIa32X64.dsc | 2 +- OvmfPkg/OvmfPkgX64.dsc | 2 +- OvmfPkg/OvmfXen.dsc | 2 +- RedfishPkg/RedfishPkg.dsc | 2 +- SecurityPkg/SecurityPkg.dsc | 12 +-- ShellPkg/ShellPkg.dsc | 2 +- SignedCapsulePkg/SignedCapsulePkg.dsc | 14 ++-- StandaloneMmPkg/StandaloneMmPkg.dsc | 2 +- UefiPayloadPkg/UefiPayloadPkg.dsc | 2 +- .../Library/IntrinsicLib/IntrinsicLib.inf | 67 ---------------- .../CompilerIntrinsicsLib.inf | 15 +++- {ArmPkg => MdePkg}/Include/AsmMacroIoLib.h | 0 CryptoPkg/Library/IntrinsicLib/CopyMem.c | 47 ----------- .../Library/IntrinsicLib/MemoryIntrinsics.c | 74 ------------------ .../CompilerIntrinsicsLib}/Ia32/MathFtol.c | 0 .../Ia32/MathLShiftS64.c | 0 .../Ia32/MathRShiftU64.c | 0 .../Library/CompilerIntrinsicsLib/memcmp_ms.c | 2 +- .../Library/CompilerIntrinsicsLib/memcpy.c | 0 .../Library/CompilerIntrinsicsLib/memcpy_ms.c | 2 +- .../CompilerIntrinsicsLib/memmove_ms.c | 2 +- .../Library/CompilerIntrinsicsLib/memset.c | 0 .../Library/CompilerIntrinsicsLib/memset_ms.c | 2 +- MdePkg/Library/CompilerIntrinsicsLib/strcmp.c | 33 ++++++++ ArmPkg/ArmPkg.ci.yaml | 1 - .../DEBUG_XCODE31/CompilerIntrinsicsLib.lib | Bin 36072 -> 36072 bytes .../DEBUG_XCODE32/CompilerIntrinsicsLib.lib | Bin 36072 -> 36072 bytes .../Library/IntrinsicLib/BaseIntrinsicLib.uni | 16 ---- .../CompilerIntrinsicsLib/AArch64/Atomics.S | 0 .../CompilerIntrinsicsLib/Arm/ashldi3.S | 0 .../CompilerIntrinsicsLib/Arm/ashrdi3.S | 0 .../CompilerIntrinsicsLib/Arm/clzsi2.S | 0 .../CompilerIntrinsicsLib/Arm/ctzsi2.S | 0 .../Library/CompilerIntrinsicsLib/Arm/div.S | 0 .../Library/CompilerIntrinsicsLib/Arm/div.asm | 0 .../CompilerIntrinsicsLib/Arm/divdi3.S | 0 .../CompilerIntrinsicsLib/Arm/divsi3.S | 0 .../Library/CompilerIntrinsicsLib/Arm/lasr.S | 0 .../CompilerIntrinsicsLib/Arm/lasr.asm | 0 .../CompilerIntrinsicsLib/Arm/ldivmod.S | 0 .../CompilerIntrinsicsLib/Arm/ldivmod.asm | 0 .../Library/CompilerIntrinsicsLib/Arm/llsl.S | 0 .../CompilerIntrinsicsLib/Arm/llsl.asm | 0 .../Library/CompilerIntrinsicsLib/Arm/llsr.S | 0 .../CompilerIntrinsicsLib/Arm/llsr.asm | 0 .../CompilerIntrinsicsLib/Arm/lshrdi3.S | 0 .../CompilerIntrinsicsLib/Arm/memmove.S | 0 .../CompilerIntrinsicsLib/Arm/memmove.asm | 0 .../CompilerIntrinsicsLib/Arm/moddi3.S | 0 .../CompilerIntrinsicsLib/Arm/modsi3.S | 0 .../CompilerIntrinsicsLib/Arm/muldi3.S | 0 .../Library/CompilerIntrinsicsLib/Arm/mullu.S | 0 .../CompilerIntrinsicsLib/Arm/mullu.asm | 0 .../CompilerIntrinsicsLib/Arm/sourcery.S | 0 .../CompilerIntrinsicsLib/Arm/switch.asm | 0 .../CompilerIntrinsicsLib/Arm/switch16.S | 0 .../CompilerIntrinsicsLib/Arm/switch32.S | 0 .../CompilerIntrinsicsLib/Arm/switch8.S | 0 .../CompilerIntrinsicsLib/Arm/switchu8.S | 0 .../CompilerIntrinsicsLib/Arm/ucmpdi2.S | 0 .../CompilerIntrinsicsLib/Arm/udivdi3.S | 0 .../CompilerIntrinsicsLib/Arm/udivmoddi4.S | 0 .../CompilerIntrinsicsLib/Arm/udivsi3.S | 0 .../Library/CompilerIntrinsicsLib/Arm/uldiv.S | 0 .../CompilerIntrinsicsLib/Arm/uldiv.asm | 0 .../CompilerIntrinsicsLib/Arm/umoddi3.S | 0 .../CompilerIntrinsicsLib/Arm/umodsi3.S | 0 .../Library/CompilerIntrinsicsLib/Arm/uread.S | 0 .../CompilerIntrinsicsLib/Arm/uread.asm | 0 .../CompilerIntrinsicsLib/Arm/uwrite.S | 0 .../CompilerIntrinsicsLib/Arm/uwrite.asm | 0 .../Ia32/MathLShiftS64.nasm | 0 .../Ia32/MathRShiftU64.nasm | 0 MdePkg/MdePkg.ci.yaml | 1 + 93 files changed, 95 insertions(+), 254 deletions(-) delete mode 100644 CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf rename {ArmPkg => MdePkg}/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf (84%) rename {ArmPkg => MdePkg}/Include/AsmMacroIoLib.h (100%) delete mode 100644 CryptoPkg/Library/IntrinsicLib/CopyMem.c delete mode 100644 CryptoPkg/Library/IntrinsicLib/MemoryIntrinsics.c rename {CryptoPkg/Library/IntrinsicLib => MdePkg/Library/CompilerIntrinsicsLib}/Ia32/MathFtol.c (100%) rename {CryptoPkg/Library/IntrinsicLib => MdePkg/Library/CompilerIntrinsicsLib}/Ia32/MathLShiftS64.c (100%) rename {CryptoPkg/Library/IntrinsicLib => MdePkg/Library/CompilerIntrinsicsLib}/Ia32/MathRShiftU64.c (100%) rename {ArmPkg => MdePkg}/Library/CompilerIntrinsicsLib/memcmp_ms.c (89%) rename {ArmPkg => MdePkg}/Library/CompilerIntrinsicsLib/memcpy.c (100%) rename {ArmPkg => MdePkg}/Library/CompilerIntrinsicsLib/memcpy_ms.c (89%) rename {ArmPkg => MdePkg}/Library/CompilerIntrinsicsLib/memmove_ms.c (90%) rename {ArmPkg => MdePkg}/Library/CompilerIntrinsicsLib/memset.c (100%) rename {ArmPkg => MdePkg}/Library/CompilerIntrinsicsLib/memset_ms.c (89%) create mode 100644 MdePkg/Library/CompilerIntrinsicsLib/strcmp.c delete mode 100644 CryptoPkg/Library/IntrinsicLib/BaseIntrinsicLib.uni rename {ArmPkg => MdePkg}/Library/CompilerIntrinsicsLib/AArch64/Atomics.S (100%) rename {ArmPkg => MdePkg}/Library/CompilerIntrinsicsLib/Arm/ashldi3.S (100%) rename {ArmPkg => MdePkg}/Library/CompilerIntrinsicsLib/Arm/ashrdi3.S (100%) rename {ArmPkg => MdePkg}/Library/CompilerIntrinsicsLib/Arm/clzsi2.S (100%) rename {ArmPkg => MdePkg}/Library/CompilerIntrinsicsLib/Arm/ctzsi2.S (100%) rename {ArmPkg => MdePkg}/Library/CompilerIntrinsicsLib/Arm/div.S (100%) rename {ArmPkg => MdePkg}/Library/CompilerIntrinsicsLib/Arm/div.asm (100%) rename {ArmPkg => MdePkg}/Library/CompilerIntrinsicsLib/Arm/divdi3.S (100%) rename {ArmPkg => MdePkg}/Library/CompilerIntrinsicsLib/Arm/divsi3.S (100%) rename {ArmPkg => MdePkg}/Library/CompilerIntrinsicsLib/Arm/lasr.S (100%) rename {ArmPkg => MdePkg}/Library/CompilerIntrinsicsLib/Arm/lasr.asm (100%) rename {ArmPkg => MdePkg}/Library/CompilerIntrinsicsLib/Arm/ldivmod.S (100%) rename {ArmPkg => MdePkg}/Library/CompilerIntrinsicsLib/Arm/ldivmod.asm (100%) rename {ArmPkg => MdePkg}/Library/CompilerIntrinsicsLib/Arm/llsl.S (100%) rename {ArmPkg => MdePkg}/Library/CompilerIntrinsicsLib/Arm/llsl.asm (100%) rename {ArmPkg => MdePkg}/Library/CompilerIntrinsicsLib/Arm/llsr.S (100%) rename {ArmPkg => MdePkg}/Library/CompilerIntrinsicsLib/Arm/llsr.asm (100%) rename {ArmPkg => MdePkg}/Library/CompilerIntrinsicsLib/Arm/lshrdi3.S (100%) rename {ArmPkg => MdePkg}/Library/CompilerIntrinsicsLib/Arm/memmove.S (100%) rename {ArmPkg => MdePkg}/Library/CompilerIntrinsicsLib/Arm/memmove.asm (100%) rename {ArmPkg => MdePkg}/Library/CompilerIntrinsicsLib/Arm/moddi3.S (100%) rename {ArmPkg => MdePkg}/Library/CompilerIntrinsicsLib/Arm/modsi3.S (100%) rename {ArmPkg => MdePkg}/Library/CompilerIntrinsicsLib/Arm/muldi3.S (100%) rename {ArmPkg => MdePkg}/Library/CompilerIntrinsicsLib/Arm/mullu.S (100%) rename {ArmPkg => MdePkg}/Library/CompilerIntrinsicsLib/Arm/mullu.asm (100%) rename {ArmPkg => MdePkg}/Library/CompilerIntrinsicsLib/Arm/sourcery.S (100%) rename {ArmPkg => MdePkg}/Library/CompilerIntrinsicsLib/Arm/switch.asm (100%) rename {ArmPkg => MdePkg}/Library/CompilerIntrinsicsLib/Arm/switch16.S (100%) rename {ArmPkg => MdePkg}/Library/CompilerIntrinsicsLib/Arm/switch32.S (100%) rename {ArmPkg => MdePkg}/Library/CompilerIntrinsicsLib/Arm/switch8.S (100%) rename {ArmPkg => MdePkg}/Library/CompilerIntrinsicsLib/Arm/switchu8.S (100%) rename {ArmPkg => MdePkg}/Library/CompilerIntrinsicsLib/Arm/ucmpdi2.S (100%) rename {ArmPkg => MdePkg}/Library/CompilerIntrinsicsLib/Arm/udivdi3.S (100%) rename {ArmPkg => MdePkg}/Library/CompilerIntrinsicsLib/Arm/udivmoddi4.S (100%) rename {ArmPkg => MdePkg}/Library/CompilerIntrinsicsLib/Arm/udivsi3.S (100%) rename {ArmPkg => MdePkg}/Library/CompilerIntrinsicsLib/Arm/uldiv.S (100%) rename {ArmPkg => MdePkg}/Library/CompilerIntrinsicsLib/Arm/uldiv.asm (100%) rename {ArmPkg => MdePkg}/Library/CompilerIntrinsicsLib/Arm/umoddi3.S (100%) rename {ArmPkg => MdePkg}/Library/CompilerIntrinsicsLib/Arm/umodsi3.S (100%) rename {ArmPkg => MdePkg}/Library/CompilerIntrinsicsLib/Arm/uread.S (100%) rename {ArmPkg => MdePkg}/Library/CompilerIntrinsicsLib/Arm/uread.asm (100%) rename {ArmPkg => MdePkg}/Library/CompilerIntrinsicsLib/Arm/uwrite.S (100%) rename {ArmPkg => MdePkg}/Library/CompilerIntrinsicsLib/Arm/uwrite.asm (100%) rename {CryptoPkg/Library/IntrinsicLib => MdePkg/Library/CompilerIntrinsicsLib}/Ia32/MathLShiftS64.nasm (100%) rename {CryptoPkg/Library/IntrinsicLib => MdePkg/Library/CompilerIntrinsicsLib}/Ia32/MathRShiftU64.nasm (100%) -- 2.35.1 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#87130): https://edk2.groups.io/g/devel/message/87130 Mute This Topic: https://groups.io/mt/89471210/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-