- Jun 15, 2020
-
-
Marcel Koester authored
allocations cannot be moved freely and can remain in divergent control flow. The current BufferPlacement pass does not support allocation nodes that carry additional dependencies (like in the case of dynamic shaped types). These allocations can often not be moved freely and in turn might remain in divergent control-flow branches. This requires a different strategy with respect to block arguments and aliases. This CL adds additinal functionality to support allocation nodes in divergent control flow while avoiding memory leaks. Differential Revision: https://reviews.llvm.org/D79850
-
Kirill Bobyrev authored
This reverts commit 3bab88b7. This patch causes test failures: http://lab.llvm.org:8011/builders/clang-cmake-armv7-quick/builds/17260
-
Georgii Rymar authored
We have an issue currently. The following YAML piece just ignores the `Excluded` key. ``` SectionHeaderTable: Sections: [] Excluded: - Name: .foo ``` Currently the meaning is: exclude the whole table. The code checks that the `Sections` key is empty and doesn't catch/check invalid/duplicated/missed `Excluded` entries. Also there is no way to exclude all sections except the first null section, because `Sections: []` currently just excludes the whole the sections header table. To fix it, I suggest a change of the behavior. 1) A new `NoHeaders` key is added. It provides an explicit syntax to drop the whole table. 2) The meaning of the following is changed: ``` SectionHeaderTable: Sections: [] Excluded: - Name: .foo ``` Assuming there are 2 sections in the object (a null section and `.foo`), with this patch it means: exclude the `.foo` section, keep the null section. The null section is an implicit section and I think it is reasonable to make "Sections: []" to mean it is implicitly added. It will be consistent with the global "Sections" tag that is used to describe sections. 3) `SectionHeaderTable->Sections` is now optional. No `Sections` is the same as `Sections: []` (I think it avoids a confusion). 4) Using of `NoHeaders` together with `Sections`/`Excluded` is not allowed. 5) It is possible to use the `Excluded` key without the `Sections` key now (in this case `Excluded` must contain all sections). 6) `SectionHeaderTable:` or `SectionHeaderTable: []` is not allowed. 7) When the `SectionHeaderTable` key is present, we still require all sections to be present in `Sections` and `Excluded` lists. No changes here, we are still strict. Differential revision: https://reviews.llvm.org/D81655 -
Simon Pilgrim authored
These should fold to memcmp/ptest/movmsk+cmpeq patterns
-
Haojian Wu authored
Reviewers: sammccall Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, kadircet, usaxena95, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D81739
-
Kazushi (Jam) Marukawa authored
Summary: Change VEAsmParser to support identification with relocation information in assmebler. Change VEAsmBackend to support relocation information in MC layer. Change VEDisassembler and VEMCCodeEmitter to support binary generation of branch target operands. Add REFLONG fixup and variant kind to support new R_VE_REFLONG ELF symbol. And, add regression test in both MC and CodeGen to check binary genaration with relocation information. Differential Revision: https://reviews.llvm.org/D81553
-
Dominik Montada authored
[MachineVerifier][GlobalISel] Check that branches have a MBB operand or are declared indirect. Add missing properties to G_BRJT, G_BRINDIRECT Summary: Teach MachineVerifier to check branches for MBB operands if they are not declared indirect. Add `isBarrier`, `isIndirectBranch` to `G_BRINDIRECT` and `G_BRJT`. Without these, `MachineInstr.isConditionalBranch()` was giving a false-positive for those instructions. Reviewers: aemerson, qcolombet, dsanders, arsenm Reviewed By: dsanders Subscribers: hiraditya, wdng, simoncook, s.egerton, arsenm, rovka, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D81587
-
Max Kazantsev authored
This test demonstrates weird behavior of SimplifyCFG: seems that bigger size of block leads to worse optimization choice.
-
Tyker authored
Summary: with this patch instead of emitting calls to consteval function. the IR-gen will emit a store of the already computed result. Reviewers: rsmith Reviewed By: rsmith Subscribers: cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D76420
-
Kirill Bobyrev authored
This code generates Clang-Tidy warnings otherwise.
-
Alexander Belyaev authored
Differential Revision: https://reviews.llvm.org/D81735
-
Sam Parker authored
Have BasicTTI call the base implementation so that both agree on the default behaviour, which the default being a cost of '1'. This has required an X86 specific implementation as it seems to be very reliant on those instructions being free. Changes are also made to AMDGPU so that their implementations distinguish between cost kinds, so that the unrolling isn't affected. PowerPC also has its own implementation to prevent changes to the reg-usage vectorizer test. The cost model test changes now reflect that ret instructions are not generally free. Differential Revision: https://reviews.llvm.org/D79164
-
Kirill Bobyrev authored
Cleanup after https://reviews.llvm.org/D81459
-
Kristina Bessonova authored
No need to parse and add the same variables twice if runtimes is being built for a generic target (i.e. w/o multilib). Reviewed By: phosek Differential Revision: https://reviews.llvm.org/D81574
-
Sam Parker authored
Enable TTIImpl::getUserCost to handle FNeg so that getInstructionThroughput can call that instead. This means we can remove the code in the AMDGPU backend too. Differential Revision: https://reviews.llvm.org/D81635
-
Nikita Popov authored
When checking for an enum function attribute, use hasFnAttribute() rather than hasAttribute() at FunctionIndex, because it is significantly faster (and more concise to boot).
-
Sam Parker authored
Move the cost modelling, with the reduction pattern matching, from getInstructionThroughput into generic TTIImpl::getUserCost. The modelling in the AMDGPU backend can now be removed. Differential Revision: https://reviews.llvm.org/D81643
-
Max Kazantsev authored
-
Fangrui Song authored
-
Sam Parker authored
This reverts commit 23291b98. This caused performance regressions.
-
Sander de Smalen authored
The AAPCS specifies that the tuple types such as `svint32x2_t` should use their `arm_sve.h` names when mangled instead of their builtin names. This patch also renames the internal types for the tuples to be prefixed with `__clang_`, so they are not misinterpreted as specified internal types like the non-tuple types which *are* defined in the AAPCS. Using a builtin type for the tuples is a purely a choice of the Clang implementation. Reviewers: rsandifo-arm, c-rhodes, efriedma, rengolin Reviewed By: efriedma Tags: #clang Differential Revision: https://reviews.llvm.org/D81721
-
Sander de Smalen authored
This patch adds new SVE types to Clang that describe tuples of SVE vectors. For example `svint32x2_t` which maps to the twice-as-wide vector `<vscale x 8 x i32>`. Similarly, `svint32x3_t` will map to `<vscale x 12 x i32>`. It also adds builtins to return an `undef` vector for a given SVE type. Reviewers: c-rhodes, david-arm, ctetreau, efriedma, rengolin Reviewed By: c-rhodes Tags: #clang Differential Revision: https://reviews.llvm.org/D81459
-
Vitaly Buka authored
Move core which removes markers out of StackColoring.
-
Vitaly Buka authored
-
Vitaly Buka authored
-
Vitaly Buka authored
-
Vitaly Buka authored
-
Vitaly Buka authored
-
Vitaly Buka authored
-
Vitaly Buka authored
This allows to reuse the code in other components.
-
Vitaly Buka authored
Prepare to move ClColoring from SafeStackCode to SafeStackLayout. This will allow to reuse the code in other components.
-
Max Kazantsev authored
-
Chen Zheng authored
This patch tries to reassociate two patterns related to FMA to expose more ILP on PowerPC. // Pattern 1: // A = FADD X, Y (Leaf) // B = FMA A, M21, M22 (Prev) // C = FMA B, M31, M32 (Root) // --> // A = FMA X, M21, M22 // B = FMA Y, M31, M32 // C = FADD A, B // Pattern 2: // A = FMA X, M11, M12 (Leaf) // B = FMA A, M21, M22 (Prev) // C = FMA B, M31, M32 (Root) // --> // A = FMUL M11, M12 // B = FMA X, M21, M22 // D = FMA A, M31, M32 // C = FADD B, D Reviewed By: jsji Differential Revision: https://reviews.llvm.org/D80175
-
Wenlei He authored
Summary: When an SCC got split due to inlining, we have two mechanisms for reprocessing the updated SCC, first is UR.UpdatedC that repeatedly rerun the new, current SCC; second is a worklist for all newly split SCCs. We can avoid rerun of the same SCC when the SCC is set to be processed by both mechanisms *back to back*. In pathological cases, such redundant rerun could cause exponential size growth due to inlining along cycles, even when there's no SCC mutation and hence convergence is not a problem. Note that it's ok to have SCC updated and rerun immediately, and also in the work list if we have actually moved an SCC to be topologically "below" the current one due to merging. In that case, we will need to revisit the current SCC after those moved SCCs. For that reason, the redundant avoidance here only targets back to back rerun of the same SCC - the case described by the now removed FIXME comment. Reviewers: chandlerc, wmi Subscribers: llvm-commits, hoy Tags: #llvm Differential Revision: https://reviews.llvm.org/D80589
-
Kang Zhang authored
Summary: We have defined MTSPR/MFSPR and MTSPR8/MFSPR8, but we only defined mtspr/mfspr InstAlias for some MTSPR/MFSPR. This patch is to add the InstAlias definitions for MTSPR8/MFSPR8, and add the some new mtspr/mfspr InstAlias we may use. Reviewed By: steven.zhang Differential Revision: https://reviews.llvm.org/D77531
-
Jez Ng authored
Summary: Fixes the build break caused by D81802.
-
Chen Zheng authored
Reviewed By: steven.zhang Differential Revision: https://reviews.llvm.org/D81006
-
Jez Ng authored
Summary: We should be reading / writing our addends / relocated addresses based on r_length, and not just based on the type of the relocation. But since only some r_length values are valid for a given reloc type, I've also added some validation. ld64 has code to allow for r_length = 0 in X86_64_RELOC_BRANCH relocs, but I'm not sure how to create such a relocation... Reviewed By: smeenai Differential Revision: https://reviews.llvm.org/D80854
-
Jez Ng authored
Summary: After {D81326} landed, some tests started failing if they did not have `-arch` specified. I think one of the reasons happened was due to the fact that we were taking a reference to a temporary value that was freed too early. Fixing that got the error to go away on my local Linux machine. Reviewed By: MaskRay Differential Revision: https://reviews.llvm.org/D81802 -
Simon Pilgrim authored
Reduce XMM->GPR traffic by performing bitops on the vectors, and using a single MOVMSK call. This requires us to use vectors of the same size and element width, but we can mix fp/int type equivalents with suitable bitcasting.
-