aboutsummaryrefslogtreecommitdiffstats
path: root/lib/Target/X86/X86InstrTSX.td
diff options
context:
space:
mode:
authorMichael Liao <michael.liao@intel.com>2012-11-08 07:28:54 +0000
committerMichael Liao <michael.liao@intel.com>2012-11-08 07:28:54 +0000
commitbe02a90de17f857ba65bbd8a11653ca1bad30adc (patch)
treeca8ccf2e856410b18f269335eb1b8ed98c1c1426 /lib/Target/X86/X86InstrTSX.td
parent7629de3326318e533ab969abd1b0cbc569b3f3b7 (diff)
downloadexternal_llvm-be02a90de17f857ba65bbd8a11653ca1bad30adc.zip
external_llvm-be02a90de17f857ba65bbd8a11653ca1bad30adc.tar.gz
external_llvm-be02a90de17f857ba65bbd8a11653ca1bad30adc.tar.bz2
Add support of RTM from TSX extension
- Add RTM code generation support throught 3 X86 intrinsics: xbegin()/xend() to start/end a transaction region, and xabort() to abort a tranaction region git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167573 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/X86/X86InstrTSX.td')
-rw-r--r--lib/Target/X86/X86InstrTSX.td32
1 files changed, 32 insertions, 0 deletions
diff --git a/lib/Target/X86/X86InstrTSX.td b/lib/Target/X86/X86InstrTSX.td
new file mode 100644
index 0000000..ad55058
--- /dev/null
+++ b/lib/Target/X86/X86InstrTSX.td
@@ -0,0 +1,32 @@
+//===-- X86InstrVMX.td - TSX Instruction Set Extension -----*- tablegen -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+// This file describes the instructions that make up the Intel TSX instruction
+// set.
+//
+//===----------------------------------------------------------------------===//
+
+//===----------------------------------------------------------------------===//
+// TSX instructions
+
+let usesCustomInserter = 1 in
+def XBEGIN : I<0, Pseudo, (outs GR32:$dst), (ins),
+ "# XBEGIN", [(set GR32:$dst, (int_x86_xbegin))]>,
+ Requires<[HasRTM]>;
+
+let isBranch = 1, isTerminator = 1, Defs = [EAX] in
+def XBEGIN_4 : Ii32PCRel<0xc7, MRM_F8, (outs), (ins brtarget:$dst),
+ "xbegin\t$dst", []>;
+
+def XEND : I<0x01, MRM_D5, (outs), (ins),
+ "xend", [(int_x86_xend)]>, TB, Requires<[HasRTM]>;
+
+def XABORT : Ii8<0xc6, MRM_F8, (outs), (ins i8imm:$imm),
+ "xabort\t$imm",
+ [(int_x86_xabort imm:$imm)]>, Requires<[HasRTM]>;