[RISCV] Make sure Zvk* and Zvb* predicates are always paired with a GetVTypePredicates<vti>.Predicates. NFC (#178269)
We were inconsistent about this. Being consistent reduces the
number of unique predicate checks in the generated file.
NFC because illegal types don't make it to isel.
[libclc] Make output filename configurable; rename top-level targets (#178119)
This PR relates to c5cb48c39701.
Pass `OUTPUT_FILENAME` to `add_libclc_builtin_set` to allow downstream
output naming (e.g. libspirv in
https://github.com/intel/llvm/tree/sycl/libclc).
Rename top-level target to `libclc-${ARG_TRIPLE}` to avoid collision
with `library-${ARG_ARCH_SUFFIX}` in our downstream when libclc TRIPLE
matches libspirv ARCH_SUFFIX.
---------
Co-authored-by: Copilot <175728472+Copilot at users.noreply.github.com>
[RISCV] Add missing HasStdExtZvkb Predicate to some of the vector rotate patterns. NFC (#178250)
We already had it on the rotl with immediate patterns, but not any of
the others. This reduces the isel table size by a few hundred bytes by
allowing additional factoring with the rotl with immediate patterns.
This is NFC because these patterns shouldn't make it to isel if the
predicate wasn't already satisfied.
[LSR][RISCV] Add unequal cost eval for dropping solutions
Some corner cases where a baseline solution is
equal to the strength reduced solution offer
regression cases when the evaluated solution is
allowed, we change this to allow equal solutions
to be dropped as well, keeping all the better
solutions to strength reduce.
audio/din: Update to 60
Changes since 59:
DIN Is Noise 60:
/*
DIN60 is a binaural audio synthesizer which means you can hear
binaural beats from the drones of the Microtonal-Keyboard or
from the notes triggered when the balls of Mondrian hit a
wall or ceiling or from the notes triggered by pressing keys
on the Keyboard-Keyboard. Until DIN59, you could hear binaural
beats only from the binaural drones of the Binaural Drones
instrument. That instrument is still available but this is
a new and dynamic way to hear binaural beats!
some say binaural beats are best heard on headphones.
[294 lines not shown]
[VPlan] Create SCEV before any VPIRInstructions to check for overflow (#177911)
This PR tried to fix the assertion fail at VPlanTransforms.cpp:4862
since SCEV was created after VPIRInstructions.
The tripcount in scalable-predication.ll was changed from constant value
256 to non-constant value %n to avoid VPIRInstructions optimized out,
which cannot trigger the assertion fail.
The orders in ir-bb<entry> from:
ir-bb<entry>:
EMIT vp<%2> = EXPAND SCEV (1 umax %n)
EMIT vp<%3> = sub ir<-1>, vp<%2>
EMIT vp<%4> = EXPAND SCEV (4 * vscale)<nuw>
EMIT vp<%5> = icmp ult vp<%3>, vp<%4>
EMIT branch-on-cond vp<%5>
Successor(s): scalar.ph, vector.ph
[8 lines not shown]
posix_spawn: use rfork_thread on all arches
Do not allocate or switch to the custom stack on non-x86.
Reviewed by: markj
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Differential revision: https://reviews.freebsd.org/D54898
libsys, libc: provide rfork_thread() and pdrfork_thread() on all arches
Reviewed by: markj
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Differential revision: https://reviews.freebsd.org/D54898
[clang] consistent addrspace for GetVTTParameter result (#177044)
Avoid using VTT->getValueType() and VoidPtrTy and DRY the code to more
accurately get and set the addrspace without relying on the behavior of
struct indexing into a GlobalValue declared type.
[Mem2Reg] Remove extraneous getAllocatedType() check (#177438)
Replace uses of getAllocatedType() in PromoteMemoryToRegister.cpp with
type tracking from actual loads and stores. This makes the promotion
logic more semantic - it now checks that all loads/stores use a
consistent type rather than requiring them to match the alloca's
declared type.
Changes:
- isAllocaPromotable() now tracks the first load/store type seen and
ensures all subsequent accesses use the same type
- AllocaInfo gains a ValueType field populated during AnalyzeAlloca()
- PromoteMem2Reg tracks AllocaValueTypes alongside other per-alloca info
- PHI nodes and UndefValues are created using the tracked type
This is semantically more permissive - an alloca declared as i64 but
only accessed as i32 is now promotable. This is correct because the
alloca is just a blob of memory; what matters for Mem2Reg is consistent
access patterns.
[9 lines not shown]