From b19f804ed554992a358a80012df66048bebb829b Mon Sep 17 00:00:00 2001 From: Andrew Brown Date: Wed, 2 Oct 2019 14:02:58 -0700 Subject: [PATCH] Convert WASM logical operators to CLIF --- cranelift/wasm/src/code_translator.rs | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/cranelift/wasm/src/code_translator.rs b/cranelift/wasm/src/code_translator.rs index 4b6eb8ed32..a6aa6a32d1 100644 --- a/cranelift/wasm/src/code_translator.rs +++ b/cranelift/wasm/src/code_translator.rs @@ -1083,6 +1083,22 @@ pub fn translate_operator( let (a, b) = state.pop2(); state.push1(builder.ins().imul(a, b)) } + Operator::V128Not => { + let a = state.pop1(); + state.push1(builder.ins().bnot(a)); + } + Operator::V128And => { + let (a, b) = state.pop2(); + state.push1(builder.ins().band(a, b)); + } + Operator::V128Or => { + let (a, b) = state.pop2(); + state.push1(builder.ins().bor(a, b)); + } + Operator::V128Xor => { + let (a, b) = state.pop2(); + state.push1(builder.ins().bxor(a, b)); + } Operator::I8x16Eq | Operator::I8x16Ne | Operator::I8x16LtS @@ -1125,10 +1141,6 @@ pub fn translate_operator( | Operator::F64x2Gt | Operator::F64x2Le | Operator::F64x2Ge - | Operator::V128Not - | Operator::V128And - | Operator::V128Or - | Operator::V128Xor | Operator::V128Bitselect | Operator::I8x16AnyTrue | Operator::I8x16AllTrue