# DRAFT Minimum/Maximum (Rc=1) MM-Form * minmax. RT,RA,RB,MMM (Rc=1) Pseudo-code: a <- (RA|0) b <- (RB) if MMM[0] then # word mode # shift left by XLEN/2 to make the dword comparison # do word comparison of the original inputs a <- a[XLEN/2:XLEN-1] || [0] * XLEN/2 b <- b[XLEN/2:XLEN-1] || [0] * XLEN/2 if MMM[1] then # signed mode # invert sign bits to make the unsigned comparison # do signed comparison of the original inputs a[0] <- ¬a[0] b[0] <- ¬b[0] # if Rc = 1 then store the result of comparing a and b to CR0 if Rc = 1 then if a u b then CR0 <- 0b010 || XER[SO] if MMM[2] then # max mode # swap a and b to make the less than comparison do # greater than comparison of the original inputs t <- a a <- b b <- t # store the entire selected source (even in word mode) # if Rc = 1 then store the result of comparing a and b to CR0 if a u b then # CR0 <- 0b010 || XER[SO] if MMM[2] then # max mode # swap a and b to make the less than comparison do # greater than comparison of the original inputs t <- a a <- b b <- t # store the entire selected source (even in word mode) if a