import type { AssemblyInstructionInfo } from "../../../types/assembly-docs.interfaces.js"; // Based on the IBM documentation of assembly instructions for AIX 7.3 (https://www.ibm.com/docs/en/aix/7.3?topic=reference-instruction-set). // // An automatic generator is available at etc/scripts/docenizers/docenizer-power.py, but it has a lot of quirks and is considered incomplete. // As such, this was created manually to have a complete documentation of the current baseline ISA. // // There are a *lot* of instructions that have been defined in later versions of the Power ISA that IBM hasn't written documentation for yet. // This includes a lot of convenience "extended" instructions, every AltiVec/VMX instruction, and a myriad of other new instructions. // If you're up to the significant challenge, feel free to start working through the OpenPOWER ISA manual and start writing proper documentation // for the many missing instructions that IBM hasn't documented yet. The latest revision is always available at https://openpowerfoundation.org/specifications/isa/. export function getAsmOpcode(opcode: string | undefined): AssemblyInstructionInfo | undefined { if (!opcode) return; switch (opcode.toUpperCase()) { case "ABS": case "ABS.": case "ABSO": case "ABSO.": return { "html": `
The abs instruction places the absolute value of the contents of general-purpose register (GPR) RA into the target GPR RT.
If GPR RA contains the most negative number ('8000 0000'), the result of the instruction is the most negative number, and the instruction will set the Overflow bit in the Fixed-Point Exception Register to 1 if the OE bit is set to 1.
`, "tooltip": "Absolute", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-abs-absolute-instruction" }; case "ADD": case "ADD.": case "ADDO": case "ADDO.": case "CAX": case "CAX.": case "CAXO": case "CAXO.": return { "html": `The add and cax instructions place the sum of the contents of general-purpose register (GPR) RA and GPR RB into the target GPR RT.
`, "tooltip": "Add or Compute Address", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-add-add-cax-compute-address-instruction" }; case "A": case "A.": case "AO": case "AO.": case "ADDC": case "ADDC.": case "ADDCO": case "ADDCO.": return { "html": `The addc and a instructions place the sum of the contents of general-purpose register (GPR) RA and GPR RB into the target GPR RT.
`, "tooltip": "Add Carrying", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-addc-add-carrying-instruction" }; case "AE": case "AE.": case "AEO": case "AEO.": case "ADDE": case "ADDE.": case "ADDEO": case "ADDEO.": return { "html": `The adde and ae instructions place the sum of the contents of general-purpose register (GPR) RA, GPR RB, and the Carry bit into the target GPR RT.
`, "tooltip": "Add Extended", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-adde-ae-add-extended-instruction" }; case "ADDI": case "CAL": return { "html": `The addi and cal instructions place the sum of the contents of general-purpose register (GPR) RA and the 16-bit two's complement integer SI or D, sign-extended to 32 bits, into the target GPR RT. If GPR RA is GPR 0, then SI or D is stored into the target GPR RT.
The addi and cal instructions have one syntax form and do not affect Condition Register Field 0 or the Fixed-Point Exception Register.
`, "tooltip": "Add Immediate or Compute Address Lower", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=is-addi-add-immediate-cal-compute-address-lower-instruction" }; case "AI": case "ADDIC": return { "html": `The addic and ai instructions place the sum of the contents of general-purpose register (GPR) RA and a 16-bit signed integer, SI, into target GPR RT.
The 16-bit integer provided as immediate data is sign-extended to 32 bits prior to carrying out the addition operation.
The addic and ai instructions have one syntax form and can set the Carry bit of the Fixed-Point Exception Register; these instructions never affect Condition Register Field 0.
`, "tooltip": "Add Immediate Carrying", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-addic-ai-add-immediate-carrying-instruction" }; case "AI.": case "ADDIC.": return { "html": `The addic. and ai. instructions place the sum of the contents of general-purpose register (GPR) RA and a 16-bit signed integer, SI, into the target GPR RT.
The 16-bit integer SI provided as immediate data is sign-extended to 32 bits prior to carrying out the addition operation.
The addic. and ai. instructions have one syntax form and can set the Carry Bit of the Fixed-Point Exception Register. These instructions also affect Condition Register Field 0.
`, "tooltip": "Add Immediate Carrying and Record", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-addic-ai-add-immediate-carrying-record-instruction" }; case "ADDIS": case "CAU": return { "html": `The addis and cau instructions place the sum of the contents of general-purpose register (GPR) RA and the concatenation of a 16-bit unsigned integer, SI or UI, and x'0000' into the target GPR RT. If GPR RA is GPR 0, then the sum of the concatenation of 0, SI or UI, and x'0000' is stored into the target GPR RT.
The cau instruction has one syntax form. The addis instruction has two syntax forms; however, the second form is only valid when the R_TOCU relocation type is used in the D expression. The R_TOCU relocation type can be specified explicitly with the @u relocation specifier or implicitly by using a QualName parameter with a TE storage-mapping class.Note: The immediate value for the cau instruction is a 16-bit unsigned integer, whereas the immediate value for the addis instruction is a 16-bit signed integer. This difference is a result of extending the architecture to 64 bits.
The assembler does a 0 to 65535 value-range check for the UI field, and a -32768 to 32767 value-range check for the SI field.
To keep the source compatibility of the addis and cau instructions, the assembler expands the value-range check for the addis instruction to -65536 to 65535. The sign bit is ignored and the assembler only ensures that the immediate value fits into 16 bits. This expansion does not affect the behavior of a 32-bit implementation or 32-bit mode in a 64-bit implementation.
The addis instruction has different semantics in 32-bit mode than it does in 64-bit mode. If bit 32 is set, it propagates through the upper 32 bits of the 64-bit general-purpose register. Use caution when using the addis instruction to construct an unsigned integer. The addis instruction with an unsigned integer in 32-bit may not be directly ported to 64-bit mode. The code sequence needed to construct an unsigned integer in 64-bit mode is significantly different from that needed in 32-bit mode.
`, "tooltip": "Add Immediate Shifted", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-addis-cau-add-immediate-shifted-instruction" }; case "AME": case "AME.": case "AMEO": case "AMEO.": case "ADDME": case "ADDME.": case "ADDMEO": case "ADDMEO.": return { "html": `The addme and ame instructions place the sum of the contents of general-purpose register (GPR) RA, the Carry bit of the Fixed-Point Exception Register, and -1 (0xFFFF FFFF) into the target GPR RT.
`, "tooltip": "Add to Minus One Extended", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-addme-ame-add-minus-one-extended-instruction" }; case "AZE": case "AZE.": case "AZEO": case "AZEO.": case "ADDZE": case "ADDZE.": case "ADDZEO": case "ADDZEO.": return { "html": `The addze and aze instructions add the contents of general-purpose register (GPR) RA, the Carry bit, and 0x0000 0000 and place the result into the target GPR RT.
`, "tooltip": "Add to Zero Extended", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-addze-aze-add-zero-extended-instruction" }; case "AND": case "AND.": return { "html": `The and instruction logically ANDs the contents of general-purpose register (GPR) RS with the contents of GPR RB and places the result into the target GPR RA.
`, "tooltip": "AND", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-instruction" }; case "ANDC": case "ANDC.": return { "html": `The andc instruction logically ANDs the contents of general-purpose register (GPR) RS with the complement of the contents of GPR RB and places the result into GPR RA.
`, "tooltip": "AND with Complement", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-andc-complement-instruction" }; case "ANDI.": case "ANDIL.": return { "html": `The andi. and andil. instructions logically AND the contents of general-purpose register (GPR) RS with the concatenation of x'0000' and a 16-bit unsigned integer, UI, and place the result in GPR RA.
The andi. and andil. instructions have one syntax form and never affect the Fixed-Point Exception Register. The andi. and andil. instructions copies the Summary Overflow (SO) bit from the Fixed-Point Exception Register into Condition Register Field 0 and sets one of the Less Than (LT), Greater Than (GT), or Equal To (EQ) bits of Condition Register Field 0.
`, "tooltip": "AND Immediate", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-andi-andil-immediate-instruction" }; case "ANDIS.": case "ANDIU.": return { "html": `The andis. and andiu. instructions logically AND the contents of general-purpose register (GPR) RS with the concatenation of a 16-bit unsigned integer, UI, and x'0000' and then place the result into the target GPR RA.
The andis. and andiu. instructions have one syntax form and never affect the Fixed-Point Exception Register. The andis. and andiu. instructions set the Less Than (LT) zero, Greater Than (GT) zero, Equal To (EQ) zero, or Summary Overflow (SO) bit in Condition Register Field 0.
`, "tooltip": "AND Immediate Shifted", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-andis-andiu-immediate-shifted-instruction" }; case "B": case "BA": case "BL": case "BLA": return { "html": `The b instruction branches to an instruction specified by the branch target address. The branch target address is computed one of two ways.
Consider the following when using the b instruction:
The bc instruction branches to an instruction specified by the branch target address. The branch target address is computed one of two ways:
The bcctr and bcc instructions conditionally branch to an instruction specified by the branch target address contained within the Count Register. The branch target address is the concatenation of Count Register bits 0-29 and b'00'.
`, "tooltip": "Branch Conditional to Count Register", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-bcctr-bcc-branch-conditional-count-register-instruction" }; case "BCR": case "BCRL": case "BCLR": case "BCLRL": return { "html": `The bclr and bcr instructions branch to an instruction specified by the branch target address. The branch target address is the concatenation of bits 0-29 of the Link Register and b'00'.
`, "tooltip": "Branch Conditional Link Register", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-bclr-bcr-branch-conditional-link-register-instruction" }; case "CLCS": return { "html": `The clcs instruction places the cache line size specified by RA into the target general-purpose register (GPR) RT. The value of RA determines the cache line size returned in GPR RT.
`, "tooltip": "Cache Line Compute Size", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-clcs-cache-line-compute-size-instruction" }; case "CLF": return { "html": `The clf instruction calculates an effective address (EA) by adding the contents of general-purpose register (GPR) RA to the contents of GPR RB. If the RA field is 0, EA is the sum of the contents of RB and 0. If the RA field is not 0 and if the instruction does not cause a data storage interrupt, the result of the operation is placed back into GPR RA.
`, "tooltip": "Cache Line Flush", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-clf-cache-line-flush-instruction" }; case "CLI": return { "html": `The cli instruction invalidates a line containing the byte addressed in either the data or instruction cache. If RA is not 0, the cli instruction calculates an effective address (EA) by adding the contents of general-purpose register (GPR) RA to the contents of GPR RB. If RA is not GPR 0 or the instruction does not cause a Data Storage interrupt, the result of the calculation is placed back into GPR RA.
`, "tooltip": "Cache Line Invalidate", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-cli-cache-line-invalidate-instruction" }; case "CMP": return { "html": `The cmp instruction compares the contents of general-purpose register (GPR) RA with the contents of GPR RB as signed integers and sets one of the bits in Condition Register Field BF.
BF can be Condition Register Field 0-7; programmers can specify which Condition Register Field will indicate the result of the operation.
`, "tooltip": "Compare", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-cmp-compare-instruction" }; case "CMPI": return { "html": `The cmpi instruction compares the contents of general-purpose register (GPR) RA and a 16- bit signed integer, SI, as signed integers and sets one of the bits in Condition Register Field BF.
BF can be Condition Register Field 0-7; programmers can specify which Condition Register Field will indicate the result of the operation.
`, "tooltip": "Compare Immediate", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-cmpi-compare-immediate-instruction" }; case "CMPL": return { "html": `The cmpl instruction compares the contents of general-purpose register (GPR) RA with the contents of GPR RB as unsigned integers and sets one of the bits in Condition Register Field BF.
BF can be Condition Register Field 0-7; programmers can specify which Condition Register Field will indicate the result of the operation.
`, "tooltip": "Compare Logical", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-cmpl-compare-logical-instruction" }; case "CMPLI": return { "html": `The cmpli instruction compares the contents of general-purpose register (GPR) RA with the concatenation of x'0000' and a 16-bit unsigned integer, UI, as unsigned integers and sets one of the bits in the Condition Register Field BF.
BF can be Condition Register Field 0-7; programmers can specify which Condition Register Field will indicate the result of the operation.
`, "tooltip": "Compare Logical Immediate", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-cmpli-compare-logical-immediate-instruction" }; case "CNTLZD": case "CNTLZD.": return { "html": `A count of the number of consecutive zero bits, starting at bit 0 (the high-order bit) of register GPR RS is placed into GPR RA. This number ranges from 0 to 64, inclusive.
This instruction is defined only for 64-bit implementations. Using it on a 32-bit implementation will cause the system illegal instruction error handler to be invoked.
`, "tooltip": "Count Leading Zeros Double Word", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-cntlzd-count-leading-zeros-double-word-instruction" }; case "CNTLZ": case "CNTLZ.": case "CNTLZW": case "CNTLZW.": return { "html": `The cntlzw and cntlz instructions count the number (0 - 32) of consecutive zero bits of the 32 low-order bits of GPR RS and store the result in the target GPR RA.
`, "tooltip": "Count Leading Zeros Word", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-cntlzw-cntlz-count-leading-zeros-word-instruction" }; case "CRAND": return { "html": `The crand instruction logically ANDs the Condition Register bit specified by BA and the Condition Register bit specified by BB and places the result in the target Condition Register bit specified by BT.
`, "tooltip": "Condition Register AND", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-crand-condition-register-instruction" }; case "CRANDC": return { "html": `The crandc instruction logically ANDs the Condition Register bit specified in BA and the complement of the Condition Register bit specified by BB and places the result in the target Condition Register bit specified by BT.
`, "tooltip": "Condition Register AND with Complement", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-crandc-condition-register-complement-instruction" }; case "CREQV": return { "html": `The creqv instruction logically XORs the Condition Register bit specified in BA and the Condition Register bit specified by BB and places the complemented result in the target Condition Register bit specified by BT.
`, "tooltip": "Condition Register Equivalent", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-creqv-condition-register-equivalent-instruction" }; case "CRNAND": return { "html": `The crnand instruction logically ANDs the Condition Register bit specified by BA and the Condition Register bit specified by BB and places the complemented result in the target Condition Register bit specified by BT.
`, "tooltip": "Condition Register NAND", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-crnand-condition-register-nand-instruction" }; case "CRNOR": return { "html": `The crnor instruction logically ORs the Condition Register bit specified in BA and the Condition Register bit specified by BB and places the complemented result in the target Condition Register bit specified by BT.
`, "tooltip": "Condition Register NOR", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-crnor-condition-register-nor-instruction" }; case "CROR": return { "html": `The cror instruction logically ORs the Condition Register bit specified by BA and the Condition Register bit specified by BB and places the result in the target Condition Register bit specified by BT.
`, "tooltip": "Condition Register OR", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-cror-condition-register-instruction" }; case "CRORC": return { "html": `The crorc instruction logically ORs the Condition Register bit specified by BA and the complement of the Condition Register bit specified by BB and places the result in the target Condition Register bit specified by BT.
`, "tooltip": "Condition Register OR with Complement", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-crorc-condition-register-complement-instruction" }; case "CRXOR": return { "html": `The crxor instruction logically XORs the Condition Register bit specified by BA and the Condition Register bit specified by BB and places the result in the target Condition Register bit specified by BT.
`, "tooltip": "Condition Register XOR", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-crxor-condition-register-xor-instruction" }; case "DCBF": return { "html": `The dcbf instruction calculates an effective address (EA) by adding the contents of general-purpose register (GPR) RA to the contents of GPR RB. If the RA field is 0, EA is the sum of the contents of RB and 0. If the cache block containing the target storage locations is in the data cache, it is copied back to main storage, provided it is different than the main storage copy.
`, "tooltip": "Data Cache Block Flush", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-dcbf-data-cache-block-flush-instruction" }; case "DCBI": return { "html": `If the contents of general-purpose register (GPR) RA is not 0, the dcbi instruction computes an effective address (EA) by adding the contents of GPR RA to the contents of GPR RB. Otherwise, the EA is the content of GPR RB.
`, "tooltip": "Data Cache Block Invalidate", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-dcbi-data-cache-block-invalidate-instruction" }; case "DCBST": return { "html": `The dcbst instruction causes any modified copy of the block to be copied to main memory. If RA is not 0, the dcbst instruction computes an effective address (EA) by adding the contents of general-purpose register (GPR) RA to the contents of GPR RB. Otherwise, the EA is the contents of RB. If the cache block containing the addressed byte is in the data cache and is modified, the block is copied to main memory.
The dcbst instruction may be used to ensure that the copy of a location in main memory contains the most recent updates. This may be important when sharing memory with an I/O device that does not participate in the coherence protocol. In addition, the dcbst instruction can ensure that updates are immediately copied to a graphics frame buffer.
Treat the dcbst instruction as a load from the addressed byte with respect to address translation and protection.
`, "tooltip": "Data Cache Block Store", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-dcbst-data-cache-block-store-instruction" }; case "DCBT": return { "html": `The dcbt instruction may improve performance by anticipating a load from the addressed byte. The block containing the byte addressed by the effective address (EA) is fetched into the data cache before the block is needed by the program. The program can later perform loads from the block and may not experience the added delay caused by fetching the block into the cache. Executing the dcbt instruction does not invoke the system error handler.
If general-purpose register (GPR) RA is not 0, the effective address (EA) is the sum of the content of GPR RA and the content of GPR RB. Otherwise, the EA is the content of GPR RB.
`, "tooltip": "Data Cache Block Touch", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-dcbt-data-cache-block-touch-instruction" }; case "DCBTST": return { "html": `The dcbtst instruction improves performance by anticipating a store to the addressed byte. The block containing the byte addressed by the effective address (EA) is fetched into the data cache before the block is needed by the program. The program can later perform stores to the block and may not experience the added delay caused by fetching the block into the cache. Executing the dcbtst instruction does not invoke the system error handler.
The dcbtst instruction calculates an effective address (EA) by adding the contents of general-purpose register (GPR) RA to the contents of GPR RB. If the RA field is 0, EA is the sum of the contents of RB and 0.
`, "tooltip": "Data Cache Block Touch for Store", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-dcbtst-data-cache-block-touch-store-instruction" }; case "DCBZ": case "DCLZ": return { "html": `The dcbz and dclz instructions work with data cache blocks and data cache lines respectively. If RA is not 0, the dcbz and dclz instructions compute an effective address (EA) by adding the contents of general-purpose register (GPR) RA to the contents of GPR RB. If GPR RA is 0, the EA is the contents of GPR RB.
`, "tooltip": "Data Cache Block Set to Zero", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=is-dcbz-dclz-data-cache-block-set-zero-instruction" }; case "DCLST": return { "html": `The dclst instruction adds the contents of general-purpose register (GPR) RA to the contents of GPR RB. It then stores the sum in RA as the effective address (EA) if RA is not 0 and the instruction does not cause a Data Storage interrupt.
`, "tooltip": "Data Cache Line Store", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-dclst-data-cache-line-store-instruction" }; case "DIV": case "DIV.": case "DIVO": case "DIVO.": return { "html": `The div instruction concatenates the contents of general-purpose register (GPR) RA and the contents of Multiply Quotient (MQ) Register, divides the result by the contents of GPR RB, and stores the result in the target GPR RT. The remainder has the same sign as the dividend, except that a zero quotient or a zero remainder is always positive. The results obey the equation:
dividend = (divisor x quotient) + remainder
where a dividend is the original (RA) || (MQ), divisor is the original (RB), quotient is the final (RT), and remainder is the final (MQ).
For the case of -2**31 P -1, the MQ Register is set to 0 and -2**31 is placed in GPR RT. For all other overflows, the contents of MQ, the target GPR RT, and the Condition Register Field 0 (if the Record Bit (Rc) is 1) are undefined.
`, "tooltip": "Divide", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-div-divide-instruction" }; case "DIVD": case "DIVD.": case "DIVDO": case "DIVDO.": return { "html": `The 64-bit dividend is the contents of RA. The 64-bit divisor is the contents of RB. The 64- bit quotient is placed into RT. The remainder is not supplied as a result.
Both the operands and the quotient are interpreted as signed integers. The quotient is the unique signed integer that satisfies the equation-dividend = (quotient * divisor) + r, where 0 <= r < |divisor| if the dividend is non-negative, and -|divisor| < r <=0 if the dividend is negative.
If an attempt is made to perform the divisions 0x8000_0000_0000_0000 / -1 or / 0, the contents of RT are undefined, as are the contents of the LT, GT, and EQ bits of the condition register 0 field (if the record bit (Rc) = 1 (the divd. or divdo. instructions)). In this case, if overflow enable (OE) = 1 then the overflow bit (OV) is set.
`, "tooltip": "Divide Double Word", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-divd-divide-double-word-instruction" }; case "DIVDU": case "DIVDU.": case "DIVDUO": case "DIVDUO.": return { "html": `The 64-bit dividend is the contents of RA. The 64-bit divisor is the contents of RB. The 64- bit quotient is placed into RT. The remainder is not supplied as a result.
Both the operands and the quotient are interpreted as unsigned integers, except that if the record bit (Rc) is set to 1 the first three bits of th condition register 0 (CR0) field are set by signed comparison of the result to zero. The quotient is the unique unsigned integer that satisfies the equation: dividend = (quotient * divisor) + r, where 0 <= r < divisor.
If an attempt is made to perform the division (anything) / 0 the contents of RT are undefined, as are the contents of the LT, GT, and EQ bits of the CR0 field (if Rc = 1). In this case, if the overflow enable bit (OE) = 1 then the overflow bit (OV) is set.
`, "tooltip": "Divide Double Word Unsigned", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-divdu-divide-double-word-unsigned-instruction" }; case "DIVS": case "DIVS.": case "DIVSO": case "DIVSO.": return { "html": `The divs instruction divides the contents of general-purpose register (GPR) RA by the contents of GPR RB and stores the result in the target GPR RT. The remainder has the same sign as the dividend, except that a zero quotient or a zero remainder is always positive. The results obey the equation:
dividend = (divisor x quotient) + remainder
where a dividend is the original (RA), divisor is the original (RB), quotient is the final (RT), and remainder is the final (MQ).
For the case of -2**31 P -1, the MQ Register is set to 0 and -2**31 is placed in GPR RT. For all other overflows, the contents of MQ, the target GPR RT and the Condition Register Field 0 (if the Record Bit (Rc) is 1) are undefined.
`, "tooltip": "Divide Short", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-divs-divide-short-instruction" }; case "DIVW": case "DIVW.": case "DIVWO": case "DIVWO.": return { "html": `The divw instruction divides the contents of general-purpose register (GPR) RA by the contents of GPR RB, and stores the result in the target GPR RT. The dividend, divisor, and quotient are interpreted as signed integers.
For the case of -2**31 / -1, and all other cases that cause overflow, the content of GPR RT is undefined.
`, "tooltip": "Divide Word", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-divw-divide-word-instruction" }; case "DIVWU": case "DIVWU.": case "DIVWUO": case "DIVWUO.": return { "html": `The divwu instruction divides the contents of general-purpose register (GPR) RA by the contents of GPR RB, and stores the result in the target GPR RT. The dividend, divisor, and quotient are interpreted as unsigned integers.
For the case of division by 0, the content of GPR RT is undefined.
Note: Although the operation treats the result as an unsigned integer, if Rc is 1, the Less Than (LT) zero, Greater Than (GT) zero, and Equal To (EQ) zero bits of Condition Register Field 0 are set as if the result were interpreted as a signed integer.`, "tooltip": "Divide Word Unsigned", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-divwu-divide-word-unsigned-instruction" }; case "DOZ": case "DOZ.": case "DOZO": case "DOZO.": return { "html": `
The doz instruction adds the complement of the contents of general-purpose register (GPR) RA, 1, and the contents of GPR RB, and stores the result in the target GPR RT.
If the value in GPR RA is algebraically greater than the value in GPR RB, then GPR RT is set to 0.
`, "tooltip": "Difference or Zero", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-doz-difference-zero-instruction" }; case "DOZI": return { "html": `The dozi instruction adds the complement of the contents of general-purpose register (GPR) RA, the 16-bit signed integer SI, and 1 and stores the result in the target GPR RT.
If the value in GPR RA is algebraically greater than the 16-bit signed value in the SI field, then GPR RT is set to 0.
`, "tooltip": "Difference or Zero Immediate", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-dozi-difference-zero-immediate-instruction" }; case "ECIWX": return { "html": `The eciwx instruction translates EA to a real address, sends the real address to a controller, and places the word returned by the controller in general-purpose register RT. If RA = 0, the EA is the content of RB, otherwise EA is the sum of the content of RA plus the content of RB.
If EAR(E) = 1, a load request for the real address corresponding to EA is sent to the controller identified by EAR(RID), bypassing the cache. The word returned by the controller is placed in RT.
`, "tooltip": "External Control In Word Indexed", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-eciwx-external-control-in-word-indexed-instruction" }; case "ECOWX": return { "html": `The ecowx instruction translates EA to a real address and sends the real address and the content of general-purpose register RS to a controller. If RA = 0, the EA is the content of RB, otherwise EA is the sum of the content of RA plus the content of RB.
If EAR(E) = 1, a store request for the real address corresponding to EA is sent to the controller identified by EAR(RID), bypassing the cache. The content of RS is sent with the store request.
`, "tooltip": "External Control Out Word Indexed", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-ecowx-external-control-out-word-indexed-instruction" }; case "EIEIO": return { "html": `The eieio instruction provides an ordering function that ensures that all load and store instructions initiated prior to the eieio instruction complete in main memory before any loads or stores subsequent to the eieio instruction access memory. If the eieio instruction is omitted from a program, and the memory locations are unique, the accesses to main storage may be performed in any order.
`, "tooltip": "Enforce In-Order Execution of I/O", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-eieio-enforce-in-order-execution-io-instruction" }; case "EXTSW": case "EXTSW.": return { "html": `The contents of the low-order 32 bits of general purpose register (GPR) RS are placed into the low-order 32 bits of GPR RA. Bit 32 of GPR RS is used to fill the high-order 32 bits of GPR RA.
`, "tooltip": "Extend Sign Word", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-extsw-extend-sign-word-instruction" }; case "EQV": case "EQV.": return { "html": `The eqv instruction logically XORs the contents of general-purpose register (GPR) RS with the contents of GPR RB and stores the complemented result in the target GPR RA.
`, "tooltip": "Equivalent", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-eqv-equivalent-instruction" }; case "EXTSB": case "EXTSB.": return { "html": `The extsb instruction places bits 24-31 of general-purpose register (GPR) RS into bits 24-31 of GPR RA and copies bit 24 of register RS in bits 0-23 of register RA.
`, "tooltip": "Extend Sign Byte", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-extsb-extend-sign-byte-instruction" }; case "EXTS": case "EXTS.": case "EXTSH": case "EXTSH.": return { "html": `The extsh and exts instructions place bits 16-31 of general-purpose register (GPR) RS into bits 16-31 of GPR RA and copy bit 16 of GPR RS in bits 0-15 of GPR RA.
`, "tooltip": "Extend Sign Halfword", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-extsh-exts-extend-sign-halfword-instruction" }; case "FABS": case "FABS.": return { "html": `The fabs instruction sets bit 0 of floating-point register (FPR) FRB to 0 and places the result into FPR FRT.
`, "tooltip": "Floating Absolute Value", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-fabs-floating-absolute-value-instruction" }; case "FA": case "FA.": case "FADD": case "FADD.": case "FADDS": case "FADDS.": return { "html": `The fadd and fa instructions add the 64-bit, double-precision floating-point operand in floating-point register (FPR) FRA to the 64-bit, double-precision floating-point operand in FPR FRB.
The fadds instruction adds the 32-bit single-precision floating-point operand in FPR FRA to the 32-bit single-precision floating-point operand in FPR FRB.
The result is rounded under control of the Floating-Point Rounding Control Field RN of the Floating-Point Status and Control Register and is placed in FPR FRT.
Addition of two floating-point numbers is based on exponent comparison and addition of the two significands. The exponents of the two operands are compared, and the significand accompanying the smaller exponent is shifted right, with its exponent increased by one for each bit shifted, until the two exponents are equal. The two significands are then added algebraically to form the intermediate sum. All 53 bits in the significand as well as all three guard bits (G, R and X) enter into the computation.
The Floating-Point Result Field of the Floating-Point Status and Control Register is set to the class and sign of the result except for Invalid Operation exceptions when the Floating-Point Invalid Operation Exception Enable (VE) bit of the Floating-Point Status and Control Register is set to 1.
`, "tooltip": "Floating Add", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-fadd-fa-floating-add-instruction" }; case "FCFID": case "FCFID.": return { "html": `The 64-bit signed fixed-point operand in floating-point register (FPR) FRB is converted to an infinitely precise floating-point integer. The result of the conversion is rounded to double-precision using the rounding mode specified by FPSCR[RN] and placed into FPR FRT.
FPSCR[FPRF] is set to the class and sign of the result. FPSCR[FR] is set if the result is incremented when rounded. FPSCR[FI] is set if the result is inexact.
`, "tooltip": "Floating Convert from Integer Double Word", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=is-fcfid-floating-convert-from-integer-double-word-instruction" }; case "FCMPO": return { "html": `The fcmpo instruction compares the 64-bit, double-precision floating-point operand in floating-point register (FPR) FRA to the 64-bit, double-precision floating-point operand in FPR FRB. The Floating-Point Condition Code Field (FPCC) of the Floating-Point Status and Control Register (FPSCR) is set to reflect the value of the operand FPR FRA with respect to operand FPR FRB. The value BF determines which field in the condition register receives the four FPCC bits.
`, "tooltip": "Floating Compare Ordered", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-fcmpo-floating-compare-ordered-instruction" }; case "FCMPU": return { "html": `The fcmpu instruction compares the 64-bit double precision floating-point operand in floating-point register (FPR) FRA to the 64-bit double precision floating-point operand in FPR FRB. The Floating-Point Condition Code Field (FPCC) of the Floating-Point Status and Control Register (FPSCR) is set to reflect the value of the operand FRA with respect to operand FRB. The value BF determines which field in the condition register receives the four FPCC bits.
`, "tooltip": "Floating Compare Unordered", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-fcmpu-floating-compare-unordered-instruction" }; case "FCTID": case "FCTID.": return { "html": `The floating-point operand in floating-point register (FPR) FRB is converted to a 64-bit signed fixed-point integer, using the rounding mode specified by FPSCR[RN], and placed into FPR FRT.
If the operand in FRB is greater than 2**63 - 1, then FPR FRT is set to 0x7FFF_FFFF_FFFF_FFFF. If the operand in FRB is less than 2**63 , then FPR FRT is set to 0x8000_0000_0000_0000.
Except for enabled invalid operation exceptions, FPSCR[FPRF] is undefined. FPSCR[FR] is set if the result is incremented when rounded. FPSCR[FI] is set if the result is inexact.
`, "tooltip": "Floating Convert to Integer Double Word", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-fctid-floating-convert-integer-double-word-instruction" }; case "FCTIDZ": case "FCTIDZ.": return { "html": `The floating-point operand in floating-point register (FRP) FRB is converted to a 64-bit signed fixed-point integer, using the rounding mode round toward zero, and placed into FPR FRT.
If the operand in FPR FRB is greater than 2**63 - 1, then FPR FRT is set to 0x7FFF_FFFF_FFFF_FFFF. If the operand in frB is less than 2**63 , then FPR FRT is set to 0x8000_0000_0000_0000.
Except for enabled invalid operation exceptions, FPSCR[FPRF] is undefined. FPSCR[FR] is set if the result is incremented when rounded. FPSCR[FI] is set if the result is inexact.
`, "tooltip": "Floating Convert to Integer Double Word with Round Toward Zero", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=is-fctidz-floating-convert-integer-double-word-round-toward-zero-instruction" }; case "FCIR": case "FCIR.": case "FCTIW": case "FCTIW.": return { "html": `The fctiw and fcir instructions convert the floating-point operand in floating-point register (FPR) FRB to a 32-bit signed, fixed-point integer, using the rounding mode specified by Floating-Point Status and Control Register (FPSCR) RN. The result is placed in bits 32-63 of FPR FRT. Bits 0-31 of FPR FRT are undefined.
If the operand in FPR FRB is greater than 231 - 1, then the bits 32-63 of FPR FRT are set to 0x7FFF FFFF. If the operand in FPR FRB is less than -231, then the bits 32-63 of FPR FRT are set to 0x8000 0000.
`, "tooltip": "Floating Convert to Integer Word", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-fctiw-fcir-floating-convert-integer-word-instruction" }; case "FCIRZ": case "FCIRZ.": case "FCTIWZ": case "FCTIWZ.": return { "html": `The fctiwz and fcirz instructions convert the floating-point operand in floating-point register (FPR) FRB to a 32-bit, signed, fixed-point integer, rounding the operand toward 0. The result is placed in bits 32-63 of FPR FRT. Bits 0-31 of FPR FRT are undefined.
If the operand in FPR FRB is greater than 231 - 1, then the bits 32-63 of FPR FRT are set to 0x7FFF FFFF. If the operand in FPR FRB is less than -231, then the bits 32-63 of FPR FRT are set to 0x8000 0000.
`, "tooltip": "Floating Convert to Integer Word with Round to Zero", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=is-fctiwz-fcirz-floating-convert-integer-word-round-zero-instruction" }; case "FD": case "FD.": case "FDIV": case "FDIV.": case "FDIVS": case "FDIVS.": return { "html": `The fdiv and fd instructions divide the 64-bit, double-precision floating-point operand in floating-point register (FPR) FRA by the 64-bit, double-precision floating-point operand in FPR FRB. No remainder is preserved.
The fdivs instruction divides the 32-bit single-precision floating-point operand in FPR FRA by the 32-bit single-precision floating-point operand in FPR FRB. No remainder is preserved.
The result is rounded under control of the Floating-Point Rounding Control Field RN of the Floating-Point Status and Control Register (FPSCR), and is placed in the target FPR FRT.
The floating-point division operation is based on exponent subtraction and division of the two significands.
Note: If an operand is a denormalized number, then it is prenormalized before the operation is begun.
The Floating-Point Result Flags Field of the Floating-Point Status and Control Register is set to the class and sign of the result, except for Invalid Operation Exceptions, when the Floating-Point Invalid Operation Exception Enable bit is 1.
`, "tooltip": "Floating Divide", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-fdiv-fd-floating-divide-instruction" }; case "FMA": case "FMA.": case "FMADD": case "FMADD.": case "FMADDS": case "FMADDS.": return { "html": `The fmadd and fma instructions multiply the 64-bit, double-precision floating-point operand in floating-point register (FPR) FRA by the 64-bit, double-precision floating-point operand in FPR FRC, and then add the result of this operation to the 64-bit, double-precision floating-point operand in FPR FRB.
The fmadds instruction multiplies the 32-bit, single-precision floating-point operand in FPR FRA by the 32-bit, single-precision floating-point operand in FPR FRC and adds the result of this operation to the 32-bit, single-precision floating-point operand in FPR FRB.
The result is rounded under control of the Floating-Point Rounding Control Field RN of the Floating-Point Status and Control Register and is placed in the target FPR FRT.
Note: If an operand is a denormalized number, then it is prenormalized before the operation is begun.
The Floating-Point Result Flags Field of the Floating-Point Status and Control Register is set to the class and sign of the result, except for Invalid Operation Exceptions, when the Floating-Point Invalid Operation Exception Enable bit is 1.
`, "tooltip": "Floating Multiply-Add", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-fmadd-fma-floating-multiply-add-instruction" }; case "FMR": case "FMR.": return { "html": `The fmr instruction places the contents of floating-point register (FPR) FRB into the target FPR FRT.
`, "tooltip": "Floating Move Register", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-fmr-floating-move-register-instruction" }; case "FMS": case "FMS.": case "FMSUB": case "FMSUB.": case "FMSUBS": case "FMSUBS.": return { "html": `The fmsub and fms instructions multiply the 64-bit, double-precision floating-point operand in floating-point register (FPR) FRA by the 64-bit, double-precision floating-point operand in FPR FRC and subtract the 64-bit, double-precision floating-point operand in FPR FRB from the result of the multiplication.
The fmsubs instruction multiplies the 32-bit, single-precision floating-point operand in FPR FRA by the 32-bit, single-precision floating-point operand in FPR FRC and subtracts the 32-bit, single-precision floating-point operand in FPR FRB from the result of the multiplication.
The result is rounded under control of the Floating-Point Rounding Control Field RN of the Floating-Point Status and Control Register and is placed in the target FPR FRT.
Note: If an operand is a denormalized number, then it is prenormalized before the operation is begun.
The Floating-Point Result Flags Field of the Floating-Point Status and Control Register is set to the class and sign of the result, except for Invalid Operation Exceptions, when the Floating-Point Invalid Operation Exception Enable bit is 1.
`, "tooltip": "Floating Multiply-Subtract", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-fmsub-fms-floating-multiply-subtract-instruction" }; case "FM": case "FM.": case "FMUL": case "FMUL.": case "FMULS": case "FMULS.": return { "html": `The fmul and fm instructions multiply the 64-bit, double-precision floating-point operand in floating-point register (FPR) FRA by the 64-bit, double-precision floating-point operand in FPR FRC.
The fmuls instruction multiplies the 32-bit, single-precision floating-point operand in FPR FRA by the 32-bit, single-precision floating-point operand in FPR FRC.
The result is rounded under control of the Floating-Point Rounding Control Field RN of the Floating-Point Status and Control Register and is placed in the target FPR FRT.
Multiplication of two floating-point numbers is based on exponent addition and multiplication of the two significands.
Note: If an operand is a denormalized number, then it is prenormalized before the operation is begun.
The Floating-Point Result Flags Field of the Floating-Point Status and Control Register is set to the class and sign of the result, except for Invalid Operation Exceptions, when the Floating-Point Invalid Operation Exception Enable bit is 1.
`, "tooltip": "Floating Multiply", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-fmul-fm-floating-multiply-instruction" }; case "FNABS": case "FNABS.": return { "html": `The fnabs instruction places the negative absolute of the contents of floating-point register (FPR) FRB with bit 0 set to 1 into the target FPR FRT.
`, "tooltip": "Floating Negative Absolute Value", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-fnabs-floating-negative-absolute-value-instruction" }; case "FNEG": case "FNEG.": return { "html": `The fneg instruction places the negated contents of floating-point register FRB into the target FPR FRT.
`, "tooltip": "Floating Negate", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-fneg-floating-negate-instruction" }; case "FNMA": case "FNMA.": case "FNMADD": case "FNMADD.": case "FNMADDS": case "FNMADDS.": return { "html": `The fnmadd and fnma instructions multiply the 64-bit, double-precision floating-point operand in floating-point register (FPR) FRA by the 64,bit, double-precision floating-point operand in FPR FRC, and add the 64-bit, double-precision floating-point operand in FPR FRB to the result of the multiplication.
The fnmadds instruction multiplies the 32-bit, single-precision floating-point operand in FPR FRA by the 32-bit, single-precision floating-point operand in FPR FRC, and adds the 32-bit, single-precision floating-point operand in FPR FRB to the result of the multiplication.
`, "tooltip": "Floating Negative Multiply-Add", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-fnmadd-fnma-floating-negative-multiply-add-instruction" }; case "FNMS": case "FNMS.": case "FNMSUB": case "FNMSUB.": case "FNMSUBS": case "FNMSUBS.": return { "html": `The fnms and fnmsub instructions multiply the 64-bit, double-precision floating-point operand in floating-point register (FPR) FRA by the 64,-bit double-precision floating-point operand in FPR FRC, subtract the 64-bit, double-precision floating-point operand in FPR FRB from the result of the multiplication, and place the negated result in the target FPR FRT.
The fnmsubs instruction multiplies the 32-bit, single-precision floating-point operand in FPR FRA by the 32-bit, single-precision floating-point operand in FPR FRC, subtracts the 32-bit, single-precision floating-point operand in FPR FRB from the result of the multiplication, and places the negated result in the target FPR FRT.
`, "tooltip": "Floating Negative Multiply-Subtract", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-fnmsub-fnms-floating-negative-multiply-subtract-instruction" }; case "FRES": case "FRES.": return { "html": `The fres instruction calculates a single-precision estimate of the reciprocal of the 64-bit, double-precision floating-point operand in floating-point register (FPR) FRB and places the result in FPR FRT.
The estimate placed into register FRT is correct to a precision of one part in 256 of the reciprocal of FRB. The value placed into FRT may vary between implementations, and between different executions on the same implementation.
`, "tooltip": "Floating Reciprocal Estimate Single", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-fres-floating-reciprocal-estimate-single-instruction" }; case "FRSP": case "FRSP.": return { "html": `The frsp instruction rounds the 64-bit, double-precision floating-point operand in floating-point register (FPR) FRB to single precision, using the rounding mode specified by the Floating Rounding Control field of the Floating-Point Status and Control Register, and places the result in the target FPR FRT.
The Floating-Point Result Flags Field of the Floating-Point Status and Control Register is set to the class and sign of the result, except for Invalid Operation (SNaN), when Floating-Point Status and Control Register Floating-Point Invalid Operation Exception Enable bit is 1.
`, "tooltip": "Floating Round to Single Precision", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-frsp-floating-round-single-precision-instruction" }; case "FRSQRTE": case "FRSQRTE.": return { "html": `The frsqrte instruction computes a double-precision estimate of the reciprocal of the square root of the 64-bit, double-precision floating-point operand in floating-point register (FPR) FRB and places the result in FPR FRT.
The estimate placed into register FRT is correct to a precision of one part in 32 of the reciprocal of the square root of FRB. The value placed in FRT may vary between implementations and between different executions on the same implementation.
`, "tooltip": "Floating Reciprocal Square Root Estimate", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-frsqrte-floating-reciprocal-square-root-estimate-instruction" }; case "FSEL": case "FSEL.": return { "html": `The double-precision floating-point operand in floating-point register (FPR) FRA is compared with the value zero. If the value in FRA is greater than or equal to zero, floating point register FRT is set to the contents of floating-point register FRC. If the value in FRA is less than zero or is a NaN, floating point register FRT is set to the contents of floating-point register FRB.The comparison ignores the sign of zero; both +0 and -0 are equal to zero.
`, "tooltip": "Floating-Point Select", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-fsel-floating-point-select-instruction" }; case "FSQRT": case "FSQRT.": return { "html": `The square root of the operand in floating-point register (FPR) FRB is placed into register FPR FRT.
If the most-significant bit of the resultant significand is not a one the result is normalized. The result is rounded to the target precision under control of the floating-point rounding control field RN of the FPSCR and placed into register FPR FRT.
`, "tooltip": "Floating Square Root Double-Precision", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-fsqrt-floating-square-root-double-precision-instruction" }; case "FSQRTS": case "FSQRTS.": return { "html": `The square root of the floating-point operand in floating-point register (FPR) FRB is placed into register FPR FRT.
If the most-significant bit of the resultant significand is not a one the result is normalized. The result is rounded to the target precision under control of the floating-point rounding control field RN of the FPSCR and placed into register FPR FRT.
`, "tooltip": "Floating Square Root Single", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-fsqrts-floating-square-root-single-instruction" }; case "FS": case "FS.": case "FSUB": case "FSUB.": case "FSUBS": case "FSUBS.": return { "html": `The fsub and fs instructions subtract the 64-bit, double-precision floating-point operand in floating-point register (FPR) FRB from the 64-bit, double-precision floating-point operand in FPR FRA.
The fsubs instruction subtracts the 32-bit single-precision floating-point operand in FPR FRB from the 32-bit single-precision floating-point operand in FPR FRA.
The result is rounded under control of the Floating-Point Rounding Control Field RN of the Floating-Point Status and Control Register and is placed in the target FPR FRT.
The execution of the fsub instruction is identical to that of fadd, except that the contents of FPR FRB participate in the operation with bit 0 inverted.
The execution of the fs instruction is identical to that of fa, except that the contents of FPR FRB participate in the operation with bit 0 inverted.
The Floating-Point Result Flags Field of the Floating-Point Status and Control Register is set to the class and sign of the result, except for Invalid Operation Exceptions, when the Floating-Point Invalid Operation Exception Enable bit is 1.
`, "tooltip": "Floating Subtract", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-fsqrts-floating-square-root-single-instruction" }; case "ICBI": return { "html": `The icbi instruction invalidates a block containing the byte addressed in the instruction cache. If RA is not 0, the icbi instruction calculates an effective address (EA) by adding the contents of general-purpose register (GPR) RA to the contents of GPR RB.
`, "tooltip": "Instruction Cache Block Invalidate", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-icbi-instruction-cache-block-invalidate-instruction" }; case "ICS": case "ISYNC": return { "html": `The isync and ics instructions cause the processor to refetch any instructions that might have been fetched prior to the isync or ics instruction.
The PowerPC® instruction isync causes the processor to wait for all previous instructions to complete. Then any instructions already fetched are discarded and instruction processing continues in the environment established by the previous instructions.
The POWER® family instruction ics causes the processor to wait for any previous dcs instructions to complete. Then any instructions already fetched are discarded and instruction processing continues under the conditions established by the content of the Machine State Register.
`, "tooltip": "Instruction Synchronize", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-isync-ics-instruction-synchronize-instruction" }; case "LBZ": return { "html": `The lbz instruction loads a byte in storage addressed by the effective address (EA) into bits 24-31 of the target general-purpose register (GPR) RT and sets bits 0-23 of GPR RT to 0.
If RA is not 0, the EA is the sum of the contents of GPR RA and D, a 16-bit, signed two's complement integer sign-extended to 32 bits. If RA is 0, then the EA is D.
`, "tooltip": "Load Byte and Zero", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-lbz-load-byte-zero-instruction" }; case "LBZU": return { "html": `The lbzu instruction loads a byte in storage addressed by the effective address (EA) into bits 24-31 of the target general-purpose register (GPR) RT and sets bits 0-23 of GPR RT to 0.
If RA is not 0, the EA is the sum of the contents of GPR RA and D, a 16-bit signed two's complement integer sign extended to 32 bits. If RA is 0, then the EA is D.
If RA does not equal RT and RA does not equal 0, and the storage access does not cause an Alignment interrupt or a Data Storage interrupt, then the EA is stored in GPR RA.
`, "tooltip": "Load Byte and Zero with Update", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-lbzu-load-byte-zero-update-instruction" }; case "LBZUX": return { "html": `The lbzux instruction loads a byte in storage addressed by the effective address (EA) into bits 24-31 of the target general-purpose register (GPR) RT and sets bits 0-23 of GPR RT to 0.
If RA is not 0, the EA is the sum of the contents of GPR RA and GPR RB. If RA is 0, then the EA is the contents of RB.
If RA does not equal RT and RA does not equal 0, and the storage access does not cause an Alignment interrupt or a Data Storage interrupt, then the EA is stored in GPR RA.
`, "tooltip": "Load Byte and Zero with Update Indexed", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-lbzux-load-byte-zero-update-indexed-instruction" }; case "LBZX": return { "html": `The lbzx instruction loads a byte in storage addressed by the effective address (EA) into bits 24-31 of the target general-purpose register (GPR) RT and sets bits 0-23 of GPR RT to 0.
If RA is not 0, the EA is the sum of the contents of GPR RA and GPR RB. If RA is 0, then the EA is D.
`, "tooltip": "Load Byte and Zero Indexed", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-lbzx-load-byte-zero-indexed-instruction" }; case "LD": return { "html": `The ld instruction loads a doubleword in storage from a specified location in memory addressed by the effective address (EA) into the target general-purpose register (GPR) RT.
DS is a 14-bit, signed two's complement number, which is sign-extended to 64 bits, and then multiplied by 4 to provide a displacement Disp. If GPR RA is not 0, the EA is the sum of the contents of GPR RA and Disp. If GPR RA is 0, then the EA is Disp.
`, "tooltip": "Load Doubleword", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-ld-load-doubleword-instruction" }; case "LDARX": return { "html": `The ldarx and stdcx (Store Doubleword Conditional Indexed) instructions are used to perform a read-modify-write operation to storage. If the store operation is performed, the use of the ldarx and stdcx instructions ensures that no other processor or mechanism changes the target memory location between the time the ldarx instruction is run and the time the stdcx instruction is completed.
If general-purpose register (GPR) RA equals 0, the effective address (EA) is the content of GPR RB. Otherwise, the EA is the sum of the content of GPR RA plus the content of GPR RB.
The ldarx instruction loads the word from the location in storage that is specified by the EA into the target GPR RT. In addition, a reservation on the memory location is created for use by a subsequent stwcx. instruction.
`, "tooltip": "Load Doubleword Reserve Indexed", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-ldarx-load-doubleword-reserve-indexed-instruction" }; case "LDU": return { "html": `The ldu instruction loads a doubleword in storage from a specified location in memory that is addressed by the effective address (EA) into the target GPR RT.
DS is a 14-bit, signed two's complement number, which is sign-extended to 64 bits, and then multiplied by 4 to provide a displacement (Disp). If GPR RA is not 0, the EA is the sum of the contents of GPR RA and Disp.
If RA equals 0 or RA equals RT, the instruction form is invalid.
`, "tooltip": "Load Doubleword with Update", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-ldu-load-doubleword-update-instruction" }; case "LDUX": return { "html": `The effective address (EA) is calculated from the sum of the GPR, RA and RB. A doubleword of data is read from the memory location that is referenced by the EA and placed into GPR RT. GPR RA is updated with the EA.
If RA equals 0 or RA equals RD, the instruction form is invalid.
`, "tooltip": "Load Doubleword with Update Indexed", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-ldux-load-doubleword-update-indexed-instruction" }; case "LDX": return { "html": `The ldx instruction loads a doubleword from the specified memory location that is referenced by the effective address (EA) into the GPR RT.
If GRP RA is not 0, the effective address (EA) is the sum of the contents of GRPs, RA and RB. Otherwise, the EA is equal to the contents of RB.
`, "tooltip": "Load Doubleword Indexed", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-ldx-load-doubleword-indexed-instruction" }; case "LFD": return { "html": `The lfd instruction loads a doubleword in storage from a specified location in memory addressed by the effective address (EA) into the target floating-point register (FPR) FRT.
If general-purpose register (GPR) RA is not 0, the EA is the sum of the contents of GPR RA and D, a 16-bit, signed two's complement integer sign-extended to 32 bits. If GPR RA is 0, then the EA is D.
`, "tooltip": "Load Floating-Point Double", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-lfd-load-floating-point-double-instruction" }; case "LFDU": return { "html": `The lfdu instruction loads a doubleword in storage from a specified location in memory addressed by the effective address (EA) into the target floating-point register (FPR) FRT.
If RA is not 0, the EA is the sum of the contents of GPR RA and D, a 16-bit, signed two's complement integer sign-extended to 32 bits. If RA is 0, then the effective address (EA) is D.
If RA does not equal 0, and the storage access does not cause an Alignment interrupt or a Data Storage interrupt, then the effective address is stored in GPR RA.
`, "tooltip": "Load Floating-Point Double with Update", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-lfdu-load-floating-point-double-update-instruction" }; case "LFDUX": return { "html": `The lfdux instruction loads a doubleword in storage from a specified location in memory addressed by the effective address (EA) into the target floating-point register (FPR) FRT.
If RA is not 0, the EA is the sum of the contents of general-purpose register (GPR) RA and GPR RB. If RA is 0, then the EA is the contents of RB.
If RA does not equal 0, and the storage access does not cause an Alignment interrupt or a Data Storage interrupt, then the EA is stored in GPR RA.
`, "tooltip": "Load Floating-Point Double with Update Indexed", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=is-lfdux-load-floating-point-double-update-indexed-instruction" }; case "LFDX": return { "html": `The lfdx instruction loads a doubleword in storage from a specified location in memory addressed by the effective address (EA) into the target floating-point register (FPR) FRT.
If RA is not 0, the EA is the sum of the contents of general-purpose register (GPR) RA and GPR RB. If RA is 0, then the EA is the contents of GPR RB.
`, "tooltip": "Load Floating-Point Double-Indexed", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-lfdx-load-floating-point-double-indexed-instruction" }; case "LFQ": return { "html": `The lfq instruction loads the two doublewords from the location in memory specified by the effective address (EA) into two floating-point registers (FPR).
DS is sign-extended to 30 bits and concatenated on the right with b'00' to form the offset value. If general-purpose register (GPR) RA is 0, the offset value is the EA. If GPR RA is not 0, the offset value is added to GPR RA to generate the EA. The doubleword at the EA is loaded into FPR FRT. If FRT is 31, the doubleword at EA+8 is loaded into FPR 0; otherwise, it is loaded into FRT+1.
`, "tooltip": "Load Floating-Point Quad", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-lfq-load-floating-point-quad-instruction" }; case "LFQU": return { "html": `The lfqu instruction loads the two doublewords from the location in memory specified by the effective address (EA) into two floating-point registers (FPR).
DS is sign-extended to 30 bits and concatenated on the right with b'00' to form the offset value. If general-purpose register GPR RA is 0, the offset value is the EA. If GPR RA is not 0, the offset value is added to GPR RA to generate the EA. The doubleword at the EA is loaded into FPR FRT. If FRT is 31, the doubleword at EA+8 is loaded into FPR 0; otherwise, it is loaded into FRT+1.
If GPR RA is not 0, the EA is placed into GPR RA.
`, "tooltip": "Load Floating-Point Quad with Update", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-lfqu-load-floating-point-quad-update-instruction" }; case "LFQUX": return { "html": `The lfqux instruction loads the two doublewords from the location in memory specified by the effective address (EA) into two floating-point registers (FPR).
If general-purpose register (GPR) RA is not 0, the EA is the sum of the contents of GPR RA and GPR RB. If GPR RA is 0, the EA is the contents of GPR RB. The doubleword at the EA is loaded into FPR FRT. If FRT is 31, the doubleword at EA+8 is loaded into FPR 0; otherwise, it is loaded into FRT+1.
If GPR RA is not 0, the EA is placed into GPR RA.
`, "tooltip": "Load Floating-Point Quad with Update Indexed", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=is-lfqux-load-floating-point-quad-update-indexed-instruction" }; case "LFQX": return { "html": `The lfqx instruction loads the two doublewords from the location in memory specified by the effective address (EA) into two floating-point registers (FPR).
If general-purpose register (GPR) RA is not 0, the EA is the sum of the contents of GPR RA and GPR RB. If GPR RA is 0, the EA is the contents of GPR RB. The doubleword at the EA is loaded into FPR FRT. If FRT is 31, the doubleword at EA+8 is loaded into FPR 0; otherwise, it is loaded into FRT+1.
`, "tooltip": "Load Floating-Point Quad Indexed", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-lfqx-load-floating-point-quad-indexed-instruction" }; case "LFS": return { "html": `The lfs instruction converts a floating-point, single-precision word in storage addressed by the effective address (EA) to a floating-point, double-precision word and loads the result into floating-point register (FPR) FRT.
If RA is not 0, the EA is the sum of the contents of GPR RA and D, a 16-bit, signed two's complement integer sign-extended to 32 bits. If RA is 0, then the EA is D.
`, "tooltip": "Load Floating-Point Single", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-lfs-load-floating-point-single-instruction" }; case "LFSU": return { "html": `The lfsu instruction converts a floating-point, single-precision word in storage addressed by the effective address (EA) to floating-point, double-precision word and loads the result into floating-point register (FPR) FRT.
If RA is not 0, the EA is the sum of the contents of general-purpose register (GPR) RA and D, a 16-bit signed two's complement integer sign extended to 32 bits. If RA is 0, then the EA is D.
If RA does not equal 0 and the storage access does not cause an Alignment interrupt or a Data Storage interrupt, then the EA is stored in GPR RA.
`, "tooltip": "Load Floating-Point Single with Update", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-lfsu-load-floating-point-single-update-instruction" }; case "LFSUX": return { "html": `The lfsux instruction converts a floating-point, single-precision word in storage addressed by the effective address (EA) to floating-point, double-precision word and loads the result into floating-point register (FPR) FRT.
If general-purpose register (GPR) RA is not 0, the EA is the sum of the contents of GPR RA and GPR RB. If RA is 0, then the EA is the contents of GPR RB.
If GPR RA does not equal 0 and the storage access does not cause an Alignment interrupt or a Data Storage interrupt, then the EA is stored in GPR RA.
`, "tooltip": "Load Floating-Point Single with Update Indexed", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=is-lfsux-load-floating-point-single-update-indexed-instruction" }; case "LFSX": return { "html": `The lfsx instruction converts a floating-point, single-precision word in storage addressed by the effective address (EA) to floating-point, double-precision word and loads the result into floating-point register (FPR) FRT.
If general-purpose register (GPR) RA is not 0, the EA is the sum of the contents of GPR RA and GPR RB. If RA is 0, then the EA is the contents of GPR RB.
`, "tooltip": "Load Floating-Point Single Indexed", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-lfsx-load-floating-point-single-indexed-instruction" }; case "LHA": return { "html": `The lha instruction loads a halfword of data from a specified location in memory, addressed by the effective address (EA), into bits 16-31 of the target general-purpose register (GPR) RT and copies bit 0 of the halfword into bits 0-15 of GPR RT.
If GPR RA is not 0, the EA is the sum of the contents of GPR RA and D, a 16-bit signed two's complement integer sign extended to 32 bits. If GPR RA is 0, then the EA is D.
`, "tooltip": "Load Half Algebraic", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-lha-load-half-algebraic-instruction" }; case "LHAU": return { "html": `The lhau instruction loads a halfword of data from a specified location in memory, addressed by the effective address (EA), into bits 16-31 of the target general-purpose register (GPR) RT and copies bit 0 of the halfword into bits 0-15 of GPR RT.
If GPR RA is not 0, the EA is the sum of the contents of GPR RA and D, a 16-bit, signed two's complement integer sign-extended to 32 bits. If GPR RA is 0, then the EA is D.
If RA does not equal RT and RA does not equal 0, and the storage access does not cause an Alignment interrupt or a Data Storage interrupt, then the EA is placed into GPR RA.
`, "tooltip": "Load Half Algebraic with Update", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-lhau-load-half-algebraic-update-instruction" }; case "LHAUX": return { "html": `The lhaux instruction loads a halfword of data from a specified location in memory addressed by the effective address (EA) into bits 16-31 of the target general-purpose register (GPR) RT and copies bit 0 of the halfword into bits 0-15 of GPR RT.
If GPR RA is not 0, the EA is the sum of the contents of GPR RA and GPR RB. If GPR RA is 0, then the EA is the contents of GPR RB.
If RA does not equal RT and RA does not equal 0, and the storage access does not cause an Alignment interrupt or a Data Storage interrupt, then the EA is placed into GPR RA.
`, "tooltip": "Load Half Algebraic with Update Indexed", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-lhaux-load-half-algebraic-update-indexed-instruction" }; case "LHAX": return { "html": `The lhax instruction loads a halfword of data from a specified location in memory, addressed by the effective address (EA), into bits 16-31 of the target general-purpose register (GPR) RT and copies bit 0 of the halfword into bits 0-15 of GPR RT.
If GPR RA is not 0, the EA is the sum of the contents of GPR RA and GPR RB. If GPR RA is 0, then the EA is the contents of GPR RB.
`, "tooltip": "Load Half Algebraic Indexed", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-lhax-load-half-algebraic-indexed-instruction" }; case "LHBRX": return { "html": `The lhbrx instruction loads bits 00-07 and bits 08-15 of the halfword in storage addressed by the effective address (EA) into bits 24-31 and bits 16-23 of general-purpose register (GPR) RT, and sets bits 00-15 of GPR RT to 0.
If GPR RA is not 0, the EA is the sum of the contents of GPR RA and GPR RB. If GPR RA is 0, then the EA is the contents of GPR RB.
`, "tooltip": "Load Half Byte-Reverse Indexed", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-lhbrx-load-half-byte-reverse-indexed-instruction" }; case "LHZ": return { "html": `The lhz instruction loads a halfword of data from a specified location in memory, addressed by the effective address (EA), into bits 16-31 of the target general-purpose register (GPR) RT and sets bits 0-15 of GPR RT to 0.
If GPR RA is not 0, the EA is the sum of the contents of GPR RA and D, a 16-bit, signed two's complement integer sign-extended to 32 bits. If GPR RA is 0, then the EA is D.
`, "tooltip": "Load Half and Zero", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-lhz-load-half-zero-instruction" }; case "LHZU": return { "html": `The lhzu instruction loads a halfword of data from a specified location in memory, addressed by the effective address (EA), into bits 16-31 of the target general-purpose register (GPR) RT and sets bits 0-15 of GPR RT to 0.
If GPR RA is not 0, the EA is the sum of the contents of GPR RA and D, a 16-bit, signed two's complement integer sign-extended to 32 bits. If GPR RA is 0, then the EA is D.
If RA does not equal RT and RA does not equal 0, and the storage access does not cause an Alignment interrupt or a Data Storage interrupt, then the EA is placed into GPR RA.
`, "tooltip": "Load Half and Zero with Update", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-lhzu-load-half-zero-update-instruction" }; case "LHZUX": return { "html": `The lhzux instruction loads a halfword of data from a specified location in memory, addressed by the effective address (EA), into bits 16-31 of the target general-purpose register (GPR) RT and sets bits 0-15 of GPR RT to 0.
If GPR RA is not 0, the EA is the sum of the contents of GPR RA and GPR RB. If GPR RA is 0, then the EA is the contents of GPR RB.
If RA does not equal RT and RA does not equal 0, and the storage access does not cause an Alignment interrupt or a Data Storage interrupt, then the EA is placed into GPR RA.
`, "tooltip": "Load Half and Zero with Update Indexed", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-lhzux-load-half-zero-update-indexed-instruction" }; case "LHZX": return { "html": `The lhzx instruction loads a halfword of data from a specified location in memory, addressed by the effective address (EA), into bits 16-31 of the target general-purpose register (GPR) RT and sets bits 0-15 of GPR RT to 0.
If GPR RA is not 0, the EA is the sum of the contents of GPR RA and GPR RB. If GPR RA is 0, then the EA is the contents of GPR RB.
`, "tooltip": "Load Half and Zero Indexed", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-lhzx-load-half-zero-indexed-instruction" }; case "LMW": case "LM": return { "html": `The lmw and lm instructions load N consecutive words starting at the calculated effective address (EA) into a number of general-purpose registers (GPR), starting at GPR RT and filling all GPRs through GPR 31. N is equal to 32-RT field, the total number of consecutive words that are placed in consecutive registers.
If GPR RA is not 0, the EA is the sum of the contents of GPR RA and D. If GPR RA is 0, then the EA is D.
Consider the following when using the PowerPC® instruction lmw:
For the POWER® family instruction lm, if GPR RA is not equal to 0 and GPR RA is in the range to be loaded, then GPR RA is not written to. The data that would have normally been written into RA is discarded and the operation continues normally.
`, "tooltip": "Load Multiple Word", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-lmw-lm-load-multiple-word-instruction" }; case "LQ": return { "html": `The lq instruction loads a quad word in storage from a specified location in memory addressed by the effective address (EA) into the target general-purpose registers (GPRs) RT and RT+1.
DQ is a 12-bit, signed two's complement number, which is sign extended to 64 bits and then multiplied by 16 to provide a displacement Disp. If GPR RA is not 0, the EA is the sum of the contents of GPR RA and Disp. If GPR RA is 0, then the EA is Disp.
`, "tooltip": "Load Quad Word", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-lq-load-quad-word-instruction" }; case "LSCBX": case "LSCBX.": return { "html": `The lscbx instruction loads N consecutive bytes addressed by effective address (EA) into general-purpose register (GPR) RT, starting with the leftmost byte in register RT, through RT + NR - 1, and wrapping around back through GPR 0, if required, until either a byte match is found with XER16-23 or N bytes have been loaded. If a byte match is found, then that byte is also loaded.
If GPR RA is not 0, the EA is the sum of the contents of GPR RA and the address stored in GPR RB. If RA is 0, then EA is the contents of GPR RB.
Consider the following when using the lscbx instruction:
Bytes are always loaded left to right in the register. In the case when a match was found before N bytes were loaded, the contents of the rightmost bytes not loaded from that register and the contents of all succeeding registers up to and including register RT + NR - 1 are undefined. Also, no reference is made to storage after the matched byte is found. In the case when a match was not found, the contents of the rightmost bytes not loaded from register RT + NR - 1 are undefined.
If GPR RA is not 0 and GPRs RA and RB are in the range to be loaded, then GPRs RA and RB are not written to. The data that would have been written into them is discarded, and the operation continues normally. If the byte in XER(16-23) compares with any of the 4 bytes that would have been loaded into GPR RA or RB, but are being discarded for restartability, the EQ bit in the Condition Register and the count returned in XER(25-31) are undefined. The Multiply Quotient (MQ) Register is not affected by this operation.
`, "tooltip": "Load String and Compare Byte Indexed", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-lscbx-load-string-compare-byte-indexed-instruction" }; case "LSWI": case "LSI": return { "html": `The lswi and lsi instructions load N consecutive bytes in storage addressed by the effective address (EA) into general-purpose register GPR RT, starting with the leftmost byte, through GPR RT+NR-1, and wrapping around back through GPR 0, if required.
If GPR RA is not 0, the EA is the contents of GPR RA. If GPR RA is 0, then the EA is 0.
Consider the following when using the lswi and lsi instructions:
For the PowerPC® instruction lswi, if GPR RA is in the range of registers to be loaded or RT = RA = 0, the instruction form is invalid.
Consider the following when using the POWER® family instruction lsi:
The lswx and lsx instructions load N consecutive bytes in storage addressed by the effective address (EA) into general-purpose register (GPR) RT, starting with the leftmost byte, through GPR RT + NR - 1, and wrapping around back through GPR 0 if required.
If GPR RA is not 0, the EA is the sum of the contents of GPR RA and the address stored in GPR RB. If GPR RA is 0, then EA is the contents of GPR RB.
Consider the following when using the lswx and lsx instructions:
For the PowerPC® instruction lswx, if RA or RB is in the range of registers to be loaded or RT = RA = 0, the results are boundedly undefined.
Consider the following when using the POWER® family instruction lsx:
The fullword in storage located at the effective address (EA) is loaded into the low-order 32 bits of the target general purpose register (GRP) RT. The value is then sign-extended to fill the high-order 32 bits of the register.
DS is a 14-bit, signed two's complement number, which is sign-extended to 64 bits, and then multiplied by 4 to provide a displacement Disp. If GPR RA is not 0, the EA is the sum of the contents of GPR RA and Disp. If GPR RA is 0, then the EA is Disp.
`, "tooltip": "Load Word Algebraic", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-lwa-load-word-algebraic-instruction" }; case "LWARX": return { "html": `The lwarx and stwcx. instructions are primitive, or simple, instructions used to perform a read-modify-write operation to storage. If the store is performed, the use of the lwarx and stwcx. instructions ensures that no other processor or mechanism has modified the target memory location between the time the lwarx instruction is executed and the time the stwcx. instruction completes.
If general-purpose register (GPR) RA = 0, the effective address (EA) is the content of GPR RB. Otherwise, the EA is the sum of the content of GPR RA plus the content of GPR RB.
The lwarx instruction loads the word from the location in storage specified by the EA into the target GPR RT. In addition, a reservation on the memory location is created for use by a subsequent stwcx. instruction.
`, "tooltip": "Load Word and Reserve Indexed", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-lwarx-load-word-reserve-indexed-instruction" }; case "LWAUX": return { "html": `The lwaux instruction loads a full word of data from storage into the low-order 32 bits of the specified general purpose register and sign extends the data into the high-order 32 bits of the register while updating the address base.
The fullword in storage located at the effective address (EA) is loaded into the low-order 32 bits of the target general puspose register (GRP). The value is then sign-extended to fill the high-order 32 bits of the register. The EA is the sum of the contents of GRP RA and GRP RB.
If RA = 0 or RA = RT, the instruction form is invalid.
`, "tooltip": "Load Word Algebraic with Update Indexed", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-lwaux-load-word-algebraic-update-indexed-instruction" }; case "LWAX": return { "html": `The lwax instruction loads a fullword of data from storage into the low-order 32 bits of the specified general purpose register and sign-extends the data into the high-order 32 bits of the register.
The fullword in storage located at the effective address (EA) is loaded into the low-order 32 bits of the target general puspose register (GRP). The value is then sign-extended to fill the high-order 32 bits of the register.
If GRP RA is not 0, the EA is the sum of the contents of GRP RA and B; otherwise, the EA is equal to the contents of RB.
`, "tooltip": "Load Word Algebraic Indexed", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-lwax-load-word-algebraic-indexed-instruction" }; case "LWBRX": case "LBRX": return { "html": `The lwbrx and lbrx instructions load a byte-reversed word in storage from a specified location in memory addressed by the effective address (EA) into the target general-purpose register (GPR) RT.
Consider the following when using the lwbrx and lbrx instructions:
If GPR RA is not 0, the EA is the sum of the contents of GPR RA and GPR RB. If GPR RA is 0, then the EA is the contents of GPR RB.
`, "tooltip": "Load Word Byte-Reverse Indexed", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=is-lwbrx-lbrx-load-word-byte-reverse-indexed-instruction" }; case "LWZ": case "L": return { "html": `The lwz and l instructions load a word in storage from a specified location in memory addressed by the effective address (EA) into the target general-purpose register (GPR) RT.
If GPR RA is not 0, the EA is the sum of the contents of GPR RA and D, a 16-bit, signed two's complement integer sign-extended to 32 bits. If GPR RA is 0, then the EA is D.
`, "tooltip": "Load Word and Zero", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-lwz-l-load-word-zero-instruction" }; case "LWZU": case "LU": return { "html": `The lwzu and lu instructions load a word in storage from a specified location in memory addressed by the effective address (EA) into the target general-purpose register (GPR) RT.
If GPR RA is not 0, the EA is the sum of the contents of GPR RA and D, a 16-bit, signed two's complement integer sign-extended to 32 bits. If GPR RA is 0, then the EA is D.
If RA does not equal RT and RA doesnot equal 0, and the storage access does not cause an Alignment interruptor a Data Storage interrupt, then the EA is placed into GPR RA.
`, "tooltip": "Load Word with Zero Update", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-lwzu-lu-load-word-zero-update-instruction" }; case "LWZUX": case "LUX": return { "html": `The lwzux and lux instructions load a word of data from a specified location in memory, addressed by the effective address (EA), into the target general-purpose register (GPR) RT.
If GPR RA is not 0, the EA is the sum of the contents of GPR RA and GPR RB. If GPR RA is 0, then the EA is the contents of GPR RB.
If GPR RA does not equal RT and RA does not equal 0, and the storage access does not cause an Alignment interrupt or a Data Storage interrupt, then the EA is placed into GPR RA.
`, "tooltip": "Load Word and Zero with Update Indexed", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=is-lwzux-lux-load-word-zero-update-indexed-instruction" }; case "LWXZ": case "LX": return { "html": `The lwzx and lx instructions load a word of data from a specified location in memory, addressed by the effective address (EA), into the target general-purpose register (GPR) RT.
The lwzx and lx instructions load a word of data from a specified location in memory, addressed by the effective address (EA), into the target general-purpose register (GPR) RT.
`, "tooltip": "Load Word and Zero Indexed", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-lwzx-lx-load-word-zero-indexed-instruction" }; case "MASKG": case "MASKG.": return { "html": `The maskg instruction generates a mask from a starting point defined by bits 27-31 of general-purpose register (GPR) RS to an end point defined by bits 27-31 of GPR RB and stores the mask in GPR RA.
Consider the following when using the maskg instruction:
The maskir instruction stores the contents of general-purpose register (GPR) RS in GPR RA under control of the bit mask in GPR RB.
The value for each bit in the target GPR RA is determined as follows:
The mcrf instruction copies the contents of the condition register field specified by BFA into the condition register field specified by BF. All other fields remain unaffected.
`, "tooltip": "Move Condition Register Field", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-mcrf-move-condition-register-field-instruction" }; case "MCRFS": return { "html": `The mcrfs instruction copies four bits of the Floating-Point Status and Control Register (FPSCR) specified by BFA into Condition Register Field BF. All other Condition Register bits are unchanged.
If the field specified by BFA contains reserved or undefined bits, then bits of zero value are supplied for the copy.
`, "tooltip": "Move to Condition Register from FPSCR", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-mcrfs-move-condition-register-from-fpscr-instruction" }; case "MCRXR": return { "html": `The mcrxr copies the contents of Fixed-Point Exception Register Field 0 bits 0-3 into Condition Register Field BF and resets Fixed-Point Exception Register Field 0 to 0.
`, "tooltip": "Move to Condition Register from XER", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-mcrxr-move-condition-register-from-xer-instruction" }; case "MFCR": return { "html": `The mfcr instruction copies the contents of the Condition Register into target general-purpose register (GPR) RT.
`, "tooltip": "Move from Condition Register", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-mfcr-move-from-condition-register-instruction" }; case "MFFS": case "MFFS.": return { "html": `The mffs instruction places the contents of the Floating-Point Status and Control Register into bits 32-63 of floating-point register (FPR) FRT. The bits 0-31 of floating-point register FRT are undefined.
`, "tooltip": "Move from FPSCR", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-mffs-move-from-fpscr-instruction" }; case "MFMSR": return { "html": `The mfmsr instruction copies the contentsof the Machine State Register into the target general-purpose register(GPR) RT.
`, "tooltip": "Move from Machine State Register", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-mfmsr-move-from-machine-state-register-instruction" }; case "MFOCRF": return { "html": `The mfocrf instruction copies the contents of one Condition Register field specified by the field mask FXM into the target general-purpose register (GPR) RT.
`, "tooltip": "Move from One Condition Register Field", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=is-mfocrf-move-from-one-condition-register-field-instruction" }; case "MFSPR": return { "html": `The mfspr instruction copies the contents of the special-purpose register SPR into target general-purpose register (GPR) RT.
`, "tooltip": "Move from Special-Purpose Register", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-mfspr-move-from-special-purpose-register-instruction" }; case "MFSR": return { "html": `The mfsr instruction copies the contents of segment register (SR) into target general-purpose register (GPR) RT.
`, "tooltip": "Move from Segment Register", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-mfsr-move-from-segment-register-instruction" }; case "MFSRI": return { "html": `The mfsri instruction copies the contents of segment register (SR), specified by bits 0-3 of the calculated contents of the general-purpose register (GPR) RA, into GPR RS. If RA is not 0, the specifying bits in GPR RA are calculated by adding the original contents of RA to GPR RB and placing the sum in RA. If RA = RS, the sum is not placed in RA.
`, "tooltip": "Move from Segment Register Indirect", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-mfsri-move-from-segment-register-indirect-instruction" }; case "MFSRIN": return { "html": `The mfsrin instruction copies the contents of segment register (SR), specified by bits 0-3 of the general-purpose register (GPR) RB, into GPR RT.
`, "tooltip": "Move from Segment Register Indirect", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-mfsrin-move-from-segment-register-indirect-instruction" }; case "MTCRF": return { "html": `The mtcrf instruction copies the contents of source general-purpose register (GPR) RS into the condition register under the control of field mask FXM.
`, "tooltip": "Move to Condition Register Fields", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-mtcrf-move-condition-register-fields-instruction" }; case "MTFSB0": case "MTFSB0.": return { "html": `The mtfsb0 instruction sets the Floating-Point Status and Control Register bit specified by BT to 0.
`, "tooltip": "Move to FPSCR Bit 0", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-mtfsb0-move-fpscr-bit-0-instruction" }; case "MTFSB1": case "MTFSB1.": return { "html": `The mtfsb1 instruction sets the Floating-Point Status and Control Register (FPSCR) bit specified by BT to 1.
`, "tooltip": "Move to FPSCR Bit 1", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-mtfsb1-move-fpscr-bit-1-instruction" }; case "MTFSF": case "MTFSF.": return { "html": `The mtfsf instruction copies bits 32-63 of the contents of the floating-point register (FPR) FRB into the Floating-Point Status and Control Register under the control of the field mask specified by FLM.
`, "tooltip": "Move to FPSCR Fields", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-mtfsf-move-fpscr-fields-instruction" }; case "MTFSFI": case "MTFSFI.": return { "html": `The mtfsfi instruction copies the immediate value specified by the I parameter into the Floating-Point Status and Control Register field specified by BF. None of the other fields of the Floating-Point Status and Control Register are affected.
`, "tooltip": "Move to FPSCR Field Immediate", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-mtfsfi-move-fpscr-field-immediate-instruction" }; case "MTOCRF": return { "html": `The mtocrf instruction copies the contents of source general-purpose register (GPR) RS into the condition register under the control of field mask FXM.
`, "tooltip": "Move to One Condition Register Field", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-mtocrf-move-one-condition-register-field-instruction" }; case "MTSPR": return { "html": `The mtspr instruction copies the contents of the source general-purpose register RS into the target special-purpose register SPR.
`, "tooltip": "Move to Special-Purpose Register", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-mtspr-move-special-purpose-register-instruction" }; case "MUL": case "MUL.": case "MULO": case "MULO.": return { "html": `The mul instruction multiplies the contents of general-purpose register (GPR) RA and GPR RB, and stores bits 0-31 of the result in the target GPR RT and bits 32-63 of the result in the MQ Register.
`, "tooltip": "Multiply", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-mul-multiply-instruction" }; case "MULHD": case "MULHD.": return { "html": `The 64-bit operands are the contents of general purpose registers (GPR) RA and RB. The high-order 64 bits of the 128-bit product of the operands are placed into RT.
Both the operands and the product are interpreted as signed integers.
This instruction may execute faster on some implementations if RB contains the operand having the smaller absolute value.
`, "tooltip": "Multiply High Double Word", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-mulhd-multiply-high-double-word-instruction" }; case "MULHDU": case "MULHDU.": return { "html": `Both the operands and the product are interpreted as unsigned integers, except that if Rc = 1 (the mulhw. instruction) the first three bits of the condition register 0 field are set by signed comparison of the result to zero.
The 64-bit operands are the contents of RA and RB. The low-order 64 bits of the 128-bit product of the operands are placed into RT.
Other registers altered:
Affected: LT, GT, EQ, SO (if Rc = 1)
Note: The setting of CR0 bits LT, GT, and EQ is mode-dependent, and reflects overflow of the 64-bit result.
This instruction may execute faster on some implementations if RB contains the operand having the smaller absolute value.
`, "tooltip": "Multiply High Double Word Unsigned", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-mulhdu-multiply-high-double-word-unsigned-instruction" }; case "MULHW": case "MULHW.": return { "html": `The mulhw instruction multiplies the contents of general-purpose register (GPR) RA and GPR RB and places the most significant 32 bits of the 64-bit product in the target GPR RT. Both the operands and the product are interpreted as signed integers.
`, "tooltip": "Multiply High Word", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-mulhw-multiply-high-word-instruction" }; case "MULHWU": case "MULHWU.": return { "html": `The mulhwu instruction multiplies the contents of general-purpose register (GPR) RA and GPR RB and places the most significant 32 bits of the 64-bit product in the target GPR RT. Both the operands and the product are interpreted as unsigned integers.
`, "tooltip": "Multiply High Word Unsigned", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-mulhwu-multiply-high-word-unsigned-instruction" }; case "MULLD": case "MULLD.": case "MULLDO": case "MULLDO.": return { "html": `The 64-bit operands are the contents of general purpose registers (GPR) RA and RB. The low-order 64 bits of the 128-bit product of the operands are placed into RT.
Both the operands and the product are interpreted as signed integers. The low-order 64 bits of the product are independent of whether the operands are regarded as signed or unsigned 64-bit integers. If OE = 1 (the mulldo and mulldo. instructions), then OV is set if the product cannot be represented in 64 bits.
This instruction may execute faster on some implementations if RB contains the operand having the smaller absolute value.
`, "tooltip": "Multiply Low Double Word", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-mulld-multiply-low-double-word-instruction" }; case "MULLI": case "MULI": return { "html": `The mulli and muli instructions sign extend the SI field to 32 bits and then multiply the extended value by the contents of general-purpose register (GPR) RA. The least significant 32 bits of the 64-bit product are placed in the target GPR RT.
`, "tooltip": "Multiply Low Immediate", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-mulli-muli-multiply-low-immediate-instruction" }; case "MULLW": case "MULLW.": case "MULLWO": case "MULLWO.": case "MULS": case "MULS.": case "MULSO": case "MULSO.": return { "html": `The mullw and muls instructions multiply the contents of general-purpose register (GPR) RA by the contents of GPR RB, and place the least significant 32 bits of the result in the target GPR RT.
`, "tooltip": "Multiply Low Word", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-mullw-muls-multiply-low-word-instruction" }; case "NAND": case "NAND.": return { "html": `The nand instruction logically ANDs the contents of general-purpose register (GPR) RS with the contents of GPR RB and stores the complement of the result in the target GPR RA.
`, "tooltip": "NAND", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-nand-nand-instruction" }; case "NEG": case "NEG.": case "NEGO": case "NEGO.": return { "html": `The neg instruction adds 1 to the one's complement of the contents of a general-purpose register (GPR) RA and stores the result in GPR RT.
If GPR RA contains the most negative number (that is, 0x8000 0000), the result of the instruction is the most negative number and signals the Overflow bit in the Fixed-Point Exception Register if OE is 1.
`, "tooltip": "Negate", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-neg-negate-instruction" }; case "NOR": case "NOR.": return { "html": `The nor instruction logically ORs the contents of general-purpose register (GPR) RS with the contents of GPR RB and stores the complemented result in GPR RA.
`, "tooltip": "NOR", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-nor-nor-instruction" }; case "OR": case "OR.": return { "html": `The or instruction logically ORs the contents of general-purpose register (GPR) RS with the contents of GPR RB and stores the result in GPR RA.
`, "tooltip": "OR", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=is-instruction" }; case "ORC": case "ORC.": return { "html": `The orc instruction logically ORs the contents of general-purpose register (GPR) RS with the complement of the contents of GPR RB and stores the result in GPR RA.
`, "tooltip": "OR with Complement", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-orc-complement-instruction" }; case "ORI": case "ORIL": return { "html": `The ori and oril instructions logically OR the contents of general-purpose register (GPR) RS with the concatenation of x'0000' and a 16-bit unsigned integer, UI, and place the result in GPR RA.
`, "tooltip": "OR Immediate", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-ori-oril-immediate-instruction" }; case "ORIS": case "ORIU": return { "html": `The oris and oriu instructions logically OR the contents of general-purpose register (GPR) RS with the concatenation of a 16-bit unsigned integer, UI, and x'0000' and store the result in GPR RA.
`, "tooltip": "OR Immediate Shifted", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-oris-oriu-immediate-shifted-instruction" }; case "POPCNTBD": return { "html": `The popcntbd instruction counts the number of one bits in each byte of register RS and places the count in to the corresponding byte of register RA. The number ranges from 0 to 8, inclusive.
`, "tooltip": "Population Count Byte Doubleword", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-popcntbd-population-count-byte-doubleword-instruction" }; case "RAC": case "RAC.": return { "html": `The rac instruction computes an effective address (EA) from the sum of the contents of general-purpose register (GPR) RA and the contents of GPR RB, and expands the EA into a virtual address.
If RA is not 0 and if RA is not RT, then the rac instruction stores the EA in GPR RA, translates the result into a real address, and stores the real address in GPR RT.
Consider the following when using the rac instruction:
The rfi instruction places bits 16-31 of Save Restore Register1 (SRR1) into bits 16-31 of the Machine State Register (MSR), and then begins fetching and processing instructions at the address contained inSave Restore Register0 (SRR0), using the new MSR value.
If the Link bit (LK) is set to 1, the contents of the Link Register are undefined.
`, "tooltip": "Return from Interrupt", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-rfi-return-from-interrupt-instruction" }; case "RFID": return { "html": `Reinitializes the Machine State Register and continues processing after an interrupt.
`, "tooltip": "Return from Interrupt Double Word", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-rfid-return-from-interrupt-double-word-instruction" }; case "RFSVC": return { "html": `The rfsvc instruction reinitializes the Machine State Register (MSR) and starts processing after a supervisor call. This instruction places bits 16-31 of the Count Register into bits 16-31 of the Machine State Register (MSR), and then begins fetching and processing instructions at the address contained in the Link Register, using the new MSR value.
If the Link bit (LK) is set to 1, then the contents of the Link Register are undefined.
`, "tooltip": "Return from SVC", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-rfsvc-return-from-svc-instruction" }; case "RLDCL": case "RLDCL.": return { "html": `The contents of general purpose register (GPR) RS are rotated left the number of bits specified by the operand in the low-order six bits of RB. A mask is generated having 1 bits from bit MB through bit 63 and 0 bits elsewhere. The rotated data is ANDed with the generated mask and the result is placed into RA.
`, "tooltip": "Rotate Left Double Word then Clear Left", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=is-rldcl-rotate-left-double-word-then-clear-left-instruction" }; case "RLDCR": case "RLDCR.": return { "html": `The contents of general purpose register (GPR) RS are rotated left the number of bits specified by the low-order six bits of RB. A mask is generated having 1 bits from bit 0 through bit ME and 0 bits elsewhere. The rotated data is ANDed with the generated mask and the result is placed into RA.
`, "tooltip": "Rotate Left Double Word then Clear Right", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=is-rldcr-rotate-left-double-word-then-clear-right-instruction" }; case "RLDIC": case "RLDIC.": return { "html": `The contents of general purpose register (GPR) RS are rotated left the number of bits specified by operand SH. A mask is generated having 1 bits from bit MB through bit 63 - SH and 0 bits elsewhere. The rotated data is ANDed with the generated mask and the result is placed into GPR RA.
`, "tooltip": "Rotate Left Double Word Immediate then Clear", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=is-rldic-rotate-left-double-word-immediate-then-clear-instruction" }; case "RLDICL": case "RLDICL.": return { "html": `The contents of general purpose register RS are rotated left the number of bits specified by operand SH. A mask is generated containing 1 bits from bit MB through bit 63 and 0 bits elsewhere. The rotated data is ANDed with the generated mask and the result is placed into GPR RA.
`, "tooltip": "Rotate Left Double Word Immediate then Clear Left", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=is-rldicl-rotate-left-double-word-immediate-then-clear-left-instruction-1" }; case "RLDICR": case "RLDICR.": return { "html": `The contents of general purpose register (GPR) RS are rotated left the number of bits specified by operand SH. A mask is generated having 1 bits from bit 0 through bit ME and 0 bits elsewhere. The rotated data is ANDed with the generated mask and the result is placed into GPR RA.
`, "tooltip": "Rotate Left Double Word Immediate then Clear Right", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=is-rldicr-rotate-left-double-word-immediate-then-clear-right-instruction" }; case "RLDIMI": case "RLDIMI.": return { "html": `The contents of general purpose register (GPR) RS are rotated left the number of bits specified by operand SH. A mask is generated having 1 bits from bit MB through bit 63 - SH and 0 bits elsewhere. The rotated data is inserted into RA under control of the generated mask.
`, "tooltip": "Rotate Left Double Word Immediate then Mask Insert", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=is-rldimi-rotate-left-double-word-immediate-then-mask-insert-instruction" }; case "RLMI": case "RLMI.": return { "html": `The rlmi instruction rotates the contents of the source general-purpose register (GPR) RS to the left by the number of bits specified by bits 27-31 of GPR RB and then stores the rotated data in GPR RA under control of a 32-bit generated mask defined by the values in Mask Begin (MB) and Mask End (ME).
`, "tooltip": "Rotate Left Then Mask Insert", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-rlmi-rotate-left-then-mask-insert-instruction" }; case "RLIMI": case "RLIMI.": case "RLWIMI": case "RLWIMI.": return { "html": `The rlwimi and rlimi instructions rotate left the contents of the source general-purpose register (GPR) RS by the number of bits by the SH parameter and then store the rotated data in GPR RA under control of a 32-bit generated mask defined by the values in Mask Begin (MB) and Mask End (ME). If a mask bit is 1, the instructions place the associated bit of rotated data in GPR RA; if a mask bit is 0, the GPR RA bit remains unchanged.
`, "tooltip": "Rotate Left Word Immediate Then Mask Insert", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=is-rlwimi-rlimi-rotate-left-word-immediate-then-mask-insert-instruction" }; case "RLINM": case "RLINM.": case "RLWINM": case "RLWINM.": return { "html": `The rlwinm and rlinm instructions rotate left the contents of the source general-purpose register (GPR) RS by the number of bits specified by the SH parameter, logically AND the rotated data with a 32-bit generated mask defined by the values in Mask Begin (MB) and Mask End (ME), and store the result in GPR RA.
`, "tooltip": "Rotate Left Word Immediate Then AND with Mask", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=is-rlwinm-rlinm-rotate-left-word-immediate-then-mask-instruction" }; case "RLNM": case "RLNM.": case "RLWNM": case "RLWNM.": return { "html": `The rlwnm and rlnm instructions rotate the contents of the source general-purpose register (GPR) RS to the left by the number of bits specified by bits 27-31 of GPR RB, logically AND the rotated data with a 32-bit generated mask defined by the values in Mask Begin (MB) and Mask End (ME), and store the result in GPR RA.
`, "tooltip": "Rotate Left Word Then AND with Mask", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=is-rlwnm-rlnm-rotate-left-word-then-mask-instruction" }; case "RRIB": case "RRIB.": return { "html": `The rrib instruction rotates bit 0 of the source general-purpose register (GPR) RS to the right by the number of bits specified by bits 27-31 of GPR RB and then stores the rotated bit in GPR RA.
`, "tooltip": "Rotate Right and Insert Bit", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-rrib-rotate-right-insert-bit-instruction" }; case "SC": return { "html": `The sc instruction causes a system call interrupt. The effective address (EA) of the instruction following the sc instruction is placed into the Save Restore Register 0 (SRR0). Bits 0, 5-9, and 16-31 of the Machine State Register (MSR) are placed into the corresponding bits of Save Restore Register 1 (SRR1). Bits 1-4 and 10-15 of SRR1 are set to undefined values.
The sc instruction serves as both a basic and an extended mnemonic. In the extended form, the LEV field is omitted and assumed to be 0.
`, "tooltip": "System Call", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-sc-system-call-instruction" }; case "SCV": return { "html": `The scv instruction causes a system call interrupt. The effective address (EA) of the instruction following the scv instruction is placed into the Link Register. Bits 0-32, 37-41, and 48-63 of the Machine State Register (MSR) are placed into the corresponding bits of Count Register. Bits 33-36 and 42-47 of the Count Register are set to undefined values.
`, "tooltip": "System Call Vectored", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-scv-system-call-vectored-instruction" }; case "SI": return { "html": `The si instruction subtracts the 16-bit signed integer specified by the SINT parameter from the contents of general-purpose register (GPR) RA and stores the result in the target GPR RT. This instruction has the same effect as the ai instruction used with a negative SINT value. The assembler negates SINT and places this value (SI) in the machine instruction:
ai RT,RA,-SINT`,
"tooltip": "Subtract Immediate",
"url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-si-subtract-immediate-instruction"
};
case "SI.":
return {
"html": `The si. instruction subtracts the 16-bit signed integer specified by the SINT parameter from the contents of general-purpose register (GPR) RA and stores the result into the target GPR RT. This instruction has the same effect as the ai. instruction used with a negative SINT. The assembler negates SINT and places this value (SI) in the machine instruction:
code>ai. RT,RA,-SINT`, "tooltip": "Subtract Immediate and Record", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-si-subtract-immediate-record-instruction" }; case "SLD": case "SLD.": return { "html": `
The contents of general purpose register (GPR) RS are shifted left the number of bits specified by the low-order seven bits of GPR RB. Bits shifted out of position 0 are lost. Zeros are supplied to the vacated positions on the right. The result is placed into GPR RA. Shift amounts from 64 to 127 give a zero result.
`, "tooltip": "Shift Left Double Word", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-sld-shift-left-double-word-instruction" }; case "SLE": case "SLE.": return { "html": `The sle instruction rotates the contents of the source general-purpose register (GPR) RS to the left by N bits, where N is the shift amount specified in bits 27-31 of GPR RB. The instruction also stores the rotated word in the MQ Register and the logical AND of the rotated word and the generated mask in GPR RA. The mask consists of 32 minus N ones followed by N zeros.
`, "tooltip": "Shift Left Extended", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-sle-shift-left-extended-instruction" }; case "SLEQ": case "SLEQ.": return { "html": `The sleq instruction rotates the contents of the source general-purpose register (GPR) RS left N bits, where N is the shift amount specified in bits 27-31 of GPR RB. The instruction merges the rotated word with the contents of the MQ Register under control of a mask, and stores the rotated word in the MQ Register and merged word in GPR RA. The mask consists of 32 minus N ones followed by N zeros.
`, "tooltip": "Shift Left Extended with MQ", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-sleq-shift-left-extended-mq-instruction" }; case "SLIQ": case "SLIQ.": return { "html": `The sliq instruction rotates the contents of the source general-purpose register (GPR) RS to the left by N bits, where N is the shift amount specified by SH. The instruction stores the rotated word in the MQ Register and the logical AND of the rotated word and places the generated mask in GPR RA. The mask consists of 32 minus N ones followed by N zeros.
`, "tooltip": "Shift Left Immediate with MQ", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-sliq-shift-left-immediate-mq-instruction" }; case "SLLIQ": case "SLLIQ.": return { "html": `The slliq instruction rotates the contents of the source general-purpose register (GPR) RS to the left by N bits, where N is the shift amount specified in SH, merges the result with the contents of the MQ Register, and stores the rotated word in the MQ Register and the final result in GPR RA. The mask consists of 32 minus N ones followed by N zeros.
`, "tooltip": "Shift Left Long Immediate with MQ", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-slliq-shift-left-long-immediate-mq-instruction" }; case "SLLQ": case "SLLQ.": return { "html": `The sllq instruction rotates the contents of the source general-purpose register (GPR) RS to the left by N bits, where N is the shift amount specified in bits 27-31 of GPR RB. The merge depends on the value of bit 26 in GPR RB.
Consider the following when using the sllq instruction:
The resulting merged word is stored in GPR RA. The MQ Register is not altered.
`, "tooltip": "Shift Left Long with MQ", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-sllq-shift-left-long-mq-instruction" }; case "SLQ": case "SLQ.": return { "html": `The slq instruction rotates the contents of the source general-purpose register (GPR) RS to the left by N bits, where N is the shift amount specified in bits 27-31 of GPR RB, and stores the rotated word in the MQ Register. The mask depends on bit 26 of GPR RB.
Consider the following when using the slq instruction:
This instruction then stores the logical AND of the rotated word and the generated mask in GPR RA.
`, "tooltip": "Shift Left with MQ", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-slq-shift-left-mq-instruction" }; case "SL": case "SL.": case "SLW": case "SLW.": return { "html": `The slw and sl instructions rotate the contents of the source general-purpose register (GPR) RS to the left N bits, where N is the shift amount specified in bits 27-31 of GPR RB, and store the logical AND of the rotated word and the generated mask in GPR RA.
Consider the following when using the slw and sl instructions:
Algebraically shift the contents of a general purpose register right by the number of bits specified by the contents of another general purpose register. Place the result of the operation in another general purpose register.
The contents of general purpose register (GPR) RS are shifted right the number of bits specified by the low-order seven bits of GPR RB. Bits shifted out of position 63 are lost. Bit 0 of GPR RS is replicated to fill the vacated positions on the left. The result is placed into GRP RA. XER[CA] is set if GPR RS is negative and any 1 bits are shifted out of position 63; otherwise XER[CA] is cleared. A shift amount of zero causes GRP RA to be set equal to GPR RS, and XER[CA] to be cleared. Shift amounts from 64 to 127 give a result of 64 sign bits in GRP RA, and cause XER[CA] to receive the sign bit of GPR RS.
Note that the srad instruction, followed by addze, can by used to divide quickly by 2**n. The setting of the CA bit, by srad, is independent of mode.
`, "tooltip": "Shift Right Algebraic Double Word", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-srad-shift-right-algebraic-double-word-instruction" }; case "SRADI": case "SRADI.": return { "html": `Algebraically shift the contents of a general purpose register right by the number of bits specified by the immediate value. Place the result of the operation in another general purpose register.
The contents of general purpose register (GPR) RS are shifted right SH bits. Bits shifted out of position 63 are lost. Bit 0 of GPR RS is replicated to fill the vacated positions on the left. The result is placed into GPR RA. XER[CA] is set if GPR RS is negative and any 1 bits are shifted out of position 63; otherwise XER[CA] is cleared. A shift amount of zero causes GPR RA to be set equal to GPR RS, and XER[CA] to be cleared.
Note that the sradi instruction, followed by addze, can by used to divide quickly by 2**n. The setting of the CA bit, by sradi, is independent of mode.
`, "tooltip": "Shift Right Algebraic Double Word Immediate", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=is-sradi-shift-right-algebraic-double-word-immediate-instruction" }; case "SRAIQ": case "SRAIQ.": return { "html": `The sraiq instruction rotates the contents of the source general-purpose register (GPR) RS to the left by 32 minus N bits, where N is the shift amount specified by SH, merges the rotated data with a word of 32 sign bits from GPR RS under control of a generated mask, and stores the rotated word in the MQ Register and the merged result in GPR RA. A word of 32 sign bits is generated by taking the sign bit of a GPR and repeating it 32 times to make a fullword. This word can be either 0x0000 0000 or 0xFFFF FFFF depending on the value of the GPR. The mask consists of N zeros followed by 32 minus N ones.
This instruction then ANDs the rotated data with the complement of the generated mask, ORs the 32-bit result together, and ANDs the bit result with bit 0 of GPR RS to produce the Carry bit (CA).
`, "tooltip": "Shift Right Algebraic Immediate with MQ", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-sraiq-shift-right-algebraic-immediate-mq-instruction" }; case "SRAQ": case "SRAQ.": return { "html": `The sraq instruction rotates the contents of the source general-purpose register (GPR) RS to the left by 32 minus N bits, where N is the shift amount specified in bits 27-31 of GPR RB. The instruction then merges the rotated data with a word of 32 sign bits from GPR RS under control of a generated mask and stores the merged word in GPR RA. The rotated word is stored in the MQ Register. The mask depends on the value of bit 26 in GPR RB.
Consider the following when using the sraq instruction:
A word of 32 sign bits is generated by taking the sign bit of a GPR and repeating it 32 times to make a full word. This word can be either 0x0000 0000 or 0xFFFF FFFF depending on the value of the GPR.
This instruction then ANDs the rotated data with the complement of the generated mask, ORs the 32-bit result together, and ANDs the bit result with bit 0 of GPR RS to produce the Carry bit (CA).
`, "tooltip": "Shift Right Algebraic with MQ", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-sraq-shift-right-algebraic-mq-instruction" }; case "SRA": case "SRA.": case "SRAW": case "SRAW.": return { "html": `The sraw and sra instructions rotate the contents of the source general-purpose register (GPR) RS to the left by 32 minus N bits, where N is the shift amount specified in bits 27-31 of GPR RB, and merge the rotated word with a word of 32 sign bits from GPR RS under control of a generated mask. A word of 32 sign bits is generated by taking the sign bit of a GPR and repeating it 32 times to make a full word. This word can be either 0x0000 0000 or 0xFFFF FFFF depending on the value of the GPR.
The mask depends on the value of bit 26 in GPR RB.
Consider the following when using the sraw and sra instructions:
The merged word is placed in GPR RA. The sraw and sra instructions then AND the rotated data with the complement of the generated mask, OR the 32-bit result together, and AND the bit result with bit 0 of GPR RS to produce the Carry bit (CA).
`, "tooltip": "Shift Right Algebraic Word", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-sraw-sra-shift-right-algebraic-word-instruction" }; case "SRAI": case "SRAI.": case "SRAWI": case "SRAWI.": return { "html": `The srawi and srai instructions rotate the contents of the source general-purpose register (GPR) RS to the left by 32 minus N bits, where N is the shift amount specified by SH, merge the rotated data with a word of 32 sign bits from GPR RS under control of a generated mask, and store the merged result in GPR RA. A word of 32 sign bits is generated by taking the sign bit of a GPR and repeating it 32 times to make a full word. This word can be either 0x0000 0000 or 0xFFFF FFFF depending on the value of the GPR. The mask consists of N zeros followed by 32 minus N ones.
The srawi and srai instructions then AND the rotated data with the complement of the generated mask, OR the 32-bit result together, and AND the bit result with bit 0 of GPR RS to produce the Carry bit (CA).
`, "tooltip": "Shift Right Algebraic Word Immediate", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=is-srawi-srai-shift-right-algebraic-word-immediate-instruction" }; case "SRD": case "SRD.": return { "html": `The srd instruction shifts the contents of a general purpose register right by the number of bits specified by the contents of another general purpose register.
The contents of general purpose register (GPR) RS are shifted right the number of bits specified by the low-order seven bits of GPR RB. Bits shifted out of position 63 are lost. Zeros are supplied to the vacated positions on the left. The result is placed into GRP RA. Shift amounts from 64 to 127 give a zero result.
`, "tooltip": "Shift Right Double Word", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-srd-shift-right-double-word-instruction" }; case "SRE": case "SRE.": return { "html": `The sre instruction rotates the contents of the source general-purpose register (GPR) RS to the left by 32 minus N bits, where N is the shift amount specified in bits 27-31 of GPR RB, and stores the rotated word in the MQ Register and the logical AND of the rotated word and a generated mask in GPR RA. The mask consists of N zeros followed by 32 minus N ones.
`, "tooltip": "Shift Right Extended", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-sre-shift-right-extended-instruction" }; case "SREA": case "SREA.": return { "html": `The srea instruction rotates the contents of the source general-purpose register (GPR) RS to the left by 32 minus N bits, where N is the shift amount specified in bits 27-31 of GPR RB, stores the rotated word in the MQ Register, and merges the rotated word and a word of 32 sign bits from GPR RS under control of a generated mask. A word of 32 sign bits is generated by taking the sign bit of a general-purpose register and repeating it 32 times to make a full word. This word can be either 0x0000 0000 or 0xFFFF FFFF depending on the value of the general-purpose register. The mask consists of N zeros followed by 32 minus N ones. The merged word is stored in GPR RA.
This instruction then ANDs the rotated data with the complement of the generated mask, ORs together the 32-bit result, and ANDs the bit result with bit 0 of GPR RS to produce the Carry bit (CA).
`, "tooltip": "Shift Right Extended Algebraic", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-srea-shift-right-extended-algebraic-instruction" }; case "SREQ": case "SREQ.": return { "html": `The sreq instruction rotates the contents of the source general-purpose register (GPR) RS to the left by 32 minus N bits, where N is the shift amount specified in bits 27-31 of GPR RB, merges the rotated word with the contents of the MQ Register under a generated mask, and stores the rotated word in the MQ Register and the merged word in GPR RA. The mask consists of N zeros followed by 32 minus N ones.
`, "tooltip": "Shift Right Extended with MQ", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-sreq-shift-right-extended-mq-instruction" }; case "SRIQ": case "SRIQ.": return { "html": `The sriq instruction rotates the contents of the source general-purpose register (GPR) RS to the left 32 minus N bits, where N is the shift amount specified by SH, and stores the rotated word in the MQ Register, and the logical AND of the rotated word and the generated mask in GPR RA. The mask consists of N zeros followed by 32 minus N ones.
`, "tooltip": "Shift Right Immediate with MQ", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-sriq-shift-right-immediate-mq-instruction" }; case "SRLIQ": case "SRLIQ.": return { "html": `The srliq instruction rotates the contents of the source general-purpose register (GPR) RS to the left by 32 minus N bits, where N is the shift amount specified by SH, merges the result with the contents of the MQ Register under control of a generated mask, and stores the rotated word in the MQ Register and the merged result in GPR RA. The mask consists of N zeros followed by 32 minus N ones.
`, "tooltip": "Shift Right Long Immediate with MQ", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-srliq-shift-right-long-immediate-mq-instruction" }; case "SRLQ": case "SRLQ.": return { "html": `The srlq instruction rotates the contents of the source general-purpose register (GPR) RS to the left 32 minus N bits, where N is the shift amount specified in bits 27-31 of GPR RB. The merge depends on the value of bit 26 in GPR RB.
Consider the following when using the srlq instruction:
The merged word is stored in GPR RA. The MQ Register is not altered.
`, "tooltip": "Shift Right Long with MQ", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-srlq-shift-right-long-mq-instruction" }; case "SRQ": case "SRQ.": return { "html": `The srq instruction rotates the contents of the source general-purpose register (GPR) RS to the left by 32 minus N bits, where N is the shift amount specified in bits 27-31 of GPR RB, and stores the rotated word in the MQ Register. The mask depends on bit 26 of GPR RB.
Consider the following when using the srq instruction:
This instruction then stores the logical AND of the rotated word and the generated mask in GPR RA.
`, "tooltip": "Shift Right with MQ", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-srq-shift-right-mq-instruction" }; case "SR": case "SR.": case "SRW": case "SRW.": return { "html": `The srw and sr instructions rotate the contents of the source general-purpose register (GPR) RS to the left by 32 minus N bits, where N is the shift amount specified in bits 27-31 of GPR RB, and store the logical AND of the rotated word and the generated mask in GPR RA.
Consider the following when using the srw and sr instructions:
The stb instruction stores bits 24-31 of general-purpose register (GPR) RS into a byte of storage addressed by the effective address (EA).
If GPR RA is not 0, the EA is the sum of the contents of GPR RA and D, a 16-bit signed two's complement integer sign-extended to 32 bits. If GPR RA is 0, then the EA is D.
`, "tooltip": "Store Byte", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-stb-store-byte-instruction" }; case "STBU": return { "html": `The stbu instruction stores bits 24-31 of the source general-purpose register (GPR) RS into the byte in storage addressed by the effective address (EA).
If GPR RA is not 0, the EA is the sum of the contents of GPR RA and D, a 16-bit signed two's complement integer sign-extended to 32 bits. If GPR RA is 0, then the EA is D.
If RA does not equal 0 and the storage access does not cause an Alignment Interrupt, then the EA is stored in GPR RA.
`, "tooltip": "Store Byte with Update", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-stbu-store-byte-update-instruction" }; case "STBUX": return { "html": `The stbux instruction stores bits 24-31 of the source general-purpose register (GPR) RS into the byte in storage addressed by the effective address (EA).
If GPR RA is not 0, the EA is the sum of the contents of GPR RA and the contents of GPR RB. If RA is 0, then the EA is the contents of GPR RB.
If GPR RA does not equal 0 and the storage access does not cause an Alignment Interrupt, then the EA is stored in GPR RA.
`, "tooltip": "Store Byte with Update Indexed", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-stbux-store-byte-update-indexed-instruction" }; case "STBX": return { "html": `The stbx instruction stores bits 24-31 from general-purpose register (GPR) RS into a byte of storage addressed by the effective address (EA). The contents of GPR RS are unchanged.
If GPR RA is not 0, the EA is the sum of the contents of GPR RA and the contents of GPR RB. If GPR RA is 0, then the EA is the contents of GPR RB.
`, "tooltip": "Store Byte Indexed", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-stbx-store-byte-indexed-instruction" }; case "STD": return { "html": `The std instruction stores a doubleword in storage from the source general-purpose register (GPR) RS into the specified location in memory referenced by the effective address (EA).
DS is a 14-bit, signed two's complement number, which is sign-extended to 64 bits, and then multiplied by 4 to provide a displacement Disp. If GPR RA is not 0, the EA is the sum of the contents of GPR RA and Disp. If GPR RA is 0, then the EA is Disp.
`, "tooltip": "Store Double Word", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-std-store-double-word-instruction" }; case "STDCX.": return { "html": `The stdcx. instruction conditionally stores the contents of a general purpose register into a storage location, based upon an existing reservation.
`, "tooltip": "Store Double Word Condition Indexed", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-stdcx-store-double-word-conditional-indexed-instruction" }; case "STDU": return { "html": `The stdu instruction stores a doubleword in storage from the source general-purpose register (GPR) RS into the specified location in memory referenced by the effective address (EA).
DS is a 14-bit, signed two's complement number, which is sign-extended to 64 bits, and then multiplied by 4 to provide a displacement Disp. If GPR RA is not 0, the EA is the sum of the contents of GPR RA and Disp. If GPR RA is 0, then the EA is Disp.
If GPR RA = 0, the instruction form is invalid.
`, "tooltip": "Store Double Word with Update", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-stdu-store-double-word-update-instruction" }; case "STDUX": return { "html": `The stdux instruction stores a doubleword in storage from the source general-purpose register (GPR) RS into the location in storage specified by the effective address (EA).
The EA is the sum of the contents of GPR RA and RB. GRP RA is updated with the EA.
If rA = 0, the instruction form is invalid.
`, "tooltip": "Store Double Word with Update Indexed", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-stdux-store-double-word-update-indexed-instruction" }; case "STDX": return { "html": `The stdx instruction stores a doubleword in storage from the source general-purpose register (GPR) RS into the location in storage specified by the effective address (EA).
If GPR RA is not 0, the EA is the sum of the contents of GPR RA and RB. If GPR RA is 0, then the EA is RB.
`, "tooltip": "Store Double Word Indexed", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-stdx-store-double-word-indexed-instruction" }; case "STFD": return { "html": `The stfd instruction stores the contents of floating-point register (FPR) FRS into the doubleword storage addressed by the effective address (EA).
If general-purpose register (GPR) RA is not 0, the EA is the sum of the contents of GPR RA and D. The sum is a 16-bit signed two's complement integer sign-extended to 32 bits. If GPR RA is 0, then the EA is D.
`, "tooltip": "Store Floating-Point Double", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-stfd-store-floating-point-double-instruction" }; case "STFDU": return { "html": `The stfdu instruction stores the contents of floating-point register (FPR) FRS into the doubleword storage addressed by the effective address (EA).
If general-purpose register (GPR) RA is not 0, the EA is the sum of the contents of GPR RA and D. The sum is a 16-bit signed two's complement integer sign-extended to 32 bits. If GPR RA is 0, then the EA is D.
If GPR RA does not equal 0 and the storage access does not cause Alignment Interrupt or a Data Storage Interrupt, then the EA is stored in GPR RA.
`, "tooltip": "Store Floating-Point Double with Update", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-stfdu-store-floating-point-double-update-instruction" }; case "STFDUX": return { "html": `The stfdux instruction stores the contents of floating-point register (FPR) FRS into the doubleword storage addressed by the effective address (EA).
If general-purpose register (GPR) RA is not 0, the EA is the sum of the contents of GPRs RA and RB. If GPR RA is 0, then the EA is the contents of GPR RB.
If GPR RA does not equal 0 and the storage access does not cause Alignment Interrupt or a Data Storage Interrupt, then the EA is stored in GPR RA.
`, "tooltip": "Store Floating-Point Double with Update Indexed", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=is-stfdux-store-floating-point-double-update-indexed-instruction" }; case "STFDX": return { "html": `The stfdx instruction stores the contents of floating-point register (FPR) FRS into the doubleword storage addressed by the effective address (EA).
If general-purpose register (GPR) RA is not 0, the EA is the sum of the contents of GPRs RA and RB. If GPR RA is 0, then the EA is the contents of GPR RB.
`, "tooltip": "Store Floating-Point Double Indexed", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-stfdx-store-floating-point-double-indexed-instruction" }; case "STFIWX": return { "html": `The stfifx instruction stores the contents of the low-order 32 bits of floating-point register (FPR) FRS,without conversion, into the word storage addressed by the effective address (EA).
If general-purpose register (GPR) RA is not 0, the EA is the sum of the contents of GPRs RA and RB. If GPR RA is 0, then the EA is the contents of GPR RB.
`, "tooltip": "Store Floating-Point as Integer Word Indexed", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=is-stfiwx-store-floating-point-as-integer-word-indexed" }; case "STFQ": return { "html": `The stfq instruction stores in memory the contents of two consecutive floating-point registers (FPR) at the location specified by the effective address (EA).
DS is sign-extended to 30 bits and concatenated on the right with b'00' to form the offset value. If general-purpose register (GPR) RA is 0, the offset value is the EA. If GPR RA is not 0, the offset value is added to GPR RA to generate the EA. The contents of FPR FRS is stored into the doubleword of storage at the EA. If FPR FRS is 31, then the contents of FPR 0 is stored into the doubleword at EA+8; otherwise, the contents of FRS+1 are stored into the doubleword at EA+8.
`, "tooltip": "Store Floating-Point Quad", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-stfq-store-floating-point-quad-instruction" }; case "STFQU": return { "html": `The stfqu instruction stores in memory the contents of two consecutive floating-point registers (FPR) at the location specified by the effective address (EA).
DS is sign-extended to 30 bits and concatenated on the right with b'00' to form the offset value. If general-purpose register (GPR) RA is 0, the offset value is the EA. If GPR RA is not 0, the offset value is added to GPR RA to generate the EA. The contents of FPR FRS is stored into the doubleword of storage at the EA. If FPR FRS is 31, then the contents of FPR 0 is stored into the doubleword at EA+8; otherwise, the contents of FRS+1 is stored into the doubleword at EA+8.
If GPR RA is not 0, the EA is placed into GPR RA.
`, "tooltip": "Store Floating-Point Quad with Update", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-stfqu-store-floating-point-quad-update-instruction" }; case "STFQUX": return { "html": `The stfqux instruction stores in memory the contents of two consecutive floating-point registers (FPR) at the location specified by the effective address (EA).
If general-purpose register (GPR) RA is not 0, the EA is the sum of the contents of GPR RA and GPR RB. If GPR RA is 0, the EA is the contents of GPR RB. The contents of FPR FRS is stored into the doubleword of storage at the EA. If FPR FRS is 31, then the contents of FPR 0 is stored into the doubleword at EA+8; otherwise, the contents of FRS+1 is stored into the doubleword at EA+8.
If GPR RA is not 0, the EA is placed into GPR RA.
`, "tooltip": "Store Floating-Point Quad with Update Indexed", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=is-stfqux-store-floating-point-quad-update-indexed-instruction" }; case "STFQX": return { "html": `The stfqx instruction stores in memory the contents of floating-point register (FPR) FRS at the location specified by the effective address (EA).
If general-purpose register (GPR) RA is not 0, the EA is the sum of the contents of GPR RA and GPR RB. If GPR RA is 0, the EA is the contents of GPR RB. The contents of FPR FRS is stored into the doubleword of storage at the EA. If FPR FRS is 31, then the contents of FPR 0 is stored into the doubleword at EA+8; otherwise, the contents of FRS+1 is stored into the doubleword at EA+8.
`, "tooltip": "Store Floating-Point Quad Indexed", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-stfqx-store-floating-point-quad-indexed-instruction" }; case "STFS": return { "html": `The stfs instruction converts the contents of floating-point register (FPR) FRS to single-precision and stores the result into the word of storage addressed by the effective address (EA).
If general-purpose register (GPR) RA is not 0, the EA is the sum of the contents of GPR RA and D, a 16-bit signed two's complement integer sign-extended to 32 bits. If GPR RA is 0, then the EA is D.
`, "tooltip": "Store Floating-Point Single", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-stfs-store-floating-point-single-instruction" }; case "STFSU": return { "html": `The stfsu instruction converts the contents of floating-point register (FPR) FRS to single-precision and stores the result into the word of storage addressed by the effective address (EA).
If general-purpose register (GPR) RA is not 0, the EA is the sum of the contents of GPR RA and D, a 16-bit signed two's complement integer sign-extended to 32 bits. If GPR RA is 0, then the EA is D.
If GPR RA does not equal 0 and the storage access does not cause Alignment Interrupt or Data Storage Interrupt, then the EA is stored in GPR RA.
`, "tooltip": "Store Floating-Point Single with Update", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-stfsu-store-floating-point-single-update-instruction" }; case "STFSUX": return { "html": `The stfsux instruction converts the contents of floating-point register (FPR) FRS to single-precision and stores the result into the word of storage addressed by the effective address (EA).
If general-purpose register (GPR) RA is not 0, the EA is the sum of the contents of GPR RA and GPR RB. If GPR RA is 0, then the EA is the contents of GPR RB.
If GPR RA does not equal 0 and the storage access does not cause Alignment Interrupt or Data Storage Interrupt, then the EA is stored in GPR RA.
`, "tooltip": "Store Floating-Point Single with Update Indexed", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=is-stfsux-store-floating-point-single-update-indexed-instruction" }; case "STFSX": return { "html": `The stfsx instruction converts the contents of floating-point register (FPR) FRS to single-precision and stores the result into the word of storage addressed by the effective address (EA).
If general-purpose register (GPR) RA is not 0, the EA is the sum of the contents of GPR RA and GPR RB. If GPR RA is 0, then the EA is the contents of GPR RB.
`, "tooltip": "Store Floating-Point Single Indexed", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-stfsx-store-floating-point-single-indexed-instruction" }; case "STH": return { "html": `The sth instruction stores bits 16-31 of general-purpose register (GPR) RS into the halfword of storage addressed by the effective address (EA).
If GPR RA is not 0, the EA is the sum of the contents of GPR RA and D, a 16-bit signed two's complement integer sign-extended to 32 bits. If GPR RA is 0, then the EA is D.
`, "tooltip": "Store Half", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-sth-store-half-instruction" }; case "STHBRX": return { "html": `The sthbrx instruction stores bits 16-31 of general-purpose register (GPR) RS into the halfword of storage addressed by the effective address (EA).
Consider the following when using the sthbrx instruction:
If GPR RA is not 0, the EA is the sum of the contents of GPR RA and GPR RB. If GPR RA is 0, then the EA is the contents of GPR RB.
`, "tooltip": "Store Half Byte-Reverse Indexed", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-sthbrx-store-half-byte-reverse-indexed-instruction" }; case "STHU": return { "html": `The sthu instruction stores bits 16-31 of general-purpose register (GPR) RS into the halfword of storage addressed by the effective address (EA).
If GPR RA is not 0, the EA is the sum of the contents of GPR RA and D, a 16-bit signed two's complement integer sign-extended to 32 bits. If GPR RA is 0, then the EA is D.
If GPR RA does not equal 0 and the storage access does not cause an Alignment Interrupt or a Data Storage Interrupt, then the EA is placed into GPR RA.
`, "tooltip": "Store Half with Update", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-sthu-store-half-update-instruction" }; case "STHUX": return { "html": `The sthux instruction stores bits 16-31 of general-purpose register (GPR) RS into the halfword of storage addressed by the effective address (EA).
If GPR RA is not 0, the EA is the sum of the contents of GPR RA and GPR RB. If GPR RA is 0, then the EA is the contents of GPR RB.
If GPR RA does not equal 0 and the storage access does not cause an Alignment Interrupt or a Data Storage Interrupt, then the EA is placed into register GPR RA.
`, "tooltip": "Store Half with Update Indexed", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-sthux-store-half-update-indexed-instruction" }; case "STHX": return { "html": `The sthx instruction stores bits 16-31 of general-purpose register (GPR) RS into the halfword of storage addressed by the effective address (EA).
If GPR RA is not 0, the EA is the sum of the contents of GPR RA and GPR RB. If GPR RA is 0, then the EA is the contents of GPR RB.
`, "tooltip": "Store Half Indexed", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-sthx-store-half-indexed-instruction" }; case "STM": case "STMW": return { "html": `The stmw and stm instructions store N consecutive words from general-purpose register (GPR) RS through GPR 31. Storage starts at the effective address (EA). N is a register number equal to 32 minus RS.
If GPR RA is not 0, the EA is the sum of the contents of GPR RA and D. The sum is a 16-bit signed two's complement integer sign-extended to 32 bits. If GPR RA is 0, then the EA is D.
`, "tooltip": "Store Multiple Word", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-stmw-stm-store-multiple-word-instruction" }; case "STQ": return { "html": `The stq instruction stores a quad-word in storage from the source general-purpose registers (GPR) RS and RS+1 into the specified location in memory referenced by the effective address (EA).
DS is a 14-bit, signed two's complement number, which is sign-extended to 64 bits, and then multiplied by 4 to provide a displacement Disp. If GPR RA is not 0, the EA is the sum of the contents of GPR RA and Disp. If GPR RA is 0, then the EA is Disp.
`, "tooltip": "Store Quad Word", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-stq-store-quad-word-instruction" }; case "STSI": case "STSWI": return { "html": `The stswi and stsi instructions store N consecutive bytes starting with the leftmost byte in general-purpose register (GPR) RS at the effective address (EA) from GPR RS through GPR RS + NR - 1.
If GPR RA is not 0, the EA is the contents of GPR RA. If RA is 0, then the EA is 0.
`, "tooltip": "Store String Word Immediate", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-stswi-stsi-store-string-word-immediate-instruction" }; case "STSX": case "STSWX": return { "html": `The stswx and stsx instructions store N consecutive bytes starting with the leftmost byte in register RS at the effective address (EA) from general-purpose register (GPR) RS through GPR RS + NR - 1.
If GPR RA is not 0, the EA is the sum of the contents of GPR RA and the contents of GPR RB. If GPR RA is 0, then EA is the contents of GPR RB.
`, "tooltip": "Store String Word Indexed", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-stswx-stsx-store-string-word-indexed-instruction" }; case "ST": case "STW": return { "html": `The stw and st instructions store a word from general-purpose register (GPR) RS into a word of storage addressed by the effective address (EA).
If GPR RA is not 0, the EA is the sum of the contents of GPR RA and D, a 16-bit signed two's complement integer sign-extended to 32 bits. If GPR RA is 0, then the EA is D.
`, "tooltip": "Store", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-stw-st-store-instruction" }; case "STBRX": case "STWBRX": return { "html": `The stwbrx and stbrx instructions store a byte-reversed word from general-purpose register (GPR) RS into a word of storage addressed by the effective address (EA).
`, "tooltip": "Store Word Byte-Reverse Indexed", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=is-stwbrx-stbrx-store-word-byte-reverse-indexed-instruction" }; case "STWCX.": return { "html": `The stwcx. and lwarx instructions are primitive, or simple, instructions used to perform a read-modify-write operation to storage. If the store is performed, the use of the stwcx. and lwarx instructions ensures that no other processor or mechanism has modified the target memory location between the time the lwarx instruction is executed and the time the stwcx. instruction completes.
`, "tooltip": "Store Word Conditional Indexed", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-stwcx-store-word-conditional-indexed-instruction" }; case "STU": case "STWU": return { "html": `The stwu and stu instructions store the contents of general-purpose register (GPR) RS into the word of storage addressed by the effective address (EA).
If GPR RA is not 0, the EA is the sum of the contents of GPR RA and D, a 16-bit signed two's complement integer sign-extended to 32 bits. If GPR RA is 0, then the EA is D.
If GPR RA is not 0 and the storage access does not cause an Alignment Interrupt or a Data Storage Interrupt, then EA is placed into GPR RA.
`, "tooltip": "Store Word with Update", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-stwu-stu-store-word-update-instruction" }; case "STUX": case "STWUX": return { "html": `The stwux and stux instructions store the contents of general-purpose register (GPR) RS into the word of storage addressed by the effective address (EA).
If GPR RA is not 0, the EA is the sum of the contents of GPR RA and GPR RB. If GPR RA is 0, then the EA is the contents of GPR RB.
If GPR RA is not 0 and the storage access does not cause an Alignment Interrupt or a Data Storage Interrupt, then the EA is placed into GPR RA.
`, "tooltip": "Store Word with Update Indexed", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-stwux-stux-store-word-update-indexed-instruction" }; case "STX": case "STWX": return { "html": `The stwx and stx instructions store the contents of general-purpose register (GPR) RS into the word of storage addressed by the effective address (EA).
If GPR RA is not 0, the EA is the sum of the contents of GPR RA and GPR RB. If GPR RA is 0, then the EA is the contents of GPR RB.
`, "tooltip": "Store Word Indexed", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-stwx-stx-store-word-indexed-instruction" }; case "SUBF": case "SUBF.": case "SUBFO": case "SUBFO.": return { "html": `The subf instruction adds the ones complement of the contents of general-purpose register (GPR) RA and 1 to the contents of GPR RB and stores the result in the target GPR RT.
`, "tooltip": "Subtract From", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-subf-subtract-from-instruction" }; case "SF": case "SF.": case "SFO": case "SFO.": case "SUBFC": case "SUBFC.": case "SUBFCO": case "SUBFCO.": return { "html": `The subfc and sf instructions add the ones complement of the contents of general-purpose register (GPR) RA and 1 to the contents of GPR RB and stores the result in the target GPR RT.
`, "tooltip": "Subtract from Carrying", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-subfc-sf-subtract-from-carrying-instruction" }; case "SFE": case "SFE.": case "SFEO": case "SFEO.": case "SUBFE": case "SUBFE.": case "SUBFEO": case "SUBFEO.": return { "html": `The subfe and sfe instructions add the value of the Fixed-Point Exception Register Carry bit, the contents of general-purpose register (GPR) RB, and the one's complement of the contents of GPR RA and store the result in the target GPR RT.
`, "tooltip": "Subtract from Extended", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-subfe-sfe-subtract-from-extended-instruction" }; case "SFI": case "SUBFIC": return { "html": `The subfic and sfi instructions add the one's complement of the contents of general-purpose register (GPR) RA, 1, and a 16-bit signed integer SI. The result is placed in the target GPR RT.
`, "tooltip": "Subtract from Immediate Carrying", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-subfic-sfi-subtract-from-immediate-carrying-instruction" }; case "SFME": case "SFME.": case "SFMEO": case "SFMEO.": case "SUBFME": case "SUBFME.": case "SUBFMEO": case "SUBFMEO.": return { "html": `The subfme and sfme instructions add the one's complement of the contents of general-purpose register(GPR) RA, the Carry Bit of the Fixed-Point Exception Register, and x'FFFFFFFF' and place the result in the target GPR RT.
`, "tooltip": "Subtract from Minus One Extended", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=is-subfme-sfme-subtract-from-minus-one-extended-instruction" }; case "SFZE": case "SFZE.": case "SFZEO": case "SFZEO.": case "SUBFZE": case "SUBFZE.": case "SUBFZEO": case "SUBFZEO.": return { "html": `The subfze and sfze instructions add the one's complement of the contents of general-purpose register (GPR) RA, the Carry bit of the Fixed-Point Exception Register, and x'00000000' and store the result in the target GPR RT.
`, "tooltip": "Subtract from Zero Extended", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-subfze-sfze-subtract-from-zero-extended-instruction" }; case "SVC": case "SVCL": case "SVCA": case "SVCLA": return { "html": `The svc instruction generates a supervisor call interrupt and places bits 16-31 of the svc instruction into bits 0-15 of the Count Register (CR) and bits 16-31 of the Machine State Register (MSR) into bits 16-31 of the CR.
`, "tooltip": "Supervisor Call", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-svc-supervisor-call-instruction" }; case "SYNC": case "DCS": return { "html": `The PowerPC® instruction, sync, provides an ordering function that ensures that all instructions initiated prior to the sync instruction complete, and that no subsequent instructions initiate until after the sync instruction completes. When the sync instruction completes, all storage accesses initiated prior to the sync instruction are complete.
The POWER® family instruction, dcs, causes the processor to wait until all data cache lines being written or scheduled for writing to main memory have finished writing.
`, "tooltip": "Synchronize or Data Cache Synchronize", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-sync-synchronize-dcs-data-cache-synchronize-instruction" }; case "TD": return { "html": `The td instruction generates a program interrupt when a specific condition is true.
The contents of general-purpose register (GPR) RA are compared with the contents of GPR RB. If any bit in the TO field is set and its corresponding condition is met by the result of the comparison, then a trap-type program interrupt is generated.
`, "tooltip": "Trap Double Word", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-td-trap-double-word-instruction" }; case "TDI": return { "html": `The tdi instruction generates a program interrupt when a specific condition is true.
The contents of general-purpose register RA are compared with the sign-extended value of the SIMM field. If any bit in the TO field is set and its corresponding condition is met by the result of the comparison, then the system trap handler is invoked.
`, "tooltip": "Trap Double Word Immediate", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-tdi-trap-double-word-immediate-instruction" }; case "TLBI": case "TLBIE": return { "html": `The PowerPC® instruction tlbie searches the Translation Look-Aside Buffer (TLB) for an entry corresponding to the effective address (EA). The search is done regardless of the setting of Machine State Register (MSR) Instruction Relocate bit or the MSR Data Relocate bit. The search uses a portion of the EA including the least significant bits, and ignores the content of the Segment Registers. Entries that satisfy the search criteria are made invalid so will not be used to translate subsequent storage accesses.
The POWER® family instruction tlbi expands the EA to its virtual address and invalidates any information in the TLB for the virtual address, regardless of the setting of MSR Instruction Relocate bit or the MSR Data Relocate bit. The EA is placed into the general-purpose register (GPR) RA.
`, "tooltip": "Translation Look-Aside Buffer Invalidate Entry", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=is-tlbie-tlbi-translation-look-aside-buffer-invalidate-entry-instruction" }; case "TLBLD": return { "html": `The tlbld instruction loads the data Translation Look-Aside Buffer (TLB) entry to assist a TLB reload function performed in software on the PowerPC 603 RISC Microprocessor.
`, "tooltip": "Load Data TLB Entry", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-tlbld-load-data-tlb-entry-instruction" }; case "TLBLI": return { "html": `The tlbli instruction loads the instruction Translation Look-Aside Buffer (TLB) entry to assist a TLB reload function performed in software on the PowerPC 603 RISC Microprocessor.
`, "tooltip": "Load Instruction TLB Entry", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-tlbli-load-instruction-tlb-entry-instruction" }; case "TLBSYNC": return { "html": `The tlbsync instruction ensures that a tlbie and tlbia instruction executed by one processor has completed on all other processors.
`, "tooltip": "Translation Look-Aside Buffer Synchronize", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-tlbsync-translation-look-aside-buffer-synchronize-instruction" }; case "T": case "TW": return { "html": `The tw and t instructions compare the contents of general-purpose register (GPR) RA with the contents of GPR RB, AND the compared results with TO, and generate a trap-type Program Interrupt if the result is not 0.
`, "tooltip": "Trap Word", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-tw-t-trap-word-instruction" }; case "TI": case "TWI": return { "html": `The twi and ti instructions compare the contents of general-purpose register (GPR) RA with the sign extended SI field, AND the compared results with TO, and generate a trap-type program interrupt if the result is not 0.
`, "tooltip": "Trap Word Immediate", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-twi-ti-trap-word-immediate-instruction" }; case "XOR": case "XOR.": return { "html": `The xor instruction XORs the contents of general-purpose register (GPR) RS with the contents of GPR RB and stores the result in GPR RA.
`, "tooltip": "XOR", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-xor-xor-instruction" }; case "XORI": case "XORIL": return { "html": `The xori and xoril instructions XOR the contents of general-purpose register (GPR) RS with the concatenation of x'0000' and a 16-bit unsigned integer UI and store the result in GPR RA.
`, "tooltip": "XOR Immediate", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-xori-xoril-xor-immediate-instruction" }; case "XORIS": case "XORIU": return { "html": `The xoris and xoriu instructions XOR the contents of general-purpose register (GPR) RS with the concatenation of a 16-bit unsigned integer UI and 0x'0000' and store the result in GPR RA.
`, "tooltip": "XOR Immediate Shift", "url": "https://www.ibm.com/docs/en/aix/7.3?topic=set-xoris-xoriu-xor-immediate-shift-instruction" }; } };