aboutsummaryrefslogtreecommitdiffstats
path: root/qv4isel_masm.cpp
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@digia.com>2012-12-04 20:59:13 +0100
committerLars Knoll <lars.knoll@digia.com>2012-12-04 23:09:21 +0100
commit51c0e3da8fd64a1b4b8a42c5dac61ecff4a8f9ae (patch)
tree61d77ebb53a643f7d68fb3c9f5dd7b16adee4bf7 /qv4isel_masm.cpp
parent008e910249fa144408dc0d934e6c274269898b91 (diff)
[masm] Implement and/or and xor inline
Change-Id: I1e2703eaf1f8d4f5397690380ab6a76859ee1720 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Diffstat (limited to 'qv4isel_masm.cpp')
-rw-r--r--qv4isel_masm.cpp43
1 files changed, 40 insertions, 3 deletions
diff --git a/qv4isel_masm.cpp b/qv4isel_masm.cpp
index 2cf0a747a8..4b1248c247 100644
--- a/qv4isel_masm.cpp
+++ b/qv4isel_masm.cpp
@@ -125,6 +125,43 @@ static JSC::MacroAssembler::Jump masm_shr32(JSC::MacroAssembler* assembler, JSC:
return JSC::MacroAssembler::Jump();
}
+static JSC::MacroAssembler::Jump masm_and32(JSC::MacroAssembler* assembler, JSC::MacroAssembler::Address addr, JSC::MacroAssembler::RegisterID reg)
+{
+ assembler->and32(addr, reg);
+ return JSC::MacroAssembler::Jump();
+}
+
+static JSC::MacroAssembler::Jump masm_and32(JSC::MacroAssembler* assembler, JSC::MacroAssembler::TrustedImm32 imm, JSC::MacroAssembler::RegisterID reg)
+{
+ assembler->and32(imm, reg);
+ return JSC::MacroAssembler::Jump();
+}
+
+static JSC::MacroAssembler::Jump masm_or32(JSC::MacroAssembler* assembler, JSC::MacroAssembler::Address addr, JSC::MacroAssembler::RegisterID reg)
+{
+ assembler->or32(addr, reg);
+ return JSC::MacroAssembler::Jump();
+}
+
+static JSC::MacroAssembler::Jump masm_or32(JSC::MacroAssembler* assembler, JSC::MacroAssembler::TrustedImm32 imm, JSC::MacroAssembler::RegisterID reg)
+{
+ assembler->or32(imm, reg);
+ return JSC::MacroAssembler::Jump();
+}
+
+static JSC::MacroAssembler::Jump masm_xor32(JSC::MacroAssembler* assembler, JSC::MacroAssembler::Address addr, JSC::MacroAssembler::RegisterID reg)
+{
+ assembler->xor32(addr, reg);
+ return JSC::MacroAssembler::Jump();
+}
+
+static JSC::MacroAssembler::Jump masm_xor32(JSC::MacroAssembler* assembler, JSC::MacroAssembler::TrustedImm32 imm, JSC::MacroAssembler::RegisterID reg)
+{
+ assembler->xor32(imm, reg);
+ return JSC::MacroAssembler::Jump();
+}
+
+
#define OP(op) \
{ isel_stringIfy(op), op, 0, 0 }
@@ -147,9 +184,9 @@ static const struct BinaryOperationInfo {
NULL_OP, // OpUPlus
NULL_OP, // OpCompl
- OP(__qmljs_bit_and), // OpBitAnd
- OP(__qmljs_bit_or), // OpBitOr
- OP(__qmljs_bit_xor), // OpBitXor
+ INLINE_OP(__qmljs_bit_and, &masm_and32, &masm_and32), // OpBitAnd
+ INLINE_OP(__qmljs_bit_or, &masm_or32, &masm_or32), // OpBitOr
+ INLINE_OP(__qmljs_bit_xor, &masm_xor32, &masm_xor32), // OpBitXor
INLINE_OP(__qmljs_add, &masm_add32, &masm_add32), // OpAdd
INLINE_OP(__qmljs_sub, &masm_sub32, &masm_sub32), // OpSub