diff options
| author | Simon Pilgrim <llvm-dev@redking.me.uk> | 2018-04-11 18:23:01 +0000 |
|---|---|---|
| committer | Simon Pilgrim <llvm-dev@redking.me.uk> | 2018-04-11 18:23:01 +0000 |
| commit | 8fc2b496207eb49aa0191a52d50f51e7da3fec0b (patch) | |
| tree | 15e3b3189a7403a01eb875506601ea6c060a0232 /llvm/test/CodeGen | |
| parent | 34aa13169b5aed623c227191bb36fa118d766ba1 (diff) | |
| download | bcm5719-llvm-8fc2b496207eb49aa0191a52d50f51e7da3fec0b.tar.gz bcm5719-llvm-8fc2b496207eb49aa0191a52d50f51e7da3fec0b.zip | |
[X86][Atom] Convert Atom scheduler model to SchedRW (PR32431)
Atom is the only x86 target that still uses schedule itineraries, if we can remove this then we can begin the work on removing x86 itineraries. I've also found that it will help with PR36550.
I've focussed on matching the existing model as closely as possible (relying on the schedule tests), PR36895 indicated a lot of these were incorrect but we can just as easily fix these after this patch as before. Hopefully we can get llvm-exegesis to help here,
There are a few instructions that rely on itinerary scheduling (mainly push/pop/return) of multiple resource stages, but I don't think any of these are show stoppers.
There are also a few codegen changes that seem related to the post-ra scheduler acting a little differently, I haven't tracked these down but they don't seem critical.
NOTE: I don't have access to any Atom hardware, so this hasn't been tested in the wild.
Differential Revision: https://reviews.llvm.org/D45486
llvm-svn: 329837
Diffstat (limited to 'llvm/test/CodeGen')
| -rw-r--r-- | llvm/test/CodeGen/X86/lsr-loop-exit-cond.ll | 4 | ||||
| -rw-r--r-- | llvm/test/CodeGen/X86/lsr-static-addr.ll | 12 | ||||
| -rw-r--r-- | llvm/test/CodeGen/X86/mmx-schedule.ll | 12 | ||||
| -rw-r--r-- | llvm/test/CodeGen/X86/schedule-x86_32.ll | 2 | ||||
| -rw-r--r-- | llvm/test/CodeGen/X86/schedule-x86_64.ll | 2 | ||||
| -rw-r--r-- | llvm/test/CodeGen/X86/select.ll | 78 | ||||
| -rw-r--r-- | llvm/test/CodeGen/X86/sse-schedule.ll | 2 | ||||
| -rw-r--r-- | llvm/test/CodeGen/X86/sse2-schedule.ll | 31 | ||||
| -rw-r--r-- | llvm/test/CodeGen/X86/sse3-schedule.ll | 21 | ||||
| -rw-r--r-- | llvm/test/CodeGen/X86/ssse3-schedule.ll | 27 | ||||
| -rw-r--r-- | llvm/test/CodeGen/X86/x87-schedule.ll | 140 |
11 files changed, 172 insertions, 159 deletions
diff --git a/llvm/test/CodeGen/X86/lsr-loop-exit-cond.ll b/llvm/test/CodeGen/X86/lsr-loop-exit-cond.ll index 240026164e6..c594354f570 100644 --- a/llvm/test/CodeGen/X86/lsr-loop-exit-cond.ll +++ b/llvm/test/CodeGen/X86/lsr-loop-exit-cond.ll @@ -7,8 +7,10 @@ ; CHECK-NEXT: jne ; ATOM-LABEL: t: -; ATOM: movl (%r9,%r{{.+}},4), %e{{..}} +; ATOM: movl (%r9,%r{{.+}},4), %r{{..}} +; ATOM-NEXT: xorl ; ATOM-NEXT: testq +; ATOM-NEXT: movl ; ATOM-NEXT: jne @Te0 = external global [256 x i32] ; <[256 x i32]*> [#uses=5] diff --git a/llvm/test/CodeGen/X86/lsr-static-addr.ll b/llvm/test/CodeGen/X86/lsr-static-addr.ll index 1d4cb3c04e9..beea00139cf 100644 --- a/llvm/test/CodeGen/X86/lsr-static-addr.ll +++ b/llvm/test/CodeGen/X86/lsr-static-addr.ll @@ -1,5 +1,5 @@ ; RUN: llc -mcpu=generic -mtriple=x86_64-unknown-linux-gnu -relocation-model=static -asm-verbose=false < %s | FileCheck %s -; RUN: llc -mcpu=atom -mtriple=x86_64-unknown-linux-gnu -relocation-model=static -asm-verbose=false < %s | FileCheck -check-prefix=ATOM %s +; RUN: llc -mcpu=atom -mtriple=x86_64-unknown-linux-gnu -relocation-model=static -asm-verbose=false < %s | FileCheck %s ; CHECK: xorl %eax, %eax ; CHECK: movsd .LCPI0_0(%rip), %xmm0 @@ -10,16 +10,6 @@ ; CHECK-NEXT: movsd ; CHECK-NEXT: incq %rax - -; ATOM: movsd .LCPI0_0(%rip), %xmm0 -; ATOM: xorl %eax, %eax -; ATOM: align -; ATOM-NEXT: BB0_2: -; ATOM-NEXT: movsd A(,%rax,8) -; ATOM-NEXT: mulsd -; ATOM-NEXT: movsd -; ATOM-NEXT: incq %rax - @A = external global [0 x double] define void @foo(i64 %n) nounwind { diff --git a/llvm/test/CodeGen/X86/mmx-schedule.ll b/llvm/test/CodeGen/X86/mmx-schedule.ll index 65271fda8df..53cd12ed937 100644 --- a/llvm/test/CodeGen/X86/mmx-schedule.ll +++ b/llvm/test/CodeGen/X86/mmx-schedule.ll @@ -647,11 +647,11 @@ define i32 @test_movd(x86_mmx %a0, i32 %a1, i32 *%a2) { ; ; ATOM-LABEL: test_movd: ; ATOM: # %bb.0: -; ATOM-NEXT: movd (%rsi), %mm1 # sched: [1:1.00] -; ATOM-NEXT: movd %edi, %mm2 # sched: [1:1.00] -; ATOM-NEXT: paddd %mm2, %mm1 # sched: [1:0.50] -; ATOM-NEXT: paddd %mm1, %mm0 # sched: [1:0.50] -; ATOM-NEXT: movd %mm1, %ecx # sched: [3:3.00] +; ATOM-NEXT: movd %edi, %mm1 # sched: [1:1.00] +; ATOM-NEXT: movd (%rsi), %mm2 # sched: [1:1.00] +; ATOM-NEXT: paddd %mm1, %mm2 # sched: [1:0.50] +; ATOM-NEXT: paddd %mm2, %mm0 # sched: [1:0.50] +; ATOM-NEXT: movd %mm2, %ecx # sched: [3:3.00] ; ATOM-NEXT: movd %mm0, %eax # sched: [3:3.00] ; ATOM-NEXT: movl %ecx, (%rsi) # sched: [1:1.00] ; ATOM-NEXT: retq # sched: [79:39.50] @@ -3509,8 +3509,8 @@ define i64 @test_pinsrw(x86_mmx %a0, i32 %a1, i16* %a2) optsize { ; ; ATOM-LABEL: test_pinsrw: ; ATOM: # %bb.0: -; ATOM-NEXT: movswl (%rsi), %eax # sched: [1:1.00] ; ATOM-NEXT: pinsrw $0, %edi, %mm0 # sched: [1:1.00] +; ATOM-NEXT: movswl (%rsi), %eax # sched: [1:1.00] ; ATOM-NEXT: pinsrw $1, %eax, %mm0 # sched: [1:1.00] ; ATOM-NEXT: movq %mm0, %rax # sched: [3:3.00] ; ATOM-NEXT: retq # sched: [79:39.50] diff --git a/llvm/test/CodeGen/X86/schedule-x86_32.ll b/llvm/test/CodeGen/X86/schedule-x86_32.ll index 6f5c403c852..bcd1c6b74fc 100644 --- a/llvm/test/CodeGen/X86/schedule-x86_32.ll +++ b/llvm/test/CodeGen/X86/schedule-x86_32.ll @@ -1220,7 +1220,7 @@ define void @test_into() optsize { ; ATOM-LABEL: test_into: ; ATOM: # %bb.0: ; ATOM-NEXT: #APP -; ATOM-NEXT: into # sched: [0:?] +; ATOM-NEXT: into # sched: [6:3.00] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; diff --git a/llvm/test/CodeGen/X86/schedule-x86_64.ll b/llvm/test/CodeGen/X86/schedule-x86_64.ll index db49c55e199..859591f7045 100644 --- a/llvm/test/CodeGen/X86/schedule-x86_64.ll +++ b/llvm/test/CodeGen/X86/schedule-x86_64.ll @@ -15737,7 +15737,7 @@ define void @test_ud2() optsize { ; ATOM-LABEL: test_ud2: ; ATOM: # %bb.0: ; ATOM-NEXT: #APP -; ATOM-NEXT: ud2 # sched: [0:?] +; ATOM-NEXT: ud2 # sched: [100:0.50] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retq # sched: [79:39.50] ; diff --git a/llvm/test/CodeGen/X86/select.ll b/llvm/test/CodeGen/X86/select.ll index e7ee2657f61..7e881de0c80 100644 --- a/llvm/test/CodeGen/X86/select.ll +++ b/llvm/test/CodeGen/X86/select.ll @@ -104,14 +104,23 @@ declare i1 @return_false() ;; Select between two floating point constants. define float @test3(i32 %x) nounwind readnone { -; CHECK-LABEL: test3: -; CHECK: ## %bb.0: ## %entry -; CHECK-NEXT: xorl %eax, %eax -; CHECK-NEXT: testl %edi, %edi -; CHECK-NEXT: sete %al -; CHECK-NEXT: leaq {{.*}}(%rip), %rcx -; CHECK-NEXT: movss {{.*#+}} xmm0 = mem[0],zero,zero,zero -; CHECK-NEXT: retq +; GENERIC-LABEL: test3: +; GENERIC: ## %bb.0: ## %entry +; GENERIC-NEXT: xorl %eax, %eax +; GENERIC-NEXT: testl %edi, %edi +; GENERIC-NEXT: sete %al +; GENERIC-NEXT: leaq {{.*}}(%rip), %rcx +; GENERIC-NEXT: movss {{.*#+}} xmm0 = mem[0],zero,zero,zero +; GENERIC-NEXT: retq +; +; ATOM-LABEL: test3: +; ATOM: ## %bb.0: ## %entry +; ATOM-NEXT: xorl %eax, %eax +; ATOM-NEXT: leaq {{.*}}(%rip), %rcx +; ATOM-NEXT: testl %edi, %edi +; ATOM-NEXT: sete %al +; ATOM-NEXT: movss {{.*#+}} xmm0 = mem[0],zero,zero,zero +; ATOM-NEXT: retq ; ; MCU-LABEL: test3: ; MCU: # %bb.0: # %entry @@ -266,15 +275,25 @@ define void @test6(i32 %C, <4 x float>* %A, <4 x float>* %B) nounwind { ; Select with fp80's define x86_fp80 @test7(i32 %tmp8) nounwind { -; CHECK-LABEL: test7: -; CHECK: ## %bb.0: -; CHECK-NEXT: xorl %eax, %eax -; CHECK-NEXT: testl %edi, %edi -; CHECK-NEXT: setns %al -; CHECK-NEXT: shlq $4, %rax -; CHECK-NEXT: leaq {{.*}}(%rip), %rcx -; CHECK-NEXT: fldt (%rax,%rcx) -; CHECK-NEXT: retq +; GENERIC-LABEL: test7: +; GENERIC: ## %bb.0: +; GENERIC-NEXT: xorl %eax, %eax +; GENERIC-NEXT: testl %edi, %edi +; GENERIC-NEXT: setns %al +; GENERIC-NEXT: shlq $4, %rax +; GENERIC-NEXT: leaq {{.*}}(%rip), %rcx +; GENERIC-NEXT: fldt (%rax,%rcx) +; GENERIC-NEXT: retq +; +; ATOM-LABEL: test7: +; ATOM: ## %bb.0: +; ATOM-NEXT: xorl %eax, %eax +; ATOM-NEXT: leaq {{.*}}(%rip), %rcx +; ATOM-NEXT: testl %edi, %edi +; ATOM-NEXT: setns %al +; ATOM-NEXT: shlq $4, %rax +; ATOM-NEXT: fldt (%rax,%rcx) +; ATOM-NEXT: retq ; ; MCU-LABEL: test7: ; MCU: # %bb.0: @@ -330,31 +349,32 @@ define void @test8(i1 %c, <6 x i32>* %dst.addr, <6 x i32> %src1,<6 x i32> %src2) ; ATOM-NEXT: testb $1, %dil ; ATOM-NEXT: jne LBB7_1 ; ATOM-NEXT: ## %bb.2: -; ATOM-NEXT: movd {{.*#+}} xmm0 = mem[0],zero,zero,zero +; ATOM-NEXT: movd {{.*#+}} xmm1 = mem[0],zero,zero,zero ; ATOM-NEXT: movd {{.*#+}} xmm2 = mem[0],zero,zero,zero ; ATOM-NEXT: movd {{.*#+}} xmm3 = mem[0],zero,zero,zero -; ATOM-NEXT: movd {{.*#+}} xmm4 = mem[0],zero,zero,zero -; ATOM-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1] ; ATOM-NEXT: movd {{.*#+}} xmm0 = mem[0],zero,zero,zero +; ATOM-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1] +; ATOM-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1] +; ATOM-NEXT: movd {{.*#+}} xmm3 = mem[0],zero,zero,zero ; ATOM-NEXT: movd {{.*#+}} xmm1 = mem[0],zero,zero,zero ; ATOM-NEXT: jmp LBB7_3 ; ATOM-NEXT: LBB7_1: -; ATOM-NEXT: movd %r9d, %xmm0 +; ATOM-NEXT: movd %r9d, %xmm1 ; ATOM-NEXT: movd %r8d, %xmm2 -; ATOM-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1] ; ATOM-NEXT: movd %ecx, %xmm3 ; ATOM-NEXT: movd %edx, %xmm0 -; ATOM-NEXT: movd {{.*#+}} xmm4 = mem[0],zero,zero,zero +; ATOM-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1] +; ATOM-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1] +; ATOM-NEXT: movd {{.*#+}} xmm3 = mem[0],zero,zero,zero ; ATOM-NEXT: movd {{.*#+}} xmm1 = mem[0],zero,zero,zero ; ATOM-NEXT: LBB7_3: -; ATOM-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1] ; ATOM-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm2[0] ; ATOM-NEXT: pcmpeqd %xmm2, %xmm2 -; ATOM-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm4[0],xmm1[1],xmm4[1] +; ATOM-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1] ; ATOM-NEXT: paddd %xmm2, %xmm0 ; ATOM-NEXT: paddd %xmm2, %xmm1 -; ATOM-NEXT: movdqa %xmm0, (%rsi) ; ATOM-NEXT: movq %xmm1, 16(%rsi) +; ATOM-NEXT: movdqa %xmm0, (%rsi) ; ATOM-NEXT: retq ; ; MCU-LABEL: test8: @@ -634,8 +654,8 @@ define noalias i8* @test12(i64 %count) nounwind ssp noredzone { ; ATOM: ## %bb.0: ## %entry ; ATOM-NEXT: movq %rdi, %rax ; ATOM-NEXT: movl $4, %ecx -; ATOM-NEXT: mulq %rcx ; ATOM-NEXT: movq $-1, %rdi +; ATOM-NEXT: mulq %rcx ; ATOM-NEXT: cmovnoq %rax, %rdi ; ATOM-NEXT: jmp __Znam ## TAILCALL ; @@ -894,8 +914,8 @@ define void @clamp_i8(i32 %src, i8* %dst) { ; ATOM: ## %bb.0: ; ATOM-NEXT: cmpl $127, %edi ; ATOM-NEXT: movl $127, %eax -; ATOM-NEXT: cmovlel %edi, %eax ; ATOM-NEXT: movb $-128, %cl +; ATOM-NEXT: cmovlel %edi, %eax ; ATOM-NEXT: cmpl $-128, %eax ; ATOM-NEXT: jl LBB22_2 ; ATOM-NEXT: ## %bb.1: @@ -946,8 +966,8 @@ define void @clamp(i32 %src, i16* %dst) { ; ATOM: ## %bb.0: ; ATOM-NEXT: cmpl $32767, %edi ## imm = 0x7FFF ; ATOM-NEXT: movl $32767, %eax ## imm = 0x7FFF -; ATOM-NEXT: cmovlel %edi, %eax ; ATOM-NEXT: movl $32768, %ecx ## imm = 0x8000 +; ATOM-NEXT: cmovlel %edi, %eax ; ATOM-NEXT: cmpl $-32768, %eax ## imm = 0x8000 ; ATOM-NEXT: cmovgel %eax, %ecx ; ATOM-NEXT: movw %cx, (%rsi) diff --git a/llvm/test/CodeGen/X86/sse-schedule.ll b/llvm/test/CodeGen/X86/sse-schedule.ll index 7b6831afcda..dcd66435863 100644 --- a/llvm/test/CodeGen/X86/sse-schedule.ll +++ b/llvm/test/CodeGen/X86/sse-schedule.ll @@ -6133,8 +6133,6 @@ define <4 x float> @test_fnop() nounwind { ; 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: retq # sched: [79:39.50] ; ; SLM-LABEL: test_fnop: diff --git a/llvm/test/CodeGen/X86/sse2-schedule.ll b/llvm/test/CodeGen/X86/sse2-schedule.ll index 5a1f1fbc8b8..76c5360b570 100644 --- a/llvm/test/CodeGen/X86/sse2-schedule.ll +++ b/llvm/test/CodeGen/X86/sse2-schedule.ll @@ -4670,10 +4670,10 @@ define i64 @test_movd_64(<2 x i64> %a0, i64 %a1, i64 *%a2) { ; ATOM: # %bb.0: ; ATOM-NEXT: movq {{.*#+}} xmm1 = mem[0],zero sched: [1:1.00] ; ATOM-NEXT: movq %rdi, %xmm2 # sched: [1:1.00] -; ATOM-NEXT: paddq %xmm0, %xmm2 # sched: [2:1.00] ; ATOM-NEXT: paddq %xmm0, %xmm1 # sched: [2:1.00] -; ATOM-NEXT: movq %xmm2, (%rsi) # sched: [1:1.00] +; ATOM-NEXT: paddq %xmm0, %xmm2 # sched: [2:1.00] ; ATOM-NEXT: movq %xmm1, %rax # sched: [3:3.00] +; ATOM-NEXT: movq %xmm2, (%rsi) # sched: [1:1.00] ; ATOM-NEXT: retq # sched: [79:39.50] ; ; SLM-LABEL: test_movd_64: @@ -10447,10 +10447,11 @@ define <4 x i32> @test_pshufd(<4 x i32> %a0, <4 x i32> *%a1) { ; ; ATOM-LABEL: test_pshufd: ; ATOM: # %bb.0: -; ATOM-NEXT: pshufd {{.*#+}} xmm1 = mem[3,2,1,0] sched: [1:1.00] -; ATOM-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,0,3,2] sched: [1:1.00] -; ATOM-NEXT: paddd %xmm0, %xmm1 # sched: [1:0.50] -; ATOM-NEXT: movdqa %xmm1, %xmm0 # sched: [1:0.50] +; ATOM-NEXT: pshufd {{.*#+}} xmm1 = xmm0[1,0,3,2] sched: [1:1.00] +; ATOM-NEXT: pshufd {{.*#+}} xmm0 = mem[3,2,1,0] sched: [1:1.00] +; ATOM-NEXT: paddd %xmm1, %xmm0 # sched: [1:0.50] +; ATOM-NEXT: nop # sched: [1:0.50] +; ATOM-NEXT: nop # sched: [1:0.50] ; ATOM-NEXT: retq # sched: [79:39.50] ; ; SLM-LABEL: test_pshufd: @@ -10575,10 +10576,11 @@ define <8 x i16> @test_pshufhw(<8 x i16> %a0, <8 x i16> *%a1) { ; ; ATOM-LABEL: test_pshufhw: ; ATOM: # %bb.0: -; ATOM-NEXT: pshufhw {{.*#+}} xmm1 = mem[0,1,2,3,7,6,5,4] sched: [1:1.00] -; ATOM-NEXT: pshufhw {{.*#+}} xmm0 = xmm0[0,1,2,3,5,4,7,6] sched: [1:1.00] -; ATOM-NEXT: paddw %xmm0, %xmm1 # sched: [1:0.50] -; ATOM-NEXT: movdqa %xmm1, %xmm0 # sched: [1:0.50] +; ATOM-NEXT: pshufhw {{.*#+}} xmm1 = xmm0[0,1,2,3,5,4,7,6] sched: [1:1.00] +; ATOM-NEXT: pshufhw {{.*#+}} xmm0 = mem[0,1,2,3,7,6,5,4] sched: [1:1.00] +; ATOM-NEXT: paddw %xmm1, %xmm0 # sched: [1:0.50] +; ATOM-NEXT: nop # sched: [1:0.50] +; ATOM-NEXT: nop # sched: [1:0.50] ; ATOM-NEXT: retq # sched: [79:39.50] ; ; SLM-LABEL: test_pshufhw: @@ -10703,10 +10705,11 @@ define <8 x i16> @test_pshuflw(<8 x i16> %a0, <8 x i16> *%a1) { ; ; ATOM-LABEL: test_pshuflw: ; ATOM: # %bb.0: -; ATOM-NEXT: pshuflw {{.*#+}} xmm1 = mem[3,2,1,0,4,5,6,7] sched: [1:1.00] -; ATOM-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[1,0,3,2,4,5,6,7] sched: [1:1.00] -; ATOM-NEXT: paddw %xmm0, %xmm1 # sched: [1:0.50] -; ATOM-NEXT: movdqa %xmm1, %xmm0 # sched: [1:0.50] +; ATOM-NEXT: pshuflw {{.*#+}} xmm1 = xmm0[1,0,3,2,4,5,6,7] sched: [1:1.00] +; ATOM-NEXT: pshuflw {{.*#+}} xmm0 = mem[3,2,1,0,4,5,6,7] sched: [1:1.00] +; ATOM-NEXT: paddw %xmm1, %xmm0 # sched: [1:0.50] +; ATOM-NEXT: nop # sched: [1:0.50] +; ATOM-NEXT: nop # sched: [1:0.50] ; ATOM-NEXT: retq # sched: [79:39.50] ; ; SLM-LABEL: test_pshuflw: diff --git a/llvm/test/CodeGen/X86/sse3-schedule.ll b/llvm/test/CodeGen/X86/sse3-schedule.ll index 50bdf203c74..8c2424ec405 100644 --- a/llvm/test/CodeGen/X86/sse3-schedule.ll +++ b/llvm/test/CodeGen/X86/sse3-schedule.ll @@ -899,10 +899,9 @@ define <2 x double> @test_movddup(<2 x double> %a0, <2 x double> *%a1) { ; ; ATOM-LABEL: test_movddup: ; ATOM: # %bb.0: -; ATOM-NEXT: movddup {{.*#+}} xmm1 = mem[0,0] sched: [1:1.00] -; ATOM-NEXT: movddup {{.*#+}} xmm0 = xmm0[0,0] sched: [1:1.00] -; ATOM-NEXT: subpd %xmm0, %xmm1 # sched: [6:3.00] -; ATOM-NEXT: movapd %xmm1, %xmm0 # sched: [1:0.50] +; ATOM-NEXT: movddup {{.*#+}} xmm1 = xmm0[0,0] sched: [1:1.00] +; ATOM-NEXT: movddup {{.*#+}} xmm0 = mem[0,0] sched: [1:1.00] +; ATOM-NEXT: subpd %xmm1, %xmm0 # sched: [6:3.00] ; ATOM-NEXT: retq # sched: [79:39.50] ; ; SLM-LABEL: test_movddup: @@ -1027,10 +1026,9 @@ define <4 x float> @test_movshdup(<4 x float> %a0, <4 x float> *%a1) { ; ; ATOM-LABEL: test_movshdup: ; ATOM: # %bb.0: -; ATOM-NEXT: movshdup {{.*#+}} xmm1 = mem[1,1,3,3] sched: [1:1.00] -; ATOM-NEXT: movshdup {{.*#+}} xmm0 = xmm0[1,1,3,3] sched: [1:1.00] -; ATOM-NEXT: addps %xmm0, %xmm1 # sched: [5:5.00] -; ATOM-NEXT: movaps %xmm1, %xmm0 # sched: [1:0.50] +; ATOM-NEXT: movshdup {{.*#+}} xmm1 = xmm0[1,1,3,3] sched: [1:1.00] +; ATOM-NEXT: movshdup {{.*#+}} xmm0 = mem[1,1,3,3] sched: [1:1.00] +; ATOM-NEXT: addps %xmm1, %xmm0 # sched: [5:5.00] ; ATOM-NEXT: retq # sched: [79:39.50] ; ; SLM-LABEL: test_movshdup: @@ -1155,10 +1153,9 @@ define <4 x float> @test_movsldup(<4 x float> %a0, <4 x float> *%a1) { ; ; ATOM-LABEL: test_movsldup: ; ATOM: # %bb.0: -; ATOM-NEXT: movsldup {{.*#+}} xmm1 = mem[0,0,2,2] sched: [1:1.00] -; ATOM-NEXT: movsldup {{.*#+}} xmm0 = xmm0[0,0,2,2] sched: [1:1.00] -; ATOM-NEXT: addps %xmm0, %xmm1 # sched: [5:5.00] -; ATOM-NEXT: movaps %xmm1, %xmm0 # sched: [1:0.50] +; ATOM-NEXT: movsldup {{.*#+}} xmm1 = xmm0[0,0,2,2] sched: [1:1.00] +; ATOM-NEXT: movsldup {{.*#+}} xmm0 = mem[0,0,2,2] sched: [1:1.00] +; ATOM-NEXT: addps %xmm1, %xmm0 # sched: [5:5.00] ; ATOM-NEXT: retq # sched: [79:39.50] ; ; SLM-LABEL: test_movsldup: diff --git a/llvm/test/CodeGen/X86/ssse3-schedule.ll b/llvm/test/CodeGen/X86/ssse3-schedule.ll index ffa7ef12f38..d6177434f49 100644 --- a/llvm/test/CodeGen/X86/ssse3-schedule.ll +++ b/llvm/test/CodeGen/X86/ssse3-schedule.ll @@ -29,10 +29,11 @@ define <16 x i8> @test_pabsb(<16 x i8> %a0, <16 x i8> *%a1) { ; ; ATOM-LABEL: test_pabsb: ; ATOM: # %bb.0: -; ATOM-NEXT: pabsb (%rdi), %xmm1 # sched: [1:1.00] -; ATOM-NEXT: pabsb %xmm0, %xmm0 # sched: [1:0.50] -; ATOM-NEXT: por %xmm0, %xmm1 # sched: [1:0.50] -; ATOM-NEXT: movdqa %xmm1, %xmm0 # sched: [1:0.50] +; ATOM-NEXT: pabsb %xmm0, %xmm1 # sched: [1:0.50] +; ATOM-NEXT: pabsb (%rdi), %xmm0 # sched: [1:1.00] +; ATOM-NEXT: por %xmm1, %xmm0 # sched: [1:0.50] +; ATOM-NEXT: nop # sched: [1:0.50] +; ATOM-NEXT: nop # sched: [1:0.50] ; ATOM-NEXT: retq # sched: [79:39.50] ; ; SLM-LABEL: test_pabsb: @@ -157,10 +158,11 @@ define <4 x i32> @test_pabsd(<4 x i32> %a0, <4 x i32> *%a1) { ; ; ATOM-LABEL: test_pabsd: ; ATOM: # %bb.0: -; ATOM-NEXT: pabsd (%rdi), %xmm1 # sched: [1:1.00] -; ATOM-NEXT: pabsd %xmm0, %xmm0 # sched: [1:0.50] -; ATOM-NEXT: por %xmm0, %xmm1 # sched: [1:0.50] -; ATOM-NEXT: movdqa %xmm1, %xmm0 # sched: [1:0.50] +; ATOM-NEXT: pabsd %xmm0, %xmm1 # sched: [1:0.50] +; ATOM-NEXT: pabsd (%rdi), %xmm0 # sched: [1:1.00] +; ATOM-NEXT: por %xmm1, %xmm0 # sched: [1:0.50] +; ATOM-NEXT: nop # sched: [1:0.50] +; ATOM-NEXT: nop # sched: [1:0.50] ; ATOM-NEXT: retq # sched: [79:39.50] ; ; SLM-LABEL: test_pabsd: @@ -285,10 +287,11 @@ define <8 x i16> @test_pabsw(<8 x i16> %a0, <8 x i16> *%a1) { ; ; ATOM-LABEL: test_pabsw: ; ATOM: # %bb.0: -; ATOM-NEXT: pabsw (%rdi), %xmm1 # sched: [1:1.00] -; ATOM-NEXT: pabsw %xmm0, %xmm0 # sched: [1:0.50] -; ATOM-NEXT: por %xmm0, %xmm1 # sched: [1:0.50] -; ATOM-NEXT: movdqa %xmm1, %xmm0 # sched: [1:0.50] +; ATOM-NEXT: pabsw %xmm0, %xmm1 # sched: [1:0.50] +; ATOM-NEXT: pabsw (%rdi), %xmm0 # sched: [1:1.00] +; ATOM-NEXT: por %xmm1, %xmm0 # sched: [1:0.50] +; ATOM-NEXT: nop # sched: [1:0.50] +; ATOM-NEXT: nop # sched: [1:0.50] ; ATOM-NEXT: retq # sched: [79:39.50] ; ; SLM-LABEL: test_pabsw: diff --git a/llvm/test/CodeGen/X86/x87-schedule.ll b/llvm/test/CodeGen/X86/x87-schedule.ll index 41b62e833c0..5d01286cc60 100644 --- a/llvm/test/CodeGen/X86/x87-schedule.ll +++ b/llvm/test/CodeGen/X86/x87-schedule.ll @@ -177,10 +177,10 @@ define void @test_fadd(float *%a0, double *%a1) optsize { ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00] ; ATOM-NEXT: #APP -; ATOM-NEXT: fadd %st(0), %st(1) # sched: [0:?] -; ATOM-NEXT: fadd %st(2) # sched: [0:?] -; ATOM-NEXT: fadds (%ecx) # sched: [0:?] -; ATOM-NEXT: faddl (%eax) # sched: [0:?] +; ATOM-NEXT: fadd %st(0), %st(1) # sched: [5:5.00] +; ATOM-NEXT: fadd %st(2) # sched: [5:5.00] +; ATOM-NEXT: fadds (%ecx) # sched: [5:5.00] +; ATOM-NEXT: faddl (%eax) # sched: [5:5.00] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; @@ -301,10 +301,10 @@ define void @test_faddp_fiadd(i16 *%a0, i32 *%a1) optsize { ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00] ; ATOM-NEXT: #APP -; ATOM-NEXT: faddp %st(1) # sched: [0:?] -; ATOM-NEXT: faddp %st(2) # sched: [0:?] -; ATOM-NEXT: fiadds (%ecx) # sched: [0:?] -; ATOM-NEXT: fiaddl (%eax) # sched: [0:?] +; ATOM-NEXT: faddp %st(1) # sched: [5:5.00] +; ATOM-NEXT: faddp %st(2) # sched: [5:5.00] +; ATOM-NEXT: fiadds (%ecx) # sched: [5:5.00] +; ATOM-NEXT: fiaddl (%eax) # sched: [5:5.00] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; @@ -421,8 +421,8 @@ define void @test_fbld_fbstp(i8* %a0) optsize { ; ATOM: # %bb.0: ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] ; ATOM-NEXT: #APP -; ATOM-NEXT: fbld (%eax) # sched: [0:?] -; ATOM-NEXT: fbstp (%eax) # sched: [0:?] +; ATOM-NEXT: fbld (%eax) # sched: [100:0.50] +; ATOM-NEXT: fbstp (%eax) # sched: [100:0.50] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; @@ -895,10 +895,10 @@ define void @test_fcom(float *%a0, double *%a1) optsize { ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00] ; ATOM-NEXT: #APP -; ATOM-NEXT: fcom %st(1) # sched: [0:?] -; ATOM-NEXT: fcom %st(3) # sched: [0:?] -; ATOM-NEXT: fcoms (%ecx) # sched: [0:?] -; ATOM-NEXT: fcoml (%eax) # sched: [0:?] +; ATOM-NEXT: fcom %st(1) # sched: [5:5.00] +; ATOM-NEXT: fcom %st(3) # sched: [5:5.00] +; ATOM-NEXT: fcoms (%ecx) # sched: [5:5.00] +; ATOM-NEXT: fcoml (%eax) # sched: [5:5.00] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; @@ -1020,10 +1020,10 @@ define void @test_fcomp_fcompp(float *%a0, double *%a1) optsize { ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00] ; ATOM-NEXT: #APP -; ATOM-NEXT: fcomp %st(1) # sched: [0:?] -; ATOM-NEXT: fcomp %st(3) # sched: [0:?] -; ATOM-NEXT: fcomps (%ecx) # sched: [0:?] -; ATOM-NEXT: fcompl (%eax) # sched: [0:?] +; ATOM-NEXT: fcomp %st(1) # sched: [5:5.00] +; ATOM-NEXT: fcomp %st(3) # sched: [5:5.00] +; ATOM-NEXT: fcomps (%ecx) # sched: [5:5.00] +; ATOM-NEXT: fcompl (%eax) # sched: [5:5.00] ; ATOM-NEXT: fcompp # sched: [1:1.00] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] @@ -1385,10 +1385,10 @@ define void @test_fdiv(float *%a0, double *%a1) optsize { ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00] ; ATOM-NEXT: #APP -; ATOM-NEXT: fdiv %st(0), %st(1) # sched: [0:?] -; ATOM-NEXT: fdiv %st(2) # sched: [0:?] -; ATOM-NEXT: fdivs (%ecx) # sched: [0:?] -; ATOM-NEXT: fdivl (%eax) # sched: [0:?] +; ATOM-NEXT: fdiv %st(0), %st(1) # sched: [34:17.00] +; ATOM-NEXT: fdiv %st(2) # sched: [34:17.00] +; ATOM-NEXT: fdivs (%ecx) # sched: [34:17.00] +; ATOM-NEXT: fdivl (%eax) # sched: [34:17.00] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; @@ -1509,10 +1509,10 @@ define void @test_fdivp_fidiv(i16 *%a0, i32 *%a1) optsize { ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00] ; ATOM-NEXT: #APP -; ATOM-NEXT: fdivp %st(1) # sched: [0:?] -; ATOM-NEXT: fdivp %st(2) # sched: [0:?] -; ATOM-NEXT: fidivs (%ecx) # sched: [0:?] -; ATOM-NEXT: fidivl (%eax) # sched: [0:?] +; ATOM-NEXT: fdivp %st(1) # sched: [34:17.00] +; ATOM-NEXT: fdivp %st(2) # sched: [34:17.00] +; ATOM-NEXT: fidivs (%ecx) # sched: [34:17.00] +; ATOM-NEXT: fidivl (%eax) # sched: [34:17.00] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; @@ -1633,10 +1633,10 @@ define void @test_fdivr(float *%a0, double *%a1) optsize { ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00] ; ATOM-NEXT: #APP -; ATOM-NEXT: fdivr %st(0), %st(1) # sched: [0:?] -; ATOM-NEXT: fdivr %st(2) # sched: [0:?] -; ATOM-NEXT: fdivrs (%ecx) # sched: [0:?] -; ATOM-NEXT: fdivrl (%eax) # sched: [0:?] +; ATOM-NEXT: fdivr %st(0), %st(1) # sched: [34:17.00] +; ATOM-NEXT: fdivr %st(2) # sched: [34:17.00] +; ATOM-NEXT: fdivrs (%ecx) # sched: [34:17.00] +; ATOM-NEXT: fdivrl (%eax) # sched: [34:17.00] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; @@ -1757,10 +1757,10 @@ define void @test_fdivrp_fidivr(i16 *%a0, i32 *%a1) optsize { ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00] ; ATOM-NEXT: #APP -; ATOM-NEXT: fdivrp %st(1) # sched: [0:?] -; ATOM-NEXT: fdivrp %st(2) # sched: [0:?] -; ATOM-NEXT: fidivrs (%ecx) # sched: [0:?] -; ATOM-NEXT: fidivrl (%eax) # sched: [0:?] +; ATOM-NEXT: fdivrp %st(1) # sched: [34:17.00] +; ATOM-NEXT: fdivrp %st(2) # sched: [34:17.00] +; ATOM-NEXT: fidivrs (%ecx) # sched: [34:17.00] +; ATOM-NEXT: fidivrl (%eax) # sched: [34:17.00] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; @@ -1955,10 +1955,10 @@ define void @test_ficom(i16 *%a0, i32 *%a1) optsize { ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00] ; ATOM-NEXT: #APP -; ATOM-NEXT: ficoms (%ecx) # sched: [0:?] -; ATOM-NEXT: ficoml (%eax) # sched: [0:?] -; ATOM-NEXT: ficomps (%ecx) # sched: [0:?] -; ATOM-NEXT: ficompl (%eax) # sched: [0:?] +; ATOM-NEXT: ficoms (%ecx) # sched: [5:5.00] +; ATOM-NEXT: ficoml (%eax) # sched: [5:5.00] +; ATOM-NEXT: ficomps (%ecx) # sched: [5:5.00] +; ATOM-NEXT: ficompl (%eax) # sched: [5:5.00] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; @@ -2740,7 +2740,7 @@ define void @test_fldcw_fldenv(i8* %a0) optsize { ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] ; ATOM-NEXT: #APP ; ATOM-NEXT: fldcw (%eax) # sched: [5:2.50] -; ATOM-NEXT: fldenv (%eax) # sched: [0:?] +; ATOM-NEXT: fldenv (%eax) # sched: [100:0.50] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; @@ -2961,10 +2961,10 @@ define void @test_fmul(float *%a0, double *%a1) optsize { ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00] ; ATOM-NEXT: #APP -; ATOM-NEXT: fmul %st(0), %st(1) # sched: [0:?] -; ATOM-NEXT: fmul %st(2) # sched: [0:?] -; ATOM-NEXT: fmuls (%ecx) # sched: [0:?] -; ATOM-NEXT: fmull (%eax) # sched: [0:?] +; ATOM-NEXT: fmul %st(0), %st(1) # sched: [4:4.00] +; ATOM-NEXT: fmul %st(2) # sched: [4:4.00] +; ATOM-NEXT: fmuls (%ecx) # sched: [4:4.00] +; ATOM-NEXT: fmull (%eax) # sched: [4:4.00] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; @@ -3085,10 +3085,10 @@ define void @test_fmulp_fimul(i16 *%a0, i32 *%a1) optsize { ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00] ; ATOM-NEXT: #APP -; ATOM-NEXT: fmulp %st(1) # sched: [0:?] -; ATOM-NEXT: fmulp %st(2) # sched: [0:?] -; ATOM-NEXT: fimuls (%ecx) # sched: [0:?] -; ATOM-NEXT: fimull (%eax) # sched: [0:?] +; ATOM-NEXT: fmulp %st(1) # sched: [4:4.00] +; ATOM-NEXT: fmulp %st(2) # sched: [4:4.00] +; ATOM-NEXT: fimuls (%ecx) # sched: [4:4.00] +; ATOM-NEXT: fimull (%eax) # sched: [4:4.00] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; @@ -3584,7 +3584,7 @@ define void @test_frstor(i8* %a0) optsize { ; ATOM: # %bb.0: ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] ; ATOM-NEXT: #APP -; ATOM-NEXT: frstor (%eax) # sched: [0:?] +; ATOM-NEXT: frstor (%eax) # sched: [100:0.50] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; @@ -3670,7 +3670,7 @@ define void @test_fsave(i8* %a0) optsize { ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] ; ATOM-NEXT: #APP ; ATOM-NEXT: wait # sched: [1:0.50] -; ATOM-NEXT: fnsave (%eax) # sched: [0:?] +; ATOM-NEXT: fnsave (%eax) # sched: [100:0.50] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; @@ -3762,7 +3762,7 @@ define void @test_fnsave(i8* %a0) optsize { ; ATOM: # %bb.0: ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] ; ATOM-NEXT: #APP -; ATOM-NEXT: fnsave (%eax) # sched: [0:?] +; ATOM-NEXT: fnsave (%eax) # sched: [100:0.50] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; @@ -4314,9 +4314,9 @@ define void @test_fstcw_fstenv_fstsw(i8* %a0) optsize { ; ATOM-NEXT: wait # sched: [1:0.50] ; ATOM-NEXT: fnstcw (%eax) # sched: [8:4.00] ; ATOM-NEXT: wait # sched: [1:0.50] -; ATOM-NEXT: fnstenv (%eax) # sched: [0:?] +; ATOM-NEXT: fnstenv (%eax) # sched: [100:0.50] ; ATOM-NEXT: wait # sched: [1:0.50] -; ATOM-NEXT: fnstsw (%eax) # sched: [0:?] +; ATOM-NEXT: fnstsw (%eax) # sched: [100:0.50] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; @@ -4443,8 +4443,8 @@ define void @test_fnstcw_fnstenv_fnstsw(i8* %a0) optsize { ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] ; ATOM-NEXT: #APP ; ATOM-NEXT: fnstcw (%eax) # sched: [8:4.00] -; ATOM-NEXT: fnstenv (%eax) # sched: [0:?] -; ATOM-NEXT: fnstsw (%eax) # sched: [0:?] +; ATOM-NEXT: fnstenv (%eax) # sched: [100:0.50] +; ATOM-NEXT: fnstsw (%eax) # sched: [100:0.50] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; @@ -4549,10 +4549,10 @@ define void @test_fsub(float *%a0, double *%a1) optsize { ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00] ; ATOM-NEXT: #APP -; ATOM-NEXT: fsub %st(0), %st(1) # sched: [0:?] -; ATOM-NEXT: fsub %st(2) # sched: [0:?] -; ATOM-NEXT: fsubs (%ecx) # sched: [0:?] -; ATOM-NEXT: fsubl (%eax) # sched: [0:?] +; ATOM-NEXT: fsub %st(0), %st(1) # sched: [5:5.00] +; ATOM-NEXT: fsub %st(2) # sched: [5:5.00] +; ATOM-NEXT: fsubs (%ecx) # sched: [5:5.00] +; ATOM-NEXT: fsubl (%eax) # sched: [5:5.00] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; @@ -4673,10 +4673,10 @@ define void @test_fsubp_fisub(i16 *%a0, i32 *%a1) optsize { ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00] ; ATOM-NEXT: #APP -; ATOM-NEXT: fsubp %st(1) # sched: [0:?] -; ATOM-NEXT: fsubp %st(2) # sched: [0:?] -; ATOM-NEXT: fisubs (%ecx) # sched: [0:?] -; ATOM-NEXT: fisubl (%eax) # sched: [0:?] +; ATOM-NEXT: fsubp %st(1) # sched: [5:5.00] +; ATOM-NEXT: fsubp %st(2) # sched: [5:5.00] +; ATOM-NEXT: fisubs (%ecx) # sched: [5:5.00] +; ATOM-NEXT: fisubl (%eax) # sched: [5:5.00] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; @@ -4797,10 +4797,10 @@ define void @test_fsubr(float *%a0, double *%a1) optsize { ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00] ; ATOM-NEXT: #APP -; ATOM-NEXT: fsubr %st(0), %st(1) # sched: [0:?] -; ATOM-NEXT: fsubr %st(2) # sched: [0:?] -; ATOM-NEXT: fsubrs (%ecx) # sched: [0:?] -; ATOM-NEXT: fsubrl (%eax) # sched: [0:?] +; ATOM-NEXT: fsubr %st(0), %st(1) # sched: [5:5.00] +; ATOM-NEXT: fsubr %st(2) # sched: [5:5.00] +; ATOM-NEXT: fsubrs (%ecx) # sched: [5:5.00] +; ATOM-NEXT: fsubrl (%eax) # sched: [5:5.00] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; @@ -4921,10 +4921,10 @@ define void @test_fsubrp_fisubr(i16 *%a0, i32 *%a1) optsize { ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00] ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00] ; ATOM-NEXT: #APP -; ATOM-NEXT: fsubrp %st(1) # sched: [0:?] -; ATOM-NEXT: fsubrp %st(2) # sched: [0:?] -; ATOM-NEXT: fisubrs (%ecx) # sched: [0:?] -; ATOM-NEXT: fisubrl (%eax) # sched: [0:?] +; ATOM-NEXT: fsubrp %st(1) # sched: [5:5.00] +; ATOM-NEXT: fsubrp %st(2) # sched: [5:5.00] +; ATOM-NEXT: fisubrs (%ecx) # sched: [5:5.00] +; ATOM-NEXT: fisubrl (%eax) # sched: [5:5.00] ; ATOM-NEXT: #NO_APP ; ATOM-NEXT: retl # sched: [79:39.50] ; |

