[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