-
Notifications
You must be signed in to change notification settings - Fork 5.2k
Closed
Labels
area-System.Runtime.Intrinsicsin-prThere is an active PR which will close this issue when it is mergedThere is an active PR which will close this issue when it is merged
Milestone
Description
This happens on xamarin-android/main (.NET8), but I suppose it will apply to other platforms as well.
I noticed that System.Private.CoreLib.dll output by the linker for arm64 RID contains X86 and WASM intrinsics types:
549: System.Runtime.Intrinsics.Wasm.PackedSimd (flist=2253, mlist=6116, flags=0x100081, extends=0xa0)
554: System.Runtime.Intrinsics.X86.X86Base (flist=2253, mlist=6151, flags=0x100081, extends=0xa0)
555: System.Runtime.Intrinsics.X86.Sse (flist=2253, mlist=6151, flags=0x100081, extends=0x8a8)
556: System.Runtime.Intrinsics.X86.Sse2 (flist=2253, mlist=6151, flags=0x100081, extends=0x8ac)
557: System.Runtime.Intrinsics.X86.Sse3 (flist=2253, mlist=6154, flags=0x100081, extends=0x8b0)
558: System.Runtime.Intrinsics.X86.Sse41 (flist=2253, mlist=6154, flags=0x100081, extends=0x8bc)
559: System.Runtime.Intrinsics.X86.Ssse3 (flist=2253, mlist=6155, flags=0x100081, extends=0x8b4)
It appears some of the x86 classes are removed, but not all. For comparison, this is a list of types from the same assembly but linked for x84:
558: System.Runtime.Intrinsics.X86.X86Base (flist=2255, mlist=6330, flags=0x100081, extends=0xa0)
559: System.Runtime.Intrinsics.X86.X86Base/X64 (flist=2255, mlist=6333, flags=0x100082, extends=0xa0)
560: System.Runtime.Intrinsics.X86.Avx (flist=2255, mlist=6336, flags=0x100081, extends=0x90c)
561: System.Runtime.Intrinsics.X86.Avx2 (flist=2255, mlist=6338, flags=0x100081, extends=0x8c0)
562: System.Runtime.Intrinsics.X86.Avx512BW (flist=2255, mlist=6344, flags=0x100081, extends=0x8cc)
563: System.Runtime.Intrinsics.X86.Avx512F (flist=2255, mlist=6346, flags=0x100081, extends=0x8c4)
564: System.Runtime.Intrinsics.X86.Bmi1 (flist=2255, mlist=6347, flags=0x100081, extends=0x8b8)
565: System.Runtime.Intrinsics.X86.Bmi1/X64 (flist=2255, mlist=6349, flags=0x100082, extends=0x8bc)
566: System.Runtime.Intrinsics.X86.Bmi2 (flist=2255, mlist=6352, flags=0x100081, extends=0x8b8)
567: System.Runtime.Intrinsics.X86.Bmi2/X64 (flist=2255, mlist=6352, flags=0x100082, extends=0x8bc)
568: System.Runtime.Intrinsics.X86.Lzcnt (flist=2255, mlist=6354, flags=0x100081, extends=0x8b8)
569: System.Runtime.Intrinsics.X86.Lzcnt/X64 (flist=2255, mlist=6356, flags=0x100082, extends=0x8bc)
570: System.Runtime.Intrinsics.X86.Popcnt (flist=2255, mlist=6358, flags=0x100081, extends=0x90c)
571: System.Runtime.Intrinsics.X86.Sse (flist=2255, mlist=6360, flags=0x100081, extends=0x8b8)
572: System.Runtime.Intrinsics.X86.Sse/X64 (flist=2255, mlist=6360, flags=0x100082, extends=0x8bc)
573: System.Runtime.Intrinsics.X86.Sse2 (flist=2255, mlist=6360, flags=0x100081, extends=0x8ec)
574: System.Runtime.Intrinsics.X86.Sse2/X64 (flist=2255, mlist=6373, flags=0x100082, extends=0x8f0)
575: System.Runtime.Intrinsics.X86.Sse3 (flist=2255, mlist=6376, flags=0x100081, extends=0x8f4)
576: System.Runtime.Intrinsics.X86.Sse3/X64 (flist=2255, mlist=6376, flags=0x100082, extends=0x8f8)
577: System.Runtime.Intrinsics.X86.Sse41 (flist=2255, mlist=6376, flags=0x100081, extends=0x910)
578: System.Runtime.Intrinsics.X86.Sse41/X64 (flist=2255, mlist=6379, flags=0x100082, extends=0x914)
579: System.Runtime.Intrinsics.X86.Sse42 (flist=2255, mlist=6380, flags=0x100081, extends=0x904)
580: System.Runtime.Intrinsics.X86.Ssse3 (flist=2255, mlist=6380, flags=0x100081, extends=0x8fc)
581: System.Runtime.Intrinsics.X86.Ssse3/X64 (flist=2255, mlist=6382, flags=0x100082, extends=0x900)
The x64 version also contains some ARM intrinsics, but not all:
553: System.Runtime.Intrinsics.Wasm.PackedSimd (flist=2255, mlist=6322, flags=0x100081, extends=0xa0)
554: System.Runtime.Intrinsics.Arm.AdvSimd (flist=2255, mlist=6325, flags=0x100081, extends=0x8b0)
555: System.Runtime.Intrinsics.Arm.AdvSimd/Arm64 (flist=2255, mlist=6326, flags=0x100082, extends=0x8b4)
556: System.Runtime.Intrinsics.Arm.ArmBase (flist=2255, mlist=6330, flags=0x100081, extends=0xa0)
557: System.Runtime.Intrinsics.Arm.ArmBase/Arm64 (flist=2255, mlist=6330, flags=0x100082, extends=0xa0)
Would it be possible to remove all of them? They are essentially dead weight for the target RID.
Attached is a zip with both assemblies mentioned above. The app being built was the dotnet new android template for NET8
corlib.zip
Metadata
Metadata
Assignees
Labels
area-System.Runtime.Intrinsicsin-prThere is an active PR which will close this issue when it is mergedThere is an active PR which will close this issue when it is merged