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().