forked from OSchip/llvm-project
The optimistic delinearization implemented in LLVM detects array sizes by looking for non-linear products between parameters and induction variables. In OpenCL code, such products often look like: A[get_global_id(0) * N + get_global_id(1)] Hence, the IV is hidden in the get_global_id() call and consequently delinearization would fail as no induction variable is available that helps us to identify N as array size parameter. We now use a very simple heuristic to change this. We assume that each parameter that comes directly from a function call is a hidden induction variable. As a result, we can delinearize the access above to: A[get_global_id(0)][get_global_id(1] llvm-svn: 304073 |
||
|---|---|---|
| .. | ||
| a.ll | ||
| constant_functions_multi_dim.ll | ||
| divide_by_one.ll | ||
| gcd_multiply_expr.ll | ||
| himeno_1.ll | ||
| himeno_2.ll | ||
| iv_times_constant_in_subscript.ll | ||
| lit.local.cfg | ||
| multidim_ivs_and_integer_offsets_3d.ll | ||
| multidim_ivs_and_integer_offsets_nts_3d.ll | ||
| multidim_ivs_and_parameteric_offsets_3d.ll | ||
| multidim_only_ivs_2d.ll | ||
| multidim_only_ivs_2d_nested.ll | ||
| multidim_only_ivs_3d.ll | ||
| multidim_only_ivs_3d_cast.ll | ||
| multidim_two_accesses_different_delinearization.ll | ||
| parameter_addrec_product.ll | ||
| terms_with_identity_factor.ll | ||
| type_mismatch.ll | ||
| undef.ll | ||