aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
diff options
context:
space:
mode:
authorAlex Zinenko <zinenko@google.com>2020-12-07 15:45:39 +0100
committerAlex Zinenko <zinenko@google.com>2020-12-08 10:43:35 +0100
commit2fe30a3534dad9f982a3d840b4bfa4870b2ba5bc (patch)
treeb8feea4fe2fecc74a8dfa8f51123cdc90595ba5b /llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
parent3af354e863f553ef727967dfc091a64a11500aa5 (diff)
downloadllvm-2fe30a3534dad9f982a3d840b4bfa4870b2ba5bc.zip
llvm-2fe30a3534dad9f982a3d840b4bfa4870b2ba5bc.tar.gz
llvm-2fe30a3534dad9f982a3d840b4bfa4870b2ba5bc.tar.bz2
[mlir] properly support min/max in affine parallelization
The existing implementation of the affine parallelization silently copies over the lower and upper bound maps from affine.for to affine.parallel. However, the semantics of these maps differ between these two ops: in affine.for, a max(min) of results is taken for the lower(upper) bound; in affine.parallel, multiple induction variables can be defined an each result corresponds to one induction variable. Thus the existing implementation could generate invalid IR or IR that passes the verifier but has different semantics than the original code. Fix the parallelization utility to emit dedicated min/max operations before the affine.parallel in such cases. Disallow parallelization if min/max would have been in an operation without the AffineScope trait, e.g., in another loop, since the result of these operations is not considered a valid affine dimension identifier and may not be properly handled by the affine analyses. Reviewed By: wsmoses Differential Revision: https://reviews.llvm.org/D92763
Diffstat (limited to 'llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp')
0 files changed, 0 insertions, 0 deletions