this repo has no description
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

simd: Refactor Macros, Add More SIMD types, Add Vector Types

Thomas A 8ae49ee4 2491e717

+167 -34
+167 -34
src/simd/include/simd/vector_types.h
··· 23 23 // typedef __attribute__((ext_vector_type())) ; 24 24 #define simd_struct(NAME_TYPE, A, B) \ 25 25 typedef struct { \ 26 - simd_float##B columns[A]; \ 27 - } simd_##NAME_TYPE##A##x##B 26 + NAME_TYPE##B columns[A]; \ 27 + } NAME_TYPE##A##x##B 28 + 29 + #define simd_type(NAME_TYPE, SIZE) \ 30 + typedef NAME_TYPE##1 __attribute__((ext_vector_type(SIZE))) NAME_TYPE##SIZE 31 + 32 + typedef bool simd_bool; 33 + 34 + 35 + typedef char simd_char1; 36 + simd_type(simd_char, 2); // simd_char2 37 + simd_type(simd_char, 3); // simd_char3 38 + simd_type(simd_char, 4); // simd_char4 39 + simd_type(simd_char, 8); // simd_char8 40 + simd_type(simd_char, 16); // simd_char16 41 + simd_type(simd_char, 32); // simd_char32 42 + simd_type(simd_char, 64); // simd_char64 43 + 44 + typedef simd_char2 vector_char2; 45 + typedef simd_char3 vector_char3; 46 + typedef simd_char4 vector_char4; 47 + typedef simd_char8 vector_char8; 48 + typedef simd_char16 vector_char16; 49 + typedef simd_char32 vector_char32; 50 + 51 + 52 + typedef unsigned char simd_uchar1; 53 + simd_type(simd_uchar, 2); // simd_uchar2 54 + simd_type(simd_uchar, 3); // simd_uchar3 55 + simd_type(simd_uchar, 4); // simd_uchar4 56 + simd_type(simd_uchar, 8); // simd_uchar8 57 + simd_type(simd_uchar, 16); // simd_uchar16 58 + simd_type(simd_uchar, 32); // simd_uchar32 59 + simd_type(simd_uchar, 64); // simd_uchar64 60 + 61 + typedef simd_uchar2 vector_uchar2; 62 + typedef simd_uchar3 vector_uchar3; 63 + typedef simd_uchar4 vector_uchar4; 64 + typedef simd_uchar8 vector_uchar8; 65 + typedef simd_uchar16 vector_uchar16; 66 + typedef simd_uchar32 vector_uchar32; 67 + 68 + 69 + typedef short simd_short1; 70 + simd_type(simd_short, 2); // simd_short2 71 + simd_type(simd_short, 3); // simd_short3 72 + simd_type(simd_short, 4); // simd_short4 73 + simd_type(simd_short, 8); // simd_short8 74 + simd_type(simd_short, 16); // simd_short16 75 + simd_type(simd_short, 32); // simd_short32 76 + 77 + typedef simd_short2 vector_short2; 78 + typedef simd_short3 vector_short3; 79 + typedef simd_short4 vector_short4; 80 + typedef simd_short8 vector_short8; 81 + typedef simd_short16 vector_short16; 82 + typedef simd_short32 vector_short32; 83 + 84 + 85 + typedef unsigned short simd_ushort1; 86 + simd_type(simd_ushort, 2); // simd_ushort2 87 + simd_type(simd_ushort, 3); // simd_ushort3 88 + simd_type(simd_ushort, 4); // simd_ushort4 89 + simd_type(simd_ushort, 8); // simd_ushort8 90 + simd_type(simd_ushort, 16); // simd_ushort16 91 + simd_type(simd_ushort, 32); // simd_ushort32 92 + 93 + typedef simd_ushort2 vector_ushort2; 94 + typedef simd_ushort3 vector_ushort3; 95 + typedef simd_ushort4 vector_ushort4; 96 + typedef simd_ushort8 vector_ushort8; 97 + typedef simd_ushort16 vector_ushort16; 98 + typedef simd_ushort32 vector_ushort32; 99 + 100 + 101 + typedef int simd_int1; 102 + simd_type(simd_int, 2); // simd_int2 103 + simd_type(simd_int, 3); // simd_int3 104 + simd_type(simd_int, 4); // simd_int4 105 + simd_type(simd_int, 8); // simd_int8 106 + simd_type(simd_int, 16); // simd_int16 107 + 108 + typedef simd_int2 vector_int2; 109 + typedef simd_int3 vector_int3; 110 + typedef simd_int4 vector_int4; 111 + typedef simd_int8 vector_int8; 112 + typedef simd_int16 vector_int16; 113 + 114 + 115 + typedef unsigned int simd_uint1; 116 + simd_type(simd_uint, 2); // simd_uint2 117 + simd_type(simd_uint, 3); // simd_uint3 118 + simd_type(simd_uint, 4); // simd_uint4 119 + simd_type(simd_uint, 8); // simd_uint8 120 + simd_type(simd_uint, 16); // simd_uint16 121 + 122 + typedef simd_uint2 vector_uint2; 123 + typedef simd_uint3 vector_uint3; 124 + typedef simd_uint4 vector_uint4; 125 + typedef simd_uint8 vector_uint8; 126 + typedef simd_uint16 vector_uint16; 28 127 29 - #define simd_type(TYPE, NAME_TYPE, SIZE) \ 30 - typedef TYPE __attribute__((ext_vector_type(SIZE))) simd_##NAME_TYPE##SIZE 31 128 32 - simd_type(int, int, 2); // simd_int2 33 - simd_type(int, int, 3); // simd_int3 34 - simd_type(int, int, 4); // simd_int4 129 + typedef long simd_long1; 130 + simd_type(simd_long, 2); // simd_long2 131 + simd_type(simd_long, 3); // simd_long3 132 + simd_type(simd_long, 4); // simd_long4 133 + simd_type(simd_long, 8); // simd_long8 35 134 36 - simd_type(unsigned int, uint, 2); // simd_uint2 37 - simd_type(unsigned int, uint, 3); // simd_uint3 38 - simd_type(unsigned int, uint, 4); // simd_uint4 135 + typedef simd_long1 vector_long1; 136 + typedef simd_long2 vector_long2; 137 + typedef simd_long3 vector_long3; 138 + typedef simd_long4 vector_long4; 139 + typedef simd_long8 vector_long8; 39 140 40 - simd_type(float, float, 2); // simd_float2 41 - simd_type(float, float, 3); // simd_float3 42 - simd_type(float, float, 4); // simd_float4 43 141 44 - simd_type(double, double, 2); // simd_double2 45 - simd_type(double, double, 3); // simd_double3 46 - simd_type(double, double, 4); // simd_double4 142 + typedef unsigned long simd_ulong1; 143 + simd_type(simd_ulong, 2); // simd_ulong2 144 + simd_type(simd_ulong, 3); // simd_ulong3 145 + simd_type(simd_ulong, 4); // simd_ulong4 146 + simd_type(simd_ulong, 8); // simd_ulong8 47 147 48 - simd_struct(float, 2, 2); // simd_float2x2 49 - simd_struct(float, 3, 2); // simd_float3x2 50 - simd_struct(float, 4, 2); // simd_float4x2 51 - simd_struct(float, 2, 3); // simd_float2x3 52 - simd_struct(float, 3, 3); // simd_float3x3 53 - simd_struct(float, 4, 3); // simd_float4x3 54 - simd_struct(float, 2, 4); // simd_float2x4 55 - simd_struct(float, 3, 4); // simd_float3x4 56 - simd_struct(float, 4, 4); // simd_float4x4 148 + typedef simd_ulong1 vector_ulong1; 149 + typedef simd_ulong2 vector_ulong2; 150 + typedef simd_ulong3 vector_ulong3; 151 + typedef simd_ulong4 vector_ulong4; 152 + typedef simd_ulong8 vector_ulong8; 57 153 58 - simd_struct(double, 2, 2); // simd_double2x2 59 - simd_struct(double, 3, 2); // simd_double3x2 60 - simd_struct(double, 4, 2); // simd_double4x2 61 - simd_struct(double, 2, 3); // simd_double2x3 62 - simd_struct(double, 3, 3); // simd_double3x3 63 - simd_struct(double, 4, 3); // simd_double4x3 64 - simd_struct(double, 2, 4); // simd_double2x4 65 - simd_struct(double, 3, 4); // simd_double3x4 66 - simd_struct(double, 4, 4); // simd_double4x4 154 + 155 + typedef float simd_float1; 156 + simd_type(simd_float, 2); // simd_float2 157 + simd_type(simd_float, 3); // simd_float3 158 + simd_type(simd_float, 4); // simd_float4 159 + simd_type(simd_float, 8); // simd_float8 160 + simd_type(simd_float, 16); // simd_float16 161 + 162 + typedef simd_float2 vector_float2; 163 + typedef simd_float4 vector_float4; 164 + typedef simd_float8 vector_float8; 165 + typedef simd_float16 vector_float16; 166 + 167 + 168 + typedef double simd_double1; 169 + simd_type(simd_double, 2); // simd_double2 170 + simd_type(simd_double, 3); // simd_double3 171 + simd_type(simd_double, 4); // simd_double4 172 + simd_type(simd_double, 8); // simd_double8 173 + 174 + typedef simd_double2 vector_double2; 175 + typedef simd_double3 vector_double3; 176 + typedef simd_double4 vector_double4; 177 + typedef simd_double8 vector_double8; 178 + 179 + 180 + simd_struct(simd_float, 2, 2); // simd_float2x2 181 + simd_struct(simd_float, 3, 2); // simd_float3x2 182 + simd_struct(simd_float, 4, 2); // simd_float4x2 183 + simd_struct(simd_float, 2, 3); // simd_float2x3 184 + simd_struct(simd_float, 3, 3); // simd_float3x3 185 + simd_struct(simd_float, 4, 3); // simd_float4x3 186 + simd_struct(simd_float, 2, 4); // simd_float2x4 187 + simd_struct(simd_float, 3, 4); // simd_float3x4 188 + simd_struct(simd_float, 4, 4); // simd_float4x4 189 + 190 + simd_struct(simd_double, 2, 2); // simd_double2x2 191 + simd_struct(simd_double, 3, 2); // simd_double3x2 192 + simd_struct(simd_double, 4, 2); // simd_double4x2 193 + simd_struct(simd_double, 2, 3); // simd_double2x3 194 + simd_struct(simd_double, 3, 3); // simd_double3x3 195 + simd_struct(simd_double, 4, 3); // simd_double4x3 196 + simd_struct(simd_double, 2, 4); // simd_double2x4 197 + simd_struct(simd_double, 3, 4); // simd_double3x4 198 + simd_struct(simd_double, 4, 4); // simd_double4x4 199 + 67 200 68 201 typedef struct { 69 202 simd_double4 vector;