Lines Matching +full:16 +full:- +full:bits

1 //===- PowerPCInstrFormats.td - PowerPC Instruction Formats --*- tablegen -*-=//
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
9 //===----------------------------------------------------------------------===//
13 class I<bits<6> opcode, dag OOL, dag IOL, string asmstr, InstrItinClass itin>
15 field bits<32> Inst;
16 field bits<32> SoftFail = 0;
22 let Inst{0-5} = opcode;
28 bits<1> PPC970_First = 0;
29 bits<1> PPC970_Single = 0;
30 bits<1> PPC970_Cracked = 0;
31 bits<3> PPC970_Unit = 0;
38 let TSFlags{5-3} = PPC970_Unit;
40 // Indicate that this instruction is of type X-Form Load or Store
41 bits<1> XFormMemOp = 0;
45 bits<1> Prefixed = 0;
49 // 32 bits to 64 bits.
50 bits<1> SExt32To64 = 0;
54 // 32 bits to 64 bits.
55 bits<1> ZExt32To64 = 0;
62 // same underlying instruction but with one definition for 64-bit arguments
63 // and one for 32-bit arguments, this bit breaks the degeneracy between
68 class PPC970_DGroup_First { bits<1> PPC970_First = 1; }
69 class PPC970_DGroup_Single { bits<1> PPC970_Single = 1; }
70 class PPC970_DGroup_Cracked { bits<1> PPC970_Cracked = 1; }
73 class PPC970_Unit_Pseudo { bits<3> PPC970_Unit = 0; }
74 class PPC970_Unit_FXU { bits<3> PPC970_Unit = 1; }
75 class PPC970_Unit_LSU { bits<3> PPC970_Unit = 2; }
76 class PPC970_Unit_FPU { bits<3> PPC970_Unit = 3; }
77 class PPC970_Unit_CRU { bits<3> PPC970_Unit = 4; }
78 class PPC970_Unit_VALU { bits<3> PPC970_Unit = 5; }
79 class PPC970_Unit_VPERM { bits<3> PPC970_Unit = 6; }
80 class PPC970_Unit_BRU { bits<3> PPC970_Unit = 7; }
82 class XFormMemOp { bits<1> XFormMemOp = 1; }
83 class SExt32To64 { bits<1> SExt32To64 = 1; }
84 class ZExt32To64 { bits<1> ZExt32To64 = 1; }
89 class I2<bits<6> opcode1, bits<6> opcode2, dag OOL, dag IOL, string asmstr,
92 field bits<64> Inst;
93 field bits<64> SoftFail = 0;
99 let Inst{0-5} = opcode1;
100 let Inst{32-37} = opcode2;
106 bits<1> PPC970_First = 0;
107 bits<1> PPC970_Single = 0;
108 bits<1> PPC970_Cracked = 0;
109 bits<3> PPC970_Unit = 0;
116 let TSFlags{5-3} = PPC970_Unit;
123 // Base class for all X-Form memory instructions
124 class IXFormMemOp<bits<6> opcode, dag OOL, dag IOL, string asmstr,
128 // 1.7.1 I-Form
129 class IForm<bits<6> opcode, bit aa, bit lk, dag OOL, dag IOL, string asmstr,
133 bits<24> LI;
135 let Inst{6-29} = LI;
140 // 1.7.2 B-Form
141 class BForm<bits<6> opcode, bit aa, bit lk, dag OOL, dag IOL, string asmstr>
143 bits<7> BIBO; // 2 bits of BI and 5 bits of BO.
144 bits<3> CR;
145 bits<14> BD;
147 bits<5> BI;
148 let BI{0-1} = BIBO{5-6};
149 let BI{2-4} = CR{0-2};
151 let Inst{6-10} = BIBO{4-0};
152 let Inst{11-15} = BI;
153 let Inst{16-29} = BD;
158 class BForm_1<bits<6> opcode, bits<5> bo, bit aa, bit lk, dag OOL, dag IOL,
161 let BIBO{4-0} = bo;
162 let BIBO{6-5} = 0;
166 class BForm_2<bits<6> opcode, bits<5> bo, bits<5> bi, bit aa, bit lk,
169 bits<14> BD;
171 let Inst{6-10} = bo;
172 let Inst{11-15} = bi;
173 let Inst{16-29} = BD;
178 class BForm_3<bits<6> opcode, bit aa, bit lk,
181 bits<5> BO;
182 bits<5> BI;
183 bits<14> BD;
185 let Inst{6-10} = BO;
186 let Inst{11-15} = BI;
187 let Inst{16-29} = BD;
192 class BForm_3_at<bits<6> opcode, bit aa, bit lk,
195 bits<5> BO;
196 bits<2> at;
197 bits<5> BI;
198 bits<14> BD;
200 let Inst{6-8} = BO{4-2};
201 let Inst{9-10} = at;
202 let Inst{11-15} = BI;
203 let Inst{16-29} = BD;
209 BForm_4<bits<6> opcode, bits<5> bo, bit aa, bit lk,
212 bits<5> BI;
213 bits<14> BD;
215 let Inst{6-10} = bo;
216 let Inst{11-15} = BI;
217 let Inst{16-29} = BD;
222 // 1.7.3 SC-Form
223 class SCForm<bits<6> opcode, bits<1> xo1, bits<1> xo2,
227 bits<7> LEV;
231 let Inst{20-26} = LEV;
236 // 1.7.4 D-Form
237 class DForm_base<bits<6> opcode, dag OOL, dag IOL, string asmstr,
240 bits<5> RST;
241 bits<5> RA;
242 bits<16> D;
246 let Inst{6-10} = RST;
247 let Inst{11-15} = RA;
248 let Inst{16-31} = D;
251 class DForm_1<bits<6> opcode, dag OOL, dag IOL, string asmstr,
256 class DForm_2<bits<6> opcode, dag OOL, dag IOL, string asmstr,
265 class DForm_2_r0<bits<6> opcode, dag OOL, dag IOL, string asmstr,
268 bits<5> RST;
269 bits<16> D;
273 let Inst{6-10} = RST;
274 let Inst{11-15} = 0;
275 let Inst{16-31} = D;
278 class DForm_4<bits<6> opcode, dag OOL, dag IOL, string asmstr,
281 bits<5> RA;
282 bits<5> RST;
283 bits<16> D;
287 let Inst{6-10} = RST;
288 let Inst{11-15} = RA;
289 let Inst{16-31} = D;
292 class DForm_4_zero<bits<6> opcode, dag OOL, dag IOL, string asmstr,
300 class DForm_4_fixedreg_zero<bits<6> opcode, bits<5> R, dag OOL, dag IOL,
309 class IForm_and_DForm_1<bits<6> opcode1, bit aa, bit lk, bits<6> opcode2,
313 bits<5> RST;
314 bits<5> RA;
315 bits<16> D;
318 bits<24> LI;
320 let Inst{6-29} = LI;
324 let Inst{38-42} = RST;
325 let Inst{43-47} = RA;
326 let Inst{48-63} = D;
330 class IForm_and_DForm_4_zero<bits<6> opcode1, bit aa, bit lk, bits<6> opcode2,
340 class DForm_5<bits<6> opcode, dag OOL, dag IOL, string asmstr,
343 bits<3> BF;
344 bits<1> L;
345 bits<5> RA;
346 bits<16> D;
348 let Inst{6-8} = BF;
351 let Inst{11-15} = RA;
352 let Inst{16-31} = D;
355 class DForm_5_ext<bits<6> opcode, dag OOL, dag IOL, string asmstr,
361 class DForm_6<bits<6> opcode, dag OOL, dag IOL, string asmstr,
365 class DForm_6_ext<bits<6> opcode, dag OOL, dag IOL, string asmstr,
372 // 1.7.5 DS-Form
373 class DSForm_1<bits<6> opcode, bits<2> xo, dag OOL, dag IOL, string asmstr,
376 bits<5> RST;
377 bits<5> RA;
378 bits<14> D;
382 let Inst{6-10} = RST;
383 let Inst{11-15} = RA;
384 let Inst{16-29} = D;
385 let Inst{30-31} = xo;
388 // ISA V3.0B 1.6.6 DX-Form
389 class DXForm<bits<6> opcode, bits<5> xo, dag OOL, dag IOL, string asmstr,
392 bits<5> RT;
393 bits<16> D;
397 let Inst{6-10} = RT;
398 let Inst{11-15} = D{5-1}; // d1
399 let Inst{16-25} = D{15-6}; // d0
400 let Inst{26-30} = xo;
404 // DQ-Form: [PO T RA DQ TX XO] or [PO S RA DQ SX XO]
405 class DQ_RD6_RS5_DQ12<bits<6> opcode, bits<3> xo, dag OOL, dag IOL,
408 bits<6> XT;
409 bits<5> RA;
410 bits<12> DQ;
414 let Inst{6-10} = XT{4-0};
415 let Inst{11-15} = RA;
416 let Inst{16-27} = DQ;
418 let Inst{29-31} = xo;
421 class DQForm_RTp5_RA17_MEM<bits<6> opcode, bits<4> xo, dag OOL, dag IOL,
425 bits<5> RTp;
426 bits<5> RA;
427 bits<12> DQ;
430 let Inst{6-10} = RTp{4-0};
431 let Inst{11-15} = RA;
432 let Inst{16-27} = DQ;
433 let Inst{28-31} = xo;
436 // 1.7.6 X-Form
437 class XForm_base_r3xo<bits<6> opcode, bits<10> xo, dag OOL, dag IOL, string asmstr,
440 bits<5> RST;
441 bits<5> RA;
442 bits<5> RB;
448 let Inst{6-10} = RST;
449 let Inst{11-15} = RA;
450 let Inst{16-20} = RB;
451 let Inst{21-30} = xo;
455 class XForm_base_r3xo_memOp<bits<6> opcode, bits<10> xo, dag OOL, dag IOL,
460 class XForm_tlb<bits<10> xo, dag OOL, dag IOL, string asmstr,
465 class XForm_tlbilx<bits<10> xo, dag OOL, dag IOL, string asmstr,
467 bits<5> T;
471 class XForm_attn<bits<6> opcode, bits<10> xo, dag OOL, dag IOL, string asmstr,
474 let Inst{21-30} = xo;
480 <bits<6> opcode, bits<10> xo, dag OOL, dag IOL, string asmstr,
483 bits<5> RA;
484 bits<5> RST;
485 bits<5> RB;
489 let Inst{6-10} = RST;
490 let Inst{11-15} = RA;
491 let Inst{16-20} = RB;
492 let Inst{21-30} = xo;
497 class XForm_1<bits<6> opcode, bits<10> xo, dag OOL, dag IOL, string asmstr,
501 class XForm_1_memOp<bits<6> opcode, bits<10> xo, dag OOL, dag IOL, string asmstr,
505 class XForm_1a<bits<6> opcode, bits<10> xo, dag OOL, dag IOL, string asmstr,
511 class XForm_rs<bits<6> opcode, bits<10> xo, dag OOL, dag IOL, string asmstr,
518 class XForm_tlbws<bits<6> opcode, bits<10> xo, dag OOL, dag IOL, string asmstr,
521 bits<5> RST;
522 bits<5> RA;
523 bits<1> WS;
527 let Inst{6-10} = RST;
528 let Inst{11-15} = RA;
530 let Inst{21-30} = xo;
534 class XForm_6<bits<6> opcode, bits<10> xo, dag OOL, dag IOL, string asmstr,
540 class XForm_8<bits<6> opcode, bits<10> xo, dag OOL, dag IOL, string asmstr,
544 class XForm_8_memOp<bits<6> opcode, bits<10> xo, dag OOL, dag IOL, string asmstr,
548 class XForm_10<bits<6> opcode, bits<10> xo, dag OOL, dag IOL, string asmstr,
554 class XForm_11<bits<6> opcode, bits<10> xo, dag OOL, dag IOL, string asmstr,
561 class XForm_16<bits<6> opcode, bits<10> xo, dag OOL, dag IOL, string asmstr,
564 bits<3> BF;
565 bits<1> L;
566 bits<5> RA;
567 bits<5> RB;
569 let Inst{6-8} = BF;
572 let Inst{11-15} = RA;
573 let Inst{16-20} = RB;
574 let Inst{21-30} = xo;
578 class XForm_icbt<bits<6> opcode, bits<10> xo, dag OOL, dag IOL, string asmstr,
581 bits<4> CT;
582 bits<5> RA;
583 bits<5> RB;
586 let Inst{7-10} = CT;
587 let Inst{11-15} = RA;
588 let Inst{16-20} = RB;
589 let Inst{21-30} = xo;
593 class XForm_sr<bits<6> opcode, bits<10> xo, dag OOL, dag IOL, string asmstr,
596 bits<5> RS;
597 bits<4> SR;
599 let Inst{6-10} = RS;
600 let Inst{12-15} = SR;
601 let Inst{21-30} = xo;
604 class XForm_mbar<bits<6> opcode, bits<10> xo, dag OOL, dag IOL, string asmstr,
607 bits<5> MO;
609 let Inst{6-10} = MO;
610 let Inst{21-30} = xo;
613 class XForm_srin<bits<6> opcode, bits<10> xo, dag OOL, dag IOL, string asmstr,
616 bits<5> RS;
617 bits<5> RB;
619 let Inst{6-10} = RS;
620 let Inst{16-20} = RB;
621 let Inst{21-30} = xo;
624 class XForm_mtmsr<bits<6> opcode, bits<10> xo, dag OOL, dag IOL, string asmstr,
627 bits<5> RS;
628 bits<1> L;
630 let Inst{6-10} = RS;
632 let Inst{21-30} = xo;
635 class XForm_16_ext<bits<6> opcode, bits<10> xo, dag OOL, dag IOL, string asmstr,
641 class XForm_17<bits<6> opcode, bits<10> xo, dag OOL, dag IOL, string asmstr,
644 bits<3> BF;
645 bits<5> RA;
646 bits<5> RB;
648 let Inst{6-8} = BF;
649 let Inst{9-10} = 0;
650 let Inst{11-15} = RA;
651 let Inst{16-20} = RB;
652 let Inst{21-30} = xo;
656 class XForm_17a<bits<6> opcode, bits<10> xo, dag OOL, dag IOL, string asmstr,
663 class XForm_18<bits<6> opcode, bits<10> xo, dag OOL, dag IOL, string asmstr,
666 bits<5> FRT;
667 bits<5> FRA;
668 bits<5> FRB;
672 let Inst{6-10} = FRT;
673 let Inst{11-15} = FRA;
674 let Inst{16-20} = FRB;
675 let Inst{21-30} = xo;
679 class XForm_19<bits<6> opcode, bits<10> xo, dag OOL, dag IOL, string asmstr,
685 class XForm_20<bits<6> opcode, bits<6> xo, dag OOL, dag IOL, string asmstr,
688 bits<5> FRT;
689 bits<5> FRA;
690 bits<5> FRB;
691 bits<4> tttt;
695 let Inst{6-10} = FRT;
696 let Inst{11-15} = FRA;
697 let Inst{16-20} = FRB;
698 let Inst{21-24} = tttt;
699 let Inst{25-30} = xo;
703 class XForm_24<bits<6> opcode, bits<10> xo, dag OOL, dag IOL, string asmstr,
707 let Inst{6-10} = 31;
708 let Inst{11-15} = 0;
709 let Inst{16-20} = 0;
710 let Inst{21-30} = xo;
714 class XForm_24_sync<bits<6> opcode, bits<10> xo, dag OOL, dag IOL,
717 bits<2> L;
720 let Inst{6-8} = 0;
721 let Inst{9-10} = L;
722 let Inst{11-15} = 0;
723 let Inst{16-20} = 0;
724 let Inst{21-30} = xo;
728 class XForm_IMM2_IMM2<bits<6> opcode, bits<10> xo, dag OOL, dag IOL,
731 bits<2> L;
732 bits<2> PL;
735 let Inst{6-8} = 0;
736 let Inst{9-10} = L;
737 let Inst{11-13} = 0;
738 let Inst{14-15} = PL;
739 let Inst{16-20} = 0;
740 let Inst{21-30} = xo;
744 class XForm_IMM3_IMM2<bits<6> opcode, bits<10> xo, dag OOL, dag IOL,
747 bits<3> L;
748 bits<2> SC;
751 let Inst{6-7} = 0;
752 let Inst{8-10} = L;
753 let Inst{11-13} = 0;
754 let Inst{14-15} = SC;
755 let Inst{16-20} = 0;
756 let Inst{21-30} = xo;
760 class XForm_24_eieio<bits<6> opcode, bits<10> xo, dag OOL, dag IOL,
766 class XForm_25<bits<6> opcode, bits<10> xo, dag OOL, dag IOL, string asmstr,
771 class XForm_25_memOp<bits<6> opcode, bits<10> xo, dag OOL, dag IOL,
777 class XForm_26<bits<6> opcode, bits<10> xo, dag OOL, dag IOL, string asmstr,
783 class XForm_28_memOp<bits<6> opcode, bits<10> xo, dag OOL, dag IOL,
788 class XForm_28<bits<6> opcode, bits<10> xo, dag OOL, dag IOL, string asmstr,
795 class XForm_42<bits<6> opcode, bits<10> xo, dag OOL, dag IOL, string asmstr,
802 let Inst{6-10} = RST;
803 let Inst{11-20} = 0;
804 let Inst{21-30} = xo;
807 class XForm_43<bits<6> opcode, bits<10> xo, dag OOL, dag IOL, string asmstr,
811 bits<5> FM;
815 let Inst{6-10} = FM;
816 let Inst{11-20} = 0;
817 let Inst{21-30} = xo;
821 class XForm_44<bits<6> opcode, bits<10> xo, dag OOL, dag IOL, string asmstr,
824 bits<5> RT;
825 bits<3> BFA;
827 let Inst{6-10} = RT;
828 let Inst{11-13} = BFA;
829 let Inst{14-15} = 0;
830 let Inst{16-20} = 0;
831 let Inst{21-30} = xo;
835 class XForm_45<bits<6> opcode, bits<10> xo, dag OOL, dag IOL, string asmstr,
838 bits<5> RT;
839 bits<2> L;
841 let Inst{6-10} = RT;
842 let Inst{11-13} = 0;
843 let Inst{14-15} = L;
844 let Inst{16-20} = 0;
845 let Inst{21-30} = xo;
849 class X_FRT5_XO2_XO3_XO10<bits<6> opcode, bits<2> xo1, bits<3> xo2, bits<10> xo,
855 let Inst{6-10} = RST;
856 let Inst{11-12} = xo1;
857 let Inst{13-15} = xo2;
858 let Inst{16-20} = 0;
859 let Inst{21-30} = xo;
863 class X_FRT5_XO2_XO3_FRB5_XO10<bits<6> opcode, bits<2> xo1, bits<3> xo2,
864 bits<10> xo, dag OOL, dag IOL, string asmstr,
868 bits<5> FRB;
870 let Inst{6-10} = RST;
871 let Inst{11-12} = xo1;
872 let Inst{13-15} = xo2;
873 let Inst{16-20} = FRB;
874 let Inst{21-30} = xo;
878 class X_FRT5_XO2_XO3_DRM3_XO10<bits<6> opcode, bits<2> xo1, bits<3> xo2,
879 bits<10> xo, dag OOL, dag IOL, string asmstr,
883 bits<3> DRM;
885 let Inst{6-10} = RST;
886 let Inst{11-12} = xo1;
887 let Inst{13-15} = xo2;
888 let Inst{16-17} = 0;
889 let Inst{18-20} = DRM;
890 let Inst{21-30} = xo;
894 class X_FRT5_XO2_XO3_RM2_X10<bits<6> opcode, bits<2> xo1, bits<3> xo2,
895 bits<10> xo, dag OOL, dag IOL, string asmstr,
899 bits<2> RM;
901 let Inst{6-10} = RST;
902 let Inst{11-12} = xo1;
903 let Inst{13-15} = xo2;
904 let Inst{16-18} = 0;
905 let Inst{19-20} = RM;
906 let Inst{21-30} = xo;
911 class XForm_0<bits<6> opcode, bits<10> xo, dag OOL, dag IOL, string asmstr,
919 class XForm_16b<bits<6> opcode, bits<10> xo, dag OOL, dag IOL, string asmstr,
926 class XForm_htm0<bits<6> opcode, bits<10> xo, dag OOL, dag IOL,
933 let Inst{6-9} = 0;
935 let Inst{11-20} = 0;
936 let Inst{21-30} = xo;
940 class XForm_htm1<bits<6> opcode, bits<10> xo, dag OOL, dag IOL,
948 let Inst{7-20} = 0;
949 let Inst{21-30} = xo;
953 class XForm_htm2<bits<6> opcode, bits<10> xo, dag OOL, dag IOL, string asmstr,
960 let Inst{7-9} = 0;
962 let Inst{11-20} = 0;
963 let Inst{21-30} = xo;
967 class XForm_htm3<bits<6> opcode, bits<10> xo, dag OOL, dag IOL, string asmstr,
970 bits<3> BF;
974 let Inst{6-8} = BF;
975 let Inst{9-20} = 0;
976 let Inst{21-30} = xo;
981 class X_BF3_L1_RS5_RS5<bits<6> opcode, bits<10> xo, dag OOL, dag IOL,
984 bits<3> BF;
985 bits<1> L;
986 bits<5> RA;
987 bits<5> RB;
991 let Inst{6-8} = BF;
994 let Inst{11-15} = RA;
995 let Inst{16-20} = RB;
996 let Inst{21-30} = xo;
1001 class X_BF3_RS5_RS5<bits<6> opcode, bits<10> xo, dag OOL, dag IOL,
1004 bits<3> BF;
1005 bits<5> RA;
1006 bits<5> RB;
1010 let Inst{6-8} = BF;
1011 let Inst{9-10} = 0;
1012 let Inst{11-15} = RA;
1013 let Inst{16-20} = RB;
1014 let Inst{21-30} = xo;
1019 class X_RD5_XO5_RS5<bits<6> opcode, bits<5> xo2, bits<10> xo, dag OOL, dag IOL,
1025 class X_BF3_DCMX7_RS5<bits<6> opcode, bits<10> xo, dag OOL, dag IOL,
1028 bits<3> BF;
1029 bits<7> DCMX;
1030 bits<5> VB;
1034 let Inst{6-8} = BF;
1035 let Inst{9-15} = DCMX;
1036 let Inst{16-20} = VB;
1037 let Inst{21-30} = xo;
1041 class X_RD6_IMM8<bits<6> opcode, bits<10> xo, dag OOL, dag IOL,
1044 bits<6> XT;
1045 bits<8> IMM8;
1049 let Inst{6-10} = XT{4-0};
1050 let Inst{11-12} = 0;
1051 let Inst{13-20} = IMM8;
1052 let Inst{21-30} = xo;
1058 class X_RD5_RS5_IM5<bits<6> opcode, bits<10> xo, dag OOL, dag IOL,
1063 class X_BF3<bits<6> opcode, bits<10> xo, dag OOL, dag IOL, string asmstr,
1071 class X_L1_RS5_RS5<bits<6> opcode, bits<10> xo, dag OOL, dag IOL,
1081 // XX*-Form (VSX)
1082 class XX1Form<bits<6> opcode, bits<10> xo, dag OOL, dag IOL, string asmstr,
1085 bits<6> XT;
1086 bits<5> RA;
1087 bits<5> RB;
1091 let Inst{6-10} = XT{4-0};
1092 let Inst{11-15} = RA;
1093 let Inst{16-20} = RB;
1094 let Inst{21-30} = xo;
1098 class XX1Form_memOp<bits<6> opcode, bits<10> xo, dag OOL, dag IOL,
1102 class XX1_RS6_RD5_XO<bits<6> opcode, bits<10> xo, dag OOL, dag IOL,
1108 class XX2Form<bits<6> opcode, bits<9> xo, dag OOL, dag IOL, string asmstr,
1111 bits<6> XT;
1112 bits<6> XB;
1116 let Inst{6-10} = XT{4-0};
1117 let Inst{11-15} = 0;
1118 let Inst{16-20} = XB{4-0};
1119 let Inst{21-29} = xo;
1124 class XX2Form_1<bits<6> opcode, bits<9> xo, dag OOL, dag IOL, string asmstr,
1127 bits<3> CR;
1128 bits<6> XB;
1132 let Inst{6-8} = CR;
1133 let Inst{9-15} = 0;
1134 let Inst{16-20} = XB{4-0};
1135 let Inst{21-29} = xo;
1140 class XX2Form_2<bits<6> opcode, bits<9> xo, dag OOL, dag IOL, string asmstr,
1143 bits<6> XT;
1144 bits<6> XB;
1145 bits<2> D;
1149 let Inst{6-10} = XT{4-0};
1150 let Inst{11-13} = 0;
1151 let Inst{14-15} = D;
1152 let Inst{16-20} = XB{4-0};
1153 let Inst{21-29} = xo;
1158 class XX2_RD6_UIM5_RS6<bits<6> opcode, bits<9> xo, dag OOL, dag IOL,
1161 bits<6> XT;
1162 bits<6> XB;
1163 bits<5> UIM5;
1167 let Inst{6-10} = XT{4-0};
1168 let Inst{11-15} = UIM5;
1169 let Inst{16-20} = XB{4-0};
1170 let Inst{21-29} = xo;
1176 class XX2_RD5_XO5_RS6<bits<6> opcode, bits<5> xo2, bits<9> xo, dag OOL, dag IOL,
1179 bits<5> RT;
1180 bits<6> XB;
1184 let Inst{6-10} = RT;
1185 let Inst{11-15} = xo2;
1186 let Inst{16-20} = XB{4-0};
1187 let Inst{21-29} = xo;
1193 class XX2_RD6_XO5_RS6<bits<6> opcode, bits<5> xo2, bits<9> xo, dag OOL, dag IOL,
1196 bits<6> XT;
1197 bits<6> XB;
1201 let Inst{6-10} = XT{4-0};
1202 let Inst{11-15} = xo2;
1203 let Inst{16-20} = XB{4-0};
1204 let Inst{21-29} = xo;
1209 class XX2_BF3_DCMX7_RS6<bits<6> opcode, bits<9> xo, dag OOL, dag IOL,
1212 bits<3> BF;
1213 bits<7> DCMX;
1214 bits<6> XB;
1218 let Inst{6-8} = BF;
1219 let Inst{9-15} = DCMX;
1220 let Inst{16-20} = XB{4-0};
1221 let Inst{21-29} = xo;
1226 class XX2_RD6_DCMX7_RS6<bits<6> opcode, bits<4> xo1, bits<3> xo2,
1230 bits<6> XT;
1231 bits<7> DCMX;
1232 bits<6> XB;
1236 let Inst{6-10} = XT{4-0};
1237 let Inst{11-15} = DCMX{4-0};
1238 let Inst{16-20} = XB{4-0};
1239 let Inst{21-24} = xo1;
1241 let Inst{26-28} = xo2;
1247 class XForm_XD6_RA5_RB5<bits<6> opcode, bits<10> xo, dag OOL, dag IOL,
1250 bits<5> RA;
1251 bits<6> D;
1252 bits<5> RB;
1256 let Inst{6-10} = D{4-0}; // D
1257 let Inst{11-15} = RA;
1258 let Inst{16-20} = RB;
1259 let Inst{21-30} = xo;
1263 class XForm_BF3_UIM6_FRB5<bits<6> opcode, bits<10> xo, dag OOL, dag IOL,
1266 bits<3> BF;
1267 bits<6> UIM;
1268 bits<5> FRB;
1272 let Inst{6-8} = BF;
1274 let Inst{10-15} = UIM;
1275 let Inst{16-20} = FRB;
1276 let Inst{21-30} = xo;
1280 class XForm_SP2_FRTB5<bits<6> opcode, bits<10> xo, dag OOL, dag IOL, string asmstr,
1283 bits<2> SP;
1284 bits<5> FRT;
1285 bits<5> FRB;
1291 let Inst{6 - 10} = FRT;
1292 let Inst{11 - 12} = SP;
1293 let Inst{13 - 15} = 0;
1294 let Inst{16 - 20} = FRB;
1295 let Inst{21 - 30} = xo;
1299 class XForm_S1_FRTB5<bits<6> opcode, bits<10> xo, dag OOL, dag IOL,
1303 bits<5> FRT;
1304 bits<5> FRB;
1310 let Inst{6 - 10} = FRT;
1312 let Inst{12 - 15} = 0;
1313 let Inst{16 - 20} = FRB;
1314 let Inst{21 - 30} = xo;
1318 class XX3Form<bits<6> opcode, bits<8> xo, dag OOL, dag IOL, string asmstr,
1321 bits<6> XT;
1322 bits<6> XA;
1323 bits<6> XB;
1327 let Inst{6-10} = XT{4-0};
1328 let Inst{11-15} = XA{4-0};
1329 let Inst{16-20} = XB{4-0};
1330 let Inst{21-28} = xo;
1336 class XX3Form_SameOp<bits<6> opcode, bits<8> xo, dag OOL, dag IOL, string asmstr,
1343 class XX3Form_1<bits<6> opcode, bits<8> xo, dag OOL, dag IOL, string asmstr,
1346 bits<3> CR;
1347 bits<6> XA;
1348 bits<6> XB;
1352 let Inst{6-8} = CR;
1353 let Inst{9-10} = 0;
1354 let Inst{11-15} = XA{4-0};
1355 let Inst{16-20} = XB{4-0};
1356 let Inst{21-28} = xo;
1362 class XX3Form_2<bits<6> opcode, bits<5> xo, dag OOL, dag IOL, string asmstr,
1365 bits<6> XT;
1366 bits<6> XA;
1367 bits<6> XB;
1368 bits<2> D;
1372 let Inst{6-10} = XT{4-0};
1373 let Inst{11-15} = XA{4-0};
1374 let Inst{16-20} = XB{4-0};
1376 let Inst{22-23} = D;
1377 let Inst{24-28} = xo;
1383 class XX3Form_Rc<bits<6> opcode, bits<7> xo, dag OOL, dag IOL, string asmstr,
1386 bits<6> XT;
1387 bits<6> XA;
1388 bits<6> XB;
1394 let Inst{6-10} = XT{4-0};
1395 let Inst{11-15} = XA{4-0};
1396 let Inst{16-20} = XB{4-0};
1398 let Inst{22-28} = xo;
1404 class XX4Form<bits<6> opcode, bits<2> xo, dag OOL, dag IOL, string asmstr,
1407 bits<6> XT;
1408 bits<6> XA;
1409 bits<6> XB;
1410 bits<6> XC;
1414 let Inst{6-10} = XT{4-0};
1415 let Inst{11-15} = XA{4-0};
1416 let Inst{16-20} = XB{4-0};
1417 let Inst{21-25} = XC{4-0};
1418 let Inst{26-27} = xo;
1425 // DCB_Form - Form X instruction, used for dcb* instructions.
1426 class DCB_Form<bits<10> xo, bits<5> immfield, dag OOL, dag IOL, string asmstr,
1429 bits<5> RA;
1430 bits<5> RB;
1434 let Inst{6-10} = immfield;
1435 let Inst{11-15} = RA;
1436 let Inst{16-20} = RB;
1437 let Inst{21-30} = xo;
1441 class DCB_Form_hint<bits<10> xo, dag OOL, dag IOL, string asmstr,
1444 bits<5> TH;
1445 bits<5> RA;
1446 bits<5> RB;
1450 let Inst{6-10} = TH;
1451 let Inst{11-15} = RA;
1452 let Inst{16-20} = RB;
1453 let Inst{21-30} = xo;
1457 // DSS_Form - Form X instruction, used for altivec dss* instructions.
1458 class DSS_Form<bits<1> T, bits<10> xo, dag OOL, dag IOL, string asmstr,
1461 bits<2> STRM;
1462 bits<5> RA;
1463 bits<5> RB;
1468 let Inst{7-8} = 0;
1469 let Inst{9-10} = STRM;
1470 let Inst{11-15} = RA;
1471 let Inst{16-20} = RB;
1472 let Inst{21-30} = xo;
1476 // 1.7.7 XL-Form
1477 class XLForm_1<bits<6> opcode, bits<10> xo, dag OOL, dag IOL, string asmstr,
1480 bits<5> CRD;
1481 bits<5> CRA;
1482 bits<5> CRB;
1486 let Inst{6-10} = CRD;
1487 let Inst{11-15} = CRA;
1488 let Inst{16-20} = CRB;
1489 let Inst{21-30} = xo;
1493 // XL-Form for unary alias for CRNOR (CRNOT)
1494 class XLForm_1s<bits<6> opcode, bits<10> xo, dag OOL, dag IOL, string asmstr,
1500 class XLForm_1_np<bits<6> opcode, bits<10> xo, dag OOL, dag IOL, string asmstr,
1508 class XLForm_1_gen<bits<6> opcode, bits<10> xo, dag OOL, dag IOL, string asmstr,
1511 bits<5> RT;
1512 bits<5> RB;
1519 class XLForm_1_ext<bits<6> opcode, bits<10> xo, dag OOL, dag IOL, string asmstr,
1522 bits<5> CRD;
1526 let Inst{6-10} = CRD;
1527 let Inst{11-15} = CRD;
1528 let Inst{16-20} = CRD;
1529 let Inst{21-30} = xo;
1533 class XLForm_2<bits<6> opcode, bits<10> xo, bit lk, dag OOL, dag IOL, string asmstr,
1536 bits<5> BO;
1537 bits<5> BI;
1538 bits<2> BH;
1542 let Inst{6-10} = BO;
1543 let Inst{11-15} = BI;
1544 let Inst{16-18} = 0;
1545 let Inst{19-20} = BH;
1546 let Inst{21-30} = xo;
1550 class XLForm_2_br<bits<6> opcode, bits<10> xo, bit lk,
1553 bits<7> BIBO; // 2 bits of BI and 5 bits of BO.
1554 bits<3> CR;
1556 let BO = BIBO{4-0};
1557 let BI{0-1} = BIBO{5-6};
1558 let BI{2-4} = CR{0-2};
1562 class XLForm_2_br2<bits<6> opcode, bits<10> xo, bits<5> bo, bit lk,
1569 class XLForm_2_ext<bits<6> opcode, bits<10> xo, bits<5> bo, bits<5> bi, bit lk,
1577 class XLForm_3<bits<6> opcode, bits<10> xo, dag OOL, dag IOL, string asmstr,
1580 bits<3> BF;
1581 bits<3> BFA;
1583 let Inst{6-8} = BF;
1584 let Inst{9-10} = 0;
1585 let Inst{11-13} = BFA;
1586 let Inst{14-15} = 0;
1587 let Inst{16-20} = 0;
1588 let Inst{21-30} = xo;
1592 class XLForm_4<bits<6> opcode, bits<10> xo, dag OOL, dag IOL, string asmstr,
1595 bits<3> BF;
1597 bits<4> U;
1601 let Inst{6-8} = BF;
1602 let Inst{9-10} = 0;
1603 let Inst{11-14} = 0;
1605 let Inst{16-19} = U;
1607 let Inst{21-30} = xo;
1611 class XLForm_S<bits<6> opcode, bits<10> xo, dag OOL, dag IOL, string asmstr,
1614 bits<1> S;
1618 let Inst{6-19} = 0;
1620 let Inst{21-30} = xo;
1624 class XLForm_2_and_DSForm_1<bits<6> opcode1, bits<10> xo1, bit lk,
1625 bits<6> opcode2, bits<2> xo2,
1629 bits<5> BO;
1630 bits<5> BI;
1631 bits<2> BH;
1633 bits<5> RST;
1634 bits<5> RA;
1635 bits<14> D;
1639 let Inst{6-10} = BO;
1640 let Inst{11-15} = BI;
1641 let Inst{16-18} = 0;
1642 let Inst{19-20} = BH;
1643 let Inst{21-30} = xo1;
1646 let Inst{38-42} = RST;
1647 let Inst{43-47} = RA;
1648 let Inst{48-61} = D;
1649 let Inst{62-63} = xo2;
1652 class XLForm_2_ext_and_DSForm_1<bits<6> opcode1, bits<10> xo1,
1653 bits<5> bo, bits<5> bi, bit lk,
1654 bits<6> opcode2, bits<2> xo2,
1664 class XLForm_2_ext_and_DForm_1<bits<6> opcode1, bits<10> xo1, bits<5> bo,
1665 bits<5> bi, bit lk, bits<6> opcode2, dag OOL,
1670 bits<5> RST;
1671 bits<5> RA;
1672 bits<16> D;
1676 let Inst{6-10} = bo;
1677 let Inst{11-15} = bi;
1678 let Inst{16-18} = 0;
1679 let Inst{19-20} = 0; // Unused (BH)
1680 let Inst{21-30} = xo1;
1683 let Inst{38-42} = RST;
1684 let Inst{43-47} = RA;
1685 let Inst{48-63} = D;
1688 // 1.7.8 XFX-Form
1689 class XFXForm_1<bits<6> opcode, bits<10> xo, dag OOL, dag IOL, string asmstr,
1692 bits<5> RST;
1693 bits<10> SPR;
1695 let Inst{6-10} = RST;
1701 let Inst{16} = SPR{9};
1706 let Inst{21-30} = xo;
1710 class XFXForm_1_ext<bits<6> opcode, bits<10> xo, bits<10> spr,
1716 class XFXForm_3<bits<6> opcode, bits<10> xo, dag OOL, dag IOL, string asmstr,
1719 bits<5> RT;
1721 let Inst{6-10} = RT;
1722 let Inst{11-20} = 0;
1723 let Inst{21-30} = xo;
1727 class XFXForm_3p<bits<6> opcode, bits<10> xo, dag OOL, dag IOL, string asmstr,
1730 bits<5> RT;
1731 bits<10> imm;
1734 let Inst{6-10} = RT;
1735 let Inst{11-20} = imm;
1736 let Inst{21-30} = xo;
1740 class XFXForm_5<bits<6> opcode, bits<10> xo, dag OOL, dag IOL, string asmstr,
1743 bits<8> FXM;
1744 bits<5> RST;
1746 let Inst{6-10} = RST;
1748 let Inst{12-19} = FXM;
1750 let Inst{21-30} = xo;
1754 class XFXForm_5a<bits<6> opcode, bits<10> xo, dag OOL, dag IOL, string asmstr,
1757 bits<5> RST;
1758 bits<8> FXM;
1760 let Inst{6-10} = RST;
1762 let Inst{12-19} = FXM;
1764 let Inst{21-30} = xo;
1768 // XFL-Form - MTFSF
1771 class XFLForm<bits<6> opcode, bits<10> xo, dag OOL, dag IOL, string asmstr,
1774 bits<8> FM;
1775 bits<5> RT;
1781 let Inst{7-14} = FM;
1783 let Inst{16-20} = RT;
1784 let Inst{21-30} = xo;
1788 class XFLForm_1<bits<6> opcode, bits<10> xo, dag OOL, dag IOL, string asmstr,
1792 bits<8> FLM;
1794 bits<5> FRB;
1800 let Inst{7-14} = FLM;
1802 let Inst{16-20} = FRB;
1803 let Inst{21-30} = xo;
1807 // 1.7.10 XS-Form - SRADI.
1808 class XSForm_1<bits<6> opcode, bits<9> xo, dag OOL, dag IOL, string asmstr,
1811 bits<5> RA;
1812 bits<5> RS;
1813 bits<6> SH;
1818 let Inst{6-10} = RS;
1819 let Inst{11-15} = RA;
1820 let Inst{16-20} = SH{4,3,2,1,0};
1821 let Inst{21-29} = xo;
1826 // 1.7.11 XO-Form
1827 class XOForm_1<bits<6> opcode, bits<9> xo, bit oe, dag OOL, dag IOL, string asmstr,
1830 bits<5> RT;
1831 bits<5> RA;
1832 bits<5> RB;
1838 let Inst{6-10} = RT;
1839 let Inst{11-15} = RA;
1840 let Inst{16-20} = RB;
1842 let Inst{22-30} = xo;
1846 class XOForm_3<bits<6> opcode, bits<9> xo, bit oe,
1852 // 1.7.12 A-Form
1853 class AForm_1<bits<6> opcode, bits<5> xo, dag OOL, dag IOL, string asmstr,
1856 bits<5> FRT;
1857 bits<5> FRA;
1858 bits<5> FRC;
1859 bits<5> FRB;
1865 let Inst{6-10} = FRT;
1866 let Inst{11-15} = FRA;
1867 let Inst{16-20} = FRB;
1868 let Inst{21-25} = FRC;
1869 let Inst{26-30} = xo;
1873 class AForm_2<bits<6> opcode, bits<5> xo, dag OOL, dag IOL, string asmstr,
1879 class AForm_3<bits<6> opcode, bits<5> xo, dag OOL, dag IOL, string asmstr,
1885 class AForm_4<bits<6> opcode, bits<5> xo, dag OOL, dag IOL, string asmstr,
1888 bits<5> RT;
1889 bits<5> RA;
1890 bits<5> RB;
1891 bits<5> COND;
1895 let Inst{6-10} = RT;
1896 let Inst{11-15} = RA;
1897 let Inst{16-20} = RB;
1898 let Inst{21-25} = COND;
1899 let Inst{26-30} = xo;
1903 // 1.7.13 M-Form
1904 class MForm_1<bits<6> opcode, dag OOL, dag IOL, string asmstr,
1907 bits<5> RA;
1908 bits<5> RS;
1909 bits<5> RB;
1910 bits<5> MB;
1911 bits<5> ME;
1917 let Inst{6-10} = RS;
1918 let Inst{11-15} = RA;
1919 let Inst{16-20} = RB;
1920 let Inst{21-25} = MB;
1921 let Inst{26-30} = ME;
1925 class MForm_2<bits<6> opcode, dag OOL, dag IOL, string asmstr,
1928 bits<5> RA;
1929 bits<5> RS;
1930 bits<5> SH;
1931 bits<5> MB;
1932 bits<5> ME;
1938 let Inst{6-10} = RS;
1939 let Inst{11-15} = RA;
1940 let Inst{16-20} = SH;
1941 let Inst{21-25} = MB;
1942 let Inst{26-30} = ME;
1946 // 1.7.14 MD-Form
1947 class MDForm_1<bits<6> opcode, bits<3> xo, dag OOL, dag IOL, string asmstr,
1950 bits<5> RA;
1951 bits<5> RS;
1952 bits<6> SH;
1953 bits<6> MBE;
1959 let Inst{6-10} = RS;
1960 let Inst{11-15} = RA;
1961 let Inst{16-20} = SH{4,3,2,1,0};
1962 let Inst{21-26} = MBE{4,3,2,1,0,5};
1963 let Inst{27-29} = xo;
1968 class MDSForm_1<bits<6> opcode, bits<4> xo, dag OOL, dag IOL, string asmstr,
1971 bits<5> RA;
1972 bits<5> RS;
1973 bits<5> RB;
1974 bits<6> MBE;
1980 let Inst{6-10} = RS;
1981 let Inst{11-15} = RA;
1982 let Inst{16-20} = RB;
1983 let Inst{21-26} = MBE{4,3,2,1,0,5};
1984 let Inst{27-30} = xo;
1989 // E-1 VA-Form
1991 // VAForm_1 - DACB ordering.
1992 class VAForm_1<bits<6> xo, dag OOL, dag IOL, string asmstr,
1995 bits<5> RT;
1996 bits<5> RA;
1997 bits<5> RC;
1998 bits<5> RB;
2002 let Inst{6-10} = RT;
2003 let Inst{11-15} = RA;
2004 let Inst{16-20} = RB;
2005 let Inst{21-25} = RC;
2006 let Inst{26-31} = xo;
2009 // VAForm_1a - DABC ordering.
2010 class VAForm_1a<bits<6> xo, dag OOL, dag IOL, string asmstr,
2013 bits<5> RT;
2014 bits<5> RA;
2015 bits<5> RB;
2016 bits<5> RC;
2020 let Inst{6-10} = RT;
2021 let Inst{11-15} = RA;
2022 let Inst{16-20} = RB;
2023 let Inst{21-25} = RC;
2024 let Inst{26-31} = xo;
2027 class VAForm_2<bits<6> xo, dag OOL, dag IOL, string asmstr,
2030 bits<5> RT;
2031 bits<5> RA;
2032 bits<5> RB;
2033 bits<4> SH;
2037 let Inst{6-10} = RT;
2038 let Inst{11-15} = RA;
2039 let Inst{16-20} = RB;
2041 let Inst{22-25} = SH;
2042 let Inst{26-31} = xo;
2045 // E-2 VX-Form
2046 class VXForm_1<bits<11> xo, dag OOL, dag IOL, string asmstr,
2049 bits<5> VD;
2050 bits<5> VA;
2051 bits<5> VB;
2055 let Inst{6-10} = VD;
2056 let Inst{11-15} = VA;
2057 let Inst{16-20} = VB;
2058 let Inst{21-31} = xo;
2061 class VXForm_setzero<bits<11> xo, dag OOL, dag IOL, string asmstr,
2069 class VXForm_2<bits<11> xo, dag OOL, dag IOL, string asmstr,
2072 bits<5> VD;
2073 bits<5> VB;
2077 let Inst{6-10} = VD;
2078 let Inst{11-15} = 0;
2079 let Inst{16-20} = VB;
2080 let Inst{21-31} = xo;
2083 class VXForm_3<bits<11> xo, dag OOL, dag IOL, string asmstr,
2086 bits<5> VD;
2087 bits<5> IMM;
2091 let Inst{6-10} = VD;
2092 let Inst{11-15} = IMM;
2093 let Inst{16-20} = 0;
2094 let Inst{21-31} = xo;
2097 /// VXForm_4 - VX instructions with "VD,0,0" register fields, like mfvscr.
2098 class VXForm_4<bits<11> xo, dag OOL, dag IOL, string asmstr,
2101 bits<5> VD;
2105 let Inst{6-10} = VD;
2106 let Inst{11-15} = 0;
2107 let Inst{16-20} = 0;
2108 let Inst{21-31} = xo;
2111 /// VXForm_5 - VX instructions with "0,0,VB" register fields, like mtvscr.
2112 class VXForm_5<bits<11> xo, dag OOL, dag IOL, string asmstr,
2115 bits<5> VB;
2119 let Inst{6-10} = 0;
2120 let Inst{11-15} = 0;
2121 let Inst{16-20} = VB;
2122 let Inst{21-31} = xo;
2126 class VXForm_RD5_XO5_RS5<bits<11> xo, bits<5> eo, dag OOL, dag IOL,
2129 bits<5> VD;
2130 bits<5> VB;
2134 let Inst{6-10} = VD;
2135 let Inst{11-15} = eo;
2136 let Inst{16-20} = VB;
2137 let Inst{21-31} = xo;
2140 /// VXForm_CR - VX crypto instructions with "VRT, VRA, ST, SIX"
2141 class VXForm_CR<bits<11> xo, dag OOL, dag IOL, string asmstr,
2144 bits<5> VD;
2145 bits<5> VA;
2146 bits<1> ST;
2147 bits<4> SIX;
2151 let Inst{6-10} = VD;
2152 let Inst{11-15} = VA;
2153 let Inst{16} = ST;
2154 let Inst{17-20} = SIX;
2155 let Inst{21-31} = xo;
2158 /// VXForm_BX - VX crypto instructions with "VRT, VRA, 0 - like vsbox"
2159 class VXForm_BX<bits<11> xo, dag OOL, dag IOL, string asmstr,
2162 bits<5> VD;
2163 bits<5> VA;
2167 let Inst{6-10} = VD;
2168 let Inst{11-15} = VA;
2169 let Inst{16-20} = 0;
2170 let Inst{21-31} = xo;
2173 // E-4 VXR-Form
2174 class VXRForm_1<bits<10> xo, dag OOL, dag IOL, string asmstr,
2177 bits<5> VD;
2178 bits<5> VA;
2179 bits<5> VB;
2184 let Inst{6-10} = VD;
2185 let Inst{11-15} = VA;
2186 let Inst{16-20} = VB;
2188 let Inst{22-31} = xo;
2191 // VX-Form: [PO VRT EO VRB 1 PS XO]
2192 class VX_RD5_EO5_RS5_PS1_XO9<bits<5> eo, bits<9> xo,
2196 bits<5> VD;
2197 bits<5> VB;
2202 let Inst{6-10} = VD;
2203 let Inst{11-15} = eo;
2204 let Inst{16-20} = VB;
2207 let Inst{23-31} = xo;
2210 // VX-Form: [PO VRT VRA VRB 1 PS XO] or [PO VRT VRA VRB 1 / XO]
2211 class VX_RD5_RSp5_PS1_XO9<bits<9> xo, dag OOL, dag IOL, string asmstr,
2214 bits<5> VD;
2215 bits<5> VA;
2216 bits<5> VB;
2221 let Inst{6-10} = VD;
2222 let Inst{11-15} = VA;
2223 let Inst{16-20} = VB;
2226 let Inst{23-31} = xo;
2229 class Z22Form_BF3_FRA5_DCM6<bits<6> opcode, bits<9> xo, dag OOL, dag IOL,
2233 bits<3> BF;
2234 bits<5> FRA;
2235 bits<6> DCM;
2239 let Inst{6-8} = BF;
2240 let Inst{9-10} = 0;
2241 let Inst{11-15} = FRA;
2242 let Inst{16-21} = DCM;
2243 let Inst{22-30} = xo;
2247 class Z22Form_FRTA5_SH6<bits<6> opcode, bits<9> xo, dag OOL, dag IOL,
2251 bits<5> FRT;
2252 bits<5> FRA;
2253 bits<6> SH;
2259 let Inst{6 - 10} = FRT;
2260 let Inst{11 - 15} = FRA;
2261 let Inst{16 - 21} = SH;
2262 let Inst{22 - 30} = xo;
2266 class Z23Form_8<bits<6> opcode, bits<8> xo, dag OOL, dag IOL, string asmstr,
2269 bits<5> VRT;
2271 bits<5> VRB;
2272 bits<2> idx;
2278 let Inst{6-10} = VRT;
2279 let Inst{11-14} = 0;
2281 let Inst{16-20} = VRB;
2282 let Inst{21-22} = idx;
2283 let Inst{23-30} = xo;
2287 class Z23Form_RTAB5_CY2<bits<6> opcode, bits<8> xo, dag OOL, dag IOL,
2290 bits<5> RT;
2291 bits<5> RA;
2292 bits<5> RB;
2293 bits<2> CY;
2297 let Inst{6-10} = RT;
2298 let Inst{11-15} = RA;
2299 let Inst{16-20} = RB;
2300 let Inst{21-22} = CY;
2301 let Inst{23-30} = xo;
2305 class Z23Form_FRTAB5_RMC2<bits<6> opcode, bits<8> xo, dag OOL, dag IOL,
2308 bits<5> FRT;
2309 bits<5> FRA;
2310 bits<5> FRB;
2311 bits<2> RMC;
2317 let Inst{6 - 10} = FRT;
2318 let Inst{11 - 15} = FRA;
2319 let Inst{16 - 20} = FRB;
2320 let Inst{21 - 22} = RMC;
2321 let Inst{23 - 30} = xo;
2325 class Z23Form_TE5_FRTB5_RMC2<bits<6> opcode, bits<8> xo, dag OOL, dag IOL,
2328 bits<5> TE;
2332 class Z23Form_FRTB5_R1_RMC2<bits<6> opcode, bits<8> xo, dag OOL, dag IOL,
2335 bits<5> FRT;
2336 bits<1> R;
2337 bits<5> FRB;
2338 bits<2> RMC;
2344 let Inst{6 - 10} = FRT;
2345 let Inst{11 - 14} = 0;
2347 let Inst{16 - 20} = FRB;
2348 let Inst{21 - 22} = RMC;
2349 let Inst{23 - 30} = xo;
2353 //===----------------------------------------------------------------------===//
2361 let Inst{31-0} = 0;