[AMDGPU][GlobalISel] Use single B32 rule for permlane16
B32 already covers s32, <2 x s16> and 32-bit pointers, so one StandardB
fast rule replaces the separate S32, V2S16 and DivPtr32 rules. This
matches permlane_bcast/up/down/xor and permlane64, which have the same
overloaded intrinsic shape.
Change-Id: I770a93d5e75e68df704e84d7ad165fdd2cf2fc53
Add PISA target registration and backend stub
Register the Intel GPU portable ISA (PISA) target. Add the pisa Triple
arch, data layout, and a minimal MC/TargetMachine skeleton.
[RISCV] coalesce between VSETVLI and SF_VSETTNT (#203438)
When twiden != 0, LMUL, tail policy, and mask policy from the user are
ignored. The tail policy and mask policy are always treated as agnostic.
The normal RVV instruction will ignore the twiden parameter. This
observation could allow the RVV instruction and xsfmm instruction to
share the same configuration instruction.
We need to make sure the AVL, SEW, and AltFmt is same between VSETVL and
VSETVLTN.
---------
Co-authored-by: Luke Lau <luke_lau at icloud.com>
/bin/sh - builtin read command fixes (miscbltin.c)
This corrects a change made in the previous version, where
in addition to the intended change, making a read error be
treated differently than EOF, a change with unplanned
consequences was also made, to treat the EINTR read error
as a "try again" signal, rather than as a read error.
That meant that caught traps no longer interrupted the read,
and while that is how (some) other shells do it (like bash)
it was a change to how our shell does things.
So, now there is (in normal shells) a new -c (continue) option
to cause this behaviour, when given, a trapped signal will be
processed during the wait for input by the read built-in utility,
but not end the read. When absent, the trap will still be processed
while the read is in progress, but will be treated as a read error
(and produce the special (>1) exit code 130.
While doing this, revert all these changes for SMALL shells, they
[4 lines not shown]
/bin/sh - trap.c - new func and avoid lost memory
Add run_traps() - which is just dotrap() except that it
preserves the state of the stack around the trap executions,
so is safe to call with the stack in any state. It will also
preserve the state of the growing string at the top of the
stack if informed (by giving a non-zero value as its arg)
that such a string currently exists. This new function does
not exist in SMALL shells.
While here, fix an unlikely memory leak - if a shell error
(not command error) occurs while processing a trap in dotrap()
the copy of the trap string being parsed can be lost. This is
irrelevant in non-interactive shells, as the errors which would
cause this loss, also cause a non-interactive shell to exit,
the lost memory is only lost for a very short time. Interactive
shells rarely set traps (except possibly an EXIT trap - for which
the memory loss is also immaterial for almost the same reason) at
all, and if one were set, and generated a shell error (typically
[3 lines not shown]
/bin/sh - memalloc.h - added STSTRLEN()
Add a new stack string macro STSTRLEN() which returns the
current length of the string being accumulated at the top
of the (shell) stack. As with all the other Stack String
macros, it may only be used between a STARTSTACKSTR() call
and the next call which allocates stack space (often
grabstackstr(), but stalloc() stunalloc() grabstackblock()
all count for this). Use at any other time will give
meaningless unspecified results.
[lldb] Step past a prologue the pc is inside (#213555)
A step into a function ran past its prologue only when the pc was
exactly the function's first address. A target whose entry point is not
a function's first address (such as WebAssembly) is entered past it.
This means that the check took every such call for one whose prologue
had already run, and the step stopped on the opening brace instead of
the first statement.
What says the prologue has yet to run is the pc being inside it, which
for a target that does enter at the first address is the condition that
was there before.
autofs_lookup(): busy the mount point around autofs_trigger()
Since autofs_lookup() calls into autofs_trigger_vn() to perform
automounting, and autofs_trigger_vn() unlocks the vnode, it is possible
for the unmount to start meantime. Then autofs_trigger() accesses freed
memory.
At this point, busy can be only done unblocking, and the transient
failure must abort the trigger operation. This would cause spurious
automounter errors, but at least should prevent accesses to the freed
memory.
PR: 294361
Reviewed by: markj, rew
Tested by: rew
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Differential revision: https://reviews.freebsd.org/D58626
[AArch64][GlobalISel] Use a concrete type for store merging. (#213740)
This is just to reduce the number of scalar types in the MIR, as the
value is between a constant and a store it should have little effect.
[CIR] Move array-ctor cleanup to properly cleanup temporaries (#213993)
This patch came out of self-build, any constructor temporary called
during the construction of an array element was being improperly cleaned
up (actually, no terminator?). This patch moves the RunCleanups RAII to
do so immediately in the body.
The OGCG/LLVM check lines are effectively equal, except OGCG uses a PHI
and we are doing so with an iterator loop, but the 'dtor called
immediately' is still correct.
[CIR] Reject a global carrying a function type (#214065)
The verifier was accepting a `cir.global` whose `sym_type` is a
function. The LLVM dialect global takes one too, so it survives to LLVM
IR translation and crashes instead of reporting an error.
`GlobalOp::verify()` now rejects it.
[SelectionDAG] Split masked div/rem operands with illegal masks (#214058)
PR description written by Codex
Split masked signed and unsigned division/remainder alongside illegal
vector masks to fix NVPTX SelectionDAG crashes. Covers all four
intrinsics and the original eight-lane reproducer; five focused LLVM
tests pass.