aboutsummaryrefslogtreecommitdiff
path: root/isa/rv64uv/imul.S
blob: 0925e59de724db46b6c513e83dab2898bc8ebe67 (plain)
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
79
80
81
82
83
#*****************************************************************************
# imul.S
#-----------------------------------------------------------------------------
#
# Test imul instruction in a vf block.
#

#include "riscv_test.h"
#include "test_macros.h"

RVTEST_RV64U
RVTEST_CODE_BEGIN

  vsetcfg 3,0
  li a3,2048
  vsetvl a3,a3

  li a4,20
  li s0,2
  vmsv vx1,a4
  lui a0,%hi(vtcode)
  vf %lo(vtcode)(a0)

  nop
  nop
  nop
  nop
  nop
  nop
  nop
  nop
  nop
  nop
  nop
  nop
  nop
  nop
  nop
  nop
  nop
  nop
  nop
  nop
  mul s1,a4,s0

  la a5,dest
  vsd vx1,a5
  fence

  li s2,40
  li x28,2
  bne s1,s2,fail

  li a1,0
  li a2,0
loop:
  ld a0,0(a5)
  addi x28,a2,3
  bne a0,a1,fail
  addi a5,a5,8
  addi a1,a1,20
  addi a2,a2,1
  bne a2,a3,loop
  j pass

vtcode:
  utidx x2
  mul x1,x2,x1
  stop

  TEST_PASSFAIL

RVTEST_CODE_END

  .data
RVTEST_DATA_BEGIN

  TEST_DATA

dest:
  .skip 16384

RVTEST_DATA_END