Home | History | Annotate | Line # | Download | only in sh
ftrc.s revision 1.1
      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