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 |