summaryrefslogtreecommitdiff
path: root/src/upb_decoder_x86.dasc
diff options
context:
space:
mode:
authorJoshua Haberman <joshua@reverberate.org>2011-04-04 00:09:14 -0700
committerJoshua Haberman <joshua@reverberate.org>2011-04-04 00:09:14 -0700
commit066d1e024c27d8171667ed28ff209ec24e031aba (patch)
treea51a00ac902b8c2ae40af5a4bb4e16067d3ec729 /src/upb_decoder_x86.dasc
parentd6cebc329bf849f527f8a46d75799222f05d852d (diff)
Speed up parsetostruct by using type-specialized callbacks.
Diffstat (limited to 'src/upb_decoder_x86.dasc')
-rw-r--r--src/upb_decoder_x86.dasc6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/upb_decoder_x86.dasc b/src/upb_decoder_x86.dasc
index ecd9899..5e85bd9 100644
--- a/src/upb_decoder_x86.dasc
+++ b/src/upb_decoder_x86.dasc
@@ -188,9 +188,11 @@ void __attribute__((noinline)) __jit_debug_register_code() { __asm__ __volatile_
|// TODO: optimize for 0 (xor) and 32-bits.
|.macro loadfval, f
|| if (f->fval.val.uint64 == 0) {
-| xor ARG2_32, ARG2_32
+| xor ARG2_32, ARG2_32
+|| } else if (f->fval.val.uint64 < 0xffffffff) {
+| mov ARG2_32, f->fval.val.uint64
|| } else {
-| mov ARG2_64, f->fval.val.uint64
+| mov64 ARG2_64, f->fval.val.uint64
|| }
|.endmacro
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback