<div><div dir="auto">Simon already reverted the important part that makes this an error in <span style="font-family:Helvetica;font-size:12pt">r320492.</span></div><br><div class="gmail_quote"><div>On Tue, Dec 12, 2017 at 10:43 AM Sanjoy Das via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Simon,<br>
<br>
I've reverted this commit in r320508<br>
<br>
-- Sanjoy<br>
<br>
On Mon, Dec 11, 2017 at 5:56 PM, Sanjoy Das<br>
<<a href="mailto:sanjoy@playingwithpointers.com" target="_blank">sanjoy@playingwithpointers.com</a>> wrote:<br>
> Hi Simon,<br>
><br>
> This commit breaks XLA:CPU -- the attached IR crashes LLVM on trunk<br>
> when compiled as `llc -O3 -mcpu=broadwell bug.ll` after this change.<br>
> Can you please fix or revert?<br>
><br>
> Here is the backtrace:<br>
><br>
> DefIdx 1 exceeds machine model writes for %53:gr64, %5:gr64 = MULX64rr<br>
> %114, implicit killed %rdx; GR64:%53,%5,%114<br>
>  (Try with MCSchedModel.CompleteModel set to false)incomplete machine model<br>
> UNREACHABLE executed at ../../lib/CodeGen/TargetSchedule.cpp:249!<br>
><br>
> Program received signal SIGABRT, Aborted.<br>
> 0x00007ffff67bbc37 in __GI_raise (sig=sig@entry=6) at<br>
> ../nptl/sysdeps/unix/sysv/linux/raise.c:56<br>
> 56      ../nptl/sysdeps/unix/sysv/linux/raise.c: No such file or directory.<br>
> (gdb) bt<br>
> #0  0x00007ffff67bbc37 in __GI_raise (sig=sig@entry=6) at<br>
> ../nptl/sysdeps/unix/sysv/linux/raise.c:56<br>
> #1  0x00007ffff67bf028 in __GI_abort () at abort.c:89<br>
> #2  0x0000000002f3a370 in llvm::llvm_unreachable_internal<br>
> (msg=0x7dccdb "incomplete machine model", file=0x7dcbed<br>
> "../../lib/CodeGen/TargetSchedule.cpp", line=249)<br>
>     at ../../lib/Support/ErrorHandling.cpp:189<br>
> #3  0x00000000024a7654 in<br>
> llvm::TargetSchedModel::computeOperandLatency (this=0x39764d0,<br>
> DefMI=0x393cdb0, DefOperIdx=1, UseMI=0x393d0b0, UseOperIdx=1)<br>
>     at ../../lib/CodeGen/TargetSchedule.cpp:249<br>
> #4  0x00000000023e8da7 in llvm::ScheduleDAGInstrs::addVRegDefDeps<br>
> (this=0x3976230, SU=0x3978060, OperIdx=1) at<br>
> ../../lib/CodeGen/ScheduleDAGInstrs.cpp:409<br>
> #5  0x00000000023ea4ea in llvm::ScheduleDAGInstrs::buildSchedGraph<br>
> (this=0x3976230, AA=0x3930880, RPTracker=0x3976d70, PDiffs=0x3976c80,<br>
> LIS=0x38ab400, TrackLaneMasks=false)<br>
>     at ../../lib/CodeGen/ScheduleDAGInstrs.cpp:803<br>
> #6  0x0000000002270331 in<br>
> llvm::ScheduleDAGMILive::buildDAGWithRegPressure (this=0x3976230) at<br>
> ../../lib/CodeGen/MachineScheduler.cpp:1288<br>
> #7  0x000000000226fa1e in llvm::ScheduleDAGMILive::schedule<br>
> (this=0x3976230) at ../../lib/CodeGen/MachineScheduler.cpp:1194<br>
> #8  0x0000000002279feb in (anonymous<br>
> namespace)::MachineSchedulerBase::scheduleRegions (this=0x38abdf0,<br>
> Scheduler=..., FixKillFlags=false)<br>
>     at ../../lib/CodeGen/MachineScheduler.cpp:564<br>
> #9  0x0000000002279495 in (anonymous<br>
> namespace)::MachineScheduler::runOnMachineFunction (this=0x38abdf0,<br>
> mf=...) at ../../lib/CodeGen/MachineScheduler.cpp:383<br>
> #10 0x000000000216b401 in llvm::MachineFunctionPass::runOnFunction<br>
> (this=0x38abe30, F=...) at<br>
> ../../lib/CodeGen/MachineFunctionPass.cpp:62<br>
> #11 0x000000000267b46f in llvm::FPPassManager::runOnFunction<br>
> (this=0x3896a80, F=...) at ../../lib/IR/LegacyPassManager.cpp:1520<br>
> #12 0x000000000267b785 in llvm::FPPassManager::runOnModule<br>
> (this=0x3896a80, M=...) at ../../lib/IR/LegacyPassManager.cpp:1541<br>
> #13 0x000000000267bf1a in (anonymous<br>
> namespace)::MPPassManager::runOnModule (this=0x387bf60, M=...) at<br>
> ../../lib/IR/LegacyPassManager.cpp:1597<br>
> #14 0x000000000267ba46 in llvm::legacy::PassManagerImpl::run<br>
> (this=0x387d780, M=...) at ../../lib/IR/LegacyPassManager.cpp:1700<br>
> #15 0x000000000267c431 in llvm::legacy::PassManager::run<br>
> (this=0x7fffffffd7d0, M=...) at<br>
> ../../lib/IR/LegacyPassManager.cpp:1731<br>
> #16 0x00000000017e721d in compileModule (argv=0x7fffffffdec8,<br>
> Context=...) at ../../tools/llc/llc.cpp:569<br>
> #17 0x00000000017e587a in main (argc=4, argv=0x7fffffffdec8) at<br>
> ../../tools/llc/llc.cpp:346<br>
><br>
><br>
> -- Sanjoy<br>
><br>
> On Sun, Dec 10, 2017 at 5:49 AM, Simon Pilgrim via llvm-commits<br>
> <<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>> wrote:<br>
>> Author: rksimon<br>
>> Date: Sun Dec 10 05:49:51 2017<br>
>> New Revision: 320308<br>
>><br>
>> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=320308&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=320308&view=rev</a><br>
>> Log:<br>
>> [X86] Flag BroadWell scheduler model as complete<br>
>><br>
>> Locally tag COPY as WriteMove, which has caused some reg-reg + reg-mem instruction tests to reorder.<br>
>><br>
>> Modified:<br>
>>     llvm/trunk/lib/Target/X86/X86SchedBroadwell.td<br>
>>     llvm/trunk/test/CodeGen/X86/aes-schedule.ll<br>
>>     llvm/trunk/test/CodeGen/X86/avx-schedule.ll<br>
>>     llvm/trunk/test/CodeGen/X86/avx2-schedule.ll<br>
>>     llvm/trunk/test/CodeGen/X86/mmx-schedule.ll<br>
>>     llvm/trunk/test/CodeGen/X86/sse-schedule.ll<br>
>>     llvm/trunk/test/CodeGen/X86/sse2-schedule.ll<br>
>>     llvm/trunk/test/CodeGen/X86/sse41-schedule.ll<br>
>><br>
>> Modified: llvm/trunk/lib/Target/X86/X86SchedBroadwell.td<br>
>> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86SchedBroadwell.td?rev=320308&r1=320307&r2=320308&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86SchedBroadwell.td?rev=320308&r1=320307&r2=320308&view=diff</a><br>
>> ==============================================================================<br>
>> --- llvm/trunk/lib/Target/X86/X86SchedBroadwell.td (original)<br>
>> +++ llvm/trunk/lib/Target/X86/X86SchedBroadwell.td Sun Dec 10 05:49:51 2017<br>
>> @@ -21,10 +21,6 @@ def BroadwellModel : SchedMachineModel {<br>
>><br>
>>    // Based on the LSD (loop-stream detector) queue size and benchmarking data.<br>
>>    let LoopMicroOpBufferSize = 50;<br>
>> -<br>
>> -  // This flag is set to allow the scheduler to assign a default model to<br>
>> -  // unrecognized opcodes.<br>
>> -  let CompleteModel = 0;<br>
>>  }<br>
>><br>
>>  let SchedModel = BroadwellModel in {<br>
>> @@ -120,6 +116,9 @@ def : WriteRes<WriteMove,  [BWPort0156]><br>
>>  // These can often bypass execution ports completely.<br>
>>  def : WriteRes<WriteZero,  []>;<br>
>><br>
>> +// Treat misc copies as a move.<br>
>> +def : InstRW<[WriteMove], (instrs COPY)>;<br>
>> +<br>
>>  // Branches don't produce values, so they have no latency, but they still<br>
>>  // consume resources. Indirect branches can fold loads.<br>
>>  defm : BWWriteResPair<WriteJump,  BWPort06,   1>;<br>
>><br>
>> Modified: llvm/trunk/test/CodeGen/X86/aes-schedule.ll<br>
>> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/aes-schedule.ll?rev=320308&r1=320307&r2=320308&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/aes-schedule.ll?rev=320308&r1=320307&r2=320308&view=diff</a><br>
>> ==============================================================================<br>
>> --- llvm/trunk/test/CodeGen/X86/aes-schedule.ll (original)<br>
>> +++ llvm/trunk/test/CodeGen/X86/aes-schedule.ll Sun Dec 10 05:49:51 2017<br>
>> @@ -261,8 +261,8 @@ define <2 x i64> @test_aesimc(<2 x i64><br>
>>  ;<br>
>>  ; BROADWELL-LABEL: test_aesimc:<br>
>>  ; BROADWELL:       # %bb.0:<br>
>> -; BROADWELL-NEXT:    vaesimc %xmm0, %xmm0 # sched: [14:2.00]<br>
>>  ; BROADWELL-NEXT:    vaesimc (%rdi), %xmm1 # sched: [19:2.00]<br>
>> +; BROADWELL-NEXT:    vaesimc %xmm0, %xmm0 # sched: [14:2.00]<br>
>>  ; BROADWELL-NEXT:    vpor %xmm1, %xmm0, %xmm0 # sched: [1:0.33]<br>
>>  ; BROADWELL-NEXT:    retq # sched: [7:1.00]<br>
>>  ;<br>
>><br>
>> Modified: llvm/trunk/test/CodeGen/X86/avx-schedule.ll<br>
>> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/avx-schedule.ll?rev=320308&r1=320307&r2=320308&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/avx-schedule.ll?rev=320308&r1=320307&r2=320308&view=diff</a><br>
>> ==============================================================================<br>
>> --- llvm/trunk/test/CodeGen/X86/avx-schedule.ll (original)<br>
>> +++ llvm/trunk/test/CodeGen/X86/avx-schedule.ll Sun Dec 10 05:49:51 2017<br>
>> @@ -1069,8 +1069,8 @@ define <4 x double> @test_cvtdq2pd(<4 x<br>
>>  ;<br>
>>  ; BROADWELL-LABEL: test_cvtdq2pd:<br>
>>  ; BROADWELL:       # %bb.0:<br>
>> -; BROADWELL-NEXT:    vcvtdq2pd %xmm0, %ymm0 # sched: [6:1.00]<br>
>>  ; BROADWELL-NEXT:    vcvtdq2pd (%rdi), %ymm1 # sched: [11:1.00]<br>
>> +; BROADWELL-NEXT:    vcvtdq2pd %xmm0, %ymm0 # sched: [6:1.00]<br>
>>  ; BROADWELL-NEXT:    vaddpd %ymm1, %ymm0, %ymm0 # sched: [3:1.00]<br>
>>  ; BROADWELL-NEXT:    retq # sched: [7:1.00]<br>
>>  ;<br>
>> @@ -4035,8 +4035,8 @@ define <8 x float> @test_rcpps(<8 x floa<br>
>>  ;<br>
>>  ; BROADWELL-LABEL: test_rcpps:<br>
>>  ; BROADWELL:       # %bb.0:<br>
>> -; BROADWELL-NEXT:    vrcpps (%rdi), %ymm1 # sched: [17:2.00]<br>
>>  ; BROADWELL-NEXT:    vrcpps %ymm0, %ymm0 # sched: [11:2.00]<br>
>> +; BROADWELL-NEXT:    vrcpps (%rdi), %ymm1 # sched: [17:2.00]<br>
>>  ; BROADWELL-NEXT:    vaddps %ymm1, %ymm0, %ymm0 # sched: [3:1.00]<br>
>>  ; BROADWELL-NEXT:    retq # sched: [7:1.00]<br>
>>  ;<br>
>> @@ -4099,8 +4099,8 @@ define <4 x double> @test_roundpd(<4 x d<br>
>>  ;<br>
>>  ; BROADWELL-LABEL: test_roundpd:<br>
>>  ; BROADWELL:       # %bb.0:<br>
>> -; BROADWELL-NEXT:    vroundpd $7, %ymm0, %ymm0 # sched: [6:0.50]<br>
>>  ; BROADWELL-NEXT:    vroundpd $7, (%rdi), %ymm1 # sched: [12:2.00]<br>
>> +; BROADWELL-NEXT:    vroundpd $7, %ymm0, %ymm0 # sched: [6:0.50]<br>
>>  ; BROADWELL-NEXT:    vaddpd %ymm1, %ymm0, %ymm0 # sched: [3:1.00]<br>
>>  ; BROADWELL-NEXT:    retq # sched: [7:1.00]<br>
>>  ;<br>
>> @@ -4163,8 +4163,8 @@ define <8 x float> @test_roundps(<8 x fl<br>
>>  ;<br>
>>  ; BROADWELL-LABEL: test_roundps:<br>
>>  ; BROADWELL:       # %bb.0:<br>
>> -; BROADWELL-NEXT:    vroundps $7, %ymm0, %ymm0 # sched: [6:0.50]<br>
>>  ; BROADWELL-NEXT:    vroundps $7, (%rdi), %ymm1 # sched: [12:2.00]<br>
>> +; BROADWELL-NEXT:    vroundps $7, %ymm0, %ymm0 # sched: [6:0.50]<br>
>>  ; BROADWELL-NEXT:    vaddps %ymm1, %ymm0, %ymm0 # sched: [3:1.00]<br>
>>  ; BROADWELL-NEXT:    retq # sched: [7:1.00]<br>
>>  ;<br>
>> @@ -4227,8 +4227,8 @@ define <8 x float> @test_rsqrtps(<8 x fl<br>
>>  ;<br>
>>  ; BROADWELL-LABEL: test_rsqrtps:<br>
>>  ; BROADWELL:       # %bb.0:<br>
>> -; BROADWELL-NEXT:    vrsqrtps (%rdi), %ymm1 # sched: [17:2.00]<br>
>>  ; BROADWELL-NEXT:    vrsqrtps %ymm0, %ymm0 # sched: [11:2.00]<br>
>> +; BROADWELL-NEXT:    vrsqrtps (%rdi), %ymm1 # sched: [17:2.00]<br>
>>  ; BROADWELL-NEXT:    vaddps %ymm1, %ymm0, %ymm0 # sched: [3:1.00]<br>
>>  ; BROADWELL-NEXT:    retq # sched: [7:1.00]<br>
>>  ;<br>
>> @@ -4408,8 +4408,8 @@ define <4 x double> @test_sqrtpd(<4 x do<br>
>>  ;<br>
>>  ; BROADWELL-LABEL: test_sqrtpd:<br>
>>  ; BROADWELL:       # %bb.0:<br>
>> -; BROADWELL-NEXT:    vsqrtpd (%rdi), %ymm1 # sched: [40:2.00]<br>
>>  ; BROADWELL-NEXT:    vsqrtpd %ymm0, %ymm0 # sched: [34:2.00]<br>
>> +; BROADWELL-NEXT:    vsqrtpd (%rdi), %ymm1 # sched: [40:2.00]<br>
>>  ; BROADWELL-NEXT:    vaddpd %ymm1, %ymm0, %ymm0 # sched: [3:1.00]<br>
>>  ; BROADWELL-NEXT:    retq # sched: [7:1.00]<br>
>>  ;<br>
>> @@ -4472,8 +4472,8 @@ define <8 x float> @test_sqrtps(<8 x flo<br>
>>  ;<br>
>>  ; BROADWELL-LABEL: test_sqrtps:<br>
>>  ; BROADWELL:       # %bb.0:<br>
>> -; BROADWELL-NEXT:    vsqrtps (%rdi), %ymm1 # sched: [27:2.00]<br>
>>  ; BROADWELL-NEXT:    vsqrtps %ymm0, %ymm0 # sched: [21:2.00]<br>
>> +; BROADWELL-NEXT:    vsqrtps (%rdi), %ymm1 # sched: [27:2.00]<br>
>>  ; BROADWELL-NEXT:    vaddps %ymm1, %ymm0, %ymm0 # sched: [3:1.00]<br>
>>  ; BROADWELL-NEXT:    retq # sched: [7:1.00]<br>
>>  ;<br>
>><br>
>> Modified: llvm/trunk/test/CodeGen/X86/avx2-schedule.ll<br>
>> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/avx2-schedule.ll?rev=320308&r1=320307&r2=320308&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/avx2-schedule.ll?rev=320308&r1=320307&r2=320308&view=diff</a><br>
>> ==============================================================================<br>
>> --- llvm/trunk/test/CodeGen/X86/avx2-schedule.ll (original)<br>
>> +++ llvm/trunk/test/CodeGen/X86/avx2-schedule.ll Sun Dec 10 05:49:51 2017<br>
>> @@ -1761,8 +1761,8 @@ define <16 x i8> @test_pbroadcastb(<16 x<br>
>>  ;<br>
>>  ; BROADWELL-LABEL: test_pbroadcastb:<br>
>>  ; BROADWELL:       # %bb.0:<br>
>> -; BROADWELL-NEXT:    vpbroadcastb %xmm0, %xmm0 # sched: [3:1.00]<br>
>>  ; BROADWELL-NEXT:    vpbroadcastb (%rdi), %xmm1 # sched: [9:1.00]<br>
>> +; BROADWELL-NEXT:    vpbroadcastb %xmm0, %xmm0 # sched: [3:1.00]<br>
>>  ; BROADWELL-NEXT:    vpaddb %xmm1, %xmm0, %xmm0 # sched: [1:0.50]<br>
>>  ; BROADWELL-NEXT:    retq # sched: [7:1.00]<br>
>>  ;<br>
>> @@ -1810,8 +1810,8 @@ define <32 x i8> @test_pbroadcastb_ymm(<<br>
>>  ;<br>
>>  ; BROADWELL-LABEL: test_pbroadcastb_ymm:<br>
>>  ; BROADWELL:       # %bb.0:<br>
>> -; BROADWELL-NEXT:    vpbroadcastb %xmm0, %ymm0 # sched: [3:1.00]<br>
>>  ; BROADWELL-NEXT:    vpbroadcastb (%rdi), %ymm1 # sched: [9:1.00]<br>
>> +; BROADWELL-NEXT:    vpbroadcastb %xmm0, %ymm0 # sched: [3:1.00]<br>
>>  ; BROADWELL-NEXT:    vpaddb %ymm1, %ymm0, %ymm0 # sched: [1:0.50]<br>
>>  ; BROADWELL-NEXT:    retq # sched: [7:1.00]<br>
>>  ;<br>
>> @@ -2051,8 +2051,8 @@ define <8 x i16> @test_pbroadcastw(<8 x<br>
>>  ;<br>
>>  ; BROADWELL-LABEL: test_pbroadcastw:<br>
>>  ; BROADWELL:       # %bb.0:<br>
>> -; BROADWELL-NEXT:    vpbroadcastw %xmm0, %xmm0 # sched: [3:1.00]<br>
>>  ; BROADWELL-NEXT:    vpbroadcastw (%rdi), %xmm1 # sched: [9:1.00]<br>
>> +; BROADWELL-NEXT:    vpbroadcastw %xmm0, %xmm0 # sched: [3:1.00]<br>
>>  ; BROADWELL-NEXT:    vpaddw %xmm1, %xmm0, %xmm0 # sched: [1:0.50]<br>
>>  ; BROADWELL-NEXT:    retq # sched: [7:1.00]<br>
>>  ;<br>
>> @@ -2100,8 +2100,8 @@ define <16 x i16> @test_pbroadcastw_ymm(<br>
>>  ;<br>
>>  ; BROADWELL-LABEL: test_pbroadcastw_ymm:<br>
>>  ; BROADWELL:       # %bb.0:<br>
>> -; BROADWELL-NEXT:    vpbroadcastw %xmm0, %ymm0 # sched: [3:1.00]<br>
>>  ; BROADWELL-NEXT:    vpbroadcastw (%rdi), %ymm1 # sched: [9:1.00]<br>
>> +; BROADWELL-NEXT:    vpbroadcastw %xmm0, %ymm0 # sched: [3:1.00]<br>
>>  ; BROADWELL-NEXT:    vpaddw %ymm1, %ymm0, %ymm0 # sched: [1:0.50]<br>
>>  ; BROADWELL-NEXT:    retq # sched: [7:1.00]<br>
>>  ;<br>
>><br>
>> Modified: llvm/trunk/test/CodeGen/X86/mmx-schedule.ll<br>
>> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/mmx-schedule.ll?rev=320308&r1=320307&r2=320308&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/mmx-schedule.ll?rev=320308&r1=320307&r2=320308&view=diff</a><br>
>> ==============================================================================<br>
>> --- llvm/trunk/test/CodeGen/X86/mmx-schedule.ll (original)<br>
>> +++ llvm/trunk/test/CodeGen/X86/mmx-schedule.ll Sun Dec 10 05:49:51 2017<br>
>> @@ -54,10 +54,10 @@ define i64 @test_cvtpd2pi(<2 x double> %<br>
>>  ;<br>
>>  ; BROADWELL-LABEL: test_cvtpd2pi:<br>
>>  ; BROADWELL:       # %bb.0:<br>
>> -; BROADWELL-NEXT:    cvtpd2pi (%rdi), %mm0 # sched: [9:1.00]<br>
>> -; BROADWELL-NEXT:    cvtpd2pi %xmm0, %mm1 # sched: [4:1.00]<br>
>> -; BROADWELL-NEXT:    por %mm1, %mm0 # sched: [1:0.33]<br>
>> -; BROADWELL-NEXT:    movd %mm0, %rax # sched: [1:1.00]<br>
>> +; BROADWELL-NEXT:    cvtpd2pi %xmm0, %mm0 # sched: [4:1.00]<br>
>> +; BROADWELL-NEXT:    cvtpd2pi (%rdi), %mm1 # sched: [9:1.00]<br>
>> +; BROADWELL-NEXT:    por %mm0, %mm1 # sched: [1:0.33]<br>
>> +; BROADWELL-NEXT:    movd %mm1, %rax # sched: [1:1.00]<br>
>>  ; BROADWELL-NEXT:    retq # sched: [7:1.00]<br>
>>  ;<br>
>>  ; SKYLAKE-LABEL: test_cvtpd2pi:<br>
>> @@ -138,9 +138,9 @@ define <2 x double> @test_cvtpi2pd(x86_m<br>
>>  ;<br>
>>  ; BROADWELL-LABEL: test_cvtpi2pd:<br>
>>  ; BROADWELL:       # %bb.0:<br>
>> -; BROADWELL-NEXT:    cvtpi2pd %mm0, %xmm0 # sched: [4:1.00]<br>
>> -; BROADWELL-NEXT:    cvtpi2pd (%rdi), %xmm1 # sched: [9:1.00]<br>
>> -; BROADWELL-NEXT:    vaddpd %xmm1, %xmm0, %xmm0 # sched: [3:1.00]<br>
>> +; BROADWELL-NEXT:    cvtpi2pd (%rdi), %xmm0 # sched: [9:1.00]<br>
>> +; BROADWELL-NEXT:    cvtpi2pd %mm0, %xmm1 # sched: [4:1.00]<br>
>> +; BROADWELL-NEXT:    vaddpd %xmm0, %xmm1, %xmm0 # sched: [3:1.00]<br>
>>  ; BROADWELL-NEXT:    retq # sched: [7:1.00]<br>
>>  ;<br>
>>  ; SKYLAKE-LABEL: test_cvtpi2pd:<br>
>> @@ -388,10 +388,10 @@ define i64 @test_cvttpd2pi(<2 x double><br>
>>  ;<br>
>>  ; BROADWELL-LABEL: test_cvttpd2pi:<br>
>>  ; BROADWELL:       # %bb.0:<br>
>> -; BROADWELL-NEXT:    cvttpd2pi (%rdi), %mm0 # sched: [9:1.00]<br>
>> -; BROADWELL-NEXT:    cvttpd2pi %xmm0, %mm1 # sched: [4:1.00]<br>
>> -; BROADWELL-NEXT:    por %mm1, %mm0 # sched: [1:0.33]<br>
>> -; BROADWELL-NEXT:    movd %mm0, %rax # sched: [1:1.00]<br>
>> +; BROADWELL-NEXT:    cvttpd2pi %xmm0, %mm0 # sched: [4:1.00]<br>
>> +; BROADWELL-NEXT:    cvttpd2pi (%rdi), %mm1 # sched: [9:1.00]<br>
>> +; BROADWELL-NEXT:    por %mm0, %mm1 # sched: [1:0.33]<br>
>> +; BROADWELL-NEXT:    movd %mm1, %rax # sched: [1:1.00]<br>
>>  ; BROADWELL-NEXT:    retq # sched: [7:1.00]<br>
>>  ;<br>
>>  ; SKYLAKE-LABEL: test_cvttpd2pi:<br>
>><br>
>> Modified: llvm/trunk/test/CodeGen/X86/sse-schedule.ll<br>
>> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/sse-schedule.ll?rev=320308&r1=320307&r2=320308&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/sse-schedule.ll?rev=320308&r1=320307&r2=320308&view=diff</a><br>
>> ==============================================================================<br>
>> --- llvm/trunk/test/CodeGen/X86/sse-schedule.ll (original)<br>
>> +++ llvm/trunk/test/CodeGen/X86/sse-schedule.ll Sun Dec 10 05:49:51 2017<br>
>> @@ -784,8 +784,8 @@ define i32 @test_cvtss2si(float %a0, flo<br>
>>  ;<br>
>>  ; BROADWELL-LABEL: test_cvtss2si:<br>
>>  ; BROADWELL:       # %bb.0:<br>
>> -; BROADWELL-NEXT:    vcvtss2si %xmm0, %ecx # sched: [4:1.00]<br>
>>  ; BROADWELL-NEXT:    vcvtss2si (%rdi), %eax # sched: [9:1.00]<br>
>> +; BROADWELL-NEXT:    vcvtss2si %xmm0, %ecx # sched: [4:1.00]<br>
>>  ; BROADWELL-NEXT:    addl %ecx, %eax # sched: [1:0.25]<br>
>>  ; BROADWELL-NEXT:    retq # sched: [7:1.00]<br>
>>  ;<br>
>> @@ -864,8 +864,8 @@ define i64 @test_cvtss2siq(float %a0, fl<br>
>>  ;<br>
>>  ; BROADWELL-LABEL: test_cvtss2siq:<br>
>>  ; BROADWELL:       # %bb.0:<br>
>> -; BROADWELL-NEXT:    vcvtss2si %xmm0, %rcx # sched: [4:1.00]<br>
>>  ; BROADWELL-NEXT:    vcvtss2si (%rdi), %rax # sched: [9:1.00]<br>
>> +; BROADWELL-NEXT:    vcvtss2si %xmm0, %rcx # sched: [4:1.00]<br>
>>  ; BROADWELL-NEXT:    addq %rcx, %rax # sched: [1:0.25]<br>
>>  ; BROADWELL-NEXT:    retq # sched: [7:1.00]<br>
>>  ;<br>
>> @@ -944,8 +944,8 @@ define i32 @test_cvttss2si(float %a0, fl<br>
>>  ;<br>
>>  ; BROADWELL-LABEL: test_cvttss2si:<br>
>>  ; BROADWELL:       # %bb.0:<br>
>> -; BROADWELL-NEXT:    vcvttss2si %xmm0, %ecx # sched: [4:1.00]<br>
>>  ; BROADWELL-NEXT:    vcvttss2si (%rdi), %eax # sched: [9:1.00]<br>
>> +; BROADWELL-NEXT:    vcvttss2si %xmm0, %ecx # sched: [4:1.00]<br>
>>  ; BROADWELL-NEXT:    addl %ecx, %eax # sched: [1:0.25]<br>
>>  ; BROADWELL-NEXT:    retq # sched: [7:1.00]<br>
>>  ;<br>
>> @@ -1021,8 +1021,8 @@ define i64 @test_cvttss2siq(float %a0, f<br>
>>  ;<br>
>>  ; BROADWELL-LABEL: test_cvttss2siq:<br>
>>  ; BROADWELL:       # %bb.0:<br>
>> -; BROADWELL-NEXT:    vcvttss2si %xmm0, %rcx # sched: [4:1.00]<br>
>>  ; BROADWELL-NEXT:    vcvttss2si (%rdi), %rax # sched: [9:1.00]<br>
>> +; BROADWELL-NEXT:    vcvttss2si %xmm0, %rcx # sched: [4:1.00]<br>
>>  ; BROADWELL-NEXT:    addq %rcx, %rax # sched: [1:0.25]<br>
>>  ; BROADWELL-NEXT:    retq # sched: [7:1.00]<br>
>>  ;<br>
>><br>
>> Modified: llvm/trunk/test/CodeGen/X86/sse2-schedule.ll<br>
>> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/sse2-schedule.ll?rev=320308&r1=320307&r2=320308&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/sse2-schedule.ll?rev=320308&r1=320307&r2=320308&view=diff</a><br>
>> ==============================================================================<br>
>> --- llvm/trunk/test/CodeGen/X86/sse2-schedule.ll (original)<br>
>> +++ llvm/trunk/test/CodeGen/X86/sse2-schedule.ll Sun Dec 10 05:49:51 2017<br>
>> @@ -705,8 +705,8 @@ define <2 x double> @test_cvtdq2pd(<4 x<br>
>>  ;<br>
>>  ; BROADWELL-LABEL: test_cvtdq2pd:<br>
>>  ; BROADWELL:       # %bb.0:<br>
>> -; BROADWELL-NEXT:    vcvtdq2pd %xmm0, %xmm0 # sched: [4:1.00]<br>
>>  ; BROADWELL-NEXT:    vcvtdq2pd (%rdi), %xmm1 # sched: [9:1.00]<br>
>> +; BROADWELL-NEXT:    vcvtdq2pd %xmm0, %xmm0 # sched: [4:1.00]<br>
>>  ; BROADWELL-NEXT:    vaddpd %xmm1, %xmm0, %xmm0 # sched: [3:1.00]<br>
>>  ; BROADWELL-NEXT:    retq # sched: [7:1.00]<br>
>>  ;<br>
>> @@ -1179,8 +1179,8 @@ define i32 @test_cvtsd2si(double %a0, do<br>
>>  ;<br>
>>  ; BROADWELL-LABEL: test_cvtsd2si:<br>
>>  ; BROADWELL:       # %bb.0:<br>
>> -; BROADWELL-NEXT:    vcvtsd2si %xmm0, %ecx # sched: [4:1.00]<br>
>>  ; BROADWELL-NEXT:    vcvtsd2si (%rdi), %eax # sched: [9:1.00]<br>
>> +; BROADWELL-NEXT:    vcvtsd2si %xmm0, %ecx # sched: [4:1.00]<br>
>>  ; BROADWELL-NEXT:    addl %ecx, %eax # sched: [1:0.25]<br>
>>  ; BROADWELL-NEXT:    retq # sched: [7:1.00]<br>
>>  ;<br>
>> @@ -1259,8 +1259,8 @@ define i64 @test_cvtsd2siq(double %a0, d<br>
>>  ;<br>
>>  ; BROADWELL-LABEL: test_cvtsd2siq:<br>
>>  ; BROADWELL:       # %bb.0:<br>
>> -; BROADWELL-NEXT:    vcvtsd2si %xmm0, %rcx # sched: [4:1.00]<br>
>>  ; BROADWELL-NEXT:    vcvtsd2si (%rdi), %rax # sched: [9:1.00]<br>
>> +; BROADWELL-NEXT:    vcvtsd2si %xmm0, %rcx # sched: [4:1.00]<br>
>>  ; BROADWELL-NEXT:    addq %rcx, %rax # sched: [1:0.25]<br>
>>  ; BROADWELL-NEXT:    retq # sched: [7:1.00]<br>
>>  ;<br>
>> @@ -1829,8 +1829,8 @@ define i32 @test_cvttsd2si(double %a0, d<br>
>>  ;<br>
>>  ; BROADWELL-LABEL: test_cvttsd2si:<br>
>>  ; BROADWELL:       # %bb.0:<br>
>> -; BROADWELL-NEXT:    vcvttsd2si %xmm0, %ecx # sched: [4:1.00]<br>
>>  ; BROADWELL-NEXT:    vcvttsd2si (%rdi), %eax # sched: [9:1.00]<br>
>> +; BROADWELL-NEXT:    vcvttsd2si %xmm0, %ecx # sched: [4:1.00]<br>
>>  ; BROADWELL-NEXT:    addl %ecx, %eax # sched: [1:0.25]<br>
>>  ; BROADWELL-NEXT:    retq # sched: [7:1.00]<br>
>>  ;<br>
>> @@ -1906,8 +1906,8 @@ define i64 @test_cvttsd2siq(double %a0,<br>
>>  ;<br>
>>  ; BROADWELL-LABEL: test_cvttsd2siq:<br>
>>  ; BROADWELL:       # %bb.0:<br>
>> -; BROADWELL-NEXT:    vcvttsd2si %xmm0, %rcx # sched: [4:1.00]<br>
>>  ; BROADWELL-NEXT:    vcvttsd2si (%rdi), %rax # sched: [9:1.00]<br>
>> +; BROADWELL-NEXT:    vcvttsd2si %xmm0, %rcx # sched: [4:1.00]<br>
>>  ; BROADWELL-NEXT:    addq %rcx, %rax # sched: [1:0.25]<br>
>>  ; BROADWELL-NEXT:    retq # sched: [7:1.00]<br>
>>  ;<br>
>><br>
>> Modified: llvm/trunk/test/CodeGen/X86/sse41-schedule.ll<br>
>> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/sse41-schedule.ll?rev=320308&r1=320307&r2=320308&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/sse41-schedule.ll?rev=320308&r1=320307&r2=320308&view=diff</a><br>
>> ==============================================================================<br>
>> --- llvm/trunk/test/CodeGen/X86/sse41-schedule.ll (original)<br>
>> +++ llvm/trunk/test/CodeGen/X86/sse41-schedule.ll Sun Dec 10 05:49:51 2017<br>
>> @@ -2992,8 +2992,8 @@ define <2 x double> @test_roundpd(<2 x d<br>
>>  ;<br>
>>  ; BROADWELL-LABEL: test_roundpd:<br>
>>  ; BROADWELL:       # %bb.0:<br>
>> -; BROADWELL-NEXT:    vroundpd $7, %xmm0, %xmm0 # sched: [6:0.50]<br>
>>  ; BROADWELL-NEXT:    vroundpd $7, (%rdi), %xmm1 # sched: [11:2.00]<br>
>> +; BROADWELL-NEXT:    vroundpd $7, %xmm0, %xmm0 # sched: [6:0.50]<br>
>>  ; BROADWELL-NEXT:    vaddpd %xmm1, %xmm0, %xmm0 # sched: [3:1.00]<br>
>>  ; BROADWELL-NEXT:    retq # sched: [7:1.00]<br>
>>  ;<br>
>> @@ -3064,8 +3064,8 @@ define <4 x float> @test_roundps(<4 x fl<br>
>>  ;<br>
>>  ; BROADWELL-LABEL: test_roundps:<br>
>>  ; BROADWELL:       # %bb.0:<br>
>> -; BROADWELL-NEXT:    vroundps $7, %xmm0, %xmm0 # sched: [6:0.50]<br>
>>  ; BROADWELL-NEXT:    vroundps $7, (%rdi), %xmm1 # sched: [11:2.00]<br>
>> +; BROADWELL-NEXT:    vroundps $7, %xmm0, %xmm0 # sched: [6:0.50]<br>
>>  ; BROADWELL-NEXT:    vaddps %xmm1, %xmm0, %xmm0 # sched: [3:1.00]<br>
>>  ; BROADWELL-NEXT:    retq # sched: [7:1.00]<br>
>>  ;<br>
>> @@ -3137,9 +3137,9 @@ define <2 x double> @test_roundsd(<2 x d<br>
>>  ;<br>
>>  ; BROADWELL-LABEL: test_roundsd:<br>
>>  ; BROADWELL:       # %bb.0:<br>
>> -; BROADWELL-NEXT:    vroundsd $7, %xmm1, %xmm0, %xmm1 # sched: [6:0.50]<br>
>> -; BROADWELL-NEXT:    vroundsd $7, (%rdi), %xmm0, %xmm0 # sched: [11:2.00]<br>
>> -; BROADWELL-NEXT:    vaddpd %xmm0, %xmm1, %xmm0 # sched: [3:1.00]<br>
>> +; BROADWELL-NEXT:    vroundsd $7, (%rdi), %xmm0, %xmm2 # sched: [11:2.00]<br>
>> +; BROADWELL-NEXT:    vroundsd $7, %xmm1, %xmm0, %xmm0 # sched: [6:0.50]<br>
>> +; BROADWELL-NEXT:    vaddpd %xmm2, %xmm0, %xmm0 # sched: [3:1.00]<br>
>>  ; BROADWELL-NEXT:    retq # sched: [7:1.00]<br>
>>  ;<br>
>>  ; SKYLAKE-LABEL: test_roundsd:<br>
>> @@ -3210,9 +3210,9 @@ define <4 x float> @test_roundss(<4 x fl<br>
>>  ;<br>
>>  ; BROADWELL-LABEL: test_roundss:<br>
>>  ; BROADWELL:       # %bb.0:<br>
>> -; BROADWELL-NEXT:    vroundss $7, %xmm1, %xmm0, %xmm1 # sched: [6:0.50]<br>
>> -; BROADWELL-NEXT:    vroundss $7, (%rdi), %xmm0, %xmm0 # sched: [11:2.00]<br>
>> -; BROADWELL-NEXT:    vaddps %xmm0, %xmm1, %xmm0 # sched: [3:1.00]<br>
>> +; BROADWELL-NEXT:    vroundss $7, (%rdi), %xmm0, %xmm2 # sched: [11:2.00]<br>
>> +; BROADWELL-NEXT:    vroundss $7, %xmm1, %xmm0, %xmm0 # sched: [6:0.50]<br>
>> +; BROADWELL-NEXT:    vaddps %xmm2, %xmm0, %xmm0 # sched: [3:1.00]<br>
>>  ; BROADWELL-NEXT:    retq # sched: [7:1.00]<br>
>>  ;<br>
>>  ; SKYLAKE-LABEL: test_roundss:<br>
>><br>
>><br>
>> _______________________________________________<br>
>> llvm-commits mailing list<br>
>> <a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a><br>
>> <a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
</blockquote></div></div><style type="text/css">
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px}
span.s1 {font-family: 'Helvetica'; font-weight: normal; font-style: normal; font-size: 12.00pt}
</style><div dir="ltr">-- <br></div><div class="gmail_signature" data-smartmail="gmail_signature">~Craig</div>