aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/CodeGen/MachineDominators.cpp
diff options
context:
space:
mode:
authorAlexey Bataev <a.bataev@hotmail.com>2020-06-11 10:16:16 -0400
committerAlexey Bataev <a.bataev@hotmail.com>2020-06-16 16:13:27 -0400
commit6e78a3086a7f563cc55d2ba83a8697b3320857fb (patch)
tree323af5c1cdd648efdf24e98cb8607707c08f3f04 /llvm/lib/CodeGen/MachineDominators.cpp
parent8d4a806ef0b988200111b7d99f792361bcd3f7d1 (diff)
downloadllvm-6e78a3086a7f563cc55d2ba83a8697b3320857fb.zip
llvm-6e78a3086a7f563cc55d2ba83a8697b3320857fb.tar.gz
llvm-6e78a3086a7f563cc55d2ba83a8697b3320857fb.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 Subscribers: yaxunl, guansong, sstefan1, cfe-commits, caomhin Tags: #clang Differential Revision: https://reviews.llvm.org/D81658
Diffstat (limited to 'llvm/lib/CodeGen/MachineDominators.cpp')
0 files changed, 0 insertions, 0 deletions