[PATCH] Improve *avx_cvtp?2??256_2

Kirill Yukhin kirill.yukhin@gmail.com
Fri May 6 11:46:00 GMT 2016


On 04 May 21:35, Jakub Jelinek wrote:
> Hi!
> 
> Not sure how to easily construct a testcase for this (these insns are
> usually used for vectorization, and then it really depends on register
> pressure).
> But in any case, looking at documentation it seems all the used insns are
> available (generally even for further patches, what I'm looking for is
> whether the insns are available already in AVX512F, or, if all the operands
> are 128-bit or 256-bit vectors, in AVX512VL, or if they need further ISA
> extensions; HARD_REGNO_MODE_OK should guarantee that the 128-bit and 256-bit
> vectors would not be assigned to xmm16+ unless -mavx512vl).
> 
> Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk?
OK for trunk.

--
Thanks, K
> 
> 2016-05-04  Jakub Jelinek  <jakub@redhat.com>
> 
> 	* config/i386/sse.md (*avx_cvtpd2dq256_2, *avx_cvtps2pd256_2): Use
> 	v constraint instead of x.
> 
> --- gcc/config/i386/sse.md.jj	2016-05-04 14:36:08.000000000 +0200
> +++ gcc/config/i386/sse.md	2016-05-04 15:16:44.180894303 +0200
> @@ -4735,9 +4735,9 @@ (define_expand "avx_cvtpd2dq256_2"
>    "operands[2] = CONST0_RTX (V4SImode);")
>  
>  (define_insn "*avx_cvtpd2dq256_2"
> -  [(set (match_operand:V8SI 0 "register_operand" "=x")
> +  [(set (match_operand:V8SI 0 "register_operand" "=v")
>  	(vec_concat:V8SI
> -	  (unspec:V4SI [(match_operand:V4DF 1 "nonimmediate_operand" "xm")]
> +	  (unspec:V4SI [(match_operand:V4DF 1 "nonimmediate_operand" "vm")]
>  		       UNSPEC_FIX_NOTRUNC)
>  	  (match_operand:V4SI 2 "const0_operand")))]
>    "TARGET_AVX"
> @@ -5050,10 +5050,10 @@ (define_insn "<sse2_avx_avx512f>_cvtps2p
>     (set_attr "mode" "<MODE>")])
>  
>  (define_insn "*avx_cvtps2pd256_2"
> -  [(set (match_operand:V4DF 0 "register_operand" "=x")
> +  [(set (match_operand:V4DF 0 "register_operand" "=v")
>  	(float_extend:V4DF
>  	  (vec_select:V4SF
> -	    (match_operand:V8SF 1 "nonimmediate_operand" "xm")
> +	    (match_operand:V8SF 1 "nonimmediate_operand" "vm")
>  	    (parallel [(const_int 0) (const_int 1)
>  		       (const_int 2) (const_int 3)]))))]
>    "TARGET_AVX"
> 
> 	Jakub



More information about the Gcc-patches mailing list