1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
2 * vim: set ts=8 sts=4 et sw=4 tw=99:
3 * This Source Code Form is subject to the terms of the Mozilla Public
4 * License, v. 2.0. If a copy of the MPL was not distributed with this
5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6
7 #ifndef jit_x64_MacroAssembler_x64_inl_h
8 #define jit_x64_MacroAssembler_x64_inl_h
9
10 #include "jit/x64/MacroAssembler-x64.h"
11
12 #include "jit/x86-shared/MacroAssembler-x86-shared-inl.h"
13
14 namespace js {
15 namespace jit {
16
17 //{{{ check_macroassembler_style
18 // ===============================================================
19
20 void
andPtr(Register src,Register dest)21 MacroAssembler::andPtr(Register src, Register dest)
22 {
23 andq(src, dest);
24 }
25
26 void
andPtr(Imm32 imm,Register dest)27 MacroAssembler::andPtr(Imm32 imm, Register dest)
28 {
29 andq(imm, dest);
30 }
31
32 void
and64(Imm64 imm,Register64 dest)33 MacroAssembler::and64(Imm64 imm, Register64 dest)
34 {
35 movq(ImmWord(uintptr_t(imm.value)), ScratchReg);
36 andq(ScratchReg, dest.reg);
37 }
38
39 void
orPtr(Register src,Register dest)40 MacroAssembler::orPtr(Register src, Register dest)
41 {
42 orq(src, dest);
43 }
44
45 void
orPtr(Imm32 imm,Register dest)46 MacroAssembler::orPtr(Imm32 imm, Register dest)
47 {
48 orq(imm, dest);
49 }
50
51 void
or64(Register64 src,Register64 dest)52 MacroAssembler::or64(Register64 src, Register64 dest)
53 {
54 orq(src.reg, dest.reg);
55 }
56
57 void
xor64(Register64 src,Register64 dest)58 MacroAssembler::xor64(Register64 src, Register64 dest)
59 {
60 xorq(src.reg, dest.reg);
61 }
62
63 void
xorPtr(Register src,Register dest)64 MacroAssembler::xorPtr(Register src, Register dest)
65 {
66 xorq(src, dest);
67 }
68
69 void
xorPtr(Imm32 imm,Register dest)70 MacroAssembler::xorPtr(Imm32 imm, Register dest)
71 {
72 xorq(imm, dest);
73 }
74
75 // ===============================================================
76 // Arithmetic functions
77
78 void
add64(Register64 src,Register64 dest)79 MacroAssembler::add64(Register64 src, Register64 dest)
80 {
81 addq(src.reg, dest.reg);
82 }
83
84 // ===============================================================
85 // Shift functions
86
87 void
lshiftPtr(Imm32 imm,Register dest)88 MacroAssembler::lshiftPtr(Imm32 imm, Register dest)
89 {
90 shlq(imm, dest);
91 }
92
93 void
lshift64(Imm32 imm,Register64 dest)94 MacroAssembler::lshift64(Imm32 imm, Register64 dest)
95 {
96 shlq(imm, dest.reg);
97 }
98
99 void
rshiftPtr(Imm32 imm,Register dest)100 MacroAssembler::rshiftPtr(Imm32 imm, Register dest)
101 {
102 shrq(imm, dest);
103 }
104
105 void
rshiftPtrArithmetic(Imm32 imm,Register dest)106 MacroAssembler::rshiftPtrArithmetic(Imm32 imm, Register dest)
107 {
108 sarq(imm, dest);
109 }
110
111 void
rshift64(Imm32 imm,Register64 dest)112 MacroAssembler::rshift64(Imm32 imm, Register64 dest)
113 {
114 shrq(imm, dest.reg);
115 }
116
117 //}}} check_macroassembler_style
118 // ===============================================================
119
120 } // namespace jit
121 } // namespace js
122
123 #endif /* jit_x64_MacroAssembler_x64_inl_h */
124