Index: src/IceAssemblerARM32.h |
diff --git a/src/IceAssemblerARM32.h b/src/IceAssemblerARM32.h |
index 874d8ec926c53c476eb452082763290cf67ee727..e11b6c97664fadda5cbf83471c98420a79844d17 100644 |
--- a/src/IceAssemblerARM32.h |
+++ b/src/IceAssemblerARM32.h |
@@ -318,6 +318,12 @@ public: |
// Implements uxtb/uxth depending on type of OpSrc0. |
void uxt(const Operand *OpRd, const Operand *OpSrc0, CondARM32::Cond Cond); |
+ void vaddd(const Operand *OpDd, const Operand *OpDn, const Operand *OpDm, |
+ CondARM32::Cond Cond); |
+ |
+ void vadds(const Operand *OpSd, const Operand *OpSn, const Operand *OpSm, |
+ CondARM32::Cond Cond); |
+ |
void vpop(const Variable *OpBaseReg, SizeT NumConsecRegs, |
CondARM32::Cond Cond); |
@@ -383,16 +389,14 @@ private: |
IValueT OpRn, const Operand *OpSrc1, bool SetFlags, |
EmitChecks RuleChecks, const char *InstName); |
- void emitType05(CondARM32::Cond Cond, int32_t Offset, bool Link, |
- const char *InstName); |
+ void emitType05(CondARM32::Cond Cond, int32_t Offset, bool Link); |
// Emit ccccoooaabalnnnnttttaaaaaaaaaaaa where cccc=Cond, |
// ooo=InstType, l=isLoad, b=isByte, and |
// aaa0a0aaaa0000aaaaaaaaaaaa=Address. Note that Address is assumed to be |
// defined by decodeAddress() in IceAssemblerARM32.cpp. |
void emitMemOp(CondARM32::Cond Cond, IValueT InstType, bool IsLoad, |
- bool IsByte, IValueT Rt, IValueT Address, |
- const char *InstName); |
+ bool IsByte, IValueT Rt, IValueT Address); |
// Emit ccccxxxxxxxxxxxxddddxxxxxxxxmmmm where cccc=Cond, |
// xxxxxxxxxxxx0000xxxxxxxx0000=Opcode, dddd=Rd, and mmmm=Rm. |
@@ -419,24 +423,22 @@ private: |
// aaaa<<21=AddressMode, l=IsLoad, nnnn=BaseReg, and |
// rrrrrrrrrrrrrrrr is bitset of Registers. |
void emitMultiMemOp(CondARM32::Cond Cond, BlockAddressMode AddressMode, |
- bool IsLoad, IValueT BaseReg, IValueT Registers, |
- const char *InstName); |
+ bool IsLoad, IValueT BaseReg, IValueT Registers); |
// Pattern ccccxxxxxDxxxxxxddddxxxxiiiiiiii where cccc=Cond, ddddD=BaseReg, |
// iiiiiiii=NumConsecRegs, and xxxxx0xxxxxx0000xxxx00000000=Opcode. |
void emitVStackOp(CondARM32::Cond Cond, IValueT Opcode, |
- const Variable *OpBaseReg, SizeT NumConsecRegs, |
- const char *InstName); |
+ const Variable *OpBaseReg, SizeT NumConsecRegs); |
// Pattern cccc011100x1dddd1111mmmm0001nnn where cccc=Cond, |
// x=Opcode, dddd=Rd, nnnn=Rn, mmmm=Rm. |
void emitDivOp(CondARM32::Cond Cond, IValueT Opcode, IValueT Rd, IValueT Rn, |
- IValueT Rm, const char *InstName); |
+ IValueT Rm); |
// Pattern ccccxxxxxxxfnnnnddddssss1001mmmm where cccc=Cond, dddd=Rd, nnnn=Rn, |
// mmmm=Rm, ssss=Rs, f=SetFlags and xxxxxxx=Opcode. |
void emitMulOp(CondARM32::Cond Cond, IValueT Opcode, IValueT Rd, IValueT Rn, |
- IValueT Rm, IValueT Rs, bool SetFlags, const char *InstName); |
+ IValueT Rm, IValueT Rs, bool SetFlags); |
// Pattern cccc0001101s0000ddddxxxxxtt0mmmm where cccc=Cond, s=SetFlags, |
// dddd=Rd, mmmm=Rm, tt=Shift, and xxxxx is defined by OpSrc1. OpSrc1 defines |
@@ -471,6 +473,14 @@ private: |
// iiiiiiiiiiiiiiii=Imm16. |
void emitMovwt(CondARM32::Cond Cond, bool IsMovw, const Operand *OpRd, |
const Operand *OpSrc, const char *MovName); |
+ |
+ // Emit VFP instruction with 3 D registers. |
+ void emitVFPddd(CondARM32::Cond Cond, IValueT Opcode, IValueT Dd, IValueT Dn, |
+ IValueT Dm); |
+ |
+ // Emit VFP instruction with 3 S registers. |
+ void emitVFPsss(CondARM32::Cond Cond, IValueT Opcode, IValueT Sd, IValueT Sn, |
+ IValueT Sm); |
}; |
} // end of namespace ARM32 |