Home/Instructions/Bit Set Immediate
BSETI

RISC-V BSETI Instruction Details

Instruction ManualI-type

Set single bit by immediate index

Instruction Syntax

bseti rd, rs1, uimm
Operand Breakdown
Destination rd: receives the result of the single-bit extract, invert, or set operation; a write to rd=x0 is discarded.
Source rs1: supplies the XLEN-bit value whose bit is extracted, inverted, or set.
shamt: immediate-encoded bit index. RV32 uses shamt[4:0] and encodings with shamt[5]=1 are reserved; RV64 uses shamt[5:0].
ZbsBit ManipulationSingle-Bit Operation

Instruction Behavior

bseti is a Zbs single-bit set instruction. The bit index comes from the immediate field.

BSETI Decode And Execute Animation

Starts with machine-code field decoding, then shows operand reads, instruction-specific execution, and ISA-visible state update.

rd
rs1
shamt
bseti
,
,
Execution Context
a0(x10)
0x00001000
31..25
24..20
19..15
14..12
11..7
6..0
0010100
fixed imm[11:5]
01100
shamt[4:0]
01010
rs1
001
funct3
00101
rd
0010011
opcode
Execution Data Path
instruction
0x28C51293
opcode
0010011 -> OP-IMM
funct3
001 -> BSETI
imm[11:5]
imm[11:5]=0010100 fixed
rd / rs1
t0(x5) / a0(x10)=0x00001000
imm[11:5] + shamt[4:0]
imm[11:5]=0010100 fixed -> index=12
single-bit set
0x00001000 | 0x00001000 = 0x00001000
x5
t0(x5) = 0x00001000
Current Step

Concept Step: receive the 32-bit instruction encoding

The machine code is split by the current instruction format; the animation starts from encoding/decode.

encoding: 0x28C51293
syntax : bseti t0(x5), a0(x10), 12
result : t0(x5) = 0x00001000
Architectural Result
t0(x5) = 0x00001000

This animation shows ISA-visible decode and state changes, not any specific CPU pipeline, cache, prediction, or timing implementation.

Quick Understanding & Search Notes

bseti is a Zbs single-bit set instruction. The bit index comes from the immediate field.

These instructions are part of a B-extension subset and operate on XLEN-wide integer register values.
The immediate field width depends on XLEN; RV32 encodings with shamt[5]=1 are reserved, while RV64 encodes 0..63.
bseti changes one selected bit and leaves the other bits from rs1 unchanged.

Common Usage Scenarios

Immediates & Constants

Understand this scenario with real code like «bseti x10, x11, 5 ; x10 = x11 | (1 << 5)».

Pre-Use Checklist

Syntax Check
  • Verify the immediate field is within the valid range.
  • Confirm source register rs1 points to the correct operand.
Semantic Check
  • Check if the immediate sign-extension matches expectations.
  • Ensure the result register rd has a clear purpose.

Pitfalls / Common Confusions

The immediate field width depends on XLEN; RV32 encodings with shamt[5]=1 are reserved, while RV64 encodes 0..63.
bseti changes one selected bit and leaves the other bits from rs1 unchanged.

FAQ

Does bseti access memory?

No. It reads integer register operands and writes rd only.

How is the bit index selected for bseti?

The immediate encodes the bit position directly, with the legal range determined by XLEN.