20#ifndef GCC_VECTOR_BUILDER_H
21#define GCC_VECTOR_BUILDER_H
111template<
typename T,
typename Shape,
typename Derived>
145 Derived *
derived () {
return static_cast<Derived *
> (
this); }
153template<
typename T,
typename Shape,
typename Derived>
154inline const Derived *
157 return static_cast<const Derived *
> (
this);
160template<
typename T,
typename Shape,
typename Derived>
172template<
typename T,
typename Shape,
typename Derived>
181template<
typename T,
typename Shape,
typename Derived>
191template<
typename T,
typename Shape,
typename Derived>
207template<
typename T,
typename Shape,
typename Derived>
217 for (
unsigned int i = 0;
i < nelts; ++
i)
218 if (!
derived ()->equal_p ((*
this)[
i], other[
i]))
227template<
typename T,
typename Shape,
typename Derived>
245 T final = (*this)[final_i];
254 derived ()->step (prev,
final));
265template<
typename T,
typename Shape,
typename Derived>
268 bool allow_stepped_p)
293template<
typename T,
typename Shape,
typename Derived>
297 bool allow_stepped_p)
323 Derived::npatterns_of (vec2));
325 =
MAX (Derived::nelts_per_pattern_of (vec1),
326 Derived::nelts_per_pattern_of (vec2));
343template<
typename T,
typename Shape,
typename Derived>
352 Derived::npatterns_of (vec2));
354 =
MAX (Derived::nelts_per_pattern_of (vec1),
355 Derived::nelts_per_pattern_of (vec2));
356 unsigned HOST_WIDE_INT const_nelts;
365template<
typename T,
typename Shape,
typename Derived>
372 unsigned int ndups = 1;
373 for (
int i = start + step;
383template<
typename T,
typename Shape,
typename Derived>
391 unsigned int next = new_encoded_nelts -
npatterns;
392 for (
unsigned int i = new_encoded_nelts;
i < old_encoded_nelts; ++
i)
394 derived ()->note_representative (&(*
this)[next], (*
this)[
i]);
396 if (next == new_encoded_nelts)
406template<
typename T,
typename Shape,
typename Derived>
412 for (
unsigned int i = start;
i <
end - step; ++
i)
413 if (!
derived ()->equal_p ((*
this)[
i], (*
this)[
i + step]))
421template<
typename T,
typename Shape,
typename Derived>
427 if (!
derived ()->allow_steps_p ())
430 for (
unsigned int i = start + step * 2;
i <
end; ++
i)
432 T elt1 = (*this)[
i - step * 2];
433 T elt2 = (*this)[
i - step];
436 if (!
derived ()->integral_p (elt1)
437 || !
derived ()->integral_p (elt2)
438 || !
derived ()->integral_p (elt3))
441 if (maybe_ne (
derived ()->step (elt1, elt2),
442 derived ()->step (elt2, elt3)))
445 if (!
derived ()->can_elide_p (elt3))
454template<
typename T,
typename Shape,
typename Derived>
507template<
typename T,
typename Shape,
typename Derived>
518 unsigned HOST_WIDE_INT const_full_nelts;
595 && this->length () >= const_full_nelts
auto_vec()
Definition vec.h:1669
bool is_constant() const
Definition poly-int.h:557
bool encoded_full_vector_p() const
Definition vector-builder.h:183
void new_vector(poly_uint64, unsigned int, unsigned int)
Definition vector-builder.h:193
vector_builder()
Definition vector-builder.h:162
bool operator!=(const Derived &x) const
Definition vector-builder.h:126
void reshape(unsigned int, unsigned int)
Definition vector-builder.h:385
Derived * derived()
Definition vector-builder.h:145
bool operator==(const Derived &) const
Definition vector-builder.h:209
const Derived * derived() const
Definition vector-builder.h:155
bool new_binary_operation(Shape, T, T, bool)
Definition vector-builder.h:295
vector_builder & operator=(const vector_builder &)
static unsigned int binary_encoded_nelts(T, T)
Definition vector-builder.h:345
bool new_unary_operation(Shape, T, bool)
Definition vector-builder.h:267
bool stepped_sequence_p(unsigned int, unsigned int, unsigned int)
Definition vector-builder.h:423
poly_uint64 full_nelts() const
Definition vector-builder.h:117
void finalize()
Definition vector-builder.h:509
unsigned int nelts_per_pattern() const
Definition vector-builder.h:119
bool try_npatterns(unsigned int)
Definition vector-builder.h:456
vector_builder(const vector_builder &)
unsigned int encoded_nelts() const
Definition vector-builder.h:174
unsigned int m_nelts_per_pattern
Definition vector-builder.h:150
poly_uint64 m_full_nelts
Definition vector-builder.h:148
bool repeating_sequence_p(unsigned int, unsigned int, unsigned int)
Definition vector-builder.h:408
unsigned int count_dups(int, int, int) const
Definition vector-builder.h:367
unsigned int m_npatterns
Definition vector-builder.h:149
unsigned int npatterns() const
Definition vector-builder.h:118
T elt(unsigned int) const
Definition vector-builder.h:229
static unsigned int count[debug_counter_number_of_counters]
Definition dbgcnt.cc:50
static struct token T
Definition gengtype-parse.cc:45
HOST_WIDE_INT least_common_multiple(HOST_WIDE_INT a, HOST_WIDE_INT b)
Definition hwint.cc:187
bool pow2p_hwi(unsigned HOST_WIDE_INT x)
Definition hwint.h:179
poly_int< NUM_POLY_INT_COEFFS, unsigned HOST_WIDE_INT > poly_uint64
Definition poly-int-types.h:25
i
Definition poly-int.h:776
#define gcc_assert(EXPR)
Definition system.h:814
#define gcc_unreachable()
Definition system.h:841
#define MIN(X, Y)
Definition system.h:396
#define gcc_checking_assert(EXPR)
Definition system.h:821
#define MAX(X, Y)
Definition system.h:397
T * end(vec< T, A, L > *v)
Definition vec.h:457