static isl_printer *cbPrintFor(__isl_take isl_printer *Printer,
__isl_take isl_ast_print_options *Options,
__isl_keep isl_ast_node *Node, void *) {
- if (IslAstInfo::isInnermostParallel(Node))
+ if (IslAstInfo::isInnermostParallel(Node) &&
+ !IslAstInfo::isReductionParallel(Node))
Printer = printLine(Printer, "#pragma simd");
if (IslAstInfo::isInnermost(Node) && IslAstInfo::isReductionParallel(Node))
Printer = printLine(Printer, "#pragma simd reduction");
- if (IslAstInfo::isOutermostParallel(Node))
+ if (IslAstInfo::isOutermostParallel(Node) &&
+ !IslAstInfo::isReductionParallel(Node))
Printer = printLine(Printer, "#pragma omp parallel for");
if (!IslAstInfo::isInnermost(Node) && IslAstInfo::isReductionParallel(Node))
}
bool IslAstInfo::isParallel(__isl_keep isl_ast_node *Node) {
- IslAstUserPayload *Payload = getNodePayload(Node);
- return Payload &&
- (Payload->IsInnermostParallel || Payload->IsOutermostParallel) &&
- !Payload->IsReductionParallel;
+ return IslAstInfo::isInnermostParallel(Node) ||
+ IslAstInfo::isOutermostParallel(Node);
}
bool IslAstInfo::isInnermostParallel(__isl_keep isl_ast_node *Node) {
IslAstUserPayload *Payload = getNodePayload(Node);
- return Payload && Payload->IsInnermostParallel &&
- !Payload->IsReductionParallel;
+ return Payload && Payload->IsInnermostParallel;
}
bool IslAstInfo::isOutermostParallel(__isl_keep isl_ast_node *Node) {
IslAstUserPayload *Payload = getNodePayload(Node);
- return Payload && Payload->IsOutermostParallel &&
- !Payload->IsReductionParallel;
+ return Payload && Payload->IsOutermostParallel;
}
bool IslAstInfo::isReductionParallel(__isl_keep isl_ast_node *Node) {
CmpInst::Predicate Predicate;
bool Parallel;
- Parallel = IslAstInfo::isInnermostParallel(For);
+ Parallel = IslAstInfo::isInnermostParallel(For) &&
+ !IslAstInfo::isReductionParallel(For);
Body = isl_ast_node_for_get_body(For);
void IslNodeBuilder::createFor(__isl_take isl_ast_node *For) {
bool Vector = PollyVectorizerChoice != VECTORIZER_NONE;
- if (Vector && IslAstInfo::isInnermostParallel(For)) {
+ if (Vector && IslAstInfo::isInnermostParallel(For) &&
+ !IslAstInfo::isReductionParallel(For)) {
int VectorWidth = getNumberOfIterations(For);
if (1 < VectorWidth && VectorWidth <= 16) {
createForVector(For, VectorWidth);