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