aboutsummaryrefslogtreecommitdiff
path: root/llvm/unittests/Support/CommandLineTest.cpp
diff options
context:
space:
mode:
authorAlexey Bataev <a.bataev@hotmail.com>2020-06-16 17:06:49 -0400
committerAlexey Bataev <a.bataev@hotmail.com>2020-06-17 08:43:17 -0400
commit34ee2549a72c2947fb3f6677fbe8ad97da100011 (patch)
tree53fa93be17f8e484986d5ed36650a1360bb28140 /llvm/unittests/Support/CommandLineTest.cpp
parent6aae8ef164e6b909adc1a09eda5c48ae6e733f63 (diff)
downloadllvm-34ee2549a72c2947fb3f6677fbe8ad97da100011.zip
llvm-34ee2549a72c2947fb3f6677fbe8ad97da100011.tar.gz
llvm-34ee2549a72c2947fb3f6677fbe8ad97da100011.tar.bz2
[OPENMP50]Codegen for scan directive in for simd regions.
Summary: Added codegen for scan directives in parallel for regions. Emits the code for the directive with inscan reductions. Original code: ``` #pragma omp for simd reduction(inscan, op : ...) for(...) { <input phase>; #pragma omp scan (in)exclusive(...) <scan phase> } ``` is transformed to something: ``` size num_iters = <num_iters>; <type> buffer[num_iters]; #pragma omp for simd for (i: 0..<num_iters>) { <input phase>; buffer[i] = red; } #pragma omp barrier for (int k = 0; k != ceil(log2(num_iters)); ++k) for (size cnt = last_iter; cnt >= pow(2, k); --k) buffer[i] op= buffer[i-pow(2,k)]; #pragma omp for simd for (0..<num_iters>) { red = InclusiveScan ? buffer[i] : buffer[i-1]; <scan phase>; } ``` Reviewers: jdoerfert Reviewed By: jdoerfert Subscribers: yaxunl, guansong, sstefan1, cfe-commits, caomhin Tags: #clang Differential Revision: https://reviews.llvm.org/D81658
Diffstat (limited to 'llvm/unittests/Support/CommandLineTest.cpp')
0 files changed, 0 insertions, 0 deletions