summaryrefslogtreecommitdiff
path: root/MdePkg/Library/CompilerIntrinsicsLib
AgeCommit message (Collapse)AuthorFilesLines
2026-09-11MdePkg/CompilerIntrinsicsLib: Fix IA32 with VS202xMarc Chen4-4/+4
CompilerIntrinsicsLib is causing a #UD when used in IA32 mode. This was tracked back to memcpy using size_t, which locally defined in the file as __int64. When compiling for IA32 target, this results in the memcpy interpreting 64 bits from the calling convention instead of the 32 bits that were passed. Update the local size_t defines to use UINTN. This matches the functionality from CryptoPkg's Intrinsic functions. Add CompilerIntrinsics to IA32/X64 component so it is complied as part of CI. Add size_t as ECC check exclusion to MdePkg.ci.yaml. Signed-off-by: Aaron Pop <aaronpop@microsoft.com>
2026-06-08MdePkg/CompilerIntrinsicsLib: Add LoongArch64 __ashlti3zhubo2-0/+55
GCC may emit a call to __ashlti3 for 128-bit left shifts when compiling code that uses unsigned __int128, such as OpenSSL Curve448 code in CryptoPkg. The LoongArch64 firmware build does not link against libgcc, so provide the helper from CompilerIntrinsicsLib. Implement __ashlti3 using the LoongArch64 ABI: the low and high 64-bit halves are passed in $a0 and $a1, the shift count is passed in $a2, and the result is returned in $a0 and $a1. Cc: Michael D Kinney <michael.d.kinney@intel.com> Cc: Liming Gao <gaoliming@byosoft.com.cn> Cc: Chao Li <lichao@loongson.cn> Signed-off-by: zhubo <zhubo@loongson.cn>
2026-01-15MdePkg: Add PE Target Support to AArch64Oliver Smith-Denny2-2/+22
PE targets do not support the ELF style .type, .size, or .previous directives and have different name mangling, so this commit updates MdePkg AArch64 code to support PE targets. PE targets also don't support the fixup_aarch64_ldr_pcrel_imm19 relocation type, which is created doing ldr <literal>. This introduces a new set of macros, LDR_LIT nad LDR_LIT_TMP, which will use the direct ldr for ELF targets and ADRP/LDR for PE targets, because the ADRP/LDR version requires 4KB alignment, which is guaranteed on CLANGPDB. Signed-off-by: Oliver Smith-Denny <osde@microsoft.com>
2025-09-26MdePkg: Remove ARM32 Support from CompilerIntrinsicsLibOliver Smith-Denny42-2301/+0
edk2 is dropping support for the ARM32 architecture. This commit removes ARM32 code from CompilerIntrinsicsLib. Signed-off-by: Oliver Smith-Denny <osde@microsoft.com>
2024-09-12MdePkg: Move CompilerIntrinsicsLib from ArmPkgOliver Smith-Denny44-0/+2762
As per the emailed RFC in https://edk2.groups.io/g/devel/topic/rfc_move/107675828, this patch moves CompilerIntrinsicsLib from ArmPkg to MdePkg as this library provides compiler intrinsics, which are industry standard. This aligns with the goal of integrating ArmPkg into existing packages: https://bugzilla.tianocore.org/show_bug.cgi?id=4121. The newly placed CompilerIntrinsicsLib is added to MdeLibs.dsc.inc as every DSC that builds ARM/AARCH64 needs this library added. The old location is removed from every DSC in edk2 in this commit also to not break bisectability with minimal hoop jumping. Continuous-integration-options: PatchCheck.ignore-multi-package Signed-off-by: Oliver Smith-Denny <osde@linux.microsoft.com>