xref: /llvm-project/llvm/test/CodeGen/X86/zero-remat.ll (revision 3d2961b17f1927c0cd116f0857f42c3669cfa9e7)
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 4
2; REQUIRES: asserts
3; RUN: llc < %s -mtriple=x86_64-- | FileCheck %s --check-prefix=X64
4; RUN: llc < %s -mtriple=x86_64-- -o /dev/null -stats  -info-output-file - | grep asm-printer  | grep 12
5; RUN: llc < %s -mtriple=i686-- | FileCheck %s --check-prefix=X86
6
7declare void @bar(double %x)
8declare void @barf(float %x)
9
10define double @foo() nounwind {
11; X64-LABEL: foo:
12; X64:       # %bb.0:
13; X64-NEXT:    pushq %rax
14; X64-NEXT:    xorps %xmm0, %xmm0
15; X64-NEXT:    callq bar@PLT
16; X64-NEXT:    xorps %xmm0, %xmm0
17; X64-NEXT:    popq %rax
18; X64-NEXT:    retq
19;
20; X86-LABEL: foo:
21; X86:       # %bb.0:
22; X86-NEXT:    subl $8, %esp
23; X86-NEXT:    fldz
24; X86-NEXT:    fstpl (%esp)
25; X86-NEXT:    calll bar@PLT
26; X86-NEXT:    fldz
27; X86-NEXT:    addl $8, %esp
28; X86-NEXT:    retl
29  call void @bar(double 0.0)
30  ret double 0.0
31}
32
33
34define float @foof() nounwind {
35; X64-LABEL: foof:
36; X64:       # %bb.0:
37; X64-NEXT:    pushq %rax
38; X64-NEXT:    xorps %xmm0, %xmm0
39; X64-NEXT:    callq barf@PLT
40; X64-NEXT:    xorps %xmm0, %xmm0
41; X64-NEXT:    popq %rax
42; X64-NEXT:    retq
43;
44; X86-LABEL: foof:
45; X86:       # %bb.0:
46; X86-NEXT:    pushl $0
47; X86-NEXT:    calll barf@PLT
48; X86-NEXT:    addl $4, %esp
49; X86-NEXT:    fldz
50; X86-NEXT:    retl
51  call void @barf(float 0.0)
52  ret float 0.0
53}
54