Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / llvm / test / CodeGen / X86 / fp-i129.ll
blob97116ce4e621fc355d7b5dd8ef307d0d9429c55e
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
4 define 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
11 define 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
18 define 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
25 define 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
32 define 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
39 define 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
46 define 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
53 define 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
60 define 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
67 define 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
74 define 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
81 define 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
88 ; higher sizes
89 define 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
96 ; half tests
97 define i257 @fptosi_half(half %a) nounwind {
98 ; X86-LABEL: fptosi_half:
99 ; X86: __gnu_h2f_ieee
101 ; X64-LABEL: fptosi_half:
102 ; X64: __extendhfsf2
103   %res = fptosi half %a to i257
104   ret i257 %res
107 define half @uitofp_half(i257 %a) nounwind {
108 ; X86-LABEL: uitofp_half:
109 ; X86: __gnu_f2h_ieee
111 ; X64-LABEL: uitofp_half:
112 ; X64: __truncsfhf2
113   %res = uitofp i257 %a to half
114   ret half %res
117 ; x86_fp80 tests
118 define 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
125 define 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