[llvm] r318999 - [X86][MMX] Add IIC_MMX_MOVMSK instruction itinerary class
Simon Pilgrim via llvm-commits
llvm-commits at lists.llvm.org
Sun Nov 26 09:56:07 PST 2017
Author: rksimon
Date: Sun Nov 26 09:56:07 2017
New Revision: 318999
URL: http://llvm.org/viewvc/llvm-project?rev=318999&view=rev
Log:
[X86][MMX] Add IIC_MMX_MOVMSK instruction itinerary class
Modified:
llvm/trunk/lib/Target/X86/X86InstrMMX.td
llvm/trunk/lib/Target/X86/X86Schedule.td
llvm/trunk/lib/Target/X86/X86ScheduleAtom.td
llvm/trunk/test/CodeGen/X86/mmx-schedule.ll
Modified: llvm/trunk/lib/Target/X86/X86InstrMMX.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86InstrMMX.td?rev=318999&r1=318998&r2=318999&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86InstrMMX.td (original)
+++ llvm/trunk/lib/Target/X86/X86InstrMMX.td Sun Nov 26 09:56:07 2017
@@ -616,7 +616,8 @@ def MMX_PMOVMSKBrr : MMXI<0xD7, MRMSrcRe
(ins VR64:$src),
"pmovmskb\t{$src, $dst|$dst, $src}",
[(set GR32orGR64:$dst,
- (int_x86_mmx_pmovmskb VR64:$src))]>;
+ (int_x86_mmx_pmovmskb VR64:$src))],
+ IIC_MMX_MOVMSK>, Sched<[WriteVecLogic]>;
// Low word of XMM to MMX.
def MMX_X86movdq2q : SDNode<"X86ISD::MOVDQ2Q", SDTypeProfile<1, 1,
Modified: llvm/trunk/lib/Target/X86/X86Schedule.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86Schedule.td?rev=318999&r1=318998&r2=318999&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86Schedule.td (original)
+++ llvm/trunk/lib/Target/X86/X86Schedule.td Sun Nov 26 09:56:07 2017
@@ -426,7 +426,7 @@ def IIC_MMX_PSHUF : InstrItinClass;
def IIC_MMX_PEXTR : InstrItinClass;
def IIC_MMX_PINSRW : InstrItinClass;
def IIC_MMX_MASKMOV : InstrItinClass;
-
+def IIC_MMX_MOVMSK : InstrItinClass;
def IIC_MMX_CVT_PD_RR : InstrItinClass;
def IIC_MMX_CVT_PD_RM : InstrItinClass;
def IIC_MMX_CVT_PS_RR : InstrItinClass;
Modified: llvm/trunk/lib/Target/X86/X86ScheduleAtom.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86ScheduleAtom.td?rev=318999&r1=318998&r2=318999&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86ScheduleAtom.td (original)
+++ llvm/trunk/lib/Target/X86/X86ScheduleAtom.td Sun Nov 26 09:56:07 2017
@@ -338,6 +338,7 @@ def AtomItineraries : ProcessorItinerari
InstrItinData<IIC_MMX_PEXTR, [InstrStage<4, [Port0, Port1]>] >,
InstrItinData<IIC_MMX_PINSRW, [InstrStage<1, [Port0]>] >,
InstrItinData<IIC_MMX_MASKMOV, [InstrStage<1, [Port0]>] >,
+ InstrItinData<IIC_MMX_MOVMSK, [InstrStage<3, [Port0]>] >,
// conversions
// from/to PD
InstrItinData<IIC_MMX_CVT_PD_RR, [InstrStage<7, [Port0, Port1]>] >,
Modified: llvm/trunk/test/CodeGen/X86/mmx-schedule.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/mmx-schedule.ll?rev=318999&r1=318998&r2=318999&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/X86/mmx-schedule.ll (original)
+++ llvm/trunk/test/CodeGen/X86/mmx-schedule.ll Sun Nov 26 09:56:07 2017
@@ -4088,22 +4088,22 @@ declare x86_mmx @llvm.x86.mmx.pminu.b(x8
define i32 @test_pmovmskb(x86_mmx %a0) optsize {
; GENERIC-LABEL: test_pmovmskb:
; GENERIC: # BB#0:
-; GENERIC-NEXT: pmovmskb %mm0, %eax
+; GENERIC-NEXT: pmovmskb %mm0, %eax # sched: [1:1.00]
; GENERIC-NEXT: retq # sched: [1:1.00]
;
; ATOM-LABEL: test_pmovmskb:
; ATOM: # BB#0:
-; ATOM-NEXT: pmovmskb %mm0, %eax
+; ATOM-NEXT: pmovmskb %mm0, %eax # sched: [3:3.00]
; ATOM-NEXT: retq # sched: [79:39.50]
;
; SLM-LABEL: test_pmovmskb:
; SLM: # BB#0:
-; SLM-NEXT: pmovmskb %mm0, %eax
+; SLM-NEXT: pmovmskb %mm0, %eax # sched: [1:0.50]
; SLM-NEXT: retq # sched: [4:1.00]
;
; SANDY-LABEL: test_pmovmskb:
; SANDY: # BB#0:
-; SANDY-NEXT: pmovmskb %mm0, %eax
+; SANDY-NEXT: pmovmskb %mm0, %eax # sched: [1:1.00]
; SANDY-NEXT: retq # sched: [1:1.00]
;
; HASWELL-LABEL: test_pmovmskb:
@@ -4128,7 +4128,7 @@ define i32 @test_pmovmskb(x86_mmx %a0) o
;
; BTVER2-LABEL: test_pmovmskb:
; BTVER2: # BB#0:
-; BTVER2-NEXT: pmovmskb %mm0, %eax
+; BTVER2-NEXT: pmovmskb %mm0, %eax # sched: [1:0.50]
; BTVER2-NEXT: retq # sched: [4:1.00]
;
; ZNVER1-LABEL: test_pmovmskb:
More information about the llvm-commits
mailing list