summaryrefslogtreecommitdiffstats
path: root/clang/test/OpenMP
Commit message (Collapse)AuthorAgeFilesLines
...
* [OPENMP50]Add device/kind context selector support.Alexey Bataev2019-11-217-47/+578
| | | | | | | | | | | | Summary: Added basic parsing/sema support for device/kind context selector. Reviewers: jdoerfert Subscribers: rampitec, aheejin, fedor.sergeev, simoncook, guansong, s.egerton, hfinkel, kkwli0, caomhin, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D70245
* [OPENMP]Fix datasharing checks for if clause in parallel taskloopAlexey Bataev2019-11-212-0/+20
| | | | | | | | directives. If the default datasharing is set to none, the datasharing attributes for variables in the condition of the if clause for the inner taskloop directive must be verified.
* [OPENMP50]Add if clause in for simd directive.Alexey Bataev2019-11-213-9/+192
| | | | | | According to OpenMP 5.0, if clause can be used in for simd directive. If condition in the if clause if false, the non-vectorized version of the loop must be executed.
* [OPENMP50]Add if clause in simd directive.Alexey Bataev2019-11-193-8/+167
| | | | | | According to OpenMP 5.0, if clause can be used in simd directive. If condition in the if clause if false, the non-vectorized version of the loop must be executed.
* [OPENMP50]Fix PR44024: runtime assert in distribute construct.Alexey Bataev2019-11-181-0/+15
| | | | | If the code is emitted for distribute construct, the nonmonotonic modifier should not be added.
* [OpenMP 5.0] - Extend defaultmap, by Chi Chun Chen.cchen2019-11-1512-411/+2862
| | | | | | | | | | | | | | | | | Summary: For the extended defaultmap, most of the work is inside sema. The only difference for codegen is to set different initial maptype for different implicit-behavior. Reviewers: jdoerfert, ABataev Reviewed By: ABataev Subscribers: dreachem, sandoval, cfe-commits Tags: #clang, #openmp Differential Revision: https://reviews.llvm.org/D69204
* [OPENMP]Add assignment operator in UDR test, NFC.Alexey Bataev2019-11-141-0/+1
| | | | | | Add assignment operator in the test to check that even if the operator was declare explicitly, the constructor is called in the user-defined reduction initializer anyway.
* [OPENMP]Use copy constructors instead of assignment operators in declareAlexey Bataev2019-11-122-5/+33
| | | | | | | reduction initializers. Better to use copy constructor at the initialization of the declare reduction construct rather than assignment operator.
* [OPENMP50]Add support for nested atomic and simd constructs inAlexey Bataev2019-11-111-165/+167
| | | | | | | | simd-based directives. According to OpenMP 5.0 standard, ordered simd, atomic and simd directives are allowed as nested directives in the simd-based directives.
* [OPENMP50]Simplify processing of context selector scores.Alexey Bataev2019-11-052-27/+27
| | | | | | If the context selector score was not specified, its value must be set to 0. Simplify the processing of unspecified scores + save memory in attribute representation.
* [OPENMP]Improve diagnostics for unsupported unified addressing.Alexey Bataev2019-11-051-1/+1
| | | | Improved diagnostics for better user experience.
* [OPENMP50]Support for imperfectly nested loops.Alexey Bataev2019-11-043-18/+118
| | | | Added support for imperfectly nested loops introduced in OpenMP 5.0.
* [OPENMP50]Add support for parallel master taskloop simd directive.Alexey Bataev2019-10-3021-0/+5584
| | | | Added full support for parallel master taskloop simd directive.
* [OPENMP]Fix PR43772: No warning in non-combined target regions.Alexey Bataev2019-10-294-4/+20
| | | | | | Need to analyze inner target regions in case of implicit mapping of the data members when target region is created in one of the class member functions.
* [OPENMP]Fix PR43771: Do not capture contexprs variables.Alexey Bataev2019-10-281-0/+21
| | | | If the variable is a constexpr variable, it should not be captured in the OpenMP region.
* OpenMP: Add convergent to more runtime functionsMatt Arsenault2019-10-271-6/+10
| | | | | Several of these other functions are probably also convergent, but these two seem obviously convergent.
* [OPENMP50]Add support for master taskloop simd.Alexey Bataev2019-10-1823-0/+6047
| | | | | | Added trsing/semantics/codegen for combined construct master taskloop simd. llvm-svn: 375255
* [OPENMP]Dow not emit warnings for uninitialized loop counters.Alexey Bataev2019-10-172-4/+4
| | | | | | | In OpenMP constructs all counters are initialized and we should not emit warnings about uninitialized privatized loop control variables. llvm-svn: 375167
* [OPENMP]Improve use of the global tid parameter.Alexey Bataev2019-10-172-9/+7
| | | | | | | | If we can determined, that the global tid parameter can be used in the function, better to use it rather than calling __kmpc_global_thread_num function. llvm-svn: 375134
* [OPENMP]Fix thread id passed to outlined region in sequential parallelAlexey Bataev2019-10-171-10/+10
| | | | | | | | | regions. The real global thread id must be passed to the outlined region instead of the zero thread id. llvm-svn: 375119
* [OPENMP]Allow priority clause in combined task-based directives.Alexey Bataev2019-10-161-3/+8
| | | | | | | The expression of the priority clause must be captured in the combined task-based directives, like 'parallel master taskloop' directive. llvm-svn: 375026
* [OPENMP]Use different addresses for zeroed thread_id/bound_id.Alexey Bataev2019-10-163-6/+14
| | | | | | | | When the parallel region is called directly in the sequential region, the zeroed tid/bound id are used. But they must point to the different memory locations as the parameters are marked as noalias. llvm-svn: 375017
* [OPENMP]Allow final clause in combined task-based directives.Alexey Bataev2019-10-152-7/+12
| | | | | | | The condition of the final clause must be captured in the combined task-based directives, like 'parallel master taskloop' directive. llvm-svn: 374942
* [Clang][OpenMP Offload] Move offload registration code to the wrapperSergey Dmitriev2019-10-1532-861/+252
| | | | | | | | | | The final list of OpenMP offload targets becomes known only at the link time and since offload registration code depends on the targets list it makes sense to delay offload registration code generation to the link time instead of adding it to the host part of every fat object. This patch moves offload registration code generation from clang to the offload wrapper tool. This is the last part of the OpenMP linker script elimination patch https://reviews.llvm.org/D64943 Differential Revision: https://reviews.llvm.org/D68746 llvm-svn: 374937
* [OPNEMP]Allow num_tasks clause in combined task-based directives.Alexey Bataev2019-10-142-7/+8
| | | | | | | The expression of the num_tasks clause must be captured in the combined task-based directives, like 'parallel master taskloop' directive. llvm-svn: 374819
* [OPNEMP]Allow grainsize clause in combined task-based directives.Alexey Bataev2019-10-141-4/+5
| | | | | | | The expression of the grainsize clause must be captured in the combined task-based directives, like 'parallel master taskloop' directive. llvm-svn: 374810
* [OPENMP50]Add support for 'parallel master taskloop' construct.Alexey Bataev2019-10-1417-0/+4893
| | | | | | | | | Added parsing/sema/codegen support for 'parallel master taskloop' constructs. Some of the clauses, like 'grainsize', 'num_tasks', 'final' and 'priority' are not supported in full, only constant expressions can be used currently in these clauses. llvm-svn: 374791
* [OPENMP]Fix codegen for private variably length vars in combinedAlexey Bataev2019-10-141-17/+21
| | | | | | | | | | | constructs. If OpenMP construct includes several capturing regions and the variable is declared as private, the length of the inner variable length array is not captured in outer captured regions, only in the innermost region. Patch fixes this bug. llvm-svn: 374787
* [OPENMP50]Support for 'master taskloop' directive.Alexey Bataev2019-10-1019-0/+5418
| | | | | | Added full support for master taskloop directive. llvm-svn: 374437
* [OPENMP50]Support for declare variant directive for NVPTX target.Alexey Bataev2019-10-101-0/+158
| | | | | | | NVPTX does not support global aliases. Instead, we have to copy the full body of the variant function for the original function. llvm-svn: 374387
* [OPENMP50]Register vendor name only once in vendor context selector.Alexey Bataev2019-10-102-2/+2
| | | | | | | No need to store multiple copies of the same vendor names in the context selector, keep only single copy. llvm-svn: 374363
* [CUDA][HIP] Fix host/device check with -fopenmpYaxun Liu2019-10-091-2/+2
| | | | | | | | | | | | | | | | CUDA/HIP program may be compiled with -fopenmp. In this case, -fopenmp is only passed to host compilation to take advantages of multi-threads computation. CUDA/HIP and OpenMP both use Sema::DeviceCallGraph to store functions to be analyzed and remove them once they decide the function is sure to be emitted. CUDA/HIP and OpenMP have different functions to determine if a function is sure to be emitted. To check host/device correctly for CUDA/HIP when -fopenmp is enabled, there needs a unified logic to determine whether a function is to be emitted. The logic needs to be aware of both CUDA and OpenMP logic. Differential Revision: https://reviews.llvm.org/D67837 llvm-svn: 374263
* [OPENMP50]Fix scoring of contexts with and without user provided scores.Alexey Bataev2019-10-091-2/+2
| | | | | | | The context selector with user provided score must have higher score than the context selector without user provided score. llvm-svn: 374224
* [OPENMP50]Multiple vendors in vendor context must be treated as logicalAlexey Bataev2019-10-083-6/+10
| | | | | | | | | | | | | and of vendors, not or. If several vendors are provided in the same vendor context trait, the context shall match only if all vendors are matching, not one of them. This is per OpenMP 5.0, 2.3.3 Matching and Scoring Context Selectors, all selectors in the construct, device, and implementation sets of the context selector appear in the corresponding trait set of the OpenMP context. llvm-svn: 374107
* [OPENMP50]Do not allow multiple same context traits in the same contextAlexey Bataev2019-10-084-14/+16
| | | | | | | | | | selector. According to OpenMP 5.0, 2.3.2 Context Selectors, Restrictions, each trait-selector-name can only be specified once. Added check for this restriction. llvm-svn: 374093
* [OPENMP50]Prohibit multiple context selector sets in context selectors.Alexey Bataev2019-10-084-25/+14
| | | | | | | | According to OpenMP 5.0, 2.3.2 Context Selectors, Restrictions, each trait-set-selector-name can only be specified once. Added check to implement this restriction. llvm-svn: 374072
* [OPENMP50]Allow functions in declare variant directive to have differentAlexey Bataev2019-10-083-12/+31
| | | | | | | | | | C linkage. After some discussion with OpenMP developers, it was decided that the functions with the different C linkage can be used in declare variant directive. llvm-svn: 374057
* [OPENMP50]Treat range-based for as canonical loop.Alexey Bataev2019-10-0721-29/+194
| | | | | | | According to OpenMP 5.0, range-based for is also considered as a canonical form of loops. llvm-svn: 373939
* [OPENMP50]Suppport for multiple vendors in the same vendor contextAlexey Bataev2019-10-044-12/+15
| | | | | | | | | selector. According to OpenMP 5.0, multiple vendors could be specified in the vendor context selector via ',' as a separator. llvm-svn: 373756
* [OPENMP]Fix the test on Windows, NFC.Alexey Bataev2019-10-031-1/+1
| | | | llvm-svn: 373672
* [OPENMP50]Codegen support for scores in context selectors.Alexey Bataev2019-10-031-2/+24
| | | | | | | | If the context selector has associated score and several contexts selectors matches current context, the function with the highest score must be selected. llvm-svn: 373661
* [OPENMP]Fix emission of the declare target variables in device mode.Alexey Bataev2019-10-031-15/+8
| | | | | | | Declare target variables must be emitted in device mode, target triples can be empty in this case. llvm-svn: 373624
* [OPENMP]Improve diagnostics for not found declare target entries.Alexey Bataev2019-10-031-4/+2
| | | | | | | We can point to the target region + emit parent functions names/real var names if they were not found in host module during device codegen. llvm-svn: 373620
* [OPENMP50]Add parsing/sema analysis for declare variant score.Alexey Bataev2019-10-024-10/+32
| | | | | | | | Context selectors may include optional score clause in format `score(<expr>):`, where `<expr>` must be a constant integer expression. Added parsing/sema analysis only. llvm-svn: 373502
* [OPENMP50]Initial codegen for declare variant implementation vendor.Alexey Bataev2019-10-011-0/+91
| | | | | | | Initial implementation of global aliases emission for the declare variant pragma with implementation vendor context selector set. llvm-svn: 373387
* [OPENMP]Fix PR43330: OpenMP target: Mapping of partial arrays fails.Alexey Bataev2019-10-011-51/+75
| | | | | | Fixed calculation the size of the array sections. llvm-svn: 373374
* [OPENMP]Fix PR43516: Compiler crash with collapse(2) on non-rectangularAlexey Bataev2019-10-011-17/+16
| | | | | | | | | loop. Missed check if the condition is also dependent when building final expressions for the collapsed loop directives. llvm-svn: 373348
* [OPENMP50]Mark declare variant attribute as inheritable.Alexey Bataev2019-09-301-0/+9
| | | | | | Attribute must be inherited by the redeclarations. llvm-svn: 373257
* [OPENMP50]Do not emit warning for the function with the currentlyAlexey Bataev2019-09-302-2/+10
| | | | | | | | | defined body. If the function is currently defined, we should not emit a warning that it might be emitted already because it was not really emitted. llvm-svn: 373243
* [Clang][OpenMP Offload] Create start/end symbols for the offloading entry ↵Sergey Dmitriev2019-09-2735-288/+288
| | | | | | | | | | | | table with a help of a linker Linker automatically provides __start_<section name> and __stop_<section name> symbols to satisfy unresolved references if <section name> is representable as a C identifier (see https://sourceware.org/binutils/docs/ld/Input-Section-Example.html for details). These symbols indicate the start address and end address of the output section respectively. Therefore, renaming OpenMP offload entries section name from ".omp.offloading_entries" to "omp_offloading_entries" to use this feature. This is the first part of the patch for eliminating OpenMP linker script (please see https://reviews.llvm.org/D64943). Differential Revision: https://reviews.llvm.org/D68070 llvm-svn: 373118
OpenPOWER on IntegriCloud