blob: f82de70c92867486c13a2ed16c34c52d9d8842ef [file] [log] [blame]
Bill Schmidtd89f6782013-08-26 19:42:51 +00001; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr7 | FileCheck %s --check-prefix=ELF64
2
Samuel Antao61570df2014-09-17 23:25:06 +00003define zeroext i1 @rettrue() nounwind uwtable ssp {
4entry:
5; ELF64-LABEL: rettrue
6; ELF64: li 3, 1
7; ELF64: blr
8 ret i1 true
9}
10
11define zeroext i1 @retfalse() nounwind uwtable ssp {
12entry:
13; ELF64-LABEL: retfalse
14; ELF64: li 3, 0
15; ELF64: blr
16 ret i1 false
17}
18
19define signext i1 @retstrue() nounwind uwtable ssp {
20entry:
21; ELF64-LABEL: retstrue
22; ELF64: li 3, -1
23; ELF64: blr
24 ret i1 true
25}
26
27define signext i1 @retsfalse() nounwind uwtable ssp {
28entry:
29; ELF64-LABEL: retsfalse
30; ELF64: li 3, 0
31; ELF64: blr
32 ret i1 false
33}
34
Bill Schmidtd89f6782013-08-26 19:42:51 +000035define signext i8 @ret2(i8 signext %a) nounwind uwtable ssp {
36entry:
Samuel Antao61570df2014-09-17 23:25:06 +000037; ELF64-LABEL: ret2
Bill Schmidtd89f6782013-08-26 19:42:51 +000038; ELF64: extsb
39; ELF64: blr
40 ret i8 %a
41}
42
43define zeroext i8 @ret3(i8 signext %a) nounwind uwtable ssp {
44entry:
Samuel Antao61570df2014-09-17 23:25:06 +000045; ELF64-LABEL: ret3
Bill Schmidtd89f6782013-08-26 19:42:51 +000046; ELF64: rldicl {{[0-9]+}}, {{[0-9]+}}, 0, 56
47; ELF64: blr
48 ret i8 %a
49}
50
51define signext i16 @ret4(i16 signext %a) nounwind uwtable ssp {
52entry:
Samuel Antao61570df2014-09-17 23:25:06 +000053; ELF64-LABEL: ret4
Bill Schmidtd89f6782013-08-26 19:42:51 +000054; ELF64: extsh
55; ELF64: blr
56 ret i16 %a
57}
58
59define zeroext i16 @ret5(i16 signext %a) nounwind uwtable ssp {
60entry:
Samuel Antao61570df2014-09-17 23:25:06 +000061; ELF64-LABEL: ret5
Bill Schmidtd89f6782013-08-26 19:42:51 +000062; ELF64: rldicl {{[0-9]+}}, {{[0-9]+}}, 0, 48
63; ELF64: blr
64 ret i16 %a
65}
66
67define i16 @ret6(i16 %a) nounwind uwtable ssp {
68entry:
Samuel Antao61570df2014-09-17 23:25:06 +000069; ELF64-LABEL: ret6
Bill Schmidtd89f6782013-08-26 19:42:51 +000070; ELF64: rldicl {{[0-9]+}}, {{[0-9]+}}, 0, 48
71; ELF64: blr
72 ret i16 %a
73}
74
75define signext i32 @ret7(i32 signext %a) nounwind uwtable ssp {
76entry:
Samuel Antao61570df2014-09-17 23:25:06 +000077; ELF64-LABEL: ret7
Bill Schmidtd89f6782013-08-26 19:42:51 +000078; ELF64: extsw
79; ELF64: blr
80 ret i32 %a
81}
82
83define zeroext i32 @ret8(i32 signext %a) nounwind uwtable ssp {
84entry:
Samuel Antao61570df2014-09-17 23:25:06 +000085; ELF64-LABEL: ret8
Bill Schmidtd89f6782013-08-26 19:42:51 +000086; ELF64: rldicl {{[0-9]+}}, {{[0-9]+}}, 0, 32
87; ELF64: blr
88 ret i32 %a
89}
90
91define i32 @ret9(i32 %a) nounwind uwtable ssp {
92entry:
Samuel Antao61570df2014-09-17 23:25:06 +000093; ELF64-LABEL: ret9
Bill Schmidtd89f6782013-08-26 19:42:51 +000094; ELF64: rldicl {{[0-9]+}}, {{[0-9]+}}, 0, 32
95; ELF64: blr
96 ret i32 %a
97}
98
99define i64 @ret10(i64 %a) nounwind uwtable ssp {
100entry:
Samuel Antao61570df2014-09-17 23:25:06 +0000101; ELF64-LABEL: ret10
Bill Schmidtd89f6782013-08-26 19:42:51 +0000102; ELF64-NOT: exts
103; ELF64-NOT: rldicl
104; ELF64: blr
105 ret i64 %a
106}
107
108define float @ret11(float %a) nounwind uwtable ssp {
109entry:
Samuel Antao61570df2014-09-17 23:25:06 +0000110; ELF64-LABEL: ret11
Bill Schmidtd89f6782013-08-26 19:42:51 +0000111; ELF64: blr
112 ret float %a
113}
114
115define double @ret12(double %a) nounwind uwtable ssp {
116entry:
Samuel Antao61570df2014-09-17 23:25:06 +0000117; ELF64-LABEL: ret12
Bill Schmidtd89f6782013-08-26 19:42:51 +0000118; ELF64: blr
119 ret double %a
120}
121
122define i8 @ret13() nounwind uwtable ssp {
123entry:
Samuel Antao61570df2014-09-17 23:25:06 +0000124; ELF64-LABEL: ret13
Bill Schmidtd89f6782013-08-26 19:42:51 +0000125; ELF64: li
126; ELF64: blr
127 ret i8 15;
128}
129
130define i16 @ret14() nounwind uwtable ssp {
131entry:
Samuel Antao61570df2014-09-17 23:25:06 +0000132; ELF64-LABEL: ret14
Bill Schmidtd89f6782013-08-26 19:42:51 +0000133; ELF64: li
134; ELF64: blr
135 ret i16 -225;
136}
137
138define i32 @ret15() nounwind uwtable ssp {
139entry:
Samuel Antao61570df2014-09-17 23:25:06 +0000140; ELF64-LABEL: ret15
Bill Schmidtd89f6782013-08-26 19:42:51 +0000141; ELF64: lis
142; ELF64: ori
143; ELF64: blr
144 ret i32 278135;
145}
146
147define i64 @ret16() nounwind uwtable ssp {
148entry:
Samuel Antao61570df2014-09-17 23:25:06 +0000149; ELF64-LABEL: ret16
Bill Schmidtd89f6782013-08-26 19:42:51 +0000150; ELF64: li
151; ELF64: sldi
152; ELF64: oris
153; ELF64: ori
154; ELF64: blr
155 ret i64 27813515225;
156}
157
158define float @ret17() nounwind uwtable ssp {
159entry:
Samuel Antao61570df2014-09-17 23:25:06 +0000160; ELF64-LABEL: ret17
Bill Schmidtd89f6782013-08-26 19:42:51 +0000161; ELF64: addis
162; ELF64: lfs
163; ELF64: blr
164 ret float 2.5;
165}
166
167define double @ret18() nounwind uwtable ssp {
168entry:
Samuel Antao61570df2014-09-17 23:25:06 +0000169; ELF64-LABEL: ret18
Bill Schmidtd89f6782013-08-26 19:42:51 +0000170; ELF64: addis
171; ELF64: lfd
172; ELF64: blr
173 ret double 2.5e-33;
174}