1.data 32 2dfmt: 3.c "%1.0f\n" 4ifmt: 5.c "%d\n" 6 7.code 8 jmpi main 9 10#define def_test_double(a, b, c) \ 11 name test_double_##a##_##b##_##c \ 12test_double_##a##_##b##_##c: \ 13 prolog \ 14 arg_d $d0 \ 15 arg_d $d1 \ 16 getarg_d %b $d0 \ 17 getarg_d %c $d1 \ 18 subr_d %a %b %c \ 19 retr_d %a \ 20 epilog 21#define test_double(a, b, c, x, y) \ 22 prepare \ 23 pushargi_d x \ 24 pushargi_d y \ 25 finishi test_double_##a##_##b##_##c \ 26 retval_d %f0 \ 27 prepare \ 28 pushargi dfmt \ 29 ellipsis \ 30 pushargr_d %f0 \ 31 finishi @printf 32 33#define def_test_int(a, b, c) \ 34 name test_int_##a##_##b##_##c \ 35test_int_##a##_##b##_##c: \ 36 prolog \ 37 arg $i0 \ 38 arg $i1 \ 39 getarg %b $i0 \ 40 getarg %c $i1 \ 41 subr %a %b %c \ 42 retr %a \ 43 epilog 44#define test_int(a, b, c, x, y) \ 45 prepare \ 46 pushargi x \ 47 pushargi y \ 48 finishi test_int_##a##_##b##_##c \ 49 retval %r0 \ 50 prepare \ 51 pushargi ifmt \ 52 ellipsis \ 53 pushargr %r0 \ 54 finishi @printf 55 56def_test_double(f0, f0, f0) 57def_test_double(f0, f0, f1) 58def_test_double(f0, f1, f0) 59def_test_double(f0, f1, f2) 60 61def_test_double(f3, f3, f3) 62def_test_double(f3, f3, f1) 63def_test_double(f3, f1, f3) 64def_test_double(f3, f1, f2) 65 66def_test_double(f3, f0, f0) 67def_test_double(f3, f0, f3) 68def_test_double(f3, f3, f0) 69 70def_test_int(r0, r0, r0) 71def_test_int(r0, r0, r1) 72def_test_int(r0, r1, r0) 73def_test_int(r0, r1, r2) 74 75def_test_int(v0, v0, v0) 76def_test_int(v0, v0, r1) 77def_test_int(v0, r1, v0) 78def_test_int(v0, r1, r2) 79 80def_test_int(v0, r0, r0) 81def_test_int(v0, r0, v0) 82def_test_int(v0, v0, r0) 83 84 85 name main 86main: 87 prolog 88 89 test_double(f0, f0, f0, 3.0, 2.0) 90 test_double(f0, f0, f1, 3.0, 2.0) 91 test_double(f0, f1, f0, 3.0, 2.0) 92 test_double(f0, f1, f2, 3.0, 2.0) 93 94 test_double(f3, f3, f3, 3.0, 2.0) 95 test_double(f3, f3, f1, 3.0, 2.0) 96 test_double(f3, f1, f3, 3.0, 2.0) 97 test_double(f3, f1, f2, 3.0, 2.0) 98 99 test_double(f3, f0, f0, 3.0, 2.0) 100 test_double(f3, f0, f3, 3.0, 2.0) 101 test_double(f3, f3, f0, 3.0, 2.0) 102 103 test_int(r0, r0, r0, 3, 2) 104 test_int(r0, r0, r1, 3, 2) 105 test_int(r0, r1, r0, 3, 2) 106 test_int(r0, r1, r2, 3, 2) 107 108 test_int(v0, v0, v0, 3, 2) 109 test_int(v0, v0, r1, 3, 2) 110 test_int(v0, r1, v0, 3, 2) 111 test_int(v0, r1, r2, 3, 2) 112 113 test_int(v0, r0, r0, 3, 2) 114 test_int(v0, r0, v0, 3, 2) 115 test_int(v0, v0, r0, 3, 2) 116 117 ret 118 epilog 119