Chromium Code Reviews| Index: src/IceAssemblerARM32.cpp |
| diff --git a/src/IceAssemblerARM32.cpp b/src/IceAssemblerARM32.cpp |
| index a260a1e85d68a6fd7e544410517823a0fc635f65..325859d575d7a28919d6e915a70b83debc0bf612 100644 |
| --- a/src/IceAssemblerARM32.cpp |
| +++ b/src/IceAssemblerARM32.cpp |
| @@ -2071,34 +2071,64 @@ void AssemblerARM32::vaddd(const Operand *OpDd, const Operand *OpDn, |
| emitVFPddd(Cond, VadddOpcode, Dd, Dn, Dm); |
| } |
| +void AssemblerARM32::vdivs(const Operand *OpSd, const Operand *OpSn, |
| + const Operand *OpSm, CondARM32::Cond Cond) { |
| + // VDIV (floating-point) - ARM section A8.8.283, encoding A2: |
| + // vdiv<c>.f32 <Sd>, <Sn>, <Sm> |
| + // |
| + // cccc11101D00nnnndddd101sN0M0mmmm where cccc=Cond, s=0, ddddD=Rd, nnnnN=Rn, |
| + // and mmmmM=Rm. |
| + constexpr const char *Vdivs = "vdivs"; |
| + IValueT Sd = encodeSRegister(OpSd, "Sd", Vdivs); |
| + IValueT Sn = encodeSRegister(OpSn, "Sn", Vdivs); |
| + IValueT Sm = encodeSRegister(OpSm, "Sm", Vdivs); |
| + constexpr IValueT VdivsOpcode = B23; |
| + emitVFPsss(Cond, VdivsOpcode, Sd, Sn, Sm); |
| +} |
| + |
| +void AssemblerARM32::vdivd(const Operand *OpDd, const Operand *OpDn, |
| + const Operand *OpDm, CondARM32::Cond Cond) { |
| + // VDIV (floating-point) - ARM section A8.8.283, encoding A2: |
| + // vdiv<c>.f64 <Dd>, <Dn>, <Dm> |
| + // |
| + // cccc11101D00nnnndddd101sN0M0mmmm where cccc=Cond, s=1, Ddddd=Rd, Nnnnn=Rn, |
| + // and Mmmmm=Rm. |
| + constexpr const char *Vdivd = "vdivd"; |
| + IValueT Dd = encodeDRegister(OpDd, "Dd", Vdivd); |
| + IValueT Dn = encodeDRegister(OpDn, "Dn", Vdivd); |
| + IValueT Dm = encodeDRegister(OpDm, "Dm", Vdivd); |
| + constexpr IValueT VdivdOpcode = B23; |
| + emitVFPddd(Cond, VdivdOpcode, Dd, Dn, Dm); |
| +} |
| + |
| void AssemblerARM32::vsubs(const Operand *OpSd, const Operand *OpSn, |
| const Operand *OpSm, CondARM32::Cond Cond) { |
| // VSUB (floating-point) - ARM section A8.8.415, encoding A2: |
| // vsub<c>.f32 <Sd>, <Sn>, <Sm> |
| // |
| - // cccc11100D11nnnndddd101sN1M0mmmm where cccc=Cond, s=0, ddddD=Rd, nnnnN=Rn, |
| + // cccc11100D11nnnndddd101sN1M0mmmm where cccc=Cond, s=0, ddddD=Rd, nnnnN=Rn, |
|
Jim Stichnoth
2016/01/07 20:50:31
Why the extra space character here?
Karl
2016/01/07 21:37:59
Slow stutter I guess. Removed.
|
| // and mmmmM=Rm. |
| - constexpr const char *Vadds = "vsubs"; |
| - IValueT Sd = encodeSRegister(OpSd, "Sd", Vadds); |
| - IValueT Sn = encodeSRegister(OpSn, "Sn", Vadds); |
| - IValueT Sm = encodeSRegister(OpSm, "Sm", Vadds); |
| - constexpr IValueT VaddsOpcode = B21 | B20 | B6; |
| - emitVFPsss(Cond, VaddsOpcode, Sd, Sn, Sm); |
| + constexpr const char *Vsubs = "vsubs"; |
| + IValueT Sd = encodeSRegister(OpSd, "Sd", Vsubs); |
| + IValueT Sn = encodeSRegister(OpSn, "Sn", Vsubs); |
| + IValueT Sm = encodeSRegister(OpSm, "Sm", Vsubs); |
| + constexpr IValueT VsubsOpcode = B21 | B20 | B6; |
| + emitVFPsss(Cond, VsubsOpcode, Sd, Sn, Sm); |
| } |
| void AssemblerARM32::vsubd(const Operand *OpDd, const Operand *OpDn, |
| const Operand *OpDm, CondARM32::Cond Cond) { |
| // VSUB (floating-point) - ARM section A8.8.415, encoding A2: |
| - // vadd<c>.f64 <Dd>, <Dn>, <Dm> |
| + // vsub<c>.f64 <Dd>, <Dn>, <Dm> |
| // |
| // cccc11100D11nnnndddd101sN1M0mmmm where cccc=Cond, s=1, Ddddd=Rd, Nnnnn=Rn, |
| // and Mmmmm=Rm. |
| - constexpr const char *Vaddd = "vsubd"; |
| - IValueT Dd = encodeDRegister(OpDd, "Dd", Vaddd); |
| - IValueT Dn = encodeDRegister(OpDn, "Dn", Vaddd); |
| - IValueT Dm = encodeDRegister(OpDm, "Dm", Vaddd); |
| - constexpr IValueT VadddOpcode = B21 | B20 | B6; |
| - emitVFPddd(Cond, VadddOpcode, Dd, Dn, Dm); |
| + constexpr const char *Vsubd = "vsubd"; |
| + IValueT Dd = encodeDRegister(OpDd, "Dd", Vsubd); |
| + IValueT Dn = encodeDRegister(OpDn, "Dn", Vsubd); |
| + IValueT Dm = encodeDRegister(OpDm, "Dm", Vsubd); |
| + constexpr IValueT VsubdOpcode = B21 | B20 | B6; |
| + emitVFPddd(Cond, VsubdOpcode, Dd, Dn, Dm); |
| } |
| void AssemblerARM32::emitVStackOp(CondARM32::Cond Cond, IValueT Opcode, |