- Feb 16, 2021
-
-
Simon Pilgrim authored
-
Simon Pilgrim authored
Avoids so many APInt instances by directly using the APInt reference from getAPIntValue.
-
Kerry McLaughlin authored
This patch enables scalable vectorization of loops with integer/fast reductions, e.g: ``` unsigned sum = 0; for (int i = 0; i < n; ++i) { sum += a[i]; } ``` A new TTI interface, isLegalToVectorizeReduction, has been added to prevent reductions which are not supported for scalable types from vectorizing. If the reduction is not supported for a given scalable VF, computeFeasibleMaxVF will fall back to using fixed-width vectorization. Reviewed By: david-arm, fhahn, dmgreen Differential Revision: https://reviews.llvm.org/D95245 -
Jan Svoboda authored
This patch generates the `-f[no-]finite-loops` arguments from `CompilerInvocation` (added in D96419), fixing test failures of Clang built with `-DCLANG_ROUND_TRIP_CC1_ARGS=ON`. Reviewed By: fhahn Differential Revision: https://reviews.llvm.org/D96761
-
Denys Petrov authored
Summary: Refactor SValBuilder::evalCast function. Make the function clear and get rid of redundant and repetitive code. Unite SValBuilder::evalCast, SimpleSValBuilder::dispatchCast, SimpleSValBuilder::evalCastFromNonLoc and SimpleSValBuilder::evalCastFromLoc functions into single SValBuilder::evalCast. This patch shall not change any previous behavior. Differential Revision: https://reviews.llvm.org/D90157
-
Faris Rehman authored
Add the following options: * -fimplicit-none and -fno-implicit-none * -fbackslash and -fno-backslash * -flogical-abbreviations and -fno-logical-abbreviations * -fxor-operator and -fno-xor-operator * -falternative-parameter-statement * -finput-charset=<value> Summary of changes: - Enable extensions in CompilerInvocation#ParseFrontendArgs - Add encoding_ to Fortran::frontend::FrontendOptions - Add encoding to Fortran::parser::Options Differential Revision: https://reviews.llvm.org/D96407
-
Tres Popp authored
Previously this might happen if there was no elseRegion and the method was asked for all successor regions. Differential Revision: https://reviews.llvm.org/D96764
-
James Henderson authored
These directives force the associated address to be interpreted as a function or data respectively. CODE is the default when not specified. Differential Revision: https://reviews.llvm.org/D96712 Reviewed by: MaskRay
-
Fraser Cormack authored
These didn't show up as failures locally.
-
Fraser Cormack authored
Non-splatted non-integer build_vector nodes were mistakenly being lowered as VID expressions, which should not happen. VID can only be used to select integer build_vector nodes. Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D96718
-
Fraser Cormack authored
The patterns mostly follow the scalar counterparts, save for some extra optimizations to match the vector/scalar forms. The patch adds a DAGCombine for ISD::FCOPYSIGN to try and reorder ISD::FNEG around any ISD::FP_EXTEND or ISD::FP_TRUNC of the second operand. This helps us achieve better codegen to match vfsgnjn. Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D96028
-
Andrzej Warzynski authored
-
Nicolas Vasilache authored
This revision adds support for hoisting "subtensor + vector.transfer_read" / "subtensor_insert + vector.transfer_write pairs" across scf.for. The unit of hoisting becomes a HoistableRead / HoistableWrite struct which contains a pair of "vector.transfer_read + optional subtensor" / "vector.transfer_write + optional subtensor_insert". scf::ForOp canonicalization patterns are applied greedily on the successful application of the transformation to cleanup the IR more eagerly and potentially expose more transformation opportunities. Differential revision: https://reviews.llvm.org/D96731
-
Andrzej Warzynski authored
This patch adds the following compiler frontend driver options: * -fdebug-unparse (f18 spelling: -funparse) * -fdebug-unparse-with-symbols (f18 spelling: -funparse-with-symbols) The new driver will only accept the new spelling. `f18` will accept both the original and the new spelling. A new base class for frontend actions is added: `PrescanAndSemaAction`. This is added to reduce code duplication that otherwise these new options would lead to. Implementation from * `ParseSyntaxOnlyAction::ExecutionAction` is moved to: * `PrescanAndSemaAction::BeginSourceFileAction` This implementation is now shared between: * PrescanAndSemaAction * ParseSyntaxOnlyAction * DebugUnparseAction * DebugUnparseWithSymbolsAction All tests that don't require other yet unimplemented options are updated. This way `flang-new -fc1` is used instead of `f18` when `FLANG_BUILD_NEW_DRIVER` is set to `On`. In order to facilitate this, `%flang_fc1` is added in the LIT configuration (lit.cfg.py). `asFortran` from f18.cpp is duplicated as `getBasicAsFortran` in FrontendOptions.cpp. At this stage it's hard to find a good place to share this method. I suggest that we revisit this once a switch from `f18` to `flang-new` is complete. Differential Revision: https://reviews.llvm.org/D96483
-
Sander de Smalen authored
This patch changes costAndCollectOperands to use InstructionCost for accumulated cost values. isHighCostExpansion will return true if the cost has exceeded the budget. Reviewed By: CarolineConcatto, ctetreau Differential Revision: https://reviews.llvm.org/D92238
-
Adrian Kuegel authored
This adds the lowering for expm1 for GPU backends. Differential Revision: https://reviews.llvm.org/D96756
-
Andrzej Warzynski authored
The following _action_ options are always used with `-fsyntax-only` (also an _action_ option): * -fdebug-dump-symbols * -fdebug-dump-parse-tree This patch makes the above options imply `-fsyntax-only`. From the perspective of `f18` this change saves typing and is otherwise a non-functional change. But it will simplify things in the new driver, `flang-new`, in which only the last action option is taken into account and executed. In other words, the following would only run `-fsyntax-only`: ``` flang-new -fdebug-dump-symbols -fsyntax-only <input> ``` whereas this would only run `-fdebug-dump-symbols`: ``` flang-new -fsyntax-only -fdebug-dump-symbols <input> ``` Differential Revision: https://reviews.llvm.org/D96528
-
LLVM GN Syncbot authored
-
Nathan Ridge authored
The patch also does some cleanup on the interface of the entry points from TargetFinder into the heuristic resolution code. Since the heuristic resolver is created in a place where the ASTContext is available, it can store the ASTContext and the NameFactory hack can be removed. Differential revision: https://reviews.llvm.org/D92290
-
Florian Hahn authored
This patch updates codegen to use VPValues to manage the generated scalarized instructions. Reviewed By: gilr Differential Revision: https://reviews.llvm.org/D92285
-
Adrian Kuegel authored
Differential Revision: https://reviews.llvm.org/D96704
-
Nicolas Vasilache authored
SliceAnalysis originally was developed in the context of affine.for within mlfunc. It predates the notion of region. This revision updates it to not hardcode specific ops like scf::ForOp. When rooted at an op, the behavior of the slice computation changes as it recurses into the regions of the op. This does not support gathering all values transitively depending on a loop induction variable anymore. Additional variants rooted at a Value are added to also support the existing behavior. Differential revision: https://reviews.llvm.org/D96702
-
Sameer Sahasrabuddhe authored
The GPUDivergenceAnalysis is now renamed to just "DivergenceAnalysis" since there is no conflict with LegacyDivergenceAnalysis. In the legacy PM, this analysis can only be used through the legacy DA serving as a wrapper. It is now made available as a pass in the new PM, and has no relation with the legacy DA. The new DA currently cannot handle irreducible control flow; its presence can cause the analysis to run indefinitely. The analysis is now modified to detect this and report all instructions in the function as divergent. This is super conservative, but allows the analysis to be used without hanging the compiler. Reviewed By: aeubanks Differential Revision: https://reviews.llvm.org/D96615
-
Jonas Devlieghere authored
The execl function takes both the executable and argv[0].
-
Dave Lee authored
-
Dave Lee authored
Delete unused `EnableTracer()` and `SetTracer()` functions on `Thread`. By deleting these, their `ThreadPlan` counterparts also become unused. Then, by deleting `ThreadPlanStack::EnableTracer`, `EnableSingleStep` becomes unused. With no more callers to `EnableSingleStep`, the value `m_single_step` is always true and can be removed as well. Differential Revision: https://reviews.llvm.org/D96666
-
Dave Lee authored
`GetRealStopInfo` has only one call site, and in that call site a reference to the concrete thread plan is available (`ThreadPlanCallUserExpression`), from which `GetRealStopInfo` can be called. Differential Revision: https://reviews.llvm.org/D96687
-
Dave Lee authored
Correct `RestoreThreadState` to a `void` return type. Also, update the signature of its callee, `Thread::RestoreThreadStateFromCheckpoint`, by updating it to a `void` return type, and making it non-`virtual`. Differential Revision: https://reviews.llvm.org/D96688
-
Akira Hatanaka authored
This fixes a bug where an object can get deallocated before reaching the end of its full formal lifetime. rdar://72110887 rdar://74123176
-
Kazu Hirata authored
-
Kazu Hirata authored
-
Kazu Hirata authored
-
Craig Topper authored
This stops tablegen from generating patterns with the opposite type in the opposite HwMode. This just adds wasted bytes to the isel table. This reduces the isel table by about 1800 bytes.
-
Matt Arsenault authored
The API is a bit awkward since you need to index into an array in the passed struct. I guess an alternative would be to pass all of the individual fields.
-
Matt Arsenault authored
Return the best covering index, and additional needed to complete the mask. This logically belongs in TargetRegisterInfo, although I ended up not needing it for why I originally split this out.
-
Nicolas Vasilache authored
Differential Revision: https://reviews.llvm.org/D96701
-
Arthur O'Dwyer authored
The namespace is unnecessary, and libc++ style is not to include it on type names. (As opposed to function names, where qualification affects ADL; and in certain function signatures where `std::` and `_VSTD::` might be mangled differently. This is none of those situations.)
-
Craig Topper authored
This is annoying because the condition code legalization belongs to LegalizeDAG, but our custom handler runs in Legalize vector ops which occurs earlier. This adds some of the mask binary operations so that we can combine multiple compares that we need for expansion. I've also fixed up RISCVISelDAGToDAG.cpp to handle copies of masks. This patch contains a subset of the integer setcc patch as well. That patch is dependent on the integer binary ops patch. I'll rebase based on what order the patches go in. Reviewed By: frasercrmck Differential Revision: https://reviews.llvm.org/D96567
-
Craig Topper authored
[RISCV][LegalizeTypes] Try to expand BITREVERSE before promoting if the promoted BITREVERSE would expand anyway. If we're going to end up expanding anyway, we should do it early so we don't create extra operations to handle the bytes added by promotion. Simlilar was done for BSWAP previously. Reviewed By: RKSimon Differential Revision: https://reviews.llvm.org/D96681
-
Muhammad Omair Javaid authored
TestMultipleTargets.py fails randomly on Arm/AArch64 Linux buildbot with no reasonable clues. I am marking it skipped for avoiding LLDB buildbot failures due to this test.
-