Skip to content

Commit 0a2c3b6

Browse files
authored
Merge pull request #1750 from YenHaoChen/pr-vector-xrm
vector: Check if there is any vector extension before using vector CSRs
2 parents adacda4 + e9f620f commit 0a2c3b6

File tree

14 files changed

+33
-33
lines changed

14 files changed

+33
-33
lines changed

riscv/insns/vnclip_wi.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
// vnclip: vd[i] = clip(round(vs2[i] + rnd) >> simm)
2-
VRM xrm = P.VU.get_vround_mode();
3-
int64_t int_max = INT64_MAX >> (64 - P.VU.vsew);
4-
int64_t int_min = INT64_MIN >> (64 - P.VU.vsew);
52
VI_VI_LOOP_NARROW
63
({
4+
VRM xrm = P.VU.get_vround_mode();
5+
int64_t int_max = INT64_MAX >> (64 - P.VU.vsew);
6+
int64_t int_min = INT64_MIN >> (64 - P.VU.vsew);
77
int128_t result = vs2;
88
unsigned shift = zimm5 & ((sew * 2) - 1);
99

riscv/insns/vnclip_wv.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
// vnclip: vd[i] = clip(round(vs2[i] + rnd) >> vs1[i])
2-
VRM xrm = P.VU.get_vround_mode();
3-
int64_t int_max = INT64_MAX >> (64 - P.VU.vsew);
4-
int64_t int_min = INT64_MIN >> (64 - P.VU.vsew);
52
VI_VV_LOOP_NARROW
63
({
4+
VRM xrm = P.VU.get_vround_mode();
5+
int64_t int_max = INT64_MAX >> (64 - P.VU.vsew);
6+
int64_t int_min = INT64_MIN >> (64 - P.VU.vsew);
77
int128_t result = vs2;
88
unsigned shift = vs1 & ((sew * 2) - 1);
99

riscv/insns/vnclipu_wi.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
// vnclipu: vd[i] = clip(round(vs2[i] + rnd) >> simm)
2-
VRM xrm = P.VU.get_vround_mode();
3-
uint64_t uint_max = UINT64_MAX >> (64 - P.VU.vsew);
4-
uint64_t sign_mask = UINT64_MAX << P.VU.vsew;
52
VI_VI_LOOP_NARROW
63
({
4+
VRM xrm = P.VU.get_vround_mode();
5+
uint64_t uint_max = UINT64_MAX >> (64 - P.VU.vsew);
6+
uint64_t sign_mask = UINT64_MAX << P.VU.vsew;
77
uint128_t result = vs2_u;
88
unsigned shift = zimm5 & ((sew * 2) - 1);
99

riscv/insns/vnclipu_wv.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
// vnclipu: vd[i] = clip(round(vs2[i] + rnd) >> vs1[i])
2-
VRM xrm = P.VU.get_vround_mode();
3-
uint64_t uint_max = UINT64_MAX >> (64 - P.VU.vsew);
4-
uint64_t sign_mask = UINT64_MAX << P.VU.vsew;
52
VI_VV_LOOP_NARROW
63
({
4+
VRM xrm = P.VU.get_vround_mode();
5+
uint64_t uint_max = UINT64_MAX >> (64 - P.VU.vsew);
6+
uint64_t sign_mask = UINT64_MAX << P.VU.vsew;
77
uint128_t result = vs2_u;
88
unsigned shift = vs1 & ((sew * 2) - 1);
99

riscv/insns/vnclipu_wx.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
// vnclipu: vd[i] = clip(round(vs2[i] + rnd) >> rs1[i])
2-
VRM xrm = P.VU.get_vround_mode();
3-
uint64_t uint_max = UINT64_MAX >> (64 - P.VU.vsew);
4-
uint64_t sign_mask = UINT64_MAX << P.VU.vsew;
52
VI_VX_LOOP_NARROW
63
({
4+
VRM xrm = P.VU.get_vround_mode();
5+
uint64_t uint_max = UINT64_MAX >> (64 - P.VU.vsew);
6+
uint64_t sign_mask = UINT64_MAX << P.VU.vsew;
77
uint128_t result = vs2_u;
88
unsigned shift = rs1 & ((sew * 2) - 1);
99

riscv/insns/vsmul_vv.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
// vsmul.vv vd, vs2, vs1
2-
VRM xrm = P.VU.get_vround_mode();
3-
int64_t int_max = INT64_MAX >> (64 - P.VU.vsew);
4-
int64_t int_min = INT64_MIN >> (64 - P.VU.vsew);
5-
62
VI_VV_LOOP
73
({
4+
VRM xrm = P.VU.get_vround_mode();
5+
int64_t int_max = INT64_MAX >> (64 - P.VU.vsew);
6+
int64_t int_min = INT64_MIN >> (64 - P.VU.vsew);
7+
88
bool overflow = vs1 == vs2 && vs1 == int_min;
99
int128_t result = (int128_t)vs1 * (int128_t)vs2;
1010

riscv/insns/vsmul_vx.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
// vsmul.vx vd, vs2, rs1
2-
VRM xrm = P.VU.get_vround_mode();
3-
int64_t int_max = INT64_MAX >> (64 - P.VU.vsew);
4-
int64_t int_min = INT64_MIN >> (64 - P.VU.vsew);
5-
62
VI_VX_LOOP
73
({
4+
VRM xrm = P.VU.get_vround_mode();
5+
int64_t int_max = INT64_MAX >> (64 - P.VU.vsew);
6+
int64_t int_min = INT64_MIN >> (64 - P.VU.vsew);
7+
88
bool overflow = rs1 == vs2 && rs1 == int_min;
99
int128_t result = (int128_t)rs1 * (int128_t)vs2;
1010

riscv/insns/vssra_vi.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// vssra.vi vd, vs2, simm5
2-
VRM xrm = P.VU.get_vround_mode();
32
VI_VI_LOOP
43
({
4+
VRM xrm = P.VU.get_vround_mode();
55
int sh = simm5 & (sew - 1) & 0x1f;
66
int128_t val = vs2;
77

riscv/insns/vssra_vv.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// vssra.vv vd, vs2, vs1
2-
VRM xrm = P.VU.get_vround_mode();
32
VI_VV_LOOP
43
({
4+
VRM xrm = P.VU.get_vround_mode();
55
int sh = vs1 & (sew - 1);
66
int128_t val = vs2;
77

riscv/insns/vssra_vx.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// vssra.vx vd, vs2, rs1
2-
VRM xrm = P.VU.get_vround_mode();
32
VI_VX_LOOP
43
({
4+
VRM xrm = P.VU.get_vround_mode();
55
int sh = rs1 & (sew - 1);
66
int128_t val = vs2;
77

0 commit comments

Comments
 (0)