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