OLD | NEW |
1 //===- subzero/src/IceInstMips32.cpp - Mips32 instruction implementation --===// | 1 //===- subzero/src/IceInstMips32.cpp - Mips32 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 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
76 template <> const char *InstMIPS32C_olt_d::Opcode = "c.olt.d"; | 76 template <> const char *InstMIPS32C_olt_d::Opcode = "c.olt.d"; |
77 template <> const char *InstMIPS32C_olt_s::Opcode = "c.olt.s"; | 77 template <> const char *InstMIPS32C_olt_s::Opcode = "c.olt.s"; |
78 template <> const char *InstMIPS32C_ueq_d::Opcode = "c.ueq.d"; | 78 template <> const char *InstMIPS32C_ueq_d::Opcode = "c.ueq.d"; |
79 template <> const char *InstMIPS32C_ueq_s::Opcode = "c.ueq.s"; | 79 template <> const char *InstMIPS32C_ueq_s::Opcode = "c.ueq.s"; |
80 template <> const char *InstMIPS32C_ule_d::Opcode = "c.ule.d"; | 80 template <> const char *InstMIPS32C_ule_d::Opcode = "c.ule.d"; |
81 template <> const char *InstMIPS32C_ule_s::Opcode = "c.ule.s"; | 81 template <> const char *InstMIPS32C_ule_s::Opcode = "c.ule.s"; |
82 template <> const char *InstMIPS32C_ult_d::Opcode = "c.ult.d"; | 82 template <> const char *InstMIPS32C_ult_d::Opcode = "c.ult.d"; |
83 template <> const char *InstMIPS32C_ult_s::Opcode = "c.ult.s"; | 83 template <> const char *InstMIPS32C_ult_s::Opcode = "c.ult.s"; |
84 template <> const char *InstMIPS32C_un_d::Opcode = "c.un.d"; | 84 template <> const char *InstMIPS32C_un_d::Opcode = "c.un.d"; |
85 template <> const char *InstMIPS32C_un_s::Opcode = "c.un.s"; | 85 template <> const char *InstMIPS32C_un_s::Opcode = "c.un.s"; |
| 86 template <> const char *InstMIPS32Clz::Opcode = "clz"; |
86 template <> const char *InstMIPS32Cvt_d_l::Opcode = "cvt.d.l"; | 87 template <> const char *InstMIPS32Cvt_d_l::Opcode = "cvt.d.l"; |
87 template <> const char *InstMIPS32Cvt_d_s::Opcode = "cvt.d.s"; | 88 template <> const char *InstMIPS32Cvt_d_s::Opcode = "cvt.d.s"; |
88 template <> const char *InstMIPS32Cvt_d_w::Opcode = "cvt.d.w"; | 89 template <> const char *InstMIPS32Cvt_d_w::Opcode = "cvt.d.w"; |
89 template <> const char *InstMIPS32Cvt_s_d::Opcode = "cvt.s.d"; | 90 template <> const char *InstMIPS32Cvt_s_d::Opcode = "cvt.s.d"; |
90 template <> const char *InstMIPS32Cvt_s_l::Opcode = "cvt.s.l"; | 91 template <> const char *InstMIPS32Cvt_s_l::Opcode = "cvt.s.l"; |
91 template <> const char *InstMIPS32Cvt_s_w::Opcode = "cvt.s.w"; | 92 template <> const char *InstMIPS32Cvt_s_w::Opcode = "cvt.s.w"; |
92 template <> const char *InstMIPS32Div::Opcode = "div"; | 93 template <> const char *InstMIPS32Div::Opcode = "div"; |
93 template <> const char *InstMIPS32Div_d::Opcode = "div.d"; | 94 template <> const char *InstMIPS32Div_d::Opcode = "div.d"; |
94 template <> const char *InstMIPS32Div_s::Opcode = "div.s"; | 95 template <> const char *InstMIPS32Div_s::Opcode = "div.s"; |
95 template <> const char *InstMIPS32Divu::Opcode = "divu"; | 96 template <> const char *InstMIPS32Divu::Opcode = "divu"; |
(...skipping 750 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
846 template <> void InstMIPS32C_un_d::emitIAS(const Cfg *Func) const { | 847 template <> void InstMIPS32C_un_d::emitIAS(const Cfg *Func) const { |
847 auto *Asm = Func->getAssembler<MIPS32::AssemblerMIPS32>(); | 848 auto *Asm = Func->getAssembler<MIPS32::AssemblerMIPS32>(); |
848 Asm->c_un_d(getSrc(0), getSrc(1)); | 849 Asm->c_un_d(getSrc(0), getSrc(1)); |
849 } | 850 } |
850 | 851 |
851 template <> void InstMIPS32C_un_s::emitIAS(const Cfg *Func) const { | 852 template <> void InstMIPS32C_un_s::emitIAS(const Cfg *Func) const { |
852 auto *Asm = Func->getAssembler<MIPS32::AssemblerMIPS32>(); | 853 auto *Asm = Func->getAssembler<MIPS32::AssemblerMIPS32>(); |
853 Asm->c_un_s(getSrc(0), getSrc(1)); | 854 Asm->c_un_s(getSrc(0), getSrc(1)); |
854 } | 855 } |
855 | 856 |
| 857 template <> void InstMIPS32Clz::emitIAS(const Cfg *Func) const { |
| 858 auto *Asm = Func->getAssembler<MIPS32::AssemblerMIPS32>(); |
| 859 Asm->clz(getDest(), getSrc(0)); |
| 860 } |
| 861 |
856 template <> void InstMIPS32Cvt_d_l::emitIAS(const Cfg *Func) const { | 862 template <> void InstMIPS32Cvt_d_l::emitIAS(const Cfg *Func) const { |
857 auto *Asm = Func->getAssembler<MIPS32::AssemblerMIPS32>(); | 863 auto *Asm = Func->getAssembler<MIPS32::AssemblerMIPS32>(); |
858 Asm->cvt_d_l(getDest(), getSrc(0)); | 864 Asm->cvt_d_l(getDest(), getSrc(0)); |
859 } | 865 } |
860 | 866 |
861 template <> void InstMIPS32Cvt_d_s::emitIAS(const Cfg *Func) const { | 867 template <> void InstMIPS32Cvt_d_s::emitIAS(const Cfg *Func) const { |
862 auto *Asm = Func->getAssembler<MIPS32::AssemblerMIPS32>(); | 868 auto *Asm = Func->getAssembler<MIPS32::AssemblerMIPS32>(); |
863 Asm->cvt_d_s(getDest(), getSrc(0)); | 869 Asm->cvt_d_s(getDest(), getSrc(0)); |
864 } | 870 } |
865 | 871 |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
926 template <> void InstMIPS32Mov_s::emitIAS(const Cfg *Func) const { | 932 template <> void InstMIPS32Mov_s::emitIAS(const Cfg *Func) const { |
927 auto *Asm = Func->getAssembler<MIPS32::AssemblerMIPS32>(); | 933 auto *Asm = Func->getAssembler<MIPS32::AssemblerMIPS32>(); |
928 Asm->mov_s(getDest(), getSrc(0)); | 934 Asm->mov_s(getDest(), getSrc(0)); |
929 } | 935 } |
930 | 936 |
931 template <> void InstMIPS32Movf::emitIAS(const Cfg *Func) const { | 937 template <> void InstMIPS32Movf::emitIAS(const Cfg *Func) const { |
932 auto *Asm = Func->getAssembler<MIPS32::AssemblerMIPS32>(); | 938 auto *Asm = Func->getAssembler<MIPS32::AssemblerMIPS32>(); |
933 Asm->movf(getDest(), getSrc(1), getSrc(2)); | 939 Asm->movf(getDest(), getSrc(1), getSrc(2)); |
934 } | 940 } |
935 | 941 |
| 942 template <> void InstMIPS32Movn::emitIAS(const Cfg *Func) const { |
| 943 auto *Asm = Func->getAssembler<MIPS32::AssemblerMIPS32>(); |
| 944 Asm->movn(getDest(), getSrc(0), getSrc(1)); |
| 945 } |
| 946 |
936 template <> void InstMIPS32Movn_d::emitIAS(const Cfg *Func) const { | 947 template <> void InstMIPS32Movn_d::emitIAS(const Cfg *Func) const { |
937 auto *Asm = Func->getAssembler<MIPS32::AssemblerMIPS32>(); | 948 auto *Asm = Func->getAssembler<MIPS32::AssemblerMIPS32>(); |
938 Asm->movn_d(getDest(), getSrc(0), getSrc(1)); | 949 Asm->movn_d(getDest(), getSrc(0), getSrc(1)); |
939 } | 950 } |
940 | 951 |
941 template <> void InstMIPS32Movn_s::emitIAS(const Cfg *Func) const { | 952 template <> void InstMIPS32Movn_s::emitIAS(const Cfg *Func) const { |
942 auto *Asm = Func->getAssembler<MIPS32::AssemblerMIPS32>(); | 953 auto *Asm = Func->getAssembler<MIPS32::AssemblerMIPS32>(); |
943 Asm->movn_s(getDest(), getSrc(0), getSrc(1)); | 954 Asm->movn_s(getDest(), getSrc(0), getSrc(1)); |
944 } | 955 } |
945 | 956 |
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1100 Asm->xor_(getDest(), getSrc(0), getSrc(1)); | 1111 Asm->xor_(getDest(), getSrc(0), getSrc(1)); |
1101 } | 1112 } |
1102 | 1113 |
1103 template <> void InstMIPS32Xori::emitIAS(const Cfg *Func) const { | 1114 template <> void InstMIPS32Xori::emitIAS(const Cfg *Func) const { |
1104 auto *Asm = Func->getAssembler<MIPS32::AssemblerMIPS32>(); | 1115 auto *Asm = Func->getAssembler<MIPS32::AssemblerMIPS32>(); |
1105 Asm->xori(getDest(), getSrc(0), Imm); | 1116 Asm->xori(getDest(), getSrc(0), Imm); |
1106 } | 1117 } |
1107 | 1118 |
1108 } // end of namespace MIPS32 | 1119 } // end of namespace MIPS32 |
1109 } // end of namespace Ice | 1120 } // end of namespace Ice |
OLD | NEW |