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