[PATCH] HLE encoding support

Nadav Rotem nrotem at apple.com
Tue Jun 18 10:06:08 PDT 2013


LGTM. 

On Jun 18, 2013, at 9:45 AM, Stefanus Du Toit <stefanus.du.toit at intel.com> wrote:

> Hi nadav,
> 
> Add support for encoding the HLE XACQUIRE and XRELEASE prefixes.
> 
> 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.
> 
> This is a tiny patch, but it's my first real change in the backend so I would appreciate any review comments.
> 
> http://llvm-reviews.chandlerc.com/D1002
> 
> Files:
>  lib/Target/X86/X86InstrTSX.td
>  test/MC/X86/x86_64-hle-encoding.s
>  utils/TableGen/X86RecognizableInstr.cpp
> 
> Index: lib/Target/X86/X86InstrTSX.td
> ===================================================================
> --- lib/Target/X86/X86InstrTSX.td
> +++ lib/Target/X86/X86InstrTSX.td
> @@ -37,3 +37,10 @@
> 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]>;
> +
> Index: test/MC/X86/x86_64-hle-encoding.s
> ===================================================================
> --- /dev/null
> +++ test/MC/X86/x86_64-hle-encoding.s
> @@ -0,0 +1,9 @@
> +// RUN: llvm-mc -triple x86_64-unknown-unknown --show-encoding %s | FileCheck %s
> +
> +// CHECK: xacquire
> +// CHECK: [0xf2]
> +    xacquire
> +
> +// CHECK: xrelease
> +// CHECK: [0xf3]
> +    xrelease
> Index: utils/TableGen/X86RecognizableInstr.cpp
> ===================================================================
> --- utils/TableGen/X86RecognizableInstr.cpp
> +++ utils/TableGen/X86RecognizableInstr.cpp
> @@ -461,6 +461,12 @@
>       Name == "VMOVQs64rr")
>     return FILTER_WEAK;
> 
> +  // XACQUIRE and XRELEASE reuse REPNE and REP respectively.
> +  // For now, just prefer the REP versions.
> +  if (Name == "XACQUIRE_PREFIX" ||
> +      Name == "XRELEASE_PREFIX")
> +    return FILTER_WEAK;
> +
>   if (HasFROperands && Name.find("MOV") != Name.npos &&
>      ((Name.find("2") != Name.npos && Name.find("32") == Name.npos) ||
>       (Name.find("to") != Name.npos)))
> <D1002.1.patch>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20130618/ef857275/attachment.html>


More information about the llvm-commits mailing list