- Oct 26, 2020
-
-
Michał Górny authored
Include <x86/fpu.h> rather than <machine/fpu.h>, as the latter is not present on i386. Differential Revision: https://reviews.llvm.org/D90128
-
Tyker authored
-
Jean Perier authored
2 Bug fixes: - Do not resolve procedure as intrinsic if they appeared in an EXTERNAL attribute statement (one path was not considering this flag) - Emit an error if a procedure resolved to be an intrinsic function (resp. subroutine) is used as a subroutine (resp. function). Lowering was attempted while the evaluate::Expression for the call was missing without any errors. 1 behavior change: - Do not implicitly resolve subroutines (resp. functions) as intrinsics because their name is the name of an intrinsic function (resp. subroutine). Add justification in documentation. Reviewed By: klausler, tskeith Differential Revision: https://reviews.llvm.org/D90049
-
Tyker authored
This allows using annotation in a much more contexts than it currently has. especially when annotation with template or constexpr. Reviewed By: aaron.ballman Differential Revision: https://reviews.llvm.org/D88645
-
Kazushi (Jam) Marukawa authored
Add VCMP/VCPS/VCPX/VCMS/VCMX vector instructions. Also add regression tests. Reviewed By: simoll Differential Revision: https://reviews.llvm.org/D89643
-
Kazushi (Jam) Marukawa authored
Add VADD/VADS/VADX/VSUB/VSBS/VSBX/VMPY/VMPS/VMPX/VMPD/VDIV/VDVS/VDVX instructions. Also add regression tests. Reviewed By: simoll Differential Revision: https://reviews.llvm.org/D89642
-
Florian Hahn authored
This patch adds a remarks that provides counts for each opcode per basic block. An snippet of the generated information can be seen below. The current implementation uses the target specific opcode for the counts. For example, on AArch64 this means we currently get 2 entries for `add` instructions if the block contains 32 and 64 bit adds. Similarly, immediate version are treated differently. Unfortunately there seems to be no convenient way to get only the mnemonic part of the instruction as a string AFAIK. This could be improved in the future. ``` --- !Analysis Pass: asm-printer Name: InstructionMix DebugLoc: { File: arm64-instruction-mix-remarks.ll, Line: 30, Column: 30 } Function: foo Args: - String: 'BasicBlock: ' - BasicBlock: else - String: "\n" - String: INST_MADDWrrr - String: ': ' - INST_MADDWrrr: '2' - String: "\n" - String: INST_MOVZWi - String: ': ' - INST_MOVZWi: '1' ``` Reviewed By: anemet, thegameg, paquette Differential Revision: https://reviews.llvm.org/D89892 -
Sebastian Neubauer authored
If no pal metadata is given, default to the msgpack format instead of the legacy metadata. This makes tests better readable. Differential Revision: https://reviews.llvm.org/D90035
-
Evgeny Leviant authored
-
Kai Luo authored
-
Kazushi (Jam) Marukawa authored
Support atomic load instruction and add a regression test. VE uses release consitency, so need to insert fence around atomic instructions. This patch enable AtomicExpandPass and use emitLeadingFence and emitTrailingFence mechanism for such purpose. Reviewed By: simoll Differential Revision: https://reviews.llvm.org/D90135
-
Evgeny Leviant authored
Differential revision: https://reviews.llvm.org/D90024
-
Evgeny Leviant authored
Differential revision: https://reviews.llvm.org/D90029
-
Evgeny Leviant authored
Differential revision: https://reviews.llvm.org/D90045
-
LLVM GN Syncbot authored
-
David Green authored
This adds a MultiHazardRecognizer and starts to make use of it in the ARM backend. The idea of the class is to allow multiple independent hazard recognizers to be added to a single base MultiHazardRecognizer, allowing them to all work in parallel without requiring them to be chained into subclasses. They can then be added or not based on cpu or subtarget features, which will become useful in the ARM backend once more hazard recognizers are being used for various things. This also renames ARMHazardRecognizer to ARMHazardRecognizerFPMLx in the process, to more clearly explain what that recognizer is designed for. Differential Revision: https://reviews.llvm.org/D72939
-
Kazushi (Jam) Marukawa authored
Support atomic fence instruction and add a regression test. Add MEMBARRIER pseudo insturction also to use it as a barrier against to the compiler optimizations. Reviewed By: simoll Differential Revision: https://reviews.llvm.org/D90112
-
Max Kazantsev authored
-
Max Kazantsev authored
-
Max Kazantsev authored
-
Max Kazantsev authored
No exact example where it would help, but it's a generally a more powerful way to prove predicates.
-
Kirill Bobyrev authored
It requires Index.proto to be built first. Failed builds: https://github.com/clangd/clangd/runs/1305985916
-
Christudasan Devadasan authored
We use an absolute address for stack objects and it would be necessary to have a constant 0 for soffset field. Fixes: SWDEV-228562 Reviewed By: arsenm Differential Revision: https://reviews.llvm.org/D89234
-
Craig Topper authored
The 0xf3 prefix has been defined as wbnoinvd on Icelake Server. So the prefix isn't ignored by the CPU. AMD documentation suggests that wbnoinvd is treated as wbinvd on older processors. Intel documentation is not clear. Perhaps 0xf2 and 0x66 are treated the same, but its not documented. This patch changes TB to PS in the td file so 0xf2 and 0x66 will be treated as errors. This matches versions of objdump after wbnoinvd was added.
-
Liu, Chen3 authored
For now, we lost the encoding information if we using inline assembly. The encoding for the inline assembly will keep default even if we add the vex/evex prefix. Differential Revision: https://reviews.llvm.org/D90009
-
Craig Topper authored
-
Craig Topper authored
-
Sanjay Patel authored
This is a modified 2nd try of 22d10b8a (reverted by 1c837169 because it managed to expose an existing crashing bug that should be fixed by 74ffc823 ). Original commit message: This is similar in spirit to 01ea93d8 (memcpy) except that here the underlying caller assumptions were created for vectorizer use (throughput) rather than other passes. That meant targets could have an enormous throughput cost with no corresponding size, latency, or blended cost increase. The ARM costs show a small difference between throughput and size because there's an underlying difference in cmp/sel costs that is also predicated on cost-kind. Paraphrasing from the previous commits: This may not make sense for some callers, but at least now the costs will be consistently wrong instead of mysteriously wrong. Targets should provide better overrides if the current modeling is not accurate.
-
Sanjay Patel authored
I'm not sure if/how this ever worked, but it must not be tested currently because the basic tests added here were crashing as noted in the post-review comments for 1c837169 (which reverted another cost-model fix in 22d10b8a).
-
Nikita Popov authored
Same change as 0dda6333, but for mul expressions. We want to first fold any constant operans and then strengthen the nowrap flags, as we can compute more precise flags at that point.
-
Aaron Puchert authored
The constructor of Project asserts that the contained ValueDecl is not null, use that in the ThreadSafetyAnalyzer. In the case of LiteralPtr it's the other way around. Also dyn_cast<> is sufficient if we know something isn't null.
-
Aaron Puchert authored
Instead of just mutex members we also consider mutex globals. Unsurprisingly they are always in scope. Now the paper [1] says that > The scope of a class member is assumed to be its enclosing class, > while the scope of a global variable is the translation unit in > which it is defined. But I don't think we should limit this to TUs where a definition is available - a declaration is enough to acquire the mutex, and if a mutex is really limited in scope to a translation unit, it should probably be only declared there. The previous attempt in 9dcc82f3 was causing false positives because I wrongly assumed that LiteralPtrs were always globals, which they are not. This should be fixed now. [1] https://static.googleusercontent.com/media/research.google.com/en/us/pubs/archive/42958.pdf Fixes PR46354. Reviewed By: aaron.ballman Differential Revision: https://reviews.llvm.org/D84604
-
Nikita Popov authored
Establish parity with the handling of add expressions, by always constant folding mul expression operands before checking the depth limit (this is a non-recursive simplification). The code was already unconditionally constant folding the case where all operands were constants, but was not folding multiple constant operands together if there were also non-constant operands. This requires picking out a different demonstration for depth-based folding differences in the limit-depth.ll test.
-
Nikita Popov authored
Separate out the code handling constant folding into a separate block, that is independent of other folds that need a constant first operand. Also make some minor adjustments to make the constant folding look nearly identical to the same code in getAddExpr(). The only reason this change is not strictly NFC is that the C1*(C2+V) fold is moved below the constant folding, which means that it now also applies to C1*C2*(C3+V), as it should.
-
Nikita Popov authored
We should first try to constant fold the add expression and only strengthen nowrap flags afterwards. This allows us to determine stronger flags if e.g. only two operands are left after constant folding (and thus "guaranteed no wrap region" code applies) or the resulting operands are non-negative and thus nsw->nuw strengthening applies.
-
Nikita Popov authored
Also run the test case through -instnamer.
-
- Oct 25, 2020
-
-
Sanjay Patel authored
This extends D78430 to solve cases like: https://llvm.org/PR47858 There are still missed opportunities shown in the tests, and as noted in the earlier patches, we have related functionality in InstCombine, so we may want to extend other folds in a similar way. A semi-random sampling of test diff proofs in this patch: https://rise4fun.com/Alive/sS4C
-
Sanjay Patel authored
One variant of this is shown in: https://llvm.org/PR47858
-
Melanie Blower authored
Correct LIT test failure detected on buildbot after mibintc committed rG2e204e23: [clang] Enable support for #pragma STDC FENV_ACCESS D87528
-
Florian Hahn authored
This patch adds an additional set of tests that can be vectorized efficiently on AArch64, using CMxx & BFI.
-