Mercurial > hg > CbC > CbC_llvm
comparison test/CodeGen/X86/fp128-libcalls.ll @ 100:7d135dc70f03 LLVM 3.9
LLVM 3.9
author | Miyagi Mitsuki <e135756@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 26 Jan 2016 22:53:40 +0900 |
parents | |
children | 803732b1fca8 |
comparison
equal
deleted
inserted
replaced
96:6418606d0ead | 100:7d135dc70f03 |
---|---|
1 ; RUN: llc < %s -O2 -mtriple=x86_64-linux-android -mattr=+mmx | FileCheck %s | |
2 ; RUN: llc < %s -O2 -mtriple=x86_64-linux-gnu -mattr=+mmx | FileCheck %s | |
3 | |
4 ; Check all soft floating point library function calls. | |
5 | |
6 @vf64 = common global double 0.000000e+00, align 8 | |
7 @vf128 = common global fp128 0xL00000000000000000000000000000000, align 16 | |
8 | |
9 define void @Test128Add(fp128 %d1, fp128 %d2) { | |
10 entry: | |
11 %add = fadd fp128 %d1, %d2 | |
12 store fp128 %add, fp128* @vf128, align 16 | |
13 ret void | |
14 ; CHECK-LABEL: Test128Add: | |
15 ; CHECK: callq __addtf3 | |
16 ; CHECK-NEXT: movaps %xmm0, vf128(%rip) | |
17 ; CHECK: retq | |
18 } | |
19 | |
20 define void @Test128_1Add(fp128 %d1){ | |
21 entry: | |
22 %0 = load fp128, fp128* @vf128, align 16 | |
23 %add = fadd fp128 %0, %d1 | |
24 store fp128 %add, fp128* @vf128, align 16 | |
25 ret void | |
26 ; CHECK-LABEL: Test128_1Add: | |
27 ; CHECK: movaps %xmm0, %xmm1 | |
28 ; CHECK-NEXT: movaps vf128(%rip), %xmm0 | |
29 ; CHECK-NEXT: callq __addtf3 | |
30 ; CHECK-NEXT: movaps %xmm0, vf128(%rip) | |
31 ; CHECK: retq | |
32 } | |
33 | |
34 define void @Test128Sub(fp128 %d1, fp128 %d2){ | |
35 entry: | |
36 %sub = fsub fp128 %d1, %d2 | |
37 store fp128 %sub, fp128* @vf128, align 16 | |
38 ret void | |
39 ; CHECK-LABEL: Test128Sub: | |
40 ; CHECK: callq __subtf3 | |
41 ; CHECK-NEXT: movaps %xmm0, vf128(%rip) | |
42 ; CHECK: retq | |
43 } | |
44 | |
45 define void @Test128_1Sub(fp128 %d1){ | |
46 entry: | |
47 %0 = load fp128, fp128* @vf128, align 16 | |
48 %sub = fsub fp128 %0, %d1 | |
49 store fp128 %sub, fp128* @vf128, align 16 | |
50 ret void | |
51 ; CHECK-LABEL: Test128_1Sub: | |
52 ; CHECK: movaps %xmm0, %xmm1 | |
53 ; CHECK-NEXT: movaps vf128(%rip), %xmm0 | |
54 ; CHECK-NEXT: callq __subtf3 | |
55 ; CHECK-NEXT: movaps %xmm0, vf128(%rip) | |
56 ; CHECK: retq | |
57 } | |
58 | |
59 define void @Test128Mul(fp128 %d1, fp128 %d2){ | |
60 entry: | |
61 %mul = fmul fp128 %d1, %d2 | |
62 store fp128 %mul, fp128* @vf128, align 16 | |
63 ret void | |
64 ; CHECK-LABEL: Test128Mul: | |
65 ; CHECK: callq __multf3 | |
66 ; CHECK-NEXT: movaps %xmm0, vf128(%rip) | |
67 ; CHECK: retq | |
68 } | |
69 | |
70 define void @Test128_1Mul(fp128 %d1){ | |
71 entry: | |
72 %0 = load fp128, fp128* @vf128, align 16 | |
73 %mul = fmul fp128 %0, %d1 | |
74 store fp128 %mul, fp128* @vf128, align 16 | |
75 ret void | |
76 ; CHECK-LABEL: Test128_1Mul: | |
77 ; CHECK: movaps %xmm0, %xmm1 | |
78 ; CHECK-NEXT: movaps vf128(%rip), %xmm0 | |
79 ; CHECK-NEXT: callq __multf3 | |
80 ; CHECK-NEXT: movaps %xmm0, vf128(%rip) | |
81 ; CHECK: retq | |
82 } | |
83 | |
84 define void @Test128Div(fp128 %d1, fp128 %d2){ | |
85 entry: | |
86 %div = fdiv fp128 %d1, %d2 | |
87 store fp128 %div, fp128* @vf128, align 16 | |
88 ret void | |
89 ; CHECK-LABEL: Test128Div: | |
90 ; CHECK: callq __divtf3 | |
91 ; CHECK-NEXT: movaps %xmm0, vf128(%rip) | |
92 ; CHECK: retq | |
93 } | |
94 | |
95 define void @Test128_1Div(fp128 %d1){ | |
96 entry: | |
97 %0 = load fp128, fp128* @vf128, align 16 | |
98 %div = fdiv fp128 %0, %d1 | |
99 store fp128 %div, fp128* @vf128, align 16 | |
100 ret void | |
101 ; CHECK-LABEL: Test128_1Div: | |
102 ; CHECK: movaps %xmm0, %xmm1 | |
103 ; CHECK-NEXT: movaps vf128(%rip), %xmm0 | |
104 ; CHECK-NEXT: callq __divtf3 | |
105 ; CHECK-NEXT: movaps %xmm0, vf128(%rip) | |
106 ; CHECK: retq | |
107 } |