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 }