]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Extend vpcmov to handle V8HF/V16HFmode under TARGET_XOP.
authorliuhongt <hongtao.liu@intel.com>
Wed, 10 Nov 2021 04:53:43 +0000 (12:53 +0800)
committerliuhongt <hongtao.liu@intel.com>
Thu, 11 Nov 2021 01:25:53 +0000 (09:25 +0800)
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.

gcc/config/i386/sse.md
gcc/testsuite/gcc.target/i386/pr103151.c [new file with mode: 0644]

index 190841211a56cd775595ffbebd4abceec2e86f34..b109c2aa8fad073189882559a4083ae6a9e22863 100644 (file)
 
 ;; 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])
   [(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 (file)
index 0000000..d7db255
--- /dev/null
@@ -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;
+}