SuccessChanges

Summary

  1. [AArch64][SVE] Implement unpack intrinsics (details)
  2. [Codegen] Alter the default promotion for saturating adds and subs (details)
  3. Fix MSVC "result of 32-bit shift implicitly converted to 64 bits" (details)
  4. Fix MSVC "not all control paths return a value" warning. NFCI. (details)
  5. [X86] Regenerate memcmp tests and add X64-AVX512 common prefix (details)
  6. [AArch64] Don't combine callee-save and local stack adjustment when (details)
  7. [LLD] [COFF] Try to report source locations for duplicate symbols (details)
Commit 0c7cc383e5b846bc9e9fcc599d3f342333f5c963 by kerry.mclaughlin
[AArch64][SVE] Implement unpack intrinsics
Summary: Implements the following intrinsics:
- int_aarch64_sve_sunpkhi
- int_aarch64_sve_sunpklo
- int_aarch64_sve_uunpkhi
- int_aarch64_sve_uunpklo
This patch also adds AArch64ISD nodes for UNPK instead of implementing
the intrinsics directly, as they are required for a future patch which
implements the sign/zero extension of legal vectors.
This patch includes tests for the Subdivide2Argument type added by
D67549
Reviewers: sdesmalen, SjoerdMeijer, greened, rengolin, rovka
Reviewed By: greened
Subscribers: tschuett, kristof.beyls, rkruppe, psnobl, cfe-commits,
llvm-commits
Differential Revision: https://reviews.llvm.org/D67550
llvm-svn: 375210
The file was modifiedllvm/lib/Target/AArch64/AArch64ISelLowering.h
The file was modifiedllvm/lib/Target/AArch64/AArch64InstrInfo.td
The file was modifiedllvm/lib/Target/AArch64/AArch64SVEInstrInfo.td
The file was addedllvm/test/CodeGen/AArch64/sve-intrinsics-perm-select.ll
The file was modifiedllvm/lib/Target/AArch64/AArch64ISelLowering.cpp
The file was modifiedllvm/include/llvm/IR/IntrinsicsAArch64.td
The file was modifiedllvm/lib/Target/AArch64/SVEInstrFormats.td
Commit e6f313b3807d23017d188aa7060b8cad09b3d095 by david.green
[Codegen] Alter the default promotion for saturating adds and subs
The default promotion for the add_sat/sub_sat nodes currently does:
   ANY_EXTEND iN to iM
   SHL by M-N
   [US][ADD|SUB]SAT
   L/ASHR by M-N
If the promoted add_sat or sub_sat node is not legal, this can produce
code that effectively does a lot of shifting (and requiring large
constants to be materialised) just to use the overflow flag. It is
simpler to just do the saturation manually, using the higher bitwidth
addition and a min/max against the saturating bounds. That is what this
patch attempts to do.
Differential Revision: https://reviews.llvm.org/D68926
llvm-svn: 375211
The file was modifiedllvm/test/CodeGen/AArch64/uadd_sat_plus.ll
The file was modifiedllvm/test/CodeGen/ARM/uadd_sat.ll
The file was modifiedllvm/test/CodeGen/AArch64/uadd_sat.ll
The file was modifiedllvm/test/CodeGen/AArch64/usub_sat.ll
The file was modifiedllvm/test/CodeGen/AArch64/sadd_sat_vec.ll
The file was modifiedllvm/test/CodeGen/AArch64/ssub_sat.ll
The file was modifiedllvm/test/CodeGen/ARM/usub_sat_plus.ll
The file was modifiedllvm/test/CodeGen/ARM/sadd_sat_plus.ll
The file was modifiedllvm/test/CodeGen/ARM/uadd_sat_plus.ll
The file was modifiedllvm/test/CodeGen/AArch64/sadd_sat.ll
The file was modifiedllvm/test/CodeGen/AArch64/usub_sat_vec.ll
The file was modifiedllvm/test/CodeGen/X86/uadd_sat_plus.ll
The file was modifiedllvm/test/CodeGen/X86/ssub_sat.ll
The file was modifiedllvm/test/CodeGen/X86/ssub_sat_plus.ll
The file was modifiedllvm/test/CodeGen/AArch64/uadd_sat_vec.ll
The file was modifiedllvm/test/CodeGen/X86/uadd_sat.ll
The file was modifiedllvm/test/CodeGen/ARM/ssub_sat_plus.ll
The file was modifiedllvm/test/CodeGen/X86/sadd_sat.ll
The file was modifiedllvm/test/CodeGen/ARM/usub_sat.ll
The file was modifiedllvm/test/CodeGen/X86/sadd_sat_plus.ll
The file was modifiedllvm/test/CodeGen/AArch64/ssub_sat_plus.ll
The file was modifiedllvm/test/CodeGen/AArch64/usub_sat_plus.ll
The file was modifiedllvm/test/CodeGen/ARM/ssub_sat.ll
The file was modifiedllvm/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp
The file was modifiedllvm/test/CodeGen/ARM/sadd_sat.ll
The file was modifiedllvm/test/CodeGen/X86/usub_sat_plus.ll
The file was modifiedllvm/test/CodeGen/AArch64/ssub_sat_vec.ll
The file was modifiedllvm/test/CodeGen/X86/usub_sat.ll
The file was modifiedllvm/test/CodeGen/AArch64/sadd_sat_plus.ll
Commit da40d4e4e1bfa705dbf59ebce097ed34b0e46dfc by llvm-dev
Fix MSVC "result of 32-bit shift implicitly converted to 64 bits"
warnings. NFCI.
llvm-svn: 375213
The file was modifiedllvm/tools/llvm-objdump/MachODump.cpp
The file was modifiedllvm/lib/Object/MachOUniversal.cpp
Commit 3bd61b26556027a23b0d161d403f07fd7387ac77 by llvm-dev
Fix MSVC "not all control paths return a value" warning. NFCI.
llvm-svn: 375214
The file was modifiedllvm/tools/llvm-objcopy/CopyConfig.cpp
Commit ef04598e147396e7225964ae8438ecbf6554b095 by llvm-dev
[X86] Regenerate memcmp tests and add X64-AVX512 common prefix
Should help make the changes in D69157 clearer
llvm-svn: 375215
The file was modifiedllvm/test/CodeGen/X86/memcmp.ll
Commit 651f07908a149b8eb861a1b109f98eeb3d4f1517 by david.green
[AArch64] Don't combine callee-save and local stack adjustment when
optimizing for size
For arm64, D18619 introduced the ability to combine bumping the stack
pointer upfront in case it needs to be bumped for both the callee-save
area as well as the local stack area.
That diff already remarks that "This change can cause an increase in
instructions", but argues that even when that happens, it should be
still be a performance benefit because the number of micro-ops is
reduced.
We have observed that this code-size increase can be significant in
practice. This diff disables combining stack bumping for methods that
are marked as optimize-for-size.
Example of a prologue with the behavior before this diff (combining
stack bumping when possible):
sub        sp, sp, #0x40
stp        d9, d8, [sp, #0x10]
stp        x20, x19, [sp, #0x20]
stp        x29, x30, [sp, #0x30]
add        x29, sp, #0x30
[... compute x8 somehow ...]
stp        x0, x8, [sp]
And after this  diff, if the method is marked as optimize-for-size:
stp        d9, d8, [sp, #-0x30]!
stp        x20, x19, [sp, #0x10]
stp        x29, x30, [sp, #0x20]
add        x29, sp, #0x20
[... compute x8 somehow ...]
stp        x0, x8, [sp, #-0x10]!
Note that without combining the stack bump there are two
auto-decrements, nicely folded into the stp instructions, whereas
otherwise there is a single sub sp, ... instruction, but not folded.
Patch by Nikolai Tillmann!
Differential Revision: https://reviews.llvm.org/D68530
llvm-svn: 375217
The file was addedllvm/test/CodeGen/AArch64/arm64-never-combine-csr-local-stack-bump-for-size.ll
The file was modifiedllvm/lib/Target/AArch64/AArch64FrameLowering.cpp
Commit b38f577c015c210605c2e463e9ac6a03249225a2 by martin
[LLD] [COFF] Try to report source locations for duplicate symbols
This fixes the second part of PR42407.
For files with dwarf debug info, it manually loads and iterates
.debug_info to find the declared location of variables, to allow
reporting them. (This matches the corresponding code in the ELF linker.)
For functions, it uses the existing getFileLineDwarf which uses
LLVMSymbolizer for translating addresses to file lines.
In object files with codeview debug info, only the source location of
duplicate functions is printed. (And even there, only for the first
input file. The getFileLineCodeView function requires the object file to
be fully loaded and initialized to properly resolve source locations,
but duplicate symbols are reported at a stage when the second object
file isn't fully loaded yet.)
Differential Revision: https://reviews.llvm.org/D68975
llvm-svn: 375218
The file was modifiedlld/COFF/InputFiles.cpp
The file was addedlld/test/COFF/duplicate-dwarf.s
The file was addedlld/test/COFF/duplicate-cv.s
The file was modifiedlld/test/COFF/conflict.test
The file was modifiedlld/COFF/SymbolTable.cpp
The file was modifiedlld/COFF/SymbolTable.h
The file was modifiedlld/test/COFF/duplicate.test
The file was modifiedlld/COFF/InputFiles.h
The file was modifiedlld/test/COFF/conflict-mangled.test

Summary

  1. Remove -DLLVM_USE_LINKER from Windows self host bots. (details)
Commit 061123f05ff0813c36287d2105cb5344d494592b by russell.gallop
Remove -DLLVM_USE_LINKER from Windows self host bots.
LLVM_USE_LINKER sets the -fuse-ld. This is redundant as the linker is
set to lld-link.
Differential Revision: https://reviews.llvm.org/D69098
llvm-svn: 375212
The file was modifiedzorg/buildbot/builders/annotated/clang-windows.py
The file was modifiedzorg/buildbot/builders/annotated/sanitizer-windows.py