# frv testcase to generate fp_exception
# mach: fr550
	.include "testutils.inc"

	float_constants
	start
	load_float_constants

	.global align
align:
	; clear the packing bit if the insn at 'pack:'. We can't simply use
	; '.p' because the assembler will catch the error.
	set_gr_mem	pack,gr10
	and_gr_immed	0x7fffffff,gr10
	set_mem_gr	gr10,pack
	set_gr_addr	pack,gr10
	flush_data_cache gr10

	; Make the the source register number odd at badst. We can't simply
	; code an odd register number because the assembler will catch the
	; error.
	set_gr_mem	badst,gr10
	or_gr_immed	0x02000000,gr10
	set_mem_gr	gr10,badst
	set_gr_addr	badst,gr10
	flush_data_cache gr10

	; Make the the dest register number odd at badld. We can't simply
	; code an odd register number because the assembler will catch the
	; error.
	set_gr_mem	badld,gr10
	or_gr_immed	0x02000000,gr10
	set_mem_gr	gr10,badld
	set_gr_addr	badld,gr10
	flush_data_cache gr10

	and_spr_immed	-4081,tbr		; clear tbr.tt
	set_gr_spr	tbr,gr17
	inc_gr_immed	0x070,gr17		; address of exception handler
	set_bctrlr_0_0  gr17
	inc_gr_immed	0x060,gr17		; address of exception handler
	set_bctrlr_0_0  gr17
	set_spr_immed	128,lcr
	set_spr_addr	ok1,lr
	set_psr_et	1
	inc_gr_immed	-4,sp		; for alignment

	set_gr_immed	0,gr20		; PC increment
	set_gr_immed	0,gr15

	set_spr_addr	ok3,lr
	set_gr_immed	4,gr20		; PC increment
badst:	stdfi		fr0,@(sp,0)	; misaligned reg -- slot I0
	test_gr_immed	1,gr15

	set_spr_addr	ok4,lr
	set_gr_immed	8,gr20		; PC increment
	nop.p
badld:	lddfi		@(sp,0),fr8	; misaligned reg -- slot I1
	test_gr_immed	2,gr15

	set_spr_addr	ok5,lr
	set_gr_immed	20,gr20		; PC increment
	fnegs.p		fr9,fr9
	fnegs.p		fr9,fr10
	fnegs.p		fr9,fr11
pack:	fnegs		fr10,fr12
	fnegs		fr10,fr13	; packing violation
	test_gr_immed	3,gr15

	set_spr_addr	ok1,lr
	set_gr_immed	4,gr20		; PC increment
bad:	.word		0x83e502c4	; fmadds fr16,fr4,fr1 (unimplemented)
	test_gr_immed	4,gr15

	and_spr_immed	0xfbffffff,fsr0		; disable div/0 fp_exception
	set_fr_iimmed	0x7f7f,0xffff,fr0
	set_fr_iimmed	0x0000,0x0000,fr1
	fdivs		fr0,fr1,fr2		; div/0 -- no exception
	test_spr_bits	0x100000,20,0x0,fsr0	; fsr0.qne is never set
	test_spr_bits	0xfc00,10,0x4,fsr0	; fsr0.aexc is still set
	test_spr_bits	0xe0000,17,0x0,fsr0	; fsr0.ftt is clear

	set_spr_addr	ok2,lr
	set_gr_immed	0,gr20			; PC increment
	or_spr_immed	0x04000000,fsr0		; enable div/0 fp_exception
	set_fr_iimmed	0xdead,0xbeef,fr2
div0:	fdivs		fr0,fr1,fr2		; fp_exception - div/0
	test_fr_iimmed	0xdeadbeef,fr2		; fr2 not updated
	test_gr_immed	5,gr15

	and_spr_immed	0xfdffffff,fsr0		; disable inexact fp_exception
	fsqrts		fr32,fr2		; inexact -- no exception
	test_spr_bits	0x100000,20,0x0,fsr0	; fsr0.qne is never set
	test_spr_bits	0xfc00,10,0x6,fsr0	; fsr0.aexc is set
	test_spr_bits	0xe0000,17,0x0,fsr0	; fsr0.ftt is clear

	set_fr_fr	fr2,fr3			; sqrt 2
	set_fr_iimmed	0xdead,0xbeef,fr2
	set_spr_addr	ok6,lr
	or_spr_immed	0x02000000,fsr0		; enable inexact fp_exception
inxt1:	fsqrts		fr32,fr2		; fp_exception - inexact
	test_gr_immed	6,gr15			; handler called
	test_fr_fr	fr2,fr3			; fr2 updated

	set_fr_iimmed	0xdead,0xbeef,fr2
	set_spr_addr	ok7,lr
inxt2:	fsqrts		fr32,fr2		; fp_exception - inexact again
	test_gr_immed	7,gr15			; handler called
	test_fr_fr	fr2,fr3			; fr2 updated

	pass

; exception handler 1 -- illegal_instruction: bad insn
ok1:
	test_spr_immed	1,esfr1			; esr0 active
	test_spr_bits	0x3e,1,0x5,esr0		; esr0.ec is set
	test_spr_bits	0x1,0,0x1,esr0		; esr0.valid is set
	bra		ret

; exception handler 2 - fp_exception: divide by 0
ok2:
	test_spr_bits	0x100000,20,0x0,fsr0	; fsr0.qne is clear
	test_spr_bits	0xe0000,17,0x1,fsr0	; fsr0.ftt is set
	test_spr_bits	0xfc00,10,0x4,fsr0	; fsr0.aexc is still set

	test_spr_immed	4,esfr1			; esr2 active
	test_spr_bits	0x3e,1,0xd,esr2		; esr2.ec is set
	test_spr_bits	0x1,0,0x1,esr2		; esr2.valid is set
	test_spr_addr	div0,epcr2		; epcr2 is set
	bra		ret

; exception handler 3 - illegal_instruction: register exception
ok3:
	test_spr_immed	1,esfr1			; esr0 active
	test_spr_bits	0x3e,1,0x5,esr0		; esr0.ec is set
	test_spr_bits	0x1,0,0x1,esr0		; esr0.valid is set
	bra		ret

; exception handler 4 - illegal_instruction: register exception
ok4:
	test_spr_immed	1,esfr1			; esr0 active
	test_spr_bits	0x3e,1,0x5,esr0		; esr0.ec is set
	test_spr_bits	0x1,0,0x1,esr0		; esr0.valid is set
	bra		ret

; exception handler 5 - illegal_instruction: sequence violation
ok5:
	test_spr_immed	1,esfr1			; esr0 active
	test_spr_bits	0x3e,1,0x5,esr0		; esr0.ec is set
	test_spr_bits	0x1,0,0x1,esr0		; esr0.valid is set
	bra		ret

; exception handler 6 - fp_exception: inexact
ok6:
	test_spr_bits	0x100000,20,0x0,fsr0	; fsr0.qne is clear
	test_spr_bits	0xe0000,17,0x1,fsr0	; fsr0.ftt is set
	test_spr_bits	0xfc00,10,0x6,fsr0	; fsr0.aexc is still set

	test_spr_immed	4,esfr1			; esr2 active
	test_spr_bits	0x3e,1,0xd,esr2		; esr2.ec is set
	test_spr_bits	0x1,0,0x1,esr2		; esr2.valid is set
	test_spr_addr	inxt1,epcr2		; epcr2 is set
	bra		ret

; exception handler 7 - fp_exception: inexact again
ok7:
	test_spr_bits	0x100000,20,0x0,fsr0	; fsr0.qne is clear
	test_spr_bits	0xe0000,17,0x1,fsr0	; fsr0.ftt is set
	test_spr_bits	0xfc00,10,0x6,fsr0	; fsr0.aexc is still set

	test_spr_immed	4,esfr1			; esr2 active
	test_spr_bits	0x3e,1,0xd,esr2		; esr2.ec is set
	test_spr_bits	0x1,0,0x1,esr2		; esr2.valid is set
	test_spr_addr	inxt2,epcr2		; epcr2 is set
	bra		ret

ret:
	inc_gr_immed	1,gr15
	movsg		pcsr,gr60
	add		gr60,gr20,gr60
	movgs		gr60,pcsr
	rett		0
	fail

