Message ID | 20150428162049.GA62528@msticlxl7.ims.intel.com |
---|---|
State | New |
Headers | show |
On Tue, Apr 28, 2015 at 9:20 AM, Ilya Tocar <tocarip.intel@gmail.com> wrote: >> > I've renamed EXT_SSE_REG_P into EXT_REX_SSE_REG_P for consistency. >> > Ok for stage1? >> Patch is OK for stage1. >> >> -- >> Thanks, K >> >> >> > On 19 Mar 12:24, Ilya Tocar 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-23 Ilya Tocar <ilya.tocar@intel.com> >> > >> > * config/i386/i386.h (EXT_REX_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. >> > >> > > > Hi, > > Looks like I missed some splits, which caused PR65915. > Patch below fixes it. > Ok for trunk? > > 2015-04-28 Ilya Tocar <ilya.tocar@intel.com> > > * config/i386/i386.md (define_split): Check for xmm16+, > when splitting scalar float conversion. > Need a testcase and PR# in ChangeLog.
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index 937871a..af1cd9b 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -4897,7 +4897,9 @@ "TARGET_SSE2 && TARGET_SSE_MATH && TARGET_USE_VECTOR_CONVERTS && optimize_function_for_speed_p (cfun) && reload_completed && SSE_REG_P (operands[0]) - && (MEM_P (operands[1]) || TARGET_INTER_UNIT_MOVES_TO_VEC)" + && (MEM_P (operands[1]) || TARGET_INTER_UNIT_MOVES_TO_VEC) + && (!EXT_REX_SSE_REG_P (operands[0]) + || TARGET_AVX512VL)" [(const_int 0)] { operands[3] = simplify_gen_subreg (<ssevecmode>mode, operands[0], @@ -4921,7 +4923,9 @@ "TARGET_SSE2 && TARGET_SSE_MATH && TARGET_SSE_PARTIAL_REG_DEPENDENCY && optimize_function_for_speed_p (cfun) - && reload_completed && SSE_REG_P (operands[0])" + && reload_completed && SSE_REG_P (operands[0]) + && (!EXT_REX_SSE_REG_P (operands[0]) + || TARGET_AVX512VL)" [(const_int 0)] { const machine_mode vmode = <MODEF:ssevecmode>mode;