mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-28 06:29:45 +00:00
For decoding, keep the current behavior of always decoding these as their REP versions. In the future, this could be improved to recognize the cases where these behave as XACQUIRE and XRELEASE and decode them as such. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184207 91177308-0d34-0410-b5e6-96231b3b80d8
47 lines
1.7 KiB
TableGen
47 lines
1.7 KiB
TableGen
//===-- 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
|
|
|
|
def X86xtest: SDNode<"X86ISD::XTEST", SDTypeProfile<1, 0, [SDTCisVT<0, i32>]>,
|
|
[SDNPHasChain, SDNPSideEffect]>;
|
|
|
|
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", []>, Requires<[HasRTM]>;
|
|
|
|
def XEND : I<0x01, MRM_D5, (outs), (ins),
|
|
"xend", [(int_x86_xend)]>, TB, Requires<[HasRTM]>;
|
|
|
|
let Defs = [EFLAGS] in
|
|
def XTEST : I<0x01, MRM_D6, (outs), (ins),
|
|
"xtest", [(set EFLAGS, (X86xtest))]>, TB, Requires<[HasTSX]>;
|
|
|
|
def XABORT : Ii8<0xc6, MRM_F8, (outs), (ins i8imm:$imm),
|
|
"xabort\t$imm",
|
|
[(int_x86_xabort imm:$imm)]>, Requires<[HasRTM]>;
|
|
|
|
// HLE prefixes
|
|
|
|
def XACQUIRE_PREFIX : I<0xF2, RawFrm, (outs), (ins), "xacquire", []>, Requires<[HasHLE]>;
|
|
|
|
def XRELEASE_PREFIX : I<0xF3, RawFrm, (outs), (ins), "xrelease", []>, Requires<[HasHLE]>;
|
|
|