1 1.1 christos # sh testcase for ftrc 2 1.1 christos # mach: sh 3 1.1 christos # as(sh): -defsym sim_cpu=0 4 1.1 christos 5 1.1 christos .include "testutils.inc" 6 1.1 christos 7 1.1 christos start 8 1.1 christos ftrc_single: 9 1.1 christos set_grs_a5a5 10 1.1 christos set_fprs_a5a5 11 1.1 christos # ftrc(0.0) = 0. 12 1.1 christos fldi0 fr0 13 1.1 christos ftrc fr0, fpul 14 1.1 christos # check results. 15 1.1 christos mov #0, r0 16 1.1 christos sts fpul, r1 17 1.1 christos cmp/eq r0, r1 18 1.1 christos bt .L0 19 1.1 christos fail 20 1.1 christos .L0: 21 1.1 christos # ftrc(1.5) = 1. 22 1.1 christos fldi1 fr0 23 1.1 christos fldi1 fr1 24 1.1 christos fldi1 fr2 25 1.1 christos # double it. 26 1.1 christos fadd fr2, fr2 27 1.1 christos # form the fraction. 28 1.1 christos fdiv fr2, fr1 29 1.1 christos fadd fr1, fr0 30 1.1 christos # now we've got 1.5 in fr0. 31 1.1 christos ftrc fr0, fpul 32 1.1 christos # check results. 33 1.1 christos mov #1, r0 34 1.1 christos sts fpul, r1 35 1.1 christos cmp/eq r0, r1 36 1.1 christos bt .L1 37 1.1 christos fail 38 1.1 christos .L1: 39 1.1 christos # ftrc(-1.5) = -1. 40 1.1 christos fldi1 fr0 41 1.1 christos fneg fr0 42 1.1 christos fldi1 fr1 43 1.1 christos fldi1 fr2 44 1.1 christos # double it. 45 1.1 christos fadd fr2, fr2 46 1.1 christos # form the fraction. 47 1.1 christos fdiv fr2, fr1 48 1.1 christos fneg fr1 49 1.1 christos # -1 + -0.5 = -1.5. 50 1.1 christos fadd fr1, fr0 51 1.1 christos # now we've got 1.5 in fr0. 52 1.1 christos ftrc fr0, fpul 53 1.1 christos # check results. 54 1.1 christos mov #1, r0 55 1.1 christos neg r0, r0 56 1.1 christos sts fpul, r1 57 1.1 christos cmp/eq r0, r1 58 1.1 christos bt ftrc_double 59 1.1 christos fail 60 1.1 christos 61 1.1 christos ftrc_double: 62 1.1 christos double_prec 63 1.1 christos # ftrc(0.0) = 0. 64 1.1 christos fldi0 fr0 65 1.1 christos _s2d fr0, dr0 66 1.1 christos ftrc dr0, fpul 67 1.1 christos # check results. 68 1.1 christos mov #0, r0 69 1.1 christos sts fpul, r1 70 1.1 christos cmp/eq r0, r1 71 1.1 christos bt .L10 72 1.1 christos fail 73 1.1 christos .L10: 74 1.1 christos # ftrc(1.5) = 1. 75 1.1 christos fldi1 fr0 76 1.1 christos fldi1 fr2 77 1.1 christos fldi1 fr4 78 1.1 christos # double it. 79 1.1 christos single_prec 80 1.1 christos fadd fr4, fr4 81 1.1 christos # form 0.5. 82 1.1 christos fdiv fr4, fr2 83 1.1 christos fadd fr2, fr0 84 1.1 christos double_prec 85 1.1 christos # now we've got 1.5 in fr0, so do some single->double 86 1.1 christos # conversions and perform the ftrc. 87 1.1 christos _s2d fr0, dr0 88 1.1 christos _s2d fr2, dr2 89 1.1 christos _s2d fr4, dr4 90 1.1 christos ftrc dr0, fpul 91 1.1 christos 92 1.1 christos # check results. 93 1.1 christos mov #1, r0 94 1.1 christos sts fpul, r1 95 1.1 christos cmp/eq r0, r1 96 1.1 christos bt .L11 97 1.1 christos fail 98 1.1 christos .L11: 99 1.1 christos # ftrc(-1.5) = -1. 100 1.1 christos fldi1 fr0 101 1.1 christos fneg fr0 102 1.1 christos fldi1 fr2 103 1.1 christos fldi1 fr4 104 1.1 christos single_prec 105 1.1 christos # double it. 106 1.1 christos fadd fr4, fr4 107 1.1 christos # form the fraction. 108 1.1 christos fdiv fr4, fr2 109 1.1 christos fneg fr2 110 1.1 christos # -1 + -0.5 = -1.5. 111 1.1 christos fadd fr2, fr0 112 1.1 christos double_prec 113 1.1 christos # now we've got 1.5 in fr0, so do some single->double 114 1.1 christos # conversions and perform the ftrc. 115 1.1 christos _s2d fr0, dr0 116 1.1 christos _s2d fr2, dr2 117 1.1 christos _s2d fr4, dr4 118 1.1 christos ftrc dr0, fpul 119 1.1 christos 120 1.1 christos # check results. 121 1.1 christos mov #1, r0 122 1.1 christos neg r0, r0 123 1.1 christos sts fpul, r1 124 1.1 christos cmp/eq r0, r1 125 1.1 christos bt .L12 126 1.1 christos fail 127 1.1 christos .L12: 128 1.1 christos assertreg0 -1 129 1.1 christos assertreg -1, r1 130 1.1 christos test_gr_a5a5 r2 131 1.1 christos test_gr_a5a5 r3 132 1.1 christos test_gr_a5a5 r4 133 1.1 christos test_gr_a5a5 r5 134 1.1 christos test_gr_a5a5 r6 135 1.1 christos test_gr_a5a5 r7 136 1.1 christos test_gr_a5a5 r8 137 1.1 christos test_gr_a5a5 r9 138 1.1 christos test_gr_a5a5 r10 139 1.1 christos test_gr_a5a5 r11 140 1.1 christos test_gr_a5a5 r12 141 1.1 christos test_gr_a5a5 r13 142 1.1 christos test_gr_a5a5 r14 143 1.1 christos 144 1.1 christos assert_dpreg_i 2, dr4 145 1.1 christos test_fpr_a5a5 fr6 146 1.1 christos test_fpr_a5a5 fr7 147 1.1 christos test_fpr_a5a5 fr8 148 1.1 christos test_fpr_a5a5 fr9 149 1.1 christos test_fpr_a5a5 fr10 150 1.1 christos test_fpr_a5a5 fr11 151 1.1 christos test_fpr_a5a5 fr12 152 1.1 christos test_fpr_a5a5 fr13 153 1.1 christos test_fpr_a5a5 fr14 154 1.1 christos test_fpr_a5a5 fr15 155 1.1 christos pass 156 1.1 christos exit 0 157