/*
 *      Interactive disassembler (IDA).
 *      Copyright (c) 1990-99 by Ilfak Guilfanov.
 *      ALL RIGHTS RESERVED.
 *                              E-mail: ig@datarescue.com
 *
 *
 */

#include "tms320c3x.hpp"


struct instruc_t Instructions[] = {

{ "",		0				},	// Unknown Operation
{ "absf",	CF_USE1|CF_CHG2			},	// Absolute value of a floating-point number
{ "absi",	CF_USE1|CF_CHG2			},	// Absolute value of an integer
{ "addc",	CF_USE1|CF_USE2|CF_CHG2		},	// Add integers with carry
{ "addf",	CF_USE1|CF_USE2|CF_CHG2		},	// Add Floating-Point Values
{ "addi",	CF_USE1|CF_USE2|CF_CHG2		},	// Add Integer
{ "and",	CF_USE1|CF_USE2|CF_CHG2		},	// Bitwise-Logical AND
{ "andn",	CF_USE1|CF_USE2|CF_CHG2		},	// Bitwise-Logical AND With Complement
{ "ash",	CF_USE1|CF_USE2|CF_CHG2|CF_SHFT	},	// Arithmetic Shift
{ "cmpf",	CF_USE1|CF_USE2			},	// Compare Floating-Point Value
{ "cmpi",	CF_USE1|CF_USE2			},	// Compare Integer
{ "fix",	CF_USE1|CF_CHG2			},	// Floating-Point-to-Integer Conversion
{ "float",	CF_USE1|CF_CHG2			},	// Integer-to-Floating-Point Conversion
{ "idle",	CF_STOP				},	// Idle Until Interrupt
{ "idle2",	CF_STOP				},	// Low-Power Idle
{ "lde",	CF_USE1|CF_CHG2			},	// Load Floating-Point Exponent
{ "ldf",	CF_USE1|CF_CHG2			},	// Load Floating-Point Value
{ "ldfi",	CF_USE1|CF_CHG2			},	// Load Floating-Point Value, Interlocked
{ "ldi",	CF_USE1|CF_CHG2			},	// Load Integer
{ "ldii",	CF_USE1|CF_CHG2			},	// Load Integer, Interlocked
{ "ldm",	CF_USE1|CF_CHG2			},	// Load Floating-Point Mantissa
{ "lsh",	CF_USE1|CF_USE2|CF_CHG2|CF_SHFT	},	// Logical Shift
{ "mpyf",	CF_USE1|CF_USE2|CF_CHG2		},	// Multiply Floating-Point Value
{ "mpyi",	CF_USE1|CF_USE2|CF_CHG2		},	// Multiply Integer
{ "negb",	CF_USE1|CF_CHG2			},	// Negative Integer With Borrow
{ "negf",	CF_USE1|CF_CHG2			},	// Negate Floating-Point Value
{ "negi",	CF_USE1|CF_CHG2			},	// Negate Integer
{ "nop",	0				},	// No Operation
{ "norm",	CF_USE1|CF_CHG2			},	// Normalize
{ "not",	CF_USE1|CF_CHG2			},	// Bitwise-Logical Complement
{ "pop",	CF_CHG1				},	// Pop Integer
{ "popf",	CF_CHG1				},	// Pop Floating-Point Value
{ "push",	CF_USE1				},	// PUSH Integer
{ "pushf",	CF_USE1				},	// PUSH Floating-Point Value
{ "or",		CF_USE1|CF_USE2|CF_CHG2		},	// Bitwise-Logical OR
{ "lopower",	0				},	// Divide Clock by 16
{ "maxspeed",	0				},	// Restore Clock to Regular Speed
{ "rnd",	CF_USE1|CF_CHG2			},	// Round Floating-Point Value
{ "rol",	CF_USE1|CF_CHG1			},	// Rotate Left
{ "rolc",	CF_USE1|CF_CHG1			},	// Rotate Left Through Carry
{ "ror",	CF_USE1|CF_CHG1			},	// Rotate Right
{ "rorc",	CF_USE1|CF_CHG1			},	// Rotate Right Through Carry
{ "rpts",	CF_USE1				},	// Repeat Single Instruction
{ "stf",	CF_USE1|CF_CHG2			},	// Store Floating-Point Value
{ "stfi",	CF_USE1|CF_CHG2			},	// Store Floating-Point Value, Interlocked
{ "sti",	CF_USE1|CF_CHG2			},	// Store Integer
{ "stii",	CF_USE1|CF_CHG2			},	// Store Integer, Interlocked
{ "sigi",	0				},	// Signal, Interlocked
{ "subb",	CF_USE1|CF_USE2|CF_CHG2		},	// Subtract Integer With Borrow
{ "subc",	CF_USE1|CF_USE2|CF_CHG2		},	// Subtract Integer Conditionally
{ "subf",	CF_USE1|CF_USE2|CF_CHG2		},	// Subtract Floating-Point Value
{ "subi",	CF_USE1|CF_USE2|CF_CHG2		},	// Subtract Integer
{ "subrb",	CF_USE1|CF_USE2|CF_CHG2		},	// Subtract Reverse Integer With Borrow
{ "subrf",	CF_USE1|CF_USE2|CF_CHG2		},	// Subtract Reverse Floating-Point Value
{ "subri",	CF_USE1|CF_USE2|CF_CHG2		},	// Subtract Reverse Integer
{ "tstb",	CF_USE1|CF_USE2			},	// Test Bit Fields
{ "xor",	CF_USE1|CF_USE2|CF_CHG2		},	// Bitwise-Exclusive OR
{ "iack",	0				},	// Interrupt acknowledge
{ "addc3",	CF_USE1|CF_USE2|CF_CHG3		},	// Add integers with carry (3-operand)
{ "addf3",	CF_USE1|CF_USE2|CF_CHG3		},	// Add floating-point values (3-operand)
{ "addi3",	CF_USE1|CF_USE2|CF_CHG3		},	// Add integers (3 operand)
{ "and3",	CF_USE1|CF_USE2|CF_CHG3		},	// Bitwise-logical AND (3-operand)
{ "andn3",	CF_USE1|CF_USE2|CF_CHG3		},	// Bitwise-logical ANDN (3-operand)
{ "ash3",	CF_USE1|CF_USE2|CF_CHG3|CF_SHFT	},	// Arithmetic shift (3-operand)
{ "cmpf3",	CF_USE1|CF_USE2			},	// Compare floating-point values (3-operand)
{ "cmpi3",	CF_USE1|CF_USE2			},	// Compare integers (3-operand)
{ "lsh3",	CF_USE1|CF_USE2|CF_CHG3|CF_SHFT	},	// Logical shift (3-operand)
{ "mpyf3",	CF_USE1|CF_USE2|CF_CHG3		},	// Multiply floating-point value (3-operand)
{ "mpyi3",	CF_USE1|CF_USE2|CF_CHG3		},	// Multiply integers (3-operand)
{ "or3",	CF_USE1|CF_USE2|CF_CHG3		},	// Bitwise-logical OR (3-operand)
{ "subb3",	CF_USE1|CF_USE2|CF_CHG3		},	// Subtract integers with borrow (3-operand)
{ "subf3",	CF_USE1|CF_USE2|CF_CHG3		},	// Subtract floating-point values (3-operand)
{ "subi3",	CF_USE1|CF_USE2|CF_CHG3		},	// Subtract integers (3-operand)
{ "tstb3",	CF_USE1|CF_USE2			},	// Test Bit Fields, 3-Operand
{ "xor3",	CF_USE1|CF_USE2|CF_CHG3		},	// Bitwise-Exclusive OR, 3-Operand
{ "ldf",	CF_USE1|CF_CHG2			},	// Load floating-point value conditionally
{ "ldi",	CF_USE1|CF_CHG2			},	// Load integer conditionally
{ "br",		CF_USE1|CF_JUMP|CF_STOP		},	// Branch unconditionally (standard)
{ "brd",	CF_USE1|CF_JUMP			},	// Branch unconditionally (delayed)
{ "call",	CF_USE1|CF_CALL			},	// Call subroutine
{ "rptb",	CF_USE1			 	},	// Repeat block of instructions
{ "swi",	CF_JUMP				},	// Software Interrupt
{ "b",		CF_USE1|CF_JUMP			},	// Branch conditionally
{ "db",		CF_USE1|CF_USE2|CF_JUMP		},	// Decrement and branch conditionally
{ "call",	CF_USE1|CF_CALL			},	// Call subroutine conditionally
{ "trap",	CF_USE1|CF_JUMP			},	// Trap Conditionally
{ "reti",	0				},	// Return from interrupt conditionally
{ "rets",	0				},	// Return from subroutine conditionally
{ "retiu",	CF_STOP				},	// Return from interrupt unconditionally
{ "retsu",	CF_STOP				},	// Return from subroutine unconditionally

{ "",		0				},	// Pseudo cmd (more accurate definition need)
{ "",		0				},	// Pseudo cmd (move to next index need)
};


#ifdef __BORLANDC__
#if qnumber(Instructions) != TMS320C3X_last
#error          No match:  sizeof(InstrNames) !!!
#endif
#endif
