aboutsummaryrefslogtreecommitdiff
path: root/llvm/test/CodeGen/X86/fp-i129.ll
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
}