aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorliuhongt <hongtao.liu@intel.com>2021-11-10 12:53:43 +0800
committerliuhongt <hongtao.liu@intel.com>2021-11-11 09:25:53 +0800
commite166cada0813f8b382bacb7f01e1d8d235bf3b0f (patch)
tree1dc69a8a05db68a75fe207ed203ba677a3488667 /gcc
parent402d28998fa35d9ffc47aa084f66f9381491eeca (diff)
downloadgcc-e166cada0813f8b382bacb7f01e1d8d235bf3b0f.zip
gcc-e166cada0813f8b382bacb7f01e1d8d235bf3b0f.tar.gz
gcc-e166cada0813f8b382bacb7f01e1d8d235bf3b0f.tar.bz2
Extend vpcmov to handle V8HF/V16HFmode under TARGET_XOP.
gcc/ChangeLog: PR target/103151 * config/i386/sse.md (V_128_256): Extend to V8HF/V16HF. (avxsizesuffix): Ditto. gcc/testsuite/ChangeLog: * gcc.target/i386/pr103151.c: New test.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/i386/sse.md8
-rw-r--r--gcc/testsuite/gcc.target/i386/pr103151.c18
2 files changed, 22 insertions, 4 deletions
diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
index 1908412..b109c2a 100644
--- a/gcc/config/i386/sse.md
+++ b/gcc/config/i386/sse.md
@@ -304,7 +304,7 @@
;; All 128bit and 256bit vector modes
(define_mode_iterator V_128_256
- [V32QI V16QI V16HI V8HI V8SI V4SI V4DI V2DI V8SF V4SF V4DF V2DF])
+ [V32QI V16QI V16HI V8HI V8SI V4SI V4DI V2DI V16HF V8HF V8SF V4SF V4DF V2DF])
;; All 512bit vector modes
(define_mode_iterator V_512 [V64QI V32HI V16SI V8DI V16SF V8DF])
@@ -905,9 +905,9 @@
[(V64QI "512") (V32HI "512") (V16SI "512") (V8DI "512")
(V32QI "256") (V16HI "256") (V8SI "256") (V4DI "256")
(V16QI "") (V8HI "") (V4SI "") (V2DI "")
- (V16SF "512") (V8DF "512")
- (V8SF "256") (V4DF "256")
- (V4SF "") (V2DF "")])
+ (V32HF "512") (V16SF "512") (V8DF "512")
+ (V16HF "256") (V8SF "256") (V4DF "256")
+ (V8HF "") (V4SF "") (V2DF "")])
;; SSE instruction mode
(define_mode_attr sseinsnmode
diff --git a/gcc/testsuite/gcc.target/i386/pr103151.c b/gcc/testsuite/gcc.target/i386/pr103151.c
new file mode 100644
index 0000000..d7db255
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr103151.c
@@ -0,0 +1,18 @@
+/* { dg-do compile } */
+/* { dg-options "-mavx512fp16 -O1 -mxop" } */
+
+typedef _Float16 v16hf __attribute__((vector_size(32)));
+typedef _Float16 v8hf __attribute__((vector_size(16)));
+v8hf f1() {
+ int i;
+ v8hf z;
+ z[i] = i;
+ return z;
+}
+
+v16hf f2() {
+ int i;
+ v16hf z;
+ z[i] = i;
+ return z;
+}