Does clmulr access memory?
It does not access data memory. It reads two integer registers and delivers the selected product bits to rd; rd=x0 discards the result.
RV32/RV64 Zbc carry-less multiply, returning bits 2*XLEN-2:XLEN-1 of the 2*XLEN-bit product.
RV32/RV64 Zbc 1.0; syntax clmulr rd, rs1, rs2, with no rs3 or immediate.
32-bit R-type: funct7=0000101, funct3=010, opcode=0110011; register fields select x0–x31.
Select shifted rs1 terms with set rs2 bits and combine with XOR; select full-product bits 2*XLEN-2:XLEN-1. Sources use old XLEN-bit patterns; x0 reads zero and discards writes.
clmulr returns bits 2*XLEN-2:XLEN-1 of the 2*XLEN carry-less product and can accelerate CRC calculations.
This model shows ISA-visible GF(2) XOR partial products; it does not model integer carries, a pipeline, or a cryptographic protocol.
funct7=0000101, funct3=010
clmulr returns bits 2*XLEN-2:XLEN-1 of the 2*XLEN carry-less product and can accelerate CRC calculations.
RV32 Zbc, x11=0x80000000 and x12=1: full carry-less product=0x0000000080000000; selecting bits62:31, clmulr writes x10=1.
It does not access data memory. It reads two integer registers and delivers the selected product bits to rd; rd=x0 discards the result.
It treats XLEN-bit patterns as polynomial operands for carry-less multiplication, without signed-integer multiplication semantics; partial products combine with XOR.