Chromium Code Reviews| Index: src/IceInstARM32.cpp |
| diff --git a/src/IceInstARM32.cpp b/src/IceInstARM32.cpp |
| index 23216a03455f0d5ef2bbf79e79b2e121ac57ce50..e8cbc7d1b9c987ed0a7ae23cbf6545162b9eeef6 100644 |
| --- a/src/IceInstARM32.cpp |
| +++ b/src/IceInstARM32.cpp |
| @@ -633,10 +633,10 @@ template <> void InstARM32Vadd::emitIAS(const Cfg *Func) const { |
| Asm->vaddqf(Dest, getSrc(0), getSrc(1)); |
| break; |
| case IceType_f32: |
| - Asm->vadds(getDest(), getSrc(0), getSrc(1), CondARM32::AL); |
| + Asm->vadds(Dest, getSrc(0), getSrc(1), CondARM32::AL); |
| break; |
| case IceType_f64: |
| - Asm->vaddd(getDest(), getSrc(0), getSrc(1), CondARM32::AL); |
| + Asm->vaddd(Dest, getSrc(0), getSrc(1), CondARM32::AL); |
| break; |
| } |
| assert(!Asm->needsTextFixup()); |
| @@ -644,7 +644,32 @@ template <> void InstARM32Vadd::emitIAS(const Cfg *Func) const { |
| template <> void InstARM32Vand::emitIAS(const Cfg *Func) const { |
| // TODO(kschimpf): add support for these instructions |
| - emitUsingTextFixup(Func); |
| + auto *Asm = Func->getAssembler<ARM32::AssemblerARM32>(); |
| + const Variable *Dest = getDest(); |
| + Type DestTy = Dest->getType(); |
|
Jim Stichnoth
2016/02/02 18:46:44
const
or just use "switch (Dest->getType())" like
Karl
2016/02/02 19:25:37
Done.
|
| + switch (DestTy) { |
| + case IceType_void: |
|
John
2016/02/02 18:46:28
defaut:?
Karl
2016/02/02 19:25:37
Done.
|
| + case IceType_i1: |
| + case IceType_i8: |
| + case IceType_i16: |
| + case IceType_i32: |
| + case IceType_i64: |
| + case IceType_f32: |
| + case IceType_f64: |
| + case IceType_v4f32: |
| + case IceType_NUM: |
| + llvm::report_fatal_error("Vand not defined on type " + |
| + std::string(typeString(DestTy))); |
|
Jim Stichnoth
2016/02/02 18:46:44
You're getting enough instances of std::string(typ
Karl
2016/02/02 19:25:37
Done.
|
| + return; |
| + case IceType_v4i1: |
| + case IceType_v8i1: |
| + case IceType_v16i1: |
| + case IceType_v16i8: |
| + case IceType_v8i16: |
| + case IceType_v4i32: |
| + Asm->vandq(Dest, getSrc(0), getSrc(1)); |
| + } |
| + assert(!Asm->needsTextFixup()); |
| } |
| template <> void InstARM32Vdiv::emitIAS(const Cfg *Func) const { |