Hi all ~ I notice the case cctest/test-run-load-store/RunLoadStoreZeroExtend64. It load a uint32 from a pointer and store it back by Kword64
Node* load64 = m.LoadFromPointer(&buffer[0], MachineType::Uint64()); m.StoreToPointer(&buffer[3], MachineRepresentation::kWord64, load32); Does V8 default uint32 must be unsigned extended to 64bit in 64-bit platform? Due to riscv64 spec, riscv64 load a uint32 into register and SignExtend to 64bit. https://github.com/riscv-collab/riscv-gnu-toolchain/issues/680#issuecomment-666367253 https://github.com/riscv-collab/riscv-gnu-toolchain/issues/680#issuecomment-686225804 ``` *aswaterman <https://github.com/aswaterman> *commented on 3 Sep 2020 <https://github.com/riscv-collab/riscv-gnu-toolchain/issues/680#issuecomment-686225804> The sign-extension is an ABI constraint. If you want zero extension, you need to use a wider unsigned type, like uint64_t. *sorear <https://github.com/sorear> *commented on 30 Jul 2020 <https://github.com/riscv-collab/riscv-gnu-toolchain/issues/680#issuecomment-666367253> The intent of the RISC-V ISA is that 32-bit C values are stored sign extended in registers, even for unsigned types. ``` -- -- v8-dev mailing list v8-dev@googlegroups.com http://groups.google.com/group/v8-dev --- You received this message because you are subscribed to the Google Groups "v8-dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to v8-dev+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/v8-dev/ed728033-02c0-4f0c-b12a-69998e95611en%40googlegroups.com.