When do SRL and SRA produce different results?
They differ when the top bit of rs1 is 1 and the shift amount is nonzero: SRL fills high bits with zero, while SRA copies the original sign bit.
Shift rs1 right logically by the low log2(XLEN) bits of rs2, result in rd
SRL is an R-type logical right shift. It shifts rs1 right by the amount in the low log2(XLEN) bits of rs2: rs2[4:0] on RV32 and rs2[5:0] on RV64. High bits are filled with zero, low bits shifted out are discarded, and rd receives the result. opcode=0110011, funct3=101, funct7=0000000; with the same funct3, funct7=0100000 selects SRA.
Uses the same rhythm as the ADDI page: machine-code fields, fixed-field identification, operand reads, instruction-specific execution, and ISA-visible state update.
The machine code is split by the current instruction format; the animation starts from encoding/decode.
This animation shows ISA-visible decode and state changes, not any specific CPU pipeline, cache, prediction, or timing implementation.
SRL takes a variable shift amount from the low bits of rs2, logically shifts rs1 right, and fills high bits with zero. It fits unsigned values or bit-field extraction and does not preserve sign.
Understand this scenario with real code like «srl x5, x6, x7 # x5 = x6 >> (x7[4:0] on RV32, x7[5:0] on RV64) (logical)».
Understand this scenario with real code like «srl x5, x6, x7 # x5 = x6 >> (x7[4:0] on RV32, x7[5:0] on RV64) (logical)».
Understand this scenario with real code like «srl x5, x6, x7 # x5 = x6 >> (x7[4:0] on RV32, x7[5:0] on RV64) (logical)».
They differ when the top bit of rs1 is 1 and the shift amount is nonzero: SRL fills high bits with zero, while SRA copies the original sign bit.
Under an unsigned binary interpretation, logical right shift is commonly used for division by powers of two. The animation shows only the ISA-defined bit shift result, not language-level overflow or rounding rules.