1 /* ft32-opc.c -- Definitions for ft32 opcodes.
2 Copyright (C) 2013-2023 Free Software Foundation, Inc.
3 Contributed by FTDI (support@ftdichip.com)
5 This file is part of the GNU opcodes library.
7 This library is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 3, or (at your option)
12 It is distributed in the hope that it will be useful, but WITHOUT
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
14 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
15 License for more details.
17 You should have received a copy of the GNU General Public License
18 along with this file; see the file COPYING. If not, write to the
19 Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston,
20 MA 02110-1301, USA. */
23 #include "opcode/ft32.h"
25 const ft32_opc_info_t ft32_opc_info
[] =
27 { "nop", 0, 0xffffffffU
, 0x40004000U
, 0},
28 { "move", 1, 0xf8007fffU
, 0x40004000U
, FT32_FLD_R_D
|FT32_FLD_R_1
},
29 { "streamin", 1, 0xf800000fU
, 0xf000000cU
, FT32_FLD_R_D
|FT32_FLD_R_1
|FT32_FLD_RIMM
},
30 { "ldi", 1, 0xf8000000U
, 0xa8000000U
, FT32_FLD_R_D
|FT32_FLD_R_1
|FT32_FLD_K15
},
31 { "exi", 1, 0xf8000000U
, 0xe8000000U
, FT32_FLD_R_D
|FT32_FLD_R_1
|FT32_FLD_K15
},
32 { "return", 0, 0xfc000000U
, 0xa0000000U
, 0},
33 { "or", 1, 0xf800000fU
, 0x40000005U
, FT32_FLD_R_D
|FT32_FLD_R_1
|FT32_FLD_RIMM
},
34 { "pop", 1, 0xf8000000U
, 0x88000000U
, FT32_FLD_R_D
},
35 { "sta", 1, 0xf8000000U
, 0xb8000000U
, FT32_FLD_AA
|FT32_FLD_R_D_POST
},
36 { "xor", 1, 0xf800000fU
, 0x40000006U
, FT32_FLD_R_D
|FT32_FLD_R_1
|FT32_FLD_RIMM
},
37 { "memcpy", 1, 0xf800000fU
, 0xf0000005U
, FT32_FLD_R_D
|FT32_FLD_R_1
|FT32_FLD_RIMM
},
38 { "strlen", 1, 0xf8007fffU
, 0xf0004006U
, FT32_FLD_R_D
|FT32_FLD_R_1
},
39 { "cmp", 1, 0xf9f0000fU
, 0x59e00002U
, FT32_FLD_R_1
|FT32_FLD_RIMM
},
40 { "btst", 1, 0xf9f0000fU
, 0x59e0000cU
, FT32_FLD_R_1
|FT32_FLD_RIMM
},
41 { "link", 0, 0xfe000000U
, 0x94000000U
, FT32_FLD_R_D
|FT32_FLD_K16
},
42 { "call", 0, 0xfffc0000U
, 0x00340000U
, FT32_FLD_PA
},
43 { "callc", 0, 0xfe340000U
, 0x00240000U
, FT32_FLD_CBCRCV
|FT32_FLD_PA
},
44 { "callx", 0, 0xf8040000U
, 0x00040000U
, FT32_FLD_CR
|FT32_FLD_CB
|FT32_FLD_CV
|FT32_FLD_PA
},
45 { "streamini", 1, 0xf800000fU
, 0xf000000dU
, FT32_FLD_R_D
|FT32_FLD_R_1
|FT32_FLD_RIMM
},
46 { "lda", 1, 0xf8000000U
, 0xc0000000U
, FT32_FLD_R_D
|FT32_FLD_AA
},
47 { "exa", 1, 0xf8000000U
, 0x38000000U
, FT32_FLD_R_D
|FT32_FLD_AA
},
48 { "unlink", 0, 0xf8000000U
, 0x98000000U
, FT32_FLD_R_D
},
49 { "calli", 0, 0xfffc0000U
, 0x08340000U
, FT32_FLD_R_2
},
50 { "stpcpy", 1, 0xf8007fffU
, 0xf000400aU
, FT32_FLD_R_D
|FT32_FLD_R_1
},
51 { "jmp", 0, 0xfffc0000U
, 0x00300000U
, FT32_FLD_PA
},
52 { "strcmp", 1, 0xf800000fU
, 0xf0000004U
, FT32_FLD_R_D
|FT32_FLD_R_1
|FT32_FLD_RIMM
},
53 { "mul", 1, 0xf800000fU
, 0xf0000008U
, FT32_FLD_R_D
|FT32_FLD_R_1
|FT32_FLD_RIMM
},
54 { "push", 1, 0xf8000000U
, 0x80000000U
, FT32_FLD_R_1
},
55 { "sti", 1, 0xf8000000U
, 0xb0000000U
, FT32_FLD_R_D
|FT32_FLD_K15
|FT32_FLD_R_1_POST
},
56 { "mod", 1, 0xf800000fU
, 0xf0000003U
, FT32_FLD_R_D
|FT32_FLD_R_1
|FT32_FLD_RIMM
},
57 { "umod", 1, 0xf800000fU
, 0xf0000001U
, FT32_FLD_R_D
|FT32_FLD_R_1
|FT32_FLD_RIMM
},
58 { "addcc", 1, 0xf9f0000fU
, 0x59e00000U
, FT32_FLD_R_1
|FT32_FLD_RIMM
},
59 { "streamout", 1, 0xf800000fU
, 0xf000000eU
, FT32_FLD_R_D
|FT32_FLD_R_1
|FT32_FLD_RIMM
},
60 { "lpmi", 1, 0xf8000000U
, 0xc8000000U
, FT32_FLD_R_D
|FT32_FLD_R_1
|FT32_FLD_K15
},
61 { "udiv", 1, 0xf800000fU
, 0xf0000000U
, FT32_FLD_R_D
|FT32_FLD_R_1
|FT32_FLD_RIMM
},
62 { "sub", 1, 0xf800000fU
, 0x40000002U
, FT32_FLD_R_D
|FT32_FLD_R_1
|FT32_FLD_RIMM
},
63 { "lshr", 1, 0xf800000fU
, 0x40000009U
, FT32_FLD_R_D
|FT32_FLD_R_1
|FT32_FLD_RIMM
},
64 { "tst", 1, 0xf9f0000fU
, 0x59e00004U
, FT32_FLD_R_1
|FT32_FLD_RIMM
},
65 { "xnor", 1, 0xf800000fU
, 0x40000007U
, FT32_FLD_R_D
|FT32_FLD_R_1
|FT32_FLD_RIMM
},
66 { "muluh", 1, 0xf800000fU
, 0xf0000009U
, FT32_FLD_R_D
|FT32_FLD_R_1
|FT32_FLD_RIMM
},
67 { "and", 1, 0xf800000fU
, 0x40000004U
, FT32_FLD_R_D
|FT32_FLD_R_1
|FT32_FLD_RIMM
},
68 { "add", 1, 0xf800000fU
, 0x40000000U
, FT32_FLD_R_D
|FT32_FLD_R_1
|FT32_FLD_RIMM
},
69 { "ror", 1, 0xf800000fU
, 0x40000001U
, FT32_FLD_R_D
|FT32_FLD_R_1
|FT32_FLD_RIMM
},
70 { "ldl", 1, 0xf800000fU
, 0x40000003U
, FT32_FLD_R_D
|FT32_FLD_R_1
|FT32_FLD_RIMM
},
71 { "bins", 1, 0xf800000fU
, 0x4000000bU
, FT32_FLD_R_D
|FT32_FLD_R_1
|FT32_FLD_RIMM
},
72 { "bexts", 1, 0xf800000fU
, 0x4000000cU
, FT32_FLD_R_D
|FT32_FLD_R_1
|FT32_FLD_RIMM
},
73 { "bextu", 1, 0xf800000fU
, 0x4000000dU
, FT32_FLD_R_D
|FT32_FLD_R_1
|FT32_FLD_RIMM
},
74 { "flip", 1, 0xf800000fU
, 0x4000000eU
, FT32_FLD_R_D
|FT32_FLD_R_1
|FT32_FLD_RIMM
},
75 { "memset", 1, 0xf800000fU
, 0xf0000007U
, FT32_FLD_R_D
|FT32_FLD_R_1
|FT32_FLD_RIMM
},
76 { "div", 1, 0xf800000fU
, 0xf0000002U
, FT32_FLD_R_D
|FT32_FLD_R_1
|FT32_FLD_RIMM
},
77 { "ldk", 1, 0xf8000000U
, 0x60000000U
, FT32_FLD_R_D
|FT32_FLD_K20
},
78 { "reti", 0, 0xfc000000U
, 0xa4000000U
, 0},
79 { "ashr", 1, 0xf800000fU
, 0x4000000aU
, FT32_FLD_R_D
|FT32_FLD_R_1
|FT32_FLD_RIMM
},
80 { "jmpi", 0, 0xfffc0000U
, 0x08300000U
, FT32_FLD_R_2
},
81 { "jmpic", 0, 0xf8040000U
, 0x08000000U
, FT32_FLD_CBCRCV
|FT32_FLD_R_2
},
82 { "jmpix", 0, 0xf8040000U
, 0x08000000U
, FT32_FLD_CR
|FT32_FLD_CB
|FT32_FLD_CV
|FT32_FLD_R_2
},
83 { "ashl", 1, 0xf800000fU
, 0x40000008U
, FT32_FLD_R_D
|FT32_FLD_R_1
|FT32_FLD_RIMM
},
84 { "jmpc", 0, 0xfe340000U
, 0x00200000U
, FT32_FLD_CBCRCV
|FT32_FLD_PA
},
85 { "jmpx", 0, 0xf8040000U
, 0x00000000U
, FT32_FLD_CR
|FT32_FLD_CB
|FT32_FLD_CV
|FT32_FLD_PA
},
86 { "lpm", 1, 0xf8000000U
, 0x68000000U
, FT32_FLD_R_D
|FT32_FLD_PA
},
87 {"streamouti", 1, 0xf800000fU
, 0xf000000fU
, FT32_FLD_R_D
|FT32_FLD_R_1
|FT32_FLD_RIMM
},
88 { "halt", 0, 0xf8000000U
, 0x78000000U
, 0},