> From: Dipesh Sharma <[email protected]>
> Sent: Monday, July 20, 2026 2:24 AM
> 
> diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
> index 234acd7aa21..1583c59db3b 100644
> --- a/gcc/config/i386/sse.md
> +++ b/gcc/config/i386/sse.md
> @@ -270,6 +270,8 @@
>    UNSPEC_VCVTBIASPS2BF8S
>    UNSPEC_VCVTBIASPS2HF8
>    UNSPEC_VCVTBIASPS2HF8S
> +  UNSPEC_VCVTBF82PS
> +  UNSPEC_VCVTHF82PS
>  ])
> 
>  (define_c_enum "unspecv" [
> @@ -34352,3 +34354,29 @@
> 
> "vcvt<biasps2fp8>\t{%2, %1, %0<mask_operand3>|%0<mask_operand3>, %
> 1, %2}"
>    [(set_attr "prefix" "evex")
>     (set_attr "mode" "V16SF")])
> +
> +;; FP8 to FP32 converts (VCVTBF82PS, VCVTHF82PS)
> +
> +(define_int_iterator UNSPEC_CONVERTFP82PS
> +  [UNSPEC_VCVTBF82PS UNSPEC_VCVTHF82PS])
> +
> +(define_int_attr convertfp82ps
> +  [(UNSPEC_VCVTBF82PS "bf82ps")
> +   (UNSPEC_VCVTHF82PS "hf82ps")])
> +
> +(define_mode_iterator FP82PS_MODE [V4SF V8SF V16SF])
> +
> +(define_mode_attr ssebvecmode_3
> +  [(V4SF "V16QI") (V8SF "V16QI") (V16SF "V16QI")])

You don't need these two iter. Simply use VF1_AVX512VL
and V16QI is enough.

> +
> +(define_mode_attr iptrssebvec_3
> +  [(V4SF "k") (V8SF "q") (V16SF "")])
> +
> +(define_insn "vcvt<convertfp82ps><mode><mask_name>"
> +  [(set (match_operand:FP82PS_MODE 0 "register_operand" "=v")
> +     (unspec:FP82PS_MODE
> +       [(match_operand:<ssebvecmode_3> 1 "nonimmediate_operand"
> "vm")]
> +       UNSPEC_CONVERTFP82PS))]
> +  "TARGET_AVX10V2AUX"
> +
> "vcvt<convertfp82ps>\t{%1, %0<mask_operand2>|%0<mask_operand2>,%<i
> ptrssebvec_3>1}"
> +  [(set_attr "prefix" "evex")])

Thx,
Haochen

Reply via email to