Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(26)

Unified Diff: src/assembler_ia32.h

Issue 624263002: emitIAS for icmp, and test, movss-reg, movq, movups, storep, storeq, tighten some of the Xmm ops (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: stuff Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: src/assembler_ia32.h
diff --git a/src/assembler_ia32.h b/src/assembler_ia32.h
index 9ceab2530c8244acba6efd27a030d78d5742d16e..fe031345b02422ebb38de8e8d3045bdf2d230d8c 100644
--- a/src/assembler_ia32.h
+++ b/src/assembler_ia32.h
@@ -361,16 +361,31 @@ public:
// In practice, we always normalize the Dest to a Register first.
};
+ typedef void (AssemblerX86::*TypedEmitAddrGPR)(Type, const Address &,
+ GPRRegister);
+ typedef void (AssemblerX86::*TypedEmitAddrImm)(Type, const Address &,
+ const Immediate &);
+ struct GPREmitterAddrOp {
+ TypedEmitAddrGPR AddrGPR;
+ TypedEmitAddrImm AddrImm;
+ };
+
// Operations to emit XMM instructions (and dispatch on operand type).
typedef void (AssemblerX86::*TypedEmitXmmXmm)(Type, XmmRegister, XmmRegister);
typedef void (AssemblerX86::*TypedEmitXmmAddr)(Type, XmmRegister,
const Address &);
- typedef void (AssemblerX86::*TypedEmitAddrXmm)(Type, const Address &,
- XmmRegister);
- struct XmmEmitterTwoOps {
+ struct XmmEmitterRegOp {
TypedEmitXmmXmm XmmXmm;
TypedEmitXmmAddr XmmAddr;
- TypedEmitAddrXmm AddrXmm;
+ };
+
+ typedef void (AssemblerX86::*EmitXmmXmm)(XmmRegister, XmmRegister);
+ typedef void (AssemblerX86::*EmitXmmAddr)(XmmRegister, const Address &);
+ typedef void (AssemblerX86::*EmitAddrXmm)(const Address &, XmmRegister);
+ struct XmmEmitterMovOps {
+ EmitXmmXmm XmmXmm;
+ EmitXmmAddr XmmAddr;
+ EmitAddrXmm AddrXmm;
};
typedef void (AssemblerX86::*TypedEmitXmmImm)(Type, XmmRegister,
@@ -442,6 +457,7 @@ public:
void movd(GPRRegister dst, XmmRegister src);
void movd(const Address &dst, XmmRegister src);
+ void movq(XmmRegister dst, XmmRegister src);
void movq(const Address &dst, XmmRegister src);
void movq(XmmRegister dst, const Address &src);
@@ -460,6 +476,7 @@ public:
void movaps(XmmRegister dst, XmmRegister src);
+ void movups(XmmRegister dst, XmmRegister src);
void movups(XmmRegister dst, const Address &src);
void movups(const Address &dst, XmmRegister src);
@@ -591,15 +608,16 @@ public:
void fincstp();
- void cmpl(GPRRegister reg, const Immediate &imm);
- void cmpl(GPRRegister reg0, GPRRegister reg1);
- void cmpl(GPRRegister reg, const Address &address);
- void cmpl(const Address &address, GPRRegister reg);
- void cmpl(const Address &address, const Immediate &imm);
- void cmpb(const Address &address, const Immediate &imm);
+ void cmp(Type Ty, GPRRegister reg0, GPRRegister reg1);
+ void cmp(Type Ty, GPRRegister reg, const Address &address);
+ void cmp(Type Ty, GPRRegister reg, const Immediate &imm);
+ void cmp(Type Ty, const Address &address, GPRRegister reg);
+ void cmp(Type Ty, const Address &address, const Immediate &imm);
- void testl(GPRRegister reg1, GPRRegister reg2);
- void testl(GPRRegister reg, const Immediate &imm);
+ void test(Type Ty, GPRRegister reg0, GPRRegister reg1);
+ void test(Type Ty, GPRRegister reg, const Immediate &imm);
+ void test(Type Ty, const Address &address, GPRRegister reg);
+ void test(Type Ty, const Address &address, const Immediate &imm);
void And(Type Ty, GPRRegister dst, GPRRegister src);
void And(Type Ty, GPRRegister dst, const Address &address);
@@ -698,6 +716,7 @@ public:
void nop(int size = 1);
void int3();
void hlt();
+ void ud2();
void j(CondX86::BrCond condition, Label *label, bool near = kFarJump);
void j(CondX86::BrCond condition, const ConstantRelocatable *label);

Powered by Google App Engine
This is Rietveld 408576698