From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by mx.groups.io with SMTP id smtpd.web08.4624.1646201594089945506 for ; Tue, 01 Mar 2022 22:13:14 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=HrZ6CIr6; spf=pass (domain: kernel.org, ip: 139.178.84.217, mailfrom: ardb@kernel.org) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 588D2618AC for ; Wed, 2 Mar 2022 06:13:13 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9AA5BC340FC for ; Wed, 2 Mar 2022 06:13:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1646201591; bh=GPDMx+f4qyDONnS55Fs/KCpJKcalfDQtWpXj7AE9/Ps=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From; b=HrZ6CIr6+qkWXKOxR+DrYHCyHbwhOMSBojhSupy8JjTTeyYJ/0ke9rz8XJEHJM0Yl HdgVYnQFiQUqHfsPCuPSCZHYvRwHfzTeYMIg9m9+B14x0VwZo6eLkRzeT9XQ43rRzG L463zS0fXzVZhn4nz+qvIdyU4B+9r9TgnXgjnw9oznNqLjTMh3G1cesWhL1zPsViZC /tN7kyuIptqyigWFKxOwiwvZZ37Z0FceHpAHWUuC8CHnG5qlLVE1htrlRqhkek1iQ+ l45eWFKjKipIgGsmegwn8OVoi6bhwhryEMirnlvhFnOXmnhGXfYEdArdxaJlcGeraF moYtwlz36cRhQ== Received: by mail-yw1-f170.google.com with SMTP id 00721157ae682-2dbd97f9bfcso5598867b3.9 for ; Tue, 01 Mar 2022 22:13:11 -0800 (PST) X-Gm-Message-State: AOAM533HoDPgB+O7+H9ppEJHTSMGgMpPdlxgYnANEqJ+xGm1qFyN2mmB qmgnFz0okuR7uWtwe4TUpJPpogmnOZV2J5qmOxg= X-Google-Smtp-Source: ABdhPJwpABRefj8biSZphAvYSBcTPD3IzCPqLD1WjT5jbT5rn4qRv7LA06knEEtpUchaW1l4eZSrhd0hPEZOA0vX9rU= X-Received: by 2002:a81:e347:0:b0:2db:e675:2dfc with SMTP id w7-20020a81e347000000b002dbe6752dfcmr5795679ywl.272.1646201590283; Tue, 01 Mar 2022 22:13:10 -0800 (PST) MIME-Version: 1.0 References: <20220301071820.3135133-1-kraxel@redhat.com> In-Reply-To: <20220301071820.3135133-1-kraxel@redhat.com> From: "Ard Biesheuvel" Date: Wed, 2 Mar 2022 07:12:59 +0100 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH 0/3] [RFC] consolidate compiler intrinsics To: Gerd Hoffmann Cc: edk2-devel-groups-io , Xiaoyu Lu , Bob Feng , Rebecca Cran , James Bottomley , Sami Mujawar , Jordan Justen , Erdem Aktas , Jiewen Yao , Supreeth Venkatesh , Sebastien Boeuf , Zhichao Gao , Zhiguang Liu , Maciej Rabeda , Maurice Ma , Andrew Fish , Ard Biesheuvel , Tom Lendacky , Peter Grehan , Sean Brogan , Guomin Jiang , Bret Barkelew , Yuwei Chen , Benjamin You , Daniel Schaefer , Liming Gao , Michael D Kinney , Wei6 Xu , Jian J Wang , Jiaxin Wu , Siyuan Fu , Guo Dong , kilian_kegel@hotmail.com, Abner Chang , Oliver Steffen , Leif Lindholm , Brijesh Singh , Min Xu , Ray Ni , Alexei Fedorov , Julien Grall , Nickle Wang , Pawel Polawski , Anthony Perard Content-Type: text/plain; charset="UTF-8" On Tue, 1 Mar 2022 at 08:18, Gerd Hoffmann wrote: > > 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 > For the series, Acked-by: Ard Biesheuvel > 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 >