circuitous icon indicating copy to clipboard operation
circuitous copied to clipboard

Optimization 8bit flag calculation

Open sabastiaan opened this issue 2 years ago • 0 comments

For 8-bit instructions that touch flags like add al, al / 00 c0 we currently have 4 separate OR checks to check if the 3rd bit of a value is 1. This on both x86 and amd64. or-opt2

We can optimize this in two ways, we can: extract the 3rd bit of advice and check if that bit set is set through and 1

Or we can optimize the entire select away: Currently the select represents if( advice_3rd_bit_is_set) return 0b1000 else return 0 Notice that this is equivalent to:

advice_third_bit = extract(advice, 3,2)
XOR(advice_third_bit, 1) << 1 

Leaving us with only XOR << and extract which all should be free on a circuit level I believe.

sabastiaan avatar Jul 11 '22 13:07 sabastiaan