1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2 ; RUN: llc -mtriple=armv7-eabi < %s | FileCheck %s 3 4 define float @trunc_unsigned_f32(float %x) nounwind { 5 ; CHECK-LABEL: trunc_unsigned_f32: 6 ; CHECK: @ %bb.0: 7 ; CHECK-NEXT: vmov s0, r0 8 ; CHECK-NEXT: vcvt.u32.f32 s0, s0 9 ; CHECK-NEXT: vcvt.f32.u32 s0, s0 10 ; CHECK-NEXT: vmov r0, s0 11 ; CHECK-NEXT: bx lr 12 %i = fptoui float %x to i32 13 %r = uitofp i32 %i to float 14 ret float %r 15 } 16 17 define double @trunc_unsigned_f64_i64(double %x) nounwind { 18 ; CHECK-LABEL: trunc_unsigned_f64_i64: 19 ; CHECK: @ %bb.0: 20 ; CHECK-NEXT: .save {r11, lr} 21 ; CHECK-NEXT: push {r11, lr} 22 ; CHECK-NEXT: bl __aeabi_d2ulz 23 ; CHECK-NEXT: bl __aeabi_ul2d 24 ; CHECK-NEXT: pop {r11, pc} 25 %i = fptoui double %x to i64 26 %r = uitofp i64 %i to double 27 ret double %r 28 } 29 30 define double @trunc_unsigned_f64_i32(double %x) nounwind { 31 ; CHECK-LABEL: trunc_unsigned_f64_i32: 32 ; CHECK: @ %bb.0: 33 ; CHECK-NEXT: vmov d16, r0, r1 34 ; CHECK-NEXT: vcvt.u32.f64 s0, d16 35 ; CHECK-NEXT: vcvt.f64.u32 d16, s0 36 ; CHECK-NEXT: vmov r0, r1, d16 37 ; CHECK-NEXT: bx lr 38 %i = fptoui double %x to i32 39 %r = uitofp i32 %i to double 40 ret double %r 41 } 42 43