Back to results
US 10,303,471 B2Granted
Systems, apparatuses, and methods for performing a double blocked sum of absolute differences
AssigneeIntel Corporation
InventorsElmoustapha Ould-Ahmed-Vall, Mostafa Hagog, Robert Valentine, Amit Gradstein, Simon Rubanovich, Zeev Sperber
Life of this patent
Estimating the term…
Abstract
Embodiments of systems, apparatuses, and methods for performing in a computer processor vector double block packed sum of absolute differences (SAD) in response to a single vector double block packed sum of absolute differences instruction that includes a destination vector register operand, first and second source operands, an immediate, and an opcode are described.
Claims17
A method comprising:
- decoding a single instruction including a field to identify a destination vector register operand, fields to identify first and second source operands, an immediate field, and an opcode to indicate to execution circuitry to perform vector double block packed sum of absolute differences (SAD);
- executing, in execution circuitry, the single instruction to, on a per data lane basis, compute a SAD of selected quadruplets of data elements of the identified first and second source operands and storing the four calculated SADs in each 64-bit lane of the identified destination vector register operand, wherein the stored SADs comprise:
- in a least significant position of the identified destination vector register operand, the stored SAD is an absolute value of a least significant data element position of the identified first source operand minus a least significant data element position of the identified second source operand that is added to an absolute value of a second-most least significant data element position of the identified first source operand minus a second-most least significant data element position of the identified second source operand that is added to an absolute value of a third-most least significant data element position of the identified first source operand minus a third-most least significant data element position of the identified second source operand that is added to an absolute value of a fourth-most least significant data element position of the identified first source operand minus a fourth-most least significant data element position of the identified second source operand;
- in a second-most least significant position of the identified destination vector register operand, the stored SAD is an absolute value of a least significant data element position of the identified first source operand minus a second-most least significant data element position of the identified second source operand that is added to an absolute value of a second-most least significant data element position of the identified first source operand minus a third-most least significant data element position of the identified second source operand that is added to an absolute value of a third-most least significant data element position of the identified first source operand minus a fourth-most least significant data element position of the identified second source operand that is added to an absolute value of a fourth-most least significant data element position of the identified first source operand minus a fifth-most least significant data element position of the identified second source operand;
- in a third-most least significant position of the identified destination vector register operand, the stored SAD is an absolute value of a fifth-most least significant data element position of the identified first source operand minus a third-most least significant data element position of the identified second source operand that is added to an absolute value of a sixth-most least significant data element position of the identified first source operand minus a fourth-most least significant data element position of the identified second source operand that is added to an absolute value of a seventh-most least significant data element position of the identified first source operand minus a fifth-most least significant data element position of identified second source operand that is added to an absolute value of a eighth-most least significant data element position of the identified first source operand minus a sixth-most least significant data element position of the identified second source operand;
- and
- in a fourth-most least significant position of the identified destination vector register operand, the stored SAD is an absolute value of a fifth-most least significant data element position of the identified first source operand minus a fourth-most least significant data element position of the identified second source operand that is added to an absolute value of a sixth-most least significant data element position of the identified first source operand minus a fifth-most least significant data element position of the identified second source operand that is added to an absolute value of a seventh-most least significant data element position of the identified first source operand minus a sixth-most least significant data element position of the identified second source operand that is added to an absolute value of a eighth-most least significant data element position of the identified first source operand minus a seventh-most least significant data element position of the identified second source operand.
4 more elements
An article of manufacture comprising:
- a non-transitory tangible machine-readable storage medium having stored thereon an occurrence of an instruction, wherein the instruction's format specifies as its source operands a first and second source and an immediate and specifies as its destination a single destination vector register, and wherein the instruction format includes an opcode which instructs a machine, responsive to the single occurrence of the single instruction, to cause on a per data lane basis, a computation of a SAD of selected quadruplets of data elements of the first and second sources and storage of the four calculated SADs in each 64-bit lane of the identified destination vector register, wherein the stored SADs comprise:
- in a least significant position of the destination register, the stored SAD is an absolute value of a least significant data element position of the first source minus a least significant data element position of the second source that is added to an absolute value of a second-most least significant data element position of the first source minus a second-most least significant data element position of the second source that is added to an absolute value of a third-most least significant data element position of the first source minus a third-most least significant data element position of the second source that is added to an absolute value of a fourth-most least significant data element position of the first source minus a fourth-most least significant data element position of the second source;
- in a second-most least significant position of the destination register, the stored SAD is an absolute value of a least significant data element position of the first source minus a second-most least significant data element position of the second source that is added to an absolute value of a second-most least significant data element position of the first source minus a third-most least significant data element position of the second source that is added to an absolute value of a third-most least significant data element position of the first source minus a fourth-most least significant data element position of the second source that is added to an absolute value of a fourth-most least significant data element position of the first source minus a fifth-most least significant data element position of the second source;
- in a third-most least significant position of the destination register, the stored SAD is an absolute value of a fifth-most least significant data element position of the first source minus a third-most least significant data element position of the second source that is added to an absolute value of a sixth-most least significant data element position of the first source minus a fourth-most least significant data element position of the second source that is added to an absolute value of a seventh-most least significant data element position of the first source minus a fifth-most least significant data element position of the second source that is added to an absolute value of a eighth-most least significant data element position of the first source minus a sixth-most least significant data element position of the second source;
- and
- in a fourth-most least significant position of the destination register, the stored SAD is an absolute value of a fifth-most least significant data element position of the first source minus a fourth-most least significant data element position of the second source that is added to an absolute value of a sixth-most least significant data element position of the first source minus a fifth-most least significant data element position of the second source that is added to an absolute value of a seventh-most least significant data element position of the first source minus a sixth-most least significant data element position of the second source that is added to an absolute value of a eighth-most least significant data element position of the first source minus a seventh-most least significant data element position of the second source.
3 more elements
An apparatus comprising;
- a hardware decoder to decode an instruction including a field to identify a destination vector register operand, fields to identify first and second source operands, an immediate field, and an opcode to indicate to execution circuitry to perform vector double block packed sum of absolute differences (SAD);
- execution circuitry to execute the decoded single instruction to, on a per data lane basis, compute a SAD of selected quadruplets of data elements of the identified first and second source operands and store the four calculated SADs in each 64-bit lane of the identified destination vector register operand, wherein the stored SADs comprise:
- in a least significant position of the identified destination vector register operand, the stored SAD is an absolute value of a least significant data element position of the identified first source operand minus a least significant data element position of the identified second source operand that is added to an absolute value of a second-most least significant data element position of the identified first source operand minus a second-most least significant data element position of the identified second source operand that is added to an absolute value of a third-most least significant data element position of the identified first source operand minus a third-most least significant data element position of the identified second source operand that is added to an absolute value of a fourth-most least significant data element position of the identified first source operand minus a fourth-most least significant data element position of the identified second source operand;
- in a second-most least significant position of the identified destination vector register operand, the stored SAD is an absolute value of a least significant data element position of the identified first source operand minus a second-most least significant data element position of the identified second source operand that is added to an absolute value of a second-most least significant data element position of the identified first source operand minus a third-most least significant data element position of the identified second source operand that is added to an absolute value of a third-most least significant data element position of the identified first source operand minus a fourth-most least significant data element position of the identified second source operand that is added to an absolute value of a fourth-most least significant data element position of the identified first source operand minus a fifth-most least significant data element position of the identified second source operand;
- in a third-most least significant position of the identified destination vector register operand, the stored SAD is an absolute value of a fifth-most least significant data element position of the identified first source operand minus a third-most least significant data element position of the identified second source operand that is added to an absolute value of a sixth-most least significant data element position of the identified first source operand minus a fourth-most least significant data element position of the identified second source operand that is added to an absolute value of a seventh-most least significant data element position of the identified first source operand minus a fifth-most least significant data element position of identified second source operand that is added to an absolute value of a eighth-most least significant data element position of the identified first source operand minus a sixth-most least significant data element position of the identified second source operand;
- and
- in a fourth-most least significant position of the identified destination vector register operand, the stored SAD is an absolute value of a fifth-most least significant data element position of the identified first source operand minus a fourth-most least significant data element position of the identified second source operand that is added to an absolute value of a sixth-most least significant data element position of the identified first source operand minus a fifth-most least significant data element position of the identified second source operand that is added to an absolute value of a seventh-most least significant data element position of the identified first source operand minus a sixth-most least significant data element position of the identified second source operand that is added to an absolute value of a eighth-most least significant data element position of the identified first source operand minus a seventh-most least significant data element position of the identified second source operand.
4 more elements
Dependencies are inferred from the claim text.