166 lines · plain
1; RUN: llc < %s -mtriple=nvptx -mcpu=sm_20 | FileCheck %s2; RUN: llc < %s -mtriple=nvptx64 -mcpu=sm_20 | FileCheck %s3; RUN: %if ptxas-ptr32 %{ llc < %s -mtriple=nvptx -mcpu=sm_20 | %ptxas-verify %}4; RUN: %if ptxas %{ llc < %s -mtriple=nvptx64 -mcpu=sm_20 | %ptxas-verify %}5 6define i16 @cvt_u16_f32(float %x) {7; CHECK: cvt.rzi.u16.f32 %rs{{[0-9]+}}, %r{{[0-9]+}};8; CHECK: ret;9 %a = fptoui float %x to i1610 ret i16 %a11}12define i16 @cvt_u16_f64(double %x) {13; CHECK: cvt.rzi.u16.f64 %rs{{[0-9]+}}, %rd{{[0-9]+}};14; CHECK: ret;15 %a = fptoui double %x to i1616 ret i16 %a17}18define i32 @cvt_u32_f32(float %x) {19; CHECK: cvt.rzi.u32.f32 %r{{[0-9]+}}, %r{{[0-9]+}};20; CHECK: ret;21 %a = fptoui float %x to i3222 ret i32 %a23}24define i32 @cvt_u32_f64(double %x) {25; CHECK: cvt.rzi.u32.f64 %r{{[0-9]+}}, %rd{{[0-9]+}};26; CHECK: ret;27 %a = fptoui double %x to i3228 ret i32 %a29}30define i64 @cvt_u64_f32(float %x) {31; CHECK: cvt.rzi.u64.f32 %rd{{[0-9]+}}, %r{{[0-9]+}};32; CHECK: ret;33 %a = fptoui float %x to i6434 ret i64 %a35}36define i64 @cvt_u64_f64(double %x) {37; CHECK: cvt.rzi.u64.f64 %rd{{[0-9]+}}, %rd{{[0-9]+}};38; CHECK: ret;39 %a = fptoui double %x to i6440 ret i64 %a41}42 43define float @cvt_f32_i16(i16 %x) {44; CHECK: cvt.rn.f32.u16 %r{{[0-9]+}}, %rs{{[0-9]+}};45; CHECK: ret;46 %a = uitofp i16 %x to float47 ret float %a48}49define float @cvt_f32_i32(i32 %x) {50; CHECK: cvt.rn.f32.u32 %r{{[0-9]+}}, %r{{[0-9]+}};51; CHECK: ret;52 %a = uitofp i32 %x to float53 ret float %a54}55define float @cvt_f32_i64(i64 %x) {56; CHECK: cvt.rn.f32.u64 %r{{[0-9]+}}, %rd{{[0-9]+}};57; CHECK: ret;58 %a = uitofp i64 %x to float59 ret float %a60}61define double @cvt_f64_i16(i16 %x) {62; CHECK: cvt.rn.f64.u16 %rd{{[0-9]+}}, %rs{{[0-9]+}};63; CHECK: ret;64 %a = uitofp i16 %x to double65 ret double %a66}67define double @cvt_f64_i32(i32 %x) {68; CHECK: cvt.rn.f64.u32 %rd{{[0-9]+}}, %r{{[0-9]+}};69; CHECK: ret;70 %a = uitofp i32 %x to double71 ret double %a72}73define double @cvt_f64_i64(i64 %x) {74; CHECK: cvt.rn.f64.u64 %rd{{[0-9]+}}, %rd{{[0-9]+}};75; CHECK: ret;76 %a = uitofp i64 %x to double77 ret double %a78}79 80define float @cvt_f32_f64(double %x) {81; CHECK: cvt.rn.f32.f64 %r{{[0-9]+}}, %rd{{[0-9]+}};82; CHECK: ret;83 %a = fptrunc double %x to float84 ret float %a85}86define double @cvt_f64_f32(float %x) {87; CHECK: cvt.f64.f32 %rd{{[0-9]+}}, %r{{[0-9]+}};88; CHECK: ret;89 %a = fpext float %x to double90 ret double %a91}92 93define float @cvt_f32_s16(i16 %x) {94; CHECK: cvt.rn.f32.s16 %r{{[0-9]+}}, %rs{{[0-9]+}}95; CHECK: ret96 %a = sitofp i16 %x to float97 ret float %a98}99define float @cvt_f32_s32(i32 %x) {100; CHECK: cvt.rn.f32.s32 %r{{[0-9]+}}, %r{{[0-9]+}}101; CHECK: ret102 %a = sitofp i32 %x to float103 ret float %a104}105define float @cvt_f32_s64(i64 %x) {106; CHECK: cvt.rn.f32.s64 %r{{[0-9]+}}, %rd{{[0-9]+}}107; CHECK: ret108 %a = sitofp i64 %x to float109 ret float %a110}111define double @cvt_f64_s16(i16 %x) {112; CHECK: cvt.rn.f64.s16 %rd{{[0-9]+}}, %rs{{[0-9]+}}113; CHECK: ret114 %a = sitofp i16 %x to double115 ret double %a116}117define double @cvt_f64_s32(i32 %x) {118; CHECK: cvt.rn.f64.s32 %rd{{[0-9]+}}, %r{{[0-9]+}}119; CHECK: ret120 %a = sitofp i32 %x to double121 ret double %a122}123define double @cvt_f64_s64(i64 %x) {124; CHECK: cvt.rn.f64.s64 %rd{{[0-9]+}}, %rd{{[0-9]+}}125; CHECK: ret126 %a = sitofp i64 %x to double127 ret double %a128}129 130define i16 @cvt_s16_f32(float %x) {131; CHECK: cvt.rzi.s16.f32 %rs{{[0-9]+}}, %r{{[0-9]+}};132; CHECK: ret;133 %a = fptosi float %x to i16134 ret i16 %a135}136define i16 @cvt_s16_f64(double %x) {137; CHECK: cvt.rzi.s16.f64 %rs{{[0-9]+}}, %rd{{[0-9]+}};138; CHECK: ret;139 %a = fptosi double %x to i16140 ret i16 %a141}142define i32 @cvt_s32_f32(float %x) {143; CHECK: cvt.rzi.s32.f32 %r{{[0-9]+}}, %r{{[0-9]+}};144; CHECK: ret;145 %a = fptosi float %x to i32146 ret i32 %a147}148define i32 @cvt_s32_f64(double %x) {149; CHECK: cvt.rzi.s32.f64 %r{{[0-9]+}}, %rd{{[0-9]+}};150; CHECK: ret;151 %a = fptosi double %x to i32152 ret i32 %a153}154define i64 @cvt_s64_f32(float %x) {155; CHECK: cvt.rzi.s64.f32 %rd{{[0-9]+}}, %r{{[0-9]+}};156; CHECK: ret;157 %a = fptosi float %x to i64158 ret i64 %a159}160define i64 @cvt_s64_f64(double %x) {161; CHECK: cvt.rzi.s64.f64 %rd{{[0-9]+}}, %rd{{[0-9]+}};162; CHECK: ret;163 %a = fptosi double %x to i64164 ret i64 %a165}166