Admin message

Due to a large amount of spam we do not allow new users to create repositories, they are "external" users. If you are a new user and want to create a repository, for example for forking GHC, open a new issue on ghc/ghc using the "get-verified" issue template

LLVM backend on x86 doesn't use popcnt instruction even if -msse4.2 is set
## Summary LLVM backend doesn't use popcnt instruction even if `-msse4.2` is set. ## Steps to reproduce First, #25019 needs to be fixed and we assume we have `"+sse4.2"` in `compiler/GHC/Driver/Pipeline/Execute.hs`. Then run the following: ``` $ cat popcounttest.hs import Data.Bits {-# NOINLINE foo #-} foo :: Int -> Int foo x = 1 + popCount x main = print (foo 42) $ ghc -fforce-recomp -S -O2 -msse4.2 popcounttest.hs $ grep popcnt popcounttest.s popcnt %r14,%rax -> OK, GHC emitted popcnt instruction $ _build/stage1/bin/ghc -fforce-recomp -S -fllvm -O2 -msse4.2 popcounttest.hs $ grep popcnt popcounttest.s -> No match. LLVM backend didn't use popcnt instruction ``` ## Expected behavior LLVM should emit `popcnt` instruction if `-msse4.2` is set. ## Observations Although many compilers (including GCC, Clang, and GHC NCG) treat `popcnt` as a part of SSE4.2, `popcnt` has a different CPUID flag than SSE4.2. LLVM's attribute system honors the difference and has a different attribute for `popcnt` ([X86.td](https://github.com/llvm/llvm-project/blob/73c9ad263369ac7350d60b3d3670ea3ed56669cc/llvm/lib/Target/X86/X86.td#L48-L49)). So we should pass LLVM `+popcnt` in addition to `+sse4.2`. ## Environment * GHC version used: 9.13.20241006 (c9590ba0703d65ecb9d71ac8390c1ae1144bd9d0) with a patch to fix #25019 * Operating System: Linux * System Architecture: x86_64
issue