Convert Declets To Binary Coded Decimal

X-Form

  • cdtbcd RA,RS

Pseudo-code:

src <- [0]*64
src[64-XLEN:63] <- (RS)
result <- [0]*64
do i = 0 to 1
  n <- i * 32
  result[n+0:n+7] <- 0
  result[n+8:n+19] <- DPD_TO_BCD(src[n+12:n+21])
  result[n+20:n+31] <- DPD_TO_BCD(src[n+22:n+31])
RA <- result[64-XLEN:63]

Special Registers Altered:

None

Add and Generate Sixes

XO-Form

  • addg6s RT,RA,RB

Pseudo-code:

sum <- (0b0000 || (RA)) + (0b0000 || (RB))
carries <- sum ^ (0b0000 || (RA)) ^ (0b0000 || (RB))
ones <- [0b0001] * (XLEN / 4)
nibbles_need_sixes <- ¬carries[0:XLEN-1] & ones
RT <- nibbles_need_sixes * 0b0110

Special Registers Altered:

None

Convert Binary Coded Decimal To Declets

X-Form

  • cbcdtd RA,RS

Pseudo-code:

src <- [0]*64
src[64-XLEN:63] <- (RS)
result <- [0]*64
do i = 0 to 1
  n <- i * 32
  result[n+0:n+11] <- 0
  result[n+12:n+21] <- BCD_TO_DPD(src[n+8:n+19])
  result[n+22:n+31] <- BCD_TO_DPD(src[n+20:n+31])
RA <- result[64-XLEN:63]

Special Registers Altered:

None