125 lines · plain
1; RUN: llc -mtriple=arm-eabi -mattr=+vfp2 %s -o - | FileCheck %s --check-prefix=CHECK-VFP2; RUN: llc -mtriple=arm-apple-darwin %s -o - | FileCheck %s3; RUN: llc -mtriple=armv8r-none-none-eabi -mattr=+neon,+fp-armv8 %s -o - | FileCheck %s --check-prefix=CHECK-VFP4; RUN: llc -mtriple=armv8r-none-none-eabi %s -o - | FileCheck %s --check-prefix=CHECK-VFP-SP5 6define float @f1(double %x) {7;CHECK-VFP-LABEL: f1:8;CHECK-VFP: vcvt.f32.f649;CHECK-VFP-SP-LABEL: f1:10;CHECK-VFP-SP: bl __aeabi_d2f11;CHECK-LABEL: f1:12;CHECK: truncdfsf213entry:14 %tmp1 = fptrunc double %x to float ; <float> [#uses=1]15 ret float %tmp116}17 18define double @f2(float %x) {19;CHECK-VFP-LABEL: f2:20;CHECK-VFP: vcvt.f64.f3221;CHECK-VFP-SP-LABEL: f2:22;CHECK-VFP-SP: bl __aeabi_f2d23;CHECK-LABEL: f2:24;CHECK: extendsfdf225entry:26 %tmp1 = fpext float %x to double ; <double> [#uses=1]27 ret double %tmp128}29 30define i32 @f3(float %x) {31;CHECK-VFP-LABEL: f3:32;CHECK-VFP: vcvt.s32.f3233;CHECK-VFP-SP-LABEL: f3:34;CHECK-VFP-SP: vcvt.s32.f3235;CHECK-LABEL: f3:36;CHECK: fixsfsi37entry:38 %tmp = fptosi float %x to i32 ; <i32> [#uses=1]39 ret i32 %tmp40}41 42define i32 @f4(float %x) {43;CHECK-VFP-LABEL: f4:44;CHECK-VFP: vcvt.u32.f3245;CHECK-VFP-SP-LABEL: f4:46;CHECK-VFP-SP: vcvt.u32.f3247;CHECK-LABEL: f4:48;CHECK: fixunssfsi49entry:50 %tmp = fptoui float %x to i32 ; <i32> [#uses=1]51 ret i32 %tmp52}53 54define i32 @f5(double %x) {55;CHECK-VFP-LABEL: f5:56;CHECK-VFP: vcvt.s32.f6457;CHECK-VFP-SP-LABEL: f5:58;CHECK-VFP-SP: bl __aeabi_d2iz59;CHECK-LABEL: f5:60;CHECK: fixdfsi61entry:62 %tmp = fptosi double %x to i32 ; <i32> [#uses=1]63 ret i32 %tmp64}65 66define i32 @f6(double %x) {67;CHECK-VFP-LABEL: f6:68;CHECK-VFP: vcvt.u32.f6469;CHECK-VFP-SP-LABEL: f6:70;CHECK-VFP-SP: bl __aeabi_d2uiz71;CHECK-LABEL: f6:72;CHECK: fixunsdfsi73entry:74 %tmp = fptoui double %x to i32 ; <i32> [#uses=1]75 ret i32 %tmp76}77 78define float @f7(i32 %a) {79;CHECK-VFP-LABEL: f7:80;CHECK-VFP: vcvt.f32.s3281;CHECK-VFP-SP-LABEL: f7:82;CHECK-VFP-SP: vcvt.f32.s3283;CHECK-LABEL: f7:84;CHECK: floatsisf85entry:86 %tmp = sitofp i32 %a to float ; <float> [#uses=1]87 ret float %tmp88}89 90define double @f8(i32 %a) {91;CHECK-VFP-LABEL: f8:92;CHECK-VFP: vcvt.f64.s3293;CHECK-VFP-SP-LABEL: f8:94;CHECK-VFP-SP: bl __aeabi_i2d95;CHECK-LABEL: f8:96;CHECK: floatsidf97entry:98 %tmp = sitofp i32 %a to double ; <double> [#uses=1]99 ret double %tmp100}101 102define float @f9(i32 %a) {103;CHECK-VFP-LABEL: f9:104;CHECK-VFP: vcvt.f32.u32105;CHECK-VFP-SP-LABEL: f9:106;CHECK-VFP-SP: vcvt.f32.u32107;CHECK-LABEL: f9:108;CHECK: floatunsisf109entry:110 %tmp = uitofp i32 %a to float ; <float> [#uses=1]111 ret float %tmp112}113 114define double @f10(i32 %a) {115;CHECK-VFP-LABEL: f10:116;CHECK-VFP: vcvt.f64.u32117;CHECK-VFP-SP-LABEL: f10:118;CHECK-VFP-SP: bl __aeabi_ui2d119;CHECK-LABEL: f10:120;CHECK: floatunsidf121entry:122 %tmp = uitofp i32 %a to double ; <double> [#uses=1]123 ret double %tmp124}125