summaryrefslogtreecommitdiff
path: root/mips/gen/lexer.hgen
blob: c01b14cc6341045742a8b4b8c7faf03380704abb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
"add"   , RTYPE {txt="ADD"   ; op=MIPSROpADD    };
"addu"  , RTYPE {txt="ADDU"  ; op=MIPSROpADDU   };
"and"   , RTYPE {txt="AND"   ; op=MIPSROpAND    };
"dadd"  , RTYPE {txt="DADD"  ; op=MIPSROpDADD   };
"daddu" , RTYPE {txt="DADDU" ; op=MIPSROpDADDU  };
"dsub"  , RTYPE {txt="DSUB"  ; op=MIPSROpDSUB   };
"dsubu" , RTYPE {txt="DSUBU" ; op=MIPSROpDSUBU  };
"movn"  , RTYPE {txt="MOVN"  ; op=MIPSROpMOVN   };
"movz"  , RTYPE {txt="MOVZ"  ; op=MIPSROpMOVZ   };
"mul"   , RTYPE {txt="MUL"   ; op=MIPSROpMUL    };
"nor"   , RTYPE {txt="NOR"   ; op=MIPSROpNOR    };
"or"    , RTYPE {txt="OR"    ; op=MIPSROpOR     };
"slt"   , RTYPE {txt="SLT"   ; op=MIPSROpSLT    };
"sltu"  , RTYPE {txt="SLTU"  ; op=MIPSROpSLTU   };
"sub"   , RTYPE {txt="SUB"   ; op=MIPSROpSUB    };
"subu"  , RTYPE {txt="SUBU"  ; op=MIPSROpSUBU   };
"xor"   , RTYPE {txt="XOR"   ; op=MIPSROpXOR    };

"addi"  , ITYPE {txt="ADDI"  ; op=MIPSIOpADDI   };
"addiu" , ITYPE {txt="ADDIU" ; op=MIPSIOpADDIU  };
"andi"  , ITYPE {txt="ANDI"  ; op=MIPSIOpANDI   };
"daddi" , ITYPE {txt="DADDI" ; op=MIPSIOpDADDI  };
"daddiu", ITYPE {txt="DADDIU"; op=MIPSIOpDADDIU };
"ori"   , ITYPE {txt="ORI"   ; op=MIPSIOpORI    };
"slti"  , ITYPE {txt="SLTI"  ; op=MIPSIOpSLTI   };
"sltiu" , ITYPE {txt="SLTIU" ; op=MIPSIOpSLTIU  };
"xori"  , ITYPE {txt="XORI"  ; op=MIPSIOpXORI   };

"dsll"   , SHIFTI {txt="DSLL"   ; op=MIPSDSLL   };
"dsll32" , SHIFTI {txt="DSLL32" ; op=MIPSDSLL32 };
"dsra"   , SHIFTI {txt="DSRA"   ; op=MIPSDSRA   };
"dsra32" , SHIFTI {txt="DSRA32" ; op=MIPSDSRA32 };
"dsrl"   , SHIFTI {txt="DSRL"   ; op=MIPSDSRL   };
"dsrl32" , SHIFTI {txt="DSRL32" ; op=MIPSDSRL32 };
"sll"    , SHIFTI {txt="SLL"    ; op=MIPSSLL    };
"sra"    , SHIFTI {txt="SRA"    ; op=MIPSSRA    };
"srl"    , SHIFTI {txt="SRL"    ; op=MIPSSRL    };

"dsllv", SHIFTV {txt="DSLLV" ; op=MIPSDSLLV };
"dsrav", SHIFTV {txt="DSRAV" ; op=MIPSDSRAV };
"dsrlv", SHIFTV {txt="DSRLV" ; op=MIPSDSRLV };
"sllv" , SHIFTV {txt="SLLV"  ; op=MIPSSLLV  };
"srav" , SHIFTV {txt="SRAV"  ; op=MIPSSRAV  };
"srlv" , SHIFTV {txt="SRLV"  ; op=MIPSSRLV  };

"ddiv"  , MULDIV {txt="DDIV"  ; op=MIPSDDIV   };
"ddivu" , MULDIV {txt="DDIVU" ; op=MIPSDDIVU  };
"div"   , MULDIV {txt="DIV"   ; op=MIPSDIV    };
"divu"  , MULDIV {txt="DIVU"  ; op=MIPSDIVU   };
"dmult" , MULDIV {txt="DMULT" ; op=MIPSDMULT  };
"dmultu", MULDIV {txt="DMULTU"; op=MIPSDMULTU };
"madd"  , MULDIV {txt="MADD"  ; op=MIPSMADD   };
"maddu" , MULDIV {txt="MADDU" ; op=MIPSMADDU  };
"msub"  , MULDIV {txt="MSUB"  ; op=MIPSMSUB   };
"msubu" , MULDIV {txt="MSUBU" ; op=MIPSMSUBU  };
"mult"  , MULDIV {txt="MULT"  ; op=MIPSMULT   };
"multu" , MULDIV {txt="MULTU" ; op=MIPSMULTU  };

"mfhi" , MFHILO {txt="MFHI" ; op=MIPSMFHI };
"mflo" , MFHILO {txt="MFLO" ; op=MIPSMFLO };
"mthi" , MFHILO {txt="MTHI" ; op=MIPSMTHI };
"mtlo" , MFHILO {txt="MTLO" ; op=MIPSMTLO };

"lui" , LUI {txt="LUI" };

"lb"  , LOAD {txt="LB"  ; width=MIPSByte   ; signed=true;  linked=false };
"lbu" , LOAD {txt="LBU" ; width=MIPSByte   ; signed=false; linked=false };
"lh"  , LOAD {txt="LH"  ; width=MIPSHalf   ; signed=true;  linked=false };
"lhu" , LOAD {txt="LHU" ; width=MIPSHalf   ; signed=false; linked=false };
"lw"  , LOAD {txt="LW"  ; width=MIPSWord   ; signed=true;  linked=false };
"lwu" , LOAD {txt="LWU" ; width=MIPSWord   ; signed=false; linked=false };
"ld"  , LOAD {txt="LD"  ; width=MIPSDouble ; signed=false; linked=false };
"ll"  , LOAD {txt="LL"  ; width=MIPSWord   ; signed=true;  linked=true  };
"lld" , LOAD {txt="LLD" ; width=MIPSDouble ; signed=false; linked=true  };

"sb"  , STORE {txt="SB"  ; width=MIPSByte   ; conditional=false };
"sh"  , STORE {txt="SH"  ; width=MIPSHalf   ; conditional=false };
"sw"  , STORE {txt="SW"  ; width=MIPSWord   ; conditional=false };
"sd"  , STORE {txt="SD"  ; width=MIPSDouble ; conditional=false };
"sc"  , STORE {txt="SC"  ; width=MIPSWord   ; conditional=true  };
"scd" , STORE {txt="SCD" ; width=MIPSDouble ; conditional=true  };

"lwl" , LSLR {txt="LWL" ; store=false; double=false; left=true };
"lwr" , LSLR {txt="LWR" ; store=false; double=false; left=false};
"ldl" , LSLR {txt="LDL" ; store=false; double=true ; left=true };
"ldr" , LSLR {txt="LDR" ; store=false; double=true ; left=false};
"swl" , LSLR {txt="SWL" ; store=true ; double=false; left=true };
"swr" , LSLR {txt="SWR" ; store=true ; double=false; left=false};
"sdl" , LSLR {txt="SDL" ; store=true ; double=true ; left=true };
"sdr" , LSLR {txt="SDR" ; store=true ; double=true ; left=false};
"sync", SYNC {txt="SYNC"};

"beq",  BEQ {txt="BEQ"; ne=false; likely=false };
"beql", BEQ {txt="BEQ"; ne=false; likely=true  };
"bne",  BEQ {txt="BEQ"; ne=true ; likely=false };
"bnel", BEQ {txt="BEQ"; ne=true ; likely=true  };

"bltz",   BCMPZ {txt="BCMPZ"; cmp=MIPS_LT; likely=false; link=false };
"bltzal", BCMPZ {txt="BCMPZ"; cmp=MIPS_LT; likely=false; link=true  };
"bltzl",  BCMPZ {txt="BCMPZ"; cmp=MIPS_LT; likely=true;  link=false };
"bltzall",BCMPZ {txt="BCMPZ"; cmp=MIPS_LT; likely=true;  link=true  };

"bgez",   BCMPZ {txt="BCMPZ"; cmp=MIPS_GE; likely=false; link=false };
"bgezal", BCMPZ {txt="BCMPZ"; cmp=MIPS_GE; likely=false; link=true  };
"bgezl",  BCMPZ {txt="BCMPZ"; cmp=MIPS_GE; likely=true;  link=false };
"bgezall",BCMPZ {txt="BCMPZ"; cmp=MIPS_GE; likely=true;  link=true  };

"bgtz",   BCMPZ {txt="BCMPZ"; cmp=MIPS_GT; likely=false; link=false };
"bgtzl",  BCMPZ {txt="BCMPZ"; cmp=MIPS_GT; likely=true;  link=false };

"blez",   BCMPZ {txt="BCMPZ"; cmp=MIPS_LE; likely=false; link=false };
"blezl",  BCMPZ {txt="BCMPZ"; cmp=MIPS_LE; likely=true;  link=false };
"j",      J     {txt="J"};
"jal",    JAL   {txt="JAL"};
"jr",     JR    {txt="JR"};
"jalr",   JALR  {txt="JALR"};