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: __gnu_h2f_ieee
;
; 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: __gnu_f2h_ieee
;
; 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
}
|