about summary refs log tree commit diff
path: root/compiler/rustc_codegen_gcc/example/alloc_example.rs
diff options
context:
space:
mode:
authorDylan DPC <99973273+Dylan-DPC@users.noreply.github.com>2022-04-09 18:26:30 +0200
committerGitHub <noreply@github.com>2022-04-09 18:26:30 +0200
commit7726265ae0d3d2b37b4254980a72d5d5347fb92d (patch)
treeb7068e427d11a5cbc64f5da386e58e102f671235 /compiler/rustc_codegen_gcc/example/alloc_example.rs
parent2464ea251010f6de62ec875b32f3463dfa326cfb (diff)
parent1e6365d0751c0c7b88a30ad5eab0becb6cc87f7e (diff)
downloadrust-7726265ae0d3d2b37b4254980a72d5d5347fb92d.tar.gz
rust-7726265ae0d3d2b37b4254980a72d5d5347fb92d.zip
Rollup merge of #95831 - redzic:xor-uppercase, r=workingjubilee
Use bitwise XOR in to_ascii_uppercase

This saves an instruction compared to the previous approach, which
was to unset the fifth bit with bitwise OR.

Comparison of generated assembly on x86: https://godbolt.org/z/GdfvdGs39

This can also affect autovectorization, saving SIMD instructions as well: https://godbolt.org/z/cnPcz75T9

Not sure if `u8::to_ascii_lowercase` should also be changed, since using bitwise OR for that function does not require an extra bitwise negate since the code is setting a bit rather than unsetting a bit. `char::to_ascii_uppercase` already uses XOR, so no change seems to be required there.
Diffstat (limited to 'compiler/rustc_codegen_gcc/example/alloc_example.rs')
0 files changed, 0 insertions, 0 deletions