i386.md (any_truncate): New.
* config/i386/i386.md (any_truncate): New. (trunsuffix): Ditto. * config/i386/predicates.md (const_8_to_9_operand): New. (const_10_to_11_operand): Ditto. (const_12_to_13_operand): Ditto. (const_14_to_15_operand): Ditto. (const_16_to_19_operand): Ditto. (const_20_to_23_operand): Ditto. (const_24_to_27_operand): Ditto. (const_28_to_31_operand): Ditto. * config/i386/sse.md (unspec): Add UNSPEC_UNSIGNED_FIX_NOTRUNC. (cvtusi2<ssescalarmodesuffix>32): New. (cvtusi2<ssescalarmodesuffix>64): Ditto. (ufloatv16siv16sf2): Ditto. (avx512f_fix_notruncv16sfv16si): Ditto. (avx512f_ufix_notruncv16sfv16si): Ditto. (avx512f_vcvtss2usi): Ditto. (avx512f_vcvtss2usiq): Ditto. (avx512f_vcvttss2usi): Ditto. (avx512f_vcvttss2usiq): Ditto. (avx512f_vcvtsd2usi): Ditto. (avx512f_vcvtsd2usiq): Ditto. (avx512f_vcvttsd2usi): Ditto. (avx512f_vcvttsd2usiq): Ditto. (ufloatv8siv8df): Ditto. (avx512f_cvtdq2pd512_2): Ditto. (avx512f_cvtpd2dq512): Ditto. (avx512f_ufix_notruncv8dfv8si): Ditto. (avx512f_cvtpd2ps512): Ditto. (vec_unpacks_lo_v16sf): Ditto. (vec_unpacks_hi_v16sf): Ditto. (vec_unpacks_float_hi_v16si): Ditto. (vec_unpacks_float_lo_v16si): Ditto. (avx512f_unpckhps512): Ditto. (avx512f_unpcklps512): Ditto. (avx512f_movshdup512): Ditto. (avx512f_movsldup512): Ditto. (vec_extract_lo_v32hi): Ditto. (vec_extract_hi_v32hi): Ditto. (vec_extract_lo_v64qi): Ditto. (vec_extract_hi_v64qi): Ditto. (avx512f_unpckhpd512): Ditto. (avx512f_movddup512): Ditto. (avx512f_unpcklpd512): Ditto. (*avx512f_unpcklpd512): Ditto. (avx512f_shufps512_1): Ditto. (avx512f_shufpd512_1): Ditto. (avx512f_interleave_highv8di): Ditto. (avx512f_interleave_lowv8di): Ditto. (PMOV_DST_MODE): Ditto. (pmov_src_mode): Ditto. (pmov_src_lower): Ditto. (pmov_suff): Ditto. (*avx512f_<code><pmov_src_lower><mode>2): Ditto. (*avx512f_<code>v8div16qi2): Ditto. (*avx512f_<code>v8div16qi2_store): Ditto. (vec_widen_umult_even_v16si): Ditto. (*vec_widen_umult_even_v16si): Ditto. (vec_widen_smult_even_v16si): Ditto. (*vec_widen_smult_even_v16si): Ditto. (avx512f_interleave_highv16si): Ditto. (avx512f_interleave_lowv16si): Ditto. (avx512f_<code>v16qiv16si2): Ditto. (avx512f_<code>v16hiv16si2): Ditto. (avx512f_<code>v8qiv8di2): Ditto. (avx512f_<code>v8hiv8di2): Ditto. (avx512f_<code>v8siv8di2): Ditto. (avx512cd_maskb_vec_dupv8di): Ditto. (avx512cd_maskw_vec_dupv16si): Ditto. (avx512f_vcvtph2ps512): Ditto. (avx512f_vcvtps2ph512): Ditto. (VEC_EXTRACT_MODE): Extened with wider modes. (VEC_PERM_AVX2): Ditto. (VEC_PERM_CONST): Ditto. Co-Authored-By: Andrey Turetskiy <andrey.turetskiy@intel.com> Co-Authored-By: Anna Tikhonova <anna.tikhonova@intel.com> Co-Authored-By: Ilya Tocar <ilya.tocar@intel.com> Co-Authored-By: Ilya Verbin <ilya.verbin@intel.com> Co-Authored-By: Kirill Yukhin <kirill.yukhin@intel.com> Co-Authored-By: Maxim Kuznetsov <maxim.kuznetsov@intel.com> Co-Authored-By: Michael Zolotukhin <michael.v.zolotukhin@intel.com> Co-Authored-By: Sergey Lega <sergey.s.lega@intel.com> From-SVN: r204128
This commit is contained in:
parent
1ea1e1b53f
commit
c003c6d6c3
4 changed files with 1057 additions and 6 deletions
|
@ -1,3 +1,89 @@
|
|||
2013-10-28 Alexander Ivchenko <alexander.ivchenko@intel.com>
|
||||
Maxim Kuznetsov <maxim.kuznetsov@intel.com>
|
||||
Sergey Lega <sergey.s.lega@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/i386.md (any_truncate): New.
|
||||
(trunsuffix): Ditto.
|
||||
* config/i386/predicates.md (const_8_to_9_operand): New.
|
||||
(const_10_to_11_operand): Ditto.
|
||||
(const_12_to_13_operand): Ditto.
|
||||
(const_14_to_15_operand): Ditto.
|
||||
(const_16_to_19_operand): Ditto.
|
||||
(const_20_to_23_operand): Ditto.
|
||||
(const_24_to_27_operand): Ditto.
|
||||
(const_28_to_31_operand): Ditto.
|
||||
* config/i386/sse.md (unspec): Add UNSPEC_UNSIGNED_FIX_NOTRUNC.
|
||||
(cvtusi2<ssescalarmodesuffix>32): New.
|
||||
(cvtusi2<ssescalarmodesuffix>64): Ditto.
|
||||
(ufloatv16siv16sf2): Ditto.
|
||||
(avx512f_fix_notruncv16sfv16si): Ditto.
|
||||
(avx512f_ufix_notruncv16sfv16si): Ditto.
|
||||
(avx512f_vcvtss2usi): Ditto.
|
||||
(avx512f_vcvtss2usiq): Ditto.
|
||||
(avx512f_vcvttss2usi): Ditto.
|
||||
(avx512f_vcvttss2usiq): Ditto.
|
||||
(avx512f_vcvtsd2usi): Ditto.
|
||||
(avx512f_vcvtsd2usiq): Ditto.
|
||||
(avx512f_vcvttsd2usi): Ditto.
|
||||
(avx512f_vcvttsd2usiq): Ditto.
|
||||
(ufloatv8siv8df): Ditto.
|
||||
(avx512f_cvtdq2pd512_2): Ditto.
|
||||
(avx512f_cvtpd2dq512): Ditto.
|
||||
(avx512f_ufix_notruncv8dfv8si): Ditto.
|
||||
(avx512f_cvtpd2ps512): Ditto.
|
||||
(vec_unpacks_lo_v16sf): Ditto.
|
||||
(vec_unpacks_hi_v16sf): Ditto.
|
||||
(vec_unpacks_float_hi_v16si): Ditto.
|
||||
(vec_unpacks_float_lo_v16si): Ditto.
|
||||
(avx512f_unpckhps512): Ditto.
|
||||
(avx512f_unpcklps512): Ditto.
|
||||
(avx512f_movshdup512): Ditto.
|
||||
(avx512f_movsldup512): Ditto.
|
||||
(vec_extract_lo_v32hi): Ditto.
|
||||
(vec_extract_hi_v32hi): Ditto.
|
||||
(vec_extract_lo_v64qi): Ditto.
|
||||
(vec_extract_hi_v64qi): Ditto.
|
||||
(avx512f_unpckhpd512): Ditto.
|
||||
(avx512f_movddup512): Ditto.
|
||||
(avx512f_unpcklpd512): Ditto.
|
||||
(*avx512f_unpcklpd512): Ditto.
|
||||
(avx512f_shufps512_1): Ditto.
|
||||
(avx512f_shufpd512_1): Ditto.
|
||||
(avx512f_interleave_highv8di): Ditto.
|
||||
(avx512f_interleave_lowv8di): Ditto.
|
||||
(PMOV_DST_MODE): Ditto.
|
||||
(pmov_src_mode): Ditto.
|
||||
(pmov_src_lower): Ditto.
|
||||
(pmov_suff): Ditto.
|
||||
(*avx512f_<code><pmov_src_lower><mode>2): Ditto.
|
||||
(*avx512f_<code>v8div16qi2): Ditto.
|
||||
(*avx512f_<code>v8div16qi2_store): Ditto.
|
||||
(vec_widen_umult_even_v16si): Ditto.
|
||||
(*vec_widen_umult_even_v16si): Ditto.
|
||||
(vec_widen_smult_even_v16si): Ditto.
|
||||
(*vec_widen_smult_even_v16si): Ditto.
|
||||
(avx512f_interleave_highv16si): Ditto.
|
||||
(avx512f_interleave_lowv16si): Ditto.
|
||||
(avx512f_<code>v16qiv16si2): Ditto.
|
||||
(avx512f_<code>v16hiv16si2): Ditto.
|
||||
(avx512f_<code>v8qiv8di2): Ditto.
|
||||
(avx512f_<code>v8hiv8di2): Ditto.
|
||||
(avx512f_<code>v8siv8di2): Ditto.
|
||||
(avx512cd_maskb_vec_dupv8di): Ditto.
|
||||
(avx512cd_maskw_vec_dupv16si): Ditto.
|
||||
(avx512f_vcvtph2ps512): Ditto.
|
||||
(avx512f_vcvtps2ph512): Ditto.
|
||||
(VEC_EXTRACT_MODE): Extened with wider modes.
|
||||
(VEC_PERM_AVX2): Ditto.
|
||||
(VEC_PERM_CONST): Ditto.
|
||||
|
||||
|
||||
2013-10-28 Joern Rennecke <joern.rennecke@embecosm.com>
|
||||
|
||||
* config/arc/arc.c (arc_ccfsm_post_advance):
|
||||
|
|
|
@ -861,6 +861,11 @@
|
|||
(define_code_attr s [(sign_extend "s") (zero_extend "u")])
|
||||
(define_code_attr u_bool [(sign_extend "false") (zero_extend "true")])
|
||||
|
||||
;; Used in signed and unsigned truncations.
|
||||
(define_code_iterator any_truncate [ss_truncate truncate us_truncate])
|
||||
;; Instruction suffix for truncations.
|
||||
(define_code_attr trunsuffix [(ss_truncate "s") (truncate "") (us_truncate "us")])
|
||||
|
||||
;; Used in signed and unsigned fix.
|
||||
(define_code_iterator any_fix [fix unsigned_fix])
|
||||
(define_code_attr fixsuffix [(fix "") (unsigned_fix "u")])
|
||||
|
|
|
@ -752,6 +752,11 @@
|
|||
(and (match_code "const_int")
|
||||
(match_test "IN_RANGE (INTVAL (op), 6, 7)")))
|
||||
|
||||
;; Match 8 to 9.
|
||||
(define_predicate "const_8_to_9_operand"
|
||||
(and (match_code "const_int")
|
||||
(match_test "IN_RANGE (INTVAL (op), 8, 9)")))
|
||||
|
||||
;; Match 8 to 11.
|
||||
(define_predicate "const_8_to_11_operand"
|
||||
(and (match_code "const_int")
|
||||
|
@ -762,16 +767,51 @@
|
|||
(and (match_code "const_int")
|
||||
(match_test "IN_RANGE (INTVAL (op), 8, 15)")))
|
||||
|
||||
;; Match 10 to 11.
|
||||
(define_predicate "const_10_to_11_operand"
|
||||
(and (match_code "const_int")
|
||||
(match_test "IN_RANGE (INTVAL (op), 10, 11)")))
|
||||
|
||||
;; Match 12 to 13.
|
||||
(define_predicate "const_12_to_13_operand"
|
||||
(and (match_code "const_int")
|
||||
(match_test "IN_RANGE (INTVAL (op), 12, 13)")))
|
||||
|
||||
;; Match 12 to 15.
|
||||
(define_predicate "const_12_to_15_operand"
|
||||
(and (match_code "const_int")
|
||||
(match_test "IN_RANGE (INTVAL (op), 12, 15)")))
|
||||
|
||||
;; Match 14 to 15.
|
||||
(define_predicate "const_14_to_15_operand"
|
||||
(and (match_code "const_int")
|
||||
(match_test "IN_RANGE (INTVAL (op), 14, 15)")))
|
||||
|
||||
;; Match 16 to 19.
|
||||
(define_predicate "const_16_to_19_operand"
|
||||
(and (match_code "const_int")
|
||||
(match_test "IN_RANGE (INTVAL (op), 16, 19)")))
|
||||
|
||||
;; Match 16 to 31.
|
||||
(define_predicate "const_16_to_31_operand"
|
||||
(and (match_code "const_int")
|
||||
(match_test "IN_RANGE (INTVAL (op), 16, 31)")))
|
||||
|
||||
;; Match 20 to 23.
|
||||
(define_predicate "const_20_to_23_operand"
|
||||
(and (match_code "const_int")
|
||||
(match_test "IN_RANGE (INTVAL (op), 20, 23)")))
|
||||
|
||||
;; Match 24 to 27.
|
||||
(define_predicate "const_24_to_27_operand"
|
||||
(and (match_code "const_int")
|
||||
(match_test "IN_RANGE (INTVAL (op), 24, 27)")))
|
||||
|
||||
;; Match 28 to 31.
|
||||
(define_predicate "const_28_to_31_operand"
|
||||
(and (match_code "const_int")
|
||||
(match_test "IN_RANGE (INTVAL (op), 28, 31)")))
|
||||
|
||||
;; True if this is a constant appropriate for an increment or decrement.
|
||||
(define_predicate "incdec_operand"
|
||||
(match_code "const_int")
|
||||
|
|
File diff suppressed because it is too large
Load diff
Loading…
Add table
Reference in a new issue