]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
vect: Add missed opcodes in vect_get_smallest_scalar_type [PR115228]
authorFeng Xue <fxue@os.amperecomputing.com>
Mon, 5 Aug 2024 07:53:19 +0000 (15:53 +0800)
committerFeng Xue <fxue@os.amperecomputing.com>
Tue, 6 Aug 2024 03:37:00 +0000 (11:37 +0800)
Some opcodes are missed when determining the smallest scalar type for a
vectorizable statement. Currently, this bug does not cause any problem,
because vect_get_smallest_scalar_type is only used to compute max nunits
vectype, and even statement with missed opcode is incorrectly bypassed,
the max nunits vectype could also be rightly deduced from def statements
for operands of the statement.

In the future, if this function will be called to do other thing, we may
get something wrong. So fix it in this patch.

2024-08-05 Feng Xue <fxue@os.amperecomputing.com>

gcc/
PR tree-optimization/115228
* tree-vect-data-refs.cc (vect_get_smallest_scalar_type): Add
missed opcodes that involve widening operation.

gcc/tree-vect-data-refs.cc

index 39fd887a96ba4f6c690e9d7e843a00892a6156fe..5b0d548f8479ddc3ff367de17df12d083e52ae90 100644 (file)
@@ -162,7 +162,10 @@ vect_get_smallest_scalar_type (stmt_vec_info stmt_info, tree scalar_type)
       if (gimple_assign_cast_p (assign)
          || gimple_assign_rhs_code (assign) == DOT_PROD_EXPR
          || gimple_assign_rhs_code (assign) == WIDEN_SUM_EXPR
+         || gimple_assign_rhs_code (assign) == SAD_EXPR
          || gimple_assign_rhs_code (assign) == WIDEN_MULT_EXPR
+         || gimple_assign_rhs_code (assign) == WIDEN_MULT_PLUS_EXPR
+         || gimple_assign_rhs_code (assign) == WIDEN_MULT_MINUS_EXPR
          || gimple_assign_rhs_code (assign) == WIDEN_LSHIFT_EXPR
          || gimple_assign_rhs_code (assign) == FLOAT_EXPR)
        {