From a7e493e9006358c96ee5f315d075f1be9b4c54d3 Mon Sep 17 00:00:00 2001 From: Luke Kenneth Casson Leighton Date: Sat, 14 Oct 2023 13:52:08 +0100 Subject: [PATCH] add pifpload.mdwn and pifpstore.mdwn, TODO the descriptions (english language conversion to post-increment) --- openpower/isa/pifpload.mdwn | 251 +++++++++++++++++++++++++++++++++++ openpower/isa/pifpstore.mdwn | 238 +++++++++++++++++++++++++++++++++ 2 files changed, 489 insertions(+) create mode 100644 openpower/isa/pifpload.mdwn create mode 100644 openpower/isa/pifpstore.mdwn diff --git a/openpower/isa/pifpload.mdwn b/openpower/isa/pifpload.mdwn new file mode 100644 index 00000000..d2bc4185 --- /dev/null +++ b/openpower/isa/pifpload.mdwn @@ -0,0 +1,251 @@ + + + + +# Load Floating-Point Single + +D-Form + +* lfs FRT,D(RA) + +Pseudo-code: + + EA <- (RA|0) + EXTS(D) + FRT <- DOUBLE(MEM(EA, 4)) + +Description: + + Let the effective address (EA) be the sum (RA|0)+D. + The word in storage addressed by EA is interpreted as + a floating-point single-precision operand. This word is + converted to floating-point double format (see + page 138) and placed into register FRT. + +Special Registers Altered: + + None + +# Load Floating-Point Single Indexed + +X-Form + +* lfsx FRT,RA,RB + +Pseudo-code: + + EA <- (RA|0) + (RB) + FRT <- DOUBLE(MEM(EA, 4)) + +Description: + + Let the effective address (EA) be the sum (RA|0)+(RB). + + The word in storage addressed by EA is interpreted as + a floating-point single-precision operand. This word is + converted to floating-point double format (see + page 138) and placed into register FRT. + +Special Registers Altered: + + None + +# Load Floating-Point Single with Update + +D-Form + +* lfsu FRT,D(RA) + +Pseudo-code: + + EA <- (RA) + EXTS(D) + FRT <- DOUBLE(MEM(EA, 4)) + RA <- EA + +Description: + + Let the effective address (EA) be the sum (RA)+D. + + The word in storage addressed by EA is interpreted as + a floating-point single-precision operand. This word is + converted to floating-point double format (see + page 138) and placed into register FRT. + + EA is placed into register RA. + + If RA=0, the instruction form is invalid. + +Special Registers Altered: + + None + +# Load Floating-Point Single with Update Indexed + +X-Form + +* lfsux FRT,RA,RB + +Pseudo-code: + + EA <- (RA) + (RB) + FRT <- DOUBLE(MEM(EA, 4)) + RA <- EA + +Description: + + Let the effective address (EA) be the sum (RA)+(RB). + + The word in storage addressed by EA is interpreted as + a floating-point single-precision operand. This word is + converted to floating-point double format (see + page 138) and placed into register FRT. + + EA is placed into register RA. + + If RA=0, the instruction form is invalid. + +Special Registers Altered: + + None + +# Load Floating-Point Double + +D-Form + +* lfd FRT,D(RA) + +Pseudo-code: + + EA <- (RA|0) + EXTS(D) + FRT <- MEM(EA, 8) + +Description: + + Let the effective address (EA) be the sum (RA|0)+D. + + The doubleword in storage addressed by EA is loaded + into register FRT. + +Special Registers Altered: + + None + +# Load Floating-Point Double Indexed + +X-Form + +* lfdx FRT,RA,RB + +Pseudo-code: + + EA <- (RA|0) + (RB) + FRT <- MEM(EA, 8) + +Description: + + Let the effective address (EA) be the sum (RA|0)+(RB). + + The doubleword in storage addressed by EA is loaded + into register FRT. + +Special Registers Altered: + + None + +# Load Floating-Point Double with Update + +D-Form + +* lfdu FRT,D(RA) + +Pseudo-code: + + EA <- (RA) + EXTS(D) + FRT <- MEM(EA, 8) + RA <- EA + +Description: + + Let the effective address (EA) be the sum (RA)+D. + + The doubleword in storage addressed by EA is loaded + into register FRT. + + EA is placed into register RA. + + If RA=0, the instruction form is invalid. + +Special Registers Altered: + + None + +# Load Floating-Point Double with Update Indexed + +X-Form + +* lfdux FRT,RA,RB + +Pseudo-code: + + EA <- (RA) + (RB) + FRT <- MEM(EA, 8) + RA <- EA + +Description: + + Let the effective address (EA) be the sum (RA)+(RB). + + The doubleword in storage addressed by EA is loaded + into register FRT. + + EA is placed into register RA. + + If RA=0, the instruction form is invalid. + +Special Registers Altered: + + None + +# Load Floating-Point as Integer Word Algebraic Indexed + +X-Form + +* lfiwax FRT,RA,RB + +Pseudo-code: + + EA <- (RA|0) + (RB) + FRT <- EXTS(MEM(EA, 4)) + +Description: + + Let the effective address (EA) be the sum (RA|0)+(RB). + + The word in storage addressed by EA is loaded into + FRT [32:63]. FRT [0:31] are filled with a copy of bit 0 of the + loaded word. + +Special Registers Altered: + + None + +# Load Floating-Point as Integer Word Zero Indexed + +X-Form + +* lfiwzx FRT,RA,RB + +Pseudo-code: + + EA <- (RA|0) + (RB) + FRT <- [0]*32 || MEM(EA, 4) + +Description: + + Let the effective address (EA) be the sum (RA|0)+(RB). + + The word in storage addressed by EA is loaded into + FRT [32:63]. FRT [0:31] are set to 0. + +Special Registers Altered: + + None diff --git a/openpower/isa/pifpstore.mdwn b/openpower/isa/pifpstore.mdwn new file mode 100644 index 00000000..3d7bd776 --- /dev/null +++ b/openpower/isa/pifpstore.mdwn @@ -0,0 +1,238 @@ + + + + +# Store Floating-Point Single + +D-Form + +* stfs FRS,D(RA) + +Pseudo-code: + + EA <- (RA|0) + EXTS(D) + MEM(EA, 4)<- SINGLE( (FRS) ) + +Description: + + Let the effective address (EA) be the sum (RA|0)+D. + + The contents of register FRS are converted to single + format (see page 142) and stored into the word in stor- + age addressed by EA. + +Special Registers Altered: + + None + +# Store Floating-Point Single Indexed + +X-Form + +* stfsx FRS,RA,RB + +Pseudo-code: + + EA <- (RA|0) + (RB) + MEM(EA, 4)<- SINGLE( (FRS) ) + +Description: + + Let the effective address (EA) be the sum (RA|0)+(RB). + + The contents of register FRS are converted to single + format (see page 142) and stored into the word in stor- + age addressed by EA. + +Special Registers Altered: + + None + +# Store Floating-Point Single with Update + +D-Form + +* stfsu FRS,D(RA) + +Pseudo-code: + + EA <- (RA) + EXTS(D) + MEM(EA, 4)<- SINGLE( (FRS) ) + RA <- EA + +Description: + + Let the effective address (EA) be the sum (RA) +D. + + The contents of register FRS are converted to single + format (see page 142) and stored into the word in stor- + age addressed by EA. + + EA is placed into register RA. + + If RA=0, the instruction form is invalid. + +Special Registers Altered: + + None + +# Store Floating-Point Single with Update Indexed + +X-Form + +* stfsux FRS,RA,RB + +Pseudo-code: + + EA <- (RA) + (RB) + MEM(EA, 4)<- SINGLE( (FRS) ) + RA <- EA + +Description: + + Let the effective address (EA) be the sum (RA) +(RB). + + The contents of register FRS are converted to single + format (see page 142) and stored into the word in stor- + age addressed by EA. + + EA is placed into register RA. + + If RA=0, the instruction form is invalid. + +Special Registers Altered: + + None + +# Store Floating-Point Double + +D-Form + +* stfd FRS,D(RA) + +Pseudo-code: + + EA <- (RA|0) + EXTS(D) + MEM(EA, 8)<- (FRS) + +Description: + + Let the effective address (EA) be the sum (RA|0)+D. + + The contents of register FRS are stored into the dou- + bleword in storage addressed by EA. + +Special Registers Altered: + + None + +# Store Floating-Point Double Indexed + +X-Form + +* stfdx FRS,RA,RB + +Pseudo-code: + + EA <- (RA|0) + (RB) + MEM(EA, 8)<- (FRS) + +Description: + + Let the effective address (EA) be the sum (RA|0)+(RB). + + The contents of register FRS are stored into the dou- + bleword in storage addressed by EA. + +Special Registers Altered: + + None + +# Store Floating-Point Double with Update + +D-Form + +* stfdu FRS,D(RA) + +Pseudo-code: + + EA <- (RA) + EXTS(D) + MEM(EA, 8)<- (FRS) + RA <- EA + +Description: + + Let the effective address (EA) be the sum (RA)+D. + + The contents of register FRS are stored into the dou- + bleword in storage addressed by EA. + + EA is placed into register RA. + + If RA=0, the instruction form is invalid. + +Special Registers Altered: + + None + +# Store Floating-Point Double with Update Indexed + +X-Form + +* stfdux FRS,RA,RB + +Pseudo-code: + + EA <- (RA) + (RB) + MEM(EA, 8)<- (FRS) + RA <- EA + +Description: + + Let the effective address (EA) be the sum (RA)+(RB). + + The contents of register FRS are stored into the dou- + bleword in storage addressed by EA. + + EA is placed into register RA. + + If RA=0, the instruction form is invalid. + +Special Registers Altered: + + None + +# Store Floating-Point as Integer Word Indexed + +X-Form + +* stfiwx FRS,RA,RB + +Pseudo-code: + + b <- (RA|0) + EA <- b + (RB) + MEM(EA, 8)<- (FRS)[32:63] + +Description: + + Let the effective address (EA) be the sum (RA|0)+(RB). + + (FRS)[32:63] are stored, without conversion, into the word + in storage addressed by EA. + + If the contents of register FRS were produced, either + directly or indirectly, by a Load Floating-Point Single + instruction, a single-precision Arithmetic instruction, or + frsp, then the value stored is undefined. (The contents + of register FRS are produced directly by such an + instruction if FRS is the target register for the instruc- + tion. The contents of register FRS are produced indi- + rectly by such an instruction if FRS is the final target + register of a sequence of one or more Floating-Point + Move instructions, with the input to the sequence hav- + ing been produced directly by such an instruction.) + +Special Registers Altered: + + None -- 2.30.2