diff options
| -rw-r--r-- | gcc/config/i386/predicates.md | 3 | ||||
| -rw-r--r-- | gcc/config/i386/sse.md | 18 | ||||
| -rw-r--r-- | gcc/testsuite/gcc.target/i386/pr122598.c | 14 |
3 files changed, 14 insertions, 21 deletions
diff --git a/gcc/config/i386/predicates.md b/gcc/config/i386/predicates.md index 57950d31878..c468f5ad26e 100644 --- a/gcc/config/i386/predicates.md +++ b/gcc/config/i386/predicates.md @@ -1319,9 +1319,6 @@ (ior (match_operand 0 "nonimmediate_operand") (match_test "const_vec_duplicate_p (op)"))) -(define_predicate "const_vec_dup_operand" - (match_test "const_vec_duplicate_p (op)")) - ;; Return true when OP is either register operand, or any ;; CONST_VECTOR. (define_predicate "reg_or_const_vector_operand" diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md index 8b90845260a..9a8d1767ec9 100644 --- a/gcc/config/i386/sse.md +++ b/gcc/config/i386/sse.md @@ -27293,24 +27293,6 @@ DONE; }) -(define_expand "cond_<insn><mode>" - [(set (match_operand:VI1_AVX512VL 0 "register_operand") - (vec_merge:VI1_AVX512VL - (any_shift:VI1_AVX512VL - (match_operand:VI1_AVX512VL 2 "register_operand") - (match_operand:VI1_AVX512VL 3 "const_vec_dup_operand")) - (match_operand:VI1_AVX512VL 4 "nonimm_or_0_operand") - (match_operand:<avx512fmaskmode> 1 "register_operand")))] - "TARGET_GFNI && TARGET_AVX512F" -{ - rtx count = XVECEXP (operands[3], 0, 0); - rtx matrix = ix86_vgf2p8affine_shift_matrix (operands[0], count, <CODE>); - emit_insn (gen_vgf2p8affineqb_<mode>_mask (operands[0], operands[2], matrix, - const0_rtx, operands[4], - operands[1])); - DONE; -}) - (define_expand "<insn><mode>3" [(set (match_operand:VI1_AVX512_3264 0 "register_operand") (any_rotate:VI1_AVX512_3264 diff --git a/gcc/testsuite/gcc.target/i386/pr122598.c b/gcc/testsuite/gcc.target/i386/pr122598.c new file mode 100644 index 00000000000..0b943b12a58 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr122598.c @@ -0,0 +1,14 @@ +/* PR target/122598 */ +/* { dg-do compile } */ +/* { dg-options "-O2 -mavx512f -mgfni" } */ + +typedef char V __attribute__ ((vector_size (64))); + +V +foo (V v) +{ + v >>= (V) {5}; + v -= ~0; + v += (V) {} < v; + return v; +} |
