[llvm] r228283 - [X86] Add xrstors/xsavec/xsaves/clflushopt/clwb/pcommit instructions

Bruno Cardoso Lopes bruno.cardoso at gmail.com
Thu Feb 5 08:52:24 PST 2015


Hi Craig,

Do you plan to add tests for those?

On Thu, Feb 5, 2015 at 6:51 AM, Craig Topper <craig.topper at gmail.com> wrote:
> Author: ctopper
> Date: Thu Feb  5 02:51:06 2015
> New Revision: 228283
>
> URL: http://llvm.org/viewvc/llvm-project?rev=228283&view=rev
> Log:
> [X86] Add xrstors/xsavec/xsaves/clflushopt/clwb/pcommit instructions
>
> Modified:
>     llvm/trunk/lib/Target/X86/X86InstrInfo.td
>     llvm/trunk/lib/Target/X86/X86InstrSSE.td
>     llvm/trunk/lib/Target/X86/X86InstrSystem.td
>
> Modified: llvm/trunk/lib/Target/X86/X86InstrInfo.td
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86InstrInfo.td?rev=228283&r1=228282&r2=228283&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/X86/X86InstrInfo.td (original)
> +++ llvm/trunk/lib/Target/X86/X86InstrInfo.td Thu Feb  5 02:51:06 2015
> @@ -2410,6 +2410,16 @@ let Predicates = [HasTBM] in {
>  } // HasTBM
>
>  //===----------------------------------------------------------------------===//
> +// Memory Instructions
> +//
> +
> +def CLFLUSHOPT : I<0xAE, MRM7m, (outs), (ins i8mem:$src),
> +                   "clflushopt\t$src", []>, PD;
> +def CLWB       : I<0xAE, MRM6m, (outs), (ins i8mem:$src), "clwb\t$src", []>, PD;
> +def PCOMMIT    : I<0xAE, MRM_F8, (outs), (ins), "pcommit", []>, PD;
> +
> +
> +//===----------------------------------------------------------------------===//
>  // Subsystems.
>  //===----------------------------------------------------------------------===//
>
>
> Modified: llvm/trunk/lib/Target/X86/X86InstrSSE.td
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86InstrSSE.td?rev=228283&r1=228282&r2=228283&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/X86/X86InstrSSE.td (original)
> +++ llvm/trunk/lib/Target/X86/X86InstrSSE.td Thu Feb  5 02:51:06 2015
> @@ -3975,7 +3975,7 @@ let SchedRW = [WriteLoad] in {
>  // Flush cache
>  def CLFLUSH : I<0xAE, MRM7m, (outs), (ins i8mem:$src),
>                 "clflush\t$src", [(int_x86_sse2_clflush addr:$src)],
> -               IIC_SSE_PREFETCH>, TB, Requires<[HasSSE2]>;
> +               IIC_SSE_PREFETCH>, PS, Requires<[HasSSE2]>;
>  }
>
>  let SchedRW = [WriteNop] in {
> @@ -3990,7 +3990,7 @@ let SchedRW = [WriteFence] in {
>  // Load, store, and memory fence
>  def SFENCE : I<0xAE, MRM_F8, (outs), (ins),
>                 "sfence", [(int_x86_sse_sfence)], IIC_SSE_SFENCE>,
> -               TB, Requires<[HasSSE1]>;
> +               PS, Requires<[HasSSE1]>;
>  def LFENCE : I<0xAE, MRM_E8, (outs), (ins),
>                 "lfence", [(int_x86_sse2_lfence)], IIC_SSE_LFENCE>,
>                 TB, Requires<[HasSSE2]>;
>
> Modified: llvm/trunk/lib/Target/X86/X86InstrSystem.td
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86InstrSystem.td?rev=228283&r1=228282&r2=228283&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/X86/X86InstrSystem.td (original)
> +++ llvm/trunk/lib/Target/X86/X86InstrSystem.td Thu Feb  5 02:51:06 2015
> @@ -492,9 +492,22 @@ let Uses = [RDX, RAX] in {
>    def XRSTOR64 : RI<0xAE, MRM5m, (outs), (ins opaque512mem:$dst),
>                   "xrstor64\t$dst", []>, TB, Requires<[In64BitMode]>;
>    def XSAVEOPT : I<0xAE, MRM6m, (outs opaque512mem:$dst), (ins),
> -                  "xsaveopt\t$dst", []>, TB;
> +                  "xsaveopt\t$dst", []>, PS;
>    def XSAVEOPT64 : RI<0xAE, MRM6m, (outs opaque512mem:$dst), (ins),
> -                    "xsaveopt64\t$dst", []>, TB, Requires<[In64BitMode]>;
> +                    "xsaveopt64\t$dst", []>, PS, Requires<[In64BitMode]>;
> +
> +  def XRSTORS : I<0xC7, MRM3m, (outs), (ins opaque512mem:$dst),
> +                "xrstors\t$dst", []>, TB;
> +  def XRSTORS64 : RI<0xC7, MRM3m, (outs), (ins opaque512mem:$dst),
> +                  "xrstors64\t$dst", []>, TB, Requires<[In64BitMode]>;
> +  def XSAVEC : I<0xC7, MRM4m, (outs opaque512mem:$dst), (ins),
> +                "xsavec\t$dst", []>, TB;
> +  def XSAVEC64 : RI<0xC7, MRM4m, (outs opaque512mem:$dst), (ins),
> +                  "xsavec64\t$dst", []>, TB, Requires<[In64BitMode]>;
> +  def XSAVES : I<0xC7, MRM5m, (outs opaque512mem:$dst), (ins),
> +                "xsaves\t$dst", []>, TB;
> +  def XSAVES64 : RI<0xC7, MRM5m, (outs opaque512mem:$dst), (ins),
> +                  "xsaves64\t$dst", []>, TB, Requires<[In64BitMode]>;
>  }
>  } // SchedRW
>
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits



-- 
Bruno Cardoso Lopes
http://www.brunocardoso.cc



More information about the llvm-commits mailing list