Home | History | Annotate | Line # | Download | only in fr400
      1  1.1  christos # frv testcase for csdiv $GRi,$GRj,$GRk,$CCi,$cond
      2  1.1  christos # mach: all
      3  1.1  christos 
      4  1.1  christos 	.include "../testutils.inc"
      5  1.1  christos 
      6  1.1  christos 	start
      7  1.1  christos 
      8  1.1  christos 	.global csdiv
      9  1.1  christos csdiv:
     10  1.1  christos 	set_spr_immed	0x1b1b,cccr
     11  1.1  christos 
     12  1.1  christos 	; simple division 12 / 3
     13  1.1  christos 	set_gr_immed   	3,gr3
     14  1.1  christos 	set_gr_immed   	12,gr1
     15  1.1  christos 	csdiv      	gr1,gr3,gr2,cc4,1
     16  1.1  christos 	test_gr_immed  	4,gr2
     17  1.1  christos 
     18  1.1  christos 	; Random example
     19  1.1  christos 	set_gr_limmed  	0x0123,0x4567,gr3
     20  1.1  christos 	set_gr_limmed  	0xfedc,0xba98,gr1
     21  1.1  christos 	csdiv      	gr1,gr3,gr2,cc4,1
     22  1.1  christos 	test_gr_immed  	-1,gr2
     23  1.1  christos 
     24  1.1  christos 	; Special case from the Arch Spec Vol 2
     25  1.1  christos 	and_spr_immed	-33,isr		; turn off isr.edem
     26  1.1  christos 	; set up exception handler
     27  1.1  christos 	set_psr_et	1
     28  1.1  christos 	and_spr_immed	-4081,tbr	; clear tbr.tt
     29  1.1  christos 	set_gr_spr	tbr,gr17
     30  1.1  christos 	inc_gr_immed	0x170,gr17	; address of exception handler
     31  1.1  christos 	set_bctrlr_0_0  gr17
     32  1.1  christos 	set_spr_immed	128,lcr
     33  1.1  christos 	set_gr_immed	0,gr15
     34  1.1  christos 
     35  1.1  christos 	; divide will cause overflow
     36  1.1  christos 	set_spr_addr	ok1,lr
     37  1.1  christos 	set_gr_immed  	-1,gr3
     38  1.1  christos 	set_gr_limmed  	0x8000,0x0000,gr1
     39  1.1  christos e1:	csdiv      	gr1,gr3,gr2,cc4,1
     40  1.1  christos 	test_gr_immed	1,gr15
     41  1.1  christos 	test_gr_limmed 	0x8000,0x0000,gr2
     42  1.1  christos 
     43  1.1  christos 	; Special case from the Arch Spec Vol 2
     44  1.1  christos 	or_spr_immed	0x20,isr	; turn on isr.edem
     45  1.1  christos 	set_gr_immed  	-1,gr3
     46  1.1  christos 	set_gr_limmed  	0x8000,0x0000,gr1
     47  1.1  christos 	csdiv      	gr1,gr3,gr2,cc4,1
     48  1.1  christos 	test_gr_limmed 	0x7fff,0xffff,gr2
     49  1.1  christos 
     50  1.1  christos 	; simple division 12 / 3
     51  1.1  christos 	set_gr_immed   	3,gr3
     52  1.1  christos 	set_gr_immed   	12,gr1
     53  1.1  christos 	csdiv      	gr1,gr3,gr2,cc4,0
     54  1.1  christos 	test_gr_limmed 	0x7fff,0xffff,gr2
     55  1.1  christos 
     56  1.1  christos 	; Random example
     57  1.1  christos 	set_gr_limmed  	0x0123,0x4567,gr3
     58  1.1  christos 	set_gr_limmed  	0xfedc,0xba98,gr1
     59  1.1  christos 	csdiv      	gr1,gr3,gr2,cc4,0
     60  1.1  christos 	test_gr_limmed 	0x7fff,0xffff,gr2
     61  1.1  christos 
     62  1.1  christos 	; Special case from the Arch Spec Vol 2
     63  1.1  christos 	and_spr_immed	-33,isr		; turn off isr.edem
     64  1.1  christos 	set_gr_immed  	-1,gr3
     65  1.1  christos 	set_gr_limmed  	0x8000,0x0000,gr1
     66  1.1  christos 	csdiv      	gr1,gr3,gr2,cc4,0
     67  1.1  christos 	test_gr_limmed 	0x7fff,0xffff,gr2
     68  1.1  christos 
     69  1.1  christos 	or_spr_immed	0x20,isr	; turn on isr.edem
     70  1.1  christos 	set_gr_immed  	-1,gr3
     71  1.1  christos 	set_gr_limmed  	0x8000,0x0000,gr1
     72  1.1  christos 	csdiv      	gr1,gr3,gr2,cc4,0
     73  1.1  christos 	test_gr_limmed 	0x7fff,0xffff,gr2
     74  1.1  christos 
     75  1.1  christos 	; simple division 12 / 3
     76  1.1  christos 	set_gr_immed   	3,gr3
     77  1.1  christos 	set_gr_immed   	12,gr1
     78  1.1  christos 	csdiv      	gr1,gr3,gr2,cc5,0
     79  1.1  christos 	test_gr_immed  	4,gr2
     80  1.1  christos 
     81  1.1  christos 	; Random example
     82  1.1  christos 	set_gr_limmed  	0x0123,0x4567,gr3
     83  1.1  christos 	set_gr_limmed  	0xfedc,0xba98,gr1
     84  1.1  christos 	csdiv      	gr1,gr3,gr2,cc5,0
     85  1.1  christos 	test_gr_immed  	-1,gr2
     86  1.1  christos 
     87  1.1  christos 	; Special case from the Arch Spec Vol 2
     88  1.1  christos 	and_spr_immed	-33,isr		; turn off isr.edem
     89  1.1  christos 	; divide will cause overflow
     90  1.1  christos 	set_spr_addr	ok1,lr
     91  1.1  christos 	set_gr_immed  	-1,gr3
     92  1.1  christos 	set_gr_limmed  	0x8000,0x0000,gr1
     93  1.1  christos e2:	csdiv      	gr1,gr3,gr2,cc5,0
     94  1.1  christos 	test_gr_immed	2,gr15
     95  1.1  christos 	test_gr_limmed 	0x8000,0x0000,gr2
     96  1.1  christos 
     97  1.1  christos 	; Special case from the Arch Spec Vol 2
     98  1.1  christos 	or_spr_immed	0x20,isr	; turn on isr.edem
     99  1.1  christos 	set_gr_immed  	-1,gr3
    100  1.1  christos 	set_gr_limmed  	0x8000,0x0000,gr1
    101  1.1  christos 	csdiv      	gr1,gr3,gr2,cc5,0
    102  1.1  christos 	test_gr_limmed 	0x7fff,0xffff,gr2
    103  1.1  christos 
    104  1.1  christos 	; simple division 12 / 3
    105  1.1  christos 	set_gr_immed   	3,gr3
    106  1.1  christos 	set_gr_immed   	12,gr1
    107  1.1  christos 	csdiv      	gr1,gr3,gr2,cc5,1
    108  1.1  christos 	test_gr_limmed 	0x7fff,0xffff,gr2
    109  1.1  christos 
    110  1.1  christos 	; Random example
    111  1.1  christos 	set_gr_limmed  	0x0123,0x4567,gr3
    112  1.1  christos 	set_gr_limmed  	0xfedc,0xba98,gr1
    113  1.1  christos 	csdiv      	gr1,gr3,gr2,cc5,1
    114  1.1  christos 	test_gr_limmed 	0x7fff,0xffff,gr2
    115  1.1  christos 
    116  1.1  christos 	; Special case from the Arch Spec Vol 2
    117  1.1  christos 	and_spr_immed	-33,isr		; turn off isr.edem
    118  1.1  christos 	set_gr_immed  	-1,gr3
    119  1.1  christos 	set_gr_limmed  	0x8000,0x0000,gr1
    120  1.1  christos 	csdiv      	gr1,gr3,gr2,cc5,1
    121  1.1  christos 	test_gr_limmed 	0x7fff,0xffff,gr2
    122  1.1  christos 
    123  1.1  christos 	or_spr_immed	0x20,isr	; turn on isr.edem
    124  1.1  christos 	set_gr_immed  	-1,gr3
    125  1.1  christos 	set_gr_limmed  	0x8000,0x0000,gr1
    126  1.1  christos 	csdiv      	gr1,gr3,gr2,cc5,1
    127  1.1  christos 	test_gr_limmed 	0x7fff,0xffff,gr2
    128  1.1  christos 
    129  1.1  christos 	; simple division 12 / 3
    130  1.1  christos 	set_gr_immed   	3,gr3
    131  1.1  christos 	set_gr_immed   	12,gr1
    132  1.1  christos 	csdiv      	gr1,gr3,gr2,cc6,0
    133  1.1  christos 	test_gr_limmed 	0x7fff,0xffff,gr2
    134  1.1  christos 
    135  1.1  christos 	; Random example
    136  1.1  christos 	set_gr_limmed  	0x0123,0x4567,gr3
    137  1.1  christos 	set_gr_limmed  	0xfedc,0xba98,gr1
    138  1.1  christos 	csdiv      	gr1,gr3,gr2,cc6,0
    139  1.1  christos 	test_gr_limmed 	0x7fff,0xffff,gr2
    140  1.1  christos 
    141  1.1  christos 	; Special case from the Arch Spec Vol 2
    142  1.1  christos 	and_spr_immed	-33,isr		; turn off isr.edem
    143  1.1  christos 	set_gr_immed  	-1,gr3
    144  1.1  christos 	set_gr_limmed  	0x8000,0x0000,gr1
    145  1.1  christos 	csdiv      	gr1,gr3,gr2,cc6,0
    146  1.1  christos 	test_gr_limmed 	0x7fff,0xffff,gr2
    147  1.1  christos 
    148  1.1  christos 	or_spr_immed	0x20,isr	; turn on isr.edem
    149  1.1  christos 	set_gr_immed  	-1,gr3
    150  1.1  christos 	set_gr_limmed  	0x8000,0x0000,gr1
    151  1.1  christos 	csdiv      	gr1,gr3,gr2,cc6,0
    152  1.1  christos 	test_gr_limmed 	0x7fff,0xffff,gr2
    153  1.1  christos 
    154  1.1  christos 	; simple division 12 / 3
    155  1.1  christos 	set_gr_immed   	3,gr3
    156  1.1  christos 	set_gr_immed   	12,gr1
    157  1.1  christos 	csdiv      	gr1,gr3,gr2,cc7,1
    158  1.1  christos 	test_gr_limmed 	0x7fff,0xffff,gr2
    159  1.1  christos 
    160  1.1  christos 	; Random example
    161  1.1  christos 	set_gr_limmed  	0x0123,0x4567,gr3
    162  1.1  christos 	set_gr_limmed  	0xfedc,0xba98,gr1
    163  1.1  christos 	csdiv      	gr1,gr3,gr2,cc7,1
    164  1.1  christos 	test_gr_limmed 	0x7fff,0xffff,gr2
    165  1.1  christos 
    166  1.1  christos 	; Special case from the Arch Spec Vol 2
    167  1.1  christos 	and_spr_immed	-33,isr		; turn off isr.edem
    168  1.1  christos 	set_gr_immed  	-1,gr3
    169  1.1  christos 	set_gr_limmed  	0x8000,0x0000,gr1
    170  1.1  christos 	csdiv      	gr1,gr3,gr2,cc7,1
    171  1.1  christos 	test_gr_limmed 	0x7fff,0xffff,gr2
    172  1.1  christos 
    173  1.1  christos 	or_spr_immed	0x20,isr	; turn on isr.edem
    174  1.1  christos 	set_gr_immed  	-1,gr3
    175  1.1  christos 	set_gr_limmed  	0x8000,0x0000,gr1
    176  1.1  christos 	csdiv      	gr1,gr3,gr2,cc7,1
    177  1.1  christos 	test_gr_limmed 	0x7fff,0xffff,gr2
    178  1.1  christos 
    179  1.1  christos 	pass
    180  1.1  christos 
    181  1.1  christos ok1:	; exception handler for overflow
    182  1.1  christos 	test_spr_bits	0x18,3,0x2,isr		; isr.dtt is set
    183  1.1  christos 	test_spr_bits	0x0001,0,0x1,esr0	; esr0 is valid
    184  1.1  christos 	test_spr_bits	0x003e,1,0x13,esr0	; esr0.ec is set
    185  1.1  christos 	inc_gr_immed	1,gr15
    186  1.1  christos 	rett		0
    187  1.1  christos 	fail
    188