From dab0477b0bbcc90418a7e1aec40b465de3ec842c Mon Sep 17 00:00:00 2001 From: Uros Bizjak Date: Tue, 2 Jul 2019 17:48:36 +0200 Subject: [PATCH] mmx.md (mmx_packswb): Use TARGET_SSE2 && SSE_REGNO_P in split condition. * config/i386/mmx.md (mmx_packswb): Use TARGET_SSE2 && SSE_REGNO_P in split condition. (mmx_packssdw): Ditto. (mmx_punpckhbw): Ditto. (mmx_punpcklbw): Ditto. (mmx_punpckhwd): Ditto. (mmx_punpcklwd): Ditto. (mmx_punpckhdq): Ditto. (mmx_punpckldq): Ditto. (*vec_dupv4hi): Ditto. (*vec_dupv2si): Ditto. (mmx_pmovmskb): Ditto. * config/i386/sse.md (sse_cvtpi2ps): Use TARGET_SSE2 && SSE_REG_P in split condition. (ssse3_phwv4hi3): Use TARGET_SSSE3 && SSE_REGNO_P in split condition. (ssse3_phdv2si3): Ditto. (ssse3_pshufbv8qi3): Ditto. (ssse3_palignrdi): Ditto. From-SVN: r272943 --- gcc/ChangeLog | 22 ++++++++++++++++++++++ gcc/config/i386/mmx.md | 30 ++++++++++++++++++++---------- gcc/config/i386/sse.md | 15 ++++++++++----- 3 files changed, 52 insertions(+), 15 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 77d8ff3..f40d55e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,25 @@ +2019-07-02 Uroš Bizjak + + * config/i386/mmx.md (mmx_packswb): + Use TARGET_SSE2 && SSE_REGNO_P in split condition. + (mmx_packssdw): Ditto. + (mmx_punpckhbw): Ditto. + (mmx_punpcklbw): Ditto. + (mmx_punpckhwd): Ditto. + (mmx_punpcklwd): Ditto. + (mmx_punpckhdq): Ditto. + (mmx_punpckldq): Ditto. + (*vec_dupv4hi): Ditto. + (*vec_dupv2si): Ditto. + (mmx_pmovmskb): Ditto. + * config/i386/sse.md (sse_cvtpi2ps): Use + TARGET_SSE2 && SSE_REG_P in split condition. + (ssse3_phwv4hi3): Use + TARGET_SSSE3 && SSE_REGNO_P in split condition. + (ssse3_phdv2si3): Ditto. + (ssse3_pshufbv8qi3): Ditto. + (ssse3_palignrdi): Ditto. + 2019-07-02 Andrew Stubbs * config/gcn/gcn.md (movdi_symbol_save_scc): Convert to define_insn diff --git a/gcc/config/i386/mmx.md b/gcc/config/i386/mmx.md index 9ff86ba..4c71e66 100644 --- a/gcc/config/i386/mmx.md +++ b/gcc/config/i386/mmx.md @@ -1228,7 +1228,8 @@ packswb\t{%2, %0|%0, %2} # #" - "TARGET_MMX_WITH_SSE && reload_completed" + "TARGET_SSE2 && reload_completed + && SSE_REGNO_P (REGNO (operands[0]))" [(const_int 0)] "ix86_split_mmx_pack (operands, ); DONE;" [(set_attr "mmx_isa" "native,sse_noavx,avx") @@ -1247,7 +1248,8 @@ packssdw\t{%2, %0|%0, %2} # #" - "TARGET_MMX_WITH_SSE && reload_completed" + "TARGET_SSE2 && reload_completed + && SSE_REGNO_P (REGNO (operands[0]))" [(const_int 0)] "ix86_split_mmx_pack (operands, SS_TRUNCATE); DONE;" [(set_attr "mmx_isa" "native,sse_noavx,avx") @@ -1269,7 +1271,8 @@ punpckhbw\t{%2, %0|%0, %2} # #" - "TARGET_MMX_WITH_SSE && reload_completed" + "TARGET_SSE2 && reload_completed + && SSE_REGNO_P (REGNO (operands[0]))" [(const_int 0)] "ix86_split_mmx_punpck (operands, true); DONE;" [(set_attr "mmx_isa" "native,sse_noavx,avx") @@ -1291,7 +1294,8 @@ punpcklbw\t{%2, %0|%0, %k2} # #" - "TARGET_MMX_WITH_SSE && reload_completed" + "TARGET_SSE2 && reload_completed + && SSE_REGNO_P (REGNO (operands[0]))" [(const_int 0)] "ix86_split_mmx_punpck (operands, false); DONE;" [(set_attr "mmx_isa" "native,sse_noavx,avx") @@ -1311,7 +1315,8 @@ punpckhwd\t{%2, %0|%0, %2} # #" - "TARGET_MMX_WITH_SSE && reload_completed" + "TARGET_SSE2 && reload_completed + && SSE_REGNO_P (REGNO (operands[0]))" [(const_int 0)] "ix86_split_mmx_punpck (operands, true); DONE;" [(set_attr "mmx_isa" "native,sse_noavx,avx") @@ -1331,7 +1336,8 @@ punpcklwd\t{%2, %0|%0, %k2} # #" - "TARGET_MMX_WITH_SSE && reload_completed" + "TARGET_SSE2 && reload_completed + && SSE_REGNO_P (REGNO (operands[0]))" [(const_int 0)] "ix86_split_mmx_punpck (operands, false); DONE;" [(set_attr "mmx_isa" "native,sse_noavx,avx") @@ -1351,7 +1357,8 @@ punpckhdq\t{%2, %0|%0, %2} # #" - "TARGET_MMX_WITH_SSE && reload_completed" + "TARGET_SSE2 && reload_completed + && SSE_REGNO_P (REGNO (operands[0]))" [(const_int 0)] "ix86_split_mmx_punpck (operands, true); DONE;" [(set_attr "mmx_isa" "native,sse_noavx,avx") @@ -1371,7 +1378,8 @@ punpckldq\t{%2, %0|%0, %k2} # #" - "TARGET_MMX_WITH_SSE && reload_completed" + "TARGET_SSE2 && reload_completed + && SSE_REGNO_P (REGNO (operands[0]))" [(const_int 0)] "ix86_split_mmx_punpck (operands, false); DONE;" [(set_attr "mmx_isa" "native,sse_noavx,avx") @@ -1517,7 +1525,8 @@ pshufw\t{$0, %0, %0|%0, %0, 0} # #" - "TARGET_MMX_WITH_SSE && reload_completed" + "TARGET_SSE2 && reload_completed + && SSE_REGNO_P (REGNO (operands[0]))" [(const_int 0)] { rtx op; @@ -1889,7 +1898,8 @@ "@ pmovmskb\t{%1, %0|%0, %1} #" - "TARGET_MMX_WITH_SSE && reload_completed" + "TARGET_SSE2 && reload_completed + && SSE_REGNO_P (REGNO (operands[1]))" [(set (match_dup 0) (unspec:SI [(match_dup 1)] UNSPEC_MOVMSK)) (set (match_dup 0) diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md index 0494cbf..8f50cb1 100644 --- a/gcc/config/i386/sse.md +++ b/gcc/config/i386/sse.md @@ -5110,7 +5110,8 @@ cvtpi2ps\t{%2, %0|%0, %2} # #" - "TARGET_MMX_WITH_SSE && reload_completed" + "TARGET_SSE2 && reload_completed + && SSE_REG_P (operands[2])" [(const_int 0)] { rtx op2 = lowpart_subreg (V4SImode, operands[2], @@ -15881,7 +15882,8 @@ phw\t{%2, %0|%0, %2} # #" - "TARGET_MMX_WITH_SSE && reload_completed" + "TARGET_SSSE3 && reload_completed + && SSE_REGNO_P (REGNO (operands[0]))" [(const_int 0)] { /* Generate SSE version of the operation. */ @@ -15997,7 +15999,8 @@ phd\t{%2, %0|%0, %2} # #" - "TARGET_MMX_WITH_SSE && reload_completed" + "TARGET_SSSE3 && reload_completed + && SSE_REGNO_P (REGNO (operands[0]))" [(const_int 0)] { /* Generate SSE version of the operation. */ @@ -16353,7 +16356,8 @@ pshufb\t{%2, %0|%0, %2} # #" - "TARGET_MMX_WITH_SSE && reload_completed" + "TARGET_SSSE3 && reload_completed + && SSE_REGNO_P (REGNO (operands[0]))" [(set (match_dup 3) (match_dup 5)) (set (match_dup 3) (and:V4SI (match_dup 3) (match_dup 2))) @@ -16490,7 +16494,8 @@ gcc_unreachable (); } } - "TARGET_MMX_WITH_SSE && reload_completed" + "TARGET_SSSE3 && reload_completed + && SSE_REGNO_P (REGNO (operands[0]))" [(set (match_dup 0) (lshiftrt:V1TI (match_dup 0) (match_dup 3)))] { -- 2.7.4