[openmp][arm64ec] Fix arm64x when PER_TARGET_RUNTIME_DIR=On (#207747)
This patch fixes an issue where the combination of LIBOMP_ENABLE_ARM64X
and LLVM_PER_TARGET_RUNTIME_DIR=On led to only the arm64 library being
installed. With this fix, the arm64ec and arm64 .lib files are both
installed, and the arm64x dll is the one installed to the binary dir.
[InstCombine] Recognize abs through positive-K nsw multiply. (#207539)
Generalize matchSelectPattern to also consider multiplies that do not
change sign when trying to from llvm.abs.
End-to-end, this allows vectorizing with narrower element types for code
such as below. This triggers in some ffmpeg kernels on AArch64.
```
void scaled_absdiff_u8(uint8_t * __restrict out,
const uint8_t * __restrict a,
const uint8_t * __restrict b,
size_t n) {
for (size_t i = 0; i < n; ++i) {
int32_t d = 4 * ((int32_t)a[i] - (int32_t)b[i]);
if (d < 0) d = -d;
if (d > 255) d = 255;
out[i] = (uint8_t)d;
}
[7 lines not shown]
[ARM] Swap sides of cmp/cmn based on folding ability (#191915)
If we can fold lsl, lsr, rotr, or asr into the right side of the
compare, we should do so.
resterm: Update to 0.45.2
Important fix: multipart/form-data requests
Multipart requests were effectively unusable in previous releases for typical hand-written requests and requests imported from curl -F via resterm -fc. If you use multipart/form-data, you should upgrade.
What was broken. Several compounding bugs could corrupt multipart bodies: boundary lines (--...) were dropped during parsing because they were mistaken for -- comments. Part content starting with #, //, > or @... could be misread as resterm syntax and multipart framing was sent with LF line endings instead of the CRLF delimiter/header framing required by RFC 7578/RFC 2046.
What's fixed. resterm now sends multipart bodies with curl compatible wire framing:
- CRLF delimiters and part headers, including a trailing CRLF after the closing boundary
- multipart body lines are preserved as body content instead of being parsed as comments, scripts or variables
- @file includes inside parts are injected as raw bytes, so binary uploads are not rewritten
- works the same whether your .http file uses LF or CRLF line endings
- applies to all multipart subtypes (form-data, mixed, related)
Directives placed after the closing boundary, such as # @capture, continue to parse as before. Non-multipart requests, GraphQL, gRPC, SSH, and K8s are unaffected.
Parse the information for integrated RAID events. We now print (e.g.):
mpt2: Integrated RAID Event: volume 0 status: optimal, enabled
mpt2: Integrated RAID Event: volume 2 status: missing, enabled, inactive
instead of the cryptic:
mpt2: Unknown async event: 0xb000000
Also byte swap the Unknown async event output to make it less cryptic on
big-endian hosts.
[clang][bytecode] Try to avoid temporaries in (compound) assignments (#207652)
This is only needed if the RHS has side-effects. If we can easily and
cheaply prove that it doesn't, avoid the temporary variable. This saves
memory and is slightly faster.
[X86] Fix inline asm modifier printing across dialects (#204558)
X86AsmPrinter handles several inline asm operand modifiers differently
depending on whether the asm block uses AT&T or Intel syntax.
For `%a` and `%A`, the scalar/register operand path used AT&T
punctuation unconditionally. In Intel-dialect inline asm this could
print invalid forms such as `(rdi)` for an address operand or `*rdi` for
an indirect call operand.
For `%P`, `PrintAsmMemoryOperand` passed `"disp-only"` to both the Intel
and AT&T memory printers, but only the Intel path honored it for
global/symbol displacements with a base register. The AT&T path could
therefore print `g(%rdi)` even though `%P` requested displacement-only
output.
Make the affected X86 asm-printer paths dialect-aware/consistent:
- print Intel `%a` register operands as `[reg]`
- print Intel `%A` register operands without AT&T `*`
[7 lines not shown]
net/gnunet: [new port] GNU networking stack
This is a collection of libraries for secure networking
for the "GNU Network". See https://www.gnunet.org/en/
for details.