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