From: Jacob Lifshay Date: Mon, 7 Aug 2023 23:04:00 +0000 (-0700) Subject: split out instructions from openpower/isa/av.mdwn X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=8bd302d4376ce7859f617cc6fc528e4e454811aa;p=openpower-isa.git split out instructions from openpower/isa/av.mdwn --- diff --git a/openpower/isa/av.mdwn b/openpower/isa/av.mdwn index 94c3e1c8..22fac067 100644 --- a/openpower/isa/av.mdwn +++ b/openpower/isa/av.mdwn @@ -2,260 +2,24 @@ -# DRAFT Minimum/Maximum (Rc=1) +[[!inline pagenames="openpower/isa/av/minmax." raw="yes"]] -MM-Form +[[!inline pagenames="openpower/isa/av/minmax" raw="yes"]] -* minmax. RT,RA,RB,MMM (Rc=1) +[[!inline pagenames="openpower/isa/av/avgadd" raw="yes"]] -Pseudo-code: +[[!inline pagenames="openpower/isa/av/absds" raw="yes"]] - 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 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 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 Rc = 1 then store the result of comparing a and b to CR0 + if a