diff options
author | Paul Faria <paulfaria@google.com> | 2024-05-02 16:35:50 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2024-05-02 16:35:50 +0000 |
commit | a790cbb5f678255533040c4edee037c2d0a9325e (patch) | |
tree | cf410925c764ff716d4ac28060b016132d2ca92b | |
parent | 9811e5e77d12aa4c7329d25ca13db32fcae14cd7 (diff) | |
parent | 48adca10c9726f5e9252ec239a001621a2af8e4c (diff) | |
download | binary_translation-a790cbb5f678255533040c4edee037c2d0a9325e.tar.gz |
Merge "[interpreter/riscv64] Stop using int in interpreter" into main
-rw-r--r-- | interpreter/riscv64/interpreter.h | 22 |
1 files changed, 10 insertions, 12 deletions
diff --git a/interpreter/riscv64/interpreter.h b/interpreter/riscv64/interpreter.h index 0c7bd140..86d7697b 100644 --- a/interpreter/riscv64/interpreter.h +++ b/interpreter/riscv64/interpreter.h @@ -469,7 +469,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; @@ -923,8 +923,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); @@ -1043,7 +1042,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) { @@ -1211,7 +1210,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(); } @@ -1219,7 +1218,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>(); @@ -2635,8 +2634,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); @@ -2704,7 +2702,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) { @@ -2959,7 +2957,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 @@ -3593,8 +3591,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]] { |