Add another FP recoding test case
[riscv-tests.git] / isa / rv64uv / fma.S
1 # See LICENSE for license details.
2
3 #*****************************************************************************
4 # fma.S
5 #-----------------------------------------------------------------------------
6 #
7 # Test fma instruction in a vf block.
8 #
9
10 #include "riscv_test.h"
11 #include "test_macros.h"
12
13 RVTEST_RV64UV
14 RVTEST_CODE_BEGIN
15
16 vsetcfg 3,2
17 li a3,2048
18 vsetvl a3,a3
19
20 la a4,src
21 fld f0,0(a4)
22 fld f1,8(a4)
23 fmv.x.d s0,f0
24 fmv.x.d s1,f1
25 vmsv vx1,s0
26 vmsv vx2,s1
27 lui a0,%hi(vtcode)
28 vf %lo(vtcode)(a0)
29
30 li a7,0
31 li a6,400
32 wait:
33 addi a7,a7,1
34 bne a7,a6,wait
35
36 fadd.d f0,f0,f1
37 fmv.x.d s2,f0
38
39 la a5,dest
40 vfsd vf0,a5
41 fence
42
43 la s3,result
44 ld s4,0(s3)
45 li TESTNUM,2
46 bne s2,s4,fail
47
48 li a2,0
49 loop:
50 ld a0,0(a5)
51 addi TESTNUM,a2,3
52 bne a0,s4,fail
53 addi a5,a5,8
54 addi a2,a2,1
55 bne a2,a3,loop
56 j pass
57
58 vtcode:
59 fmv.d.x f0,x1
60 fmv.d.x f1,x2
61 fadd.d f0,f0,f1
62 stop
63
64 TEST_PASSFAIL
65
66 RVTEST_CODE_END
67
68 .data
69 RVTEST_DATA_BEGIN
70
71 TEST_DATA
72
73 src:
74 .double 1.0
75 .double 2.0
76 result:
77 .double 3.0
78 dest:
79 .skip 16384
80
81 RVTEST_DATA_END