On Thu, Mar 19, 2015 at 10:24 AM, Ilya Tocar <tocarip.in...@gmail.com> wrote: > Hi, > > There were some discussion about "x" constraints being too conservative > for some patterns in i386.md. > Patch below fixes it. This is probably stage1 material. > > ChangeLog: > > gcc/ > > 2015-03-19 Ilya Tocar <ilya.to...@intel.com> > > * config/i386/i386.h (EXT_SSE_REG_P): New. > * config/i386/i386.md (*cmpi<FPCMP:unord><MODEF:mode>_mixed): Use "v" > constraint. > (*cmpi<FPCMP:unord><MODEF:mode>_sse): Ditto. > (*movxi_internal_avx512f): Ditto. > (define_split): Check for xmm16+, when splitting scalar float_extend. > (*extendsfdf2_mixed): Use "v" constraint. > (*extendsfdf2_sse): Ditto. > (define_split): Check for xmm16+, when splitting scalar > float_truncate. > (*truncdfsf_fast_sse): Use "v" constraint. > (fix_trunc<MODEF:mode><SWI48:mode>_sse): Ditto. > (*float<SWI48:mode><MODEF:mode>2_sse): Ditto. > (define_peephole2): Check for xmm16+, when converting scalar > float_truncate. > (define_peephole2): Check for xmm16+, when converting scalar > float_extend. > (*fop_<mode>_comm_mixed): Use "v" constraint. > (*fop_<mode>_comm_sse): Ditto. > (*fop_<mode>_1_mixed): Ditto. > (*sqrt<mode>2_sse): Ditto. > (*ieee_s<ieee_maxmin><mode>3): Ditto.
I wonder if there are also changes needed in mmx.md. There are a couple of patterns that operate on xmm registers, so they should be reviewed if they need to change their constraint to "v" to accept extended xmm register set. Uros.