EP0847551B1

A set of instructions for operating on packed data

Abstract

This record has no abstract on file.

EP0847551B1, drawing sheet 1
Sheet 1 of 55

Term

Term ended

Expired 17 July 2016, 10.2 years ago.

  1. Priority
  2. Filed
  3. Granted
  4. Expired
  5. Today

11 claims: 2 independent, 9 dependent

  1. 1
    An apparatus (109) comprising:a storage area (150) to store data including packed data each having a plurality of data elements;an execution unit (130) to perform operations specified by a packed data instruction set (140) having a format identifying a first source data (SRC1) and a second source data (SRC2), wherein said packed data instruction set specifies at least operations including, one or more unpack type operations (2003) that each cause generation and storage in said storage area of a result packed data comprising less than all data elements from said first source data interleaved with corresponding ones of data elements from said second source data;one or more pack type operations (1803) that each cause generation and storage in said storage area of a result packed data comprising a multiple bit part from each data element in said first source data and said second source data;one or more packed multiply type operations (1203) that each cause generation and storage in said storage area of a result packed data comprising, as separate result elements, only high or low order bits resulting from each data element of said first source data multiplied with a corresponding data element of said second source data;one or more packed add type operations (703) that each cause generation and storage in said storage area of a result packed data comprising, as separate result elements, each data element of said first source data added with a corresponding data element of said second source data;and one or more packed subtract type (712) operations that each cause generation and storage in said storage area of a result packed data comprising, as separate result elements, each data element of said second source data subtracted from a corresponding data element of said first source data;one or more packed compare type operations (2803) that each cause generation and storage in said storage area of a result packed data comprising, as separate result elements, masks representing a corresponding comparison of one of each data element in said first source data against a corresponding data element in said second source data, those of said masks whose corresponding comparison was satisfied each including a plurality of bits all having a first predetermined value, those of said masks whose corresponding comparison was not satisfied each including a plurality of bits all having a second predetermined value;one or more multiply add type operations (1403) that each cause generation and storage in said storage area of a result packed data comprising a first result element and a second result element, said first and second result elements being stored without summing said first and second result elements, wherein said first result element represents a first sum of the results of multiplying two pairs of corresponding data elements from said first source data and said second source data, wherein said second result element represents a second sum of the results of multiplying a different two pairs of corresponding data elements from said first source data and said second source data, said first and second result elements having a higher precision than each data element from said first and second source data used to generate said first and second result elements;and one or more packed shift type operations (1603) that each cause generation and storage in said storage area of a result packed data comprising, as separate result elements, said first source data having each data element shifted by an amount specified by said second source data with said amount of bits for each data element ` filled, if needed, with a fill value.
  2. 7
    A method comprising:receiving a plurality of packed data instructions each specifying an operation to be performed on a first source data (SRC1) and a second source data (SRC2) identified by that instruction ;performing an unpack type operation (2003) responsive to receiving a first instruction that causes generation and storage in a storage area of a result packed data comprising less than all data elements from said first source data interleaved with corresponding ones of data elements from said second source data;performing a pack type operation !1803) responsive to receiving a second instruction that causes generation and storage in said storage area of a result packed data comprising a multiple bit part from each data element in said first source data and said second source data;performing a packed multiply type operation (1203) responsive to receiving a third instruction that causes generation and storage in said storage area of a result packed data comprising, as separate result elements, only high or low order bits resulting from each data element of said first source data multiplied with a corresponding data element of said second source data;performing a packed add type operation (703) responsive to receiving a fourth instruction that causes generation and storage in said storage area of a result packed data comprising, as separate result elements, each data element of said first source data added with a corresponding data element of said second source data;and performing a packed subtract type operation (712) responsive to receiving a fifth instruction that causes generation and storage in said storage area of a result packed data comprising, as separate result elements, each data element of said second source data subtracted from a corresponding data element of said first source data;performing a packed compare type operation (2803) responsive to receiving a sixth instruction that causes generation and storage in said storage area of a result packed data comprising, as separate result elements, masks representing a corresponding comparison of one of each data element in said first packed data against a corresponding data element in said second packed data, those of said masks whose corresponding comparison was satisfied each including a plurality of bits all having a first predetermined value, those of said masks whose corresponding comparison was not satisfied each including a plurality of bits all having a second predetermined value;performing a multiply add type operation (1403) responsive to receiving a seventh instruction that causes generation and storage in said storage area of a result packed data comprising a first result element and a second result element, said first and second result elements being stored without summing said first and second result elements, wherein said first result element represents a first sum of the results of multiplying two pairs of corresponding data elements from said first source data and said second source data, wherein said second result element represents a second sum of the results of multiplying a different two pairs of corresponding data elements from said first source data and said second source data, said first and second result elements having a higher precision than each data element from said first and second source data used to generate said first and second result elements;and performing a packed shift type operation (1603) responsive to receiving an eighth instruction that causes generation and storage in said storage area of a result packed data comprising, as separate result elements, said first source data having each data element shifted by an amount specified by said second source data with said amount of bits for each data element filled, if needed, with a fill value.