From 0bc10793b0bec3fffc1cddaf36efc97ebbaec48a Mon Sep 17 00:00:00 2001 From: Sean Callanan Date: Sat, 13 Feb 2010 02:06:11 +0000 Subject: [PATCH] Added the rdtscp instruction to the x86 instruction tables. llvm-svn: 96073 --- lib/Target/X86/X86InstrFormats.td | 2 +- lib/Target/X86/X86InstrInfo.td | 3 +++ utils/TableGen/X86RecognizableInstr.cpp | 3 ++- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/Target/X86/X86InstrFormats.td b/lib/Target/X86/X86InstrFormats.td index 8b934e0f86f..bb81cbf8ac1 100644 --- a/lib/Target/X86/X86InstrFormats.td +++ b/lib/Target/X86/X86InstrFormats.td @@ -38,7 +38,7 @@ def MRM_C9 : Format<38>; def MRM_E8 : Format<39>; def MRM_F0 : Format<40>; def MRM_F8 : Format<41>; - +def MRM_F9 : Format<42>; // ImmType - This specifies the immediate type used by an instruction. This is // part of the ad-hoc solution used to emit machine instruction encodings by our diff --git a/lib/Target/X86/X86InstrInfo.td b/lib/Target/X86/X86InstrInfo.td index 62dfdc299ca..25cd297e261 100644 --- a/lib/Target/X86/X86InstrInfo.td +++ b/lib/Target/X86/X86InstrInfo.td @@ -904,6 +904,9 @@ let Defs = [RAX, RDX] in def RDTSC : I<0x31, RawFrm, (outs), (ins), "rdtsc", [(X86rdtsc)]>, TB; +let Defs = [RAX, RCX, RDX] in +def RDTSCP : I<0x01, MRM_F9, (outs), (ins), "rdtscp", []>, TB; + let isBarrier = 1, hasCtrlDep = 1 in { def TRAP : I<0x0B, RawFrm, (outs), (ins), "ud2", [(trap)]>, TB; } diff --git a/utils/TableGen/X86RecognizableInstr.cpp b/utils/TableGen/X86RecognizableInstr.cpp index 0a85eb8380e..3843e56d985 100644 --- a/utils/TableGen/X86RecognizableInstr.cpp +++ b/utils/TableGen/X86RecognizableInstr.cpp @@ -33,7 +33,8 @@ using namespace llvm; MAP(C9, 38) \ MAP(E8, 39) \ MAP(F0, 40) \ - MAP(F8, 41) + MAP(F8, 41) \ + MAP(F9, 42) // A clone of X86 since we can't depend on something that is generated. namespace X86Local {