tree-ssa-loop-ivopts.c (iv_ca_add_use): Delete parameter important_candidates.
[gcc.git] / gcc / ChangeLog
index 12006687b354ba880392418c7c6b0b03798458df..28a3219aacfdb7ad3ea4f1555c2b8a82983f9242 100644 (file)
@@ -1,3 +1,132 @@
+2014-08-28  Bin Cheng  <bin.cheng@arm.com>
+
+       * tree-ssa-loop-ivopts.c (iv_ca_add_use): Delete parameter
+       important_candidates.  Consider all important candidates if
+       IVS doesn't give any result.  Remove check on ivs->upto.
+       (try_add_cand_for): Call iv_ca_add_use only once.
+
+2014-08-28  Alexander Ivchenko  <alexander.ivchenko@intel.com>
+           Maxim Kuznetsov  <maxim.kuznetsov@intel.com>
+           Anna Tikhonova  <anna.tikhonova@intel.com>
+           Ilya Tocar  <ilya.tocar@intel.com>
+           Andrey Turetskiy  <andrey.turetskiy@intel.com>
+           Ilya Verbin  <ilya.verbin@intel.com>
+           Kirill Yukhin  <kirill.yukhin@intel.com>
+           Michael Zolotukhin  <michael.v.zolotukhin@intel.com>
+
+       (define_mode_iterator VI12_AVX2): Add V64QI and V32HI modes.
+       (define_expand "<sse2_avx2>_<plusminus_insn><mode>3<mask_name>"): Add
+       masking.
+       (define_insn "*<sse2_avx2>_<plusminus_insn><mode>3<mask_name>"): Ditto.
+       (define_expand "<sse2_avx2>_uavg<mode>3<mask_name>"): Ditto.
+       (define_insn "*<sse2_avx2>_uavg<mode>3<mask_name>"): Ditto.
+       (define_insn "*mul<mode>3"): Add EVEX version.
+
+2014-08-28  Alexander Ivchenko  <alexander.ivchenko@intel.com>
+           Maxim Kuznetsov  <maxim.kuznetsov@intel.com>
+           Anna Tikhonova  <anna.tikhonova@intel.com>
+           Ilya Tocar  <ilya.tocar@intel.com>
+           Andrey Turetskiy  <andrey.turetskiy@intel.com>
+           Ilya Verbin  <ilya.verbin@intel.com>
+           Kirill Yukhin  <kirill.yukhin@intel.com>
+           Michael Zolotukhin  <michael.v.zolotukhin@intel.com>
+
+       * config/i386/sse.md
+       (define_insn "avx512bw_interleave_highv64qi<mask_name>"): New.
+       (define_insn "avx2_interleave_highv32qi<mask_name>"): Add masking.
+       (define_insn "vec_interleave_highv16qi<mask_name>"): Ditto.
+       (define_insn "avx2_interleave_lowv32qi<mask_name>"): Ditto.
+       (define_insn "vec_interleave_lowv16qi<mask_name>"): Ditto.
+       (define_insn "avx2_interleave_highv16hi<mask_name>"): Ditto.
+       (define_insn "vec_interleave_highv8hi<mask_name>"): Ditto.
+       (define_insn "avx2_interleave_lowv16hi<mask_name>"): Ditto.
+       (define_insn "vec_interleave_lowv8hi<mask_name>"): Ditto.
+       (define_insn "avx2_interleave_highv8si<mask_name>"): Ditto.
+       (define_insn "vec_interleave_highv4si<mask_name>"): Ditto.
+       (define_insn "avx2_interleave_lowv8si<mask_name>"): Ditto.
+       (define_insn "vec_interleave_lowv4si<mask_name>"): Ditto.
+       (define_insn "vec_interleave_highv16qi<mask_name>"): New.
+       (define_insn "avx512bw_interleave_highv32hi<mask_name>"): Ditto.
+       (define_insn "<mask_codefor>avx512bw_interleave_lowv32hi<mask_name>"): Ditto.
+
+2014-08-28  Alexander Ivchenko  <alexander.ivchenko@intel.com>
+           Maxim Kuznetsov  <maxim.kuznetsov@intel.com>
+           Anna Tikhonova  <anna.tikhonova@intel.com>
+           Ilya Tocar  <ilya.tocar@intel.com>
+           Andrey Turetskiy  <andrey.turetskiy@intel.com>
+           Ilya Verbin  <ilya.verbin@intel.com>
+           Kirill Yukhin  <kirill.yukhin@intel.com>
+           Michael Zolotukhin  <michael.v.zolotukhin@intel.com>
+
+       * config/i386/sse.md
+       (define_mode_iterator VIMAX_AVX2): Add V4TI mode.
+       (define_insn "<sse2_avx2>_ashl<mode>3"): Add EVEX version.
+       (define_insn "<sse2_avx2>_lshr<mode>3"): Ditto.
+
+2014-08-28  Alexander Ivchenko  <alexander.ivchenko@intel.com>
+           Maxim Kuznetsov  <maxim.kuznetsov@intel.com>
+           Anna Tikhonova  <anna.tikhonova@intel.com>
+           Ilya Tocar  <ilya.tocar@intel.com>
+           Andrey Turetskiy  <andrey.turetskiy@intel.com>
+           Ilya Verbin  <ilya.verbin@intel.com>
+           Kirill Yukhin  <kirill.yukhin@intel.com>
+           Michael Zolotukhin  <michael.v.zolotukhin@intel.com>
+
+       * config/i386/sse.md
+       (define_mode_iterator VI128_256): New.
+       (define_insn "<mask_codefor><code><mode>3<mask_name>"): Ditto.
+
+2014-08-28  Alexander Ivchenko  <alexander.ivchenko@intel.com>
+           Maxim Kuznetsov  <maxim.kuznetsov@intel.com>
+           Anna Tikhonova  <anna.tikhonova@intel.com>
+           Ilya Tocar  <ilya.tocar@intel.com>
+           Andrey Turetskiy  <andrey.turetskiy@intel.com>
+           Ilya Verbin  <ilya.verbin@intel.com>
+           Kirill Yukhin  <kirill.yukhin@intel.com>
+           Michael Zolotukhin  <michael.v.zolotukhin@intel.com>
+
+       * config/i386/sse.md
+       (define_mode_iterator VI8_256_512): New.
+       (define_insn "<mask_codefor>avx512dq_cvtps2qq<mode><mask_name><round_name>"):
+       Ditto.
+       (define_insn "<mask_codefor>avx512dq_cvtps2qqv2di<mask_name>"): Ditto.
+       (define_insn "<mask_codefor>avx512dq_cvtps2uqq<mode><mask_name><round_name>"):
+       Ditto.
+       (define_insn "<mask_codefor>avx512dq_cvtps2uqqv2di<mask_name>"): Ditto.
+
+2014-08-28  Richard Sandiford  <rdsandiford@googlemail.com>
+
+       * varasm.c (compute_reloc_for_rtx_1): Take a const_rtx.  Remove the
+       pointer to the cumulative reloc value and return the value for
+       this reloc instead.
+       (compute_reloc_for_rtx): Take a const_rtx.  Call
+       compute_reloc_for_rtx_1 directly for SYMBOL_REF and LABEL_REF,
+       avoiding any recursion.  Use FOR_EACH_SUBRTX rather than
+       for_each_rtx for the CONST case.
+
+2014-08-28  Richard Sandiford  <rdsandiford@googlemail.com>
+
+       * varasm.c (mark_constant): Replace this for_each_rtx callback with...
+       (mark_constants_in_pattern): ...this new function to iterate over
+       all the subrtxes.
+       (mark_constants): Update accordingly.
+
+2014-08-28  Richard Sandiford  <rdsandiford@googlemail.com>
+
+       * varasm.c: Include rtl-iter.h.
+       (const_rtx_hash_1): Take a const_rtx rather than an rtx *.
+       Remove the pointer to the cumulative hashval_t and just return
+       the hash for this rtx instead.  Remove recursive CONST_VECTOR case.
+       (const_rtx_hash): Use FOR_EACH_SUBRTX instead of for_each_rtx.
+       Accumulate the hashval_ts here instead of const_rtx_hash_1.
+
+2014-08-28  Richard Sandiford  <rdsandiford@googlemail.com>
+
+       * var-tracking.c (add_uses): Take an rtx rather than an rtx *.
+       Give real type of data parameter.  Remove return value.
+       (add_uses_1): Use FOR_EACH_SUBRTX_VAR rather than for_each_rtx
+       to iterate over subrtxes.
+
 2014-08-28  Richard Sandiford  <rdsandiford@googlemail.com>
 
        * var-tracking.c (use_narrower_mode_test): Turn from being a