blob: e56101a28e2b24259308e0b521e4490d8029ff60 [file] [log] [blame]
Mehdi Amini945a6602015-02-27 18:32:11 +00001; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort=1 -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr7 | FileCheck %s --check-prefix=ELF64
Bill Schmidtccecf262013-08-30 02:29:45 +00002
3@a = global i8 1, align 1
4@b = global i16 2, align 2
5@c = global i32 4, align 4
6
Bill Schmidt8470b0f2013-08-30 22:18:55 +00007define void @t1() nounwind uwtable ssp {
8; ELF64: t1
David Blaikiea79ac142015-02-27 21:17:42 +00009 %1 = load i8, i8* @a, align 1
Bill Schmidt8470b0f2013-08-30 22:18:55 +000010 call void @foo1(i8 zeroext %1)
11; ELF64: lbz
12; ELF64-NOT: rldicl
13; ELF64-NOT: rlwinm
14 ret void
15}
16
17define void @t2() nounwind uwtable ssp {
18; ELF64: t2
David Blaikiea79ac142015-02-27 21:17:42 +000019 %1 = load i16, i16* @b, align 2
Bill Schmidt8470b0f2013-08-30 22:18:55 +000020 call void @foo2(i16 zeroext %1)
21; ELF64: lhz
22; ELF64-NOT: rldicl
23; ELF64-NOT: rlwinm
24 ret void
25}
26
27define void @t2a() nounwind uwtable ssp {
28; ELF64: t2a
David Blaikiea79ac142015-02-27 21:17:42 +000029 %1 = load i32, i32* @c, align 4
Bill Schmidt8470b0f2013-08-30 22:18:55 +000030 call void @foo3(i32 zeroext %1)
31; ELF64: lwz
32; ELF64-NOT: rldicl
33; ELF64-NOT: rlwinm
34 ret void
35}
36
37declare void @foo1(i8 zeroext)
38declare void @foo2(i16 zeroext)
39declare void @foo3(i32 zeroext)
40
Bill Schmidtccecf262013-08-30 02:29:45 +000041define i32 @t3() nounwind uwtable ssp {
42; ELF64: t3
David Blaikiea79ac142015-02-27 21:17:42 +000043 %1 = load i8, i8* @a, align 1
Bill Schmidtccecf262013-08-30 02:29:45 +000044 %2 = zext i8 %1 to i32
45; ELF64: lbz
46; ELF64-NOT: rlwinm
47 ret i32 %2
48}
49
50define i32 @t4() nounwind uwtable ssp {
51; ELF64: t4
David Blaikiea79ac142015-02-27 21:17:42 +000052 %1 = load i16, i16* @b, align 2
Bill Schmidtccecf262013-08-30 02:29:45 +000053 %2 = zext i16 %1 to i32
54; ELF64: lhz
55; ELF64-NOT: rlwinm
56 ret i32 %2
57}
58
59define i32 @t5() nounwind uwtable ssp {
60; ELF64: t5
David Blaikiea79ac142015-02-27 21:17:42 +000061 %1 = load i16, i16* @b, align 2
Bill Schmidtccecf262013-08-30 02:29:45 +000062 %2 = sext i16 %1 to i32
63; ELF64: lha
64; ELF64-NOT: rlwinm
65 ret i32 %2
66}
67
68define i32 @t6() nounwind uwtable ssp {
69; ELF64: t6
David Blaikiea79ac142015-02-27 21:17:42 +000070 %1 = load i8, i8* @a, align 2
Bill Schmidtccecf262013-08-30 02:29:45 +000071 %2 = sext i8 %1 to i32
72; ELF64: lbz
73; ELF64-NOT: rlwinm
74 ret i32 %2
75}
76
77define i64 @t7() nounwind uwtable ssp {
78; ELF64: t7
David Blaikiea79ac142015-02-27 21:17:42 +000079 %1 = load i8, i8* @a, align 1
Bill Schmidtccecf262013-08-30 02:29:45 +000080 %2 = zext i8 %1 to i64
81; ELF64: lbz
82; ELF64-NOT: rldicl
83 ret i64 %2
84}
85
86define i64 @t8() nounwind uwtable ssp {
87; ELF64: t8
David Blaikiea79ac142015-02-27 21:17:42 +000088 %1 = load i16, i16* @b, align 2
Bill Schmidtccecf262013-08-30 02:29:45 +000089 %2 = zext i16 %1 to i64
90; ELF64: lhz
91; ELF64-NOT: rldicl
92 ret i64 %2
93}
94
95define i64 @t9() nounwind uwtable ssp {
96; ELF64: t9
David Blaikiea79ac142015-02-27 21:17:42 +000097 %1 = load i16, i16* @b, align 2
Bill Schmidtccecf262013-08-30 02:29:45 +000098 %2 = sext i16 %1 to i64
99; ELF64: lha
100; ELF64-NOT: extsh
101 ret i64 %2
102}
103
104define i64 @t10() nounwind uwtable ssp {
105; ELF64: t10
David Blaikiea79ac142015-02-27 21:17:42 +0000106 %1 = load i8, i8* @a, align 2
Bill Schmidtccecf262013-08-30 02:29:45 +0000107 %2 = sext i8 %1 to i64
108; ELF64: lbz
109; ELF64: extsb
110 ret i64 %2
111}
112
113define i64 @t11() nounwind uwtable ssp {
114; ELF64: t11
David Blaikiea79ac142015-02-27 21:17:42 +0000115 %1 = load i32, i32* @c, align 4
Bill Schmidtccecf262013-08-30 02:29:45 +0000116 %2 = zext i32 %1 to i64
117; ELF64: lwz
118; ELF64-NOT: rldicl
119 ret i64 %2
120}
121
122define i64 @t12() nounwind uwtable ssp {
123; ELF64: t12
David Blaikiea79ac142015-02-27 21:17:42 +0000124 %1 = load i32, i32* @c, align 4
Bill Schmidtccecf262013-08-30 02:29:45 +0000125 %2 = sext i32 %1 to i64
126; ELF64: lwa
127; ELF64-NOT: extsw
128 ret i64 %2
129}