Pseudo-code:
- if RA = 0 then RT <- EXTS(SI)
- else RT <- (RA) + EXTS(SI)
+ RT <- (RA|0) + EXTS(SI)
Special Registers Altered:
Pseudo-code:
- if RA = 0 then RT <- EXTS(SI || [0]*16)
- else RT <- (RA) + EXTS(SI || [0]*16)
+ RT <- (RA|0) + EXTS(SI || [0]*16)
Special Registers Altered:
prod[0:63] <- MULS((RA)[32:63], (RB)[32:63])
RT <- prod
- overflow <- ((prod[0:32] != 0x0_0000_0000) &
- (prod[0:32] != 0x1_ffff_ffff))
+ overflow <- ((prod[0:32] != [0]*33) &
+ (prod[0:32] != [1]*33))
Special Registers Altered:
Pseudo-code:
dividend[0:63] <- (RA)[32:63] || [0]*32
- divisor[0:63] <- [0]*32 || (RB)[32:63]
+ divisor[0:63] <- EXTS64((RB)[32:63])
if (divisor = 0x0000_0000_0000_0000) then
overflow <- 1
else
result <- DIVS(dividend, divisor)
- if (result[32:63] = 0) then
- RT[32:63] <- result[0:31]
+ result32[0:63] <- EXTS64(result[32:63])
+ if (result32 = result) then
+ RT[32:63] <- result[32:63]
RT[0:31] <- undefined[0:31]
overflow <- 0
else
if (divisor = 0x0000_0000_0000_0000) then
overflow <- 1
else
- result <- dividend / divisor
- if (RA) < (RB) then
- RT[32:63] <- result[0:31]
+ result <- dividend / divisor
+ if RA[32:63] <u RB[32:63] then
+ RT[32:63] <- result[32:63]
RT[0:31] <- undefined[0:31]
overflow <- 0
else
Pseudo-code:
dividend[0:31] <- (RA)[32:63]
- divisor [0:31] <- (RB)[32:63]
+ divisor[0:31] <- (RB)[32:63]
if (((dividend = 0x8000_0000) &
(divisor = 0xffff_ffff)) |
(divisor = 0x0000_0000)) then
RT[0:63] <- undefined[0:63]
overflow <- 1
else
- RT[32:63] <- MODS(dividend, divisor)
- RT[0:31] <- undefined[0:31]
+ RT[0:63] <- EXTS64(MODS(dividend, divisor))
overflow <- 0
Special Registers Altered:
X-Form
-* darn RT,L
+* darn RT,L3
Pseudo-code:
- RT <- random(L)
+ RT <- random(L3)
Special Registers Altered:
prod[0:127] <- MULS((RA), (RB))
RT <- prod[64:127]
- overflow <- ((prod[0:64] != 0x0_0000_0000_0000_0000) &
- (prod[0:64] != 0x1_ffff_ffff_ffff_ffff))
+ overflow <- ((prod[0:64] != [0]*65) &
+ (prod[0:64] != [1]*65))
Special Registers Altered:
Pseudo-code:
dividend[0:127] <- (RA) || [0]*64
- divisor[0:127] <- [0*64] || (RB)
+ divisor[0:127] <- [0]*64 || (RB)
if divisor = [0]*128 then
overflow <- 1
else
result <- DIVS(dividend, divisor)
- if result[64:127] = 0x0000_0000_0000_0000 then
- RT <- result[63:127]
+ if result[0:64] = 0x0000_0000_0000_0000 then
+ RT <- result[0:63]
overflow <- 0
else
overflow <- 1
Pseudo-code:
dividend[0:127] <- (RA) || [0]*64
- divisor[0:127] <- [0*64] || (RB)
+ divisor[0:127] <- [0]*64 || (RB)
if divisor = [0]*128 then
overflow <- 1
else
result <- dividend / divisor
if (RA) < (RB) then
- RT <- result[63:127]
+ RT <- result[0:63]
overflow <- 0
else
overflow <- 1