[llvm] r309699 - [X86][SSSE3] Added missing PHADDS/PHSUBS/PSIGN intrinsic schedules

Simon Pilgrim via llvm-commits llvm-commits at lists.llvm.org
Tue Aug 1 09:18:25 PDT 2017


Author: rksimon
Date: Tue Aug  1 09:18:25 2017
New Revision: 309699

URL: http://llvm.org/viewvc/llvm-project?rev=309699&view=rev
Log:
[X86][SSSE3] Added missing PHADDS/PHSUBS/PSIGN intrinsic schedules

Modified:
    llvm/trunk/lib/Target/X86/X86InstrSSE.td
    llvm/trunk/test/CodeGen/X86/ssse3-schedule.ll

Modified: llvm/trunk/lib/Target/X86/X86InstrSSE.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86InstrSSE.td?rev=309699&r1=309698&r2=309699&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86InstrSSE.td (original)
+++ llvm/trunk/lib/Target/X86/X86InstrSSE.td Tue Aug  1 09:18:25 2017
@@ -5342,7 +5342,7 @@ multiclass SS3I_binop_rm_int<bits<8> opc
        !if(Is2Addr,
          !strconcat(OpcodeStr, "\t{$src2, $dst|$dst, $src2}"),
          !strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}")),
-       [(set VR128:$dst, (IntId128 VR128:$src1, VR128:$src2))]>,
+       [(set VR128:$dst, (IntId128 VR128:$src1, VR128:$src2))], itins.rr>,
        Sched<[itins.Sched]>;
   def rm128 : SS38I<opc, MRMSrcMem, (outs VR128:$dst),
        (ins VR128:$src1, i128mem:$src2),
@@ -5351,7 +5351,7 @@ multiclass SS3I_binop_rm_int<bits<8> opc
          !strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}")),
        [(set VR128:$dst,
          (IntId128 VR128:$src1,
-          (bitconvert (ld_frag addr:$src2))))]>,
+          (bitconvert (ld_frag addr:$src2))))], itins.rm>,
        Sched<[itins.Sched.Folded, ReadAfterLd]>;
 }
 

Modified: llvm/trunk/test/CodeGen/X86/ssse3-schedule.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/ssse3-schedule.ll?rev=309699&r1=309698&r2=309699&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/X86/ssse3-schedule.ll (original)
+++ llvm/trunk/test/CodeGen/X86/ssse3-schedule.ll Tue Aug  1 09:18:25 2017
@@ -294,16 +294,8 @@ define <8 x i16> @test_phaddsw(<8 x i16>
 ;
 ; ATOM-LABEL: test_phaddsw:
 ; ATOM:       # BB#0:
-; ATOM-NEXT:    phaddsw %xmm1, %xmm0
-; ATOM-NEXT:    phaddsw (%rdi), %xmm0
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
+; ATOM-NEXT:    phaddsw %xmm1, %xmm0 # sched: [7:3.50]
+; ATOM-NEXT:    phaddsw (%rdi), %xmm0 # sched: [8:4.00]
 ; ATOM-NEXT:    retq # sched: [79:39.50]
 ;
 ; SLM-LABEL: test_phaddsw:
@@ -449,16 +441,8 @@ define <8 x i16> @test_phsubsw(<8 x i16>
 ;
 ; ATOM-LABEL: test_phsubsw:
 ; ATOM:       # BB#0:
-; ATOM-NEXT:    phsubsw %xmm1, %xmm0
-; ATOM-NEXT:    phsubsw (%rdi), %xmm0
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
+; ATOM-NEXT:    phsubsw %xmm1, %xmm0 # sched: [7:3.50]
+; ATOM-NEXT:    phsubsw (%rdi), %xmm0 # sched: [8:4.00]
 ; ATOM-NEXT:    retq # sched: [79:39.50]
 ;
 ; SLM-LABEL: test_phsubsw:
@@ -703,12 +687,8 @@ define <16 x i8> @test_psignb(<16 x i8>
 ;
 ; ATOM-LABEL: test_psignb:
 ; ATOM:       # BB#0:
-; ATOM-NEXT:    psignb %xmm1, %xmm0
-; ATOM-NEXT:    psignb (%rdi), %xmm0
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
+; ATOM-NEXT:    psignb %xmm1, %xmm0 # sched: [1:0.50]
+; ATOM-NEXT:    psignb (%rdi), %xmm0 # sched: [1:1.00]
 ; ATOM-NEXT:    nop # sched: [1:0.50]
 ; ATOM-NEXT:    nop # sched: [1:0.50]
 ; ATOM-NEXT:    nop # sched: [1:0.50]
@@ -760,12 +740,8 @@ define <4 x i32> @test_psignd(<4 x i32>
 ;
 ; ATOM-LABEL: test_psignd:
 ; ATOM:       # BB#0:
-; ATOM-NEXT:    psignd %xmm1, %xmm0
-; ATOM-NEXT:    psignd (%rdi), %xmm0
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
+; ATOM-NEXT:    psignd %xmm1, %xmm0 # sched: [1:0.50]
+; ATOM-NEXT:    psignd (%rdi), %xmm0 # sched: [1:1.00]
 ; ATOM-NEXT:    nop # sched: [1:0.50]
 ; ATOM-NEXT:    nop # sched: [1:0.50]
 ; ATOM-NEXT:    nop # sched: [1:0.50]
@@ -817,12 +793,8 @@ define <8 x i16> @test_psignw(<8 x i16>
 ;
 ; ATOM-LABEL: test_psignw:
 ; ATOM:       # BB#0:
-; ATOM-NEXT:    psignw %xmm1, %xmm0
-; ATOM-NEXT:    psignw (%rdi), %xmm0
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
-; ATOM-NEXT:    nop # sched: [1:0.50]
+; ATOM-NEXT:    psignw %xmm1, %xmm0 # sched: [1:0.50]
+; ATOM-NEXT:    psignw (%rdi), %xmm0 # sched: [1:1.00]
 ; ATOM-NEXT:    nop # sched: [1:0.50]
 ; ATOM-NEXT:    nop # sched: [1:0.50]
 ; ATOM-NEXT:    nop # sched: [1:0.50]




More information about the llvm-commits mailing list