Move yet more instructions over to being printed by the generated asm writer
[oota-llvm.git] / lib / Target / PowerPC / PPCInstrFormats.td
1 //===- PowerPCInstrFormats.td - PowerPC Instruction Formats --*- tablegen -*-=//
2 // 
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file was developed by the LLVM research group and is distributed under
6 // the University of Illinois Open Source License. See LICENSE.TXT for details.
7 // 
8 //===----------------------------------------------------------------------===//
9 //
10 //
11 //===----------------------------------------------------------------------===//
12
13 class Format<bits<5> val> {
14         bits<5> Value = val;
15 }
16
17 def Pseudo: Format<0>;
18 def Gpr : Format<1>;
19 def Gpr0 : Format<2>;
20 def Simm16 : Format<3>;
21 def PCRelimm24 : Format<5>;
22 def Imm24 : Format<6>;
23 def Imm5 : Format<7>;
24 def PCRelimm14 : Format<8>;
25 def Imm14 : Format<9>;
26 def Imm2 : Format<10>;
27 def Crf : Format<11>;
28 def Imm3 : Format<12>;
29 def Imm1 : Format<13>;
30 def Fpr : Format<14>;
31 def Imm4 : Format<15>;
32 def Imm8 : Format<16>;
33 def Disimm16 : Format<17>;
34 def Disimm14 : Format<18>;
35 def Spr : Format<19>;
36 def Sgr : Format<20>;
37 def Imm15 : Format<21>;
38 def Vpr : Format<22>;
39 def Imm6 : Format<23>;
40
41 //===----------------------------------------------------------------------===//
42 //
43 // PowerPC instruction formats
44
45 class I<string name, bits<6> opcode, bit ppc64, bit vmx> : Instruction {
46   field bits<32> Inst;
47
48   bits<3> ArgCount;
49   bits<5> Arg0Type;
50   bits<5> Arg1Type;
51   bits<5> Arg2Type;
52   bits<5> Arg3Type;
53   bits<5> Arg4Type;
54   bit PPC64 = ppc64;
55   bit VMX = vmx;
56
57   let Name = name;
58   let Namespace = "PPC";
59   let Inst{0-5} = opcode;
60 }
61
62 // 1.7.1 I-Form
63 class IForm<string name, bits<6> opcode, bit aa, bit lk, bit ppc64, bit vmx>
64   : I<name, opcode, ppc64, vmx> {
65   field bits<24> LI;
66
67   let ArgCount = 1;
68   let Arg0Type = Imm24.Value;
69   let Arg1Type = 0;
70   let Arg2Type = 0;
71   let Arg3Type = 0;
72   let Arg4Type = 0;
73
74   let Inst{6-29}  = LI;
75   let Inst{30}    = aa;
76   let Inst{31}    = lk;
77 }
78
79 // 1.7.2 B-Form
80 class BForm<string name, bits<6> opcode, bit aa, bit lk, bit ppc64, bit vmx>
81   : I<name, opcode, ppc64, vmx> {
82   field bits<5>  BO;
83   field bits<5>  BI;
84   field bits<14> BD;
85
86   let ArgCount = 3;
87   let Arg0Type = Imm5.Value;
88   let Arg1Type = Imm5.Value;
89   let Arg2Type = PCRelimm14.Value;
90   let Arg3Type = 0;
91   let Arg4Type = 0;
92
93   let Inst{6-10}  = BO;
94   let Inst{11-15} = BI;
95   let Inst{16-29} = BD;
96   let Inst{30}    = aa;
97   let Inst{31}    = lk;
98 }
99
100 class BForm_ext<string name, bits<6> opcode, bit aa, bit lk, bits<5> bo, 
101                 bits<5> bi, bit ppc64, bit vmx>
102   : BForm<name, opcode, aa, lk, ppc64, vmx> {
103   let ArgCount = 2;
104   let Arg2Type = Imm5.Value;
105   let Arg1Type = PCRelimm14.Value;
106   let Arg2Type = 0;
107   let BO = bo;
108   let BI = bi;
109 }
110
111 // 1.7.4 D-Form
112 class DForm_base<string name, bits<6> opcode, bit ppc64, bit vmx> 
113   : I<name, opcode, ppc64, vmx> {
114   field bits<5>  A;
115   field bits<5>  B;
116   field bits<16> C;
117   
118   let ArgCount = 3;
119   let Arg0Type = Gpr.Value;
120   let Arg1Type = Gpr.Value;
121   let Arg2Type = Simm16.Value;
122   let Arg3Type = 0;
123   let Arg4Type = 0;
124  
125   let Inst{6-10}  = A;
126   let Inst{11-15} = B;
127   let Inst{16-31} = C;
128 }
129
130 class DForm_1<string name, bits<6> opcode, bit ppc64, bit vmx> 
131   : DForm_base<name, opcode, ppc64, vmx> {
132   let Arg1Type = Disimm16.Value;
133   let Arg2Type = Gpr0.Value;
134 }
135
136 class DForm_2<string name, bits<6> opcode, bit ppc64, bit vmx> 
137   : DForm_base<name, opcode, ppc64, vmx>;
138
139 class DForm_2_r0<string name, bits<6> opcode, bit ppc64, bit vmx> 
140   : DForm_base<name, opcode, ppc64, vmx> {
141   let Arg1Type = Gpr0.Value;
142 }
143
144 // Currently we make the use/def reg distinction in ISel, not tablegen
145 class DForm_3<string name, bits<6> opcode, bit ppc64, bit vmx> 
146   : DForm_1<name, opcode, ppc64, vmx>;
147
148 class DForm_4<bits<6> opcode, bit ppc64, bit vmx,
149               dag OL, string asmstr> : DForm_base<"", opcode, ppc64, vmx> {
150   let OperandList = OL;
151   let AsmString = asmstr;
152 }
153
154 class DForm_4_zero<string name, bits<6> opcode, bit ppc64, bit vmx,
155                    dag OL, string asmstr> : DForm_1<"", opcode, ppc64, vmx> {
156   let ArgCount = 0;
157   let Arg0Type = 0;
158   let Arg1Type = 0;
159   let Arg2Type = 0;
160   let A = 0;
161   let B = 0;
162   let C = 0;
163   let OperandList = OL;
164   let AsmString = asmstr;
165 }
166
167 class DForm_5<string name, bits<6> opcode, bit ppc64, bit vmx> 
168   : I<name, opcode, ppc64, vmx> {
169   field bits<3>  BF;
170   field bits<1>  L;
171   field bits<5>  RA;
172   field bits<16> I;
173
174   let ArgCount = 4;
175   let Arg0Type = Imm3.Value;
176   let Arg1Type = Imm1.Value;
177   let Arg2Type = Gpr.Value;
178   let Arg3Type = Simm16.Value;
179   let Arg4Type = 0;
180
181   let Inst{6-8}   = BF;
182   let Inst{9}     = 0;
183   let Inst{10}    = L;
184   let Inst{11-15} = RA;
185   let Inst{16-31} = I;
186 }
187
188 class DForm_5_ext<string name, bits<6> opcode, bit ppc64, bit vmx> 
189   : DForm_5<name, opcode, ppc64, vmx> {
190   let L = ppc64;
191   let ArgCount = 3;
192   let Arg0Type = Imm3.Value;
193   let Arg1Type = Gpr.Value;
194   let Arg2Type = Simm16.Value;
195   let Arg3Type = 0;
196 }
197
198 class DForm_6<bits<6> opcode, bit ppc64, bit vmx,
199               dag OL, string asmstr> 
200   : DForm_5<"", opcode, ppc64, vmx> {
201   let OperandList = OL;
202   let AsmString = asmstr;
203 }
204
205 class DForm_6_ext<bits<6> opcode, bit ppc64, bit vmx,
206                   dag OL, string asmstr> 
207   : DForm_6<opcode, ppc64, vmx, OL, asmstr> {
208   let L = ppc64;
209   let ArgCount = 3;
210   let Arg0Type = Imm3.Value;
211   let Arg1Type = Gpr.Value;
212   let Arg2Type = Simm16.Value;
213   let Arg3Type = 0;
214 }
215
216 class DForm_7<string name, bits<6> opcode, bit ppc64, bit vmx> 
217   : DForm_base<name, opcode, ppc64, vmx> {
218   let Arg1Type = Imm5.Value;
219 }
220
221 class DForm_8<string name, bits<6> opcode, bit ppc64, bit vmx>
222   : DForm_1<name, opcode, ppc64, vmx> {
223   let Arg0Type = Fpr.Value;
224 }
225
226 class DForm_9<string name, bits<6> opcode, bit ppc64, bit vmx>
227   : DForm_1<name, opcode, ppc64, vmx> {
228   let Arg0Type = Fpr.Value;
229 }
230
231 // 1.7.5 DS-Form
232 class DSForm_1<string name, bits<6> opcode, bits<2> xo, bit ppc64, bit vmx> 
233   : I<name, opcode, ppc64, vmx> {
234   field bits<5>  RST;
235   field bits<14> DS;
236   field bits<5>  RA;
237
238   let ArgCount = 3;
239   let Arg0Type = Gpr.Value;
240   let Arg1Type = Disimm14.Value;
241   let Arg2Type = Gpr.Value;
242   let Arg3Type = 0;
243   let Arg4Type = 0;
244
245   let Inst{6-10}  = RST;
246   let Inst{11-15} = RA;
247   let Inst{16-29} = DS;
248   let Inst{30-31} = xo;
249 }
250
251 class DSForm_2<string name, bits<6> opcode, bits<2> xo, bit ppc64, bit vmx>
252   : DSForm_1<name, opcode, xo, ppc64, vmx>;
253
254 // 1.7.6 X-Form
255 class XForm_base_r3xo<bits<6> opcode, bits<10> xo, bit rc, bit ppc64, bit vmx,
256                       dag OL, string asmstr> : I<"", opcode, ppc64, vmx> {
257   field bits<5> RST;
258   field bits<5> A;
259   field bits<5> B;
260
261   let ArgCount = 3;
262   let Arg0Type = Gpr.Value;
263   let Arg1Type = Gpr.Value;
264   let Arg2Type = Gpr.Value;
265   let Arg3Type = 0;
266   let Arg4Type = 0;
267
268   let Inst{6-10}  = RST;
269   let Inst{11-15} = A;
270   let Inst{16-20} = B;
271   let Inst{21-30} = xo;
272   let Inst{31}    = rc;
273   let OperandList = OL;
274   let AsmString = asmstr;
275 }
276
277
278 class XForm_1<bits<6> opcode, bits<10> xo, bit ppc64, bit vmx,
279               dag OL, string asmstr> 
280   : XForm_base_r3xo<opcode, xo, 0, ppc64, vmx, OL, asmstr>;
281
282 class XForm_5<bits<6> opcode, bits<10> xo, bit ppc64, bit vmx,
283               dag OL, string asmstr>
284   : XForm_base_r3xo<opcode, xo, 0, ppc64, vmx, OL, asmstr> {
285   let ArgCount = 1;
286   let Arg1Type = 0;
287   let Arg2Type = 0;
288   let A = 0;
289   let B = 0;
290 }
291
292 class XForm_6<bits<6> opcode, bits<10> xo, bit rc, bit ppc64, bit vmx,
293               dag OL, string asmstr> 
294   : XForm_base_r3xo<opcode, xo, rc, ppc64, vmx, OL, asmstr>;
295
296 class XForm_8<bits<6> opcode, bits<10> xo, bit ppc64, bit vmx,
297               dag OL, string asmstr> 
298   : XForm_base_r3xo<opcode, xo, 0, ppc64, vmx, OL, asmstr>;
299
300 class XForm_10<bits<6> opcode, bits<10> xo, bit rc, bit ppc64, bit vmx,
301                dag OL, string asmstr> 
302   : XForm_base_r3xo<opcode, xo, rc, ppc64, vmx, OL, asmstr> {
303   let Arg2Type = Imm5.Value;
304 }
305
306 class XForm_11<bits<6> opcode, bits<10> xo, bit rc, bit ppc64, bit vmx,
307                dag OL, string asmstr> 
308   : XForm_base_r3xo<opcode, xo, rc, ppc64, vmx, OL, asmstr> {
309   let ArgCount = 2;
310   let Arg2Type = 0;
311   let B = 0;
312 }
313
314 class XForm_16<string name, bits<6> opcode, bits<10> xo, bit ppc64, bit vmx>
315   : I<name, opcode, ppc64, vmx> {
316   field bits<3>  BF;
317   field bits<1>  L; 
318   field bits<5>  RA;
319   field bits<5>  RB;
320   
321   let ArgCount = 4;
322   let Arg0Type = Imm3.Value;
323   let Arg1Type = Imm1.Value;
324   let Arg2Type = Gpr.Value;
325   let Arg3Type = Gpr.Value;
326   let Arg4Type = 0;
327   
328   let Inst{6-8}   = BF;
329   let Inst{9}     = 0;
330   let Inst{10}    = L;
331   let Inst{11-15} = RA;
332   let Inst{16-20} = RB;
333   let Inst{21-30} = xo;
334   let Inst{31}    = 0;
335 }
336
337 class XForm_16_ext<string name, bits<6> opcode, bits<10> xo, bit ppc64, bit vmx>
338   : XForm_16<name, opcode, xo, ppc64, vmx> {
339   let L = ppc64;
340 }
341
342 class XForm_17<string name, bits<6> opcode, bits<10> xo, bit ppc64, bit vmx> 
343   : I<name, opcode, ppc64, vmx> {
344   field bits<3> BF;
345   field bits<5> FRA;
346   field bits<5> FRB;
347   
348   let ArgCount = 3;
349   let Arg0Type = Imm3.Value;
350   let Arg1Type = Fpr.Value;
351   let Arg2Type = Fpr.Value;
352   let Arg3Type = 0;
353   let Arg4Type = 0;
354
355   let Inst{6-8}   = BF;
356   let Inst{9-10}  = 0;
357   let Inst{11-15} = FRA;
358   let Inst{16-20} = FRB;
359   let Inst{21-30} = xo;
360   let Inst{31}    = 0;
361 }
362
363 class XForm_25<bits<6> opcode, bits<10> xo, bit ppc64, bit vmx,
364                dag OL, string asmstr> 
365   : XForm_base_r3xo<opcode, xo, 0, ppc64, vmx, OL, asmstr> {
366   let Arg0Type = Fpr.Value;
367   let Arg1Type = Gpr0.Value;
368 }
369
370 class XForm_26<bits<6> opcode, bits<10> xo, bit rc, bit ppc64, bit vmx,
371                dag OL, string asmstr> 
372   : XForm_base_r3xo<opcode, xo, rc, ppc64, vmx, OL, asmstr> {
373   let ArgCount = 2;
374   let Arg0Type = Fpr.Value;
375   let Arg1Type = Fpr.Value;
376   let Arg2Type = 0;
377   let A = 0;
378 }
379
380 class XForm_28<bits<6> opcode, bits<10> xo, bit ppc64, bit vmx,
381                dag OL, string asmstr> 
382   : XForm_base_r3xo<opcode, xo, 0, ppc64, vmx, OL, asmstr> {
383   let Arg0Type = Fpr.Value;
384   let Arg1Type = Gpr0.Value;
385 }
386
387 // 1.7.7 XL-Form
388 class XLForm_1<bits<6> opcode, bits<10> xo, bit ppc64, bit vmx,
389                dag OL, string asmstr> 
390   : XForm_base_r3xo<opcode, xo, 0, ppc64, vmx, OL, asmstr> {
391   let Arg0Type = Imm5.Value;
392   let Arg1Type = Imm5.Value;
393   let Arg2Type = Imm5.Value;
394 }
395
396 class XLForm_2<string name, bits<6> opcode, bits<10> xo, bit lk, bit ppc64, 
397                bit vmx> : I<name, opcode, ppc64, vmx> {
398   field bits<5>  BO;
399   field bits<5>  BI;
400   field bits<2>  BH;
401   
402   let ArgCount = 3;
403   let Arg0Type = Imm5.Value;
404   let Arg1Type = Imm5.Value;
405   let Arg2Type = Imm2.Value;
406   let Arg3Type = 0;
407   let Arg4Type = 0;
408
409   let Inst{6-10}  = BO;
410   let Inst{11-15} = BI;
411   let Inst{16-18} = 0;
412   let Inst{19-20} = BH;
413   let Inst{21-30} = xo;
414   let Inst{31}    = lk;
415 }
416
417 class XLForm_2_ext<string name, bits<6> opcode, bits<10> xo, bits<5> bo, 
418                    bits<5> bi, bit lk, bit ppc64, bit vmx>
419   : XLForm_2<name, opcode, xo, lk, ppc64, vmx> {
420   let ArgCount = 0;
421   let Arg0Type = 0;
422   let Arg1Type = 0;
423   let Arg2Type = 0;
424   let BO = bo;
425   let BI = bi;
426   let BH = 0;
427 }
428
429 // 1.7.8 XFX-Form
430 class XFXForm_1<bits<6> opcode, bits<10> xo, bit ppc64, bit vmx, 
431                 dag OL, string asmstr> : I<"", opcode, ppc64, vmx> {
432   field bits<5>  ST;
433   field bits<10> SPR;
434
435   let ArgCount = 2;
436   let Arg0Type = Imm5.Value;
437   let Arg1Type = Gpr.Value;
438   let Arg2Type = 0;
439   let Arg3Type = 0;
440   let Arg4Type = 0;
441
442   let Inst{6-10}  = ST;
443   let Inst{11-20} = SPR;
444   let Inst{21-30} = xo;
445   let Inst{31}    = 0;
446   let OperandList = OL;
447   let AsmString = asmstr;
448 }
449
450 class XFXForm_1_ext<bits<6> opcode, bits<10> xo, bits<10> spr, bit ppc64, 
451                     bit vmx, dag OL, string asmstr> 
452   : XFXForm_1<opcode, xo, ppc64, vmx, OL, asmstr> {
453   let ArgCount = 1;
454   let Arg0Type = Gpr.Value;
455   let Arg1Type = 0;
456   let SPR = spr;
457 }
458
459 class XFXForm_7<bits<6> opcode, bits<10> xo, bit ppc64, bit vmx,
460                 dag OL, string asmstr>
461   : XFXForm_1<opcode, xo, ppc64, vmx, OL, asmstr>;
462
463 class XFXForm_7_ext<bits<6> opcode, bits<10> xo, bits<10> spr, 
464                     bit ppc64, bit vmx, dag OL, string asmstr> 
465   : XFXForm_7<opcode, xo, ppc64, vmx, OL, asmstr> {
466   let ArgCount = 1;
467   let Arg0Type = Gpr.Value;
468   let Arg1Type = 0;
469   let SPR = spr;
470 }
471
472 // 1.7.10 XS-Form
473 class XSForm_1<bits<6> opcode, bits<9> xo, bit rc, bit ppc64, bit vmx,
474                dag OL, string asmstr> : I<"", opcode, ppc64, vmx> {
475   field bits<5> RS;
476   field bits<5> A;
477   field bits<6> SH;
478
479   let ArgCount = 3;
480   let Arg0Type = Gpr.Value;
481   let Arg1Type = Gpr.Value;
482   let Arg2Type = Imm6.Value;
483   let Arg3Type = 0;
484   let Arg4Type = 0;
485
486   let Inst{6-10}  = RS;
487   let Inst{11-15} = A;
488   let Inst{16-20} = SH{1-5};
489   let Inst{21-29} = xo;
490   let Inst{30}    = SH{0};
491   let Inst{31}    = rc;
492   let OperandList = OL;
493   let AsmString = asmstr;
494 }
495
496 // 1.7.11 XO-Form
497 class XOForm_1<bits<6> opcode, bits<9> xo, bit oe, bit rc, bit ppc64, bit vmx,
498                dag OL, string asmstr> : I<"", opcode, ppc64, vmx> {
499   field bits<5>  RT;
500   field bits<5>  RA;
501   field bits<5>  RB;
502
503   let ArgCount = 3;
504   let Arg0Type = Gpr.Value;
505   let Arg1Type = Gpr.Value;
506   let Arg2Type = Gpr.Value;
507   let Arg3Type = 0;
508   let Arg4Type = 0;
509
510   let Inst{6-10}  = RT;
511   let Inst{11-15} = RA;
512   let Inst{16-20} = RB;
513   let Inst{21}    = oe;
514   let Inst{22-30} = xo;
515   let Inst{31}    = rc;  
516   let OperandList = OL;
517   let AsmString = asmstr;
518 }
519
520 class XOForm_1r<bits<6> opcode, bits<9> xo, bit oe, bit rc, bit ppc64, bit vmx,
521                dag OL, string asmstr>
522   : XOForm_1<opcode, xo, oe, rc, ppc64, vmx, OL, asmstr> {
523   let Inst{11-15} = RB;
524   let Inst{16-20} = RA;
525 }
526
527 class XOForm_3<bits<6> opcode, bits<9> xo, bit oe, bit rc, bit ppc64, bit vmx,
528                dag OL, string asmstr>
529   : XOForm_1<opcode, xo, oe, rc, ppc64, vmx, OL, asmstr> {
530   let ArgCount = 2;
531   let RB = 0;
532 }
533
534 // 1.7.12 A-Form
535 class AForm_1<bits<6> opcode, bits<5> xo, bit rc, bit ppc64, bit vmx, 
536               dag OL, string asmstr> : I<"", opcode, ppc64, vmx> {
537   let ArgCount = 4;
538   field bits<5>  FRT;
539   field bits<5>  FRA;
540   field bits<5>  FRB;
541   field bits<5>  FRC;
542
543   let Arg0Type = Fpr.Value;
544   let Arg1Type = Fpr.Value;
545   let Arg2Type = Fpr.Value;
546   let Arg3Type = Fpr.Value;
547   let Arg4Type = 0;
548
549   let Inst{6-10}  = FRT;
550   let Inst{11-15} = FRA;
551   let Inst{16-20} = FRB;
552   let Inst{21-25} = FRC;
553   let Inst{26-30} = xo;
554   let Inst{31}    = rc;
555   let OperandList = OL;
556   let AsmString = asmstr;
557 }
558
559 class AForm_2<bits<6> opcode, bits<5> xo, bit rc, bit ppc64, bit vmx, dag OL,
560               string asmstr> 
561   : AForm_1<opcode, xo, rc, ppc64, vmx, OL, asmstr> {
562   let ArgCount = 3;
563   let Arg3Type = 0;
564   let FRC = 0;
565 }
566
567 class AForm_3<bits<6> opcode, bits<5> xo, bit rc, bit ppc64, bit vmx, dag OL,
568               string asmstr> 
569   : AForm_1<opcode, xo, rc, ppc64, vmx, OL, asmstr> {
570   let ArgCount = 3;
571   let Arg3Type = 0;
572   let FRB = 0;
573 }
574
575 // 1.7.13 M-Form
576 class MForm_1<string name, bits<6> opcode, bit rc, bit ppc64, bit vmx> 
577   : I<name, opcode, ppc64, vmx> {
578   let ArgCount = 5;
579   field bits<5>  RS;
580   field bits<5>  RA;
581   field bits<5>  RB;
582   field bits<5>  MB;
583   field bits<5>  ME;
584
585   let Arg0Type = Gpr.Value;
586   let Arg1Type = Gpr.Value;
587   let Arg2Type = Gpr.Value;
588   let Arg3Type = Imm5.Value;
589   let Arg4Type = Imm5.Value;
590
591   let Inst{6-10}  = RS;
592   let Inst{11-15} = RA;
593   let Inst{16-20} = RB;
594   let Inst{21-25} = MB;
595   let Inst{26-30} = ME;
596   let Inst{31}    = rc;
597 }
598
599 class MForm_2<string name, bits<6> opcode, bit rc, bit ppc64, bit vmx> 
600   : MForm_1<name, opcode, rc, ppc64, vmx> {
601   let Arg2Type = Imm5.Value;
602 }
603
604 // 1.7.14 MD-Form
605 class MDForm_1<string name, bits<6> opcode, bits<3> xo, bit rc, bit ppc64, bit vmx> 
606   : I<name, opcode, ppc64, vmx> {
607   let ArgCount = 4;
608   field bits<5>  RS;
609   field bits<5>  RA;
610   field bits<6>  SH;
611   field bits<6>  MBE;
612
613   let Arg0Type = Gpr.Value;
614   let Arg1Type = Gpr.Value;
615   let Arg2Type = Imm6.Value;
616   let Arg3Type = Imm6.Value;
617   let Arg4Type = 0;
618
619   let Inst{6-10}  = RS;
620   let Inst{11-15} = RA;
621   let Inst{16-20} = SH{1-5};
622   let Inst{21-26} = MBE;
623   let Inst{27-29} = xo;
624   let Inst{30}    = SH{0};
625   let Inst{31}    = rc;
626 }
627
628 //===----------------------------------------------------------------------===//
629
630 class Pseudo<string name> : I<name, 0, 0, 0> {
631         let Name = name;
632         let ArgCount = 0;
633         let PPC64 = 0;
634         let VMX = 0;
635
636         let Arg0Type = Pseudo.Value;
637         let Arg1Type = Pseudo.Value;
638         let Arg2Type = Pseudo.Value;
639         let Arg3Type = Pseudo.Value;
640         let Arg4Type = 0;
641
642         let Inst{31-0} = 0;
643 }