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:
Alexander Ivchenko 2013-10-28 14:25:05 +00:00 committed by Kirill Yukhin
parent 1ea1e1b53f
commit c003c6d6c3
4 changed files with 1057 additions and 6 deletions

View file

@ -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):

View file

@ -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")])

View file

@ -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