> The following adds DFmode where V1DFmode and SFmode were handled.
> This resolves missing reservations for adds, subs [with memory]
> and for FMAs for the testcase I'm looking at.  Resolved cases are
> 
> -;;      16--> b  0: i 237 xmm3=xmm3+[r9*0x8+si]                   :nothing
> -;;      29--> b  0: i 246 xmm3=xmm3+xmm1                          :nothing
> -;;      46--> b  0: i 296 xmm1=xmm1-xmm3                          :nothing
> 
> I've done search-and-replace for this, the catched cases look reasonable
> though I'm of course not sure all of them can actually happen.
> 
> This also fixes the matched type for the znver{4,5}_sse_muladd_load
> reservations from sseshuf to ssemuladd, resolving
> 
> -;;       1--> b  0: i 161 xmm0={-xmm0*xmm27+[cx+ax]}              :nothing
> -;;      22--> b  0: i 229 xmm11={-xmm11*xmm7+[di*0x8+dx]}         :nothing
> 
> Bootstrap and regtest running on x86_64-unknown-linux-gnu.  OK?
> 
>       PR target/119474
>       * config/i386/zn4zn5.md (znver4_sse_add, znver4_sse_add_load,
>       znver5_sse_add_load, znver4_sse_add1, znver4_sse_add1_load,
>       znver5_sse_add1_load, znver4_sse_mul, znver4_sse_mul_load,
>       znver5_sse_mul_load, znver4_sse_cvt, znver4_sse_cvt_load,
>       znver5_sse_cvt_load, znver4_sse_shuf, znver5_sse_shuf,
>       znver4_sse_shuf_load, znver5_sse_shuf_load,
>       znver4_sse_cmp_avx128, znver5_sse_cmp_avx128,
>       znver4_sse_cmp_avx128_load, znver5_sse_cmp_avx128_load):
>       Also handle DFmode.
>       (znver4_sse_muladd_load, znver5_sse_muladd_load): Use
>       ssemuladd type.

This is OK.  I think V1DF is used only for instructoins for
packing/unpacking, so in some of the patterns it cna be dropped from
attribute list, but also it does not hurt, since the test will likely
compile to if ((1 << mode) & mask) 

Thanks for looking into this!
Honza

Reply via email to