llvm/test/Analysis/Delinearization
Tobias Grosser 4439d654fd [SCEV] Assume parameters coming from function calls contain IVs
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]

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304073 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-27 15:17:49 +00:00
..
a.ll [ValueTracking] Make poison propagation more aggressive 2017-02-22 06:52:32 +00:00
constant_functions_multi_dim.ll [SCEV] Assume parameters coming from function calls contain IVs 2017-05-27 15:17:49 +00:00
divide_by_one.ll Recognize n/1 in the SCEV divide function 2015-04-20 16:03:28 +00:00
gcd_multiply_expr.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
himeno_1.ll Make DataLayout Non-Optional in the Module 2015-03-04 18:43:29 +00:00
himeno_2.ll Make DataLayout Non-Optional in the Module 2015-03-04 18:43:29 +00:00
iv_times_constant_in_subscript.ll [ValueTracking] Make poison propagation more aggressive 2017-02-22 06:52:32 +00:00
lit.local.cfg
multidim_ivs_and_integer_offsets_3d.ll [SCEV] Mark AddExprs as nsw or nuw if legal 2015-10-22 19:57:19 +00:00
multidim_ivs_and_integer_offsets_nts_3d.ll [SCEV] Mark AddExprs as nsw or nuw if legal 2015-10-22 19:57:19 +00:00
multidim_ivs_and_parameteric_offsets_3d.ll [SCEV] Apply NSW and NUW flags via poison value analysis 2015-07-28 18:22:40 +00:00
multidim_only_ivs_2d_nested.ll
multidim_only_ivs_2d.ll Make DataLayout Non-Optional in the Module 2015-03-04 18:43:29 +00:00
multidim_only_ivs_3d_cast.ll
multidim_only_ivs_3d.ll Make DataLayout Non-Optional in the Module 2015-03-04 18:43:29 +00:00
multidim_two_accesses_different_delinearization.ll
parameter_addrec_product.ll SCEV: Allow simple AddRec * Parameter products in delinearization 2015-10-12 08:02:00 +00:00
terms_with_identity_factor.ll [SCEV] Consider delinearization pattern with extension with identity factor 2016-10-17 11:56:26 +00:00
type_mismatch.ll Fix a type mismatch assert in SCEV division 2015-04-22 15:06:40 +00:00
undef.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00