1 ; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort=1 -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr5 | FileCheck %s --check-prefix=ELF64
5 define void @sitofp_double_i32(i32 %a, double %b) nounwind {
7 ; ELF64: sitofp_double_i32
8 %b.addr = alloca double, align 8
9 %conv = sitofp i32 %a to double
10 ; ELF64: std {{[0-9]+}}, -[[OFFSET:[0-9]+]](1)
11 ; ELF64: lfd {{[0-9]+}}, -[[OFFSET]](1)
13 store double %conv, ptr %b.addr, align 8
17 define void @sitofp_double_i64(i64 %a, double %b) nounwind {
19 ; ELF64: sitofp_double_i64
20 %b.addr = alloca double, align 8
21 %conv = sitofp i64 %a to double
22 ; ELF64: std {{[0-9]+}}, -[[OFFSET:[0-9]+]](1)
23 ; ELF64: lfd {{[0-9]+}}, -[[OFFSET]](1)
25 store double %conv, ptr %b.addr, align 8
29 define void @sitofp_double_i16(i16 %a, double %b) nounwind {
31 ; ELF64: sitofp_double_i16
32 %b.addr = alloca double, align 8
33 %conv = sitofp i16 %a to double
35 ; ELF64: std {{[0-9]+}}, -[[OFFSET:[0-9]+]](1)
36 ; ELF64: lfd {{[0-9]+}}, -[[OFFSET]](1)
38 store double %conv, ptr %b.addr, align 8
42 define void @sitofp_double_i8(i8 %a, double %b) nounwind {
44 ; ELF64: sitofp_double_i8
45 %b.addr = alloca double, align 8
46 %conv = sitofp i8 %a to double
48 ; ELF64: std {{[0-9]+}}, -[[OFFSET:[0-9]+]](1)
49 ; ELF64: lfd {{[0-9]+}}, -[[OFFSET]](1)
51 store double %conv, ptr %b.addr, align 8
57 define void @fptosi_float_i32(float %a) nounwind {
59 ; ELF64: fptosi_float_i32
60 %b.addr = alloca i32, align 4
61 %conv = fptosi float %a to i32
65 store i32 %conv, ptr %b.addr, align 4
69 define void @fptosi_float_i64(float %a) nounwind {
71 ; ELF64: fptosi_float_i64
72 %b.addr = alloca i64, align 4
73 %conv = fptosi float %a to i64
77 store i64 %conv, ptr %b.addr, align 4
81 define void @fptosi_double_i32(double %a) nounwind {
83 ; ELF64: fptosi_double_i32
84 %b.addr = alloca i32, align 8
85 %conv = fptosi double %a to i32
89 store i32 %conv, ptr %b.addr, align 8
93 define void @fptosi_double_i64(double %a) nounwind {
95 ; ELF64: fptosi_double_i64
96 %b.addr = alloca i64, align 8
97 %conv = fptosi double %a to i64
101 store i64 %conv, ptr %b.addr, align 8
107 define void @fptoui_float_i32(float %a) nounwind {
109 ; ELF64: fptoui_float_i32
110 %b.addr = alloca i32, align 4
111 %conv = fptoui float %a to i32
115 store i32 %conv, ptr %b.addr, align 4
119 define void @fptoui_double_i32(double %a) nounwind {
121 ; ELF64: fptoui_double_i32
122 %b.addr = alloca i32, align 8
123 %conv = fptoui double %a to i32
127 store i32 %conv, ptr %b.addr, align 8