aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Daniel Faria <paulfaria@google.com>2024-04-30 23:00:58 +0000
committerPaul Daniel Faria <paulfaria@google.com>2024-05-01 20:59:32 +0000
commit48adca10c9726f5e9252ec239a001621a2af8e4c (patch)
tree36f8e795392eeb704b689603ad9dbfb43c277174
parentbc5c5cb9fa1a33afa90e41b45f64a1259909c410 (diff)
downloadbinary_translation-48adca10c9726f5e9252ec239a001621a2af8e4c.tar.gz
[interpreter/riscv64] Stop using int in interpreter
Bug: 232598137 Test: m berberis_all berberis_run_host_tests Change-Id: I9ce0a4ad45fc819d0ad7b123d35518e93405b117
-rw-r--r--interpreter/riscv64/interpreter.h22
1 files changed, 10 insertions, 12 deletions
diff --git a/interpreter/riscv64/interpreter.h b/interpreter/riscv64/interpreter.h
index a6fd3f56..92382807 100644
--- a/interpreter/riscv64/interpreter.h
+++ b/interpreter/riscv64/interpreter.h
@@ -477,7 +477,7 @@ class Interpreter {
template <typename ElementType, VectorRegisterGroupMultiplier vlmul>
static constexpr size_t GetVlmax() {
- constexpr int kElementsCount = static_cast<int>(sizeof(SIMD128Register) / sizeof(ElementType));
+ constexpr size_t kElementsCount = sizeof(SIMD128Register) / sizeof(ElementType);
switch (vlmul) {
case VectorRegisterGroupMultiplier::k1register:
return kElementsCount;
@@ -931,8 +931,7 @@ class Interpreter {
if (!IsAligned<kIndexRegistersInvolved>(args.idx)) {
return Undefined();
}
- constexpr size_t kElementsCount =
- static_cast<int>(sizeof(SIMD128Register) / sizeof(IndexElementType));
+ constexpr size_t kElementsCount = sizeof(SIMD128Register) / sizeof(IndexElementType);
alignas(alignof(SIMD128Register))
IndexElementType indexes[kElementsCount * kIndexRegistersInvolved];
memcpy(indexes, state_->cpu.v + args.idx, sizeof(SIMD128Register) * kIndexRegistersInvolved);
@@ -1051,7 +1050,7 @@ class Interpreter {
if (dst + kNumRegistersInGroup * kSegmentSize >= 32) {
return Undefined();
}
- constexpr size_t kElementsCount = static_cast<int>(16 / sizeof(ElementType));
+ constexpr size_t kElementsCount = 16 / sizeof(ElementType);
size_t vstart = GetCsr<CsrName::kVstart>();
size_t vl = GetCsr<CsrName::kVl>();
if constexpr (opcode == Decoder::VLUmOpOpcode::kVlm) {
@@ -1219,7 +1218,7 @@ class Interpreter {
auto vma,
typename GetElementIndexLambdaType>
void OpVectorGather(uint8_t dst, uint8_t src1, GetElementIndexLambdaType GetElementIndex) {
- constexpr int kRegistersInvolved = NumberOfRegistersInvolved(vlmul);
+ constexpr size_t kRegistersInvolved = NumberOfRegistersInvolved(vlmul);
if (!IsAligned<kRegistersInvolved>(dst | src1)) {
return Undefined();
}
@@ -1227,7 +1226,7 @@ class Interpreter {
if (dst < (src1 + kRegistersInvolved) && src1 < (dst + kRegistersInvolved)) {
return Undefined();
}
- constexpr int kElementsCount = static_cast<int>(16 / sizeof(ElementType));
+ constexpr size_t kElementsCount = 16 / sizeof(ElementType);
constexpr size_t vlmax = GetVlmax<ElementType, vlmul>();
size_t vstart = GetCsr<CsrName::kVstart>();
@@ -2554,8 +2553,7 @@ class Interpreter {
if (!IsAligned<kIndexRegistersInvolved>(args.idx)) {
return Undefined();
}
- constexpr size_t kElementsCount =
- static_cast<int>(sizeof(SIMD128Register) / sizeof(IndexElementType));
+ constexpr size_t kElementsCount = sizeof(SIMD128Register) / sizeof(IndexElementType);
alignas(alignof(SIMD128Register))
IndexElementType indexes[kElementsCount * kIndexRegistersInvolved];
memcpy(indexes, state_->cpu.v + args.idx, sizeof(SIMD128Register) * kIndexRegistersInvolved);
@@ -2623,7 +2621,7 @@ class Interpreter {
if (data + kNumRegistersInGroup * kSegmentSize > 32) {
return Undefined();
}
- constexpr size_t kElementsCount = static_cast<int>(16 / sizeof(ElementType));
+ constexpr size_t kElementsCount = 16 / sizeof(ElementType);
size_t vstart = GetCsr<CsrName::kVstart>();
size_t vl = GetCsr<CsrName::kVl>();
if constexpr (opcode == Decoder::VSUmOpOpcode::kVsm) {
@@ -2878,7 +2876,7 @@ class Interpreter {
if (!IsAligned<kRegistersInvolved>(dst | src)) {
return Undefined();
}
- constexpr size_t kElementsCount = static_cast<int>(16 / sizeof(ElementType));
+ constexpr size_t kElementsCount = 16 / sizeof(ElementType);
size_t vstart = GetCsr<CsrName::kVstart>();
SetCsr<CsrName::kVstart>(0);
// The usual property that no elements are written if vstart >= vl does not apply to these
@@ -3512,8 +3510,8 @@ class Interpreter {
if (!IsAligned<kDestRegistersInvolved>(dst) || !IsAligned<kSourceRegistersInvolved>(src)) {
return Undefined();
}
- int vstart = GetCsr<CsrName::kVstart>();
- int vl = GetCsr<CsrName::kVl>();
+ size_t vstart = GetCsr<CsrName::kVstart>();
+ size_t vl = GetCsr<CsrName::kVl>();
// When vstart >= vl, there are no body elements, and no elements are updated in any destination
// vector register group, including that no tail elements are updated with agnostic values.
if (vstart >= vl) [[unlikely]] {