This patch fixes ICE in pr103151. Bootstrap and regtest on x86_64-linux-gnu{-m32,}. Ready to push to trunk.
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 | 8 ++++---- gcc/testsuite/gcc.target/i386/pr103151.c | 18 ++++++++++++++++++ 2 files changed, 22 insertions(+), 4 deletions(-) create mode 100644 gcc/testsuite/gcc.target/i386/pr103151.c diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md index 09f00dc7ae9..d0e46a60848 100644 --- a/gcc/config/i386/sse.md +++ b/gcc/config/i386/sse.md @@ -302,7 +302,7 @@ (define_mode_iterator V_256H ;; 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]) @@ -903,9 +903,9 @@ (define_mode_attr avxsizesuffix [(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 00000000000..d7db255ddcd --- /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; +} -- 2.18.1