Commit 2f3d2660 by H.J. Lu Committed by H.J. Lu

i386: Add ssse3_pmulhrswv4hi3 expander

There is no V4HI pmulhrsw in AVX512BW and V4HI/V8HI pmulhrsw don't require
AVX2.

	PR target/89372
	* config/i386/sse.md (ssedoublemode): Remove V4HI.
	(PMULHRSW): Likewise.
	(<ssse3_avx2>_pmulhrsw<mode>3): Require TARGET_SSSE3, not
	TARGET_AVX2.
	(ssse3_pmulhrswv4hi3): New expander.

From-SVN: r268964
parent 49be11f5
2019-02-16 H.J. Lu <hongjiu.lu@intel.com>
PR target/89372
* config/i386/sse.md (ssedoublemode): Remove V4HI.
(PMULHRSW): Likewise.
(<ssse3_avx2>_pmulhrsw<mode>3): Require TARGET_SSSE3, not
TARGET_AVX2.
(ssse3_pmulhrswv4hi3): New expander.
2019-02-16 H.J. Lu <hongjiu.lu@intel.com>
* config/i386/mmx.md (*vec_extractv2si_zext_mem): Doesn't require
MMX. Add isa attribute.
......
......@@ -596,7 +596,7 @@
[(V4SF "V8SF") (V8SF "V16SF") (V16SF "V32SF")
(V2DF "V4DF") (V4DF "V8DF") (V8DF "V16DF")
(V16QI "V16HI") (V32QI "V32HI") (V64QI "V64HI")
(V4HI "V4SI") (V8HI "V8SI") (V16HI "V16SI") (V32HI "V32SI")
(V8HI "V8SI") (V16HI "V16SI") (V32HI "V32SI")
(V4SI "V4DI") (V8SI "V16SI") (V16SI "V32SI")
(V4DI "V8DI") (V8DI "V16DI")])
......@@ -15590,7 +15590,7 @@
(set_attr "mode" "DI")])
(define_mode_iterator PMULHRSW
[V4HI V8HI (V16HI "TARGET_AVX2")])
[V8HI (V16HI "TARGET_AVX2")])
(define_expand "<ssse3_avx2>_pmulhrsw<mode>3_mask"
[(set (match_operand:PMULHRSW 0 "register_operand")
......@@ -15629,7 +15629,7 @@
(const_int 14))
(match_dup 3))
(const_int 1))))]
"TARGET_AVX2"
"TARGET_SSSE3"
{
operands[3] = CONST1_RTX(<MODE>mode);
ix86_fixup_binary_operands_no_copy (MULT, <MODE>mode, operands);
......@@ -15662,6 +15662,26 @@
(set_attr "prefix" "orig,maybe_evex,evex")
(set_attr "mode" "<sseinsnmode>")])
(define_expand "ssse3_pmulhrswv4hi3"
[(set (match_operand:V4HI 0 "register_operand")
(truncate:V4HI
(lshiftrt:V4SI
(plus:V4SI
(lshiftrt:V4SI
(mult:V4SI
(sign_extend:V4SI
(match_operand:V4HI 1 "nonimmediate_operand"))
(sign_extend:V4SI
(match_operand:V4HI 2 "nonimmediate_operand")))
(const_int 14))
(match_dup 3))
(const_int 1))))]
"TARGET_SSSE3"
{
operands[3] = CONST1_RTX(V4HImode);
ix86_fixup_binary_operands_no_copy (MULT, V4HImode, operands);
})
(define_insn "*ssse3_pmulhrswv4hi3"
[(set (match_operand:V4HI 0 "register_operand" "=y")
(truncate:V4HI
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment