--- /dev/null
+/* { dg-options "-O2 -ftree-vectorize" } */
+/* { dg-additional-options "-msve-vector-bits=256" { target aarch64_sve } } */
+long a[44];
+short d, e = -7;
+__attribute__((noipa)) void b(char f, short j, short k, unsigned l) {
+ for (int g = 0; g < 9; g += f)
+ for (int b = 0; b < 90; b -= k)
+ for (int h = 0; h < f; h++)
+ for (short i = 0; i < 15; i += 4)
+ if (!l)
+ a[i] = j;
+}
+int main() {
+ for (long c = 0; c < 2; ++c)
+ a[c] = 7;
+ b(9, d, e, 5);
+ if (!a[0])
+ __builtin_abort();
+}
+/* { dg-final { scan-tree-dump "MASK_SCATTER_STORE" "vect" { target aarch64_sve } } } */
{
tree scale = size_int (gs_info.scale);
gcall *call;
- if (loop_masks)
+ if (final_mask)
call = gimple_build_call_internal
(IFN_MASK_SCATTER_STORE, 5, dataref_ptr, vec_offset,
scale, vec_oprnd, final_mask);
tree zero = build_zero_cst (vectype);
tree scale = size_int (gs_info.scale);
gcall *call;
- if (loop_masks)
+ if (final_mask)
call = gimple_build_call_internal
(IFN_MASK_GATHER_LOAD, 5, dataref_ptr,
vec_offset, scale, zero, final_mask);