RT <- prod1_lo
RS <- prod2_lo
else
- if XLEN = 64 then
- prod1_lo <- prod1[XLEN:(XLEN*2)-1]
- prod2_lo <- prod2[XLEN:(XLEN*2)-1]
- round <- [0]*XLEN
- round[XLEN -n] <- 1
- prod1_lo <- prod1_lo + round
- prod2_lo <- prod2_lo + round
- m <- MASK(n, (XLEN-1))
- res1 <- ROTL64(prod1_lo, XLEN-n) & m
- res2 <- ROTL64(prod2_lo, XLEN-n) & m
- signbit1 <- prod1_lo[0]
- signbit2 <- prod2_lo[0]
- smask1 <- ([signbit1]*XLEN) & ¬m
- smask2 <- ([signbit2]*XLEN) & ¬m
- RT <- (res1 | smask1)
- RS <- (res2 | smask2)
- else
- round <- [0]*(XLEN*2)
- round[XLEN*2 -n] <- 1
- prod1 <- prod1 + round
- prod2 <- prod2 + round
- m <- MASK(XLEN-n, XLEN-1)
- res1 <- prod1[XLEN-n:XLEN*2 -n -1]
- res2 <- prod2[XLEN-n:XLEN*2 -n -1]
- signbit1 <- prod1[0]
- signbit2 <- prod2[0]
- smask1 <- ([signbit1]*XLEN) & ¬m
- smask2 <- ([signbit2]*XLEN) & ¬m
- RT <- (res1 | smask1)
- RS <- (res2 | smask2)
+ round <- [0]*(XLEN*2)
+ round[XLEN*2 -n] <- 1
+ prod1 <- prod1 + round
+ prod2 <- prod2 + round
+ m <- MASK(XLEN-n, XLEN-1)
+ res1 <- prod1[XLEN-n:XLEN*2 -n -1]
+ res2 <- prod2[XLEN-n:XLEN*2 -n -1]
+ signbit1 <- prod1[0]
+ signbit2 <- prod2[0]
+ smask1 <- ([signbit1]*XLEN) & ¬m
+ smask2 <- ([signbit2]*XLEN) & ¬m
+ RT <- (res1 | smask1)
+ RS <- (res2 | smask2)
Special Registers Altered:
RT <- (RT) + prod_lo
RS <- (RS) - prod_lo
else
- if XLEN = 64 then
- prod_lo <- prod[XLEN:(XLEN*2)-1]
- res1 <- (RT) + prod_lo
- res2 <- (RS) - prod_lo
- round <- [0]*XLEN
- round[XLEN -n] <- 1
- res1 <- res1 + round
- res2 <- res2 + round
- signbit1 <- res1[0]
- signbit2 <- res2[0]
- m <- MASK(n, (XLEN-1))
- res1 <- ROTL64(res1, XLEN-n) & m
- res2 <- ROTL64(res2, XLEN-n) & m
- smask1 <- ([signbit1]*XLEN) & ¬m
- smask2 <- ([signbit2]*XLEN) & ¬m
- RT <- (res1 | smask1)
- RS <- (res2 | smask2)
- else
- res1 <- (RT) + prod
- res2 <- (RS) - prod
- round <- [0]*XLEN*2
- round[XLEN*2 -n] <- 1
- res1 <- res1 + round
- res2 <- res2 + round
- signbit1 <- res1[0]
- signbit2 <- res2[0]
- m <- MASK(XLEN-n, (XLEN-1))
- res1 <- prod1[XLEN-n:XLEN*2 -n -1]
- res2 <- prod2[XLEN-n:XLEN*2 -n -1]
- smask1 <- ([signbit1]*XLEN) & ¬m
- smask2 <- ([signbit2]*XLEN) & ¬m
- RT <- (res1 | smask1)
- RS <- (res2 | smask2)
+ res1 <- (RT) + prod
+ res2 <- (RS) - prod
+ round <- [0]*XLEN*2
+ round[XLEN*2 -n] <- 1
+ res1 <- res1 + round
+ res2 <- res2 + round
+ signbit1 <- res1[0]
+ signbit2 <- res2[0]
+ m <- MASK(XLEN-n, (XLEN-1))
+ res1 <- prod1[XLEN-n:XLEN*2 -n -1]
+ res2 <- prod2[XLEN-n:XLEN*2 -n -1]
+ smask1 <- ([signbit1]*XLEN) & ¬m
+ smask2 <- ([signbit2]*XLEN) & ¬m
+ RT <- (res1 | smask1)
+ RS <- (res2 | smask2)
Special Registers Altered: