aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUros Bizjak <ubizjak@gmail.com>2019-07-02 17:48:36 +0200
committerUros Bizjak <uros@gcc.gnu.org>2019-07-02 17:48:36 +0200
commitdab0477b0bbcc90418a7e1aec40b465de3ec842c (patch)
tree2df9afa0241a6f9c7e844ebe304ed5473e3e4e67
parent8108da8a555410260039b932301bc6126de0f5e0 (diff)
downloadgcc-dab0477b0bbcc90418a7e1aec40b465de3ec842c.zip
gcc-dab0477b0bbcc90418a7e1aec40b465de3ec842c.tar.gz
gcc-dab0477b0bbcc90418a7e1aec40b465de3ec842c.tar.bz2
mmx.md (mmx_pack<s_trunsuffix>swb): Use TARGET_SSE2 && SSE_REGNO_P in split condition.
* config/i386/mmx.md (mmx_pack<s_trunsuffix>swb): 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_ph<plusminus_mnemonic>wv4hi3): Use TARGET_SSSE3 && SSE_REGNO_P in split condition. (ssse3_ph<plusminus_mnemonic>dv2si3): Ditto. (ssse3_pshufbv8qi3): Ditto. (ssse3_palignrdi): Ditto. From-SVN: r272943
-rw-r--r--gcc/ChangeLog22
-rw-r--r--gcc/config/i386/mmx.md30
-rw-r--r--gcc/config/i386/sse.md15
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 <ubizjak@gmail.com>
+
+ * config/i386/mmx.md (mmx_pack<s_trunsuffix>swb):
+ 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_ph<plusminus_mnemonic>wv4hi3): Use
+ TARGET_SSSE3 && SSE_REGNO_P in split condition.
+ (ssse3_ph<plusminus_mnemonic>dv2si3): Ditto.
+ (ssse3_pshufbv8qi3): Ditto.
+ (ssse3_palignrdi): Ditto.
+
2019-07-02 Andrew Stubbs <ams@codesourcery.com>
* 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 @@
pack<s_trunsuffix>swb\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, <any_s_truncate:CODE>); 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 @@
ph<plusminus_mnemonic>w\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 @@
ph<plusminus_mnemonic>d\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)))]
{