Lines Matching refs:latin1_output
83 simdutf_warn_unused size_t convert_utf8_to_latin1(const char * buf, size_t len, char* latin1_output) const noexcept final;
85 simdutf_warn_unused size_t convert_valid_utf8_to_latin1(const char * buf, size_t len, char* latin1_output) const noexcept final;
107 simdutf_warn_unused size_t convert_utf32_to_latin1(const char32_t * buf, size_t len, char* latin1_output) const noexcept final;
108 simdutf_warn_unused result convert_utf32_to_latin1_with_errors(const char32_t * buf, size_t len, char* latin1_output) const noexcept final;
109 simdutf_warn_unused size_t convert_valid_utf32_to_latin1(const char32_t * buf, size_t len, char* latin1_output) const noexcept final;
1283 simdutf_warn_unused size_t convert_utf8_to_latin1(const char * buf, size_t len, char* latin1_output) const noexcept final;
1285 simdutf_warn_unused size_t convert_valid_utf8_to_latin1(const char * buf, size_t len, char* latin1_output) const noexcept final;
1310 simdutf_warn_unused size_t convert_utf32_to_latin1(const char32_t * buf, size_t len, char* latin1_output) const noexcept final;
1311 simdutf_warn_unused result convert_utf32_to_latin1_with_errors(const char32_t * buf, size_t len, char* latin1_output) const noexcept final;
1312 simdutf_warn_unused size_t convert_valid_utf32_to_latin1(const char32_t * buf, size_t len, char* latin1_output) const noexcept final;
1490 simdutf_warn_unused size_t convert_utf8_to_latin1(const char * buf, size_t len, char* latin1_output) const noexcept final;
1492 simdutf_warn_unused size_t convert_valid_utf8_to_latin1(const char * buf, size_t len, char* latin1_output) const noexcept final;
1517 simdutf_warn_unused size_t convert_utf32_to_latin1(const char32_t * buf, size_t len, char* latin1_output) const noexcept final;
1518 simdutf_warn_unused result convert_utf32_to_latin1_with_errors(const char32_t * buf, size_t len, char* latin1_output) const noexcept final;
1519 simdutf_warn_unused size_t convert_valid_utf32_to_latin1(const char32_t * buf, size_t len, char* latin1_output) const noexcept final;
2421 simdutf_warn_unused size_t convert_utf8_to_latin1(const char * buf, size_t len, char* latin1_output) const noexcept final;
2423 simdutf_warn_unused size_t convert_valid_utf8_to_latin1(const char * buf, size_t len, char* latin1_output) const noexcept final;
2448 simdutf_warn_unused size_t convert_utf32_to_latin1(const char32_t * buf, size_t len, char* latin1_output) const noexcept final;
2449 simdutf_warn_unused result convert_utf32_to_latin1_with_errors(const char32_t * buf, size_t len, char* latin1_output) const noexcept final;
2450 simdutf_warn_unused size_t convert_valid_utf32_to_latin1(const char32_t * buf, size_t len, char* latin1_output) const noexcept final;
4019 simdutf_warn_unused size_t convert_utf8_to_latin1(const char * buf, size_t len, char* latin1_output) const noexcept final;
4021 simdutf_warn_unused size_t convert_valid_utf8_to_latin1(const char * buf, size_t len, char* latin1_output) const noexcept final;
4046 simdutf_warn_unused size_t convert_utf32_to_latin1(const char32_t * buf, size_t len, char* latin1_output) const noexcept final;
4047 simdutf_warn_unused result convert_utf32_to_latin1_with_errors(const char32_t * buf, size_t len, char* latin1_output) const noexcept final;
4048 simdutf_warn_unused size_t convert_valid_utf32_to_latin1(const char32_t * buf, size_t len, char* latin1_output) const noexcept final;
4596 simdutf_warn_unused size_t convert_latin1_to_utf32(const char * buf, size_t len, char32_t * latin1_output) const noexcept final override {
4597 return set_best()->convert_latin1_to_utf32(buf, len,latin1_output);
4600 simdutf_warn_unused size_t convert_utf8_to_latin1(const char * buf, size_t len, char* latin1_output) const noexcept final override {
4601 return set_best()->convert_utf8_to_latin1(buf, len,latin1_output);
4604 simdutf_warn_unused result convert_utf8_to_latin1_with_errors(const char* buf, size_t len, char* latin1_output) const noexcept final override {
4605 return set_best()->convert_utf8_to_latin1_with_errors(buf, len, latin1_output);
4608 simdutf_warn_unused size_t convert_valid_utf8_to_latin1(const char * buf, size_t len, char* latin1_output) const noexcept final override {
4609 return set_best()->convert_valid_utf8_to_latin1(buf, len,latin1_output);
4648 simdutf_warn_unused size_t convert_utf16le_to_latin1(const char16_t * buf, size_t len, char* latin1_output) const noexcept final override {
4649 return set_best()->convert_utf16le_to_latin1(buf, len, latin1_output);
4652 simdutf_warn_unused size_t convert_utf16be_to_latin1(const char16_t * buf, size_t len, char* latin1_output) const noexcept final override {
4653 return set_best()->convert_utf16be_to_latin1(buf, len, latin1_output);
4656 simdutf_warn_unused result convert_utf16le_to_latin1_with_errors(const char16_t * buf, size_t len, char* latin1_output) const noexcept final override {
4657 return set_best()->convert_utf16le_to_latin1_with_errors(buf, len, latin1_output);
4660 simdutf_warn_unused result convert_utf16be_to_latin1_with_errors(const char16_t * buf, size_t len, char* latin1_output) const noexcept final override {
4661 return set_best()->convert_utf16be_to_latin1_with_errors(buf, len, latin1_output);
4664 simdutf_warn_unused size_t convert_valid_utf16le_to_latin1(const char16_t * buf, size_t len, char* latin1_output) const noexcept final override {
4665 return set_best()->convert_valid_utf16le_to_latin1(buf, len, latin1_output);
4668 simdutf_warn_unused size_t convert_valid_utf16be_to_latin1(const char16_t * buf, size_t len, char* latin1_output) const noexcept final override {
4669 return set_best()->convert_valid_utf16be_to_latin1(buf, len, latin1_output);
4696 simdutf_warn_unused size_t convert_utf32_to_latin1(const char32_t * buf, size_t len, char* latin1_output) const noexcept final override {
4697 return set_best()->convert_utf32_to_latin1(buf, len,latin1_output);
4700 simdutf_warn_unused result convert_utf32_to_latin1_with_errors(const char32_t * buf, size_t len, char* latin1_output) const noexcept final override {
4701 return set_best()->convert_utf32_to_latin1_with_errors(buf, len,latin1_output);
4704 simdutf_warn_unused size_t convert_valid_utf32_to_latin1(const char32_t * buf, size_t len, char* latin1_output) const noexcept final override {
4705 return set_best()->convert_utf32_to_latin1(buf, len,latin1_output);
5268 simdutf_warn_unused size_t convert_latin1_to_utf32(const char * buf, size_t len, char32_t * latin1_output) noexcept {
5269 return get_active_implementation()->convert_latin1_to_utf32(buf, len,latin1_output);
5271 simdutf_warn_unused size_t convert_utf8_to_latin1(const char * buf, size_t len, char* latin1_output) noexcept {
5272 return get_active_implementation()->convert_utf8_to_latin1(buf, len,latin1_output);
5274 simdutf_warn_unused result convert_utf8_to_latin1_with_errors(const char* buf, size_t len, char* latin1_output) noexcept {
5275 return get_active_implementation()->convert_utf8_to_latin1_with_errors(buf, len, latin1_output);
5277 simdutf_warn_unused size_t convert_valid_utf8_to_latin1(const char * buf, size_t len, char* latin1_output) noexcept {
5278 return get_active_implementation()->convert_valid_utf8_to_latin1(buf, len,latin1_output);
5454 simdutf_warn_unused size_t convert_utf32_to_latin1(const char32_t * input, size_t length, char* latin1_output) noexcept {
5455 return get_active_implementation()->convert_utf32_to_latin1(input, length, latin1_output);
12234 inline result rewind_and_convert_with_errors(size_t prior_bytes, const char* buf, size_t len, char* latin1_output) {
12265 result res = convert_with_errors(buf, len + extra_len, latin1_output);
12369 inline size_t convert(const char32_t *buf, size_t len, char *latin1_output) {
12371 char* start = latin1_output;
12379 *latin1_output++ = (char)(utf32_char & 0xFF);
12383 return latin1_output - start;
12386 inline result convert_with_errors(const char32_t *buf, size_t len, char *latin1_output) {
12388 char* start{latin1_output};
12395 *latin1_output++ = char(buf[pos]);
12396 *latin1_output++ = char(buf[pos+1]);
12403 *latin1_output++ = (char)(utf32_char & 0xFF);
12407 return result(error_code::SUCCESS, latin1_output - start);
12521 inline size_t convert_valid(const char32_t *buf, size_t len, char *latin1_output) {
12523 char* start = latin1_output;
12534 *latin1_output++ = char(buf[pos]);
12535 *latin1_output++ = char(buf[pos+1]);
12540 *latin1_output++ = (char)(utf32_char & 0xFF);
12544 return latin1_output - start;
13643 char *&latin1_output) {
13660 vst1q_u8(reinterpret_cast<uint8_t*>(latin1_output), in);
13661 latin1_output += 16; // We wrote 16 18-bit characters.
13699 vst1_u8(reinterpret_cast<uint8_t*>(latin1_output), latin1_packed);
13700 latin1_output += 6; // We wrote 6 bytes.
13709 std::pair<const char16_t*, char*> arm_convert_utf16_to_latin1(const char16_t* buf, size_t len, char* latin1_output) {
13718 vst1_u8(reinterpret_cast<uint8_t*>(latin1_output), latin1_packed);
13721 latin1_output += 8;
13723 return std::make_pair(nullptr, reinterpret_cast<char*>(latin1_output));
13726 return std::make_pair(buf, latin1_output);
13730 std::pair<result, char*> arm_convert_utf16_to_latin1_with_errors(const char16_t* buf, size_t len, char* latin1_output) {
13740 vst1_u8(reinterpret_cast<uint8_t*>(latin1_output), latin1_packed);
13743 latin1_output += 8;
13749 *latin1_output++ = char(word);
13751 return std::make_pair(result(error_code::TOO_LARGE, buf - start + k), latin1_output);
13756 return std::make_pair(result(error_code::SUCCESS, buf - start), latin1_output);
14474 std::pair<const char32_t*, char*> arm_convert_utf32_to_latin1(const char32_t* buf, size_t len, char* latin1_output) {
14485 vst1_u8(reinterpret_cast<uint8_t*>(latin1_output), latin1_packed);
14488 latin1_output += 8;
14490 return std::make_pair(nullptr, reinterpret_cast<char*>(latin1_output));
14493 return std::make_pair(buf, latin1_output);
14497 std::pair<result, char*> arm_convert_utf32_to_latin1_with_errors(const char32_t* buf, size_t len, char* latin1_output) {
14511 vst1_u8(reinterpret_cast<uint8_t*>(latin1_output), latin1_packed);
14514 latin1_output += 8;
14520 *latin1_output++ = char(word);
14522 return std::make_pair(result(error_code::TOO_LARGE, buf - start + k), latin1_output);
14527 return std::make_pair(result(error_code::SUCCESS, buf - start), latin1_output);
16478 simdutf_really_inline size_t convert(const char* in, size_t size, char* latin1_output) {
16480 char* start{latin1_output};
16497 input.store((int8_t*)latin1_output);
16498 latin1_output += 64;
16533 utf8_end_of_code_point_mask, latin1_output);
16545 size_t howmany = scalar::utf8_to_latin1::convert(in + pos, size - pos, latin1_output);
16547 latin1_output += howmany;
16549 return latin1_output - start;
16552 simdutf_really_inline result convert_with_errors(const char* in, size_t size, char* latin1_output) {
16554 char* start{latin1_output};
16571 input.store((int8_t*)latin1_output);
16572 latin1_output += 64;
16591 result res = scalar::utf8_to_latin1::rewind_and_convert_with_errors(pos, in + pos, size - pos, latin1_output);
16614 utf8_end_of_code_point_mask, latin1_output);
16627 result res = scalar::utf8_to_latin1::rewind_and_convert_with_errors(pos, in + pos, size - pos, latin1_output);
16634 result res = scalar::utf8_to_latin1::rewind_and_convert_with_errors(pos, in + pos, size - pos, latin1_output);
16639 latin1_output += res.count;
16642 return result(error_code::SUCCESS, latin1_output - start);
16665 simdutf_really_inline size_t convert_valid(const char* in, size_t size, char* latin1_output) {
16667 char* start{latin1_output};
16684 input.store((int8_t*)latin1_output);
16685 latin1_output += 64;
16708 utf8_end_of_code_point_mask, latin1_output);
16719 size_t howmany = scalar::utf8_to_latin1::convert_valid(in + pos, size - pos, latin1_output);
16720 latin1_output += howmany;
16722 return latin1_output - start;
16873 simdutf_warn_unused size_t implementation::convert_utf8_to_latin1(const char* buf, size_t len, char* latin1_output) const noexcept {
16875 return converter.convert(buf, len, latin1_output);
16878 simdutf_warn_unused result implementation::convert_utf8_to_latin1_with_errors(const char* buf, size_t len, char* latin1_output) const noexcept {
16880 return converter.convert_with_errors(buf, len, latin1_output);
16883 simdutf_warn_unused size_t implementation::convert_valid_utf8_to_latin1(const char* buf, size_t len, char* latin1_output) const noexcept {
16884 return arm64::utf8_to_latin1::convert_valid(buf,len,latin1_output);
16932 simdutf_warn_unused size_t implementation::convert_utf16le_to_latin1(const char16_t* buf, size_t len, char* latin1_output) const noexcept {
16933 std::pair<const char16_t*, char*> ret = arm_convert_utf16_to_latin1<endianness::LITTLE>(buf, len, latin1_output);
16935 size_t saved_bytes = ret.second - latin1_output;
16946 simdutf_warn_unused size_t implementation::convert_utf16be_to_latin1(const char16_t* buf, size_t len, char* latin1_output) const noexcept {
16947 std::pair<const char16_t*, char*> ret = arm_convert_utf16_to_latin1<endianness::BIG>(buf, len, latin1_output);
16949 size_t saved_bytes = ret.second - latin1_output;
16960 simdutf_warn_unused result implementation::convert_utf16le_to_latin1_with_errors(const char16_t* buf, size_t len, char* latin1_output) const noexcept {
16961 std::pair<result, char*> ret = arm_convert_utf16_to_latin1_with_errors<endianness::LITTLE>(buf, len, latin1_output);
16973 ret.first.count = ret.second - latin1_output; // Set count to the number of 8-bit code units written
16977 simdutf_warn_unused result implementation::convert_utf16be_to_latin1_with_errors(const char16_t* buf, size_t len, char* latin1_output) const noexcept {
16978 std::pair<result, char*> ret = arm_convert_utf16_to_latin1_with_errors<endianness::BIG>(buf, len, latin1_output);
16990 ret.first.count = ret.second - latin1_output; // Set count to the number of 8-bit code units written
16994 simdutf_warn_unused size_t implementation::convert_valid_utf16be_to_latin1(const char16_t* buf, size_t len, char* latin1_output) const noexcept {
16996 return convert_utf16be_to_latin1(buf, len, latin1_output);
16999 simdutf_warn_unused size_t implementation::convert_valid_utf16le_to_latin1(const char16_t* buf, size_t len, char* latin1_output) const noexcept {
17001 return convert_utf16le_to_latin1(buf, len, latin1_output);
17166 simdutf_warn_unused size_t implementation::convert_utf32_to_latin1(const char32_t* buf, size_t len, char* latin1_output) const noexcept {
17167 std::pair<const char32_t*, char*> ret = arm_convert_utf32_to_latin1(buf, len, latin1_output);
17169 size_t saved_bytes = ret.second - latin1_output;
17180 simdutf_warn_unused result implementation::convert_utf32_to_latin1_with_errors(const char32_t* buf, size_t len, char* latin1_output) const noexcept {
17181 std::pair<result, char*> ret = arm_convert_utf32_to_latin1_with_errors(buf, len, latin1_output);
17193 ret.first.count = ret.second - latin1_output; // Set count to the number of 8-bit code units written
17197 simdutf_warn_unused size_t implementation::convert_valid_utf32_to_latin1(const char32_t* buf, size_t len, char* latin1_output) const noexcept {
17198 std::pair<const char32_t*, char*> ret = arm_convert_utf32_to_latin1(buf, len, latin1_output);
17200 size_t saved_bytes = ret.second - latin1_output;
17518 simdutf_warn_unused size_t implementation::convert_utf8_to_latin1(const char* buf, size_t len, char* latin1_output) const noexcept {
17519 return scalar::utf8_to_latin1::convert(buf, len, latin1_output);
17522 simdutf_warn_unused result implementation::convert_utf8_to_latin1_with_errors(const char* buf, size_t len, char* latin1_output) const noexcept {
17523 return scalar::utf8_to_latin1::convert_with_errors(buf, len, latin1_output);
17526 simdutf_warn_unused size_t implementation::convert_valid_utf8_to_latin1(const char* buf, size_t len, char* latin1_output) const noexcept {
17527 return scalar::utf8_to_latin1::convert_valid(buf, len, latin1_output);
17567 simdutf_warn_unused size_t implementation::convert_utf16le_to_latin1(const char16_t* buf, size_t len, char* latin1_output) const noexcept {
17568 return scalar::utf16_to_latin1::convert<endianness::LITTLE>(buf, len, latin1_output);
17571 simdutf_warn_unused size_t implementation::convert_utf16be_to_latin1(const char16_t* buf, size_t len, char* latin1_output) const noexcept {
17572 return scalar::utf16_to_latin1::convert<endianness::BIG>(buf, len, latin1_output);
17575 simdutf_warn_unused result implementation::convert_utf16le_to_latin1_with_errors(const char16_t* buf, size_t len, char* latin1_output) const noexcept {
17576 return scalar::utf16_to_latin1::convert_with_errors<endianness::LITTLE>(buf, len, latin1_output);
17579 simdutf_warn_unused result implementation::convert_utf16be_to_latin1_with_errors(const char16_t* buf, size_t len, char* latin1_output) const noexcept {
17580 return scalar::utf16_to_latin1::convert_with_errors<endianness::BIG>(buf, len, latin1_output);
17583 simdutf_warn_unused size_t implementation::convert_valid_utf16le_to_latin1(const char16_t* buf, size_t len, char* latin1_output) const noexcept {
17584 return scalar::utf16_to_latin1::convert_valid<endianness::LITTLE>(buf, len, latin1_output);
17587 simdutf_warn_unused size_t implementation::convert_valid_utf16be_to_latin1(const char16_t* buf, size_t len, char* latin1_output) const noexcept {
17588 return scalar::utf16_to_latin1::convert_valid<endianness::BIG>(buf, len, latin1_output);
17615 simdutf_warn_unused size_t implementation::convert_utf32_to_latin1(const char32_t* buf, size_t len, char* latin1_output) const noexcept {
17616 return scalar::utf32_to_latin1::convert(buf, len, latin1_output);
17619 simdutf_warn_unused result implementation::convert_utf32_to_latin1_with_errors(const char32_t* buf, size_t len, char* latin1_output) const noexcept {
17620 return scalar::utf32_to_latin1::convert_with_errors(buf, len, latin1_output);
17623 simdutf_warn_unused size_t implementation::convert_valid_utf32_to_latin1(const char32_t* buf, size_t len, char* latin1_output) const noexcept {
17624 return scalar::utf32_to_latin1::convert_valid(buf, len, latin1_output);
19212 // memory bounds for latin1_output: is_remaining ?
19330 char *latin1_output) {
19350 (__m256i *)latin1_output,
19352 latin1_output += 32;
19365 latin1_output, mask,
19374 char *latin1_output) {
19395 *latin1_output++ = uint8_t(word);
19399 latin1_output);
19402 (__m256i *)latin1_output,
19404 latin1_output += 32;
19418 *latin1_output++ = uint8_t(word);
19422 latin1_output);
19425 latin1_output, mask,
19428 return std::make_pair(result(error_code::SUCCESS, len), latin1_output);
19744 char *latin1_output) {
19756 _mm_storeu_si128((__m128i *)latin1_output,
19758 latin1_output += 16;
19768 latin1_output, mask,
19776 char *latin1_output) {
19788 *latin1_output++ = uint8_t(*buf++);
19791 latin1_output);
19793 _mm_storeu_si128((__m128i *)latin1_output,
19795 latin1_output += 16;
19803 *latin1_output++ = uint8_t(*buf++);
19806 latin1_output);
19809 latin1_output, mask,
19812 return std::make_pair(result(error_code::SUCCESS, len), latin1_output);
21121 simdutf_warn_unused size_t implementation::convert_utf8_to_latin1(const char* buf, size_t len, char* latin1_output) const noexcept {
21122 return icelake::utf8_to_latin1_avx512(buf, len, latin1_output);
21126 simdutf_warn_unused result implementation::convert_utf8_to_latin1_with_errors(const char* buf, size_t len, char* latin1_output) const noexcept {
21131 inlen = icelake::utf8_to_latin1_avx512(buf, len, latin1_output);
21142 result res = scalar::utf8_to_latin1::convert_with_errors(buf + inlen, len - inlen, latin1_output + inlen);
21149 simdutf_warn_unused size_t implementation::convert_valid_utf8_to_latin1(const char* buf, size_t len, char* latin1_output) const noexcept {
21150 return icelake::valid_utf8_to_latin1_avx512(buf, len, latin1_output);
21333 simdutf_warn_unused size_t implementation::convert_utf16le_to_latin1(const char16_t* buf, size_t len, char* latin1_output) const noexcept {
21334 return icelake_convert_utf16_to_latin1<endianness::LITTLE>(buf,len,latin1_output);
21337 simdutf_warn_unused size_t implementation::convert_utf16be_to_latin1(const char16_t* buf, size_t len, char* latin1_output) const noexcept {
21338 return icelake_convert_utf16_to_latin1<endianness::BIG>(buf,len,latin1_output);
21341 simdutf_warn_unused result implementation::convert_utf16le_to_latin1_with_errors(const char16_t* buf, size_t len, char* latin1_output) const noexcept {
21342 return icelake_convert_utf16_to_latin1_with_errors<endianness::LITTLE>(buf,len,latin1_output).first;
21345 simdutf_warn_unused result implementation::convert_utf16be_to_latin1_with_errors(const char16_t* buf, size_t len, char* latin1_output) const noexcept {
21346 return icelake_convert_utf16_to_latin1_with_errors<endianness::BIG>(buf,len,latin1_output).first;
21349 simdutf_warn_unused size_t implementation::convert_valid_utf16be_to_latin1(const char16_t* buf, size_t len, char* latin1_output) const noexcept {
21351 return convert_utf16be_to_latin1(buf, len, latin1_output);
21354 simdutf_warn_unused size_t implementation::convert_valid_utf16le_to_latin1(const char16_t* buf, size_t len, char* latin1_output) const noexcept {
21356 return convert_utf16le_to_latin1(buf, len, latin1_output);
21403 simdutf_warn_unused size_t implementation::convert_utf32_to_latin1(const char32_t* buf, size_t len, char* latin1_output) const noexcept {
21404 return icelake_convert_utf32_to_latin1(buf,len,latin1_output);
21407 simdutf_warn_unused result implementation::convert_utf32_to_latin1_with_errors(const char32_t* buf, size_t len, char* latin1_output) const noexcept {
21408 return icelake_convert_utf32_to_latin1_with_errors(buf,len,latin1_output).first;
21411 simdutf_warn_unused size_t implementation::convert_valid_utf32_to_latin1(const char32_t* buf, size_t len, char* latin1_output) const noexcept {
21412 return icelake_convert_utf32_to_latin1(buf,len,latin1_output);
22944 char *latin1_output) {
22959 // Pack 16-bit characters into 8-bit and store in latin1_output
22964 _mm_storel_epi64(reinterpret_cast<__m128i *>(latin1_output),
22966 _mm_storel_epi64(reinterpret_cast<__m128i *>(latin1_output + 8),
22970 latin1_output += 16;
22972 return std::make_pair(nullptr, reinterpret_cast<char *>(latin1_output));
22975 return std::make_pair(buf, latin1_output);
22981 char *latin1_output) {
23000 _mm_storel_epi64(reinterpret_cast<__m128i *>(latin1_output),
23002 _mm_storel_epi64(reinterpret_cast<__m128i *>(latin1_output + 8),
23005 latin1_output += 16;
23013 *latin1_output++ = char(word);
23017 latin1_output);
23024 latin1_output);
23746 char *latin1_output) {
23763 return std::make_pair(nullptr, latin1_output);
23777 _mm_storeu_si128((__m128i *)latin1_output,
23780 latin1_output += 16;
23784 return std::make_pair(buf, latin1_output);
23788 char *latin1_output) {
23810 *latin1_output++ = static_cast<char>(codepoint);
23813 latin1_output);
23827 _mm_storeu_si128((__m128i *)latin1_output, _mm256_castsi256_si128(result));
23829 latin1_output += 16;
23834 return std::make_pair(result(error_code::SUCCESS, buf - start), latin1_output);
24460 char *&latin1_output) {
24483 _mm256_storeu_si256(reinterpret_cast<__m256i *>(latin1_output), in_combined);
24485 latin1_output += 32; // We wrote 32 characters.
24492 _mm_storeu_si128(reinterpret_cast<__m128i *>(latin1_output), in);
24493 latin1_output += 16; // We wrote 16 characters.
24518 _mm_storel_epi64((__m128i *)latin1_output, latin1_packed);
24519 latin1_output += 6; // We wrote 6 bytes.
25891 simdutf_really_inline size_t convert(const char* in, size_t size, char* latin1_output) {
25893 char* start{latin1_output};
25910 input.store((int8_t*)latin1_output);
25911 latin1_output += 64;
25946 utf8_end_of_code_point_mask, latin1_output);
25958 size_t howmany = scalar::utf8_to_latin1::convert(in + pos, size - pos, latin1_output);
25960 latin1_output += howmany;
25962 return latin1_output - start;
25965 simdutf_really_inline result convert_with_errors(const char* in, size_t size, char* latin1_output) {
25967 char* start{latin1_output};
25984 input.store((int8_t*)latin1_output);
25985 latin1_output += 64;
26004 result res = scalar::utf8_to_latin1::rewind_and_convert_with_errors(pos, in + pos, size - pos, latin1_output);
26027 utf8_end_of_code_point_mask, latin1_output);
26040 result res = scalar::utf8_to_latin1::rewind_and_convert_with_errors(pos, in + pos, size - pos, latin1_output);
26047 result res = scalar::utf8_to_latin1::rewind_and_convert_with_errors(pos, in + pos, size - pos, latin1_output);
26052 latin1_output += res.count;
26055 return result(error_code::SUCCESS, latin1_output - start);
26078 simdutf_really_inline size_t convert_valid(const char* in, size_t size, char* latin1_output) {
26080 char* start{latin1_output};
26097 input.store((int8_t*)latin1_output);
26098 latin1_output += 64;
26121 utf8_end_of_code_point_mask, latin1_output);
26132 size_t howmany = scalar::utf8_to_latin1::convert_valid(in + pos, size - pos, latin1_output);
26133 latin1_output += howmany;
26135 return latin1_output - start;
26288 simdutf_warn_unused size_t implementation::convert_utf8_to_latin1(const char* buf, size_t len, char* latin1_output) const noexcept {
26290 return converter.convert(buf, len, latin1_output);
26293 simdutf_warn_unused result implementation::convert_utf8_to_latin1_with_errors(const char* buf, size_t len, char* latin1_output) const noexcept {
26295 return converter.convert_with_errors(buf, len, latin1_output);
26299 char* latin1_output) const noexcept {
26300 return utf8_to_latin1::convert_valid(input, size, latin1_output);
26349 simdutf_warn_unused size_t implementation::convert_utf16le_to_latin1(const char16_t* buf, size_t len, char* latin1_output) const noexcept {
26350 std::pair<const char16_t*, char*> ret = haswell::avx2_convert_utf16_to_latin1<endianness::LITTLE>(buf, len, latin1_output);
26352 size_t saved_bytes = ret.second - latin1_output;
26362 simdutf_warn_unused size_t implementation::convert_utf16be_to_latin1(const char16_t* buf, size_t len, char* latin1_output) const noexcept {
26363 std::pair<const char16_t*, char*> ret = haswell::avx2_convert_utf16_to_latin1<endianness::BIG>(buf, len, latin1_output);
26365 size_t saved_bytes = ret.second - latin1_output;
26375 simdutf_warn_unused result implementation::convert_utf16le_to_latin1_with_errors(const char16_t* buf, size_t len, char* latin1_output) const noexcept {
26376 std::pair<result, char*> ret = avx2_convert_utf16_to_latin1_with_errors<endianness::LITTLE>(buf, len, latin1_output);
26388 ret.first.count = ret.second - latin1_output; // Set count to the number of 8-bit code units written
26392 simdutf_warn_unused result implementation::convert_utf16be_to_latin1_with_errors(const char16_t* buf, size_t len, char* latin1_output) const noexcept {
26393 std::pair<result, char*> ret = avx2_convert_utf16_to_latin1_with_errors<endianness::BIG>(buf, len, latin1_output);
26405 ret.first.count = ret.second - latin1_output; // Set count to the number of 8-bit code units written
26409 simdutf_warn_unused size_t implementation::convert_valid_utf16be_to_latin1(const char16_t* buf, size_t len, char* latin1_output) const noexcept {
26411 return convert_utf16be_to_latin1(buf, len, latin1_output);
26414 simdutf_warn_unused size_t implementation::convert_valid_utf16le_to_latin1(const char16_t* buf, size_t len, char* latin1_output) const noexcept {
26416 return convert_utf16le_to_latin1(buf, len, latin1_output);
26502 simdutf_warn_unused size_t implementation::convert_utf32_to_latin1(const char32_t* buf, size_t len, char* latin1_output) const noexcept {
26503 std::pair<const char32_t*, char*> ret = avx2_convert_utf32_to_latin1(buf, len, latin1_output);
26505 size_t saved_bytes = ret.second - latin1_output;
26515 simdutf_warn_unused result implementation::convert_utf32_to_latin1_with_errors(const char32_t* buf, size_t len, char* latin1_output) const noexcept {
26517 std::pair<result, char*> ret = avx2_convert_utf32_to_latin1_with_errors(buf, len, latin1_output);
26528 ret.first.count = ret.second - latin1_output; // Set count to the number of 8-bit code units written
26532 simdutf_warn_unused size_t implementation::convert_valid_utf32_to_latin1(const char32_t* buf, size_t len, char* latin1_output) const noexcept {
26533 return convert_utf32_to_latin1(buf,len,latin1_output);
29429 char *&latin1_output) {
29444 _mm_storeu_si128(reinterpret_cast<__m128i *>(latin1_output), in);
29445 latin1_output += 16; // We wrote 16 characters.
29470 _mm_storel_epi64((__m128i *)latin1_output, latin1_packed);
29471 latin1_output += 6; // We wrote 6 bytes.
29478 std::pair<const char16_t*, char*> sse_convert_utf16_to_latin1(const char16_t* buf, size_t len, char* latin1_output) {
29491 // Pack 16-bit characters into 8-bit and store in latin1_output
29493 _mm_storel_epi64(reinterpret_cast<__m128i*>(latin1_output), latin1_packed);
29496 latin1_output += 8;
29498 return std::make_pair(nullptr, reinterpret_cast<char*>(latin1_output));
29501 return std::make_pair(buf, latin1_output);
29505 std::pair<result, char*> sse_convert_utf16_to_latin1_with_errors(const char16_t* buf, size_t len, char* latin1_output) {
29519 _mm_storel_epi64(reinterpret_cast<__m128i*>(latin1_output), latin1_packed);
29521 latin1_output += 8;
29527 *latin1_output++ = char(word);
29529 return std::make_pair(result(error_code::TOO_LARGE, buf - start + k), latin1_output);
29535 return std::make_pair(result(error_code::SUCCESS, buf - start), latin1_output);
30179 char *latin1_output) {
30197 return std::make_pair(nullptr, latin1_output);
30202 _mm_storeu_si128((__m128i *)latin1_output, pack);
30203 latin1_output += 16;
30207 return std::make_pair(buf, latin1_output);
30212 char *latin1_output) {
30235 *latin1_output++ = char(codepoint);
30238 latin1_output);
30247 _mm_storeu_si128((__m128i *)latin1_output, pack);
30248 latin1_output += 16;
30253 latin1_output);
32268 simdutf_really_inline size_t convert(const char* in, size_t size, char* latin1_output) {
32270 char* start{latin1_output};
32287 input.store((int8_t*)latin1_output);
32288 latin1_output += 64;
32323 utf8_end_of_code_point_mask, latin1_output);
32335 size_t howmany = scalar::utf8_to_latin1::convert(in + pos, size - pos, latin1_output);
32337 latin1_output += howmany;
32339 return latin1_output - start;
32342 simdutf_really_inline result convert_with_errors(const char* in, size_t size, char* latin1_output) {
32344 char* start{latin1_output};
32361 input.store((int8_t*)latin1_output);
32362 latin1_output += 64;
32381 result res = scalar::utf8_to_latin1::rewind_and_convert_with_errors(pos, in + pos, size - pos, latin1_output);
32404 utf8_end_of_code_point_mask, latin1_output);
32417 result res = scalar::utf8_to_latin1::rewind_and_convert_with_errors(pos, in + pos, size - pos, latin1_output);
32424 result res = scalar::utf8_to_latin1::rewind_and_convert_with_errors(pos, in + pos, size - pos, latin1_output);
32429 latin1_output += res.count;
32432 return result(error_code::SUCCESS, latin1_output - start);
32455 simdutf_really_inline size_t convert_valid(const char* in, size_t size, char* latin1_output) {
32457 char* start{latin1_output};
32474 input.store((int8_t*)latin1_output);
32475 latin1_output += 64;
32498 utf8_end_of_code_point_mask, latin1_output);
32509 size_t howmany = scalar::utf8_to_latin1::convert_valid(in + pos, size - pos, latin1_output);
32510 latin1_output += howmany;
32512 return latin1_output - start;
32672 simdutf_warn_unused size_t implementation::convert_utf8_to_latin1(const char* buf, size_t len, char* latin1_output) const noexcept {
32674 return converter.convert(buf, len, latin1_output);
32677 simdutf_warn_unused result implementation::convert_utf8_to_latin1_with_errors(const char* buf, size_t len, char* latin1_output) const noexcept {
32679 return converter.convert_with_errors(buf, len, latin1_output);
32682 simdutf_warn_unused size_t implementation::convert_valid_utf8_to_latin1(const char* buf, size_t len, char* latin1_output) const noexcept {
32683 return westmere::utf8_to_latin1::convert_valid(buf,len,latin1_output);
32732 simdutf_warn_unused size_t implementation::convert_utf16le_to_latin1(const char16_t* buf, size_t len, char* latin1_output) const noexcept {
32733 std::pair<const char16_t*, char*> ret = sse_convert_utf16_to_latin1<endianness::LITTLE>(buf, len, latin1_output);
32735 size_t saved_bytes = ret.second - latin1_output;
32746 simdutf_warn_unused size_t implementation::convert_utf16be_to_latin1(const char16_t* buf, size_t len, char* latin1_output) const noexcept {
32747 std::pair<const char16_t*, char*> ret = sse_convert_utf16_to_latin1<endianness::BIG>(buf, len, latin1_output);
32749 size_t saved_bytes = ret.second - latin1_output;
32760 simdutf_warn_unused result implementation::convert_utf16le_to_latin1_with_errors(const char16_t* buf, size_t len, char* latin1_output) const noexcept {
32761 std::pair<result, char*> ret = sse_convert_utf16_to_latin1_with_errors<endianness::LITTLE>(buf, len, latin1_output);
32773 ret.first.count = ret.second - latin1_output; // Set count to the number of 8-bit code units written
32777 simdutf_warn_unused result implementation::convert_utf16be_to_latin1_with_errors(const char16_t* buf, size_t len, char* latin1_output) const noexcept {
32778 std::pair<result, char*> ret = sse_convert_utf16_to_latin1_with_errors<endianness::BIG>(buf, len, latin1_output);
32790 ret.first.count = ret.second - latin1_output; // Set count to the number of 8-bit code units written
32795 simdutf_warn_unused size_t implementation::convert_valid_utf16be_to_latin1(const char16_t* buf, size_t len, char* latin1_output) const noexcept {
32797 return convert_utf16be_to_latin1(buf, len, latin1_output);
32800 simdutf_warn_unused size_t implementation::convert_valid_utf16le_to_latin1(const char16_t* buf, size_t len, char* latin1_output) const noexcept {
32802 return convert_utf16le_to_latin1(buf, len, latin1_output);
32875 simdutf_warn_unused size_t implementation::convert_utf32_to_latin1(const char32_t* buf, size_t len, char* latin1_output) const noexcept {
32876 std::pair<const char32_t*, char*> ret = sse_convert_utf32_to_latin1(buf, len, latin1_output);
32878 size_t saved_bytes = ret.second - latin1_output;
32890 simdutf_warn_unused result implementation::convert_utf32_to_latin1_with_errors(const char32_t* buf, size_t len, char* latin1_output) const noexcept {
32892 std::pair<result, char*> ret = westmere::sse_convert_utf32_to_latin1_with_errors(buf, len, latin1_output);
32903 ret.first.count = ret.second - latin1_output; // Set count to the number of 8-bit code units written
32907 simdutf_warn_unused size_t implementation::convert_valid_utf32_to_latin1(const char32_t* buf, size_t len, char* latin1_output) const noexcept {
32909 return convert_utf32_to_latin1(buf,len,latin1_output);