blob: 7b9e8f720a1789cc22d8423fda9f851c99ecba2d [file] [log] [blame]
Ulrich Weigandd8501672013-03-19 19:52:04 +00001; RUN: llc < %s | FileCheck %s
2
3target datalayout = "E-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-f128:128:128-v128:128:128-n32:64"
4target triple = "powerpc64-unknown-linux-gnu"
5
Stephen Lin98cbca22013-07-18 22:29:15 +00006define i8* @test_stbu(i8* %base, i8 zeroext %val) nounwind {
Ulrich Weigandd8501672013-03-19 19:52:04 +00007entry:
8 %arrayidx = getelementptr inbounds i8* %base, i64 16
9 store i8 %val, i8* %arrayidx, align 1
10 ret i8* %arrayidx
11}
Stephen Lin98cbca22013-07-18 22:29:15 +000012; CHECK: @test_stbu
Ulrich Weigandd8501672013-03-19 19:52:04 +000013; CHECK: %entry
14; CHECK-NEXT: stbu
15; CHECK-NEXT: blr
16
Stephen Lin98cbca22013-07-18 22:29:15 +000017define i8* @test_stbux(i8* %base, i8 zeroext %val, i64 %offset) nounwind {
Ulrich Weigandd8501672013-03-19 19:52:04 +000018entry:
19 %arrayidx = getelementptr inbounds i8* %base, i64 %offset
20 store i8 %val, i8* %arrayidx, align 1
21 ret i8* %arrayidx
22}
Stephen Lin98cbca22013-07-18 22:29:15 +000023; CHECK: @test_stbux
Ulrich Weigandd8501672013-03-19 19:52:04 +000024; CHECK: %entry
25; CHECK-NEXT: stbux
26; CHECK-NEXT: blr
27
Stephen Lin98cbca22013-07-18 22:29:15 +000028define i16* @test_sthu(i16* %base, i16 zeroext %val) nounwind {
Ulrich Weigandd8501672013-03-19 19:52:04 +000029entry:
30 %arrayidx = getelementptr inbounds i16* %base, i64 16
31 store i16 %val, i16* %arrayidx, align 2
32 ret i16* %arrayidx
33}
Stephen Lin98cbca22013-07-18 22:29:15 +000034; CHECK: @test_sthu
Ulrich Weigandd8501672013-03-19 19:52:04 +000035; CHECK: %entry
36; CHECK-NEXT: sthu
37; CHECK-NEXT: blr
38
Stephen Lin98cbca22013-07-18 22:29:15 +000039define i16* @test_sthux(i16* %base, i16 zeroext %val, i64 %offset) nounwind {
Ulrich Weigandd8501672013-03-19 19:52:04 +000040entry:
41 %arrayidx = getelementptr inbounds i16* %base, i64 %offset
42 store i16 %val, i16* %arrayidx, align 2
43 ret i16* %arrayidx
44}
Stephen Lin98cbca22013-07-18 22:29:15 +000045; CHECK: @test_sthux
Ulrich Weigandd8501672013-03-19 19:52:04 +000046; CHECK: %entry
47; CHECK-NEXT: sldi
48; CHECK-NEXT: sthux
49; CHECK-NEXT: blr
50
Stephen Lin98cbca22013-07-18 22:29:15 +000051define i32* @test_stwu(i32* %base, i32 zeroext %val) nounwind {
Ulrich Weigandd8501672013-03-19 19:52:04 +000052entry:
53 %arrayidx = getelementptr inbounds i32* %base, i64 16
54 store i32 %val, i32* %arrayidx, align 4
55 ret i32* %arrayidx
56}
Stephen Lin98cbca22013-07-18 22:29:15 +000057; CHECK: @test_stwu
Ulrich Weigandd8501672013-03-19 19:52:04 +000058; CHECK: %entry
59; CHECK-NEXT: stwu
60; CHECK-NEXT: blr
61
Stephen Lin98cbca22013-07-18 22:29:15 +000062define i32* @test_stwux(i32* %base, i32 zeroext %val, i64 %offset) nounwind {
Ulrich Weigandd8501672013-03-19 19:52:04 +000063entry:
64 %arrayidx = getelementptr inbounds i32* %base, i64 %offset
65 store i32 %val, i32* %arrayidx, align 4
66 ret i32* %arrayidx
67}
Stephen Lin98cbca22013-07-18 22:29:15 +000068; CHECK: @test_stwux
Ulrich Weigandd8501672013-03-19 19:52:04 +000069; CHECK: %entry
70; CHECK-NEXT: sldi
71; CHECK-NEXT: stwux
72; CHECK-NEXT: blr
73
Stephen Lin98cbca22013-07-18 22:29:15 +000074define i8* @test_stbu8(i8* %base, i64 %val) nounwind {
Ulrich Weigandd8501672013-03-19 19:52:04 +000075entry:
76 %conv = trunc i64 %val to i8
77 %arrayidx = getelementptr inbounds i8* %base, i64 16
78 store i8 %conv, i8* %arrayidx, align 1
79 ret i8* %arrayidx
80}
Stephen Lin98cbca22013-07-18 22:29:15 +000081; CHECK: @test_stbu8
Ulrich Weigandd8501672013-03-19 19:52:04 +000082; CHECK: %entry
83; CHECK-NEXT: stbu
84; CHECK-NEXT: blr
85
Stephen Lin98cbca22013-07-18 22:29:15 +000086define i8* @test_stbux8(i8* %base, i64 %val, i64 %offset) nounwind {
Ulrich Weigandd8501672013-03-19 19:52:04 +000087entry:
88 %conv = trunc i64 %val to i8
89 %arrayidx = getelementptr inbounds i8* %base, i64 %offset
90 store i8 %conv, i8* %arrayidx, align 1
91 ret i8* %arrayidx
92}
Stephen Lin98cbca22013-07-18 22:29:15 +000093; CHECK: @test_stbux8
Ulrich Weigandd8501672013-03-19 19:52:04 +000094; CHECK: %entry
95; CHECK-NEXT: stbux
96; CHECK-NEXT: blr
97
Stephen Lin98cbca22013-07-18 22:29:15 +000098define i16* @test_sthu8(i16* %base, i64 %val) nounwind {
Ulrich Weigandd8501672013-03-19 19:52:04 +000099entry:
100 %conv = trunc i64 %val to i16
101 %arrayidx = getelementptr inbounds i16* %base, i64 16
102 store i16 %conv, i16* %arrayidx, align 2
103 ret i16* %arrayidx
104}
Stephen Lin98cbca22013-07-18 22:29:15 +0000105; CHECK: @test_sthu
Ulrich Weigandd8501672013-03-19 19:52:04 +0000106; CHECK: %entry
107; CHECK-NEXT: sthu
108; CHECK-NEXT: blr
109
Stephen Lin98cbca22013-07-18 22:29:15 +0000110define i16* @test_sthux8(i16* %base, i64 %val, i64 %offset) nounwind {
Ulrich Weigandd8501672013-03-19 19:52:04 +0000111entry:
112 %conv = trunc i64 %val to i16
113 %arrayidx = getelementptr inbounds i16* %base, i64 %offset
114 store i16 %conv, i16* %arrayidx, align 2
115 ret i16* %arrayidx
116}
Stephen Lin98cbca22013-07-18 22:29:15 +0000117; CHECK: @test_sthux
Ulrich Weigandd8501672013-03-19 19:52:04 +0000118; CHECK: %entry
119; CHECK-NEXT: sldi
120; CHECK-NEXT: sthux
121; CHECK-NEXT: blr
122
Stephen Lin98cbca22013-07-18 22:29:15 +0000123define i32* @test_stwu8(i32* %base, i64 %val) nounwind {
Ulrich Weigandd8501672013-03-19 19:52:04 +0000124entry:
125 %conv = trunc i64 %val to i32
126 %arrayidx = getelementptr inbounds i32* %base, i64 16
127 store i32 %conv, i32* %arrayidx, align 4
128 ret i32* %arrayidx
129}
Stephen Lin98cbca22013-07-18 22:29:15 +0000130; CHECK: @test_stwu
Ulrich Weigandd8501672013-03-19 19:52:04 +0000131; CHECK: %entry
132; CHECK-NEXT: stwu
133; CHECK-NEXT: blr
134
Stephen Lin98cbca22013-07-18 22:29:15 +0000135define i32* @test_stwux8(i32* %base, i64 %val, i64 %offset) nounwind {
Ulrich Weigandd8501672013-03-19 19:52:04 +0000136entry:
137 %conv = trunc i64 %val to i32
138 %arrayidx = getelementptr inbounds i32* %base, i64 %offset
139 store i32 %conv, i32* %arrayidx, align 4
140 ret i32* %arrayidx
141}
Stephen Lin98cbca22013-07-18 22:29:15 +0000142; CHECK: @test_stwux
Ulrich Weigandd8501672013-03-19 19:52:04 +0000143; CHECK: %entry
144; CHECK-NEXT: sldi
145; CHECK-NEXT: stwux
146; CHECK-NEXT: blr
147
Stephen Lin98cbca22013-07-18 22:29:15 +0000148define i64* @test_stdu(i64* %base, i64 %val) nounwind {
Ulrich Weigandd8501672013-03-19 19:52:04 +0000149entry:
150 %arrayidx = getelementptr inbounds i64* %base, i64 16
151 store i64 %val, i64* %arrayidx, align 8
152 ret i64* %arrayidx
153}
Stephen Lin98cbca22013-07-18 22:29:15 +0000154; CHECK: @test_stdu
Ulrich Weigandd8501672013-03-19 19:52:04 +0000155; CHECK: %entry
156; CHECK-NEXT: stdu
157; CHECK-NEXT: blr
158
Stephen Lin98cbca22013-07-18 22:29:15 +0000159define i64* @test_stdux(i64* %base, i64 %val, i64 %offset) nounwind {
Ulrich Weigandd8501672013-03-19 19:52:04 +0000160entry:
161 %arrayidx = getelementptr inbounds i64* %base, i64 %offset
162 store i64 %val, i64* %arrayidx, align 8
163 ret i64* %arrayidx
164}
Stephen Lin98cbca22013-07-18 22:29:15 +0000165; CHECK: @test_stdux
Ulrich Weigandd8501672013-03-19 19:52:04 +0000166; CHECK: %entry
167; CHECK-NEXT: sldi
168; CHECK-NEXT: stdux
169; CHECK-NEXT: blr
170