From: "[email protected]" <[email protected]>
gcc/ChangeLog:
* config/i386/sse.md
(define_mode_attr sse2):
Add V4SI/V8SI/V16SI/V8HI/V16HI/V32HI.
(<sse2>_movnt<mode>): Change operand mode from VI8 to
VI_AVX_AVX512F.
(define_mode_iterator STORENT_MODE):
Add V4SI/V8SI/V16SI/V8HI/V16HI/V32HI/V16QI/V32QI/V64QI.
Signed-off-by: [email protected] <[email protected]>
---
gcc/config/i386/sse.md | 13 +++++++++----
1 file changed, 9 insertions(+), 4 deletions(-)
diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
index 46ee77ba38e..7ceb705959a 100644
--- a/gcc/config/i386/sse.md
+++ b/gcc/config/i386/sse.md
@@ -1024,7 +1024,9 @@
(define_mode_attr sse2
[(V16QI "sse2") (V32QI "avx") (V64QI "avx512f")
- (V2DI "sse2") (V4DI "avx") (V8DI "avx512f")])
+ (V2DI "sse2") (V4DI "avx") (V8DI "avx512f")
+ (V4SI "sse2") (V8SI "avx") (V16SI "avx512f")
+ (V8HI "sse2") (V16HI "avx") (V32HI "avx512f")])
(define_mode_attr sse3
[(V16QI "sse3") (V32QI "avx")])
@@ -2049,8 +2051,8 @@
(set_attr "mode" "<MODE>")])
(define_insn "<sse2>_movnt<mode>"
- [(set (match_operand:VI8 0 "memory_operand" "=m")
- (unspec:VI8 [(match_operand:VI8 1 "register_operand" "v")]
+ [(set (match_operand:VI_AVX_AVX512F 0 "memory_operand" "=m")
+ (unspec:VI_AVX_AVX512F [(match_operand:VI_AVX_AVX512F 1
"register_operand" "v")]
UNSPEC_MOVNT))]
"TARGET_SSE2"
"%vmovntdq\t{%1, %0|%0, %1}"
@@ -2073,7 +2075,10 @@
(SF "TARGET_SSE4A") (DF "TARGET_SSE4A")
(V8DI "TARGET_AVX512F") (V4DI "TARGET_AVX") (V2DI "TARGET_SSE2")
(V16SF "TARGET_AVX512F") (V8SF "TARGET_AVX") V4SF
- (V8DF "TARGET_AVX512F") (V4DF "TARGET_AVX") (V2DF "TARGET_SSE2")])
+ (V8DF "TARGET_AVX512F") (V4DF "TARGET_AVX") (V2DF "TARGET_SSE2")
+ (V16SI "TARGET_AVX512F") (V8SI "TARGET_AVX") V4SI
+ (V32HI "TARGET_AVX512F") (V16HI "TARGET_AVX") V8HI
+ (V64QI "TARGET_AVX512F") (V32QI "TARGET_AVX") V16QI])
(define_expand "storent<mode>"
[(set (match_operand:STORENT_MODE 0 "memory_operand")
--
2.22.0