131 lines · plain
1; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort=1 -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr5 | FileCheck %s --check-prefix=ELF642 3; Test sitofp4 5define void @sitofp_double_i32(i32 %a, double %b) nounwind {6entry:7; ELF64: sitofp_double_i328 %b.addr = alloca double, align 89 %conv = sitofp i32 %a to double10; ELF64: std {{[0-9]+}}, -[[OFFSET:[0-9]+]](1)11; ELF64: lfd {{[0-9]+}}, -[[OFFSET]](1)12; ELF64: fcfid13 store double %conv, ptr %b.addr, align 814 ret void15}16 17define void @sitofp_double_i64(i64 %a, double %b) nounwind {18entry:19; ELF64: sitofp_double_i6420 %b.addr = alloca double, align 821 %conv = sitofp i64 %a to double22; ELF64: std {{[0-9]+}}, -[[OFFSET:[0-9]+]](1)23; ELF64: lfd {{[0-9]+}}, -[[OFFSET]](1)24; ELF64: fcfid25 store double %conv, ptr %b.addr, align 826 ret void27}28 29define void @sitofp_double_i16(i16 %a, double %b) nounwind {30entry:31; ELF64: sitofp_double_i1632 %b.addr = alloca double, align 833 %conv = sitofp i16 %a to double34; ELF64: extsh35; ELF64: std {{[0-9]+}}, -[[OFFSET:[0-9]+]](1)36; ELF64: lfd {{[0-9]+}}, -[[OFFSET]](1)37; ELF64: fcfid38 store double %conv, ptr %b.addr, align 839 ret void40}41 42define void @sitofp_double_i8(i8 %a, double %b) nounwind {43entry:44; ELF64: sitofp_double_i845 %b.addr = alloca double, align 846 %conv = sitofp i8 %a to double47; ELF64: extsb48; ELF64: std {{[0-9]+}}, -[[OFFSET:[0-9]+]](1)49; ELF64: lfd {{[0-9]+}}, -[[OFFSET]](1)50; ELF64: fcfid51 store double %conv, ptr %b.addr, align 852 ret void53}54 55; Test fptosi56 57define void @fptosi_float_i32(float %a) nounwind {58entry:59; ELF64: fptosi_float_i3260 %b.addr = alloca i32, align 461 %conv = fptosi float %a to i3262; ELF64: fctiwz63; ELF64: stfd64; ELF64: lwa65 store i32 %conv, ptr %b.addr, align 466 ret void67}68 69define void @fptosi_float_i64(float %a) nounwind {70entry:71; ELF64: fptosi_float_i6472 %b.addr = alloca i64, align 473 %conv = fptosi float %a to i6474; ELF64: fctidz75; ELF64: stfd76; ELF64: ld77 store i64 %conv, ptr %b.addr, align 478 ret void79}80 81define void @fptosi_double_i32(double %a) nounwind {82entry:83; ELF64: fptosi_double_i3284 %b.addr = alloca i32, align 885 %conv = fptosi double %a to i3286; ELF64: fctiwz87; ELF64: stfd88; ELF64: lwa89 store i32 %conv, ptr %b.addr, align 890 ret void91}92 93define void @fptosi_double_i64(double %a) nounwind {94entry:95; ELF64: fptosi_double_i6496 %b.addr = alloca i64, align 897 %conv = fptosi double %a to i6498; ELF64: fctidz99; ELF64: stfd100; ELF64: ld101 store i64 %conv, ptr %b.addr, align 8102 ret void103}104 105; Test fptoui106 107define void @fptoui_float_i32(float %a) nounwind {108entry:109; ELF64: fptoui_float_i32110 %b.addr = alloca i32, align 4111 %conv = fptoui float %a to i32112; ELF64: fctidz113; ELF64: stfd114; ELF64: lwz115 store i32 %conv, ptr %b.addr, align 4116 ret void117}118 119define void @fptoui_double_i32(double %a) nounwind {120entry:121; ELF64: fptoui_double_i32122 %b.addr = alloca i32, align 8123 %conv = fptoui double %a to i32124; ELF64: fctidz125; ELF64: stfd126; ELF64: lwz127 store i32 %conv, ptr %b.addr, align 8128 ret void129}130 131