Files
mercury/tests/hard_coded/lookup_disj.exp
Peter Wang 4c2846593a Make it possible to store double-precision `float' constructor arguments in
Branches: main

Make it possible to store double-precision `float' constructor arguments in
unboxed form, in low-level C grades on 32-bit platforms, i.e. `float' (and
equivalent) arguments may occupy two machine words. However, until we implement
float registers, this does more harm than good so it remains disabled.

compiler/llds.m:
	Add a type `cell_arg' to hold information about an argument of a cell
	being constructed.

	Change `heap_ref' so that we can refer to a pointer with an unknown
	tag.

compiler/unify_gen.m:
	Use the `cell_arg' type to simplify code related to generating
	constructions.

	Handle double word arguments in constructions and deconstructions.

	Update enumeration packing code to account for the presence of double
	width arguments and the `cell_arg' type.

	Take double width arguments into account when generating ground terms.

compiler/code_info.m:
	Extend `assign_field_lval_expr_to_var' to work for expressions
	involving multiple field lvals of the same variable.

	Make `assign_cell_to_var' conform to changes.

compiler/code_util.m:
	Add a predicate to calculate the size of a cell given its cell_args.

compiler/var_locn.m:
	Conform to the use of the `cell_arg' type and the presense of double
	width arguments.

	Calculate cell size correctly in places.

	Move sanity checking from `var_locn_assign_field_lval_expr_to_var'
	to `code_info.assign_field_lval_expr_to_var'.

compiler/global_data.m:
	Make `rval_type_as_arg' take into account the width of the argument.

	Conform to changes.

compiler/c_util.m:
	Add a new binop category.  Unlike the existing macro_binop category,
	the arguments of macros in this category cannot all be assumed to be
	of integral types.

compiler/llds_out_data.m:
compiler/llds_out_instr.m:
	Output calls to the macros `MR_float_word_bits', `MR_float_from_dword'
	and `MR_float_from_dword_ptr' which were introduced previously.

	When a `heap_ref' has an unknown tag, make the generated code mask off
	the tag bits.

compiler/lco.m:
	Disable the optimisation when float arguments are present, on the basis
	of whether Mercury floats are wider than a machine word.  The comments
	about when floats are stored in boxed form are out of date.

compiler/arg_pack.m:
	Rename a predicate.

compiler/make_hlds_passes.m:
	Update a comment.

compiler/disj_gen.m:
compiler/exprn_aux.m:
compiler/global_data.m:
compiler/llds_to_x86_64.m:
compiler/lookup_switch.m:
compiler/mlds_to_c.m:
compiler/opt_debug.m:
compiler/opt_util.m:
compiler/stack_layout.m:
compiler/string_switch.m:
	Conform to changes.

runtime/mercury_float.h:
	Add a cast to `MR_float_word_bits' to avoid a gcc error.

tests/hard_coded/Mercury.options:
tests/hard_coded/Mmakefile:
tests/hard_coded/heap_ref_mask_tag.exp:
tests/hard_coded/heap_ref_mask_tag.m:
tests/hard_coded/reuse_double.exp:
tests/hard_coded/reuse_double.m:
	Add test cases.

tests/hard_coded/lookup_disj.exp:
tests/hard_coded/lookup_disj.m:
	Extend existing test case.
2011-09-16 07:03:36 +00:00

61 lines
1.4 KiB
Plaintext

peek p 1
peek p 2
peek p 3
peek p 4
peek p 5
p soln 1.10 - one, 11, 10.10, a
p soln 2.20 - two, 12, 20.20, b
p soln 3.30 - three, 13, 30.30, c
p soln 4.40 - four, 14, 40.40, f(a)
p soln 5.50 - five, 15, 50.50, g(a)
peek q 1 11
peek q 1 22
peek q 1 33
peek q 1 44
peek q 1 55
peek q 2 11
peek q 2 22
peek q 2 33
peek q 2 44
peek q 2 55
peek q 3 11
peek q 3 22
peek q 3 33
peek q 3 44
peek q 3 55
peek q 4 11
peek q 4 22
peek q 4 33
peek q 4 44
peek q 4 55
peek q 5 11
peek q 5 22
peek q 5 33
peek q 5 44
peek q 5 55
q soln 1.10 - one, 11, a, 111, a
q soln 1.10 - one, 11, a, 122, b
q soln 1.10 - one, 11, a, 133, c
q soln 1.10 - one, 11, a, 144, f(a)
q soln 1.10 - one, 11, a, 155, g(a)
q soln 2.20 - two, 12, b, 111, a
q soln 2.20 - two, 12, b, 122, b
q soln 2.20 - two, 12, b, 133, c
q soln 2.20 - two, 12, b, 144, f(a)
q soln 2.20 - two, 12, b, 155, g(a)
q soln 3.30 - three, 13, c, 111, a
q soln 3.30 - three, 13, c, 122, b
q soln 3.30 - three, 13, c, 133, c
q soln 3.30 - three, 13, c, 144, f(a)
q soln 3.30 - three, 13, c, 155, g(a)
q soln 4.40 - four, 14, f(a), 111, a
q soln 4.40 - four, 14, f(a), 122, b
q soln 4.40 - four, 14, f(a), 133, c
q soln 4.40 - four, 14, f(a), 144, f(a)
q soln 4.40 - four, 14, f(a), 155, g(a)
q soln 5.50 - five, 15, g(a), 111, a
q soln 5.50 - five, 15, g(a), 122, b
q soln 5.50 - five, 15, g(a), 133, c
q soln 5.50 - five, 15, g(a), 144, f(a)
q soln 5.50 - five, 15, g(a), 155, g(a)