# frv testcase for nfmadds $GRi,$GRj,$GRk
# mach: frv
# as(frv): -mcpu=frv

	.include "testutils.inc"

	float_constants
	start
	load_float_constants

	.global nfmadds
nfmadds:
	set_fr_fr	fr16,fr1
	nfmadds      	fr16,fr4,fr1
	test_fr_fr	fr1,fr16
	test_fr_fr	fr1,fr20
	test_spr_immed	0,fner1
	test_spr_immed	0,fner0
	nfmadds      	fr16,fr8,fr1
	test_fr_fr	fr1,fr16
	test_fr_fr	fr1,fr20
	test_spr_immed	0,fner1
	test_spr_immed	0,fner0
	nfmadds      	fr16,fr12,fr1
	test_fr_fr	fr1,fr16
	test_fr_fr	fr1,fr20
	test_spr_immed	0,fner1
	test_spr_immed	0,fner0
	nfmadds      	fr16,fr16,fr1
	test_fr_fr	fr1,fr16
	test_fr_fr	fr1,fr20
	test_spr_immed	0,fner1
	test_spr_immed	0,fner0
	nfmadds      	fr16,fr20,fr1
	test_fr_fr	fr1,fr16
	test_fr_fr	fr1,fr20
	test_spr_immed	0,fner1
	test_spr_immed	0,fner0
	nfmadds      	fr16,fr24,fr1
	test_fr_fr	fr1,fr16
	test_fr_fr	fr1,fr20
	test_spr_immed	0,fner1
	test_spr_immed	0,fner0
	nfmadds      	fr16,fr28,fr1
	test_fr_fr	fr1,fr16
	test_fr_fr	fr1,fr20
	test_spr_immed	0,fner1
	test_spr_immed	0,fner0
	nfmadds      	fr16,fr32,fr1
	test_fr_fr	fr1,fr16
	test_fr_fr	fr1,fr20
	test_spr_immed	0,fner1
	test_spr_immed	0,fner0
	nfmadds      	fr16,fr36,fr1
	test_fr_fr	fr1,fr16
	test_fr_fr	fr1,fr20
	test_spr_immed	0,fner1
	test_spr_immed	0,fner0
	nfmadds      	fr16,fr40,fr1
	test_fr_fr	fr1,fr16
	test_fr_fr	fr1,fr20
	test_spr_immed	0,fner1
	test_spr_immed	0,fner0
	nfmadds      	fr16,fr44,fr1
	test_fr_fr	fr1,fr16
	test_fr_fr	fr1,fr20
	test_spr_immed	0,fner1
	test_spr_immed	0,fner0
	nfmadds      	fr16,fr48,fr1
	test_fr_fr	fr1,fr16
	test_fr_fr	fr1,fr20
	test_spr_immed	0,fner1
	test_spr_immed	0,fner0

	nfmadds      	fr20,fr4,fr1
	test_fr_fr	fr1,fr16
	test_fr_fr	fr1,fr20
	test_spr_immed	0,fner1
	test_spr_immed	0,fner0
	nfmadds      	fr20,fr8,fr1
	test_fr_fr	fr1,fr16
	test_fr_fr	fr1,fr20
	test_spr_immed	0,fner1
	test_spr_immed	0,fner0
	nfmadds      	fr20,fr12,fr1
	test_fr_fr	fr1,fr16
	test_fr_fr	fr1,fr20
	test_spr_immed	0,fner1
	test_spr_immed	0,fner0
	nfmadds      	fr20,fr16,fr1
	test_fr_fr	fr1,fr16
	test_fr_fr	fr1,fr20
	test_spr_immed	0,fner1
	test_spr_immed	0,fner0
	nfmadds      	fr20,fr20,fr1
	test_fr_fr	fr1,fr16
	test_fr_fr	fr1,fr20
	test_spr_immed	0,fner1
	test_spr_immed	0,fner0
	nfmadds      	fr20,fr24,fr1
	test_fr_fr	fr1,fr16
	test_fr_fr	fr1,fr20
	test_spr_immed	0,fner1
	test_spr_immed	0,fner0
	nfmadds      	fr20,fr28,fr1
	test_fr_fr	fr1,fr16
	test_fr_fr	fr1,fr20
	test_spr_immed	0,fner1
	test_spr_immed	0,fner0
	nfmadds      	fr20,fr32,fr1
	test_fr_fr	fr1,fr16
	test_fr_fr	fr1,fr20
	test_spr_immed	0,fner1
	test_spr_immed	0,fner0
	nfmadds      	fr20,fr36,fr1
	test_fr_fr	fr1,fr16
	test_fr_fr	fr1,fr20
	test_spr_immed	0,fner1
	test_spr_immed	0,fner0
	nfmadds      	fr20,fr40,fr1
	test_fr_fr	fr1,fr16
	test_fr_fr	fr1,fr20
	test_spr_immed	0,fner1
	test_spr_immed	0,fner0
	nfmadds      	fr20,fr44,fr1
	test_fr_fr	fr1,fr16
	test_fr_fr	fr1,fr20
	test_spr_immed	0,fner1
	test_spr_immed	0,fner0
	nfmadds      	fr20,fr48,fr1
	test_fr_fr	fr1,fr16
	test_fr_fr	fr1,fr20
	test_spr_immed	0,fner1
	test_spr_immed	0,fner0

	set_fr_fr	fr16,fr1
	nfmadds      	fr28,fr0,fr1
	test_fr_fr	fr1,fr0
	test_spr_immed	0,fner1
	test_spr_immed	0,fner0
	set_fr_fr	fr16,fr1
	nfmadds      	fr28,fr4,fr1
	test_fr_fr	fr1,fr4
	test_spr_immed	0,fner1
	test_spr_immed	0,fner0
	set_fr_fr	fr16,fr1
	nfmadds      	fr28,fr8,fr1
	test_fr_fr	fr1,fr8
	test_spr_immed	0,fner1
	test_spr_immed	0,fner0
	set_fr_fr	fr16,fr1
	nfmadds      	fr28,fr12,fr1
	test_fr_fr	fr1,fr12
	test_spr_immed	0,fner1
	test_spr_immed	0,fner0
	set_fr_fr	fr16,fr1
	nfmadds      	fr28,fr16,fr1
	test_fr_fr	fr1,fr16
	test_fr_fr	fr1,fr20
	test_spr_immed	0,fner1
	test_spr_immed	0,fner0
	set_fr_fr	fr16,fr1
	nfmadds      	fr28,fr20,fr1
	test_fr_fr	fr1,fr16
	test_fr_fr	fr1,fr20
	test_spr_immed	0,fner1
	test_spr_immed	0,fner0
	set_fr_fr	fr16,fr1
	nfmadds      	fr28,fr24,fr1
	test_fr_fr	fr1,fr24
	test_spr_immed	0,fner1
	test_spr_immed	0,fner0
	set_fr_fr	fr16,fr1
	nfmadds      	fr28,fr28,fr1
	test_fr_fr	fr1,fr28
	test_spr_immed	0,fner1
	test_spr_immed	0,fner0
	set_fr_fr	fr16,fr1
	nfmadds      	fr28,fr32,fr1
	test_fr_fr	fr1,fr32
	test_spr_immed	0,fner1
	test_spr_immed	0,fner0
	set_fr_fr	fr16,fr1
	nfmadds      	fr28,fr36,fr1
	test_fr_fr	fr1,fr36
	test_spr_immed	0,fner1
	test_spr_immed	0,fner0
	set_fr_fr	fr16,fr1
	nfmadds      	fr28,fr40,fr1
	test_fr_fr	fr1,fr40
	test_spr_immed	0,fner1
	test_spr_immed	0,fner0
	set_fr_fr	fr16,fr1
	nfmadds      	fr28,fr44,fr1
	test_fr_fr	fr1,fr44
	test_spr_immed	0,fner1
	test_spr_immed	0,fner0
	set_fr_fr	fr16,fr1
	nfmadds      	fr28,fr48,fr1
	test_fr_fr	fr1,fr48
	test_spr_immed	0,fner1
	test_spr_immed	0,fner0
	set_fr_fr	fr16,fr1
	nfmadds      	fr28,fr52,fr1
	test_fr_fr	fr1,fr52
	test_spr_immed	0,fner1
	test_spr_immed	0,fner0

	set_fr_fr	fr36,fr1
	nfmadds      	fr28,fr8,fr1
	test_fr_fr	fr1,fr32
	test_spr_immed	0,fner1
	test_spr_immed	0,fner0
	nfmadds      	fr8,fr28,fr1
	test_fr_fr	fr1,fr28
	test_spr_immed	0,fner1
	test_spr_immed	0,fner0

	set_fr_fr	fr36,fr1
	nfmadds      	fr32,fr36,fr1
	test_fr_fr	fr1,fr44
	test_spr_immed	0,fner1
	test_spr_immed	0,fner0

	; TODO test cases to set ne flags

	pass
