7#include <batchlas/backend_config.h>
11#if BATCHLAS_DEVICE_NO_VECTOR_TYPES
16struct alignas(4 * sizeof(T))
Vec4 {
19 Vec4(T a, T b, T c, T d) : x(a), y(b), z(c), w(d) {}
20 Vec4(
const Vec4& o) : x(o.x), y(o.y), z(o.z), w(o.w) {}
22 x = o.x, y = o.y, z = o.z, w = o.w;
25 T& operator[](
int i) {
return i == 0 ? x : i == 1 ? y : i == 2 ? z : w; }
26 T operator[](
int i)
const {
return i == 0 ? x : i == 1 ? y : i == 2 ? z : w; }
27 friend Vec4 operator*(T a,
const Vec4& v) {
return {a * v.x, a * v.y, a * v.z, a * v.w}; }
33using Vec4 = T __attribute__((ext_vector_type(4)));
T __attribute__((ext_vector_type(4))) Vec4