vectorizable_live_operation needs to use BIT_FIELD_REF to extract one
element of a vector. For a packed vector boolean type, the number of
bits to extract should be taken from TYPE_PRECISION rather than TYPE_SIZE.
This is shown by existing tests once SVE is added.
2017-09-18 Richard Sandiford <richard.sandiford@linaro.org>
Alan Hayward <alan.hayward@arm.com>
David Sherwood <david.sherwood@arm.com>
gcc/
* tree-vect-loop.c (vectorizable_live_operation): Fix element size
calculation for vector booleans.
Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
Co-Authored-By: David Sherwood <david.sherwood@arm.com>
From-SVN: r252930
+2017-09-18 Richard Sandiford <richard.sandiford@linaro.org>
+ Alan Hayward <alan.hayward@arm.com>
+ David Sherwood <david.sherwood@arm.com>
+
+ * tree-vect-loop.c (vectorizable_live_operation): Fix element size
+ calculation for vector booleans.
+
2017-09-18 Richard Sandiford <richard.sandiford@linaro.org>
Alan Hayward <alan.hayward@arm.com>
David Sherwood <david.sherwood@arm.com>
: gimple_get_lhs (stmt);
lhs_type = TREE_TYPE (lhs);
- bitsize = TYPE_SIZE (TREE_TYPE (vectype));
+ bitsize = (VECTOR_BOOLEAN_TYPE_P (vectype)
+ ? bitsize_int (TYPE_PRECISION (TREE_TYPE (vectype)))
+ : TYPE_SIZE (TREE_TYPE (vectype)));
vec_bitsize = TYPE_SIZE (vectype);
/* Get the vectorized lhs of STMT and the lane to use (counted in bits). */