>> Looks like just a line-break change and the line is not too long?
Yes.

>> This seems a bit inconsistent from a caller's perspective
>> as we also do emit_insn (gen_vec_series, ...) without extra move
>> at another spot.  Can we handle this directly in expand_vec_series?

I'am not sure. I change this because I encounter an issue in my tests.
Could you try this patch without this change and run tests?
I am not whether this patch is the only correct fix.


>>This hunk seems unrelated to the rest.  I suppose it's just a fixup
>>for 1-element float vectors for VLS?
No, this is related since there will be an ICE when I didn't add these modes.
Could you try this? I didn't spend time on the details of this.



juzhe.zh...@rivai.ai
 
From: Robin Dapp
Date: 2023-08-08 20:50
To: Juzhe-Zhong; gcc-patches
CC: rdapp.gcc; kito.cheng; kito.cheng; jeffreyalaw
Subject: Re: [PATCH] RISC-V: Allow CONST_VECTOR for VLS modes.
Hi Juzhe,
 
just some nits.
 
> -  else if (rtx_equal_p (step, constm1_rtx) && poly_int_rtx_p (base, &value)
> +  else if (rtx_equal_p (step, constm1_rtx)
> +    && poly_int_rtx_p (base, &value)
 
Looks like just a line-break change and the line is not too long?
 
> -      rtx ops[] = {dest, vid, gen_int_mode (nunits_m1, GET_MODE_INNER 
> (mode))};
> -      insn_code icode = code_for_pred_sub_reverse_scalar (mode);
> -      emit_vlmax_insn (icode, RVV_BINOP, ops);
> +      if (value.is_constant () && IN_RANGE (value.to_constant (), -16, 15))
 
At some point, we'd want to unify all the [-16, 15] handling.  We already have
simm5_p but that takes an rtx.  Not urgent for now just to keep in mind.
 
> + {
> +   rtx dup = gen_const_vector_dup (mode, value);
> +   rtx ops[] = {dest, dup, vid};
> +   insn_code icode = code_for_pred (MINUS, mode);
> +   emit_vlmax_insn (icode, RVV_BINOP, ops);
> + }
> +      else
> + {
> +   rtx ops[]
> +     = {dest, vid, gen_int_mode (nunits_m1, GET_MODE_INNER (mode))};
> +   insn_code icode = code_for_pred_sub_reverse_scalar (mode);
> +   emit_vlmax_insn (icode, RVV_BINOP, ops);
> + }
>        return;
>      }
>    else
> @@ -1416,7 +1428,9 @@ expand_const_vector (rtx target, rtx src)
>    rtx base, step;
>    if (const_vec_series_p (src, &base, &step))
>      {
> -      emit_insn (gen_vec_series (mode, target, base, step));
> +      rtx tmp = gen_reg_rtx (mode);
> +      emit_insn (gen_vec_series (mode, tmp, base, step));
> +      emit_move_insn (target, tmp);
 
This seems a bit inconsistent from a caller's perspective
as we also do emit_insn (gen_vec_series, ...) without extra move
at another spot.  Can we handle this directly in expand_vec_series?
 
> +  (V1HF "TARGET_VECTOR_VLS && TARGET_VECTOR_ELEN_FP_16")
>    (V2HF "TARGET_VECTOR_VLS && TARGET_VECTOR_ELEN_FP_16")
>    (V4HF "TARGET_VECTOR_VLS && TARGET_VECTOR_ELEN_FP_16")
>    (V8HF "TARGET_VECTOR_VLS && TARGET_VECTOR_ELEN_FP_16")
> @@ -479,6 +480,7 @@
>    (V512HF "TARGET_VECTOR_VLS && TARGET_VECTOR_ELEN_FP_16 && TARGET_MIN_VLEN 
> >= 1024")
>    (V1024HF "TARGET_VECTOR_VLS && TARGET_VECTOR_ELEN_FP_16 && TARGET_MIN_VLEN 
> >= 2048")
>    (V2048HF "TARGET_VECTOR_VLS && TARGET_VECTOR_ELEN_FP_16 && TARGET_MIN_VLEN 
> >= 4096")
> +  (V1SF "TARGET_VECTOR_VLS && TARGET_VECTOR_ELEN_FP_32")
>    (V2SF "TARGET_VECTOR_VLS && TARGET_VECTOR_ELEN_FP_32")
>    (V4SF "TARGET_VECTOR_VLS && TARGET_VECTOR_ELEN_FP_32")
>    (V8SF "TARGET_VECTOR_VLS && TARGET_VECTOR_ELEN_FP_32")
> @@ -489,6 +491,7 @@
>    (V256SF "TARGET_VECTOR_VLS && TARGET_VECTOR_ELEN_FP_32 && TARGET_MIN_VLEN 
> >= 1024")
>    (V512SF "TARGET_VECTOR_VLS && TARGET_VECTOR_ELEN_FP_32 && TARGET_MIN_VLEN 
> >= 2048")
>    (V1024SF "TARGET_VECTOR_VLS && TARGET_VECTOR_ELEN_FP_32 && TARGET_MIN_VLEN 
> >= 4096")
> +  (V1DF "TARGET_VECTOR_VLS && TARGET_VECTOR_ELEN_FP_64")
>    (V2DF "TARGET_VECTOR_VLS && TARGET_VECTOR_ELEN_FP_64")
>    (V4DF "TARGET_VECTOR_VLS && TARGET_VECTOR_ELEN_FP_64")
>    (V8DF "TARGET_VECTOR_VLS && TARGET_VECTOR_ELEN_FP_64 && TARGET_MIN_VLEN >= 
> 64")
 
This hunk seems unrelated to the rest.  I suppose it's just a fixup
for 1-element float vectors for VLS?
 
Apart from that, looks good to me.
 
Regards
Robin
 
 

Reply via email to