# US 2014/0208079 A1 · Vector galois field multiply sum and accumulate instruction

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2014/0208079 A1
- Document ID: US20140208079A1
- Status: Published application
- Kind: A1
- Application number: 13/748,510
- Filed: 2013-01-23
- Published: 2014-07-24
- Earliest claimed: 2013-01-23
- Assignees: International Business Machines Corporation
- Applicants: International Business Machines Corporation
- Inventors: Jonathan D. Bradbury
- Web page: https://patentgrep.com/patent/US20140208079A1

## CPC

- G06F 9/3001: {Arithmetic instructions}
- G06F 9/30018: {Bit or string instructions}
- G06F 9/30029: {Logical and Boolean instructions, e.g. XOR, NOT}
- G06F 9/30032: {Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE}
- G06F 9/30036: {Instructions to perform operations on packed data, e.g. vector, tile or matrix operations}
- G06F 9/30038: {using a mask}
- G06F 9/30149: {of variable length instructions}
- G06F 9/3016: {Decoding the operand specifier, e.g. specifier format}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A Vector Galois Field Multiply Sum and Accumulate instruction. Each element of a second operand of the instruction is multiplied in a Galois field with the corresponding element of the third operand to provide one or more products. The one or more products are exclusively ORed with each other and exclusively ORed with a corresponding element of a fourth operand of the instruction. The results are placed in a selected operand.

## Claims

### Claim 1

A computer program product for executing a machine instruction in a central processing unit, the computer program product comprising:
a computer readable storage medium readable by a processing circuit and storing instructions for execution by the processing circuit for performing a method comprising:
obtaining, by a processor, a machine instruction for execution, the machine instruction being defined for computer execution according to a computer architecture, the machine instruction comprising:
at least one opcode field to provide an opcode, the opcode identifying a Vector Galois Field Multiply Sum and Accumulate operation;
a first register field to be used to designate a first register, the first register comprising a first operand;
a second register field to be used to designate a second register, the second register comprising a second operand;
a third register field to be used to designate a third register, the third register comprising a third operand;
a fourth register field to be used to designate a fourth register, the fourth register comprising a fourth operand; and
executing the machine instruction, the executing comprising:
multiplying one or more elements of the second operand with one or more elements of the third operand using carryless multiplication to obtain a plurality of products;
performing a first mathematical operation on the plurality of products to obtain a first result;
performing a second mathematical operation on the first result and one or more selected elements of the fourth operand to obtain a second result; and
placing the second result in the first operand.

### Claim 2 (depends on 1)

The computer program product of claim 1, wherein the multiplying comprises multiplying each element of the second operand with the corresponding element of the third operand using carryless multiplication resulting in even-odd pairs of double element-sized products.

### Claim 3 (depends on 2)

The computer program product of claim 2, wherein the carryless multiplication has an order of two.

### Claim 4 (depends on 2)

The computer program product of claim 2, wherein the first mathematical operation comprises an exclusive OR operation, and wherein the even-odd pairs of double element-sized products are exclusive ORed with each other to obtain the first result.

### Claim 5 (depends on 4)

The computer program product of claim 4, wherein the second mathematical operation comprises an exclusive OR operation, and wherein the first result is exclusive ORed with a corresponding double-wide element of the fourth operand to obtain the second result.

### Claim 6 (depends on 5)

The computer program product of claim 5, wherein the placing comprises placing the second result in a double-wide element of the first operand.

### Claim 7 (depends on 1)

The computer program product of claim 1, wherein the machine instruction further comprises a mask field to specify a size of elements of one or more of the first operand, the second operand, the third operand or the fourth operand of the machine instruction.

### Claim 8 (depends on 7)

The computer program product of claim 7, wherein the mask field specifies the size of the elements of the second operand and the third operand of the machine instruction.

### Claim 9 (depends on 8)

The computer program product of claim 8, wherein the size of the elements of the first operand and the fourth operand are double the size of the elements of the second operand and the third operand.

### Claim 10 (depends on 1)

The computer program product of claim 1, wherein the machine instruction further comprises an extension field to be used in designating one or more registers, and wherein the first register field is combined with a first portion of the extension field to designate the first register, the second register field is combined with a second portion of the extension field to designate the second register, the third register field is combined with a third portion of the extension field to designate the third register and the fourth register field is combined with a fourth portion of the extension field to designate the fourth register.

### Claim 11

A computer system for executing a machine instruction in a central processing unit, the computer system comprising:
a memory; and
a processor in communications with the memory, wherein the computer system is configured to perform a method, said method comprising:
obtaining, by a processor, a machine instruction for execution, the machine instruction being defined for computer execution according to a computer architecture, the machine instruction comprising:
at least one opcode field to provide an opcode, the opcode identifying a Vector Galois Field Multiply Sum and Accumulate operation;
a first register field to be used to designate a first register, the first register comprising a first operand;
a second register field to be used to designate a second register, the second register comprising a second operand;
a third register field to be used to designate a third register, the third register comprising a third operand;
a fourth register field to be used to designate a fourth register, the fourth register comprising a fourth operand; and
executing the machine instruction, the executing comprising:
multiplying one or more elements of the second operand with one or more elements of the third operand using carryless multiplication to obtain a plurality of products;
performing a first mathematical operation on the plurality of products to obtain a first result;
performing a second mathematical operation on the first result and one or more selected elements of the fourth operand to obtain a second result; and
placing the second result in the first operand.

### Claim 12 (depends on 11)

The computer system of claim 11, wherein the multiplying comprises multiplying each element of the second operand with the corresponding element of the third operand using carryless multiplication resulting in even-odd pairs of double element-sized products.

### Claim 13 (depends on 12)

The computer system of claim 12, wherein the first mathematical operation comprises an exclusive OR operation, and wherein the even-odd pairs of double element-sized products are exclusive ORed with each other to obtain the first result.

### Claim 14 (depends on 13)

The computer system of claim 13, wherein the second mathematical operation comprises an exclusive OR operation, and wherein the first result is exclusive ORed with a corresponding double-wide element of the fourth operand to obtain the second result.

### Claim 15 (depends on 11)

The computer system of claim 11, wherein the machine instruction further comprises a mask field to specify a size of elements of one or more of the first operand, the second operand, the third operand or the fourth operand of the machine instruction.

### Claim 16 (depends on 15)

The computer system of claim 15, wherein the mask field specifies the size of the elements of the second operand and the third operand of the machine instruction, and wherein the size of the elements of the first operand and the fourth operand are double the size of the elements of the second operand and the third operand.

### Claim 17 (depends on 11)

The computer system of claim 11, wherein the machine instruction further comprises an extension field to be used in designating one or more registers, and wherein the first register field is combined with a first portion of the extension field to designate the first register, the second register field is combined with a second portion of the extension field to designate the second register, the third register field is combined with a third portion of the extension field to designate the third register and the fourth register field is combined with a fourth portion of the extension field to designate the fourth register.

### Claim 18

A method for executing a machine instruction in a central processing unit, the method comprising:
obtaining, by a processor, a machine instruction for execution, the machine instruction being defined for computer execution according to a computer architecture, the machine instruction comprising:
at least one opcode field to provide an opcode, the opcode identifying a Vector Galois Field Multiply Sum and Accumulate operation;
a first register field to be used to designate a first register, the first register comprising a first operand;
a second register field to be used to designate a second register, the second register comprising a second operand;
a third register field to be used to designate a third register, the third register comprising a third operand;
a fourth register field to be used to designate a fourth register, the fourth register comprising a fourth operand; and
executing the machine instruction, the executing comprising:
multiplying one or more elements of the second operand with one or more elements of the third operand using carryless multiplication to obtain a plurality of products;
performing a first mathematical operation on the plurality of products to obtain a first result;
performing a second mathematical operation on the first result and one or more selected elements of the fourth operand to obtain a second result; and
placing the second result in the first operand.

### Claim 19 (depends on 18)

The method of claim 18, wherein the machine instruction further comprises a mask field to specify a size of elements of one or more of the first operand, the second operand, the third operand or the fourth operand of the machine instruction.

### Claim 20 (depends on 18)

The method of claim 18, wherein the machine instruction further comprises an extension field to be used in designating one or more registers, and wherein the first register field is combined with a first portion of the extension field to designate the first register, the second register field is combined with a second portion of the extension field to designate the second register, the third register field is combined with a third portion of the extension field to designate the third register and the fourth register field is combined with a fourth portion of the extension field to designate the fourth register.
