Fusible instructions and logic to provide OR-test and AND-test functionality using multiple test sources

US9483266B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-9483266-B2
Application numberUS-201313843020-A
CountryUS
Kind codeB2
Filing dateMar 15, 2013
Priority dateMar 15, 2013
Publication dateNov 1, 2016
Grant dateNov 1, 2016

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

Fusible instructions and logic provide OR-test and AND-test functionality on multiple test sources. Some embodiments include a processor decode stage to decode a test instruction for execution, the instruction specifying first, second and third source data operands, and an operation type. Execution units, responsive to the decoded test instruction, perform one logical operation, according to the specified operation type, between data from the first and second source data operands, and perform a second logical operation between the data from the third source data operand and the result of the first logical operation to set a condition flag. Some embodiments generate the test instruction dynamically by fusing one logical instruction with a prior-art test instruction. Other embodiments generate the test instruction through a just-in-time compiler. Some embodiments also fuse the test instruction with a subsequent conditional branch instruction, and perform a branch according to how the condition flag is set.

First claim

Opening claim text (preview).

What is claimed is: 1. A processor comprising: a decode stage to decode a first instruction for execution, the first instruction specifying a first operand source data, a second operand source data, a third operand source data, and an operation type, wherein when said decode stage decodes the first instruction, it fuses the first instruction with a branch instruction for execution as a single fused micro-operation; and one or more execution units, responsive to the decoded first instruction, to: perform a first logical operation, according to the specified operation type, between data from the first and second operand sources, and perform a second logical operation between the data from the third operand source and the result of the first logical operation to conditionally set a condition flag; and wherein said one or more execution units, responsive to the single fused micro-operation, perform the first logical operation, test the result of the first logical operation against the third source data operand to conditionally set a zero flag, and conditionally branch if the zero flag gets set. 2. The processor of claim 1 , wherein performing the second logical operation comprises a logical AND operation and conditionally sets the zero flag. 3. The processor of claim 2 , wherein according to the specified operation type, a logical AND is performed between data from the first and second operands' source data. 4. The processor of claim 2 , wherein according to the specified operation type, a logical OR is performed between data from the first and second operands' source data. 5. A processor comprising: a decode stage to decode: a first instruction specifying a first source data operand, a second source data operand, and a third source data operand, and a second instruction specifying a branch target; said decode stage to fuse the first instruction with the second instruction for execution as a single fused micro-operation; and one or more execution units, responsive to the single fused micro-operation, to: perform a first logical operation between data from the first source data operand and the second source data operand, perform a second logical operation to test the data from the third source data operand and the result of the first logical operation to set a zero condition flag, and perform a conditional branch to the branch target if the zero condition flag gets set. 6. The processor of claim 5 , wherein performing the second logical operation comprises a logical TEST operation and conditionally sets the zero condition flag. 7. The processor of claim 6 , wherein according to the first instruction, a logical AND is performed between data from the first source data operand and the second source data operand. 8. The processor of claim 6 , wherein according to the first instruction, a logical OR is performed between data from the first source/destination data operand and the second source data operand. 9. A method comprising: decoding a first instruction for execution, the first instruction specifying a first source data operand, a second source data operand, a third source data operand, and an operation type; responsive to the decoded first instruction: performing a first logical operation, according to the specified operation type, between data from the first and second source data operands, and performing a second logical operation between the data from the third source data operand and the result of the first logical operation to set a condition flag; fusing the first instruction with a branch instruction for execution as a single fused micro-operation; and responsive to the single fused micro-operation, comprising: performing the first logical operation, testing the result of the first logical operation against the third source data operand to conditionally sets a zero flag, and conditionally branching if the zero flag gets set. 10. The method of claim 9 , wherein performing the second logical operation comprises performing a logical AND operation and conditionally setting the zero flag. 11. The method of claim 10 , wherein according to the specified operation type, a logical AND is performed between data from the first and second source data operands. 12. The method of claim 10 , wherein according to the specified operation type, a logical OR is performed between data from the first and second source data operands. 13. A processing system comprising: a memory; and a plurality of processors including a first processor core and a second processor core each processor comprising: a decode stage to decode a first instruction for execution, the first instruction specifying a first operand source data, a second operand source data, a third operand source data, and an operation type, wherein when said decode stage decodes the first instruction, it fuses the first instruction with a branch instruction for execution as a single fused micro-operation; and one or more execution units, responsive to the decoded first instruction, to: perform a first logical operation, according to the specified operation type, between data from the first and second operand sources, and perform a second logical operation between the data from the third operand source and the result of the first logical operation to conditionally set a condition flag; and wherein said one or more execution units, responsive to the single fused micro-operation, perform the first logical operation, test the result of the first logical operation against the third source data operand to conditionally set a zero flag, and conditionally branch if the zero flag gets set. 14. The processing system of claim 13 , wherein performing the second logical operation comprises a logical TEST operation and conditionally sets the zero flag. 15. The processing system of claim 14 , wherein according to the first instruction, a logical AND is performed between data from the first source/destination data operand and the second source data operand. 16. The processing system of claim 14 , wherein according to the first instruction, a logical OR is performed between data from the first source/destination data operand and the second source data operand.

Assignees

Inventors

Classifications

  • Condition code generation, e.g. Carry, Zero flag · CPC title

  • Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution · CPC title

  • Instruction operation extension or modification · CPC title

  • using decoder, e.g. decoder per instruction set, adaptable or programmable decoders · CPC title

  • Logical and Boolean instructions, e.g. XOR, NOT · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US9483266B2 cover?
Fusible instructions and logic provide OR-test and AND-test functionality on multiple test sources. Some embodiments include a processor decode stage to decode a test instruction for execution, the instruction specifying first, second and third source data operands, and an operation type. Execution units, responsive to the decoded test instruction, perform one logical operation, according to th…
Who is the assignee on this patent?
Loktyukhin Maxim, Valentine Robert, Horn Julian C, and 2 more
What technology area does this patent fall under?
Primary CPC classification G06F9/30029. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Nov 01 2016 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 8 related publications on this page (citations in our corpus or others sharing the same primary CPC).