Commit
13d3cd37e27889cb343d92313944d5dabfe2762b
by albionapc[PowerPC] Implement vector float and vector double version for vec_orc builtin
The builtin for vec_orc has support for the following two signatures, but currently the compiler marks it ambiguous: vector float vec_orc(vector float, vector float) vector double vec_orc(vector double, vector double)
This patch implements these two builtins.
Differential revision: https://reviews.llvm.org/D110858
|
 | clang/test/CodeGen/builtins-ppc-p8vector.c |
 | clang/lib/Headers/altivec.h |
Commit
91fe069c35f13647687f4e4af2c838c61331c450
by pmatos[WebAssembly] De-duplicate WasmAddressSpace and refactor reftype predicates
This is a non-functional change to remove the duplicate WasmAddressSpace enum and refactor reftype predicates by moving them to the Utilities source file.
Reviewed By: tlively
Differential Revision: https://reviews.llvm.org/D111144
|
 | llvm/lib/Target/WebAssembly/Utils/WebAssemblyUtilities.h |
 | llvm/lib/Target/WebAssembly/WebAssemblyISelLowering.h |
 | llvm/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp |
 | llvm/lib/Target/WebAssembly/WebAssemblyLowerRefTypesIntPtrConv.cpp |
Commit
0c7495848a02e1bcc68527c77c2a060ffae408c1
by pmatos[WebAssembly] Fix call_indirect on funcrefs
The currently implementation of funcrefs is broken since it is putting the funcref itself on the stack before the call_indirect. Instead what should be on the stack is the constant 0, which is the index at which we store the funcref in __funcref_call_table.
Reviewed By: tlively
Differential Revision: https://reviews.llvm.org/D111152
|
 | llvm/test/CodeGen/WebAssembly/funcref-call.ll |
 | llvm/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp |
Commit
37edb7d3e26353ffd8a239b3f850925dc913a6bb
by david.sherwood[SVE] Fix incorrect DAG combines when extracting fixed-width from scalable vectors
We were previously silently generating incorrect code when extracting a fixed-width vector from a scalable vector. This is worse than crashing, since the user will have no indication that this is currently unsupported behaviour. I have fixed the code to only perform DAG combines when safe to do so, i.e. the input and output vectors are both fixed-width or both scalable.
Test added here:
CodeGen/AArch64/sve-extract-scalable-vector.ll
Differential revision: https://reviews.llvm.org/D110624
|
 | llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp |
 | llvm/test/CodeGen/AArch64/sve-extract-fixed-from-scalable-vector.ll |
Commit
94bdc0cf61d5b2b807c1fda96c5fb8d5cc301cea
by david.green[AArch64] Regenerate some fast-isel tests
This updates the check lines in some fast isel test, to make them more maintainable going forward.
|
 | llvm/test/CodeGen/AArch64/fast-isel-memcpy.ll |
 | llvm/test/CodeGen/AArch64/fast-isel-gep.ll |
 | llvm/test/CodeGen/AArch64/fast-isel-addressing-modes.ll |
 | llvm/test/CodeGen/AArch64/fast-isel-shift.ll |
Commit
bafdf2b1efb3238068f263a752fb86ebcdb21906
by kuhnel[docs] Fix typo and minor text changes in MyFirstTypoFix
Reviewed By: kuhnel
Differential Revision: https://reviews.llvm.org/D111211
|
 | llvm/docs/MyFirstTypoFix.rst |
Commit
fc36fb4d23a5e419cf33002c87c0082f682cb77b
by david.spickettRevert "Second Recommit "[AArch64] Split bitmask immediate of bitwise AND operation""
This reverts commit 13f3c39f3658fa28cb008eb56a58d8e34697cd5d.
Due to test failures in stage 2 clang tests on AArch64 bots.
|
 | llvm/lib/Target/AArch64/AArch64TargetMachine.cpp |
 | llvm/lib/Target/AArch64/MCTargetDesc/AArch64AddressingModes.h |
 | llvm/test/CodeGen/AArch64/O3-pipeline.ll |
 | llvm/test/CodeGen/AArch64/aarch64-split-and-bitmask-immediate.ll |
 | llvm/test/CodeGen/AArch64/unfold-masked-merge-scalar-constmask-innerouter.ll |
 | llvm/lib/Target/AArch64/AArch64.h |
 | llvm/lib/Target/AArch64/CMakeLists.txt |
 | llvm/lib/Target/AArch64/AArch64MIPeepholeOpt.cpp |
Commit
a67b1220f53bdece83d5e8a6370f8a6b6b3b10de
by llvmgnsyncbot[gn build] Port fc36fb4d23a5
|
 | llvm/utils/gn/secondary/llvm/lib/Target/AArch64/BUILD.gn |
Commit
f8f1bb7462bf2924ac78e9f22356228356fd5219
by david.spickett[compiler-rt][lsan] Add backup AArch64 register for use_registers test
On Ubuntu Focal x13 is used by something in the process of calling sched_yield. Causing the test to fail depending on when the thread is stopped.
Adding x14 works around this and the test passes consistently.
Not switching to only x14 because that could make other platforms fail. With both we'll always find at least one and even if both values are present we'll only get one report.
Reviewed By: oontvoo, vitalybuka
Differential Revision: https://reviews.llvm.org/D110931
|
 | compiler-rt/test/lsan/TestCases/use_registers.cpp |
Commit
d2b9d0fdda5e8295a2a81276fa6be8ea8d1fd022
by omair.javaidRound XML register bitsize to byte boundary
This patch allows LLDB to accept register sizes which are not aligned to 8 bits bitsize boundary. This fixes a crash in LLDB when connecting to OpenOCD stub. GDB xml description allows for non-aligned bit lengths but they are rounded off to nearest byte during transfer. In case of OpenOCD some of SOC specific system registers were less than a single byte in length and were causing LLDB to crash.
Reviewed By: labath
Differential Revision: https://reviews.llvm.org/D111131
|
 | lldb/test/API/functionalities/gdb_remote_client/TestArmRegisterDefinition.py |
 | lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp |
Commit
3562076dfc0b505854e1ecade1c1b420b61197b8
by paulsson[SystemZ] Temporarily revert memcmp and memcpy patches
Seem to cause test failures in compiler-rt.
Revert "[SystemZ] Implement memcmp of variable length with CLC." This reverts commit 7a4e9a0c73667cb80e4572d41535a9e48f1ed9ef.
Revert "[SystemZ] Implement memcpy of variable length with MVC." This reverts commit c6c13c58eebda605a9a05f1f13cac1e46407afc7.
|
 | llvm/lib/Target/SystemZ/SystemZInstrFormats.td |
 | llvm/test/CodeGen/SystemZ/memcmp-01.ll |
 | llvm/lib/Target/SystemZ/SystemZISelLowering.cpp |
 | llvm/test/CodeGen/SystemZ/memcpy-01.ll |
 | llvm/lib/Target/SystemZ/SystemZSelectionDAGInfo.cpp |
 | llvm/test/CodeGen/SystemZ/loop-03.ll |
 | llvm/test/CodeGen/SystemZ/tail-call-mem-intrinsics.ll |
Commit
0776924a17efaf5269f154f899ecb5474e7800f2
by llvm-dev[CostModel][X86] getCmpSelInstrCost - treat BAD_PREDICATEs the same as the worst case cost predicates for ICMP/FCMP instructions
As suggested on D111024, we should treat getCmpSelInstrCost calls without a specific predicate as matching the worst case predicate cost.
These regressions will be addressed with a mixture of D111024 and fixing other specific getCmpSelInstrCost calls to have realistic predicates.
|
 | llvm/test/Transforms/SLPVectorizer/X86/horizontal-minmax.ll |
 | llvm/test/Analysis/CostModel/X86/arith-overflow.ll |
 | llvm/test/Analysis/CostModel/X86/reduce-smin.ll |
 | llvm/test/Analysis/CostModel/X86/fshl.ll |
 | llvm/test/Analysis/CostModel/X86/arith-ssat.ll |
 | llvm/test/Analysis/CostModel/X86/intrinsic-cost-kinds.ll |
 | llvm/test/Analysis/CostModel/X86/reduce-umin.ll |
 | llvm/test/Transforms/SLPVectorizer/X86/horizontal-smax.ll |
 | llvm/test/Transforms/VectorCombine/X86/extract-cmp.ll |
 | llvm/test/Analysis/CostModel/X86/arith-usat.ll |
 | llvm/test/Analysis/CostModel/X86/fshr.ll |
 | llvm/test/Analysis/CostModel/X86/arith-sminmax.ll |
 | llvm/test/Analysis/CostModel/X86/reduce-umax.ll |
 | llvm/test/Transforms/VectorCombine/X86/scalarize-cmp.ll |
 | llvm/test/Transforms/VectorCombine/X86/extract-cmp-binop.ll |
 | llvm/test/Analysis/CostModel/X86/arith-uminmax.ll |
 | llvm/test/Analysis/CostModel/X86/reduce-smax.ll |
 | llvm/test/Transforms/VectorCombine/X86/scalarize-cmp-inseltpoison.ll |
 | llvm/lib/Target/X86/X86TargetTransformInfo.cpp |
Commit
a84b78198cdd76a2171fdf6b0d80e49f4a4cf572
by david.green[AArch64] Regenerate some more tests
This updates the check lines in some extra tests, to make them more maintainable going forward.
|
 | llvm/test/CodeGen/AArch64/isinf.ll |
 | llvm/test/CodeGen/AArch64/memcpy-scoped-aa.ll |
 | llvm/test/CodeGen/AArch64/sve-intrinsics-int-arith-imm.ll |
 | llvm/test/CodeGen/AArch64/cond-sel-value-prop.ll |
 | llvm/test/CodeGen/AArch64/machine_cse_impdef_killflags.ll |
 | llvm/test/CodeGen/AArch64/movw-consts.ll |
 | llvm/test/CodeGen/AArch64/madd-lohi.ll |
Commit
26b3e929811814a4d2698228d1e8ded90b8bad7b
by nicolas.vasilache[mlir][Linalg] Don't return early from inPlaceAnalysis
Instead just emit a warning that analysis failed and the result will be treated conservatively.
Differential Revision: https://reviews.llvm.org/D111217
|
 | mlir/lib/Dialect/Linalg/Transforms/ComprehensiveBufferize.cpp |
Commit
c11e7b59d2e9a221b2a956dcc0e0711eec12118e
by nathan[X86][NFC] structure-return simplificiation
The X86 backend only needs to know whether structure return is via an sret pointer. This removes the categorization enumeration and adjusts, templatizes and renames the related functions.
Differential Revision: https://reviews.llvm.org/D109966
|
 | llvm/lib/Target/X86/X86ISelLowering.cpp |
Commit
b29186c08ae230d0decbca67565be68919c6b24d
by vince.a.bridgers[analyzer] canonicalize special case of structure/pointer deref
This simple change addresses a special case of structure/pointer aliasing that produced different symbolvals, leading to false positives during analysis.
The reproducer is as simple as this.
```lang=C++ struct s { int v; };
void foo(struct s *ps) { struct s ss = *ps; clang_analyzer_dump(ss.v); // reg_$1<int Element{SymRegion{reg_$0<struct s *ps>},0 S64b,struct s}.v> clang_analyzer_dump(ps->v); //reg_$3<int SymRegion{reg_$0<struct s *ps>}.v> clang_analyzer_eval(ss.v == ps->v); // UNKNOWN } ```
Acks: Many thanks to @steakhal and @martong for the group debug session.
Reviewed By: steakhal, martong
Differential Revision: https://reviews.llvm.org/D110625
|
 | clang/test/Analysis/ptr-arith.c |
 | clang/lib/StaticAnalyzer/Core/Store.cpp |
Commit
78873840ff4112e6fb8e04fa6f7637febe114c96
by mkazantsev[Test] Add some more symmetrical test cases for D110517
More similar cases to see that the opt we are trying to make is generic enough.
|
 | llvm/test/Transforms/IndVarSimplify/outer_phi.ll |
Commit
b9b90bb5426ffc23cf90f133a90d1469d263522c
by llvm-dev[clang] Replace report_fatal_error(std::string) uses with report_fatal_error(Twine)
As described on D111049, we're trying to remove the <string> dependency from error handling and replace uses of report_fatal_error(const std::string&) with the Twine() variant which can be forward declared.
|
 | clang/include/clang/Serialization/ASTRecordReader.h |
 | clang/lib/Serialization/ASTReaderDecl.cpp |
 | clang/lib/Tooling/CommonOptionsParser.cpp |
 | clang/lib/Basic/ProfileList.cpp |
 | clang-tools-extra/unittests/clang-tidy/ClangTidyTest.h |
 | clang/lib/CodeGen/ObjectFilePCHContainerOperations.cpp |
Commit
21661607cabd3927a56481e5382c4a68ffe6c2f3
by llvm-dev[llvm] Replace report_fatal_error(std::string) uses with report_fatal_error(Twine)
As described on D111049, we're trying to remove the <string> dependency from error handling and replace uses of report_fatal_error(const std::string&) with the Twine() variant which can be forward declared.
|
 | llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp |
 | llvm/lib/Transforms/Utils/SymbolRewriter.cpp |
 | llvm/tools/llvm-exegesis/lib/Assembler.cpp |
 | llvm/lib/CodeGen/GlobalISel/Utils.cpp |
 | llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp |
 | llvm/lib/ExecutionEngine/RuntimeDyld/RTDyldMemoryManager.cpp |
 | llvm/lib/Target/X86/X86LoadValueInjectionLoadHardening.cpp |
 | llvm/tools/llvm-readobj/ARMEHABIPrinter.h |
 | llvm/lib/LTO/ThinLTOCodeGenerator.cpp |
 | llvm/tools/llvm-rtdyld/llvm-rtdyld.cpp |
 | llvm/lib/Support/raw_ostream.cpp |
 | llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp |
 | llvm/include/llvm/Object/ELFObjectFile.h |
 | llvm/lib/LTO/LTOBackend.cpp |
 | llvm/lib/IR/LegacyPassManager.cpp |
 | llvm/lib/Target/WebAssembly/WebAssemblyAsmPrinter.cpp |
 | llvm/lib/Bitcode/Reader/MetadataLoader.cpp |
 | llvm/lib/Support/SpecialCaseList.cpp |
 | llvm/tools/llvm-objdump/ELFDump.cpp |
 | llvm/lib/IR/DiagnosticHandler.cpp |
 | llvm/lib/Transforms/Instrumentation/InstrProfiling.cpp |
 | llvm/lib/Object/RelocationResolver.cpp |
 | llvm/include/llvm/Support/Windows/WindowsSupport.h |
 | llvm/tools/llvm-lto/llvm-lto.cpp |
 | llvm/lib/MC/MCELFStreamer.cpp |
 | llvm/lib/Transforms/IPO/FunctionImport.cpp |
 | llvm/lib/Support/Error.cpp |
 | llvm/lib/Target/BPF/BPFMIChecking.cpp |
 | llvm/lib/Transforms/Instrumentation/DataFlowSanitizer.cpp |
 | llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp |
 | llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp |
 | llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp |
 | llvm/lib/Target/Hexagon/HexagonInstrInfo.cpp |
Commit
e9f4fa75ed19a075593928644de92b398345772a
by llvm-dev[llvm] Unix.h - Replace report_fatal_error(std::string) with report_fatal_error(Twine)
As described on D111049, we're trying to remove the <string> dependency from error handling and replace uses of report_fatal_error(const std::string&) with the Twine() variant which can be forward declared.
|
 | llvm/lib/Support/Unix/Unix.h |
Commit
79d13bf22c169cf83515e799d45db8d6424104fd
by Amara EmersonRevert "Revert "[GlobalISel][IRTranslator] Emit trap intrinsic for "unreachable"""
This reverts commit d95cd81141a4e398e0d3337cb2e6617281d06278.
Re-land the original patch now that the bug this exposed in selection has been fixed by 6bc64e24c38a
|
 | llvm/include/llvm/CodeGen/GlobalISel/IRTranslator.h |
 | llvm/test/CodeGen/AArch64/GlobalISel/irtranslator-unreachable.ll |
 | llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp |
Commit
00e704bf080ffeeb9e334fb3ab71594f9aa50969
by pavel[lldb] Remove "dwarf dynamic register size expressions" from RegisterInfo
These were added to support some mips registers on linux, but linux mips support has now been removed due.
They are still referenced in the freebds mips implementation, but the completeness of that implementation is also unknown. All other architectures just set these fields to zero, which is a cause of significant bloat in our register info definitions.
Arm also has registers with variable sizes, but they were implemented in a more gdb-compatible fashion and don't use this feature.
Differential Revision: https://reviews.llvm.org/D110914
|
 | lldb/source/Plugins/Process/Utility/RegisterInfos_i386.h |
 | lldb/source/Target/DynamicRegisterInfo.cpp |
 | lldb/source/Plugins/Process/Utility/RegisterContextDarwin_x86_64.cpp |
 | lldb/source/Target/RegisterContext.cpp |
 | lldb/source/Plugins/ABI/PowerPC/ABISysV_ppc.cpp |
 | lldb/source/Plugins/Process/Utility/RegisterContextLinux_x86_64.cpp |
 | lldb/source/Plugins/Process/Utility/RegisterContextDarwin_arm64.cpp |
 | lldb/source/Plugins/Process/Utility/RegisterInfos_arm.h |
 | lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp |
 | lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.h |
 | lldb/source/Plugins/ABI/ARM/ABIMacOSX_arm.cpp |
 | lldb/source/Plugins/Process/Utility/RegisterInfos_powerpc.h |
 | lldb/source/Plugins/ABI/SystemZ/ABISysV_s390x.cpp |
 | lldb/source/Plugins/Process/Utility/RegisterContextWindows_i386.cpp |
 | lldb/source/Plugins/Process/Utility/RegisterInfos_mips64.h |
 | lldb/source/Plugins/Process/gdb-remote/GDBRemoteRegisterContext.cpp |
 | lldb/source/Plugins/Process/Utility/RegisterContextWindows_x86_64.cpp |
 | lldb/source/Plugins/Process/Utility/RegisterContextDarwin_arm.cpp |
 | lldb/source/Plugins/Process/Utility/RegisterContextLinux_i386.cpp |
 | lldb/source/Plugins/Process/Utility/RegisterInfos_arm64.h |
 | lldb/unittests/tools/lldb-server/tests/MessageObjects.cpp |
 | lldb/source/Plugins/Process/Utility/RegisterInfoPOSIX_arm.cpp |
 | lldb/source/Plugins/Process/minidump/RegisterContextMinidump_ARM64.cpp |
 | lldb/source/Plugins/Process/Utility/RegisterInfos_arm64_sve.h |
 | lldb/unittests/Target/DynamicRegisterInfoTest.cpp |
 | lldb/include/lldb/Target/DynamicRegisterInfo.h |
 | lldb/source/Plugins/Instruction/ARM64/EmulateInstructionARM64.cpp |
 | lldb/source/Plugins/Process/Utility/RegisterInfos_s390x.h |
 | lldb/source/Plugins/ABI/ARM/ABISysV_arm.cpp |
 | lldb/include/lldb/Target/RegisterContext.h |
 | lldb/include/lldb/lldb-private-types.h |
 | lldb/source/Plugins/ABI/Mips/ABISysV_mips.cpp |
 | lldb/source/Plugins/Process/Utility/RegisterContextDarwin_i386.cpp |
 | lldb/source/Plugins/Process/minidump/RegisterContextMinidump_ARM.cpp |
 | lldb/source/Plugins/Process/Utility/RegisterInfos_x86_64.h |
 | lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerLLGS.cpp |
 | lldb/source/Plugins/Process/Utility/RegisterInfos_ppc64le.h |
 | lldb/source/Plugins/ABI/Hexagon/ABISysV_hexagon.cpp |
 | lldb/source/Plugins/ABI/Mips/ABISysV_mips64.cpp |
 | lldb/source/Plugins/Process/Utility/RegisterInfos_ppc64.h |
 | lldb/source/Plugins/Process/Utility/RegisterInfoPOSIX_arm64.cpp |
Commit
e244a6fec7c9724bca31a49fec34400c1e4dc417
by llvm-dev[mlir] Replace report_fatal_error(std::string) uses with report_fatal_error(Twine)
As described on D111049, we're trying to remove the <string> dependency from error handling and replace uses of report_fatal_error(const std::string&) with the Twine() variant which can be forward declared.
|
 | mlir/lib/Interfaces/DataLayoutInterfaces.cpp |
 | mlir/include/mlir/IR/Builders.h |
 | mlir/lib/Reducer/Tester.cpp |
Commit
a30a36f66aea459337999a000c7997b220b25227
by mgorny[lldb] [ABI/X86] Split base x86 and i386 classes
Split the ABIX86 class into two classes: base ABIX86 class that is common to 32-bit and 64-bit ABIs, and ABIX86_i386 class that is the base for 32-bit ABIs. This removes the confusing concept that ABIX86 initializes 64-bit ABIs but is only the base for 32-bit ABIs.
Differential Revision: https://reviews.llvm.org/D111216
|
 | lldb/source/Plugins/ABI/X86/ABIX86_64.h |
 | lldb/source/Plugins/ABI/X86/ABIX86_i386.h |
 | lldb/source/Plugins/ABI/X86/ABIX86_i386.cpp |
 | lldb/source/Plugins/ABI/X86/ABIMacOSX_i386.h |
 | lldb/source/Plugins/ABI/X86/ABIX86.h |
 | lldb/source/Plugins/ABI/X86/ABIX86.cpp |
 | lldb/source/Plugins/ABI/X86/ABISysV_i386.h |
 | lldb/source/Plugins/ABI/X86/CMakeLists.txt |
Commit
1e013f112efd2754a22ee9298aef997406ea5852
by llvmgnsyncbot[gn build] Port a30a36f66aea
|
 | llvm/utils/gn/secondary/lldb/source/Plugins/ABI/X86/BUILD.gn |
Commit
576ab15b9092e5a3ef7db656d2472d633cae96a5
by mkazantsev[Test] Few more symmetrical test for D110517
|
 | llvm/test/Transforms/IndVarSimplify/outer_phi.ll |
Commit
02e690ba0b10c422cbec77105eb40835dab57092
by mgorny[lldb] [FreeBSD] Fix building on systems without PT_COREDUMP
PT_COREDUMP is a relatively recent addition. Use an #ifdef to skip it if the underlying system does not support it.
Differential Revision: https://reviews.llvm.org/D111214
|
 | lldb/source/Plugins/Process/FreeBSD/NativeProcessFreeBSD.cpp |
 | lldb/test/API/tools/lldb-server/TestGdbRemoteSaveCore.py |
Commit
db231ebdb07f38f8b5d92311a4dc89e63c5a9d05
by spatel[InstCombine] fold fake vector extract to shift+trunc
We already handle more complicated cases like: extelt (bitcast (inselt poison, X, 0)) --> trunc (lshr X)
But we missed this simpler pattern: https://alive2.llvm.org/ce/z/D55h64 / https://alive2.llvm.org/ce/z/GKzzRq
This is part of solving: https://llvm.org/PR52057
I made the transform depend on legal/desirable int type to avoid creating a shift of an illegal type (for example i128). I'm not sure if that restriction is actually necessary, but we can change that as a follow-up if the backend can deal with integer ops on too-wide illegal types.
The pile of AVX512 test changes are all neutral AFAICT - the x86 backend seems to know how to turn that into the expected "kmov" instructions.
Differential Revision: https://reviews.llvm.org/D111082
|
 | llvm/test/Transforms/InstCombine/extractelement.ll |
 | llvm/lib/Transforms/InstCombine/InstCombineVectorOps.cpp |
 | llvm/test/Transforms/InstCombine/X86/x86-avx512-inseltpoison.ll |
 | llvm/test/Transforms/InstCombine/X86/x86-avx512.ll |
 | llvm/lib/Transforms/InstCombine/InstCombineInternal.h |