1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2025-02-01 13:11:39 +01:00

[x86] preserve test intent by removing undef

We need to clean up the DAG floating-point undef logic.
This process is similar to how we handled integer undef
logic in D43141. 

And as we did there, I'm trying to reduce the patch by 
changing tests that would probably become meaningless
once we make those fixes.

llvm-svn: 332500
This commit is contained in:
Sanjay Patel 2018-05-16 17:58:08 +00:00
parent 34eb717eeb
commit 62db9829ad

View File

@ -24,27 +24,27 @@ define void @test() local_unnamed_addr {
; CHECK-NEXT: fcmove %st(4), %st(0)
; CHECK-NEXT: movl $1, %eax
; CHECK-NEXT: cmpq %rax, %rax
; CHECK-NEXT: fld %st(3)
; CHECK-NEXT: fcmove %st(5), %st(0)
; CHECK-NEXT: fstp %st(5)
; CHECK-NEXT: fxch %st(2)
; CHECK-NEXT: fadd %st(3)
; CHECK-NEXT: fxch %st(4)
; CHECK-NEXT: fadd %st(3)
; CHECK-NEXT: fxch %st(2)
; CHECK-NEXT: fadd %st(3)
; CHECK-NEXT: fxch %st(3)
; CHECK-NEXT: fcmove %st(4), %st(0)
; CHECK-NEXT: fstp %st(4)
; CHECK-NEXT: fxch %st(1)
; CHECK-NEXT: faddp %st(3)
; CHECK-NEXT: fadd %st(0), %st(0)
; CHECK-NEXT: fxch %st(3)
; CHECK-NEXT: fadd %st(0), %st(0)
; CHECK-NEXT: fxch %st(2)
; CHECK-NEXT: fadd %st(0), %st(0)
; CHECK-NEXT: fxch %st(1)
; CHECK-NEXT: fadd %st(0), %st(0)
; CHECK-NEXT: fxch %st(3)
; CHECK-NEXT: fstpt (%rax)
; CHECK-NEXT: fxch %st(1)
; CHECK-NEXT: fxch %st(2)
; CHECK-NEXT: fstpt (%rax)
; CHECK-NEXT: fxch %st(1)
; CHECK-NEXT: fstpt (%rax)
; CHECK-NEXT: fstpt (%rax)
%1 = icmp eq <4 x i64> <i64 0, i64 1, i64 2, i64 3>, undef
%2 = select <4 x i1> %1, <4 x x86_fp80> <x86_fp80 0xK3FFF8000000000000000, x86_fp80 0xK3FFF8000000000000000, x86_fp80 0xK3FFF8000000000000000, x86_fp80 0xK3FFF8000000000000000>, <4 x x86_fp80> zeroinitializer
%3 = fadd <4 x x86_fp80> undef, %2
%3 = fadd <4 x x86_fp80> %2, %2
%4 = shufflevector <4 x x86_fp80> %3, <4 x x86_fp80> undef, <8 x i32> <i32 0, i32 4, i32 1, i32 5, i32 2, i32 6, i32 3, i32 7>
store <8 x x86_fp80> %4, <8 x x86_fp80>* undef, align 16
unreachable