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