- Jul 26, 2020
-
-
Matt Arsenault authored
This matches the DAG behavior and fixes immediate folding
-
Matt Arsenault authored
Split into separate tests and make more consistent with the others.
-
Xing GUO authored
This patch renames getUsedSectionNames() to getNonEmptySectionNames. NFC.
-
Sanjay Patel authored
-
Sanjay Patel authored
Follow-up to D84035 / rG7393d757. This sidesteps a question of FMF/poison on fcmp raised in PR46077: http://bugs.llvm.org/PR46077 https://alive2.llvm.org/ce/z/TCsyzD define i1 @src(float %x) { %0: %x42 = fadd nnan ninf float %x, 42.000000 %r = fcmp ueq float %x42, inf ret i1 %r } => define i1 @tgt(float %x) { %0: ret i1 0 } Transformation seems to be correct! https://alive2.llvm.org/ce/z/FQaH7a define i1 @src(i8 %x) { %0: %cast = uitofp i8 %x to float %r = fcmp one float inf, %cast ret i1 %r } => define i1 @tgt(i8 %x) { %0: ret i1 1 } Transformation seems to be correct!
-
Sanjay Patel authored
-
Juneyoung Lee authored
-
Juneyoung Lee authored
This is a simple patch that adds constant folding for freeze instruction. IIUC, it isn't needed to update ConstantFold.cpp because there is no freeze constexpr. Reviewed By: nikic Differential Revision: https://reviews.llvm.org/D84597
-
Juneyoung Lee authored
This is a simple patch that makes canCreateUndefOrPoison use Instruction::isBinaryOp because BinaryOperator inherits Instruction. Reviewed By: nikic Differential Revision: https://reviews.llvm.org/D84596
-
Juneyoung Lee authored
-
Juneyoung Lee authored
-
Roman Lebedev authored
DenseMap is a single allocation underneath, so this is has pretty expected performance impact on large-ish (3.8G) xray log processing time.
-
Roman Lebedev authored
It doesn't really need to know where Timings are stored, it just needs to be able to sort them, so MutableArrayRef is enough. That uncovers an interesting quirk that it relied on implicit double->int conversion for calculating percentiles.
-
Alex Richardson authored
When running multiple shards, don't include skipped tests in the xunit output since merging the files will result in duplicates. In our CHERI Jenkins CI, I configured the libc++ tests to run using sharding (since we are testing using a single-CPU QEMU). We then merge the generated XUnit xml files to produce a final result, but if the individual XMLs report tests excluded due to sharding each test is included N times in the final result. This also makes it difficult to find the tests that were skipped due to missing REQUIRES: etc. Reviewed By: yln Differential Revision: https://reviews.llvm.org/D84235
-
Alex Richardson authored
Like Android, FreeBSDs libc calls memchr which causes this test to fail. Reviewed By: emaste Differential Revision: https://reviews.llvm.org/D84541
-
Amara Emerson authored
[AArch64][GlobalISel] Make <8 x s16> and <16 x s8> legal types for G_SHUFFLE_VECTOR and G_IMPLICIT_DEF. Trivial change, we're still missing support for rev matching for these types in the combiner.
-
Craig Topper authored
The switch in emitNop uses 64-bit registers for nops exceeding 2 bytes. This isn't valid outside 64-bit mode. We could fix this easily enough, but there are no users that ask for more than 2 bytes outside 64-bit mode. Inlining the method to make the coupling between the two methods more explicit.
-
Craig Topper authored
This isn't used and we've decided in the past that a CPU enum for tuning is not a good idea.
-
Jacques Pienaar authored
Previous changes generalized some of the operands and results. Complete a larger group of those to simplify progressive lowering. Also update some of the declarative asm form due to generalization. Tried to keep it mostly mechanical.
-
Changpeng Fang authored
DADCombiner: Don't simplify the token factor if the node's number of operands already exceeds TokenFactorInlineLimit Summary: In parallelizeChainedStores, a TokenFactor was created with the size greater than 3000. We found that DAGCombiner::visitTokenFactor will consume a huge amount of time on such nodes. Since the number of operands already exceeds TokenFactorInlineLimit, we propose to give up simplification with the consideration of compile time. Reviewers: @spatel, @arsenm Differential Revision: https://reviews.llvm.org/D84204
-
Craig Topper authored
-
Eric Christopher authored
as it's causing numerous (176) test failures on linux. This reverts commit 1d9b860f.
-
Eric Christopher authored
context fixing an unused variable warning.
-
Nemanja Ivanovic authored
I mixed up the precedence of operators in the assert and thought I had it right since there was no compiler warning. This just adds the parentheses in the expression as needed.
-
Philip Reames authored
Just fixing a few minor stylistic issues.
-
Craig Topper authored
We don't handle these yet and D83630 won't improve that, but at least we'll have the tests.
-
Roman Lebedev authored
We can happily turn function definitions into declarations, thus obscuring their argument from being elided by this pass. I don't believe there is a good reason to just ignore declarations. likely even proper llvm intrinsics ones, at worst the input becomes uninteresting. The other question here is that all these transforms are all-or-nothing. In some cases, should we be treating each use separately? The main blocker here seemed to be that llvm::CloneFunctionInto() does `&OldFunc->front()`, which inserts a nullptr into a densemap, which is not happy about it and asserts.
-
Roman Lebedev authored
replaceFunctionCalls() is very non-exhaustive, it only handles CallInst's. Which means, by the time we drop old function, there may still be uses of it lurking around. Let's instead whack-a-mole them by all by replacing with undef. I'm not sure this is the best handling, especially for calls, but IMO poorly reduced input is much better than crashing reduction tool. A (previously-crashing!) test added. Fixes https://bugs.llvm.org/show_bug.cgi?id=46819
-
Roman Lebedev authored
Terminator may have returned value, so we need to replace uses, and in general handle invoke as a branch inst. I'm not sure this is the best handling, but IMO poorly reduced input is much better than crashing reduction tool. A (previously-crashing!) test added. Fixes https://bugs.llvm.org/show_bug.cgi?id=46818
-
Lang Hames authored
The new names, DylibHandle and loadDylib, are more concise and make clear that these utilities are for loading dynamic libraries, not static ones.
-
Lang Hames authored
Subclasses will commonly gather that information from a remote during construction, in which case they won't have meaningful values to pass to TargetProcessControl's constructor.
-
Frederik Gossen authored
Re-landing with dependent change landed and error condition relaxed. Beyond the change to error condition exactly https://reviews.llvm.org/D84445.
-
Jacques Pienaar authored
Based on https://reviews.llvm.org/D84439 but less restrictive, else we don't allow shape_of to be able to produce a ranked output and doesn't allow for iterative refinement here. We can consider making it more restrictive later.
-
Jacques Pienaar authored
This reverts commit 55ced04d. Forgot to submit depend change first.
-
Frederik Gossen authored
Differential Revision: https://reviews.llvm.org/D84445
-
Philip Reames authored
(Disabled under flag for the moment) This is part of a larger project wherein we are finally integrating lowering of gc live operands with the register allocator. Today, we force spill all operands in SelectionDAG. The code to do so is distinctly non-optimal. The approach this patch is working towards is to instead lower the relocations directly into the MI form, and let the register allocator pick which ones get spilled and which stack slots they get spilled to. In terms of performance, the later part is actually more important as it avoids redundant shuffling of values between stack slots. This particular change adds ISEL support to produce the variadic def STATEPOINT form required by the above. In particular, the first N are lowered to variadic tied def/use pairs. So new statepoint looks like this: reloc1,reloc2,... = STATEPOINT ..., base1, derived1<tied-def0>, base2, derived2<tied-def1>, ... N is limited by the maximal number of tied registers machine instruction can have (15 at the moment). The current patch is restricted to handling relocations within a single basic block. Cross block relocations (e.g. invokes) are handled via the legacy mechanism. This restriction will be relaxed in future patches. Patch By: dantrushin Differential Revision: https://reviews.llvm.org/D81648
-
Craig Topper authored
[X86] Add llvm.roundeven test cases. Add f80 tests cases for constrained intrinsics that lower to libcalls. NFC
-
Craig Topper authored
The type is called x86_fp80, but when it is printed in the intrinsic name it should be f80. The parser doesn't seem to care that the name was wrong.
-
Fangrui Song authored
Many driver options are neither 'DriverOption' nor 'LinkerInput'. When gcc is used for linking, these options get forwarded even if they don't have anything to do with linking. Among these options, clang-specific ones can cause gcc to error. Just use 'OPT_Link_Group' and a new flag 'LinkOption' for options which already have a group. gfortran support apparently bit rots (which does not seem to make much sense). XFAIL the test.
-
LLVM GN Syncbot authored
-