This is an archive of the discontinued LLVM Phabricator instance.

[OPENMP] Codegen for 'ordered' directive.
ClosedPublic

Authored by ABataev on Apr 17 2015, 2:05 AM.

Details

Summary

Add codegen for 'ordered' directive:

__kmpc_ordered(ident_t *, gtid);
<associated statement>;
__kmpc_end_ordered(ident_t *, gtid);

Also for 'for' directives with the dynamic scheduling and an 'ordered' clause added a call to '__kmpc_dispatch_fini_(4|8)[u]()' function after increment expression for loop control variable:

while(__kmpc_dispatch_next(&LB, &UB)) {
  idx = LB;
  while (idx <= UB) { BODY; ++idx;
  __kmpc_dispatch_fini_(4|8)[u](); // For ordered loops only.
  } // inner loop
}

Diff Detail

Repository
rL LLVM

Event Timeline

ABataev updated this revision to Diff 23898.Apr 17 2015, 2:05 AM
ABataev retitled this revision from to [OPENMP] Codegen for 'ordered' directive..
ABataev updated this object.
ABataev edited the test plan for this revision. (Show Details)
ABataev added a subscriber: Unknown Object (MLST).
This revision was automatically updated to reflect the committed changes.