Ternary Bitwise Logic Immediate

TLI-Form

  • ternlogi RT,RA,RB,TLI
  • ternlogi. RT,RA,RB,TLI

Pseudo-code:

result <- [0] * XLEN
do i = 0 to XLEN - 1
  idx <- (RT)[i] || (RA)[i] || (RB)[i]
  result[i] <- TLI[7-idx]
RT <- result

Special Registers Altered:

CR0                    (if Rc=1)

Generalized Bit-Reverse

X-Form

  • grev RT,RA,RB (Rc=0)
  • grev. RT,RA,RB (Rc=1)

Pseudo-code:

result <- [0] * XLEN
b <- EXTZ64(RB)
do i = 0 to XLEN - 1
  idx <- b[64-log2(XLEN):63] ^ i
  result[i] <- (RA)[idx]
RT <- result

Special Registers Altered:

CR0                    (if Rc=1)

Generalized Bit-Reverse Immediate

XB-Form

  • grevi RT,RA,XBI (Rc=0)
  • grevi. RT,RA,XBI (Rc=1)

Pseudo-code:

result <- [0] * XLEN
do i = 0 to XLEN - 1
  idx <- XBI[6-log2(XLEN):5] ^ i
  result[i] <- (RA)[idx]
RT <- result

Special Registers Altered:

CR0                    (if Rc=1)

Generalized Bit-Reverse Word

X-Form

  • grevw RT,RA,RB (Rc=0)
  • grevw. RT,RA,RB (Rc=1)

Pseudo-code:

result <- [0] * (XLEN / 2)
a <- (RA)[XLEN/2:XLEN-1]
b <- EXTZ64(RB)
do i = 0 to XLEN / 2 - 1
  idx <- b[64-log2(XLEN/2):63] ^ i
  result[i] <- a[idx]
RT <- ([0] * (XLEN / 2)) || result

Special Registers Altered:

CR0                    (if Rc=1)

Generalized Bit-Reverse Word Immediate

X-Form

  • grevwi RT,RA,SH (Rc=0)
  • grevwi. RT,RA,SH (Rc=1)

Pseudo-code:

result <- [0] * (XLEN / 2)
a <- (RA)[XLEN/2:XLEN-1]
do i = 0 to XLEN / 2 - 1
  idx <- SH[5-log2(XLEN/2):4] ^ i
  result[i] <- a[idx]
RT <- ([0] * (XLEN / 2)) || result

Special Registers Altered:

CR0                    (if Rc=1)

Add With Shift By Immediate

Z23-Form

  • shadd RT,RA,RB,sm (Rc=0)
  • shadd. RT,RA,RB,sm (Rc=1)

Pseudo-code:

n <- (RB)
m <- ((0b0 || sm) + 1)
RT <- (n[m:XLEN-1] || [0]*m) + (RA)

Special Registers Altered:

CR0                    (if Rc=1)

Add With Shift By Immediate Unsinged Word

Z23-Form

  • shadduw RT,RA,RB,sm (Rc=0)
  • shadduw. RT,RA,RB,sm (Rc=1)

Pseudo-code:

n <- ([0]*(XLEN/2)) || (RB)[XLEN/2:XLEN-1]
m <- ((0b0 || sm) + 1)
RT <- (n[m:XLEN-1] || [0]*m) + (RA)

Special Registers Altered:

CR0                    (if Rc=1)