PostgreSQL Source Code: src/include/port/simd.h File Reference (original) (raw)
Go to the source code of this file.
Functions | |
---|---|
static void | vector8_load (Vector8 *v, const uint8 *s) |
static Vector8 | vector8_broadcast (const uint8 c) |
static bool | vector8_has (const Vector8 v, const uint8 c) |
static bool | vector8_has_zero (const Vector8 v) |
static bool | vector8_has_le (const Vector8 v, const uint8 c) |
static bool | vector8_is_highbit_set (const Vector8 v) |
static Vector8 | vector8_or (const Vector8 v1, const Vector8 v2) |
◆ USE_NO_SIMD
◆ Vector8
◆ vector8_broadcast()
static Vector8 vector8_broadcast ( const uint8 c) | inlinestatic |
---|
◆ vector8_has()
static bool vector8_has ( const Vector8 v, const uint8 c ) | inlinestatic |
---|
Definition at line 162 of file simd.h.
163{
164 bool result;
165
166
167#ifdef USE_ASSERT_CHECKING
168 bool assert_result = false;
169
171 {
172 if (((const uint8 *) &v)[i] == c)
173 {
174 assert_result = true;
175 break;
176 }
177 }
178#endif
179
180#if defined(USE_NO_SIMD)
181
183#else
185#endif
186
187 Assert(assert_result == result);
188 return result;
189}
Assert(PointerIsAligned(start, uint64))
static Vector8 vector8_broadcast(const uint8 c)
static bool vector8_has_zero(const Vector8 v)
static bool vector8_is_highbit_set(const Vector8 v)
References Assert(), i, vector8_broadcast(), vector8_has_zero(), and vector8_is_highbit_set().
Referenced by escape_json_with_len(), pg_lfind8(), and vector8_has_zero().
◆ vector8_has_le()
static bool vector8_has_le ( const Vector8 v, const uint8 c ) | inlinestatic |
---|
Definition at line 213 of file simd.h.
214{
215 bool result = false;
216
217
218#ifdef USE_ASSERT_CHECKING
219 bool assert_result = false;
220
222 {
223 if (((const uint8 *) &v)[i] <= c)
224 {
225 assert_result = true;
226 break;
227 }
228 }
229#endif
230
231#if defined(USE_NO_SIMD)
232
233
234
235
236
237
238
239 if ((int64) v >= 0 && c < 0x80)
241 else
242 {
243
245 {
246 if (((const uint8 *) &v)[i] <= c)
247 {
248 result = true;
249 break;
250 }
251 }
252 }
253#else
254
255
256
257
258
259
261#endif
262
263 Assert(assert_result == result);
264 return result;
265}
References Assert(), i, vector8_broadcast(), and vector8_has_zero().
Referenced by escape_json_with_len(), pg_lfind8_le(), and vector8_has_zero().
◆ vector8_has_zero()
static bool vector8_has_zero ( const Vector8 v) | inlinestatic |
---|
◆ vector8_is_highbit_set()
static bool vector8_is_highbit_set ( const Vector8 v) | inlinestatic |
---|
◆ vector8_load()
static void vector8_load ( Vector8 * v, const uint8 * s ) | inlinestatic |
---|
◆ vector8_or()
Definition at line 338 of file simd.h.
339{
340#ifdef USE_SSE2
341 return _mm_or_si128(v1, v2);
342#elif defined(USE_NEON)
343 return vorrq_u8(v1, v2);
344#else
345 return v1 | v2;
346#endif
347}
Referenced by is_valid_ascii().