19e0d3878SVadzim Dambrouski; RUN: llc < %s | FileCheck %s
29e0d3878SVadzim Dambrouski
39e0d3878SVadzim Dambrouskitarget triple = "msp430"
49e0d3878SVadzim Dambrouski
59e0d3878SVadzim Dambrouski%struct.X = type { i8 }
69e0d3878SVadzim Dambrouski
79e0d3878SVadzim Dambrouski; CHECK-LABEL: @foo
8*49045c6aSAnton Korobeynikov; CHECK: sub   #4, r1
99e0d3878SVadzim Dambrouski; CHECK: mov.b   #1, 3(r1)
109e0d3878SVadzim Dambrouskidefine void @foo() {
119e0d3878SVadzim Dambrouski  %1 = alloca %struct.X
129e0d3878SVadzim Dambrouski  %2 = alloca %struct.X
139e0d3878SVadzim Dambrouski  %3 = alloca %struct.X
149e0d3878SVadzim Dambrouski  %4 = getelementptr inbounds %struct.X, %struct.X* %1, i32 0, i32 0
159e0d3878SVadzim Dambrouski  store i8 1, i8* %4
169e0d3878SVadzim Dambrouski  %5 = getelementptr inbounds %struct.X, %struct.X* %2, i32 0, i32 0
179e0d3878SVadzim Dambrouski  store i8 1, i8* %5
189e0d3878SVadzim Dambrouski  %6 = getelementptr inbounds %struct.X, %struct.X* %3, i32 0, i32 0
199e0d3878SVadzim Dambrouski  store i8 1, i8* %6
209e0d3878SVadzim Dambrouski  ret void
219e0d3878SVadzim Dambrouski}
229e0d3878SVadzim Dambrouski
239e0d3878SVadzim Dambrouski; CHECK-LABEL: @bar
24*49045c6aSAnton Korobeynikov; CHECK: sub   #4, r1
259e0d3878SVadzim Dambrouski; CHECK: mov.b   #1, 3(r1)
269e0d3878SVadzim Dambrouskidefine void @bar() {
279e0d3878SVadzim Dambrouski  %1 = alloca [3 x %struct.X]
289e0d3878SVadzim Dambrouski  %2 = getelementptr inbounds [3 x %struct.X], [3 x %struct.X]* %1, i16 0, i16 0
299e0d3878SVadzim Dambrouski  %3 = getelementptr inbounds %struct.X, %struct.X* %2, i32 0, i32 0
309e0d3878SVadzim Dambrouski  store i8 1, i8* %3
319e0d3878SVadzim Dambrouski  %4 = getelementptr inbounds [3 x %struct.X], [3 x %struct.X]* %1, i16 0, i16 1
329e0d3878SVadzim Dambrouski  %5 = getelementptr inbounds %struct.X, %struct.X* %4, i32 0, i32 0
339e0d3878SVadzim Dambrouski  store i8 1, i8* %5
349e0d3878SVadzim Dambrouski  %6 = getelementptr inbounds [3 x %struct.X], [3 x %struct.X]* %1, i16 0, i16 2
359e0d3878SVadzim Dambrouski  %7 = getelementptr inbounds %struct.X, %struct.X* %6, i32 0, i32 0
369e0d3878SVadzim Dambrouski  store i8 1, i8* %7
379e0d3878SVadzim Dambrouski  ret void
389e0d3878SVadzim Dambrouski}
399e0d3878SVadzim Dambrouski
409e0d3878SVadzim Dambrouski%struct.Y = type { i8, i16 }
419e0d3878SVadzim Dambrouski
429e0d3878SVadzim Dambrouski; CHECK-LABEL: @baz
43*49045c6aSAnton Korobeynikov; CHECK: sub   #8, r1
44*49045c6aSAnton Korobeynikov; CHECK: mov   #2, 6(r1)
459e0d3878SVadzim Dambrouskidefine void @baz() {
469e0d3878SVadzim Dambrouski  %1 = alloca %struct.Y, align 2
479e0d3878SVadzim Dambrouski  %2 = alloca %struct.Y, align 2
489e0d3878SVadzim Dambrouski  %3 = getelementptr inbounds %struct.Y, %struct.Y* %1, i32 0, i32 0
499e0d3878SVadzim Dambrouski  store i8 1, i8* %3, align 2
509e0d3878SVadzim Dambrouski  %4 = getelementptr inbounds %struct.Y, %struct.Y* %1, i32 0, i32 1
519e0d3878SVadzim Dambrouski  store i16 2, i16* %4, align 2
529e0d3878SVadzim Dambrouski  %5 = getelementptr inbounds %struct.Y, %struct.Y* %2, i32 0, i32 0
539e0d3878SVadzim Dambrouski  store i8 1, i8* %5, align 2
549e0d3878SVadzim Dambrouski  %6 = getelementptr inbounds %struct.Y, %struct.Y* %2, i32 0, i32 1
559e0d3878SVadzim Dambrouski  store i16 2, i16* %6, align 2
569e0d3878SVadzim Dambrouski  ret void
579e0d3878SVadzim Dambrouski}
58