| OLD | NEW |
| 1 //===- subzero/src/IceInstX86Base.h - Generic x86 instructions -*- C++ -*--===// | 1 //===- subzero/src/IceInstX86Base.h - Generic x86 instructions -*- C++ -*--===// |
| 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 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 100 Divss, | 100 Divss, |
| 101 FakeRMW, | 101 FakeRMW, |
| 102 Fld, | 102 Fld, |
| 103 Fstp, | 103 Fstp, |
| 104 GetIP, | 104 GetIP, |
| 105 Icmp, | 105 Icmp, |
| 106 Idiv, | 106 Idiv, |
| 107 Imul, | 107 Imul, |
| 108 ImulImm, | 108 ImulImm, |
| 109 Insertps, | 109 Insertps, |
| 110 Int3, |
| 110 Jmp, | 111 Jmp, |
| 111 Label, | 112 Label, |
| 112 Lea, | 113 Lea, |
| 113 Load, | 114 Load, |
| 114 Mfence, | 115 Mfence, |
| 115 Minss, | 116 Minss, |
| 116 Maxss, | 117 Maxss, |
| 117 Mov, | 118 Mov, |
| 118 Movd, | 119 Movd, |
| 119 Movp, | 120 Movp, |
| (...skipping 2315 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2435 void emitIAS(const Cfg *Func) const override; | 2436 void emitIAS(const Cfg *Func) const override; |
| 2436 void dump(const Cfg *Func) const override; | 2437 void dump(const Cfg *Func) const override; |
| 2437 static bool classof(const Inst *Instr) { | 2438 static bool classof(const Inst *Instr) { |
| 2438 return InstX86Base::isClassof(Instr, InstX86Base::UD2); | 2439 return InstX86Base::isClassof(Instr, InstX86Base::UD2); |
| 2439 } | 2440 } |
| 2440 | 2441 |
| 2441 private: | 2442 private: |
| 2442 explicit InstX86UD2(Cfg *Func); | 2443 explicit InstX86UD2(Cfg *Func); |
| 2443 }; | 2444 }; |
| 2444 | 2445 |
| 2446 /// Int3 instruction. |
| 2447 class InstX86Int3 final : public InstX86Base { |
| 2448 InstX86Int3() = delete; |
| 2449 InstX86Int3(const InstX86Int3 &) = delete; |
| 2450 InstX86Int3 &operator=(const InstX86Int3 &) = delete; |
| 2451 |
| 2452 public: |
| 2453 static InstX86Int3 *create(Cfg *Func) { |
| 2454 return new (Func->allocate<InstX86Int3>()) InstX86Int3(Func); |
| 2455 } |
| 2456 void emit(const Cfg *Func) const override; |
| 2457 void emitIAS(const Cfg *Func) const override; |
| 2458 void dump(const Cfg *Func) const override; |
| 2459 static bool classof(const Inst *Instr) { |
| 2460 return InstX86Base::isClassof(Instr, InstX86Base::Int3); |
| 2461 } |
| 2462 |
| 2463 private: |
| 2464 explicit InstX86Int3(Cfg *Func); |
| 2465 }; |
| 2466 |
| 2445 /// Test instruction. | 2467 /// Test instruction. |
| 2446 class InstX86Test final : public InstX86Base { | 2468 class InstX86Test final : public InstX86Base { |
| 2447 InstX86Test() = delete; | 2469 InstX86Test() = delete; |
| 2448 InstX86Test(const InstX86Test &) = delete; | 2470 InstX86Test(const InstX86Test &) = delete; |
| 2449 InstX86Test &operator=(const InstX86Test &) = delete; | 2471 InstX86Test &operator=(const InstX86Test &) = delete; |
| 2450 | 2472 |
| 2451 public: | 2473 public: |
| 2452 static InstX86Test *create(Cfg *Func, Operand *Source1, Operand *Source2) { | 2474 static InstX86Test *create(Cfg *Func, Operand *Source1, Operand *Source2) { |
| 2453 return new (Func->allocate<InstX86Test>()) | 2475 return new (Func->allocate<InstX86Test>()) |
| 2454 InstX86Test(Func, Source1, Source2); | 2476 InstX86Test(Func, Source1, Source2); |
| (...skipping 452 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2907 using Shld = typename InstImpl<TraitsType>::InstX86Shld; | 2929 using Shld = typename InstImpl<TraitsType>::InstX86Shld; |
| 2908 using Shrd = typename InstImpl<TraitsType>::InstX86Shrd; | 2930 using Shrd = typename InstImpl<TraitsType>::InstX86Shrd; |
| 2909 using Cmov = typename InstImpl<TraitsType>::InstX86Cmov; | 2931 using Cmov = typename InstImpl<TraitsType>::InstX86Cmov; |
| 2910 using Cmpps = typename InstImpl<TraitsType>::InstX86Cmpps; | 2932 using Cmpps = typename InstImpl<TraitsType>::InstX86Cmpps; |
| 2911 using Cmpxchg = typename InstImpl<TraitsType>::InstX86Cmpxchg; | 2933 using Cmpxchg = typename InstImpl<TraitsType>::InstX86Cmpxchg; |
| 2912 using Cmpxchg8b = typename InstImpl<TraitsType>::InstX86Cmpxchg8b; | 2934 using Cmpxchg8b = typename InstImpl<TraitsType>::InstX86Cmpxchg8b; |
| 2913 using Cvt = typename InstImpl<TraitsType>::InstX86Cvt; | 2935 using Cvt = typename InstImpl<TraitsType>::InstX86Cvt; |
| 2914 using Icmp = typename InstImpl<TraitsType>::InstX86Icmp; | 2936 using Icmp = typename InstImpl<TraitsType>::InstX86Icmp; |
| 2915 using Ucomiss = typename InstImpl<TraitsType>::InstX86Ucomiss; | 2937 using Ucomiss = typename InstImpl<TraitsType>::InstX86Ucomiss; |
| 2916 using UD2 = typename InstImpl<TraitsType>::InstX86UD2; | 2938 using UD2 = typename InstImpl<TraitsType>::InstX86UD2; |
| 2939 using Int3 = typename InstImpl<TraitsType>::InstX86Int3; |
| 2917 using Test = typename InstImpl<TraitsType>::InstX86Test; | 2940 using Test = typename InstImpl<TraitsType>::InstX86Test; |
| 2918 using Mfence = typename InstImpl<TraitsType>::InstX86Mfence; | 2941 using Mfence = typename InstImpl<TraitsType>::InstX86Mfence; |
| 2919 using Store = typename InstImpl<TraitsType>::InstX86Store; | 2942 using Store = typename InstImpl<TraitsType>::InstX86Store; |
| 2920 using StoreP = typename InstImpl<TraitsType>::InstX86StoreP; | 2943 using StoreP = typename InstImpl<TraitsType>::InstX86StoreP; |
| 2921 using StoreQ = typename InstImpl<TraitsType>::InstX86StoreQ; | 2944 using StoreQ = typename InstImpl<TraitsType>::InstX86StoreQ; |
| 2922 using Nop = typename InstImpl<TraitsType>::InstX86Nop; | 2945 using Nop = typename InstImpl<TraitsType>::InstX86Nop; |
| 2923 template <typename T = typename InstImpl<TraitsType>::Traits> | 2946 template <typename T = typename InstImpl<TraitsType>::Traits> |
| 2924 using Fld = | 2947 using Fld = |
| 2925 typename std::enable_if<T::UsesX87, | 2948 typename std::enable_if<T::UsesX87, |
| 2926 typename InstImpl<TraitsType>::InstX86Fld>::type; | 2949 typename InstImpl<TraitsType>::InstX86Fld>::type; |
| (...skipping 602 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3529 &InstImpl<TraitsType>::Assembler::psrl}; \ | 3552 &InstImpl<TraitsType>::Assembler::psrl}; \ |
| 3530 } \ | 3553 } \ |
| 3531 } | 3554 } |
| 3532 | 3555 |
| 3533 } // end of namespace X86NAMESPACE | 3556 } // end of namespace X86NAMESPACE |
| 3534 } // end of namespace Ice | 3557 } // end of namespace Ice |
| 3535 | 3558 |
| 3536 #include "IceInstX86BaseImpl.h" | 3559 #include "IceInstX86BaseImpl.h" |
| 3537 | 3560 |
| 3538 #endif // SUBZERO_SRC_ICEINSTX86BASE_H | 3561 #endif // SUBZERO_SRC_ICEINSTX86BASE_H |
| OLD | NEW |