From 41eee37bc153a68b0f0c46162e21f825d1784499 Mon Sep 17 00:00:00 2001 From: "Alon Zakai (kripken)" Date: Sat, 11 Feb 2017 13:09:04 -0800 Subject: optimize sign-extends to ne --- src/passes/OptimizeInstructions.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/passes/OptimizeInstructions.cpp b/src/passes/OptimizeInstructions.cpp index bb4748a97..ef18ea777 100644 --- a/src/passes/OptimizeInstructions.cpp +++ b/src/passes/OptimizeInstructions.cpp @@ -364,7 +364,7 @@ struct OptimizeInstructions : public WalkerPassop == EqInt32) { + } else if (binary->op == EqInt32 || binary->op == NeInt32) { if (auto* c = binary->right->dynCast()) { if (auto* ext = getSignExt(binary->left)) { // we are comparing a sign extend to a constant, which means we can use a cheaper zext @@ -374,7 +374,7 @@ struct OptimizeInstructions : public WalkerPassvalue = c->value.and_(Literal(lowBitMask(bits))); return binary; } - if (c->value.geti32() == 0) { + if (binary->op == EqInt32 && c->value.geti32() == 0) { // equal 0 => eqz return Builder(*getModule()).makeUnary(EqZInt32, binary->left); } -- cgit v1.2.3