- May 24, 2020
-
-
Simon Pilgrim authored
Fixes implicit dependency that will be exposed by a future patch.
-
Florian Hahn authored
VPWidenSelectRecipe already contains a VPUser, but it is not used. This patch updates the code related to VPWidenSelectRecipe to use VPUser for its operands. Reviewers: Ayal, gilr, rengolin Reviewed By: gilr Differential Revision: https://reviews.llvm.org/D80219
-
Simon Pilgrim authored
As we're inheriting from TargetLoweringObjectFileELF, TargetLoweringObjectFileImpl.h already declares all types we require in the overrides.
-
Simon Pilgrim authored
Ensure AMDGPULibFunc.h module header is first, and fix exposed missing forward declaration.
-
Simon Pilgrim authored
-
Stephen Kelly authored
The old return values mean * implicit conversion * not being able to write sizeOfExpr().bind() for example
-
Stephen Kelly authored
-
Stephen Kelly authored
-
Simon Pilgrim authored
By moving X86Subtarget::isPositionIndependent() into X86Subtarget.cpp we can remove the header dependency and move the few uses into source files.
-
Simon Pilgrim authored
Both paths always create the same DemandedBits mask.
-
Simon Pilgrim authored
For the 'inverse shift', we currently always perform a subtraction of the original (masked) shift amount. But for the case where we are handling power-of-2 type widths, we can replace: (sub bw-1, (and amt, bw-1) ) -> (and (xor amt, bw-1), bw-1) -> (and ~amt, bw-1) This allows x86 shifts to fold away the and-mask. Followup to D77301 + D80466. http://volta.cs.utah.edu:8080/z/Nod0Gr Differential Revision: https://reviews.llvm.org/D80489
-
Simon Pilgrim authored
-
Simon Pilgrim authored
CONCAT_VECTORS/INSERT_SUBVECTOR both are custom on v32i1/v64i1 like the other ops in the loop.
-
Simon Pilgrim authored
We have to include X86Subtarget.h.
-
Tobias Hieta authored
Differential Revision: https://reviews.llvm.org/D80438
-
Simon Pilgrim authored
On X86 (AVX1/AVX2), non-boolean masked loads only demand the sign bit of the mask, we already do the equivalent for masked stores. Annoyingly I can't easily handle this inside TargetLowering::SimplifyDemandedBits as this is an x86 specific case for a generic node. Differential Revision: https://reviews.llvm.org/D80478
-
Craig Topper authored
This adds the family/model returned by CPUID for some Intel Comet Lake CPUs. Instruction set and tuning wise these are the same as "skylake". These are not in the Intel SDM yet, but these should be correct.
-
Craig Topper authored
-
Simon Pilgrim authored
This is a preliminary patch before I deal with the xor+and issue raised in D77301. We get much better code for i8/i16 funnel shifts by concatenating the operands together and performing the shift as a double width type, it avoids repeated use of the shift amount and partial registers. fshl(x,y,z) -> (((zext(x) << bw) | zext(y)) << (z & (bw-1))) >> bw. fshr(x,y,z) -> (((zext(x) << bw) | zext(y)) >> (z & (bw-1))) >> bw. Alive2: http://volta.cs.utah.edu:8080/z/CZx7Cn This doesn't do as well for i32 cases on x86_64 (the xor+and followup patch is much better) so I haven't bothered with that. Cases with constant amounts are more dubious as well so I haven't currently bothered with those - its these kind of 'edge' cases that put me off trying to put this in TargetLowering::expandFunnelShift. Differential Revision: https://reviews.llvm.org/D80466
-
Amara Emerson authored
Although writing to wzr/xzr is correct since we don't care about the result of the sub, only the flags, doing so causes tail merge blocks to fail. Writing to an unused virtual register instead allows the optimization to fire, improving performance significantly on 256.bzip2. Differential Revision: https://reviews.llvm.org/D80460
-
Vitaly Buka authored
Summary: The test demonstrates the current state of the compiler and I am going to resolve FIXME in followup patches. Reviewers: eugenis Reviewed By: eugenis Subscribers: inglorion, hiraditya, steven_wu, dexonsmith, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D80039
-
Eli Friedman authored
This doesn't make a difference for linkers that support the option, but it improves the error message from older linkers that don't support it.
-
Amy Kwan authored
This patch introduces a TargetLowering query, isMulhCheaperThanMulShift. Currently in DAG Combine, it will transform mulhs/mulhu into a wider multiply and a shift if the wide multiply is legal. This TLI function is implemented on 64-bit PowerPC, as it is more desirable to have multiply-high over multiply + shift for words and doublewords. Having multiply-high can also aid in further transformations that can be done. Differential Revision: https://reviews.llvm.org/D78271
-
zoecarver authored
__test_has_construct. In C++17 some tests started failing after a521532a. This fixes those errors by suppressing the deprecation warning when calling `construct` in `__test_has_construct`. This is the same solution as `__has_destroy_test` already uses. Reviewers: ldionne, #libc! Subscribers: dexonsmith, libcxx-commits Tags: #libc Differential Revision: https://reviews.llvm.org/D80481
-
Fangrui Song authored
-
zoecarver authored
Summary: Libcxx only supports compilers with variadics. We can safely remove all "fake" variadic overloads of allocator_traits::construct. This also provides the correct behavior if anything other than exactly one argument is supplied to allocator_traits::construct in C++03 mode. Reviewers: ldionne, #libc! Subscribers: dexonsmith, libcxx-commits Tags: #libc Differential Revision: https://reviews.llvm.org/D80067
-
Jonas Devlieghere authored
This reverts commit f2ffa33c. My local checkout was behind and Eric already took care of it in the meantime.
-
Jonas Devlieghere authored
Fixes warning: enumeration value 'eExpressionThreadVanished' not handled in switch [-Wswitch] in CommandInterpreter.cpp.
-
Jinsong Ji authored
Fixed following trivial issues that caught by warnings by adding indents. clang/docs/ConstantInterpreter.rst:133: WARNING: Bullet list ends without a blank line; unexpected unindent. clang/docs/ConstantInterpreter.rst:136: WARNING: Bullet list ends without a blank line; unexpected unindent. clang/docs/ConstantInterpreter.rst:153: WARNING: Bullet list ends without a blank line; unexpected unindent. clang/docs/ConstantInterpreter.rst:195: WARNING: Bullet list ends without a blank line; unexpected unindent. clang/docs/ConstantInterpreter.rst:225: WARNING: Bullet list ends without a blank line; unexpected unindent. clang/docs/ConstantInterpreter.rst:370: WARNING: Bullet list ends without a blank line; unexpected unindent. clang/docs/ConstantInterpreter.rst:383: WARNING: Bullet list ends without a blank line; unexpected unindent.
-
Florian Hahn authored
This patch updates computeConstantRange to optionally take an assumption cache as argument and use the available assumptions to limit the range of the result. Currently this is limited to assumptions that are comparisons. Reviewers: reames, nikic, spatel, jdoerfert, lebedev.ri Reviewed By: nikic Differential Revision: https://reviews.llvm.org/D76193
-
Nikita Popov authored
Disable pruning of unreachable resumes in the DwarfEHPrepare pass at optnone. While I expect the pruning itself to be essentially free, this does require a dominator tree calculation, that is not used for anything else. Saving this DT construction makes for a 0.4% O0 compile-time improvement. Differential Revision: https://reviews.llvm.org/D80400
-
Simon Pilgrim authored
Replace with forward declaration and move dependency down to source files that actually need it. Both TargetLowering.h and TargetMachine.h are 2 of the most expensive headers (top 10) in the ClangBuildAnalyzer report when building llc.
-
Matt Arsenault authored
This should function as any other SimplifyCFGOption rather than having the transform check and specially consider the attribute itself.
-
Matt Arsenault authored
We have to assume undef could be an snan, which would need quieting so returning qnan is safer than undef. Also consider strictfp, and don't care if the result rounded.
-
Matt Arsenault authored
The various HIP builds are all inconsistent. The default llvm install goes to ${INSTALL_PREFIX}/bin/clang, but the rocm packaging scripts move this under ${INSTALL_PREFIX}/llvm/bin/clang. Some other builds further pollute this with ${INSTALL_PREFIX}/bin/x86_64/clang. These should really be consolidated, but try to handle them for now. -
Matt Arsenault authored
I don't think any of these registers are used in contexts where this would do anything yet.
-
Matt Arsenault authored
This should eventually model FP mode constraints as well as the other special fields it tracks.
-
Matt Arsenault authored
This was printing about r600 not being a valid subtarget for an amdgcn triple. This is an awkward place because r600 and amdgcn unfortunately occupy the same target. Silence the warning by specifying an explicit subtarget.
-
Fangrui Song authored
An undefined symbol in a shared object can be versioned, like `f@v1`. We currently insert `f` as an Undefined into the symbol table, but we should insert `f@v1` instead. The string `v1` is inferred from SHT_GNU_versym and SHT_GNU_verneed. This patch implements the functionality. Failing to do this can cause two issues: * If a versioned symbol referenced by a shared object is defined in the executable, we will fail to export it. * If a versioned symbol referenced by a shared object in another object file, --no-allow-shlib-undefined may spuriously report an "undefined reference to " error. See https://bugs.llvm.org/show_bug.cgi?id=44842 (Linking -lfftw3 -lm on Arch Linux can cause `undefined reference to __log_finite`) Reviewed By: grimar Differential Revision: https://reviews.llvm.org/D80059
-
Matt Arsenault authored
This is quite expensive and it's already available. Just ReadLegalValueTypes is taking 4 seconds for me in a debug build for AMDGPU's -gen-instr-info, and this was introducing a second call.
-