Lines Matching refs:utf16_output

86   simdutf_warn_unused size_t convert_utf8_to_utf16le(const char * buf, size_t len, char16_t* utf16_output) const noexcept final;
87 simdutf_warn_unused size_t convert_utf8_to_utf16be(const char * buf, size_t len, char16_t* utf16_output) const noexcept final;
88 simdutf_warn_unused result convert_utf8_to_utf16le_with_errors(const char * buf, size_t len, char16_t* utf16_output) const noexcept final;
89 simdutf_warn_unused result convert_utf8_to_utf16be_with_errors(const char * buf, size_t len, char16_t* utf16_output) const noexcept final;
1286 simdutf_warn_unused size_t convert_utf8_to_utf16le(const char * buf, size_t len, char16_t* utf16_output) const noexcept final;
1287 simdutf_warn_unused size_t convert_utf8_to_utf16be(const char * buf, size_t len, char16_t* utf16_output) const noexcept final;
1288 simdutf_warn_unused result convert_utf8_to_utf16le_with_errors(const char * buf, size_t len, char16_t* utf16_output) const noexcept final;
1289 simdutf_warn_unused result convert_utf8_to_utf16be_with_errors(const char * buf, size_t len, char16_t* utf16_output) const noexcept final;
1493 simdutf_warn_unused size_t convert_utf8_to_utf16le(const char * buf, size_t len, char16_t* utf16_output) const noexcept final;
1494 simdutf_warn_unused size_t convert_utf8_to_utf16be(const char * buf, size_t len, char16_t* utf16_output) const noexcept final;
1495 simdutf_warn_unused result convert_utf8_to_utf16le_with_errors(const char * buf, size_t len, char16_t* utf16_output) const noexcept final;
1496 simdutf_warn_unused result convert_utf8_to_utf16be_with_errors(const char * buf, size_t len, char16_t* utf16_output) const noexcept final;
2424 simdutf_warn_unused size_t convert_utf8_to_utf16le(const char * buf, size_t len, char16_t* utf16_output) const noexcept final;
2425 simdutf_warn_unused size_t convert_utf8_to_utf16be(const char * buf, size_t len, char16_t* utf16_output) const noexcept final;
2426 simdutf_warn_unused result convert_utf8_to_utf16le_with_errors(const char * buf, size_t len, char16_t* utf16_output) const noexcept final;
2427 simdutf_warn_unused result convert_utf8_to_utf16be_with_errors(const char * buf, size_t len, char16_t* utf16_output) const noexcept final;
3358 simdutf_warn_unused size_t convert_utf8_to_utf16le(const char * buf, size_t len, char16_t* utf16_output) const noexcept final;
3359 simdutf_warn_unused size_t convert_utf8_to_utf16be(const char * buf, size_t len, char16_t* utf16_output) const noexcept final;
3360 simdutf_warn_unused result convert_utf8_to_utf16le_with_errors(const char * buf, size_t len, char16_t* utf16_output) const noexcept final;
3361 simdutf_warn_unused result convert_utf8_to_utf16be_with_errors(const char * buf, size_t len, char16_t* utf16_output) const noexcept final;
4022 simdutf_warn_unused size_t convert_utf8_to_utf16le(const char * buf, size_t len, char16_t* utf16_output) const noexcept final;
4023 simdutf_warn_unused size_t convert_utf8_to_utf16be(const char * buf, size_t len, char16_t* utf16_output) const noexcept final;
4024 simdutf_warn_unused result convert_utf8_to_utf16le_with_errors(const char * buf, size_t len, char16_t* utf16_output) const noexcept final;
4025 simdutf_warn_unused result convert_utf8_to_utf16be_with_errors(const char * buf, size_t len, char16_t* utf16_output) const noexcept final;
4588 simdutf_warn_unused size_t convert_latin1_to_utf16le(const char * buf, size_t len, char16_t* utf16_output) const noexcept final override {
4589 return set_best()->convert_latin1_to_utf16le(buf, len, utf16_output);
4592 simdutf_warn_unused size_t convert_latin1_to_utf16be(const char * buf, size_t len, char16_t* utf16_output) const noexcept final override {
4593 return set_best()->convert_latin1_to_utf16be(buf, len, utf16_output);
4612 simdutf_warn_unused size_t convert_utf8_to_utf16le(const char * buf, size_t len, char16_t* utf16_output) const noexcept final override {
4613 return set_best()->convert_utf8_to_utf16le(buf, len, utf16_output);
4616 simdutf_warn_unused size_t convert_utf8_to_utf16be(const char * buf, size_t len, char16_t* utf16_output) const noexcept final override {
4617 return set_best()->convert_utf8_to_utf16be(buf, len, utf16_output);
4620 simdutf_warn_unused result convert_utf8_to_utf16le_with_errors(const char * buf, size_t len, char16_t* utf16_output) const noexcept final override {
4621 return set_best()->convert_utf8_to_utf16le_with_errors(buf, len, utf16_output);
4624 simdutf_warn_unused result convert_utf8_to_utf16be_with_errors(const char * buf, size_t len, char16_t* utf16_output) const noexcept final override {
4625 return set_best()->convert_utf8_to_utf16be_with_errors(buf, len, utf16_output);
4628 simdutf_warn_unused size_t convert_valid_utf8_to_utf16le(const char * buf, size_t len, char16_t* utf16_output) const noexcept final override {
4629 return set_best()->convert_valid_utf8_to_utf16le(buf, len, utf16_output);
4632 simdutf_warn_unused size_t convert_valid_utf8_to_utf16be(const char * buf, size_t len, char16_t* utf16_output) const noexcept final override {
4633 return set_best()->convert_valid_utf8_to_utf16be(buf, len, utf16_output);
4720 simdutf_warn_unused size_t convert_utf32_to_utf16le(const char32_t * buf, size_t len, char16_t* utf16_output) const noexcept final override {
4721 return set_best()->convert_utf32_to_utf16le(buf, len, utf16_output);
4724 simdutf_warn_unused size_t convert_utf32_to_utf16be(const char32_t * buf, size_t len, char16_t* utf16_output) const noexcept final override {
4725 return set_best()->convert_utf32_to_utf16be(buf, len, utf16_output);
4728 simdutf_warn_unused result convert_utf32_to_utf16le_with_errors(const char32_t * buf, size_t len, char16_t* utf16_output) const noexcept final override {
4729 return set_best()->convert_utf32_to_utf16le_with_errors(buf, len, utf16_output);
4732 simdutf_warn_unused result convert_utf32_to_utf16be_with_errors(const char32_t * buf, size_t len, char16_t* utf16_output) const noexcept final override {
4733 return set_best()->convert_utf32_to_utf16be_with_errors(buf, len, utf16_output);
4736 simdutf_warn_unused size_t convert_valid_utf32_to_utf16le(const char32_t * buf, size_t len, char16_t* utf16_output) const noexcept final override {
4737 return set_best()->convert_valid_utf32_to_utf16le(buf, len, utf16_output);
4740 simdutf_warn_unused size_t convert_valid_utf32_to_utf16be(const char32_t * buf, size_t len, char16_t* utf16_output) const noexcept final override {
4741 return set_best()->convert_valid_utf32_to_utf16be(buf, len, utf16_output);
5252 simdutf_warn_unused size_t convert_utf8_to_utf16(const char * input, size_t length, char16_t* utf16_output) noexcept {
5254 return convert_utf8_to_utf16be(input, length, utf16_output);
5256 return convert_utf8_to_utf16le(input, length, utf16_output);
5262 simdutf_warn_unused size_t convert_latin1_to_utf16le(const char * buf, size_t len, char16_t* utf16_output) noexcept {
5263 return get_active_implementation()->convert_latin1_to_utf16le(buf, len, utf16_output);
5265 simdutf_warn_unused size_t convert_latin1_to_utf16be(const char * buf, size_t len, char16_t* utf16_output) noexcept{
5266 return get_active_implementation()->convert_latin1_to_utf16be(buf, len, utf16_output);
5280 simdutf_warn_unused size_t convert_utf8_to_utf16le(const char * input, size_t length, char16_t* utf16_output) noexcept {
5281 return get_active_implementation()->convert_utf8_to_utf16le(input, length, utf16_output);
5283 simdutf_warn_unused size_t convert_utf8_to_utf16be(const char * input, size_t length, char16_t* utf16_output) noexcept {
5284 return get_active_implementation()->convert_utf8_to_utf16be(input, length, utf16_output);
5286 simdutf_warn_unused result convert_utf8_to_utf16_with_errors(const char * input, size_t length, char16_t* utf16_output) noexcept {
5288 return convert_utf8_to_utf16be_with_errors(input, length, utf16_output);
5290 return convert_utf8_to_utf16le_with_errors(input, length, utf16_output);
5293 simdutf_warn_unused result convert_utf8_to_utf16le_with_errors(const char * input, size_t length, char16_t* utf16_output) noexcept {
5294 return get_active_implementation()->convert_utf8_to_utf16le_with_errors(input, length, utf16_output);
5296 simdutf_warn_unused result convert_utf8_to_utf16be_with_errors(const char * input, size_t length, char16_t* utf16_output) noexcept {
5297 return get_active_implementation()->convert_utf8_to_utf16be_with_errors(input, length, utf16_output);
5367 simdutf_warn_unused size_t convert_latin1_to_utf16(const char * buf, size_t len, char16_t* utf16_output) noexcept {
5369 return convert_latin1_to_utf16be(buf, len, utf16_output);
5371 return convert_latin1_to_utf16le(buf, len, utf16_output);
10945 inline size_t convert_valid(const char32_t* buf, size_t len, char16_t* utf16_output) {
10948 char16_t* start{utf16_output};
10953 *utf16_output++ = !match_system(big_endian) ? char16_t(utf16::swap_bytes(uint16_t(word))) : char16_t(word);
10964 *utf16_output++ = char16_t(high_surrogate);
10965 *utf16_output++ = char16_t(low_surrogate);
10969 return utf16_output - start;
10989 inline size_t convert(const char32_t* buf, size_t len, char16_t* utf16_output) {
10992 char16_t* start{utf16_output};
10998 *utf16_output++ = !match_system(big_endian) ? char16_t(utf16::swap_bytes(uint16_t(word))) : char16_t(word);
11009 *utf16_output++ = char16_t(high_surrogate);
11010 *utf16_output++ = char16_t(low_surrogate);
11014 return utf16_output - start;
11018 inline result convert_with_errors(const char32_t* buf, size_t len, char16_t* utf16_output) {
11021 char16_t* start{utf16_output};
11027 *utf16_output++ = !match_system(big_endian) ? char16_t(utf16::swap_bytes(uint16_t(word))) : char16_t(word);
11038 *utf16_output++ = char16_t(high_surrogate);
11039 *utf16_output++ = char16_t(low_surrogate);
11043 return result(error_code::SUCCESS, utf16_output - start);
11385 inline size_t convert_valid(const char* buf, size_t len, char16_t* utf16_output) {
11388 char16_t* start{utf16_output};
11397 *utf16_output++ = !match_system(big_endian) ? char16_t(utf16::swap_bytes(buf[pos])) : char16_t(buf[pos]);
11406 *utf16_output++ = !match_system(big_endian) ? char16_t(utf16::swap_bytes(leading_byte)) : char16_t(leading_byte);
11416 *utf16_output++ = char16_t(code_point);
11426 *utf16_output++ = char16_t(code_point);
11440 *utf16_output++ = char16_t(high_surrogate);
11441 *utf16_output++ = char16_t(low_surrogate);
11448 return utf16_output - start;
11469 inline size_t convert(const char* buf, size_t len, char16_t* utf16_output) {
11472 char16_t* start{utf16_output};
11484 *utf16_output++ = !match_system(big_endian) ? char16_t(utf16::swap_bytes(buf[pos])) : char16_t(buf[pos]);
11494 *utf16_output++ = !match_system(big_endian) ? char16_t(utf16::swap_bytes(leading_byte)): char16_t(leading_byte);
11507 *utf16_output++ = char16_t(code_point);
11527 *utf16_output++ = char16_t(code_point);
11548 *utf16_output++ = char16_t(high_surrogate);
11549 *utf16_output++ = char16_t(low_surrogate);
11555 return utf16_output - start;
11559 inline result convert_with_errors(const char* buf, size_t len, char16_t* utf16_output) {
11562 char16_t* start{utf16_output};
11574 *utf16_output++ = !match_system(big_endian) ? char16_t(utf16::swap_bytes(buf[pos])) : char16_t(buf[pos]);
11583 *utf16_output++ = !match_system(big_endian) ? char16_t(utf16::swap_bytes(leading_byte)): char16_t(leading_byte);
11596 *utf16_output++ = char16_t(code_point);
11614 *utf16_output++ = char16_t(code_point);
11636 *utf16_output++ = char16_t(high_surrogate);
11637 *utf16_output++ = char16_t(low_surrogate);
11645 return result(error_code::SUCCESS, utf16_output - start);
11662 inline result rewind_and_convert_with_errors(size_t prior_bytes, const char* buf, size_t len, char16_t* utf16_output) {
11693 result res = convert_with_errors<endian>(buf, len + extra_len, utf16_output);
12048 inline size_t convert(const char* buf, size_t len, char16_t* utf16_output) {
12051 char16_t* start{ utf16_output };
12055 *utf16_output++ = char16_t(match_system(big_endian) ? word : utf16::swap_bytes(word));
12059 return utf16_output - start;
12063 inline result convert_with_errors(const char* buf, size_t len, char16_t* utf16_output) {
12066 char16_t* start{ utf16_output };
12070 *utf16_output++ = char16_t(match_system(big_endian) ? word : utf16::swap_bytes(word));
12074 return result(error_code::SUCCESS, utf16_output - start);
13157 std::pair<const char*, char16_t*> arm_convert_latin1_to_utf16(const char* buf, size_t len, char16_t* utf16_output) {
13164 vst1q_u16(reinterpret_cast<uint16_t *>(utf16_output), inlow);
13167 vst1q_u16(reinterpret_cast<uint16_t *>(utf16_output+8), inhigh);
13168 utf16_output += 16;
13172 return std::make_pair(buf, utf16_output);
13208 char16_t *&utf16_output) {
13227 temp.store_ascii_as_utf16<big_endian>(utf16_output);
13228 utf16_output += 16; // We wrote 16 16-bit characters.
13241 vst1_u16(reinterpret_cast<uint16_t*>(utf16_output), composed);
13242 utf16_output += 4; // We wrote 4 16-bit characters.
13254 vst1q_u16(reinterpret_cast<uint16_t *>(utf16_output), composed);
13256 utf16_output += 6; // We wrote 6 16-bit characters.
13276 vst1q_u16(reinterpret_cast<uint16_t*>(utf16_output), composed);
13277 utf16_output += 6; // We wrote 6 16-bit characters.
13320 vst1_u16(reinterpret_cast<uint16_t*>(utf16_output), composed);
13322 utf16_output += 4; // We wrote 4 16-bit codepoints
13372 vst1q_u16(reinterpret_cast<uint16_t *>(utf16_output), composed);
13373 utf16_output += 6; // We 3 32-bit surrogate pairs.
13444 utf16_output[0] = uint16_t(buffer[i] >> 16);
13445 utf16_output[1] = uint16_t(buffer[i] & 0xFFFF);
13446 utf16_output += 2;
13448 utf16_output[0] = uint16_t(buffer[i] & 0xFFFF);
13449 utf16_output++;
15002 uint16_t * utf16_output = reinterpret_cast<uint16_t*>(utf16_out);
15019 vst1_u16(utf16_output, utf16_packed);
15020 utf16_output += 4;
15030 if (word >= 0xD800 && word <= 0xDFFF) { return std::make_pair(nullptr, reinterpret_cast<char16_t*>(utf16_output)); }
15031 *utf16_output++ = !match_system(big_endian) ? char16_t(word >> 8 | word << 8) : char16_t(word);
15034 if (word > 0x10FFFF) { return std::make_pair(nullptr, reinterpret_cast<char16_t*>(utf16_output)); }
15042 *utf16_output++ = char16_t(high_surrogate);
15043 *utf16_output++ = char16_t(low_surrogate);
15052 return std::make_pair(nullptr, reinterpret_cast<char16_t*>(utf16_output));
15055 return std::make_pair(buf, reinterpret_cast<char16_t*>(utf16_output));
15061 uint16_t * utf16_output = reinterpret_cast<uint16_t*>(utf16_out);
15076 return std::make_pair(result(error_code::SURROGATE, buf - start), reinterpret_cast<char16_t*>(utf16_output));
15080 vst1_u16(utf16_output, utf16_packed);
15081 utf16_output += 4;
15091 if (word >= 0xD800 && word <= 0xDFFF) { return std::make_pair(result(error_code::SURROGATE, buf - start + k), reinterpret_cast<char16_t*>(utf16_output)); }
15092 *utf16_output++ = !match_system(big_endian) ? char16_t(word >> 8 | word << 8) : char16_t(word);
15095 if (word > 0x10FFFF) { return std::make_pair(result(error_code::TOO_LARGE, buf - start + k), reinterpret_cast<char16_t*>(utf16_output)); }
15103 *utf16_output++ = char16_t(high_surrogate);
15104 *utf16_output++ = char16_t(low_surrogate);
15111 return std::make_pair(result(error_code::SUCCESS, buf - start), reinterpret_cast<char16_t*>(utf16_output));
15538 char16_t* utf16_output) noexcept {
15541 char16_t* start{utf16_output};
15548 in.store_ascii_as_utf16<endian>(utf16_output);
15549 utf16_output += 64;
15581 utf8_end_of_code_point_mask, utf16_output);
15591 utf16_output += scalar::utf8_to_utf16::convert_valid<endian>(input + pos, size - pos, utf16_output);
15592 return utf16_output - start;
15728 simdutf_really_inline size_t convert(const char* in, size_t size, char16_t* utf16_output) {
15730 char16_t* start{utf16_output};
15747 input.store_ascii_as_utf16<endian>(utf16_output);
15748 utf16_output += 64;
15783 utf8_end_of_code_point_mask, utf16_output);
15795 size_t howmany = scalar::utf8_to_utf16::convert<endian>(in + pos, size - pos, utf16_output);
15797 utf16_output += howmany;
15799 return utf16_output - start;
15803 simdutf_really_inline result convert_with_errors(const char* in, size_t size, char16_t* utf16_output) {
15805 char16_t* start{utf16_output};
15822 input.store_ascii_as_utf16<endian>(utf16_output);
15823 utf16_output += 64;
15842 result res = scalar::utf8_to_utf16::rewind_and_convert_with_errors<endian>(pos, in + pos, size - pos, utf16_output);
15865 utf8_end_of_code_point_mask, utf16_output);
15878 result res = scalar::utf8_to_utf16::rewind_and_convert_with_errors<endian>(pos, in + pos, size - pos, utf16_output);
15885 result res = scalar::utf8_to_utf16::rewind_and_convert_with_errors<endian>(pos, in + pos, size - pos, utf16_output);
15890 utf16_output += res.count;
15893 return result(error_code::SUCCESS, utf16_output - start);
16840 simdutf_warn_unused size_t implementation::convert_latin1_to_utf16le(const char* buf, size_t len, char16_t* utf16_output) const noexcept {
16841 std::pair<const char*, char16_t*> ret = arm_convert_latin1_to_utf16<endianness::LITTLE>(buf, len, utf16_output);
16842 size_t converted_chars = ret.second - utf16_output;
16851 simdutf_warn_unused size_t implementation::convert_latin1_to_utf16be(const char* buf, size_t len, char16_t* utf16_output) const noexcept {
16852 std::pair<const char*, char16_t*> ret = arm_convert_latin1_to_utf16<endianness::BIG>(buf, len, utf16_output);
16853 size_t converted_chars = ret.second - utf16_output;
16887 simdutf_warn_unused size_t implementation::convert_utf8_to_utf16le(const char* buf, size_t len, char16_t* utf16_output) const noexcept {
16889 return converter.convert<endianness::LITTLE>(buf, len, utf16_output);
16892 simdutf_warn_unused size_t implementation::convert_utf8_to_utf16be(const char* buf, size_t len, char16_t* utf16_output) const noexcept {
16894 return converter.convert<endianness::BIG>(buf, len, utf16_output);
16897 simdutf_warn_unused result implementation::convert_utf8_to_utf16le_with_errors(const char* buf, size_t len, char16_t* utf16_output) const noexcept {
16899 return converter.convert_with_errors<endianness::LITTLE>(buf, len, utf16_output);
16902 simdutf_warn_unused result implementation::convert_utf8_to_utf16be_with_errors(const char* buf, size_t len, char16_t* utf16_output) const noexcept {
16904 return converter.convert_with_errors<endianness::BIG>(buf, len, utf16_output);
16908 char16_t* utf16_output) const noexcept {
16909 return utf8_to_utf16::convert_valid<endianness::LITTLE>(input, size, utf16_output);
16913 char16_t* utf16_output) const noexcept {
16914 return utf8_to_utf16::convert_valid<endianness::BIG>(input, size, utf16_output);
17215 simdutf_warn_unused size_t implementation::convert_utf32_to_utf16le(const char32_t* buf, size_t len, char16_t* utf16_output) const noexcept {
17216 std::pair<const char32_t*, char16_t*> ret = arm_convert_utf32_to_utf16<endianness::LITTLE>(buf, len, utf16_output);
17218 size_t saved_bytes = ret.second - utf16_output;
17228 simdutf_warn_unused size_t implementation::convert_utf32_to_utf16be(const char32_t* buf, size_t len, char16_t* utf16_output) const noexcept {
17229 std::pair<const char32_t*, char16_t*> ret = arm_convert_utf32_to_utf16<endianness::BIG>(buf, len, utf16_output);
17231 size_t saved_bytes = ret.second - utf16_output;
17241 simdutf_warn_unused result implementation::convert_utf32_to_utf16le_with_errors(const char32_t* buf, size_t len, char16_t* utf16_output) const noexcept {
17243 std::pair<result, char16_t*> ret = arm_convert_utf32_to_utf16_with_errors<endianness::LITTLE>(buf, len, utf16_output);
17254 ret.first.count = ret.second - utf16_output; // Set count to the number of 8-bit code units written
17258 simdutf_warn_unused result implementation::convert_utf32_to_utf16be_with_errors(const char32_t* buf, size_t len, char16_t* utf16_output) const noexcept {
17260 std::pair<result, char16_t*> ret = arm_convert_utf32_to_utf16_with_errors<endianness::BIG>(buf, len, utf16_output);
17271 ret.first.count = ret.second - utf16_output; // Set count to the number of 8-bit code units written
17275 simdutf_warn_unused size_t implementation::convert_valid_utf32_to_utf16le(const char32_t* buf, size_t len, char16_t* utf16_output) const noexcept {
17276 return convert_utf32_to_utf16le(buf, len, utf16_output);
17279 simdutf_warn_unused size_t implementation::convert_valid_utf32_to_utf16be(const char32_t* buf, size_t len, char16_t* utf16_output) const noexcept {
17280 return convert_utf32_to_utf16be(buf, len, utf16_output);
17506 simdutf_warn_unused size_t implementation::convert_latin1_to_utf16le(const char* buf, size_t len, char16_t* utf16_output) const noexcept {
17507 return scalar::latin1_to_utf16::convert<endianness::LITTLE>(buf, len, utf16_output);
17510 simdutf_warn_unused size_t implementation::convert_latin1_to_utf16be(const char* buf, size_t len, char16_t* utf16_output) const noexcept {
17511 return scalar::latin1_to_utf16::convert<endianness::BIG>(buf, len, utf16_output);
17530 simdutf_warn_unused size_t implementation::convert_utf8_to_utf16le(const char* buf, size_t len, char16_t* utf16_output) const noexcept {
17531 return scalar::utf8_to_utf16::convert<endianness::LITTLE>(buf, len, utf16_output);
17534 simdutf_warn_unused size_t implementation::convert_utf8_to_utf16be(const char* buf, size_t len, char16_t* utf16_output) const noexcept {
17535 return scalar::utf8_to_utf16::convert<endianness::BIG>(buf, len, utf16_output);
17538 simdutf_warn_unused result implementation::convert_utf8_to_utf16le_with_errors(const char* buf, size_t len, char16_t* utf16_output) const noexcept {
17539 return scalar::utf8_to_utf16::convert_with_errors<endianness::LITTLE>(buf, len, utf16_output);
17542 simdutf_warn_unused result implementation::convert_utf8_to_utf16be_with_errors(const char* buf, size_t len, char16_t* utf16_output) const noexcept {
17543 return scalar::utf8_to_utf16::convert_with_errors<endianness::BIG>(buf, len, utf16_output);
17546 simdutf_warn_unused size_t implementation::convert_valid_utf8_to_utf16le(const char* buf, size_t len, char16_t* utf16_output) const noexcept {
17547 return scalar::utf8_to_utf16::convert_valid<endianness::LITTLE>(buf, len, utf16_output);
17550 simdutf_warn_unused size_t implementation::convert_valid_utf8_to_utf16be(const char* buf, size_t len, char16_t* utf16_output) const noexcept {
17551 return scalar::utf8_to_utf16::convert_valid<endianness::BIG>(buf, len, utf16_output);
17639 simdutf_warn_unused size_t implementation::convert_utf32_to_utf16le(const char32_t* buf, size_t len, char16_t* utf16_output) const noexcept {
17640 return scalar::utf32_to_utf16::convert<endianness::LITTLE>(buf, len, utf16_output);
17643 simdutf_warn_unused size_t implementation::convert_utf32_to_utf16be(const char32_t* buf, size_t len, char16_t* utf16_output) const noexcept {
17644 return scalar::utf32_to_utf16::convert<endianness::BIG>(buf, len, utf16_output);
17647 simdutf_warn_unused result implementation::convert_utf32_to_utf16le_with_errors(const char32_t* buf, size_t len, char16_t* utf16_output) const noexcept {
17648 return scalar::utf32_to_utf16::convert_with_errors<endianness::LITTLE>(buf, len, utf16_output);
17651 simdutf_warn_unused result implementation::convert_utf32_to_utf16be_with_errors(const char32_t* buf, size_t len, char16_t* utf16_output) const noexcept {
17652 return scalar::utf32_to_utf16::convert_with_errors<endianness::BIG>(buf, len, utf16_output);
17655 simdutf_warn_unused size_t implementation::convert_valid_utf32_to_utf16le(const char32_t* buf, size_t len, char16_t* utf16_output) const noexcept {
17656 return scalar::utf32_to_utf16::convert_valid<endianness::LITTLE>(buf, len, utf16_output);
17659 simdutf_warn_unused size_t implementation::convert_valid_utf32_to_utf16be(const char32_t* buf, size_t len, char16_t* utf16_output) const noexcept {
17660 return scalar::utf32_to_utf16::convert_valid<endianness::BIG>(buf, len, utf16_output);
20305 std::pair<const char32_t*, char16_t*> avx512_convert_utf32_to_utf16(const char32_t* buf, size_t len, char16_t* utf16_output) {
20332 _mm_storeu_si128((__m128i*)utf16_output, utf16_packed);
20333 utf16_output += 8;
20343 if (word >= 0xD800 && word <= 0xDFFF) { return std::make_pair(nullptr, utf16_output); }
20344 *utf16_output++ = big_endian ? char16_t((uint16_t(word) >> 8) | (uint16_t(word) << 8)) : char16_t(word);
20347 if (word > 0x10FFFF) { return std::make_pair(nullptr, utf16_output); }
20355 *utf16_output++ = char16_t(high_surrogate);
20356 *utf16_output++ = char16_t(low_surrogate);
20364 if (static_cast<uint32_t>(_mm256_movemask_epi8(forbidden_bytemask)) != 0) { return std::make_pair(nullptr, utf16_output); }
20366 return std::make_pair(buf, utf16_output);
20371 std::pair<result, char16_t*> avx512_convert_utf32_to_utf16_with_errors(const char32_t* buf, size_t len, char16_t* utf16_output) {
20392 return std::make_pair(result(error_code::SURROGATE, buf - start), utf16_output);
20400 _mm_storeu_si128((__m128i*)utf16_output, utf16_packed);
20401 utf16_output += 8;
20411 if (word >= 0xD800 && word <= 0xDFFF) { return std::make_pair(result(error_code::SURROGATE, buf - start + k), utf16_output); }
20412 *utf16_output++ = big_endian ? char16_t((uint16_t(word) >> 8) | (uint16_t(word) << 8)) : char16_t(word);
20415 if (word > 0x10FFFF) { return std::make_pair(result(error_code::TOO_LARGE, buf - start + k), utf16_output); }
20423 *utf16_output++ = char16_t(high_surrogate);
20424 *utf16_output++ = char16_t(low_surrogate);
20431 return std::make_pair(result(error_code::SUCCESS, buf - start), utf16_output);
20594 char16_t *utf16_output) {
20610 _mm512_storeu_si512((__m512i *)&utf16_output[i], out);
20622 _mm512_mask_storeu_epi16(utf16_output + rounded_len, mask, out);
21100 simdutf_warn_unused size_t implementation::convert_latin1_to_utf16le(const char* buf, size_t len, char16_t* utf16_output) const noexcept {
21101 return icelake_convert_latin1_to_utf16<endianness::LITTLE>(buf, len, utf16_output);
21104 simdutf_warn_unused size_t implementation::convert_latin1_to_utf16be(const char* buf, size_t len, char16_t* utf16_output) const noexcept {
21105 return icelake_convert_latin1_to_utf16<endianness::BIG>(buf, len, utf16_output);
21153 simdutf_warn_unused size_t implementation::convert_utf8_to_utf16le(const char* buf, size_t len, char16_t* utf16_output) const noexcept {
21154 utf8_to_utf16_result ret = fast_avx512_convert_utf8_to_utf16<endianness::LITTLE>(buf, len, utf16_output);
21158 return ret.second - utf16_output;
21161 simdutf_warn_unused size_t implementation::convert_utf8_to_utf16be(const char* buf, size_t len, char16_t* utf16_output) const noexcept {
21162 utf8_to_utf16_result ret = fast_avx512_convert_utf8_to_utf16<endianness::BIG>(buf, len, utf16_output);
21166 return ret.second - utf16_output;
21169 simdutf_warn_unused result implementation::convert_utf8_to_utf16le_with_errors(const char* buf, size_t len, char16_t* utf16_output) const noexcept {
21170 return fast_avx512_convert_utf8_to_utf16_with_errors<endianness::LITTLE>(buf, len, utf16_output);
21173 simdutf_warn_unused result implementation::convert_utf8_to_utf16be_with_errors(const char* buf, size_t len, char16_t* utf16_output) const noexcept {
21174 return fast_avx512_convert_utf8_to_utf16_with_errors<endianness::BIG>(buf, len, utf16_output);
21177 simdutf_warn_unused size_t implementation::convert_valid_utf8_to_utf16le(const char* buf, size_t len, char16_t* utf16_output) const noexcept {
21178 utf8_to_utf16_result ret = icelake::valid_utf8_to_fixed_length<endianness::LITTLE, char16_t>(buf, len, utf16_output);
21179 size_t saved_bytes = ret.second - utf16_output;
21204 simdutf_warn_unused size_t implementation::convert_valid_utf8_to_utf16be(const char* buf, size_t len, char16_t* utf16_output) const noexcept {
21205 utf8_to_utf16_result ret = icelake::valid_utf8_to_fixed_length<endianness::BIG, char16_t>(buf, len, utf16_output);
21206 size_t saved_bytes = ret.second - utf16_output;
21450 simdutf_warn_unused size_t implementation::convert_utf32_to_utf16le(const char32_t* buf, size_t len, char16_t* utf16_output) const noexcept {
21451 std::pair<const char32_t*, char16_t*> ret = avx512_convert_utf32_to_utf16<endianness::LITTLE>(buf, len, utf16_output);
21453 size_t saved_bytes = ret.second - utf16_output;
21463 simdutf_warn_unused size_t implementation::convert_utf32_to_utf16be(const char32_t* buf, size_t len, char16_t* utf16_output) const noexcept {
21464 std::pair<const char32_t*, char16_t*> ret = avx512_convert_utf32_to_utf16<endianness::BIG>(buf, len, utf16_output);
21466 size_t saved_bytes = ret.second - utf16_output;
21476 simdutf_warn_unused result implementation::convert_utf32_to_utf16le_with_errors(const char32_t* buf, size_t len, char16_t* utf16_output) const noexcept {
21478 std::pair<result, char16_t*> ret = avx512_convert_utf32_to_utf16_with_errors<endianness::LITTLE>(buf, len, utf16_output);
21489 ret.first.count = ret.second - utf16_output; // Set count to the number of 8-bit code units written
21493 simdutf_warn_unused result implementation::convert_utf32_to_utf16be_with_errors(const char32_t* buf, size_t len, char16_t* utf16_output) const noexcept {
21495 std::pair<result, char16_t*> ret = avx512_convert_utf32_to_utf16_with_errors<endianness::BIG>(buf, len, utf16_output);
21506 ret.first.count = ret.second - utf16_output; // Set count to the number of 8-bit code units written
21510 simdutf_warn_unused size_t implementation::convert_valid_utf32_to_utf16le(const char32_t* buf, size_t len, char16_t* utf16_output) const noexcept {
21511 return convert_utf32_to_utf16le(buf, len, utf16_output);
21514 simdutf_warn_unused size_t implementation::convert_valid_utf32_to_utf16be(const char32_t* buf, size_t len, char16_t* utf16_output) const noexcept {
21515 return convert_utf32_to_utf16be(buf, len, utf16_output);
22575 std::pair<const char*, char16_t*> avx2_convert_latin1_to_utf16(const char* latin1_input, size_t len, char16_t* utf16_output) {
22599 _mm_storeu_si128(reinterpret_cast<__m128i*>(utf16_output + i), xmm1);
22602 _mm_storeu_si128(reinterpret_cast<__m128i*>(utf16_output + i + 8), xmm0);
22605 return std::make_pair(latin1_input + rounded_len, utf16_output + rounded_len);
22641 char16_t *&utf16_output) {
22664 _mm256_storeu_si256(reinterpret_cast<__m256i *>(utf16_output), ascii);
22665 utf16_output += 16; // We wrote 16 16-bit characters.
22677 _mm_storeu_si128((__m128i *)utf16_output, composed);
22678 utf16_output += 8; // We wrote 16 bytes, 8 code points.
22698 _mm_storeu_si128((__m128i *)utf16_output, composed_repacked);
22699 utf16_output += 4;
22720 _mm_storeu_si128((__m128i *)utf16_output, composed);
22721 utf16_output += 6; // We wrote 12 bytes, 6 code points. There is a potential overflow of 4 bytes.
22739 _mm_storeu_si128((__m128i *)utf16_output, composed_repacked);
22740 utf16_output += 4; // Here we overflow by 8 bytes.
22798 utf16_output[0] = uint16_t(surrogate_buffer[i] & 0xffff);
22799 utf16_output[1] = uint16_t(surrogate_buffer[i] >> 16);
22800 utf16_output += 2;
22802 utf16_output[0] = big_endian ? uint16_t(basic_buffer_swap[i]) : uint16_t(basic_buffer[i]);
22803 utf16_output++;
24321 std::pair<const char32_t*, char16_t*> avx2_convert_utf32_to_utf16(const char32_t* buf, size_t len, char16_t* utf16_output) {
24348 _mm_storeu_si128((__m128i*)utf16_output, utf16_packed);
24349 utf16_output += 8;
24359 if (word >= 0xD800 && word <= 0xDFFF) { return std::make_pair(nullptr, utf16_output); }
24360 *utf16_output++ = big_endian ? char16_t((uint16_t(word) >> 8) | (uint16_t(word) << 8)) : char16_t(word);
24363 if (word > 0x10FFFF) { return std::make_pair(nullptr, utf16_output); }
24371 *utf16_output++ = char16_t(high_surrogate);
24372 *utf16_output++ = char16_t(low_surrogate);
24380 if (static_cast<uint32_t>(_mm256_movemask_epi8(forbidden_bytemask)) != 0) { return std::make_pair(nullptr, utf16_output); }
24382 return std::make_pair(buf, utf16_output);
24387 std::pair<result, char16_t*> avx2_convert_utf32_to_utf16_with_errors(const char32_t* buf, size_t len, char16_t* utf16_output) {
24408 return std::make_pair(result(error_code::SURROGATE, buf - start), utf16_output);
24416 _mm_storeu_si128((__m128i*)utf16_output, utf16_packed);
24417 utf16_output += 8;
24427 if (word >= 0xD800 && word <= 0xDFFF) { return std::make_pair(result(error_code::SURROGATE, buf - start + k), utf16_output); }
24428 *utf16_output++ = big_endian ? char16_t((uint16_t(word) >> 8) | (uint16_t(word) << 8)) : char16_t(word);
24431 if (word > 0x10FFFF) { return std::make_pair(result(error_code::TOO_LARGE, buf - start + k), utf16_output); }
24439 *utf16_output++ = char16_t(high_surrogate);
24440 *utf16_output++ = char16_t(low_surrogate);
24447 return std::make_pair(result(error_code::SUCCESS, buf - start), utf16_output);
24949 char16_t* utf16_output) noexcept {
24952 char16_t* start{utf16_output};
24959 in.store_ascii_as_utf16<endian>(utf16_output);
24960 utf16_output += 64;
24992 utf8_end_of_code_point_mask, utf16_output);
25002 utf16_output += scalar::utf8_to_utf16::convert_valid<endian>(input + pos, size - pos, utf16_output);
25003 return utf16_output - start;
25139 simdutf_really_inline size_t convert(const char* in, size_t size, char16_t* utf16_output) {
25141 char16_t* start{utf16_output};
25158 input.store_ascii_as_utf16<endian>(utf16_output);
25159 utf16_output += 64;
25194 utf8_end_of_code_point_mask, utf16_output);
25206 size_t howmany = scalar::utf8_to_utf16::convert<endian>(in + pos, size - pos, utf16_output);
25208 utf16_output += howmany;
25210 return utf16_output - start;
25214 simdutf_really_inline result convert_with_errors(const char* in, size_t size, char16_t* utf16_output) {
25216 char16_t* start{utf16_output};
25233 input.store_ascii_as_utf16<endian>(utf16_output);
25234 utf16_output += 64;
25253 result res = scalar::utf8_to_utf16::rewind_and_convert_with_errors<endian>(pos, in + pos, size - pos, utf16_output);
25276 utf8_end_of_code_point_mask, utf16_output);
25289 result res = scalar::utf8_to_utf16::rewind_and_convert_with_errors<endian>(pos, in + pos, size - pos, utf16_output);
25296 result res = scalar::utf8_to_utf16::rewind_and_convert_with_errors<endian>(pos, in + pos, size - pos, utf16_output);
25301 utf16_output += res.count;
25304 return result(error_code::SUCCESS, utf16_output - start);
26249 simdutf_warn_unused size_t implementation::convert_latin1_to_utf16le(const char* buf, size_t len, char16_t* utf16_output) const noexcept {
26250 std::pair<const char*, char16_t*> ret = avx2_convert_latin1_to_utf16<endianness::LITTLE>(buf, len, utf16_output);
26252 size_t converted_chars = ret.second - utf16_output;
26262 simdutf_warn_unused size_t implementation::convert_latin1_to_utf16be(const char* buf, size_t len, char16_t* utf16_output) const noexcept {
26263 std::pair<const char*, char16_t*> ret = avx2_convert_latin1_to_utf16<endianness::BIG>(buf, len, utf16_output);
26265 size_t converted_chars = ret.second - utf16_output;
26303 simdutf_warn_unused size_t implementation::convert_utf8_to_utf16le(const char* buf, size_t len, char16_t* utf16_output) const noexcept {
26305 return converter.convert<endianness::LITTLE>(buf, len, utf16_output);
26308 simdutf_warn_unused size_t implementation::convert_utf8_to_utf16be(const char* buf, size_t len, char16_t* utf16_output) const noexcept {
26310 return converter.convert<endianness::BIG>(buf, len, utf16_output);
26313 simdutf_warn_unused result implementation::convert_utf8_to_utf16le_with_errors(const char* buf, size_t len, char16_t* utf16_output) const noexcept {
26315 return converter.convert_with_errors<endianness::LITTLE>(buf, len, utf16_output);
26318 simdutf_warn_unused result implementation::convert_utf8_to_utf16be_with_errors(const char* buf, size_t len, char16_t* utf16_output) const noexcept {
26320 return converter.convert_with_errors<endianness::BIG>(buf, len, utf16_output);
26324 char16_t* utf16_output) const noexcept {
26325 return utf8_to_utf16::convert_valid<endianness::LITTLE>(input, size, utf16_output);
26329 char16_t* utf16_output) const noexcept {
26330 return utf8_to_utf16::convert_valid<endianness::BIG>(input, size, utf16_output);
26619 simdutf_warn_unused size_t implementation::convert_utf32_to_utf16le(const char32_t* buf, size_t len, char16_t* utf16_output) const noexcept {
26620 std::pair<const char32_t*, char16_t*> ret = avx2_convert_utf32_to_utf16<endianness::LITTLE>(buf, len, utf16_output);
26622 size_t saved_bytes = ret.second - utf16_output;
26632 simdutf_warn_unused size_t implementation::convert_utf32_to_utf16be(const char32_t* buf, size_t len, char16_t* utf16_output) const noexcept {
26633 std::pair<const char32_t*, char16_t*> ret = avx2_convert_utf32_to_utf16<endianness::BIG>(buf, len, utf16_output);
26635 size_t saved_bytes = ret.second - utf16_output;
26645 simdutf_warn_unused result implementation::convert_utf32_to_utf16le_with_errors(const char32_t* buf, size_t len, char16_t* utf16_output) const noexcept {
26647 std::pair<result, char16_t*> ret = haswell::avx2_convert_utf32_to_utf16_with_errors<endianness::LITTLE>(buf, len, utf16_output);
26658 ret.first.count = ret.second - utf16_output; // Set count to the number of 8-bit code units written
26662 simdutf_warn_unused result implementation::convert_utf32_to_utf16be_with_errors(const char32_t* buf, size_t len, char16_t* utf16_output) const noexcept {
26664 std::pair<result, char16_t*> ret = haswell::avx2_convert_utf32_to_utf16_with_errors<endianness::BIG>(buf, len, utf16_output);
26675 ret.first.count = ret.second - utf16_output; // Set count to the number of 8-bit code units written
26679 simdutf_warn_unused size_t implementation::convert_valid_utf32_to_utf16le(const char32_t* buf, size_t len, char16_t* utf16_output) const noexcept {
26680 return convert_utf32_to_utf16le(buf, len, utf16_output);
26683 simdutf_warn_unused size_t implementation::convert_valid_utf32_to_utf16be(const char32_t* buf, size_t len, char16_t* utf16_output) const noexcept {
26684 return convert_utf32_to_utf16be(buf, len, utf16_output);
27321 char16_t* utf16_output) noexcept {
27324 char16_t* start{utf16_output};
27331 in.store_ascii_as_utf16<endian>(utf16_output);
27332 utf16_output += 64;
27364 utf8_end_of_code_point_mask, utf16_output);
27374 utf16_output += scalar::utf8_to_utf16::convert_valid<endian>(input + pos, size - pos, utf16_output);
27375 return utf16_output - start;
27511 simdutf_really_inline size_t convert(const char* in, size_t size, char16_t* utf16_output) {
27513 char16_t* start{utf16_output};
27530 input.store_ascii_as_utf16<endian>(utf16_output);
27531 utf16_output += 64;
27566 utf8_end_of_code_point_mask, utf16_output);
27578 size_t howmany = scalar::utf8_to_utf16::convert<endian>(in + pos, size - pos, utf16_output);
27580 utf16_output += howmany;
27582 return utf16_output - start;
27586 simdutf_really_inline result convert_with_errors(const char* in, size_t size, char16_t* utf16_output) {
27588 char16_t* start{utf16_output};
27605 input.store_ascii_as_utf16<endian>(utf16_output);
27606 utf16_output += 64;
27625 result res = scalar::utf8_to_utf16::rewind_and_convert_with_errors<endian>(pos, in + pos, size - pos, utf16_output);
27648 utf8_end_of_code_point_mask, utf16_output);
27661 result res = scalar::utf8_to_utf16::rewind_and_convert_with_errors<endian>(pos, in + pos, size - pos, utf16_output);
27668 result res = scalar::utf8_to_utf16::rewind_and_convert_with_errors<endian>(pos, in + pos, size - pos, utf16_output);
27673 utf16_output += res.count;
27676 return result(error_code::SUCCESS, utf16_output - start);
28202 simdutf_warn_unused size_t implementation::convert_utf8_to_utf16le(const char* /*buf*/, size_t /*len*/, char16_t* /*utf16_output*/) const noexcept {
28206 simdutf_warn_unused size_t implementation::convert_utf8_to_utf16be(const char* /*buf*/, size_t /*len*/, char16_t* /*utf16_output*/) const noexcept {
28210 simdutf_warn_unused result implementation::convert_utf8_to_utf16le_with_errors(const char* /*buf*/, size_t /*len*/, char16_t* /*utf16_output*/) const noexcept {
28214 simdutf_warn_unused result implementation::convert_utf8_to_utf16be_with_errors(const char* /*buf*/, size_t /*len*/, char16_t* /*utf16_output*/) const noexcept {
28218 simdutf_warn_unused size_t implementation::convert_valid_utf8_to_utf16le(const char* /*buf*/, size_t /*len*/, char16_t* /*utf16_output*/) const noexcept {
28222 simdutf_warn_unused size_t implementation::convert_valid_utf8_to_utf16be(const char* /*buf*/, size_t /*len*/, char16_t* /*utf16_output*/) const noexcept {
28226 simdutf_warn_unused size_t implementation::convert_utf8_to_utf32(const char* /*buf*/, size_t /*len*/, char32_t* /*utf16_output*/) const noexcept {
28230 simdutf_warn_unused result implementation::convert_utf8_to_utf32_with_errors(const char* /*buf*/, size_t /*len*/, char32_t* /*utf16_output*/) const noexcept {
28234 simdutf_warn_unused size_t implementation::convert_valid_utf8_to_utf32(const char* /*buf*/, size_t /*len*/, char32_t* /*utf16_output*/) const noexcept {
28274 simdutf_warn_unused size_t implementation::convert_utf32_to_utf16le(const char32_t* buf, size_t len, char16_t* utf16_output) const noexcept {
28275 return scalar::utf32_to_utf16::convert<endianness::LITTLE>(buf, len, utf16_output);
28278 simdutf_warn_unused size_t implementation::convert_utf32_to_utf16be(const char32_t* buf, size_t len, char16_t* utf16_output) const noexcept {
28279 return scalar::utf32_to_utf16::convert<endianness::BIG>(buf, len, utf16_output);
28282 simdutf_warn_unused result implementation::convert_utf32_to_utf16le_with_errors(const char32_t* buf, size_t len, char16_t* utf16_output) const noexcept {
28283 return scalar::utf32_to_utf16::convert_with_errors<endianness::LITTLE>(buf, len, utf16_output);
28286 simdutf_warn_unused result implementation::convert_utf32_to_utf16be_with_errors(const char32_t* buf, size_t len, char16_t* utf16_output) const noexcept {
28287 return scalar::utf32_to_utf16::convert_with_errors<endianness::BIG>(buf, len, utf16_output);
28290 simdutf_warn_unused size_t implementation::convert_valid_utf32_to_utf16le(const char32_t* buf, size_t len, char16_t* utf16_output) const noexcept {
28291 return scalar::utf32_to_utf16::convert_valid<endianness::LITTLE>(buf, len, utf16_output);
28294 simdutf_warn_unused size_t implementation::convert_valid_utf32_to_utf16be(const char32_t* buf, size_t len, char16_t* utf16_output) const noexcept {
28295 return scalar::utf32_to_utf16::convert_valid<endianness::BIG>(buf, len, utf16_output);
29054 char16_t *utf16_output) {
29064 _mm_storeu_si128(reinterpret_cast<__m128i*>(&utf16_output[i]), out1);
29065 _mm_storeu_si128(reinterpret_cast<__m128i*>(&utf16_output[i + 8]), out2);
29068 return std::make_pair(latin1_input + rounded_len, utf16_output + rounded_len);
29116 char16_t *&utf16_output) {
29139 _mm_storeu_si128(reinterpret_cast<__m128i *>(utf16_output), ascii_first);
29140 _mm_storeu_si128(reinterpret_cast<__m128i *>(utf16_output + 8), ascii_second);
29141 utf16_output += 16; // We wrote 16 16-bit characters.
29153 _mm_storeu_si128((__m128i *)utf16_output, composed);
29154 utf16_output += 8; // We wrote 16 bytes, 8 code points.
29174 _mm_storeu_si128((__m128i *)utf16_output, composed_repacked);
29175 utf16_output += 4;
29197 _mm_storeu_si128((__m128i *)utf16_output, composed);
29198 utf16_output += 6; // We wrote 12 bytes, 6 code points.
29216 _mm_storeu_si128((__m128i *)utf16_output, composed_repacked);
29217 utf16_output += 4;
29275 utf16_output[0] = uint16_t(surrogate_buffer[i] & 0xffff);
29276 utf16_output[1] = uint16_t(surrogate_buffer[i] >> 16);
29277 utf16_output += 2;
29279 utf16_output[0] = big_endian ? uint16_t(basic_buffer_swap[i]) : uint16_t(basic_buffer[i]);
29280 utf16_output++;
30771 std::pair<const char32_t*, char16_t*> sse_convert_utf32_to_utf16(const char32_t* buf, size_t len, char16_t* utf16_output) {
30799 _mm_storeu_si128((__m128i*)utf16_output, utf16_packed);
30800 utf16_output += 8;
30810 if (word >= 0xD800 && word <= 0xDFFF) { return std::make_pair(nullptr, utf16_output); }
30811 *utf16_output++ = big_endian ? char16_t((uint16_t(word) >> 8) | (uint16_t(word) << 8)) : char16_t(word);
30814 if (word > 0x10FFFF) { return std::make_pair(nullptr, utf16_output); }
30822 *utf16_output++ = char16_t(high_surrogate);
30823 *utf16_output++ = char16_t(low_surrogate);
30831 if (static_cast<uint32_t>(_mm_movemask_epi8(forbidden_bytemask)) != 0) { return std::make_pair(nullptr, utf16_output); }
30833 return std::make_pair(buf, utf16_output);
30838 std::pair<result, char16_t*> sse_convert_utf32_to_utf16_with_errors(const char32_t* buf, size_t len, char16_t* utf16_output) {
30860 return std::make_pair(result(error_code::SURROGATE, buf - start), utf16_output);
30868 _mm_storeu_si128((__m128i*)utf16_output, utf16_packed);
30869 utf16_output += 8;
30879 if (word >= 0xD800 && word <= 0xDFFF) { return std::make_pair(result(error_code::SURROGATE, buf - start + k), utf16_output); }
30880 *utf16_output++ = big_endian ? char16_t((uint16_t(word) >> 8) | (uint16_t(word) << 8)) : char16_t(word);
30883 if (word > 0x10FFFF) { return std::make_pair(result(error_code::TOO_LARGE, buf - start + k), utf16_output); }
30891 *utf16_output++ = char16_t(high_surrogate);
30892 *utf16_output++ = char16_t(low_surrogate);
30899 return std::make_pair(result(error_code::SUCCESS, buf - start), utf16_output);
31328 char16_t* utf16_output) noexcept {
31331 char16_t* start{utf16_output};
31338 in.store_ascii_as_utf16<endian>(utf16_output);
31339 utf16_output += 64;
31371 utf8_end_of_code_point_mask, utf16_output);
31381 utf16_output += scalar::utf8_to_utf16::convert_valid<endian>(input + pos, size - pos, utf16_output);
31382 return utf16_output - start;
31518 simdutf_really_inline size_t convert(const char* in, size_t size, char16_t* utf16_output) {
31520 char16_t* start{utf16_output};
31537 input.store_ascii_as_utf16<endian>(utf16_output);
31538 utf16_output += 64;
31573 utf8_end_of_code_point_mask, utf16_output);
31585 size_t howmany = scalar::utf8_to_utf16::convert<endian>(in + pos, size - pos, utf16_output);
31587 utf16_output += howmany;
31589 return utf16_output - start;
31593 simdutf_really_inline result convert_with_errors(const char* in, size_t size, char16_t* utf16_output) {
31595 char16_t* start{utf16_output};
31612 input.store_ascii_as_utf16<endian>(utf16_output);
31613 utf16_output += 64;
31632 result res = scalar::utf8_to_utf16::rewind_and_convert_with_errors<endian>(pos, in + pos, size - pos, utf16_output);
31655 utf8_end_of_code_point_mask, utf16_output);
31668 result res = scalar::utf8_to_utf16::rewind_and_convert_with_errors<endian>(pos, in + pos, size - pos, utf16_output);
31675 result res = scalar::utf8_to_utf16::rewind_and_convert_with_errors<endian>(pos, in + pos, size - pos, utf16_output);
31680 utf16_output += res.count;
31683 return result(error_code::SUCCESS, utf16_output - start);
32632 simdutf_warn_unused size_t implementation::convert_latin1_to_utf16le(const char* buf, size_t len, char16_t* utf16_output) const noexcept {
32633 std::pair<const char*, char16_t*> ret = sse_convert_latin1_to_utf16<endianness::LITTLE>(buf, len, utf16_output);
32635 size_t converted_chars = ret.second - utf16_output;
32645 simdutf_warn_unused size_t implementation::convert_latin1_to_utf16be(const char* buf, size_t len, char16_t* utf16_output) const noexcept {
32646 std::pair<const char*, char16_t*> ret = sse_convert_latin1_to_utf16<endianness::BIG>(buf, len, utf16_output);
32648 size_t converted_chars = ret.second - utf16_output;
32686 simdutf_warn_unused size_t implementation::convert_utf8_to_utf16le(const char* buf, size_t len, char16_t* utf16_output) const noexcept {
32688 return converter.convert<endianness::LITTLE>(buf, len, utf16_output);
32691 simdutf_warn_unused size_t implementation::convert_utf8_to_utf16be(const char* buf, size_t len, char16_t* utf16_output) const noexcept {
32693 return converter.convert<endianness::BIG>(buf, len, utf16_output);
32696 simdutf_warn_unused result implementation::convert_utf8_to_utf16le_with_errors(const char* buf, size_t len, char16_t* utf16_output) const noexcept {
32698 return converter.convert_with_errors<endianness::LITTLE>(buf, len, utf16_output);
32701 simdutf_warn_unused result implementation::convert_utf8_to_utf16be_with_errors(const char* buf, size_t len, char16_t* utf16_output) const noexcept {
32703 return converter.convert_with_errors<endianness::BIG>(buf, len, utf16_output);
32708 char16_t* utf16_output) const noexcept {
32709 return utf8_to_utf16::convert_valid<endianness::LITTLE>(input, size, utf16_output);
32713 char16_t* utf16_output) const noexcept {
32714 return utf8_to_utf16::convert_valid<endianness::BIG>(input, size, utf16_output);
33008 simdutf_warn_unused size_t implementation::convert_utf32_to_utf16le(const char32_t* buf, size_t len, char16_t* utf16_output) const noexcept {
33009 std::pair<const char32_t*, char16_t*> ret = sse_convert_utf32_to_utf16<endianness::LITTLE>(buf, len, utf16_output);
33011 size_t saved_bytes = ret.second - utf16_output;
33021 simdutf_warn_unused size_t implementation::convert_utf32_to_utf16be(const char32_t* buf, size_t len, char16_t* utf16_output) const noexcept {
33022 std::pair<const char32_t*, char16_t*> ret = sse_convert_utf32_to_utf16<endianness::BIG>(buf, len, utf16_output);
33024 size_t saved_bytes = ret.second - utf16_output;
33034 simdutf_warn_unused result implementation::convert_utf32_to_utf16le_with_errors(const char32_t* buf, size_t len, char16_t* utf16_output) const noexcept {
33036 std::pair<result, char16_t*> ret = westmere::sse_convert_utf32_to_utf16_with_errors<endianness::LITTLE>(buf, len, utf16_output);
33047 ret.first.count = ret.second - utf16_output; // Set count to the number of 8-bit code units written
33051 simdutf_warn_unused result implementation::convert_utf32_to_utf16be_with_errors(const char32_t* buf, size_t len, char16_t* utf16_output) const noexcept {
33053 std::pair<result, char16_t*> ret = westmere::sse_convert_utf32_to_utf16_with_errors<endianness::BIG>(buf, len, utf16_output);
33064 ret.first.count = ret.second - utf16_output; // Set count to the number of 8-bit code units written
33068 simdutf_warn_unused size_t implementation::convert_valid_utf32_to_utf16le(const char32_t* buf, size_t len, char16_t* utf16_output) const noexcept {
33069 return convert_utf32_to_utf16le(buf, len, utf16_output);
33072 simdutf_warn_unused size_t implementation::convert_valid_utf32_to_utf16be(const char32_t* buf, size_t len, char16_t* utf16_output) const noexcept {
33073 return convert_utf32_to_utf16be(buf, len, utf16_output);