blob: 24cdca35b0dda0ec4d654e4dd119ba40717556fe [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
Eric Christopher1fb23392015-07-24 01:07:50 +00007define void @t1() nounwind {
Bill Schmidt8470b0f2013-08-30 22:18:55 +00008; 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
Eric Christopher1fb23392015-07-24 01:07:50 +000017define void @t2() nounwind {
Bill Schmidt8470b0f2013-08-30 22:18:55 +000018; 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
Eric Christopher1fb23392015-07-24 01:07:50 +000027define void @t2a() nounwind {
Bill Schmidt8470b0f2013-08-30 22:18:55 +000028; 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
Eric Christopher1fb23392015-07-24 01:07:50 +000041define i32 @t3() nounwind {
Bill Schmidtccecf262013-08-30 02:29:45 +000042; 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
Eric Christopher1fb23392015-07-24 01:07:50 +000050define i32 @t4() nounwind {
Bill Schmidtccecf262013-08-30 02:29:45 +000051; 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
Eric Christopher1fb23392015-07-24 01:07:50 +000059define i32 @t5() nounwind {
Bill Schmidtccecf262013-08-30 02:29:45 +000060; 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
Eric Christopher1fb23392015-07-24 01:07:50 +000068define i32 @t6() nounwind {
Bill Schmidtccecf262013-08-30 02:29:45 +000069; 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
Eric Christopher1fb23392015-07-24 01:07:50 +000077define i64 @t7() nounwind {
Bill Schmidtccecf262013-08-30 02:29:45 +000078; 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
Eric Christopher1fb23392015-07-24 01:07:50 +000086define i64 @t8() nounwind {
Bill Schmidtccecf262013-08-30 02:29:45 +000087; 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
Eric Christopher1fb23392015-07-24 01:07:50 +000095define i64 @t9() nounwind {
Bill Schmidtccecf262013-08-30 02:29:45 +000096; 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
Eric Christopher1fb23392015-07-24 01:07:50 +0000104define i64 @t10() nounwind {
Bill Schmidtccecf262013-08-30 02:29:45 +0000105; 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
Eric Christopher1fb23392015-07-24 01:07:50 +0000113define i64 @t11() nounwind {
Bill Schmidtccecf262013-08-30 02:29:45 +0000114; 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
Eric Christopher1fb23392015-07-24 01:07:50 +0000122define i64 @t12() nounwind {
Bill Schmidtccecf262013-08-30 02:29:45 +0000123; 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}