[SLP]Count splats as single broadcast for in-loop trees
The loop-aware instruction-count check scaled the per-lane count of
splat gather entries by the trip count, rejecting profitable trees.
A splat is a single broadcast regardless of the loop scale. Fixes
4-6% RAJAPerf Apps_DIFFUSION3DPA regression on AArch64 introduced
by #211096.
Reviewers:
Pull Request: https://github.com/llvm/llvm-project/pull/230821
[ConstantFolding] Fold `bitinsert` and `bitextract` (#229115)
Constant fold `bitinsert` and `bitextract`.
- Bits of a `ConstantByte` are extracted or inserted, then reinterpreted
as if by `bitcast`.
- A `bitinsert` that overwrites every bit of the base becomes a
`bitcast` of the value.
- An out-of-range, `poison` source or `poison`/`undef` offset returns
`poison`.
```llvm
%a = bitextract i8, b32 512, i32 8 ; i8 2
%b = bitinsert b32 0, i8 1, i32 8 ; b32 256
%c = bitinsert b16 0, half 1.0, i32 0 ; b16 15360, the bits of half 1.0
%d = bitextract i8, b32 0, i32 25 ; i8 poison
```
math/polymake: fix build on powerpc64
configure.pl links with gold whenever it is available (binutils comes
in via gcc14), but gold produces binaries that crash on powerpc64, so
its own compiler probe died and configure gave up. Pin lld there.
cad/kicad-devel: fix build on powerpc64
The bundled Eigen 3.4.0 (thirdparty/eigen, used by planegcs) needs the
same AltiVec-without-VSX fixes that math/eigen3 carries.
games/warzone2100: fix build on powerpc64
Backport the two GameNetworkingSockets commits that fixed the build on
big-endian targets (issue #412): 1459f1029d87 adds the missing cast at
the LittleWord() call and b81c19c31eb7 reworks minbase_endian.h.
emulators/libretro-kronos: fix build on powerpc64
Pull upstream commit 6bae2843e083 ("Fix big endian - close #1414"): the
big-endian layout of the SCSP DSP instruction union was missing the
shift0/shift1 bitfields that scspdsp.c uses.
science/dirac: fix build on powerpc64
Drop -march=native -mtune=native from the pelib subtree's release
flags: gfortran rejects -march on PowerPC, and a package must not be
tied to the build host's CPU on any architecture anyway.
deskutils/treesheets: fix build on powerpc64*
Lobster can only run scripts through its libtcc JIT, which has no
PowerPC backend, so build TreeSheets without Lobster scripting there.
games/libretro-boom3: fix build on powerpc64*
Pull dhewm3's "Fix ppc64le build" (12fa28b260c8): the AltiVec SIMD
unit is macOS-only but was compiled wherever __ALTIVEC__ is set. Also
keep the bundled libretro-common from calling __mftb() on FreeBSD, as
its current upstream does.
cad/hs-verismith: fix build on powerpc64
The simdutf copy vendored by text-2.1.4 enables its POWER SIMD path
whenever AltiVec is available, but that code needs POWER8 (vec_vbpermq).
Apply upstream simdutf 573d42d7 to its guard so that it falls back to
the portable code on pre-POWER8 big-endian targets.
biology/gmap: enable on aarch64 and powerpc64
The aarch64 failure noted in the FIXME was the same broken __builtin_clz
probe that compiled x86 asm("bsr") on powerpc64le, so the configure
cache seeds from the previous commit fix it. powerpc64 builds as well;
the source has explicit big-endian support.
games/libretro-fbneo: update to 0.20261009
Fixes the build on powerpc64*: the bundled libretro-common no longer
includes ppu_intrinsics.h or calls __mftb() on FreeBSD.
audio/maolan: fix build on powerpc64
The i24 crate's to_le_repr() returned the wrong type on big-endian
targets and used std::mem::transmute in a no_std build.