John Keiser

Results 256 comments of John Keiser

@lemire I made some more variants [in this Godbolt](https://godbolt.org/z/bvj48cjfb). Just based on manual inspection of the assembly, if I had to choose a `subtract_borrow` implementation, I would choose the clang...

Added some comments in the assembly for easier following. Bottom line on Ice Lake, once you use `bool` overflow: 1. `value1 - value2 - borrow; overflow = result >= value1`...

On ARM, it looks like `__builtin_usubll_overflow(value1, value2 + borrow)` is the winner, with `__builtin_subcll` once again producing more instructions, and the manual version producing a *lot* more instructions.

And on GCC 13.2 Intel, everything pretty much looks the same as each other. `_subborrow_u64(0, value1, value2 + borrow)` wins by not producing an extra AND. `_subborrow_u64(borrow, value1, value2)` loses...

Changing `subtract_borrow` to the manual version on Ice Lake brings stage 1 down from 93.2353 -> 93.0503 instructions/block and 28.4788 -> 27.7167 cycles/block, a nearly 3% speed improvement. I'll see...

@patrick-wright making sure I understand this: the issue is that `vagrant up` will re-run chef-client on the box?

Hmm, can you try something for me? Also add :vagrant_options => { 'vm.windows' > true } If that works, please leave this open. We'll figure something out but it will...

What incantation would you normally use? Pretty much any image spec should work here.

Sounds great!