Book Image

LLVM Cookbook

Book Image

LLVM Cookbook

Overview of this book

Table of Contents (16 chapters)
LLVM Cookbook
Credits
About the Authors
About the Reviewers
www.PacktPub.com
Preface
Index

Defining the instruction set


The instruction set of an architecture varies according to various features present in the architecture. This recipe demonstrates how instruction sets are defined for target architecture.

Three things are defined in the instruction target description file: operands, the assembly string and the instruction pattern. The specification contains a list of definitions or outputs, and a list of uses or inputs. There can be different operand classes, such as the Register class, and the immediate and more complex register + imm operands.

Here, a simple add instruction definition that takes two registers as operands is demonstrated.

How to do it…

To define an instruction set using target descriptor files, proceed with the following steps.

  1. Create a new file called TOYInstrInfo.td in the lib/Target/TOY folder:

    $ vi TOYInstrInfo.td
    
  2. Specify the operands, assembly string, and instruction pattern for the add instruction between two register operands:

    def ADDrr : InstTOY<(outs GRRegs...