MCPcopy Create free account
hub / github.com/LPC4/Full-Stack / beq

Function beq

crates/virtual-machine/tests/vm_pipeline.rs:70–84  ·  view source on GitHub ↗

beq rs1, rs2, imm (branch if equal, imm is byte offset from PC)

(rs1: u32, rs2: u32, imm: i32)

Source from the content-addressed store, hash-verified

68
69// beq rs1, rs2, imm (branch if equal, imm is byte offset from PC)
70fn beq(rs1: u32, rs2: u32, imm: i32) -> u32 {
71 let imm13 = (imm as u32) & 0x1FFE; // bits [12:1], bit 0 is always 0
72 let imm_12 = (imm13 >> 12) & 1;
73 let imm_11 = (imm13 >> 11) & 1;
74 let imm_10_5 = (imm13 >> 5) & 0x3f;
75 let imm_4_1 = (imm13 >> 1) & 0xf;
76 ((imm_12 << 31)
77 | (imm_10_5 << 25)
78 | (rs2 << 20)
79 | (rs1 << 15)) // funct3=0 = BEQ
80 | (imm_4_1 << 8)
81 | (imm_11 << 7)
82 | 0x63
83}
84
85// bne rs1, rs2, imm
86fn bne(rs1: u32, rs2: u32, imm: i32) -> u32 {
87 let imm13 = (imm as u32) & 0x1FFE;

Calls

no outgoing calls

Tested by

no test coverage detected