Skip to content

Commit f0ec269

Browse files
committed
Remove bit_or (bad perf on Windows)
1 parent 62e8332 commit f0ec269

File tree

5 files changed

+19
-29
lines changed

5 files changed

+19
-29
lines changed

src/arm64/simd.h

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -462,16 +462,6 @@ simdjson_really_inline int8x16_t make_int8x16_t(int8_t x1, int8_t x2, int8_t x
462462
return vgetq_lane_u64(vreinterpretq_u64_u8(sum0), 0);
463463
}
464464

465-
simdjson_really_inline simd8x64<T> bit_or(const T m) const {
466-
const simd8<T> mask = simd8<T>::splat(m);
467-
return simd8x64<T>(
468-
this->chunks[0] | mask,
469-
this->chunks[1] | mask,
470-
this->chunks[2] | mask,
471-
this->chunks[3] | mask
472-
);
473-
}
474-
475465
simdjson_really_inline uint64_t eq(const T m) const {
476466
const simd8<T> mask = simd8<T>::splat(m);
477467
return simd8x64<bool>(

src/haswell/dom_parser_implementation.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,11 @@ simdjson_really_inline json_character_block json_character_block::classify(const
7070
_mm256_shuffle_epi8(whitespace_table, in.chunks[0]),
7171
_mm256_shuffle_epi8(whitespace_table, in.chunks[1])
7272
});
73-
const simd8x64<uint8_t> curlified = in.bit_or(0x20); // Turn [ and ] into { and }
73+
// Turn [ and ] into { and }
74+
const simd8x64<uint8_t> curlified{
75+
in.chunks[0] | 0x20,
76+
in.chunks[1] | 0x20
77+
};
7478
const uint64_t op = curlified.eq({
7579
_mm256_shuffle_epi8(op_table, in.chunks[0]),
7680
_mm256_shuffle_epi8(op_table, in.chunks[1])

src/haswell/simd.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -337,7 +337,7 @@ namespace simd {
337337
).to_bitmask();
338338
}
339339

340-
simdjson_really_inline uint64_t eq(const simd8x64<uint8_t> other) const {
340+
simdjson_really_inline uint64_t eq(const simd8x64<uint8_t> &other) const {
341341
return simd8x64<bool>(
342342
this->chunks[0] == other.chunks[0],
343343
this->chunks[1] == other.chunks[1]

src/westmere/dom_parser_implementation.cpp

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,13 @@ simdjson_really_inline json_character_block json_character_block::classify(const
6565
_mm_shuffle_epi8(whitespace_table, in.chunks[2]),
6666
_mm_shuffle_epi8(whitespace_table, in.chunks[3])
6767
});
68-
const simd8x64<uint8_t> curlified = in.bit_or(0x20); // Turn [ and ] into { and }
68+
// Turn [ and ] into { and }
69+
const simd8x64<uint8_t> curlified{
70+
in.chunks[0] | 0x20,
71+
in.chunks[1] | 0x20,
72+
in.chunks[2] | 0x20,
73+
in.chunks[3] | 0x20
74+
};
6975
const uint64_t op = curlified.eq({
7076
_mm_shuffle_epi8(op_table, in.chunks[0]),
7177
_mm_shuffle_epi8(op_table, in.chunks[1]),

src/westmere/simd.h

Lines changed: 6 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -288,23 +288,13 @@ namespace simd {
288288
}
289289

290290
simdjson_really_inline uint64_t to_bitmask() const {
291-
uint64_t r0 = uint32_t(this->chunks[0].to_bitmask());
292-
uint64_t r1 = this->chunks[1].to_bitmask();
293-
uint64_t r2 = this->chunks[2].to_bitmask();
294-
uint64_t r3 = this->chunks[3].to_bitmask();
291+
uint64_t r0 = uint32_t(this->chunks[0].to_bitmask() );
292+
uint64_t r1 = this->chunks[1].to_bitmask() ;
293+
uint64_t r2 = this->chunks[2].to_bitmask() ;
294+
uint64_t r3 = this->chunks[3].to_bitmask() ;
295295
return r0 | (r1 << 16) | (r2 << 32) | (r3 << 48);
296296
}
297-
298-
simdjson_really_inline simd8x64<T> bit_or(const T m) const {
299-
const simd8<T> mask = simd8<T>::splat(m);
300-
return simd8x64<T>(
301-
this->chunks[0] | mask,
302-
this->chunks[1] | mask,
303-
this->chunks[2] | mask,
304-
this->chunks[3] | mask
305-
);
306-
}
307-
297+
308298
simdjson_really_inline uint64_t eq(const T m) const {
309299
const simd8<T> mask = simd8<T>::splat(m);
310300
return simd8x64<bool>(
@@ -315,7 +305,7 @@ namespace simd {
315305
).to_bitmask();
316306
}
317307

318-
simdjson_really_inline uint64_t eq(const simd8x64<uint8_t> other) const {
308+
simdjson_really_inline uint64_t eq(const simd8x64<uint8_t> &other) const {
319309
return simd8x64<bool>(
320310
this->chunks[0] == other.chunks[0],
321311
this->chunks[1] == other.chunks[1],

0 commit comments

Comments
 (0)