[X86][MMX] Fix missing itinerary for CVTPI2PS
authorSimon Pilgrim <llvm-dev@redking.me.uk>
Mon, 9 Apr 2018 13:27:47 +0000 (13:27 +0000)
committerSimon Pilgrim <llvm-dev@redking.me.uk>
Mon, 9 Apr 2018 13:27:47 +0000 (13:27 +0000)
llvm-svn: 329565

llvm/lib/Target/X86/X86InstrMMX.td
llvm/test/CodeGen/X86/mmx-schedule.ll

index 52d76f0..2981475 100644 (file)
@@ -206,15 +206,15 @@ multiclass sse12_cvt_pint<bits<8> opc, RegisterClass SrcRC, RegisterClass DstRC,
 
 multiclass sse12_cvt_pint_3addr<bits<8> opc, RegisterClass SrcRC,
                     RegisterClass DstRC, Intrinsic Int, X86MemOperand x86memop,
-                    PatFrag ld_frag, string asm, Domain d> {
+                    PatFrag ld_frag, string asm, OpndItins itins, Domain d> {
   def irr : MMXPI<opc, MRMSrcReg, (outs DstRC:$dst),
                   (ins DstRC:$src1, SrcRC:$src2), asm,
                   [(set DstRC:$dst, (Int DstRC:$src1, SrcRC:$src2))],
-                  NoItinerary, d>, Sched<[WriteCvtI2F]>;
+                  itins.rr, d>, Sched<[WriteCvtI2F]>;
   def irm : MMXPI<opc, MRMSrcMem, (outs DstRC:$dst),
                   (ins DstRC:$src1, x86memop:$src2), asm,
                   [(set DstRC:$dst, (Int DstRC:$src1, (ld_frag addr:$src2)))],
-                  NoItinerary, d>, Sched<[WriteCvtI2FLd]>;
+                  itins.rm, d>, Sched<[WriteCvtI2FLd]>;
 }
 
 //===----------------------------------------------------------------------===//
@@ -596,7 +596,7 @@ let Constraints = "$src1 = $dst" in {
   defm MMX_CVTPI2PS : sse12_cvt_pint_3addr<0x2A, VR64, VR128,
                          int_x86_sse_cvtpi2ps,
                          i64mem, load, "cvtpi2ps\t{$src2, $dst|$dst, $src2}",
-                          SSEPackedSingle>, PS;
+                         MMX_CVT_PS_ITINS, SSEPackedSingle>, PS;
 }
 
 // Extract / Insert
index ba9be7e..9a75144 100644 (file)
@@ -188,8 +188,8 @@ define <4 x float> @test_cvtpi2ps(x86_mmx %a0, x86_mmx* %a1, <4 x float> %a2, <4
 ;
 ; ATOM-LABEL: test_cvtpi2ps:
 ; ATOM:       # %bb.0:
-; ATOM-NEXT:    cvtpi2ps (%rdi), %xmm1 # sched: [0:?]
-; ATOM-NEXT:    cvtpi2ps %mm0, %xmm0 # sched: [0:?]
+; ATOM-NEXT:    cvtpi2ps %mm0, %xmm0 # sched: [5:5.00]
+; ATOM-NEXT:    cvtpi2ps (%rdi), %xmm1 # sched: [5:5.00]
 ; ATOM-NEXT:    addps %xmm1, %xmm0 # sched: [5:5.00]
 ; ATOM-NEXT:    retq # sched: [79:39.50]
 ;