| OLD | NEW |
| 1 //===- subzero/src/IceInstX8632.cpp - X86-32 instruction implementation ---===// | 1 //===- subzero/src/IceInstX8632.cpp - X86-32 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 // This file implements the InstX8632 and OperandX8632 classes, | 10 // This file implements the InstX8632 and OperandX8632 classes, |
| (...skipping 919 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 930 template <> const char *InstX8632Cbwdq::Opcode = "cbw/cwd/cdq"; | 930 template <> const char *InstX8632Cbwdq::Opcode = "cbw/cwd/cdq"; |
| 931 // Mov-like ops | 931 // Mov-like ops |
| 932 template <> const char *InstX8632Mov::Opcode = "mov"; | 932 template <> const char *InstX8632Mov::Opcode = "mov"; |
| 933 template <> const char *InstX8632Movp::Opcode = "movups"; | 933 template <> const char *InstX8632Movp::Opcode = "movups"; |
| 934 template <> const char *InstX8632Movq::Opcode = "movq"; | 934 template <> const char *InstX8632Movq::Opcode = "movq"; |
| 935 // Binary ops | 935 // Binary ops |
| 936 template <> const char *InstX8632Add::Opcode = "add"; | 936 template <> const char *InstX8632Add::Opcode = "add"; |
| 937 template <> const char *InstX8632AddRMW::Opcode = "add"; | 937 template <> const char *InstX8632AddRMW::Opcode = "add"; |
| 938 template <> const char *InstX8632Addps::Opcode = "addps"; | 938 template <> const char *InstX8632Addps::Opcode = "addps"; |
| 939 template <> const char *InstX8632Adc::Opcode = "adc"; | 939 template <> const char *InstX8632Adc::Opcode = "adc"; |
| 940 template <> const char *InstX8632AdcRMW::Opcode = "adc"; |
| 940 template <> const char *InstX8632Addss::Opcode = "addss"; | 941 template <> const char *InstX8632Addss::Opcode = "addss"; |
| 941 template <> const char *InstX8632Padd::Opcode = "padd"; | 942 template <> const char *InstX8632Padd::Opcode = "padd"; |
| 942 template <> const char *InstX8632Sub::Opcode = "sub"; | 943 template <> const char *InstX8632Sub::Opcode = "sub"; |
| 944 template <> const char *InstX8632SubRMW::Opcode = "sub"; |
| 943 template <> const char *InstX8632Subps::Opcode = "subps"; | 945 template <> const char *InstX8632Subps::Opcode = "subps"; |
| 944 template <> const char *InstX8632Subss::Opcode = "subss"; | 946 template <> const char *InstX8632Subss::Opcode = "subss"; |
| 945 template <> const char *InstX8632Sbb::Opcode = "sbb"; | 947 template <> const char *InstX8632Sbb::Opcode = "sbb"; |
| 948 template <> const char *InstX8632SbbRMW::Opcode = "sbb"; |
| 946 template <> const char *InstX8632Psub::Opcode = "psub"; | 949 template <> const char *InstX8632Psub::Opcode = "psub"; |
| 947 template <> const char *InstX8632And::Opcode = "and"; | 950 template <> const char *InstX8632And::Opcode = "and"; |
| 951 template <> const char *InstX8632AndRMW::Opcode = "and"; |
| 948 template <> const char *InstX8632Pand::Opcode = "pand"; | 952 template <> const char *InstX8632Pand::Opcode = "pand"; |
| 949 template <> const char *InstX8632Pandn::Opcode = "pandn"; | 953 template <> const char *InstX8632Pandn::Opcode = "pandn"; |
| 950 template <> const char *InstX8632Or::Opcode = "or"; | 954 template <> const char *InstX8632Or::Opcode = "or"; |
| 955 template <> const char *InstX8632OrRMW::Opcode = "or"; |
| 951 template <> const char *InstX8632Por::Opcode = "por"; | 956 template <> const char *InstX8632Por::Opcode = "por"; |
| 952 template <> const char *InstX8632Xor::Opcode = "xor"; | 957 template <> const char *InstX8632Xor::Opcode = "xor"; |
| 958 template <> const char *InstX8632XorRMW::Opcode = "xor"; |
| 953 template <> const char *InstX8632Pxor::Opcode = "pxor"; | 959 template <> const char *InstX8632Pxor::Opcode = "pxor"; |
| 954 template <> const char *InstX8632Imul::Opcode = "imul"; | 960 template <> const char *InstX8632Imul::Opcode = "imul"; |
| 955 template <> const char *InstX8632Mulps::Opcode = "mulps"; | 961 template <> const char *InstX8632Mulps::Opcode = "mulps"; |
| 956 template <> const char *InstX8632Mulss::Opcode = "mulss"; | 962 template <> const char *InstX8632Mulss::Opcode = "mulss"; |
| 957 template <> const char *InstX8632Pmull::Opcode = "pmull"; | 963 template <> const char *InstX8632Pmull::Opcode = "pmull"; |
| 958 template <> const char *InstX8632Pmuludq::Opcode = "pmuludq"; | 964 template <> const char *InstX8632Pmuludq::Opcode = "pmuludq"; |
| 959 template <> const char *InstX8632Div::Opcode = "div"; | 965 template <> const char *InstX8632Div::Opcode = "div"; |
| 960 template <> const char *InstX8632Divps::Opcode = "divps"; | 966 template <> const char *InstX8632Divps::Opcode = "divps"; |
| 961 template <> const char *InstX8632Idiv::Opcode = "idiv"; | 967 template <> const char *InstX8632Idiv::Opcode = "idiv"; |
| 962 template <> const char *InstX8632Divss::Opcode = "divss"; | 968 template <> const char *InstX8632Divss::Opcode = "divss"; |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1018 &X8632::AssemblerX8632::add, &X8632::AssemblerX8632::add, | 1024 &X8632::AssemblerX8632::add, &X8632::AssemblerX8632::add, |
| 1019 &X8632::AssemblerX8632::add}; | 1025 &X8632::AssemblerX8632::add}; |
| 1020 template <> | 1026 template <> |
| 1021 const X8632::AssemblerX8632::GPREmitterAddrOp InstX8632AddRMW::Emitter = { | 1027 const X8632::AssemblerX8632::GPREmitterAddrOp InstX8632AddRMW::Emitter = { |
| 1022 &X8632::AssemblerX8632::add, &X8632::AssemblerX8632::add}; | 1028 &X8632::AssemblerX8632::add, &X8632::AssemblerX8632::add}; |
| 1023 template <> | 1029 template <> |
| 1024 const X8632::AssemblerX8632::GPREmitterRegOp InstX8632Adc::Emitter = { | 1030 const X8632::AssemblerX8632::GPREmitterRegOp InstX8632Adc::Emitter = { |
| 1025 &X8632::AssemblerX8632::adc, &X8632::AssemblerX8632::adc, | 1031 &X8632::AssemblerX8632::adc, &X8632::AssemblerX8632::adc, |
| 1026 &X8632::AssemblerX8632::adc}; | 1032 &X8632::AssemblerX8632::adc}; |
| 1027 template <> | 1033 template <> |
| 1034 const X8632::AssemblerX8632::GPREmitterAddrOp InstX8632AdcRMW::Emitter = { |
| 1035 &X8632::AssemblerX8632::adc, &X8632::AssemblerX8632::adc}; |
| 1036 template <> |
| 1028 const X8632::AssemblerX8632::GPREmitterRegOp InstX8632And::Emitter = { | 1037 const X8632::AssemblerX8632::GPREmitterRegOp InstX8632And::Emitter = { |
| 1029 &X8632::AssemblerX8632::And, &X8632::AssemblerX8632::And, | 1038 &X8632::AssemblerX8632::And, &X8632::AssemblerX8632::And, |
| 1030 &X8632::AssemblerX8632::And}; | 1039 &X8632::AssemblerX8632::And}; |
| 1031 template <> | 1040 template <> |
| 1041 const X8632::AssemblerX8632::GPREmitterAddrOp InstX8632AndRMW::Emitter = { |
| 1042 &X8632::AssemblerX8632::And, &X8632::AssemblerX8632::And}; |
| 1043 template <> |
| 1032 const X8632::AssemblerX8632::GPREmitterRegOp InstX8632Or::Emitter = { | 1044 const X8632::AssemblerX8632::GPREmitterRegOp InstX8632Or::Emitter = { |
| 1033 &X8632::AssemblerX8632::Or, &X8632::AssemblerX8632::Or, | 1045 &X8632::AssemblerX8632::Or, &X8632::AssemblerX8632::Or, |
| 1034 &X8632::AssemblerX8632::Or}; | 1046 &X8632::AssemblerX8632::Or}; |
| 1035 template <> | 1047 template <> |
| 1048 const X8632::AssemblerX8632::GPREmitterAddrOp InstX8632OrRMW::Emitter = { |
| 1049 &X8632::AssemblerX8632::Or, &X8632::AssemblerX8632::Or}; |
| 1050 template <> |
| 1036 const X8632::AssemblerX8632::GPREmitterRegOp InstX8632Sbb::Emitter = { | 1051 const X8632::AssemblerX8632::GPREmitterRegOp InstX8632Sbb::Emitter = { |
| 1037 &X8632::AssemblerX8632::sbb, &X8632::AssemblerX8632::sbb, | 1052 &X8632::AssemblerX8632::sbb, &X8632::AssemblerX8632::sbb, |
| 1038 &X8632::AssemblerX8632::sbb}; | 1053 &X8632::AssemblerX8632::sbb}; |
| 1039 template <> | 1054 template <> |
| 1055 const X8632::AssemblerX8632::GPREmitterAddrOp InstX8632SbbRMW::Emitter = { |
| 1056 &X8632::AssemblerX8632::sbb, &X8632::AssemblerX8632::sbb}; |
| 1057 template <> |
| 1040 const X8632::AssemblerX8632::GPREmitterRegOp InstX8632Sub::Emitter = { | 1058 const X8632::AssemblerX8632::GPREmitterRegOp InstX8632Sub::Emitter = { |
| 1041 &X8632::AssemblerX8632::sub, &X8632::AssemblerX8632::sub, | 1059 &X8632::AssemblerX8632::sub, &X8632::AssemblerX8632::sub, |
| 1042 &X8632::AssemblerX8632::sub}; | 1060 &X8632::AssemblerX8632::sub}; |
| 1043 template <> | 1061 template <> |
| 1062 const X8632::AssemblerX8632::GPREmitterAddrOp InstX8632SubRMW::Emitter = { |
| 1063 &X8632::AssemblerX8632::sub, &X8632::AssemblerX8632::sub}; |
| 1064 template <> |
| 1044 const X8632::AssemblerX8632::GPREmitterRegOp InstX8632Xor::Emitter = { | 1065 const X8632::AssemblerX8632::GPREmitterRegOp InstX8632Xor::Emitter = { |
| 1045 &X8632::AssemblerX8632::Xor, &X8632::AssemblerX8632::Xor, | 1066 &X8632::AssemblerX8632::Xor, &X8632::AssemblerX8632::Xor, |
| 1046 &X8632::AssemblerX8632::Xor}; | 1067 &X8632::AssemblerX8632::Xor}; |
| 1068 template <> |
| 1069 const X8632::AssemblerX8632::GPREmitterAddrOp InstX8632XorRMW::Emitter = { |
| 1070 &X8632::AssemblerX8632::Xor, &X8632::AssemblerX8632::Xor}; |
| 1047 | 1071 |
| 1048 // Binary Shift GPR ops | 1072 // Binary Shift GPR ops |
| 1049 template <> | 1073 template <> |
| 1050 const X8632::AssemblerX8632::GPREmitterShiftOp InstX8632Rol::Emitter = { | 1074 const X8632::AssemblerX8632::GPREmitterShiftOp InstX8632Rol::Emitter = { |
| 1051 &X8632::AssemblerX8632::rol, &X8632::AssemblerX8632::rol}; | 1075 &X8632::AssemblerX8632::rol, &X8632::AssemblerX8632::rol}; |
| 1052 template <> | 1076 template <> |
| 1053 const X8632::AssemblerX8632::GPREmitterShiftOp InstX8632Sar::Emitter = { | 1077 const X8632::AssemblerX8632::GPREmitterShiftOp InstX8632Sar::Emitter = { |
| 1054 &X8632::AssemblerX8632::sar, &X8632::AssemblerX8632::sar}; | 1078 &X8632::AssemblerX8632::sar, &X8632::AssemblerX8632::sar}; |
| 1055 template <> | 1079 template <> |
| 1056 const X8632::AssemblerX8632::GPREmitterShiftOp InstX8632Shl::Emitter = { | 1080 const X8632::AssemblerX8632::GPREmitterShiftOp InstX8632Shl::Emitter = { |
| (...skipping 1972 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3029 } | 3053 } |
| 3030 Str << "("; | 3054 Str << "("; |
| 3031 if (Func) | 3055 if (Func) |
| 3032 Var->dump(Func); | 3056 Var->dump(Func); |
| 3033 else | 3057 else |
| 3034 Var->dump(Str); | 3058 Var->dump(Str); |
| 3035 Str << ")"; | 3059 Str << ")"; |
| 3036 } | 3060 } |
| 3037 | 3061 |
| 3038 } // end of namespace Ice | 3062 } // end of namespace Ice |
| OLD | NEW |