Lines Matching +full:5 +full:b
43 let MIOperandInfo = (ops GPR32:$B, immS<9>:$S9);
49 let MIOperandInfo = (ops GPR32:$B, i32imm:$LImm);
82 def ByteSM : DataSizeMode<0b01, "B", "b">;
129 // All 32-bit ARC instructions have a 5-bit "major" opcode class designator
145 // A - Inst[5-0] = A[5-0], when the format has A. A is always a register.
146 // B - Inst[14-12] = B[5-3], Inst[26-24] = B[2-0], when the format has B.
147 // B is always a register.
148 // C - Inst[11-6] = C[5-0], when the format has C. C can either be a register,
155 class F32_BR<bits<5> major, dag outs, dag ins, bit b16, string asmstr,
162 let Inst{5} = N;
165 class F32_BR_COND<bits<5> major, dag outs, dag ins, bit b16, string asmstr,
169 bits<5> cc;
175 class F32_BR_UCOND_FAR<bits<5> major, dag outs, dag ins, bit b16, string asmstr,
191 // |26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0 |
199 // |26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0 |
207 // |26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
217 // |26|25|24|23|22|21|20|19|18|17|16|15 |14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
218 // |B[2-0] |S9[7-1] | 1|S9[8]|B[5-3] |C |N|u|0|cc |
224 bits<6> B;
230 let Inst{26-24} = B{2-0};
234 let Inst{14-12} = B{5-3};
236 let Inst{5} = N;
243 // Single Operand Instructions. Inst[5-0] specifies the specific operation
245 // |26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
246 // |B[2-0] | 0| 0| 1| 0| 1| 1| 1| 1| F|B[5-3] |C |subop |
247 class F32_SOP_RR<bits<5> major, bits<6> subop, bit F, dag outs, dag ins,
252 bits<6> B;
255 let Inst{26-24} = B{2-0};
259 let Inst{14-12} = B{5-3};
261 let Inst{5-0} = subop;
268 // |26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
269 // |B[2-0] | 0| 0| subop| F|B[5-3] |C |A |
270 class F32_DOP_RR<bits<5> major, bits<6> subop, bit F, dag outs, dag ins,
274 bits<6> B;
278 let Inst{26-24} = B{2-0};
282 let Inst{14-12} = B{5-3};
284 let Inst{5-0} = A;
287 // Conditional Dual Operand instruction. This instruction uses B as the
288 // first 2 operands (i.e, add.cc B, B, C).
289 // |26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
290 // |B[2-0] | 1| 1| subop| F|B[5-3] |C |A |
291 class F32_DOP_CC_RR<bits<5> major, bits<6> subop, bit F, dag outs, dag ins,
294 bits<5> cc;
296 bits<6> B;
299 let Inst{26-24} = B{2-0};
303 let Inst{14-12} = B{5-3};
305 let Inst{5} = 0;
311 // |26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
312 // |B[2-0] | 0| 1| subop| F|B[5-3] |U6 |A |
313 class F32_DOP_RU6<bits<5> major, bits<6> subop, bit F, dag outs, dag ins,
317 bits<6> B;
321 let Inst{26-24} = B{2-0};
325 let Inst{14-12} = B{5-3};
327 let Inst{5-0} = A;
332 // |26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
333 // |B[2-0] | 1| 1| subop| F|B[5-3] |U6 |1|cc |
334 class F32_DOP_CC_RU6<bits<5> major, bits<6> subop, bit F, dag outs, dag ins,
338 bits<5> cc;
340 bits<6> B;
343 let Inst{26-24} = B{2-0};
347 let Inst{14-12} = B{5-3};
349 let Inst{5} = 1;
356 // condition code. This instruction uses B as the first 2 operands
357 // (i.e, add.cc B, B, u6).
358 // |26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
359 // |B[2-0] | 1| 1| subop| F|B[5-3] |U6 |1|cc |
360 class F32_DOP_CC_RRU6<bits<5> major, bits<6> subop, bit F, dag outs, dag ins,
363 bits<5> cc;
365 bits<6> B;
368 let Inst{26-24} = B{2-0};
372 let Inst{14-12} = B{5-3};
374 let Inst{5} = 1;
379 // This instruction uses B as the first 2 operands (i.e., add B, B, -128).
380 // |26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
381 // |B[2-0] | 1| 0| subop| F|B[5-3] |S12[5-0] |S12[11-6] |
382 class F32_DOP_RS12<bits<5> major, bits<6> subop, bit F, dag outs, dag ins,
385 bits<6> B;
389 let Inst{26-24} = B{2-0};
393 let Inst{14-12} = B{5-3};
394 let Inst{11-6} = S12{5-0};
395 let Inst{5-0} = S12{11-6};
399 // This instruction uses B as the first operand (i.e., lr B, [%count0]).
400 // |26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
401 // |B[2-0] | 1| 0| subop| F|B[5-3] |S12[5-0] |S12[11-6] |
402 class F32_SOP_RS12<bits<5> major, bits<6> subop, bit F, dag outs, dag ins,
405 bits<6> B;
409 let Inst{26-24} = B{2-0};
413 let Inst{14-12} = B{5-3};
414 let Inst{11-6} = S12{5-0};
415 let Inst{5-0} = S12{11-6};
421 // This instruction uses B as the first operand.
422 // |26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
423 // |B[2-0] | 0| 1| subop| F|B[5-3] |U6 |0|0|0|0|0|0|
424 class F32_SOP_RU6<bits<5> major, bits<6> subop, bit F, dag outs, dag ins,
427 bits<6> B;
431 let Inst{26-24} = B{2-0};
435 let Inst{14-12} = B{5-3};
437 let Inst{5-0} = 0;
445 class F32_DOP_RLIMM<bits<5> major, bits<6> subop, bit F, dag outs, dag ins,
448 bits<6> B;
454 let Inst{26-24} = B{2-0};
458 let Inst{14-12} = B{5-3};
460 let Inst{5-0} = A;
479 // Register + S9 Load. (B + S9)
480 // |26|25|24|23|22|21|20|19|18|17|16|15 |14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
481 // |B[2-0] |S9[7-0] |S9[8]|B[5-3] |di|aa |zz |x|A |
485 bits<6> B;
490 let Inst{26-24} = B{2-0};
493 let Inst{14-12} = B{5-3};
498 let Inst{5-0} = A;
508 let B = addr{14-9};
516 // |26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
529 let Inst{14-12} = LImmReg{5-3};
534 let Inst{5-0} = A;
541 // |26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
542 // |B[2-0] |aa | 1| 1| 0|zz | x|di|B[5-3] | 1| 1|1|1|1|0|A |
548 bits<6> B;
551 let B = addr{37-32};
556 let Inst{26-24} = B{2-0};
562 let Inst{14-12} = B{5-3};
564 let Inst{5-0} = A;
570 // Register + S9 Store. (B + S9)
571 // |26|25|24|23|22|21|20|19|18|17|16|15 |14|13|12|11|10|9|8|7|6|5 |4|3|2|1|0|
572 // |B[2-0] |S9[7-0] |S9[8]|B[5-3] |C |di|aa |zz |0|
576 bits<6> B;
581 let Inst{26-24} = B{2-0};
584 let Inst{14-12} = B{5-3};
586 let Inst{5} = di;
599 let B = addr{14-9};
606 // |26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|9|8|7|6|5 |4|3|2|1|0|
619 let Inst{14-12} = LImmReg{5-3};
621 let Inst{5} = di;
631 // |10|9|8|7|6|5|4|3|2|1|0|
637 bits<5> h;
640 let Inst{7-5} = h{2-0};
649 bits<3> b;
651 let Inst{10-8} = b;
655 F16_LD_ADD_SUB<(outs GPR32:$a), (ins GPR32:$b, GPR32:$c),
661 let Inst{7-5} = c;
668 F16_LD_ADD_SUB<(outs GPR32:$r), (ins GPR32:$b, immU<6>:$u6),
669 "add_s\t$r, $b, $u6"> {
675 let Inst{6-4} = u6{5-3};
692 let Inst{10-5} = s11{10-5};
700 F16_LD_ST_1<(outs GPR32:$b), (ins immU<7>:$u7),
701 "ldi_s\t$b, [$u7]"> {
703 bits<3> b;
706 let Inst{10-8} = b;
726 InstARC<2, (outs GPR32:$a), (ins GPR32:$b, GPR32:$c),
730 bits<3> b;
734 let Inst{10-8} = b;
735 let Inst{7-5} = c;
749 // |10|9|8|7|6|5|4|3|2|1|0|
750 // |b |c |i |u |
752 InstARC<2, (outs GPR32:$c), (ins GPR32:$b, immU<3>:$u3),
753 !strconcat(asmstr, "\t$c, $b, $u3"), []> {
755 bits<3> b;
760 let Inst{10-8} = b;
761 let Inst{7-5} = c;
767 // |10|9|8|7|6|5|4|3|2|1|0|
768 // |b/s |h |i |H |
773 bits<5> h;
777 let Inst{7-5} = h{2-0};
785 bits<5> LImmReg = 0b11110;
786 let Inst{7-5} = LImmReg{2-0};
799 class F16_GEN_DOP_BASE<bits<5> i, dag outs, dag ins, string asmstr> :
802 bits<3> b;
805 let Inst{10-8} = b;
806 let Inst{7-5} = c;
810 class F16_GEN_DOP<bits<5> i, string asmstr> :
811 F16_GEN_DOP_BASE<i, (outs GPR32:$b), (ins GPR32:$c),
812 !strconcat(asmstr, "\t$b, $b, $c")>;
814 class F16_GEN_DOP_NODST<bits<5> i, string asmstr> :
815 F16_GEN_DOP_BASE<i, (outs), (ins GPR32:$b, GPR32:$c),
816 !strconcat(asmstr, "\t$b, $c")>;
818 class F16_GEN_DOP_SINGLESRC<bits<5> i, string asmstr> :
819 F16_GEN_DOP_BASE<i, (outs GPR32:$b), (ins GPR32:$c),
820 !strconcat(asmstr, "\t$b, $c")>;
829 F16_GEN_SOP_BASE<i, (outs), (ins GPR32:$b), asmstr>;
834 let b = i;
838 class F16_LD_ST_OFF<bits<5> opc, dag outs, dag ins, string asmstr> :
839 InstARC<2, outs, ins, !strconcat(asmstr, "\t$c, [$b, $off]"), []> {
841 bits<3> b;
844 let Inst{10-8} = b;
845 let Inst{7-5} = c;
848 class F16_LD_ST_WORD_OFF<bits<5> opc, dag outs, dag ins, string asmstr> :
856 class F16_LD_ST_HALF_OFF<bits<5> opc, dag outs, dag ins, string asmstr> :
860 let Inst{4-0} = off{5-1};
864 class F16_LD_ST_BYTE_OFF<bits<5> opc, dag outs, dag ins, string asmstr> :
867 bits<5> off;
872 // |10|9|8|7|6|5|4|3|2|1|0|
873 // |b |i |u |
875 InstARC<2, (outs), (ins GPR32:$b, immU<5>:$u5), asmstr, []> {
877 bits<3> b;
878 bits<5> u5;
881 let Inst{10-8} = b;
882 let Inst{7-5} = i;
887 F16_SH_SUB_BIT<i, !strconcat(asmstr, "\t$b, $b, $u5")>;
890 // |10|9|8|7|6|5|4|3|2|1|0|
891 // |b |i |u |
897 bits<5> fieldU;
901 let Inst{7-5} = i;
917 class F16_SP_OPS_bconst<bits<3> b, string asmop> :
922 let fieldB = b;
950 class F16_OP_IMM<bits<5> opc, dag outs, dag ins, string asmstr> :
953 bits<3> b;
955 let Inst{10-8} = b;
959 F16_OP_IMM<0b11100, (outs GPR32:$b), (ins immU<7>:$u7), asmstr> {
1002 InstARC<2, (outs), (ins GPR32:$b, btargetS8:$s8),
1003 !strconcat(asmstr, "\t$b, 0, $s8"), []> {
1005 bits<3> b;
1009 let Inst{10-8} = b;
1038 let Inst{5-0} = s{6-1};