Merge pull request #2599 from Sonicadvance1/andn_usage

OpcodeDispatcher: Move usages of `And(Not(` to Andn
This commit is contained in:
Mai authored and GitHub committed 2023-04-11 19:53:44 -04:00
commit f55a653e99
1 file changed
+2 -2
@@ -77,7 +77,7 @@ void OpDispatchBuilder::SHA1RNDS4Op(OpcodeArgs) {
using FnType = OrderedNode* (*)(OpDispatchBuilder&, OrderedNode*, OrderedNode*, OrderedNode*);
const auto f0 = [](OpDispatchBuilder &Self, OrderedNode *B, OrderedNode *C, OrderedNode *D) -> OrderedNode* {
return Self._Xor(Self._And(B, C), Self._And(Self._Not(B), D));
return Self._Xor(Self._And(B, C), Self._Andn(D, B));
};
const auto f1 = [](OpDispatchBuilder &Self, OrderedNode *B, OrderedNode *C, OrderedNode *D) -> OrderedNode* {
return Self._Xor(Self._Xor(B, C), D);
@@ -204,7 +204,7 @@ void OpDispatchBuilder::SHA256MSG2Op(OpcodeArgs) {
void OpDispatchBuilder::SHA256RNDS2Op(OpcodeArgs) {
const auto Ch = [this](OrderedNode *E, OrderedNode *F, OrderedNode *G) -> OrderedNode* {
return _Xor(_And(E, F), _And(_Not(E), G));
return _Xor(_And(E, F), _Andn(G, E));
};
const auto Major = [this](OrderedNode *A, OrderedNode *B, OrderedNode *C) -> OrderedNode* {
return _Xor(_Xor(_And(A, B), _And(A, C)), _And(B, C));