Lines Matching +full:0 +full:- +full:5
1 //===-- MicroMipsInstrFormats.td - microMIPS Inst Formats -*- tablegen -*--===//
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
11 //===----------------------------------------------------------------------===//
13 //===----------------------------------------------------------------------===//
15 //===----------------------------------------------------------------------===//
40 // Base class for MicroMIPS 16-bit instructions.
48 field bits<16> SoftFail = 0;
49 bits<6> Opcode = 0x0;
52 //===----------------------------------------------------------------------===//
53 // MicroMIPS 16-bit Instruction Formats
54 //===----------------------------------------------------------------------===//
63 let Inst{15-10} = 0x01;
64 let Inst{9-7} = rd;
65 let Inst{6-4} = rt;
66 let Inst{3-1} = rs;
67 let Inst{0} = funct;
77 let Inst{15-10} = funct;
78 let Inst{9-7} = rd;
79 let Inst{6-4} = rs;
80 let Inst{3-0} = imm;
89 let Inst{15-10} = 0x11;
90 let Inst{9-6} = funct;
91 let Inst{5-3} = rt;
92 let Inst{2-0} = rs;
102 let Inst{15-10} = 0x09;
103 let Inst{9-7} = rd;
104 let Inst{6-4} = rt;
105 let Inst{3-1} = shamt;
106 let Inst{0} = funct;
116 let Inst{15-10} = 0x1b;
117 let Inst{9-7} = rd;
118 let Inst{6-4} = rs;
119 let Inst{3-1} = imm;
120 let Inst{0} = 0;
129 let Inst{15-10} = op;
130 let Inst{9-7} = rt;
131 let Inst{6-4} = addr{6-4};
132 let Inst{3-0} = addr{3-0};
136 bits<5> rt;
137 bits<5> offset;
141 let Inst{15-10} = op;
142 let Inst{9-5} = rt;
143 let Inst{4-0} = offset;
152 let Inst{15-10} = op;
153 let Inst{9-7} = rt;
154 let Inst{6-0} = offset;
158 bits<5> rd;
163 let Inst{15-10} = 0x13;
164 let Inst{9-5} = rd;
165 let Inst{4-1} = imm;
166 let Inst{0} = 0;
174 let Inst{15-10} = 0x13;
175 let Inst{9-1} = imm;
176 let Inst{0} = 1;
180 bits<5> rs;
181 bits<5> rd;
185 let Inst{15-10} = funct;
186 let Inst{9-5} = rd;
187 let Inst{4-0} = rs;
196 let Inst{15-10} = 0x3b;
197 let Inst{9-7} = rd;
198 let Inst{6-0} = imm;
201 class JALR_FM_MM16<bits<5> op> {
202 bits<5> rs;
206 let Inst{15-10} = 0x11;
207 let Inst{9-5} = op;
208 let Inst{4-0} = rs;
211 class MFHILO_FM_MM16<bits<5> funct> {
212 bits<5> rd;
216 let Inst{15-10} = 0x11;
217 let Inst{9-5} = funct;
218 let Inst{4-0} = rd;
221 class JRADDIUSP_FM_MM16<bits<5> op> {
222 bits<5> rs;
223 bits<5> imm;
227 let Inst{15-10} = 0x11;
228 let Inst{9-5} = op;
229 let Inst{4-0} = imm;
238 let Inst{15-10} = 0x1b;
239 let Inst{9-7} = rd;
240 let Inst{6-1} = imm;
241 let Inst{0} = 1;
248 let Inst{15-10} = 0x11;
249 let Inst{9-4} = op;
250 let Inst{3-0} = code_;
259 let Inst{15-10} = op;
260 let Inst{9-7} = rs;
261 let Inst{6-0} = offset;
269 let Inst{15-10} = 0x33;
270 let Inst{9-0} = offset;
279 let Inst{15-10} = 0x21;
280 // bits 7-9 are populated by MipsMCCodeEmitter::encodeInstruction, with a
282 let Inst{9-7} = ?;
283 let Inst{6-4} = rt;
284 let Inst{3-1} = rs;
285 let Inst{0} = 0;
288 //===----------------------------------------------------------------------===//
289 // MicroMIPS 32-bit Instruction Formats
290 //===----------------------------------------------------------------------===//
297 bits<5> rt;
298 bits<5> rs;
299 bits<5> rd;
303 let Inst{31-26} = op;
304 let Inst{25-21} = rt;
305 let Inst{20-16} = rs;
306 let Inst{15-11} = rd;
307 let Inst{10} = 0;
308 let Inst{9-0} = funct;
312 bits<5> rs;
313 bits<5> rt;
318 let Inst{31-26} = op;
319 let Inst{25-21} = rt;
320 let Inst{20-16} = rs;
321 let Inst{15-0} = imm16;
325 bits<5> rt;
326 bits<5> rs;
331 let Inst{31-26} = op;
332 let Inst{25-21} = rt;
333 let Inst{20-16} = rs;
334 let Inst{15-0} = imm16;
338 bits<5> rt;
343 let Inst{31-26} = 0x10;
344 let Inst{25-21} = 0xd;
345 let Inst{20-16} = rt;
346 let Inst{15-0} = imm16;
350 bits<5> rs;
351 bits<5> rt;
355 let Inst{31-26} = 0x00;
356 let Inst{25-21} = rt;
357 let Inst{20-16} = rs;
358 let Inst{15-6} = funct;
359 let Inst{5-0} = 0x3c;
363 bits<5> rd;
364 bits<5> rt;
365 bits<5> shamt;
369 let Inst{31-26} = 0;
370 let Inst{25-21} = rd;
371 let Inst{20-16} = rt;
372 let Inst{15-11} = shamt;
374 let Inst{9-0} = funct;
378 bits<5> rd;
379 bits<5> rt;
380 bits<5> rs;
384 let Inst{31-26} = 0;
385 let Inst{25-21} = rt;
386 let Inst{20-16} = rs;
387 let Inst{15-11} = rd;
389 let Inst{9-0} = funct;
393 bits<5> rt;
395 bits<5> base = addr{20-16};
396 bits<16> offset = addr{15-0};
400 let Inst{31-26} = op;
401 let Inst{25-21} = rt;
402 let Inst{20-16} = base;
403 let Inst{15-0} = offset;
407 bits<5> rt;
409 bits<5> base = addr{20-16};
410 bits<9> offset = addr{8-0};
414 let Inst{31-26} = op;
415 let Inst{25-21} = rt;
416 let Inst{20-16} = base;
417 let Inst{15-12} = fmt;
418 let Inst{11-9} = funct;
419 let Inst{8-0} = offset;
423 bits<5> rt;
428 let Inst{31-26} = 0x18;
429 let Inst{25-21} = rt;
430 let Inst{20-16} = addr{20-16};
431 let Inst{15-12} = funct;
432 let Inst{11-0} = addr{11-0};
436 bits<5> rt;
438 bits<5> base = addr{20-16};
439 bits<9> offset = addr{8-0};
443 let Inst{31-26} = 0x18;
444 let Inst{25-21} = rt;
445 let Inst{20-16} = base;
446 let Inst{15-12} = type;
447 let Inst{11-9} = funct;
448 let Inst{8-0} = offset;
452 bits<5> rd;
453 bits<5> rs;
458 let Inst{31-26} = 0x15;
459 let Inst{25-21} = rd;
460 let Inst{20-16} = rs;
461 let Inst{15-13} = fcc;
462 let Inst{12-6} = func;
463 let Inst{5-0} = 0x3b;
467 bits<5> rs;
471 let Inst{31-26} = 0x00;
472 let Inst{25-21} = 0x00;
473 let Inst{20-16} = rs;
474 let Inst{15-6} = funct;
475 let Inst{5-0} = 0x3c;
479 bits<5> rd;
483 let Inst{31-26} = 0x00;
484 let Inst{25-21} = 0x00;
485 let Inst{20-16} = rd;
486 let Inst{15-6} = funct;
487 let Inst{5-0} = 0x3c;
491 bits<5> rd;
492 bits<5> rs;
496 let Inst{31-26} = 0x00;
497 let Inst{25-21} = rd;
498 let Inst{20-16} = rs;
499 let Inst{15-6} = funct;
500 let Inst{5-0} = 0x3c;
504 bits<5> rd;
505 bits<5> rt;
509 let Inst{31-26} = 0x00;
510 let Inst{25-21} = rd;
511 let Inst{20-16} = rt;
512 let Inst{15-6} = funct;
513 let Inst{5-0} = 0x3c;
517 bits<5> rt;
518 bits<5> rs;
519 bits<5> pos;
520 bits<5> size;
524 let Inst{31-26} = 0x00;
525 let Inst{25-21} = rt;
526 let Inst{20-16} = rs;
527 let Inst{15-11} = size;
528 let Inst{10-6} = pos;
529 let Inst{5-0} = funct;
537 let Inst{31-26} = op;
538 let Inst{25-0} = target;
542 bits<5> rs;
546 let Inst{31-21} = 0x00;
547 let Inst{20-16} = rs;
548 let Inst{15-14} = 0x0;
549 let Inst{13-6} = funct;
550 let Inst{5-0} = 0x3c;
554 bits<5> rs;
555 bits<5> rd;
559 let Inst{31-26} = 0x00;
560 let Inst{25-21} = rd;
561 let Inst{20-16} = rs;
562 let Inst{15-6} = funct;
563 let Inst{5-0} = 0x3c;
567 bits<5> rs;
568 bits<5> rt;
573 let Inst{31-26} = op;
574 let Inst{25-21} = rt;
575 let Inst{20-16} = rs;
576 let Inst{15-0} = offset;
579 class BGEZ_FM_MM<bits<5> funct> : MMArch {
580 bits<5> rs;
585 let Inst{31-26} = 0x10;
586 let Inst{25-21} = funct;
587 let Inst{20-16} = rs;
588 let Inst{15-0} = offset;
591 class BGEZAL_FM_MM<bits<5> funct> : MMArch {
592 bits<5> rs;
597 let Inst{31-26} = 0x10;
598 let Inst{25-21} = funct;
599 let Inst{20-16} = rs;
600 let Inst{15-0} = offset;
604 bits<5> stype;
608 let Inst{31-26} = 0x00;
609 let Inst{25-21} = 0x0;
610 let Inst{20-16} = stype;
611 let Inst{15-6} = 0x1ad;
612 let Inst{5-0} = 0x3c;
617 bits<5> rs = addr{20-16};
618 bits<16> offset = addr{15-0};
621 let Inst{31-26} = 0b010000;
622 let Inst{25-21} = 0b10000;
623 let Inst{20-16} = rs;
624 let Inst{15-0} = offset;
631 let Inst{31-26} = 0x0;
632 let Inst{25-16} = code_1;
633 let Inst{15-6} = code_2;
634 let Inst{5-0} = 0x07;
640 let Inst{31-26} = 0x0;
641 let Inst{25-16} = code_;
642 let Inst{15-6} = 0x22d;
643 let Inst{5-0} = 0x3c;
650 let Inst{31-26} = 0x00;
651 let Inst{25-16} = code_;
652 let Inst{15-6} = 0x24d;
653 let Inst{5-0} = 0x3c;
659 let Inst{31-26} = 0x00;
660 let Inst{25-16} = 0x00;
661 let Inst{15-6} = funct;
662 let Inst{5-0} = 0x3c;
667 bits<5> rt;
669 let Inst{31-26} = 0x00;
670 let Inst{25-21} = 0x00;
671 let Inst{20-16} = rt;
672 let Inst{15-6} = funct;
673 let Inst{5-0} = 0x3c;
677 bits<5> rs;
678 bits<5> rt;
683 let Inst{31-26} = 0x00;
684 let Inst{25-21} = rt;
685 let Inst{20-16} = rs;
686 let Inst{15-12} = code_;
687 let Inst{11-6} = funct;
688 let Inst{5-0} = 0x3c;
691 class TEQI_FM_MM<bits<5> funct> : MMArch {
692 bits<5> rs;
697 let Inst{31-26} = 0x10;
698 let Inst{25-21} = funct;
699 let Inst{20-16} = rs;
700 let Inst{15-0} = imm16;
704 bits<5> rt;
709 let Inst{31-26} = 0x18;
710 let Inst{25-21} = rt;
711 let Inst{20-16} = addr{20-16};
712 let Inst{15-12} = funct;
713 let Inst{11-0} = addr{11-0};
717 bits<5> rt;
719 bits<5> base = addr{20-16};
720 bits<9> offset = addr{8-0};
724 let Inst{31-26} = 0x18;
725 let Inst{25-21} = rt;
726 let Inst{20-16} = base;
727 let Inst{15-12} = funct;
728 let Inst{11-9} = 0x6;
729 let Inst{8-0} = offset;
733 bits<5> ft;
734 bits<5> fs;
735 bits<5> fd;
739 let Inst{31-26} = 0x15;
740 let Inst{25-21} = ft;
741 let Inst{20-16} = fs;
742 let Inst{15-11} = fd;
743 let Inst{10} = 0;
744 let Inst{9-8} = fmt;
745 let Inst{7-0} = funct;
750 bits<5> fd;
751 bits<5> base;
752 bits<5> index;
756 let Inst{31-26} = 0x15;
757 let Inst{25-21} = index;
758 let Inst{20-16} = base;
759 let Inst{15-11} = fd;
760 let Inst{10-9} = 0x0;
761 let Inst{8-0} = funct;
765 bits<5> fs;
766 bits<5> base;
767 bits<5> index;
771 let Inst{31-26} = 0x15;
772 let Inst{25-21} = index;
773 let Inst{20-16} = base;
774 let Inst{15-11} = fs;
775 let Inst{10-9} = 0x0;
776 let Inst{8-0} = funct;
780 bits<5> fs;
781 bits<5> ft;
787 let Inst{31-26} = 0x15;
788 let Inst{25-21} = ft;
789 let Inst{20-16} = fs;
790 let Inst{15-13} = fcc;
791 let Inst{12} = 0;
792 let Inst{11-10} = fmt;
793 let Inst{9-6} = cond;
794 let Inst{5-0} = 0x3c;
801 class BC1F_FM_MM<bits<5> tf> : MMArch {
807 let Inst{31-26} = 0x10;
808 let Inst{25-21} = tf;
809 let Inst{20-18} = fcc; // cc
810 let Inst{17-16} = 0x0;
811 let Inst{15-0} = offset;
815 bits<5> fd;
816 bits<5> fs;
820 let Inst{31-26} = 0x15;
821 let Inst{25-21} = fd;
822 let Inst{20-16} = fs;
823 let Inst{15} = 0;
825 let Inst{13-6} = funct;
826 let Inst{5-0} = 0x3b;
830 bits<5> fd;
831 bits<5> fs;
835 let Inst{31-26} = 0x15;
836 let Inst{25-21} = fd;
837 let Inst{20-16} = fs;
838 let Inst{15} = 0;
839 let Inst{14-13} = fmt;
840 let Inst{12-6} = funct;
841 let Inst{5-0} = 0x3b;
845 bits<5> fd;
846 bits<5> fs;
850 let Inst{31-26} = 0x15;
851 let Inst{25-21} = fd;
852 let Inst{20-16} = fs;
853 let Inst{15-13} = fcc; //cc
854 let Inst{12-11} = 0x0;
855 let Inst{10-9} = fmt;
856 let Inst{8-0} = func;
860 bits<5> fd;
861 bits<5> fs;
862 bits<5> rt;
866 let Inst{31-26} = 0x15;
867 let Inst{25-21} = rt;
868 let Inst{20-16} = fs;
869 let Inst{15-11} = fd;
870 let Inst{9-8} = fmt;
871 let Inst{7-0} = funct;
875 bits<5> rt;
876 bits<5> fs;
880 let Inst{31-26} = 0x15;
881 let Inst{25-21} = rt;
882 let Inst{20-16} = fs;
883 let Inst{15-14} = 0x0;
884 let Inst{13-6} = funct;
885 let Inst{5-0} = 0x3b;
889 bits<5> ft;
890 bits<5> fs;
891 bits<5> fd;
892 bits<5> fr;
896 let Inst{31-26} = 0x15;
897 let Inst{25-21} = ft;
898 let Inst{20-16} = fs;
899 let Inst{15-11} = fd;
900 let Inst{10-6} = fr;
901 let Inst{5-0} = funct;
904 class COMPACT_BRANCH_FM_MM<bits<5> funct> {
905 bits<5> rs;
910 let Inst{31-26} = 0x10;
911 let Inst{25-21} = funct;
912 let Inst{20-16} = rs;
913 let Inst{15-0} = offset;
919 let Inst{31-26} = 0x0;
920 let Inst{25-16} = 0x0;
921 let Inst{15-6} = op;
922 let Inst{5-0} = 0x3c;
930 let Inst{31-26} = 0x0;
931 let Inst{25-16} = code_;
932 let Inst{15-6} = 0x36d;
933 let Inst{5-0} = 0x3c;
941 let Inst{31-26} = 0x0;
942 let Inst{25-22} = 0x0;
943 let Inst{21-6} = code_;
944 let Inst{5-0} = 0b111111;
948 bits<5> rt;
949 bits<5> rd;
953 let Inst{31-26} = 0x0;
954 let Inst{25-21} = rt;
955 let Inst{20-16} = rd;
956 let Inst{15-6} = 0x1ac;
957 let Inst{5-0} = 0x3c;
961 bits<5> rd;
962 bits<5> base;
963 bits<5> index;
967 let Inst{31-26} = 0x0;
968 let Inst{25-21} = index;
969 let Inst{20-16} = base;
970 let Inst{15-11} = rd;
971 let Inst{10} = 0;
972 let Inst{9-0} = funct;
976 bits<5> rt;
981 let Inst{31-26} = 0x8;
982 let Inst{25-21} = rt;
983 let Inst{20-16} = addr{20-16};
984 let Inst{15-12} = funct;
985 let Inst{11-0} = addr{11-0};
994 let Inst{15-10} = 0x11;
995 let Inst{9-6} = funct;
996 let Inst{5-4} = rt;
997 let Inst{3-0} = addr;
1002 bits<5> hint;
1003 bits<5> base = addr{20-16};
1004 bits<12> offset = addr{11-0};
1008 let Inst{31-26} = op;
1009 let Inst{25-21} = hint;
1010 let Inst{20-16} = base;
1011 let Inst{15-12} = funct;
1012 let Inst{11-0} = offset;
1017 bits<5> hint;
1018 bits<5> base = addr{20-16};
1019 bits<9> offset = addr{8-0};
1023 let Inst{31-26} = op;
1024 let Inst{25-21} = hint;
1025 let Inst{20-16} = base;
1026 let Inst{15-12} = 0xA;
1027 let Inst{11-9} = funct;
1028 let Inst{8-0} = offset;
1032 bits<5> index;
1033 bits<5> base;
1034 bits<5> hint;
1038 let Inst{31-26} = op;
1039 let Inst{25-21} = index;
1040 let Inst{20-16} = base;
1041 let Inst{15-11} = hint;
1042 let Inst{10-9} = 0x0;
1043 let Inst{8-0} = funct;
1046 class BARRIER_FM_MM<bits<5> op> : MMArch {
1049 let Inst{31-26} = 0x0;
1050 let Inst{25-21} = 0x0;
1051 let Inst{20-16} = 0x0;
1052 let Inst{15-11} = op;
1053 let Inst{10-6} = 0x0;
1054 let Inst{5-0} = 0x0;
1063 let Inst{31-26} = 0x1e;
1064 let Inst{25-23} = rs;
1065 let Inst{22-0} = imm;
1069 bits<5> rt;
1070 bits<5> impl;
1074 let Inst{31-26} = 0b000000;
1075 let Inst{25-21} = rt;
1076 let Inst{20-16} = impl;
1077 let Inst{15-6} = funct;
1078 let Inst{5-0} = 0b111100;
1084 let Inst{31-26} = 0x0;
1085 let Inst{25-16} = 0x0;
1086 let Inst{15-6} = funct;
1087 let Inst{5-0} = 0b111100;
1090 class POOL32A_MFTC0_FM_MM<bits<5> funct, bits<6> opcode> : MMArch {
1091 bits<5> rt;
1092 bits<5> rs;
1097 let Inst{31-26} = 0b000000;
1098 let Inst{25-21} = rt;
1099 let Inst{20-16} = rs;
1100 let Inst{15-14} = 0;
1101 let Inst{13-11} = sel;
1102 let Inst{10-6} = funct;
1103 let Inst{5-0} = opcode;
1111 let Inst{31-26} = 0x0;
1112 let Inst{25-16} = code_;
1113 let Inst{15-6} = 0b1100001101;
1114 let Inst{5-0} = 0b111100;