mirror of
https://github.com/Mercury-Language/mercury.git
synced 2026-04-20 20:03:44 +00:00
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.
61 lines
1.4 KiB
Plaintext
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)
|