| OLD | NEW |
| 1 //===- subzero/src/IceInstARM32.cpp - ARM32 instruction implementation ----===// | 1 //===- subzero/src/IceInstARM32.cpp - ARM32 instruction implementation ----===// |
| 2 // | 2 // |
| 3 // The Subzero Code Generator | 3 // The Subzero Code Generator |
| 4 // | 4 // |
| 5 // This file is distributed under the University of Illinois Open Source | 5 // This file is distributed under the University of Illinois Open Source |
| 6 // License. See LICENSE.TXT for details. | 6 // License. See LICENSE.TXT for details. |
| 7 // | 7 // |
| 8 //===----------------------------------------------------------------------===// | 8 //===----------------------------------------------------------------------===// |
| 9 /// | 9 /// |
| 10 /// \file | 10 /// \file |
| (...skipping 686 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 697 case IceType_v8i1: | 697 case IceType_v8i1: |
| 698 case IceType_v16i1: | 698 case IceType_v16i1: |
| 699 case IceType_v16i8: | 699 case IceType_v16i8: |
| 700 case IceType_v8i16: | 700 case IceType_v8i16: |
| 701 case IceType_v4i32: | 701 case IceType_v4i32: |
| 702 Asm->vandq(Dest, getSrc(0), getSrc(1)); | 702 Asm->vandq(Dest, getSrc(0), getSrc(1)); |
| 703 } | 703 } |
| 704 assert(!Asm->needsTextFixup()); | 704 assert(!Asm->needsTextFixup()); |
| 705 } | 705 } |
| 706 | 706 |
| 707 template <> void InstARM32Vbsl::emitIAS(const Cfg *Func) const { |
| 708 auto *Asm = Func->getAssembler<ARM32::AssemblerARM32>(); |
| 709 const Variable *Dest = getDest(); |
| 710 switch (Dest->getType()) { |
| 711 default: |
| 712 llvm::report_fatal_error("Vbsl not defined on type " + |
| 713 typeStdString(Dest->getType())); |
| 714 case IceType_v4i1: |
| 715 case IceType_v8i1: |
| 716 case IceType_v16i1: |
| 717 case IceType_v16i8: |
| 718 case IceType_v8i16: |
| 719 case IceType_v4i32: |
| 720 Asm->vbslq(Dest, getSrc(0), getSrc(1)); |
| 721 } |
| 722 assert(!Asm->needsTextFixup()); |
| 723 } |
| 724 |
| 707 template <> void InstARM32Vdiv::emitIAS(const Cfg *Func) const { | 725 template <> void InstARM32Vdiv::emitIAS(const Cfg *Func) const { |
| 708 auto *Asm = Func->getAssembler<ARM32::AssemblerARM32>(); | 726 auto *Asm = Func->getAssembler<ARM32::AssemblerARM32>(); |
| 709 const Variable *Dest = getDest(); | 727 const Variable *Dest = getDest(); |
| 710 switch (Dest->getType()) { | 728 switch (Dest->getType()) { |
| 711 default: | 729 default: |
| 712 // TODO(kschimpf) Figure if more cases are needed. | 730 // TODO(kschimpf) Figure if more cases are needed. |
| 713 Asm->setNeedsTextFixup(); | 731 Asm->setNeedsTextFixup(); |
| 714 break; | 732 break; |
| 715 case IceType_f32: | 733 case IceType_f32: |
| 716 Asm->vdivs(getDest(), getSrc(0), getSrc(1), CondARM32::AL); | 734 Asm->vdivs(getDest(), getSrc(0), getSrc(1), CondARM32::AL); |
| (...skipping 772 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1489 template <> const char *InstARM32Orr::Opcode = "orr"; | 1507 template <> const char *InstARM32Orr::Opcode = "orr"; |
| 1490 template <> const char *InstARM32Rsb::Opcode = "rsb"; | 1508 template <> const char *InstARM32Rsb::Opcode = "rsb"; |
| 1491 template <> const char *InstARM32Rsc::Opcode = "rsc"; | 1509 template <> const char *InstARM32Rsc::Opcode = "rsc"; |
| 1492 template <> const char *InstARM32Sbc::Opcode = "sbc"; | 1510 template <> const char *InstARM32Sbc::Opcode = "sbc"; |
| 1493 template <> const char *InstARM32Sdiv::Opcode = "sdiv"; | 1511 template <> const char *InstARM32Sdiv::Opcode = "sdiv"; |
| 1494 template <> const char *InstARM32Sub::Opcode = "sub"; | 1512 template <> const char *InstARM32Sub::Opcode = "sub"; |
| 1495 template <> const char *InstARM32Udiv::Opcode = "udiv"; | 1513 template <> const char *InstARM32Udiv::Opcode = "udiv"; |
| 1496 // FP | 1514 // FP |
| 1497 template <> const char *InstARM32Vadd::Opcode = "vadd"; | 1515 template <> const char *InstARM32Vadd::Opcode = "vadd"; |
| 1498 template <> const char *InstARM32Vand::Opcode = "vand"; | 1516 template <> const char *InstARM32Vand::Opcode = "vand"; |
| 1517 template <> const char *InstARM32Vbsl::Opcode = "vbsl"; |
| 1499 template <> const char *InstARM32Vdiv::Opcode = "vdiv"; | 1518 template <> const char *InstARM32Vdiv::Opcode = "vdiv"; |
| 1500 template <> const char *InstARM32Veor::Opcode = "veor"; | 1519 template <> const char *InstARM32Veor::Opcode = "veor"; |
| 1501 template <> const char *InstARM32Vmla::Opcode = "vmla"; | 1520 template <> const char *InstARM32Vmla::Opcode = "vmla"; |
| 1502 template <> const char *InstARM32Vmls::Opcode = "vmls"; | 1521 template <> const char *InstARM32Vmls::Opcode = "vmls"; |
| 1503 template <> const char *InstARM32Vmul::Opcode = "vmul"; | 1522 template <> const char *InstARM32Vmul::Opcode = "vmul"; |
| 1504 template <> const char *InstARM32Vorr::Opcode = "vorr"; | 1523 template <> const char *InstARM32Vorr::Opcode = "vorr"; |
| 1505 template <> const char *InstARM32UnaryopFP<InstARM32::Vneg>::Opcode = "vneg"; | 1524 template <> const char *InstARM32UnaryopFP<InstARM32::Vneg>::Opcode = "vneg"; |
| 1506 template <> const char *InstARM32ThreeAddrFP<InstARM32::Vshl>::Opcode = "vshl"; | 1525 template <> const char *InstARM32ThreeAddrFP<InstARM32::Vshl>::Opcode = "vshl"; |
| 1507 template <> const char *InstARM32ThreeAddrFP<InstARM32::Vshr>::Opcode = "vshr"; | 1526 template <> const char *InstARM32ThreeAddrFP<InstARM32::Vshr>::Opcode = "vshr"; |
| 1508 template <> const char *InstARM32Vsub::Opcode = "vsub"; | 1527 template <> const char *InstARM32Vsub::Opcode = "vsub"; |
| (...skipping 1482 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2991 | 3010 |
| 2992 template class InstARM32FourAddrGPR<InstARM32::Mla>; | 3011 template class InstARM32FourAddrGPR<InstARM32::Mla>; |
| 2993 template class InstARM32FourAddrGPR<InstARM32::Mls>; | 3012 template class InstARM32FourAddrGPR<InstARM32::Mls>; |
| 2994 | 3013 |
| 2995 template class InstARM32CmpLike<InstARM32::Cmn>; | 3014 template class InstARM32CmpLike<InstARM32::Cmn>; |
| 2996 template class InstARM32CmpLike<InstARM32::Cmp>; | 3015 template class InstARM32CmpLike<InstARM32::Cmp>; |
| 2997 template class InstARM32CmpLike<InstARM32::Tst>; | 3016 template class InstARM32CmpLike<InstARM32::Tst>; |
| 2998 | 3017 |
| 2999 } // end of namespace ARM32 | 3018 } // end of namespace ARM32 |
| 3000 } // end of namespace Ice | 3019 } // end of namespace Ice |
| OLD | NEW |