Re-implement the main strength-reduction portion of LoopStrengthReduction.
[oota-llvm.git] / test / CodeGen / X86 / zero-remat.ll
1 ; RUN: llc < %s -march=x86-64 | FileCheck %s --check-prefix=CHECK-64
2 ; RUN: llc < %s -march=x86-64 -stats  -info-output-file - | grep asm-printer  | grep 12
3 ; RUN: llc < %s -march=x86 | FileCheck %s --check-prefix=CHECK-32
4
5 declare void @bar(double %x)
6 declare void @barf(float %x)
7
8 define double @foo() nounwind {
9
10   call void @bar(double 0.0)
11   ret double 0.0
12
13 ;CHECK-32: foo:
14 ;CHECK-32: call
15 ;CHECK-32: fldz
16 ;CHECK-32: ret
17
18 ;CHECK-64: foo:
19 ;CHECK-64: pxor
20 ;CHECK-64: call
21 ;CHECK-64: pxor
22 ;CHECK-64: ret
23 }
24
25
26 define float @foof() nounwind {
27   call void @barf(float 0.0)
28   ret float 0.0
29
30 ;CHECK-32: foof:
31 ;CHECK-32: call
32 ;CHECK-32: fldz
33 ;CHECK-32: ret
34
35 ;CHECK-64: foof:
36 ;CHECK-64: pxor
37 ;CHECK-64: call
38 ;CHECK-64: pxor
39 ;CHECK-64: ret
40 }