• Home
  • Raw
  • Download

Lines Matching refs:insn

271 struct tic30_insn insn;  variable
748 ordinal_names[insn.operands]); in tic30_parallel_insn()
766 ordinal_names[insn.operands]); in tic30_parallel_insn()
783 ordinal_names[insn.operands]); in tic30_parallel_insn()
1423 memset (&insn, '\0', sizeof (insn)); in md_assemble()
1468 insn.tm = op; in md_assemble()
1495 ordinal_names[insn.operands]); in md_assemble()
1509 ordinal_names[insn.operands]); in md_assemble()
1520 ordinal_names[insn.operands]); in md_assemble()
1532 this_operand = insn.operands++; in md_assemble()
1533 if (insn.operands > MAX_OPERANDS) in md_assemble()
1543 insn.operand_type[this_operand] = tic30_operand (token_start); in md_assemble()
1545 if (insn.operand_type[this_operand] == NULL) in md_assemble()
1577 debug ("Number of operands found: %d\n", insn.operands); in md_assemble()
1580 if (insn.operands != insn.tm->operands) in md_assemble()
1583 unsigned int numops = insn.tm->operands; in md_assemble()
1588 for (i = 0; i < insn.tm->operands; i++) in md_assemble()
1589 if (insn.tm->operand_types[i] & NotReq) in md_assemble()
1591 if (insn.operands != numops) in md_assemble()
1597 insn.addressing_mode = AM_NotReq; in md_assemble()
1598 for (count = 0; count < insn.operands; count++) in md_assemble()
1600 if (insn.operand_type[count]->op_type & insn.tm->operand_types[count]) in md_assemble()
1605 if (insn.tm->opcode_modifier == AddressMode) in md_assemble()
1610 if ((insn.tm->operand_types[1] & (Indirect | Direct)) in md_assemble()
1614 if (insn.operand_type[addr_insn]->op_type & (AllReg)) in md_assemble()
1615 insn.addressing_mode = AM_Register; in md_assemble()
1616 else if (insn.operand_type[addr_insn]->op_type & Direct) in md_assemble()
1617 insn.addressing_mode = AM_Direct; in md_assemble()
1618 else if (insn.operand_type[addr_insn]->op_type & Indirect) in md_assemble()
1619 insn.addressing_mode = AM_Indirect; in md_assemble()
1621 insn.addressing_mode = AM_Immediate; in md_assemble()
1632 if ((insn.tm->operand_types[0] & op3T1) in md_assemble()
1633 && (insn.tm->operand_types[1] & op3T2)) in md_assemble()
1638 switch (insn.operand_type[0]->op_type) in md_assemble()
1644 if (insn.operand_type[1]->op_type & (AllReg)) in md_assemble()
1645 insn.addressing_mode = AM_Register; in md_assemble()
1646 else if (insn.operand_type[1]->op_type & Indirect) in md_assemble()
1647 insn.addressing_mode = AM_Direct; in md_assemble()
1656 if (insn.operand_type[1]->op_type & (AllReg)) in md_assemble()
1657 insn.addressing_mode = AM_Indirect; in md_assemble()
1658 else if (insn.operand_type[1]->op_type & Indirect) in md_assemble()
1659 insn.addressing_mode = AM_Immediate; in md_assemble()
1671 insn.opcode = insn.tm->base_opcode; in md_assemble()
1672 if (insn.operand_type[0]->op_type & Indirect) in md_assemble()
1674 insn.opcode |= (insn.operand_type[0]->indirect.ARnum); in md_assemble()
1675 insn.opcode |= (insn.operand_type[0]->indirect.mod << 3); in md_assemble()
1678 insn.opcode |= (insn.operand_type[0]->reg.opcode); in md_assemble()
1680 if (insn.operand_type[1]->op_type & Indirect) in md_assemble()
1682 insn.opcode |= (insn.operand_type[1]->indirect.ARnum << 8); in md_assemble()
1683 insn.opcode |= (insn.operand_type[1]->indirect.mod << 11); in md_assemble()
1686 insn.opcode |= (insn.operand_type[1]->reg.opcode << 8); in md_assemble()
1688 if (insn.operands == 3) in md_assemble()
1689 insn.opcode |= (insn.operand_type[2]->reg.opcode << 16); in md_assemble()
1691 insn.opcode |= insn.addressing_mode; in md_assemble()
1693 md_number_to_chars (p, (valueT) insn.opcode, INSN_SIZE); in md_assemble()
1700 insn.opcode = insn.tm->base_opcode; in md_assemble()
1703 if ((insn.operands > 0) && (insn.tm->opcode_modifier == AddressMode)) in md_assemble()
1705 insn.opcode |= insn.addressing_mode; in md_assemble()
1706 if (insn.addressing_mode == AM_Indirect) in md_assemble()
1709 if (insn.operand_type[0]->op_type & Indirect) in md_assemble()
1711 if ((insn.operands > 1) in md_assemble()
1712 && (insn.operand_type[1]->op_type & Indirect)) in md_assemble()
1714 insn.opcode |= (insn.operand_type[am_insn]->indirect.disp); in md_assemble()
1715 insn.opcode |= (insn.operand_type[am_insn]->indirect.ARnum << 8); in md_assemble()
1716 insn.opcode |= (insn.operand_type[am_insn]->indirect.mod << 11); in md_assemble()
1717 if (insn.operands > 1) in md_assemble()
1718 insn.opcode |= (insn.operand_type[!am_insn]->reg.opcode << 16); in md_assemble()
1719 md_number_to_chars (p, (valueT) insn.opcode, INSN_SIZE); in md_assemble()
1721 else if (insn.addressing_mode == AM_Register) in md_assemble()
1723 insn.opcode |= (insn.operand_type[0]->reg.opcode); in md_assemble()
1724 if (insn.operands > 1) in md_assemble()
1725 insn.opcode |= (insn.operand_type[1]->reg.opcode << 16); in md_assemble()
1726 md_number_to_chars (p, (valueT) insn.opcode, INSN_SIZE); in md_assemble()
1728 else if (insn.addressing_mode == AM_Direct) in md_assemble()
1730 if (insn.operand_type[0]->op_type & Direct) in md_assemble()
1732 if ((insn.operands > 1) in md_assemble()
1733 && (insn.operand_type[1]->op_type & Direct)) in md_assemble()
1735 if (insn.operands > 1) in md_assemble()
1736 insn.opcode |= in md_assemble()
1737 (insn.operand_type[! am_insn]->reg.opcode << 16); in md_assemble()
1738 if (insn.operand_type[am_insn]->direct.resolved == 1) in md_assemble()
1742 insn.opcode |= in md_assemble()
1743 (insn.operand_type[am_insn]->direct.address & 0x0000FFFF); in md_assemble()
1744 md_number_to_chars (p, (valueT) insn.opcode, INSN_SIZE); in md_assemble()
1749 md_number_to_chars (p, (valueT) insn.opcode, INSN_SIZE); in md_assemble()
1751 & insn.operand_type[am_insn]->direct.direct_expr, in md_assemble()
1755 else if (insn.addressing_mode == AM_Immediate) in md_assemble()
1757 if (insn.operand_type[0]->immediate.resolved == 1) in md_assemble()
1762 if (insn.operands > 1) in md_assemble()
1763 insn.opcode |= (insn.operand_type[1]->reg.opcode << 16); in md_assemble()
1765 switch (insn.tm->imm_arg_type) in md_assemble()
1769 md_number_to_chars (p, (valueT) insn.opcode, INSN_SIZE); in md_assemble()
1773 insn.operand_type[0]->immediate.label; in md_assemble()
1786 if (insn.operand_type[0]->immediate.decimal_found) in md_assemble()
1788 if (insn.operand_type[0]->immediate.u_number > 0xFFFF) in md_assemble()
1790 insn.opcode |= in md_assemble()
1791 (insn.operand_type[0]->immediate.u_number & 0x0000FFFFL); in md_assemble()
1792 md_number_to_chars (p, (valueT) insn.opcode, INSN_SIZE); in md_assemble()
1798 if (insn.operand_type[0]->immediate.decimal_found) in md_assemble()
1801 if (insn.operand_type[0]->immediate.s_number < -32768 || in md_assemble()
1802 insn.operand_type[0]->immediate.s_number > 32767) in md_assemble()
1807 insn.opcode |= in md_assemble()
1808 (insn.operand_type[0]->immediate.s_number & 0x0000FFFFL); in md_assemble()
1809 md_number_to_chars (p, (valueT) insn.opcode, INSN_SIZE); in md_assemble()
1816 if (insn.operands > 1) in md_assemble()
1817 insn.opcode |= (insn.operand_type[1]->reg.opcode << 16); in md_assemble()
1818 md_number_to_chars (p, (valueT) insn.opcode, INSN_SIZE); in md_assemble()
1820 & insn.operand_type[0]->immediate.imm_expr, in md_assemble()
1825 else if (insn.tm->opcode_modifier == PCRel) in md_assemble()
1828 if ((insn.tm->operand_types[0] & (AllReg | Disp)) in md_assemble()
1831 if (insn.operand_type[0]->op_type & (AllReg)) in md_assemble()
1833 insn.opcode |= (insn.operand_type[0]->reg.opcode); in md_assemble()
1834 insn.opcode |= PC_Register; in md_assemble()
1835 md_number_to_chars (p, (valueT) insn.opcode, INSN_SIZE); in md_assemble()
1839 insn.opcode |= PC_Relative; in md_assemble()
1840 if (insn.operand_type[0]->immediate.resolved == 1) in md_assemble()
1842 insn.opcode |= in md_assemble()
1843 (insn.operand_type[0]->immediate.s_number & 0x0000FFFF); in md_assemble()
1844 md_number_to_chars (p, (valueT) insn.opcode, INSN_SIZE); in md_assemble()
1848 md_number_to_chars (p, (valueT) insn.opcode, INSN_SIZE); in md_assemble()
1850 2, & insn.operand_type[0]->immediate.imm_expr, in md_assemble()
1855 else if ((insn.tm->operand_types[0] & ARn) == ARn) in md_assemble()
1858 insn.opcode |= ((insn.operand_type[0]->reg.opcode - 0x08) << 22); in md_assemble()
1859 if (insn.operand_type[1]->op_type & (AllReg)) in md_assemble()
1861 insn.opcode |= (insn.operand_type[1]->reg.opcode); in md_assemble()
1862 insn.opcode |= PC_Register; in md_assemble()
1863 md_number_to_chars (p, (valueT) insn.opcode, INSN_SIZE); in md_assemble()
1865 else if (insn.operand_type[1]->immediate.resolved == 1) in md_assemble()
1867 if (insn.operand_type[0]->immediate.decimal_found) in md_assemble()
1872 if (insn.operand_type[0]->immediate.s_number < -32768 || in md_assemble()
1873 insn.operand_type[0]->immediate.s_number > 32767) in md_assemble()
1878 insn.opcode |= (insn.operand_type[1]->immediate.s_number); in md_assemble()
1879 insn.opcode |= PC_Relative; in md_assemble()
1880 md_number_to_chars (p, (valueT) insn.opcode, INSN_SIZE); in md_assemble()
1884 insn.opcode |= PC_Relative; in md_assemble()
1885 md_number_to_chars (p, (valueT) insn.opcode, INSN_SIZE); in md_assemble()
1887 & insn.operand_type[1]->immediate.imm_expr, in md_assemble()
1892 else if (insn.tm->operand_types[0] == IVector) in md_assemble()
1895 if (insn.operand_type[0]->op_type & IVector) in md_assemble()
1896 insn.opcode |= (insn.operand_type[0]->immediate.u_number); in md_assemble()
1903 md_number_to_chars (p, (valueT) insn.opcode, INSN_SIZE); in md_assemble()
1905 else if (insn.tm->opcode_modifier == StackOp in md_assemble()
1906 || insn.tm->opcode_modifier == Rotate) in md_assemble()
1909 insn.opcode |= (insn.operand_type[0]->reg.opcode << 16); in md_assemble()
1910 md_number_to_chars (p, (valueT) insn.opcode, INSN_SIZE); in md_assemble()
1912 else if ((insn.tm->operand_types[0] & (Abs24 | Direct)) in md_assemble()
1917 if (insn.operand_type[0]->op_type & Direct) in md_assemble()
1919 if (insn.operand_type[0]->direct.resolved == 1) in md_assemble()
1922 insn.opcode |= in md_assemble()
1923 (insn.operand_type[0]->direct.address & 0x00FF0000) >> 16; in md_assemble()
1924 md_number_to_chars (p, (valueT) insn.opcode, INSN_SIZE); in md_assemble()
1930 md_number_to_chars (p, (valueT) insn.opcode, INSN_SIZE); in md_assemble()
1932 1, &insn.operand_type[0]->direct.direct_expr, 0, 0); in md_assemble()
1940 if (insn.operand_type[0]->immediate.resolved == 1) in md_assemble()
1943 if (insn.operand_type[0]->immediate.u_number > 0x00FFFFFF) in md_assemble()
1948 insn.opcode |= in md_assemble()
1949 ((insn.operand_type[0]->immediate.u_number & 0x00FF0000) >> 16); in md_assemble()
1950 md_number_to_chars (p, (valueT) insn.opcode, INSN_SIZE); in md_assemble()
1955 md_number_to_chars (p, (valueT) insn.opcode, INSN_SIZE); in md_assemble()
1957 1, &insn.operand_type[0]->immediate.imm_expr, in md_assemble()
1963 else if (insn.tm->operand_types[0] & (Imm24)) in md_assemble()
1966 if (insn.operand_type[0]->immediate.resolved == 1) in md_assemble()
1968 if (insn.operand_type[0]->immediate.u_number > 0x00FFFFFF) in md_assemble()
1970 insn.opcode |= in md_assemble()
1971 (insn.operand_type[0]->immediate.u_number & 0x00FFFFFF); in md_assemble()
1972 md_number_to_chars (p, (valueT) insn.opcode, INSN_SIZE); in md_assemble()
1976 md_number_to_chars (p, (valueT) insn.opcode, INSN_SIZE); in md_assemble()
1978 & insn.operand_type[0]->immediate.imm_expr, 0, 0); in md_assemble()
1981 else if (insn.tm->operand_types[0] & NotReq) in md_assemble()
1983 md_number_to_chars (p, (valueT) insn.opcode, INSN_SIZE); in md_assemble()
1985 else if (insn.tm->operands == 0) in md_assemble()
1987 md_number_to_chars (p, (valueT) insn.opcode, INSN_SIZE); in md_assemble()
1989 debug ("Addressing mode: %08X\n", insn.addressing_mode); in md_assemble()
1993 for (i = 0; i < insn.operands; i++) in md_assemble()
1995 if (insn.operand_type[i]->immediate.label) in md_assemble()
1996 free (insn.operand_type[i]->immediate.label); in md_assemble()
1997 free (insn.operand_type[i]); in md_assemble()
2000 debug ("Final opcode: %08X\n", insn.opcode); in md_assemble()