blob: 3df7267ff27f66fdfb6984e39cdafe55fe74d0c9 [file] [log] [blame]
Scott Michel9de5d0d2008-01-11 02:53:15 +00001; RUN: llvm-as -o - %s | llc -march=cellspu > %t1.s
Scott Michel497e8882008-01-11 21:01:19 +00002; RUN: llvm-as -o - %s | llc -march=cellspu -mattr=large_mem > %t2.s
Scott Michel053c1da2008-01-29 02:16:57 +00003; RUN: grep lqa %t1.s | count 5
4; RUN: grep lqd %t1.s | count 11
5; RUN: grep rotqbyi %t1.s | count 7
Chris Lattner994d6cf2008-01-18 19:53:43 +00006; RUN: grep xshw %t1.s | count 1
Scott Michel053c1da2008-01-29 02:16:57 +00007; RUN: grep andi %t1.s | count 5
Chris Lattner994d6cf2008-01-18 19:53:43 +00008; RUN: grep cbd %t1.s | count 3
9; RUN: grep chd %t1.s | count 1
10; RUN: grep cwd %t1.s | count 3
11; RUN: grep shufb %t1.s | count 7
Scott Michel053c1da2008-01-29 02:16:57 +000012; RUN: grep stqd %t1.s | count 7
13; RUN: grep iohl %t2.s | count 16
14; RUN: grep ilhu %t2.s | count 16
15; RUN: grep lqd %t2.s | count 16
16; RUN: grep rotqbyi %t2.s | count 7
Chris Lattner994d6cf2008-01-18 19:53:43 +000017; RUN: grep xshw %t2.s | count 1
Scott Michel053c1da2008-01-29 02:16:57 +000018; RUN: grep andi %t2.s | count 5
19; RUN: grep cbd %t2.s | count 3
20; RUN: grep chd %t2.s | count 1
21; RUN: grep cwd %t2.s | count 3
Chris Lattner994d6cf2008-01-18 19:53:43 +000022; RUN: grep shufb %t2.s | count 7
Scott Michel053c1da2008-01-29 02:16:57 +000023; RUN: grep stqd %t2.s | count 7
Scott Michel497e8882008-01-11 21:01:19 +000024
Scott Michel9de5d0d2008-01-11 02:53:15 +000025; ModuleID = 'struct_1.bc'
26target datalayout = "E-p:32:32:128-f64:64:128-f32:32:128-i64:32:128-i32:32:128-i16:16:128-i8:8:128-i1:8:128-a0:0:128-v128:128:128-s0:128:128"
27target triple = "spu"
28
29; struct hackstate {
30; unsigned char c1; // offset 0 (rotate left by 13 bytes to byte 3)
31; unsigned char c2; // offset 1 (rotate left by 14 bytes to byte 3)
32; unsigned char c3; // offset 2 (rotate left by 15 bytes to byte 3)
33; int i1; // offset 4 (rotate left by 4 bytes to byte 0)
34; short s1; // offset 8 (rotate left by 6 bytes to byte 2)
35; int i2; // offset 12 [ignored]
36; unsigned char c4; // offset 16 [ignored]
37; unsigned char c5; // offset 17 [ignored]
38; unsigned char c6; // offset 18 [ignored]
39; unsigned char c7; // offset 19 (no rotate, in preferred slot)
40; int i3; // offset 20 [ignored]
41; int i4; // offset 24 [ignored]
42; int i5; // offset 28 [ignored]
43; int i6; // offset 32 (no rotate, in preferred slot)
44; }
45%struct.hackstate = type { i8, i8, i8, i32, i16, i32, i8, i8, i8, i8, i32, i32, i32, i32 }
46
47; struct hackstate state = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
48@state = global %struct.hackstate zeroinitializer, align 16
49
Scott Michel053c1da2008-01-29 02:16:57 +000050define i8 @get_hackstate_c1() zeroext nounwind {
Scott Michel9de5d0d2008-01-11 02:53:15 +000051entry:
Scott Michel53dec472008-03-05 23:00:19 +000052 %tmp2 = load i8* getelementptr (%struct.hackstate* @state, i32 0, i32 0), align 16
53 ret i8 %tmp2
Scott Michel9de5d0d2008-01-11 02:53:15 +000054}
55
Scott Michel053c1da2008-01-29 02:16:57 +000056define i8 @get_hackstate_c2() zeroext nounwind {
Scott Michel9de5d0d2008-01-11 02:53:15 +000057entry:
Scott Michel53dec472008-03-05 23:00:19 +000058 %tmp2 = load i8* getelementptr (%struct.hackstate* @state, i32 0, i32 1), align 16
59 ret i8 %tmp2
Scott Michel9de5d0d2008-01-11 02:53:15 +000060}
61
Scott Michel053c1da2008-01-29 02:16:57 +000062define i8 @get_hackstate_c3() zeroext nounwind {
Scott Michel9de5d0d2008-01-11 02:53:15 +000063entry:
Scott Michel53dec472008-03-05 23:00:19 +000064 %tmp2 = load i8* getelementptr (%struct.hackstate* @state, i32 0, i32 2), align 16
65 ret i8 %tmp2
Scott Michel9de5d0d2008-01-11 02:53:15 +000066}
67
Scott Michel053c1da2008-01-29 02:16:57 +000068define i32 @get_hackstate_i1() nounwind {
Scott Michel9de5d0d2008-01-11 02:53:15 +000069entry:
Scott Michel53dec472008-03-05 23:00:19 +000070 %tmp2 = load i32* getelementptr (%struct.hackstate* @state, i32 0, i32 3), align 16
71 ret i32 %tmp2
Scott Michel9de5d0d2008-01-11 02:53:15 +000072}
73
Scott Michel053c1da2008-01-29 02:16:57 +000074define i16 @get_hackstate_s1() signext nounwind {
Scott Michel9de5d0d2008-01-11 02:53:15 +000075entry:
Scott Michel53dec472008-03-05 23:00:19 +000076 %tmp2 = load i16* getelementptr (%struct.hackstate* @state, i32 0, i32 4), align 16
77 ret i16 %tmp2
Scott Michel9de5d0d2008-01-11 02:53:15 +000078}
79
Scott Michel053c1da2008-01-29 02:16:57 +000080define i8 @get_hackstate_c6() zeroext nounwind {
Scott Michel9de5d0d2008-01-11 02:53:15 +000081entry:
Scott Michel53dec472008-03-05 23:00:19 +000082 %tmp2 = load i8* getelementptr (%struct.hackstate* @state, i32 0, i32 8), align 16
83 ret i8 %tmp2
Scott Michel9de5d0d2008-01-11 02:53:15 +000084}
85
Scott Michel053c1da2008-01-29 02:16:57 +000086define i8 @get_hackstate_c7() zeroext nounwind {
Scott Michel9de5d0d2008-01-11 02:53:15 +000087entry:
Scott Michel53dec472008-03-05 23:00:19 +000088 %tmp2 = load i8* getelementptr (%struct.hackstate* @state, i32 0, i32 9), align 16
89 ret i8 %tmp2
Scott Michel9de5d0d2008-01-11 02:53:15 +000090}
91
Scott Michel053c1da2008-01-29 02:16:57 +000092define i32 @get_hackstate_i3() nounwind {
Scott Michel9de5d0d2008-01-11 02:53:15 +000093entry:
Scott Michel53dec472008-03-05 23:00:19 +000094 %tmp2 = load i32* getelementptr (%struct.hackstate* @state, i32 0, i32 10), align 16
95 ret i32 %tmp2
Scott Michel9de5d0d2008-01-11 02:53:15 +000096}
97
Scott Michel053c1da2008-01-29 02:16:57 +000098define i32 @get_hackstate_i6() nounwind {
Scott Michel9de5d0d2008-01-11 02:53:15 +000099entry:
Scott Michel53dec472008-03-05 23:00:19 +0000100 %tmp2 = load i32* getelementptr (%struct.hackstate* @state, i32 0, i32 13), align 16
101 ret i32 %tmp2
Scott Michel9de5d0d2008-01-11 02:53:15 +0000102}
103
Scott Michel053c1da2008-01-29 02:16:57 +0000104define void @set_hackstate_c1(i8 zeroext %c) nounwind {
Scott Michel9de5d0d2008-01-11 02:53:15 +0000105entry:
Scott Michel53dec472008-03-05 23:00:19 +0000106 store i8 %c, i8* getelementptr (%struct.hackstate* @state, i32 0, i32 0), align 16
107 ret void
Scott Michel9de5d0d2008-01-11 02:53:15 +0000108}
109
Scott Michel053c1da2008-01-29 02:16:57 +0000110define void @set_hackstate_c2(i8 zeroext %c) nounwind {
Scott Michel9de5d0d2008-01-11 02:53:15 +0000111entry:
Scott Michel53dec472008-03-05 23:00:19 +0000112 store i8 %c, i8* getelementptr (%struct.hackstate* @state, i32 0, i32 1), align 16
113 ret void
Scott Michel9de5d0d2008-01-11 02:53:15 +0000114}
115
Scott Michel053c1da2008-01-29 02:16:57 +0000116define void @set_hackstate_c3(i8 zeroext %c) nounwind {
Scott Michel9de5d0d2008-01-11 02:53:15 +0000117entry:
Scott Michel53dec472008-03-05 23:00:19 +0000118 store i8 %c, i8* getelementptr (%struct.hackstate* @state, i32 0, i32 2), align 16
119 ret void
Scott Michel9de5d0d2008-01-11 02:53:15 +0000120}
Scott Michel497e8882008-01-11 21:01:19 +0000121
Scott Michel053c1da2008-01-29 02:16:57 +0000122define void @set_hackstate_i1(i32 %i) nounwind {
Scott Michel497e8882008-01-11 21:01:19 +0000123entry:
Scott Michel53dec472008-03-05 23:00:19 +0000124 store i32 %i, i32* getelementptr (%struct.hackstate* @state, i32 0, i32 3), align 16
125 ret void
Scott Michel497e8882008-01-11 21:01:19 +0000126}
127
Scott Michel053c1da2008-01-29 02:16:57 +0000128define void @set_hackstate_s1(i16 signext %s) nounwind {
Scott Michel497e8882008-01-11 21:01:19 +0000129entry:
Scott Michel53dec472008-03-05 23:00:19 +0000130 store i16 %s, i16* getelementptr (%struct.hackstate* @state, i32 0, i32 4), align 16
131 ret void
Scott Michel497e8882008-01-11 21:01:19 +0000132}
133
Scott Michel053c1da2008-01-29 02:16:57 +0000134define void @set_hackstate_i3(i32 %i) nounwind {
135entry:
Scott Michel53dec472008-03-05 23:00:19 +0000136 store i32 %i, i32* getelementptr (%struct.hackstate* @state, i32 0, i32 10), align 16
137 ret void
Scott Michel053c1da2008-01-29 02:16:57 +0000138}
139
140define void @set_hackstate_i6(i32 %i) nounwind {
141entry:
Scott Michel53dec472008-03-05 23:00:19 +0000142 store i32 %i, i32* getelementptr (%struct.hackstate* @state, i32 0, i32 13), align 16
143 ret void
Scott Michel053c1da2008-01-29 02:16:57 +0000144}