[Alignment][NFC] Use Align with TargetLowering::setMinFunctionAlignment
[llvm-core.git] / test / CodeGen / X86 / fp128-libcalls.ll
blob09bda890fa8cafe0bd99cc7fcb333d7e4f61ba36
1 ; RUN: llc < %s -O2 -mtriple=x86_64-linux-android -mattr=+mmx \
2 ; RUN:     -enable-legalize-types-checking | FileCheck %s
3 ; RUN: llc < %s -O2 -mtriple=x86_64-linux-gnu -mattr=+mmx \
4 ; RUN:     -enable-legalize-types-checking | FileCheck %s
6 ; Check all soft floating point library function calls.
8 @vf64 = common global double 0.000000e+00, align 8
9 @vf128 = common global fp128 0xL00000000000000000000000000000000, align 16
11 define void @Test128Add(fp128 %d1, fp128 %d2) {
12 entry:
13   %add = fadd fp128 %d1, %d2
14   store fp128 %add, fp128* @vf128, align 16
15   ret void
16 ; CHECK-LABEL: Test128Add:
17 ; CHECK:       callq __addtf3
18 ; CHECK-NEXT:  movaps %xmm0, vf128(%rip)
19 ; CHECK:       retq
22 define void @Test128_1Add(fp128 %d1){
23 entry:
24   %0 = load fp128, fp128* @vf128, align 16
25   %add = fadd fp128 %0, %d1
26   store fp128 %add, fp128* @vf128, align 16
27   ret void
28 ; CHECK-LABEL: Test128_1Add:
29 ; CHECK:       movaps  %xmm0, %xmm1
30 ; CHECK-NEXT:  movaps  vf128(%rip), %xmm0
31 ; CHECK-NEXT:  callq   __addtf3
32 ; CHECK-NEXT:  movaps  %xmm0, vf128(%rip)
33 ; CHECK:       retq
36 define void @Test128Sub(fp128 %d1, fp128 %d2){
37 entry:
38   %sub = fsub fp128 %d1, %d2
39   store fp128 %sub, fp128* @vf128, align 16
40   ret void
41 ; CHECK-LABEL: Test128Sub:
42 ; CHECK:       callq __subtf3
43 ; CHECK-NEXT:  movaps %xmm0, vf128(%rip)
44 ; CHECK:       retq
47 define void @Test128_1Sub(fp128 %d1){
48 entry:
49   %0 = load fp128, fp128* @vf128, align 16
50   %sub = fsub fp128 %0, %d1
51   store fp128 %sub, fp128* @vf128, align 16
52   ret void
53 ; CHECK-LABEL: Test128_1Sub:
54 ; CHECK:       movaps  %xmm0, %xmm1
55 ; CHECK-NEXT:  movaps  vf128(%rip), %xmm0
56 ; CHECK-NEXT:  callq   __subtf3
57 ; CHECK-NEXT:  movaps  %xmm0, vf128(%rip)
58 ; CHECK:       retq
61 define void @Test128Mul(fp128 %d1, fp128 %d2){
62 entry:
63   %mul = fmul fp128 %d1, %d2
64   store fp128 %mul, fp128* @vf128, align 16
65   ret void
66 ; CHECK-LABEL: Test128Mul:
67 ; CHECK:       callq __multf3
68 ; CHECK-NEXT:  movaps %xmm0, vf128(%rip)
69 ; CHECK:       retq
72 define void @Test128_1Mul(fp128 %d1){
73 entry:
74   %0 = load fp128, fp128* @vf128, align 16
75   %mul = fmul fp128 %0, %d1
76   store fp128 %mul, fp128* @vf128, align 16
77   ret void
78 ; CHECK-LABEL: Test128_1Mul:
79 ; CHECK:       movaps  %xmm0, %xmm1
80 ; CHECK-NEXT:  movaps  vf128(%rip), %xmm0
81 ; CHECK-NEXT:  callq   __multf3
82 ; CHECK-NEXT:  movaps  %xmm0, vf128(%rip)
83 ; CHECK:       retq
86 define void @Test128Div(fp128 %d1, fp128 %d2){
87 entry:
88   %div = fdiv fp128 %d1, %d2
89   store fp128 %div, fp128* @vf128, align 16
90   ret void
91 ; CHECK-LABEL: Test128Div:
92 ; CHECK:       callq __divtf3
93 ; CHECK-NEXT:  movaps %xmm0, vf128(%rip)
94 ; CHECK:       retq
97 define void @Test128_1Div(fp128 %d1){
98 entry:
99   %0 = load fp128, fp128* @vf128, align 16
100   %div = fdiv fp128 %0, %d1
101   store fp128 %div, fp128* @vf128, align 16
102   ret void
103 ; CHECK-LABEL: Test128_1Div:
104 ; CHECK:       movaps  %xmm0, %xmm1
105 ; CHECK-NEXT:  movaps  vf128(%rip), %xmm0
106 ; CHECK-NEXT:  callq   __divtf3
107 ; CHECK-NEXT:  movaps  %xmm0, vf128(%rip)
108 ; CHECK:       retq