-
Notifications
You must be signed in to change notification settings - Fork 5
Open
Labels
optimizationsRelated to circIR optimizationsRelated to circIR optimizationswipCurrently being worked onCurrently being worked on
Description
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.

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.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
optimizationsRelated to circIR optimizationsRelated to circIR optimizationswipCurrently being worked onCurrently being worked on