You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Tree:
0d8ef2d3b9
2ndAdjustmentVulkanV3-STOP_FORCE_PUSHING_CAMILLE
2ndAdjustmentVulkanv2
2ndgpuopts
4480-with-fix-John
John-android-rescale-toggle
TTYD
Update-some-barriers-test
aggelos-storm-switch
android-meows
aydar-fixes
bcn-ternary-soft
bioshock
blit-fixes
bump-httplib-minver
camile/wawawawa
change-fix-bloom-toggle
civa
crueter-patch-1
crueter-patch-3
crueter-patch-4
crysis-lemon
descriptor_set
dmnt2
dynamic-rendering-2
dynarmic
dynarmic-ppc64
eden-managarm
eden-orbis-ps4
eden-wasm
ender-mag-vertex-disable-fix
feat/android_kotlin_compose
feat/game_override
fifa-lemon2
fix-cpmutil-win
fix-friend-list-freeze
fix-grid-autoalign
fix-update-android
flatopsfixes23485
fs-try
funny-meows
kosmickrisp
liz-heaptrack-fix
lizzie/1st-anniversary-icon
lizzie/adjust-stream-buffer
lizzie/anv-cached-mesa-hack
lizzie/app-language
lizzie/areafixnvidia
lizzie/astc-decode-opts1
lizzie/better-mscxr
lizzie/brunofix7546847
lizzie/build-template-m1
lizzie/bump-18-version-cache
lizzie/clang24-sirit-jwt
lizzie/cleanup-dynarmic-cmake
lizzie/cpp20-barriers-and-bit
lizzie/debug-assert-demote-dynarmic
lizzie/docs-lz12
lizzie/dynarmic-abort-path-12
lizzie/dynarmic-exclusive-fixups
lizzie/eh-signed
lizzie/emulate-bgr565-android-only
lizzie/enable-airplane-mode-by-default
lizzie/enable-icf
lizzie/fbsd-shm_create_largepage
lizzie/ffmpeg-fix-externel
lizzie/fix-nvmap-handles
lizzie/fxaa-123
lizzie/hbloader-fix
lizzie/inline-audio-structure-parent-refs
lizzie/inlinecodecnvenc
lizzie/invert-gyro
lizzie/ios-port-sud
lizzie/jamboree-audio-crash
lizzie/joycon-revision
lizzie/lto-fafaf-test-123
lizzie/macos-network-ifaces
lizzie/make-directory-cmake
lizzie/marknocore
lizzie/memcorrupt-afuzz1
lizzie/mlibc-fixes
lizzie/mlp223
lizzie/nce-invalidate-split
lizzie/netbsdgcc14-fix
lizzie/noexcept-dynarmic
lizzie/non-english-policy
lizzie/nuke-cubeb-2
lizzie/nuke-oboe
lizzie/nuke-ssl
lizzie/opus-regr-not-rep
lizzie/pixelphonefix
lizzie/pkza-mwait
lizzie/powerunswizzle
lizzie/product-model-wawa
lizzie/ptable-revert-1212
lizzie/rdynr
lizzie/redundant-cpool-ops
lizzie/refactor-networking-12
lizzie/rem-fs-reimpls
lizzie/remove-concepts-common-hdr
lizzie/remove-disassembler-dynarmic
lizzie/remove-memcpy-on-vector
lizzie/remove-redundant-config-dynarmic
lizzie/remove-vector-math-unused
lizzie/revert-opt-pagetable-djgdjgdfjg
lizzie/rv64-cross-comp-fixes
lizzie/sd-gamemode-fix-queue
lizzie/settings-preserve-across
lizzie/simplify-invalid-acc
lizzie/sleep-on-128bit-swap
lizzie/sm3sm4-tests
lizzie/smallvector-use-on-ipc
lizzie/sparse-vectoriz
lizzie/ssaa-what-the-fuck
lizzie/stable-shader-pools
lizzie/swkbd-mhu
lizzie/thread-names-log
lizzie/trivial-warn-fixes-4
lizzie/tryfixrandomvkshit
lizzie/ulaunch-attempt1
lizzie/unaligned-attempt-2
lizzie/usepoolinstdynarm
lizzie/vk-ext-fault-info
lizzie/vkweep12
lizzie/vp9-remove-stream
lizzie/wstring-uni-123
lizzie/xcode-evil-shit-123
lizzie/zbic-patch-zstd
lsfg-android
macroify-surface-stuffs
master
memory_changes
mmap-fixews
mutliplayer-filter-better1
n64
pr-template-v2
querybugfix
release/0.0.3
release/0.0.4
release/0.1.0
release/0.2.0
restore-metal-surface
sjkdbsdfjkbsdf-2834
temporary-branch
tiled-gpu
tiled-gpu-v2
totk_darksquare_fix
unified-memory-access
update-deps-1780370490
update-deps-1780370770
update-translations-1777730513
update-translations-1788192077
update-translations-1792425684
vk-experiments5
vk-experiments7
vk-experiments8
xbzk/conditional-phi-inputs
xbzk/fragmented-storage-buffers
xbzk/handle-duplicate-nce-interrupts
xbzk/hb-tico-support-part-2
xbzk/keys-needed-error-log
xbzk/opus-proper-limit-and-error
xbzk/pavel-zbic-addendum
xbzk/readback-for-nce-invalidation-optimization
xbzk/unreachable-unknown-format-255-fix
xbzk/unreal-unsafe-junk-guards
xcz-nsz-block-support
0.0.0
0.0.1-pre-alpha
0.0.2-pre-alpha
test-tag1
test-tag2
v0.0.3
v0.0.3-rc1
v0.0.3-rc2
v0.0.3-rc3
v0.0.3.git
v0.0.4
v0.0.4-rc1
v0.0.4-rc2
v0.0.4-rc2.test
v0.0.4-rc2.test2
v0.0.4-rc3
v0.0.4-rc3.test1
v0.0.4-rc3.test2
v0.0.4.test
v0.1.0
v0.1.0-rc1
v0.1.1
v0.2.0
v0.2.0-rc1
v0.2.0-rc2
v0.2.1
${ noResults }
Uses arithmetic that can be identified more trivially by compilers for
optimizations. e.g. Rather than shifting the halves of the value and
then swapping and combining them, we can swap them in place.
e.g. for the original swap32 code on x86-64, clang 8.0 would generate:
mov ecx, edi
rol cx, 8
shl ecx, 16
shr edi, 16
rol di, 8
movzx eax, di
or eax, ecx
ret
while GCC 8.3 would generate the ideal:
mov eax, edi
bswap eax
ret
now both generate the same optimal output.
MSVC used to generate the following with the old code:
mov eax, ecx
rol cx, 8
shr eax, 16
rol ax, 8
movzx ecx, cx
movzx eax, ax
shl ecx, 16
or eax, ecx
ret 0
Now MSVC also generates a similar, but equally optimal result as clang/GCC:
bswap ecx
mov eax, ecx
ret 0
====
In the swap64 case, for the original code, clang 8.0 would generate:
mov eax, edi
bswap eax
shl rax, 32
shr rdi, 32
bswap edi
or rax, rdi
ret
(almost there, but still missing the mark)
while, again, GCC 8.3 would generate the more ideal:
mov rax, rdi
bswap rax
ret
now clang also generates the optimal sequence for this fallback as well.
This is a case where MSVC unfortunately falls short, despite the new
code, this one still generates a doozy of an output.
mov r8, rcx
mov r9, rcx
mov rax, 71776119061217280
mov rdx, r8
and r9, rax
and edx, 65280
mov rax, rcx
shr rax, 16
or r9, rax
mov rax, rcx
shr r9, 16
mov rcx, 280375465082880
and rax, rcx
mov rcx, 1095216660480
or r9, rax
mov rax, r8
and rax, rcx
shr r9, 16
or r9, rax
mov rcx, r8
mov rax, r8
shr r9, 8
shl rax, 16
and ecx, 16711680
or rdx, rax
mov eax, -16777216
and rax, r8
shl rdx, 16
or rdx, rcx
shl rdx, 16
or rax, rdx
shl rax, 8
or rax, r9
ret 0
which is pretty unfortunate.
|
8 years ago | |
|---|---|---|
| .. | ||
| README.md | Add submodules | 8 years ago |
| json.hpp | Add submodules | 8 years ago |
README.md
JSON for Modern C++
v3.1.2
This is a mirror providing the single required header file.
The original repository can be found at:
d2dd27dc3b