aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/i386
diff options
context:
space:
mode:
authorUros Bizjak <ubizjak@gmail.com>2022-01-07 20:40:35 +0100
committerUros Bizjak <ubizjak@gmail.com>2022-01-07 20:41:30 +0100
commit42ae7ebfb2665f8565c8d6c04f6214785a6765ce (patch)
treee97714dd6fcc048ee22f7ac61f0a6668a5790664 /gcc/config/i386
parenta64478660ee95930773d356760e39e05fe0147fe (diff)
downloadgcc-42ae7ebfb2665f8565c8d6c04f6214785a6765ce.zip
gcc-42ae7ebfb2665f8565c8d6c04f6214785a6765ce.tar.gz
gcc-42ae7ebfb2665f8565c8d6c04f6214785a6765ce.tar.bz2
i386: Robustify V2QI and V4QI move patterns
Add sse2 isa attribute where needed and remove where not needed. 2022-01-07 Uroš Bizjak <ubizjak@gmail.com> gcc/ChangeLog: * config/i386/mmx.md (*move<V_32:mode>_internal): Add isa attribute. (*movv2qi_internal): Remve sse2 requirement for alternatives 4,5.
Diffstat (limited to 'gcc/config/i386')
-rw-r--r--gcc/config/i386/mmx.md16
1 files changed, 12 insertions, 4 deletions
diff --git a/gcc/config/i386/mmx.md b/gcc/config/i386/mmx.md
index 8e0a649..4fc3e00 100644
--- a/gcc/config/i386/mmx.md
+++ b/gcc/config/i386/mmx.md
@@ -285,7 +285,12 @@
gcc_unreachable ();
}
}
- [(set (attr "type")
+ [(set (attr "isa")
+ (cond [(eq_attr "alternative" "6,7")
+ (const_string "sse2")
+ ]
+ (const_string "*")))
+ (set (attr "type")
(cond [(eq_attr "alternative" "2")
(const_string "sselog1")
(eq_attr "alternative" "3,4,5,6,7")
@@ -306,12 +311,15 @@
(const_string "V4SF")
(match_test "TARGET_AVX")
(const_string "TI")
- (match_test "optimize_function_for_size_p (cfun)")
+ (ior (not (match_test "TARGET_SSE2"))
+ (match_test "optimize_function_for_size_p (cfun)"))
(const_string "V4SF")
]
(const_string "TI"))
+
(and (eq_attr "alternative" "4,5")
- (match_test "<MODE>mode == V2HFmode"))
+ (ior (match_test "<MODE>mode == V2HFmode")
+ (not (match_test "TARGET_SSE2"))))
(const_string "SF")
]
(const_string "SI")))
@@ -401,7 +409,7 @@
}
}
[(set (attr "isa")
- (cond [(eq_attr "alternative" "4,5,6,8,9")
+ (cond [(eq_attr "alternative" "6,8,9")
(const_string "sse2")
(eq_attr "alternative" "7")
(const_string "sse4")