OLD | NEW |
---|---|
(Empty) | |
1 ; RUN: not pnacl-abicheck < %s | FileCheck %s | |
2 | |
3 ; Test type-checking of function signatures. | |
4 | |
5 ; CHECK: Function f_arg_i1 has disallowed type: void (i1) | |
6 ; CHECK: Function f_ret_i1 has disallowed type: i1 () | |
7 define internal void @f_arg_i1(i1 %a) { | |
8 ret void | |
9 } | |
10 define internal i1 @f_ret_i1() { | |
11 ret i1 undef | |
12 } | |
13 | |
14 ; CHECK: Function f_arg_i8 has disallowed type: void (i8) | |
15 ; CHECK: Function f_ret_i8 has disallowed type: i8 () | |
16 define internal void @f_arg_i8(i8 %a) { | |
17 ret void | |
18 } | |
19 define internal i8 @f_ret_i8() { | |
20 ret i8 undef | |
21 } | |
22 | |
23 ; CHECK: Function f_arg_i16 has disallowed type: void (i16) | |
24 ; CHECK: Function f_ret_i16 has disallowed type: i16 () | |
25 define internal void @f_arg_i16(i16 %a) { | |
26 ret void | |
27 } | |
28 define internal i16 @f_ret_i16() { | |
29 ret i16 undef | |
30 } | |
31 | |
32 ; CHECK-NOT: f_arg_i32 {{.*}} disallowed | |
jvoung (off chromium)
2014/04/16 22:03:12
I think you can regex the middle of the CHECK-NOT
JF
2014/04/16 22:35:36
Done.
| |
33 define internal void @f_arg_i32(i32 %a) { | |
34 ret void | |
35 } | |
36 define internal i32 @f_ret_i32() { | |
37 ret i32 undef | |
38 } | |
39 | |
40 ; CHECK-NOT: f_arg_i64 {{.*}} disallowed | |
41 define internal void @f_arg_i64(i64 %a) { | |
42 ret void | |
43 } | |
44 define internal i64 @f_ret_i64() { | |
45 ret i64 undef | |
46 } | |
47 | |
48 ; CHECK: Function f_arg_i128 has disallowed type: void (i128) | |
49 ; CHECK: Function f_ret_i128 has disallowed type: i128 () | |
50 define internal void @f_arg_i128(i128 %a) { | |
51 ret void | |
52 } | |
53 define internal i128 @f_ret_i128() { | |
54 ret i128 undef | |
55 } | |
56 | |
57 ; CHECK-NOT: f_arg_float {{.*}} disallowed | |
58 define internal void @f_arg_float(float %a) { | |
59 ret void | |
60 } | |
61 define internal float @f_ret_float() { | |
62 ret float undef | |
63 } | |
64 | |
65 ; CHECK-NOT: f_arg_double {{.*}} disallowed | |
66 define internal void @f_arg_double(double %a) { | |
67 ret void | |
68 } | |
69 define internal double @f_ret_double() { | |
70 ret double undef | |
71 } | |
72 | |
73 ; CHECK: Function f_arg_1xi1 has disallowed type: void (<1 x i1>) | |
74 ; CHECK: Function f_ret_1xi1 has disallowed type: <1 x i1> () | |
75 define internal void @f_arg_1xi1(<1 x i1> %a) { | |
76 ret void | |
77 } | |
78 define internal <1 x i1> @f_ret_1xi1() { | |
79 ret <1 x i1> undef | |
80 } | |
81 | |
82 ; CHECK: Function f_arg_2xi1 has disallowed type: void (<2 x i1>) | |
83 ; CHECK: Function f_ret_2xi1 has disallowed type: <2 x i1> () | |
84 define internal void @f_arg_2xi1(<2 x i1> %a) { | |
85 ret void | |
86 } | |
87 define internal <2 x i1> @f_ret_2xi1() { | |
88 ret <2 x i1> undef | |
89 } | |
90 | |
91 ; CHECK-NOT: f_arg_4xi1 {{.*}} disallowed | |
92 define internal void @f_arg_4xi1(<4 x i1> %a) { | |
93 ret void | |
94 } | |
95 define internal <4 x i1> @f_ret_4xi1() { | |
96 ret <4 x i1> undef | |
97 } | |
98 | |
99 ; CHECK-NOT: f_arg_8xi1 {{.*}} disallowed | |
100 define internal void @f_arg_8xi1(<8 x i1> %a) { | |
101 ret void | |
102 } | |
103 define internal <8 x i1> @f_ret_8xi1() { | |
104 ret <8 x i1> undef | |
105 } | |
106 | |
107 ; CHECK-NOT: f_arg_16xi1 {{.*}} disallowed | |
108 define internal void @f_arg_16xi1(<16 x i1> %a) { | |
109 ret void | |
110 } | |
111 define internal <16 x i1> @f_ret_16xi1() { | |
112 ret <16 x i1> undef | |
113 } | |
114 | |
115 ; CHECK: Function f_arg_32xi1 has disallowed type: void (<32 x i1>) | |
116 ; CHECK: Function f_ret_32xi1 has disallowed type: <32 x i1> () | |
117 define internal void @f_arg_32xi1(<32 x i1> %a) { | |
118 ret void | |
119 } | |
120 define internal <32 x i1> @f_ret_32xi1() { | |
121 ret <32 x i1> undef | |
122 } | |
123 | |
124 ; CHECK: Function f_arg_64xi1 has disallowed type: void (<64 x i1>) | |
125 ; CHECK: Function f_ret_64xi1 has disallowed type: <64 x i1> () | |
126 define internal void @f_arg_64xi1(<64 x i1> %a) { | |
127 ret void | |
128 } | |
129 define internal <64 x i1> @f_ret_64xi1() { | |
130 ret <64 x i1> undef | |
131 } | |
132 | |
133 ; CHECK-NOT: f_arg_16xi8 {{.*}} disallowed | |
134 define internal void @f_arg_16xi8(<16 x i8> %a) { | |
135 ret void | |
136 } | |
137 define internal <16 x i8> @f_ret_16xi8() { | |
138 ret <16 x i8> undef | |
139 } | |
140 | |
141 ; CHECK-NOT: f_arg_8xi16 {{.*}} disallowed | |
142 define internal void @f_arg_8xi16(<8 x i16> %a) { | |
143 ret void | |
144 } | |
145 define internal <8 x i16> @f_ret_8xi16() { | |
146 ret <8 x i16> undef | |
147 } | |
148 | |
149 ; CHECK-NOT: f_arg_4xi32 {{.*}} disallowed | |
150 define internal void @f_arg_4xi32(<4 x i32> %a) { | |
151 ret void | |
152 } | |
153 define internal <4 x i32> @f_ret_4xi32() { | |
154 ret <4 x i32> undef | |
155 } | |
156 | |
157 ; CHECK: Function f_arg_2xi64 has disallowed type: void (<2 x i64>) | |
158 ; CHECK: Function f_ret_2xi64 has disallowed type: <2 x i64> () | |
159 define internal void @f_arg_2xi64(<2 x i64> %a) { | |
160 ret void | |
161 } | |
162 define internal <2 x i64> @f_ret_2xi64() { | |
163 ret <2 x i64> undef | |
164 } | |
165 | |
166 ; CHECK-NOT: f_arg_4xfloat {{.*}} disallowed | |
167 define internal void @f_arg_4xfloat(<4 x float> %a) { | |
168 ret void | |
169 } | |
170 define internal <4 x float> @f_ret_4xfloat() { | |
171 ret <4 x float> undef | |
172 } | |
173 | |
174 ; CHECK: Function f_arg_2xdouble has disallowed type: void (<2 x double>) | |
175 ; CHECK: Function f_ret_2xdouble has disallowed type: <2 x double> () | |
176 define internal void @f_arg_2xdouble(<2 x double> %a) { | |
177 ret void | |
178 } | |
179 define internal <2 x double> @f_ret_2xdouble() { | |
180 ret <2 x double> undef | |
181 } | |
OLD | NEW |