1; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr7 | FileCheck %s --check-prefix=ELF64
2
3define signext i8 @ret2(i8 signext %a) nounwind uwtable ssp {
4entry:
5; ELF64: ret2
6; ELF64: extsb
7; ELF64: blr
8  ret i8 %a
9}
10
11define zeroext i8 @ret3(i8 signext %a) nounwind uwtable ssp {
12entry:
13; ELF64: ret3
14; ELF64: rldicl {{[0-9]+}}, {{[0-9]+}}, 0, 56
15; ELF64: blr
16  ret i8 %a
17}
18
19define signext i16 @ret4(i16 signext %a) nounwind uwtable ssp {
20entry:
21; ELF64: ret4
22; ELF64: extsh
23; ELF64: blr
24  ret i16 %a
25}
26
27define zeroext i16 @ret5(i16 signext %a) nounwind uwtable ssp {
28entry:
29; ELF64: ret5
30; ELF64: rldicl {{[0-9]+}}, {{[0-9]+}}, 0, 48
31; ELF64: blr
32  ret i16 %a
33}
34
35define i16 @ret6(i16 %a) nounwind uwtable ssp {
36entry:
37; ELF64: ret6
38; ELF64: rldicl {{[0-9]+}}, {{[0-9]+}}, 0, 48
39; ELF64: blr
40  ret i16 %a
41}
42
43define signext i32 @ret7(i32 signext %a) nounwind uwtable ssp {
44entry:
45; ELF64: ret7
46; ELF64: extsw
47; ELF64: blr
48  ret i32 %a
49}
50
51define zeroext i32 @ret8(i32 signext %a) nounwind uwtable ssp {
52entry:
53; ELF64: ret8
54; ELF64: rldicl {{[0-9]+}}, {{[0-9]+}}, 0, 32
55; ELF64: blr
56  ret i32 %a
57}
58
59define i32 @ret9(i32 %a) nounwind uwtable ssp {
60entry:
61; ELF64: ret9
62; ELF64: rldicl {{[0-9]+}}, {{[0-9]+}}, 0, 32
63; ELF64: blr
64  ret i32 %a
65}
66
67define i64 @ret10(i64 %a) nounwind uwtable ssp {
68entry:
69; ELF64: ret10
70; ELF64-NOT: exts
71; ELF64-NOT: rldicl
72; ELF64: blr
73  ret i64 %a
74}
75
76define float @ret11(float %a) nounwind uwtable ssp {
77entry:
78; ELF64: ret11
79; ELF64: blr
80  ret float %a
81}
82
83define double @ret12(double %a) nounwind uwtable ssp {
84entry:
85; ELF64: ret12
86; ELF64: blr
87  ret double %a
88}
89
90define i8 @ret13() nounwind uwtable ssp {
91entry:
92; ELF64: ret13
93; ELF64: li
94; ELF64: blr
95  ret i8 15;
96}
97
98define i16 @ret14() nounwind uwtable ssp {
99entry:
100; ELF64: ret14
101; ELF64: li
102; ELF64: blr
103  ret i16 -225;
104}
105
106define i32 @ret15() nounwind uwtable ssp {
107entry:
108; ELF64: ret15
109; ELF64: lis
110; ELF64: ori
111; ELF64: blr
112  ret i32 278135;
113}
114
115define i64 @ret16() nounwind uwtable ssp {
116entry:
117; ELF64: ret16
118; ELF64: li
119; ELF64: sldi
120; ELF64: oris
121; ELF64: ori
122; ELF64: blr
123  ret i64 27813515225;
124}
125
126define float @ret17() nounwind uwtable ssp {
127entry:
128; ELF64: ret17
129; ELF64: addis
130; ELF64: lfs
131; ELF64: blr
132  ret float 2.5;
133}
134
135define double @ret18() nounwind uwtable ssp {
136entry:
137; ELF64: ret18
138; ELF64: addis
139; ELF64: lfd
140; ELF64: blr
141  ret double 2.5e-33;
142}
143