4 for OP in 'starg.s 0' 'stloc.0' 'stloc.s 0' 'stfld int32 Class::fld' pop ret
6 ./make_stack_0_test.sh "$OP"
9 for OP in add and 'box [mscorlib]System.Int32' 'brfalse branch_target' ceq cgt clt conv.i4 conv.r8 div dup 'ldfld int32 Class::fld' 'ldflda int32 Class::fld' mul not or rem shl shr sub xor
11 ./make_stack_0_pop_test.sh "$OP"
14 for OP in add and ceq cgt clt div dup mul or rem shl shr sub xor 'stfld int32 Class::fld'
16 ./make_stack_1_pop_test.sh "$OP" int32
19 # Table 2: Binary Numeric Operators
21 for OP in add div mul rem sub
23 ./make_bin_test.sh bin_num_op_1_${I} invalid $OP int32 int64
24 ./make_bin_test.sh bin_num_op_2_${I} invalid $OP int32 float64
25 ./make_bin_test.sh bin_num_op_3_${I} invalid $OP int32 object
27 ./make_bin_test.sh bin_num_op_4_${I} invalid $OP int64 int32
28 ./make_bin_test.sh bin_num_op_5_${I} invalid $OP int64 'native int'
29 ./make_bin_test.sh bin_num_op_6_${I} invalid $OP int64 float64
30 ./make_bin_test.sh bin_num_op_7_${I} invalid $OP int64 'int64&'
31 ./make_bin_test.sh bin_num_op_8_${I} invalid $OP int64 object
33 ./make_bin_test.sh bin_num_op_9_${I} invalid $OP 'native int' int64
34 ./make_bin_test.sh bin_num_op_10_${I} invalid $OP 'native int' float64
35 ./make_bin_test.sh bin_num_op_11_${I} invalid $OP 'native int' object
37 ./make_bin_test.sh bin_num_op_12_${I} invalid $OP float64 int32
38 ./make_bin_test.sh bin_num_op_13_${I} invalid $OP float64 int64
39 ./make_bin_test.sh bin_num_op_14_${I} invalid $OP float64 'native int'
40 ./make_bin_test.sh bin_num_op_15_${I} invalid $OP float64 'float64&'
41 ./make_bin_test.sh bin_num_op_16_${I} invalid $OP float64 object
43 ./make_bin_test.sh bin_num_op_17_${I} invalid $OP 'int64&' int64
44 ./make_bin_test.sh bin_num_op_18_${I} invalid $OP 'float64&' float64
45 ./make_bin_test.sh bin_num_op_19_${I} invalid $OP 'object&' object
47 ./make_bin_test.sh bin_num_op_20_${I} invalid $OP object int32
48 ./make_bin_test.sh bin_num_op_21_${I} invalid $OP object int64
49 ./make_bin_test.sh bin_num_op_22_${I} invalid $OP object 'native int'
50 ./make_bin_test.sh bin_num_op_23_${I} invalid $OP object float64
51 ./make_bin_test.sh bin_num_op_24_${I} invalid $OP object 'object&'
52 ./make_bin_test.sh bin_num_op_25_${I} invalid $OP object object
57 for OP in div mul rem sub
59 ./make_bin_test.sh bin_num_op_26_${I} invalid $OP int32 'int32&'
60 ./make_bin_test.sh bin_num_op_27_${I} invalid $OP 'native int' 'native int&'
66 ./make_bin_test.sh bin_num_op_26_${I} unverifiable $OP int32 'int32&'
67 ./make_bin_test.sh bin_num_op_27_${I} unverifiable $OP 'native int' 'native int&'
74 ./make_bin_test.sh bin_num_op_28_${I} invalid $OP 'int32&' int32
75 ./make_bin_test.sh bin_num_op_29_${I} invalid $OP 'native int&' 'native int'
81 ./make_bin_test.sh bin_num_op_28_${I} unverifiable $OP 'int32&' int32
82 ./make_bin_test.sh bin_num_op_29_${I} unverifiable $OP 'native int&' 'native int'
87 for OP in div mul rem add
89 ./make_bin_test.sh bin_num_op_30_${I} invalid $OP 'int32&' 'int32&'
95 ./make_bin_test.sh bin_num_op_30_${I} unverifiable $OP 'int32&' 'int32&'
99 # Table 4: Binary Comparison or Branch Operations
101 for OP in ceq cgt clt
103 ./make_bin_test.sh bin_comp_op_1_${I} invalid $OP int32 int64
104 ./make_bin_test.sh bin_comp_op_2_${I} invalid $OP int32 float64
105 ./make_bin_test.sh bin_comp_op_3_${I} invalid $OP int32 'int32&'
106 ./make_bin_test.sh bin_comp_op_4_${I} invalid $OP int32 object
108 ./make_bin_test.sh bin_comp_op_5_${I} invalid $OP int64 int32
109 ./make_bin_test.sh bin_comp_op_6_${I} invalid $OP int64 'native int'
110 ./make_bin_test.sh bin_comp_op_7_${I} invalid $OP int64 float64
111 ./make_bin_test.sh bin_comp_op_8_${I} invalid $OP int64 'int64&'
112 ./make_bin_test.sh bin_comp_op_9_${I} invalid $OP int64 object
114 ./make_bin_test.sh bin_comp_op_10_${I} invalid $OP 'native int' int64
115 ./make_bin_test.sh bin_comp_op_11_${I} invalid $OP 'native int' float64
116 ./make_bin_test.sh bin_comp_op_12_${I} invalid $OP 'native int' object
118 ./make_bin_test.sh bin_comp_op_13_${I} invalid $OP float64 int32
119 ./make_bin_test.sh bin_comp_op_14_${I} invalid $OP float64 int64
120 ./make_bin_test.sh bin_comp_op_15_${I} invalid $OP float64 'native int'
121 ./make_bin_test.sh bin_comp_op_16_${I} invalid $OP float64 'float64&'
122 ./make_bin_test.sh bin_comp_op_17_${I} invalid $OP float64 object
124 ./make_bin_test.sh bin_comp_op_18_${I} invalid $OP 'int32&' int32
125 ./make_bin_test.sh bin_comp_op_19_${I} invalid $OP 'int64&' int64
126 ./make_bin_test.sh bin_comp_op_20_${I} invalid $OP 'float64&' float64
127 ./make_bin_test.sh bin_comp_op_21_${I} invalid $OP 'object&' object
129 ./make_bin_test.sh bin_comp_op_22_${I} invalid $OP object int32
130 ./make_bin_test.sh bin_comp_op_23_${I} invalid $OP object int64
131 ./make_bin_test.sh bin_comp_op_24_${I} invalid $OP object 'native int'
132 ./make_bin_test.sh bin_comp_op_25_${I} invalid $OP object float64
133 ./make_bin_test.sh bin_comp_op_26_${I} invalid $OP object 'object&'
140 ./make_bin_test.sh bin_comp_op_27_${I} invalid $OP 'native int' 'native int&'
141 ./make_bin_test.sh bin_comp_op_28_${I} invalid $OP 'native int&' 'native int'
142 ./make_bin_test.sh bin_comp_op_29_${I} invalid $OP object object
148 ./make_bin_test.sh bin_comp_op_27_${I} unverifiable $OP 'native int' 'native int&'
149 ./make_bin_test.sh bin_comp_op_28_${I} unverifiable $OP 'native int&' 'native int'
153 # Table 5: Integer Operations
157 ./make_bin_test.sh bin_int_op_1_${I} invalid "$OP" int32 int64
158 ./make_bin_test.sh bin_int_op_2_${I} invalid "$OP" int32 float64
159 ./make_bin_test.sh bin_int_op_3_${I} invalid "$OP" int32 'int32&'
160 ./make_bin_test.sh bin_int_op_4_${I} invalid "$OP" int32 object
162 ./make_bin_test.sh bin_int_op_5_${I} invalid "$OP" int64 int32
163 ./make_bin_test.sh bin_int_op_6_${I} invalid "$OP" int64 'native int'
164 ./make_bin_test.sh bin_int_op_7_${I} invalid "$OP" int64 float64
165 ./make_bin_test.sh bin_int_op_8_${I} invalid "$OP" int64 'int64&'
166 ./make_bin_test.sh bin_int_op_9_${I} invalid "$OP" int64 object
168 ./make_bin_test.sh bin_int_op_10_${I} invalid "$OP" 'native int' int64
169 ./make_bin_test.sh bin_int_op_11_${I} invalid "$OP" 'native int' float64
170 ./make_bin_test.sh bin_int_op_12_${I} invalid "$OP" 'native int' 'native int&'
171 ./make_bin_test.sh bin_int_op_13_${I} invalid "$OP" 'native int' object
173 ./make_bin_test.sh bin_int_op_14_${I} invalid "$OP" float64 int32
174 ./make_bin_test.sh bin_int_op_15_${I} invalid "$OP" float64 int64
175 ./make_bin_test.sh bin_int_op_16_${I} invalid "$OP" float64 'native int'
176 ./make_bin_test.sh bin_int_op_17_${I} invalid "$OP" float64 float64
177 ./make_bin_test.sh bin_int_op_18_${I} invalid "$OP" float64 'int32&'
178 ./make_bin_test.sh bin_int_op_19_${I} invalid "$OP" float64 object
180 ./make_bin_test.sh bin_int_op_20_${I} invalid "$OP" 'int32&' int32
181 ./make_bin_test.sh bin_int_op_21_${I} invalid "$OP" 'int64&' int64
182 ./make_bin_test.sh bin_int_op_22_${I} invalid "$OP" 'native int&' 'native int'
183 ./make_bin_test.sh bin_int_op_23_${I} invalid "$OP" 'float64&' float64
184 ./make_bin_test.sh bin_int_op_24_${I} invalid "$OP" 'int32&' 'int32&'
185 ./make_bin_test.sh bin_int_op_25_${I} invalid "$OP" 'float64&' object
187 ./make_bin_test.sh bin_int_op_26_${I} invalid "$OP" object int32
188 ./make_bin_test.sh bin_int_op_27_${I} invalid "$OP" object int64
189 ./make_bin_test.sh bin_int_op_28_${I} invalid "$OP" object 'native int'
190 ./make_bin_test.sh bin_int_op_29_${I} invalid "$OP" object float64
191 ./make_bin_test.sh bin_int_op_30_${I} invalid "$OP" object 'int32&'
192 ./make_bin_test.sh bin_int_op_31_${I} invalid "$OP" object object
196 for OP in "not\n\tpop"
198 ./make_unary_test.sh not_1 invalid "$OP" float64
199 ./make_unary_test.sh not_2 invalid "$OP" 'int32&'
200 ./make_unary_test.sh not_3 invalid "$OP" object
203 # Table 6: Shift Operators
207 ./make_bin_test.sh shift_op_1_${I} invalid $OP int32 int64
208 ./make_bin_test.sh shift_op_2_${I} invalid $OP int32 float64
209 ./make_bin_test.sh shift_op_3_${I} invalid $OP int32 'int32&'
210 ./make_bin_test.sh shift_op_4_${I} invalid $OP int32 object
212 ./make_bin_test.sh shift_op_5_${I} invalid $OP int64 int64
213 ./make_bin_test.sh shift_op_6_${I} invalid $OP int64 float64
214 ./make_bin_test.sh shift_op_7_${I} invalid $OP int64 'int32&'
215 ./make_bin_test.sh shift_op_8_${I} invalid $OP int64 object
217 ./make_bin_test.sh shift_op_9_${I} invalid $OP 'native int' int64
218 ./make_bin_test.sh shift_op_10_${I} invalid $OP 'native int' float64
219 ./make_bin_test.sh shift_op_11_${I} invalid $OP 'native int' 'native int&'
220 ./make_bin_test.sh shift_op_12_${I} invalid $OP 'native int' object
222 ./make_bin_test.sh shift_op_13_${I} invalid $OP float64 int32
223 ./make_bin_test.sh shift_op_14_${I} invalid $OP float64 int64
224 ./make_bin_test.sh shift_op_15_${I} invalid $OP float64 'native int'
225 ./make_bin_test.sh shift_op_16_${I} invalid $OP float64 float64
226 ./make_bin_test.sh shift_op_17_${I} invalid $OP float64 'int32&'
227 ./make_bin_test.sh shift_op_18_${I} invalid $OP float64 object
229 ./make_bin_test.sh shift_op_19_${I} invalid $OP 'int32&' int32
230 ./make_bin_test.sh shift_op_20_${I} invalid $OP 'int64&' int64
231 ./make_bin_test.sh shift_op_21_${I} invalid $OP 'native int&' 'native int'
232 ./make_bin_test.sh shift_op_22_${I} invalid $OP 'float64&' float64
233 ./make_bin_test.sh shift_op_23_${I} invalid $OP 'int32&' 'int32&'
234 ./make_bin_test.sh shift_op_24_${I} invalid $OP 'float64&' object
236 ./make_bin_test.sh shift_op_25_${I} invalid $OP object int32
237 ./make_bin_test.sh shift_op_26_${I} invalid $OP object int64
238 ./make_bin_test.sh shift_op_27_${I} invalid $OP object 'native int'
239 ./make_bin_test.sh shift_op_28_${I} invalid $OP object float64
240 ./make_bin_test.sh shift_op_29_${I} invalid $OP object 'int32&'
241 ./make_bin_test.sh shift_op_30_${I} invalid $OP object object
245 # Table 8: Conversion Operations
247 for OP in "conv.i4\n\tpop" "conv.r8\n\tpop"
249 ./make_unary_test.sh conv_op_1_${I} invalid $OP 'int32&'
250 ./make_unary_test.sh conv_op_2_${I} invalid $OP object
254 # 1.6 Implicit argument coercion (Table 9: Signature Matching)
256 for OP in stloc.0 "stloc.s 0" "starg.s 0"
258 ./make_store_test.sh coercion_1_${I} invalid "$OP" int8 int64
259 ./make_store_test.sh coercion_2_${I} invalid "$OP" int8 float64
260 ./make_store_test.sh coercion_3_${I} invalid "$OP" int8 'int8&'
261 ./make_store_test.sh coercion_4_${I} invalid "$OP" int8 object
263 ./make_store_test.sh coercion_5_${I} invalid "$OP" 'unsigned int8' int64
264 ./make_store_test.sh coercion_6_${I} invalid "$OP" 'unsigned int8' float64
265 ./make_store_test.sh coercion_7_${I} invalid "$OP" 'unsigned int8' 'unsigned int8&'
266 ./make_store_test.sh coercion_8_${I} invalid "$OP" 'unsigned int8' object
268 ./make_store_test.sh coercion_9_${I} invalid "$OP" bool int64
269 ./make_store_test.sh coercion_10_${I} invalid "$OP" bool float64
270 ./make_store_test.sh coercion_11_${I} invalid "$OP" bool 'bool&'
271 ./make_store_test.sh coercion_12_${I} invalid "$OP" bool object
273 ./make_store_test.sh coercion_13_${I} invalid "$OP" int16 int64
274 ./make_store_test.sh coercion_14_${I} invalid "$OP" int16 float64
275 ./make_store_test.sh coercion_15_${I} invalid "$OP" int16 'int16&'
276 ./make_store_test.sh coercion_16_${I} invalid "$OP" int16 object
278 ./make_store_test.sh coercion_17_${I} invalid "$OP" 'unsigned int16' int64
279 ./make_store_test.sh coercion_18_${I} invalid "$OP" 'unsigned int16' float64
280 ./make_store_test.sh coercion_19_${I} invalid "$OP" 'unsigned int16' 'unsigned int16&'
281 ./make_store_test.sh coercion_20_${I} invalid "$OP" 'unsigned int16' object
283 ./make_store_test.sh coercion_21_${I} invalid "$OP" char int64
284 ./make_store_test.sh coercion_22_${I} invalid "$OP" char float64
285 ./make_store_test.sh coercion_23_${I} invalid "$OP" char 'char&'
286 ./make_store_test.sh coercion_24_${I} invalid "$OP" char object
288 ./make_store_test.sh coercion_25_${I} invalid "$OP" int32 int64
289 ./make_store_test.sh coercion_26_${I} invalid "$OP" int32 float64
290 ./make_store_test.sh coercion_27_${I} invalid "$OP" int32 'int32&'
291 ./make_store_test.sh coercion_28_${I} invalid "$OP" int32 object
293 ./make_store_test.sh coercion_29_${I} invalid "$OP" 'unsigned int32' int64
294 ./make_store_test.sh coercion_30_${I} invalid "$OP" 'unsigned int32' float64
295 ./make_store_test.sh coercion_31_${I} invalid "$OP" 'unsigned int32' 'unsigned int32&'
296 ./make_store_test.sh coercion_32_${I} invalid "$OP" 'unsigned int32' object
298 ./make_store_test.sh coercion_33_${I} invalid "$OP" int64 int32
299 ./make_store_test.sh coercion_34_${I} invalid "$OP" int64 'native int'
300 ./make_store_test.sh coercion_35_${I} invalid "$OP" int64 float64
301 ./make_store_test.sh coercion_36_${I} invalid "$OP" int64 'int64&'
302 ./make_store_test.sh coercion_37_${I} invalid "$OP" int64 object
304 ./make_store_test.sh coercion_38_${I} invalid "$OP" 'unsigned int64' int32
305 ./make_store_test.sh coercion_39_${I} invalid "$OP" 'unsigned int64' 'native int'
306 ./make_store_test.sh coercion_40_${I} invalid "$OP" 'unsigned int64' float64
307 ./make_store_test.sh coercion_41_${I} invalid "$OP" 'unsigned int64' 'unsigned int64&'
308 ./make_store_test.sh coercion_42_${I} invalid "$OP" 'unsigned int64' object
310 ./make_store_test.sh coercion_43_${I} invalid "$OP" 'native int' int64
311 ./make_store_test.sh coercion_44_${I} invalid "$OP" 'native int' float64
312 ./make_store_test.sh coercion_45_${I} invalid "$OP" 'native int' 'native int&'
313 ./make_store_test.sh coercion_46_${I} invalid "$OP" 'native int' object
315 ./make_store_test.sh coercion_47_${I} invalid "$OP" 'native unsigned int' int64
316 ./make_store_test.sh coercion_48_${I} invalid "$OP" 'native unsigned int' float64
317 ./make_store_test.sh coercion_49_${I} invalid "$OP" 'native unsigned int' 'native unsigned int&'
318 ./make_store_test.sh coercion_50_${I} invalid "$OP" 'native unsigned int' object
320 ./make_store_test.sh coercion_51_${I} invalid "$OP" float32 int32
321 ./make_store_test.sh coercion_52_${I} invalid "$OP" float32 'native int'
322 ./make_store_test.sh coercion_53_${I} invalid "$OP" float32 int64
323 ./make_store_test.sh coercion_54_${I} invalid "$OP" float32 'float32&'
324 ./make_store_test.sh coercion_55_${I} invalid "$OP" float32 object
326 ./make_store_test.sh coercion_56_${I} invalid "$OP" float64 int32
327 ./make_store_test.sh coercion_57_${I} invalid "$OP" float64 'native int'
328 ./make_store_test.sh coercion_58_${I} invalid "$OP" float64 int64
329 ./make_store_test.sh coercion_59_${I} invalid "$OP" float64 'float64&'
330 ./make_store_test.sh coercion_60_${I} invalid "$OP" float64 object
332 ./make_store_test.sh coercion_61_${I} invalid "$OP" object int32
333 ./make_store_test.sh coercion_62_${I} invalid "$OP" object 'native int'
334 ./make_store_test.sh coercion_63_${I} invalid "$OP" object int64
335 ./make_store_test.sh coercion_64_${I} invalid "$OP" object float64
336 ./make_store_test.sh coercion_65_${I} invalid "$OP" object 'object&'
338 ./make_store_test.sh coercion_66_${I} invalid "$OP" 'class ValueType' int32
339 ./make_store_test.sh coercion_67_${I} invalid "$OP" 'class ValueType' 'native int'
340 ./make_store_test.sh coercion_68_${I} invalid "$OP" 'class ValueType' int64
341 ./make_store_test.sh coercion_69_${I} invalid "$OP" 'class ValueType' float64
342 ./make_store_test.sh coercion_70_${I} invalid "$OP" 'class ValueType' 'class ValueType&'
343 ./make_store_test.sh coercion_71_${I} invalid "$OP" 'class ValueType' object
345 ./make_store_test.sh coercion_72_${I} invalid "$OP" 'int32&' int32
346 ./make_store_test.sh coercion_73_${I} unverifiable "$OP" 'int32&' 'native int'
347 ./make_store_test.sh coercion_74_${I} invalid "$OP" 'int32&' int64
348 ./make_store_test.sh coercion_75_${I} invalid "$OP" 'int32&' float64
349 ./make_store_test.sh coercion_76_${I} invalid "$OP" 'int32&' object
351 ./make_store_test.sh coercion_77_${I} invalid "$OP" typedref int32
352 ./make_store_test.sh coercion_78_${I} invalid "$OP" typedref 'native int'
353 ./make_store_test.sh coercion_89_${I} invalid "$OP" typedref int64
354 ./make_store_test.sh coercion_80_${I} invalid "$OP" typedref float64
355 ./make_store_test.sh coercion_81_${I} invalid "$OP" typedref 'typedref&'
356 ./make_store_test.sh coercion_82_${I} invalid "$OP" typedref object
361 for OP in "stfld TYPE1 Class::fld" "call void Class::Method(TYPE1)"
363 ./make_obj_store_test.sh obj_coercion_1_${I} invalid "$OP" int8 int64
364 ./make_obj_store_test.sh obj_coercion_2_${I} invalid "$OP" int8 float64
365 ./make_obj_store_test.sh obj_coercion_3_${I} invalid "$OP" int8 'int8&'
366 ./make_obj_store_test.sh obj_coercion_4_${I} invalid "$OP" int8 object
368 ./make_obj_store_test.sh obj_coercion_5_${I} invalid "$OP" 'unsigned int8' int64
369 ./make_obj_store_test.sh obj_coercion_6_${I} invalid "$OP" 'unsigned int8' float64
370 ./make_obj_store_test.sh obj_coercion_7_${I} invalid "$OP" 'unsigned int8' 'unsigned int8&'
371 ./make_obj_store_test.sh obj_coercion_8_${I} invalid "$OP" 'unsigned int8' object
373 ./make_obj_store_test.sh obj_coercion_9_${I} invalid "$OP" bool int64
374 ./make_obj_store_test.sh obj_coercion_10_${I} invalid "$OP" bool float64
375 ./make_obj_store_test.sh obj_coercion_11_${I} invalid "$OP" bool 'bool&'
376 ./make_obj_store_test.sh obj_coercion_12_${I} invalid "$OP" bool object
378 ./make_obj_store_test.sh obj_coercion_13_${I} invalid "$OP" int16 int64
379 ./make_obj_store_test.sh obj_coercion_14_${I} invalid "$OP" int16 float64
380 ./make_obj_store_test.sh obj_coercion_15_${I} invalid "$OP" int16 'int16&'
381 ./make_obj_store_test.sh obj_coercion_16_${I} invalid "$OP" int16 object
383 ./make_obj_store_test.sh obj_coercion_17_${I} invalid "$OP" 'unsigned int16' int64
384 ./make_obj_store_test.sh obj_coercion_18_${I} invalid "$OP" 'unsigned int16' float64
385 ./make_obj_store_test.sh obj_coercion_19_${I} invalid "$OP" 'unsigned int16' 'unsigned int16&'
386 ./make_obj_store_test.sh obj_coercion_20_${I} invalid "$OP" 'unsigned int16' object
388 ./make_obj_store_test.sh obj_coercion_21_${I} invalid "$OP" char int64
389 ./make_obj_store_test.sh obj_coercion_22_${I} invalid "$OP" char float64
390 ./make_obj_store_test.sh obj_coercion_23_${I} invalid "$OP" char 'char&'
391 ./make_obj_store_test.sh obj_coercion_24_${I} invalid "$OP" char object
393 ./make_obj_store_test.sh obj_coercion_25_${I} invalid "$OP" int32 int64
394 ./make_obj_store_test.sh obj_coercion_26_${I} invalid "$OP" int32 float64
395 ./make_obj_store_test.sh obj_coercion_27_${I} invalid "$OP" int32 'int32&'
396 ./make_obj_store_test.sh obj_coercion_28_${I} invalid "$OP" int32 object
398 ./make_obj_store_test.sh obj_coercion_29_${I} invalid "$OP" 'unsigned int32' int64
399 ./make_obj_store_test.sh obj_coercion_30_${I} invalid "$OP" 'unsigned int32' float64
400 ./make_obj_store_test.sh obj_coercion_31_${I} invalid "$OP" 'unsigned int32' 'unsigned int32&'
401 ./make_obj_store_test.sh obj_coercion_32_${I} invalid "$OP" 'unsigned int32' object
403 ./make_obj_store_test.sh obj_coercion_33_${I} invalid "$OP" int64 int32
404 ./make_obj_store_test.sh obj_coercion_34_${I} invalid "$OP" int64 'native int'
405 ./make_obj_store_test.sh obj_coercion_35_${I} invalid "$OP" int64 float64
406 ./make_obj_store_test.sh obj_coercion_36_${I} invalid "$OP" int64 'int64&'
407 ./make_obj_store_test.sh obj_coercion_37_${I} invalid "$OP" int64 object
409 ./make_obj_store_test.sh obj_coercion_38_${I} invalid "$OP" 'unsigned int64' int32
410 ./make_obj_store_test.sh obj_coercion_39_${I} invalid "$OP" 'unsigned int64' 'native int'
411 ./make_obj_store_test.sh obj_coercion_40_${I} invalid "$OP" 'unsigned int64' float64
412 ./make_obj_store_test.sh obj_coercion_41_${I} invalid "$OP" 'unsigned int64' 'unsigned int64&'
413 ./make_obj_store_test.sh obj_coercion_42_${I} invalid "$OP" 'unsigned int64' object
415 ./make_obj_store_test.sh obj_coercion_43_${I} invalid "$OP" 'native int' int64
416 ./make_obj_store_test.sh obj_coercion_44_${I} invalid "$OP" 'native int' float64
417 ./make_obj_store_test.sh obj_coercion_45_${I} invalid "$OP" 'native int' 'native int&'
418 ./make_obj_store_test.sh obj_coercion_46_${I} invalid "$OP" 'native int' object
420 ./make_obj_store_test.sh obj_coercion_47_${I} invalid "$OP" 'native unsigned int' int64
421 ./make_obj_store_test.sh obj_coercion_48_${I} invalid "$OP" 'native unsigned int' float64
422 ./make_obj_store_test.sh obj_coercion_49_${I} invalid "$OP" 'native unsigned int' 'native unsigned int&'
423 ./make_obj_store_test.sh obj_coercion_50_${I} invalid "$OP" 'native unsigned int' object
425 ./make_obj_store_test.sh obj_coercion_51_${I} invalid "$OP" float32 int32
426 ./make_obj_store_test.sh obj_coercion_52_${I} invalid "$OP" float32 'native int'
427 ./make_obj_store_test.sh obj_coercion_53_${I} invalid "$OP" float32 int64
428 ./make_obj_store_test.sh obj_coercion_54_${I} invalid "$OP" float32 'float32&'
429 ./make_obj_store_test.sh obj_coercion_55_${I} invalid "$OP" float32 object
431 ./make_obj_store_test.sh obj_coercion_56_${I} invalid "$OP" float64 int32
432 ./make_obj_store_test.sh obj_coercion_57_${I} invalid "$OP" float64 'native int'
433 ./make_obj_store_test.sh obj_coercion_58_${I} invalid "$OP" float64 int64
434 ./make_obj_store_test.sh obj_coercion_59_${I} invalid "$OP" float64 'float64&'
435 ./make_obj_store_test.sh obj_coercion_60_${I} invalid "$OP" float64 object
437 ./make_obj_store_test.sh obj_coercion_61_${I} invalid "$OP" object int32
438 ./make_obj_store_test.sh obj_coercion_62_${I} invalid "$OP" object 'native int'
439 ./make_obj_store_test.sh obj_coercion_63_${I} invalid "$OP" object int64
440 ./make_obj_store_test.sh obj_coercion_64_${I} invalid "$OP" object float64
441 ./make_obj_store_test.sh obj_coercion_65_${I} invalid "$OP" object 'object&'
443 ./make_obj_store_test.sh obj_coercion_66_${I} invalid "$OP" 'class ValueType' int32
444 ./make_obj_store_test.sh obj_coercion_67_${I} invalid "$OP" 'class ValueType' 'native int'
445 ./make_obj_store_test.sh obj_coercion_68_${I} invalid "$OP" 'class ValueType' int64
446 ./make_obj_store_test.sh obj_coercion_69_${I} invalid "$OP" 'class ValueType' float64
447 ./make_obj_store_test.sh obj_coercion_70_${I} invalid "$OP" 'class ValueType' 'class ValueType&'
448 ./make_obj_store_test.sh obj_coercion_71_${I} invalid "$OP" 'class ValueType' object
450 ./make_obj_store_test.sh obj_coercion_72_${I} invalid "$OP" 'int32&' int32
451 ./make_obj_store_test.sh obj_coercion_73_${I} unverifiable "$OP" 'int32&' 'native int'
452 ./make_obj_store_test.sh obj_coercion_74_${I} invalid "$OP" 'int32&' int64
453 ./make_obj_store_test.sh obj_coercion_75_${I} invalid "$OP" 'int32&' float64
454 ./make_obj_store_test.sh obj_coercion_76_${I} invalid "$OP" 'int32&' object
456 ./make_obj_store_test.sh obj_coercion_77_${I} invalid "$OP" typedref int32
457 ./make_obj_store_test.sh obj_coercion_78_${I} invalid "$OP" typedref 'native int'
458 ./make_obj_store_test.sh obj_coercion_79_${I} invalid "$OP" typedref int64
459 ./make_obj_store_test.sh obj_coercion_80_${I} invalid "$OP" typedref float64
460 ./make_obj_store_test.sh obj_coercion_81_${I} invalid "$OP" typedref 'typedref&'
461 ./make_obj_store_test.sh obj_coercion_82_${I} invalid "$OP" typedref object
465 # 1.8.1.2.3 Verification type compatibility (Assignment compatibility)
467 for OP in stloc.0 "stloc.s 0" "starg.s 0"
469 # ClassB not subtype of ClassA.
470 ./make_store_test.sh assign_compat_1_${I} unverifiable "$OP" 'class ClassA' 'classB'
472 # ClassA not interface type.
473 ./make_store_test.sh assign_compat_3_${I} unverifiable "$OP" object 'class ClassA'
475 # Implementation of InterfaceB does not require the implementation of InterfaceA
476 ./make_store_test.sh assign_compat_4_${I} unverifiable "$OP" 'class InterfaceA' 'class InterfaceB'
479 ./make_store_test.sh assign_compat_5_${I} unverifiable "$OP" 'string []' 'string[,]'
482 ./make_store_test.sh assign_compat_6_${I} unverifiable "$OP" 'string [,]' 'string[]'
484 # Arrays with different rank.
485 ./make_store_test.sh assign_compat_7_${I} unverifiable "$OP" 'string [,]' 'string[,,]'
487 # Method pointers with different return types.
488 ./make_store_test.sh assign_compat_8_${I} unverifiable "$OP" 'method int32 *(int32)' 'method float32 *(int32)'
490 # Method pointers with different parameters.
491 ./make_store_test.sh assign_compat_9_${I} unverifiable "$OP" 'method int32 *(float64)' 'method int32 *(int32)'
493 # Method pointers with different calling conventions.
494 ./make_store_test.sh assign_compat_10_${I} unverifiable "$OP" 'method vararg int32 *(int32)' 'method int32 *(int32)'
498 for OP in "stfld TYPE1 Class::fld" "call void Class::Method(TYPE1)"
500 # ClassB not subtype of ClassA.
501 ./make_obj_store_test.sh assign_compat_1_${I} unverifiable "$OP" 'class ClassA' 'classB'
503 # ClassA not interface type.
504 ./make_obj_store_test.sh assign_compat_3_${I} unverifiable "$OP" object 'class ClassA'
506 # Implementation of InterfaceB does not require the implementation of InterfaceA
507 ./make_obj_store_test.sh assign_compat_4_${I} unverifiable "$OP" 'class InterfaceA' 'class InterfaceB'
510 ./make_obj_store_test.sh assign_compat_5_${I} unverifiable "$OP" 'string []' 'string[,]'
513 ./make_obj_store_test.sh assign_compat_6_${I} unverifiable "$OP" 'string [,]' 'string[]'
515 # Arrays with different rank.
516 ./make_obj_store_test.sh assign_compat_7_${I} unverifiable "$OP" 'string [,]' 'string[,,]'
518 # Method pointers with different return types.
519 ./make_obj_store_test.sh assign_compat_8_${I} unverifiable "$OP" 'method int32 *(int32)' 'method float32 *(int32)'
521 # Method pointers with different parameters.
522 ./make_obj_store_test.sh assign_compat_9_${I} unverifiable "$OP" 'method int32 *(float64)' 'method int32 *(int32)'
524 # Method pointers with different calling conventions.
525 ./make_obj_store_test.sh assign_compat_10_${I} unverifiable "$OP" 'method vararg int32 *(int32)' 'method int32 *(int32)'
529 # 1.8.1.3 Merging stack states
531 for TYPE1 in int32 int64 'native int' float64 'valuetype ValueType' 'class Class' 'int8&' 'int16&' 'int32&' 'int64&' 'native int&' 'float32&' 'float64&' 'valuetype ValueType&' 'class Class&' 'method int32 *(int32)' 'method int32 *(int32)' 'method float32 *(int32)' 'method int32 *(float64)' 'method vararg int32 *(int32)'
533 for TYPE2 in int32 int64 'native int' float64 'valuetype ValueType' 'class Class' 'int8&' 'int16&' 'int32&' 'int64&' 'native int&' 'float32&' 'float64&' 'valuetype ValueType&' 'class Class&' 'method int32 *(int32)' 'method int32 *(int32)' 'method float32 *(int32)' 'method int32 *(float64)' 'method vararg int32 *(int32)'
535 if [ "$TYPE1" != "$TYPE2" ]; then
536 ./make_stack_merge_test.sh stack_merge_${I} unverifiable "$TYPE1" "$TYPE2"
542 # Unverifiable array stack merges
544 # These are verifiable, the merged type is 'object' or 'Array'
545 #for TYPE1 in 'string []' 'string [,]' 'string [,,]'
547 # for TYPE2 in 'string []' 'string [,]' 'string [,,]'
549 # if [ "$TYPE1" != "$TYPE2" ]; then
550 # ./make_stack_merge_test.sh stack_merge_${I} unverifiable "$TYPE1" "$TYPE2"
556 # Exception block branch tests (see 3.15)
558 for OP in br "ldc.i4.0\n\tbrfalse"
560 ./make_exception_branch_test.sh in_try_${I} "$OP branch_target1"
561 ./make_exception_branch_test.sh in_catch_${I} "$OP branch_target2"
562 ./make_exception_branch_test.sh in_finally_${I} "$OP branch_target3"
563 ./make_exception_branch_test.sh in_filter_${I} "$OP branch_target4"
564 ./make_exception_branch_test.sh out_try_${I} "" "$OP branch_target5"
565 ./make_exception_branch_test.sh out_catch_${I} "" "" "$OP branch_target5"
566 ./make_exception_branch_test.sh out_finally_${I} "" "" "" "$OP branch_target5"
567 ./make_exception_branch_test.sh out_filter_${I} "" "" "" "" "$OP branch_target5"
571 ./make_exception_branch_test.sh ret_out_try "" "ldc.i4.0\n\tret"
572 ./make_exception_branch_test.sh ret_out_catch "" "" "ldc.i4.0\n\tret"
573 ./make_exception_branch_test.sh ret_out_finally "" "" "" "ldc.i4.0\n\tret"
574 ./make_exception_branch_test.sh ret_out_filter "" "" "" "" "ldc.i4.0\n\tret"
576 # Unary branch op type tests (see 3.17)
580 ./make_unary_test.sh un_branch_op invalid "$OP branch_target" float64
583 # Ldloc.0 and Ldarg tests (see 3.38)
586 for OP in "ldarg.s 0" "ldarg.0" "ldarga.s 0" "ldloc.s 1" "ldloca.s 1"
588 ./make_unary_test.sh ld_no_slot_${I} invalid "pop\n\t$OP\n\tpop" int32
592 # Starg and Stloc tests (see 3.61)
595 for OP in "starg.s 0" "stloc.s 1"
597 ./make_unary_test.sh st_no_slot_${I} invalid "$OP" int32
601 # Ldfld and Ldflda tests (see 4.10)
603 for OP in ldfld ldflda
605 ./make_unary_test.sh ${OP}_no_fld invalid "$OP int32 Class::invalid\n\tpop" "class Class"
606 ./make_unary_test.sh ${OP}_bad_obj invalid "$OP int32 Class::valid\n\tpop" object
607 ./make_unary_test.sh ${OP}_obj_int32 invalid "$OP int32 Class::valid\n\tpop" int32
608 ./make_unary_test.sh ${OP}_obj_int64 invalid "$OP int32 Class::valid\n\tpop" int64
609 ./make_unary_test.sh ${OP}_obj_float64 invalid "$OP int32 Class::valid\n\tpop" float64
610 ./make_unary_test.sh ${OP}_obj_native_int unverifiable "$OP int32 Class::valid\n\tpop" 'native int'
611 ./make_unary_test.sh ${OP}_obj_native_int unverifiable "$OP object Overlapped::objVal\n\tpop" "class Overlapped"
612 ./make_unary_test.sh ${OP}_obj_native_int unverifiable "$OP int32 Overlapped::publicIntVal\n\tpop" "class Overlapped"
615 # Stfld tests (see 4.28)
617 ./make_unary_test.sh stfld_no_fld invalid "ldc.i4.0\n\tstfld int32 Class::invalid" "class Class"
618 ./make_unary_test.sh stfld_bad_obj invalid "ldc.i4.0\n\tstfld int32 Class::valid" object
619 ./make_unary_test.sh stfld_obj_int32 invalid "ldc.i4.0\n\tstfld int32 Class::valid" int32
620 ./make_unary_test.sh stfld_obj_int64 invalid "ldc.i4.0\n\tstfld int32 Class::valid" int64
621 ./make_unary_test.sh stfld_obj_float64 invalid "ldc.i4.0\n\tstfld int32 Class::valid" float64
622 ./make_unary_test.sh stfld_no_int invalid "stfld int32 Class::valid" "class Class"
623 ./make_unary_test.sh stfld_obj_native_int unverifiable "ldc.i4.0\n\tstfld int32 Class::valid" 'native int'
625 # Box tests (see 4.1)
627 # Box non-existent type.
628 ./make_unary_test.sh box_bad_type unverifiable "box valuetype NonExistent\n\tpop" "valuetype NonExistent"
630 # Top of stack not assignment compatible with typeToc.
631 ./make_unary_test.sh box_not_compat unverifiable "box [mscorlib]System.Int32\n\tpop" float32
634 ./make_unary_test.sh box_byref unverifiable "box [mscorlib]System.Int32&\n\tpop" 'int32&'
636 # Box byref-like type.
637 ./make_unary_test.sh box_byref_like unverifiable "box [mscorlib]System.TypedRefrence\n\tpop" typedref
640 ./make_unary_test.sh box_void unverifiable "box [mscorlib]System.Void\n\tpop" "class [mscorlib]System.Void"