# DRAFT Minimum/Maximum (Rc=1) MM-Form * minmax. RT,RA,RB,MMM (Rc=1) Pseudo-code: [[!inline pagenames="openpower/isa/av/minmax." raw="yes"]] Special Registers Altered: CR0 (if Rc=1) # DRAFT Minimum/Maximum MM-Form * minmax RT,RA,RB,MMM (Rc=0) 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