xref: /llvm-project/llvm/test/CodeGen/X86/fp-i129.ll (revision 89f36dd8f32f85bfaf19dfa2cbb12d6622727bfb)
1; RUN: llc < %s -mtriple=i686-unknown-unknown | FileCheck %s --check-prefixes=CHECK,X86
2; RUN: llc < %s -mtriple=x86_64-unknown-unknown | FileCheck %s --check-prefixes=CHECK,X64
3
4define i129 @fptosi_float(float %a) nounwind {
5; CHECK-LABEL: fptosi_float:
6; CHECK-NOT:     call
7  %res = fptosi float %a to i129
8  ret i129 %res
9}
10
11define i129 @fptosi_double(double %a) nounwind {
12; CHECK-LABEL: fptosi_double:
13; CHECK-NOT:     call
14  %res = fptosi double %a to i129
15  ret i129 %res
16}
17
18define i129 @fptosi_fp128(fp128 %a) nounwind {
19; CHECK-LABEL: fptosi_fp128:
20; CHECK-NOT:     call
21  %res = fptosi fp128 %a to i129
22  ret i129 %res
23}
24
25define i129 @fptoui_float(float %a) nounwind {
26; CHECK-LABEL: fptoui_float:
27; CHECK-NOT:     call
28  %res = fptoui float %a to i129
29  ret i129 %res
30}
31
32define i129 @fptoui_double(double %a) nounwind {
33; CHECK-LABEL: fptoui_double:
34; CHECK-NOT:     call
35  %res = fptoui double %a to i129
36  ret i129 %res
37}
38
39define i129 @fptoui_fp128(fp128 %a) nounwind {
40; CHECK-LABEL: fptoui_fp128:
41; CHECK-NOT:     call
42  %res = fptoui fp128 %a to i129
43  ret i129 %res
44}
45
46define float @sitofp_float(i129 %a) nounwind {
47; CHECK-LABEL: sitofp_float:
48; CHECK-NOT:     call
49  %res = sitofp i129 %a to float
50  ret float %res
51}
52
53define double @sitofp_double(i129 %a) nounwind {
54; CHECK-LABEL: sitofp_double:
55; CHECK-NOT:     call
56  %res = sitofp i129 %a to double
57  ret double %res
58}
59
60define fp128 @sitofp_fp128(i129 %a) nounwind {
61; CHECK-LABEL: sitofp_fp128:
62; CHECK-NOT:     call
63  %res = sitofp i129 %a to fp128
64  ret fp128 %res
65}
66
67define float @uitofp_float(i129 %a) nounwind {
68; CHECK-LABEL: uitofp_float:
69; CHECK-NOT:     call
70  %res = uitofp i129 %a to float
71  ret float %res
72}
73
74define double @uitofp_double(i129 %a) nounwind {
75; CHECK-LABEL: uitofp_double:
76; CHECK-NOT:     call
77  %res = uitofp i129 %a to double
78  ret double %res
79}
80
81define fp128 @uitofp_fp128(i129 %a) nounwind {
82; CHECK-LABEL: uitofp_fp128:
83; CHECK-NOT:     call
84  %res = uitofp i129 %a to fp128
85  ret fp128 %res
86}
87
88; higher sizes
89define i257 @fptosi257_double(double %a) nounwind {
90; CHECK-LABEL: fptosi257_double:
91; CHECK-NOT:     call
92  %res = fptosi double %a to i257
93  ret i257 %res
94}
95
96; half tests
97define i257 @fptosi_half(half %a) nounwind {
98; X86-LABEL: fptosi_half:
99; X86: __gnu_h2f_ieee
100;
101; X64-LABEL: fptosi_half:
102; X64: __extendhfsf2
103  %res = fptosi half %a to i257
104  ret i257 %res
105}
106
107define half @uitofp_half(i257 %a) nounwind {
108; X86-LABEL: uitofp_half:
109; X86: __gnu_f2h_ieee
110;
111; X64-LABEL: uitofp_half:
112; X64: __truncsfhf2
113  %res = uitofp i257 %a to half
114  ret half %res
115}
116
117; x86_fp80 tests
118define i257 @fptoui_x86_fp80(x86_fp80 %a) nounwind {
119; CHECK-LABEL: fptoui_x86_fp80:
120; CHECK: __extendxftf2
121  %res = fptoui x86_fp80 %a to i257
122  ret i257 %res
123}
124
125define x86_fp80 @sitofp_x86_fp80(i257 %a) nounwind {
126; CHECK-LABEL: sitofp_x86_fp80:
127; CHECK: __trunctfxf2
128  %res = sitofp i257 %a to x86_fp80
129  ret x86_fp80 %res
130}
131