Lines Matching full:let

144   let PrintMethod = "printCPSIMod";
148 let Name = "ProcIFlags";
149 let ParserMethod = "parseProcIFlagsOperand";
152 let PrintMethod = "printCPSIFlag";
153 let ParserMatchClass = ProcIFlagsOperand;
159 let Name = "CondCode";
160 let DefaultMethod = "defaultCondCodeOp";
161 let IsOptional = true;
165 let PrintMethod = "printPredicateOperand";
166 let ParserMatchClass = CondCodeOperand;
167 let DecoderMethod = "DecodePredicateOperand";
176 let MIOperandInfo = (ops i32imm, i32imm);
177 let PrintMethod = "printPredicateOperand";
182 let Name = "CCOut";
183 let DefaultMethod = "defaultCCOutOp";
184 let IsOptional = true;
187 let EncoderMethod = "getCCOutOpValue";
188 let PrintMethod = "printSBitModifierOperand";
189 let ParserMatchClass = CCOutOperand;
190 let DecoderMethod = "DecodeCCOutOperand";
195 let EncoderMethod = "getCCOutOpValue";
196 let PrintMethod = "printSBitModifierOperand";
197 let ParserMatchClass = CCOutOperand;
198 let DecoderMethod = "DecodeCCOutOperand";
211 let Name = "VPTPredN";
212 let PredicateMethod = "isVPTPred";
213 let DefaultMethod = "defaultVPTPredOp";
214 let IsOptional = true;
217 let Name = "VPTPredR";
218 let PredicateMethod = "isVPTPred";
219 let DefaultMethod = "defaultVPTPredOp";
220 let IsOptional = true;
267 let PrintMethod = "printVPTPredicateOperand";
268 let OperandNamespace = "ARM";
269 let MIOperandInfo = !con((ops i32imm:$cond, VCCR:$cond_reg, GPRlr:$tp_reg), extra_mi);
279 let ParserMatchClass = VPTPredROperand;
280 let OperandType = "OPERAND_VPRED_R";
281 let DecoderMethod = "DecodeVpredROperand";
282 let vpred_constraint = ",$Qd = $vp.inactive";
286 let ParserMatchClass = VPTPredNOperand;
287 let OperandType = "OPERAND_VPRED_N";
288 let DecoderMethod = "DecodeVpredNOperand";
289 let vpred_constraint = "";
295 let Name = "SetEndImm";
296 let ParserMethod = "parseSetEndImm";
299 let PrintMethod = "printSetendOperand";
300 let ParserMatchClass = SetEndAsmOperand;
304 let Name = "MSRMask";
305 let ParserMethod = "parseMSRMaskOperand";
308 let PrintMethod = "printMSRMaskOperand";
309 let DecoderMethod = "DecodeMSRMask";
310 let ParserMatchClass = MSRMaskOperand;
314 let Name = "BankedReg";
315 let ParserMethod = "parseBankedRegOperand";
318 let PrintMethod = "printBankedRegOperand";
319 let DecoderMethod = "DecodeBankedReg";
320 let ParserMatchClass = BankedRegOperand;
331 def shr_imm8_asm_operand : ImmAsmOperand<1,8> { let Name = "ShrImm8"; }
333 let EncoderMethod = "getShiftRight8Imm";
334 let DecoderMethod = "DecodeShiftRight8Imm";
335 let ParserMatchClass = shr_imm8_asm_operand;
337 def shr_imm16_asm_operand : ImmAsmOperand<1,16> { let Name = "ShrImm16"; }
339 let EncoderMethod = "getShiftRight16Imm";
340 let DecoderMethod = "DecodeShiftRight16Imm";
341 let ParserMatchClass = shr_imm16_asm_operand;
343 def shr_imm32_asm_operand : ImmAsmOperand<1,32> { let Name = "ShrImm32"; }
345 let EncoderMethod = "getShiftRight32Imm";
346 let DecoderMethod = "DecodeShiftRight32Imm";
347 let ParserMatchClass = shr_imm32_asm_operand;
349 def shr_imm64_asm_operand : ImmAsmOperand<1,64> { let Name = "ShrImm64"; }
351 let EncoderMethod = "getShiftRight64Imm";
352 let DecoderMethod = "DecodeShiftRight64Imm";
353 let ParserMatchClass = shr_imm64_asm_operand;
359 def const_pool_asm_operand : AsmOperandClass { let Name = "ConstPoolAsmImm"; }
361 let ParserMatchClass = const_pool_asm_operand;
409 let Namespace = "ARM";
433 let isCodeGenOnly = !eq(!cast<string>(f), "Pseudo");
436 let TSFlags{4-0} = AM.Value;
437 let TSFlags{6-5} = IndexModeBits;
438 let TSFlags{12-7} = Form;
439 let TSFlags{13} = isUnaryDataProc;
440 let TSFlags{14} = canXformTo16Bit;
441 let TSFlags{18-15} = D.Value;
442 let TSFlags{19} = thumbArithFlagSetting;
443 let TSFlags{20} = validForTailPredication;
444 let TSFlags{21} = retainsPreviousHalfElement;
445 let TSFlags{22} = horizontalReduction;
446 let TSFlags{23} = doubleWidthResult;
447 let TSFlags{25-24} = VecSize;
449 let Constraints = cstr;
450 let Itinerary = itin;
468 let DecoderNamespace = "ARM";
476 let DecoderNamespace = "Thumb";
485 let OutOperandList = oops;
486 let InOperandList = iops;
487 let Pattern = [];
488 let isCodeGenOnly = 0; // So we get asm matcher for it.
489 let AsmString = asm;
490 let isPseudo = 1;
491 let hasNoSchedulingInfo = 1;
511 let OutOperandList = oops;
512 let InOperandList = iops;
513 let Pattern = pattern;
514 let isCodeGenOnly = 1;
515 let isPseudo = 1;
522 let Size = sz;
530 let Size = sz;
538 let Size = sz;
546 let Size = sz;
575 let Inst{31-28} = p;
576 let OutOperandList = oops;
577 let InOperandList = !con(iops, (ins pred:$p));
578 let AsmString = !strconcat(opc, "${p}", asm);
579 let Pattern = pattern;
589 let OutOperandList = oops;
590 let InOperandList = iops;
591 let AsmString = !strconcat(opc, asm);
592 let Pattern = pattern;
593 let isPredicable = 0;
607 let Inst{31-28} = p;
608 let Inst{20} = s;
610 let OutOperandList = oops;
611 let InOperandList = !con(iops, (ins pred:$p, cc_out:$s));
612 let AsmString = !strconcat(opc, "${s}${p}", asm);
613 let Pattern = pattern;
622 let OutOperandList = oops;
623 let InOperandList = iops;
624 let AsmString = asm;
625 let Pattern = pattern;
655 let Inst{27-24} = opcod;
661 let Inst{27-24} = opcod;
676 let Inst{27-23} = 0b00011;
677 let Inst{22-21} = opcod;
678 let Inst{20} = 1;
679 let Inst{19-16} = addr;
680 let Inst{15-12} = Rt;
681 let Inst{11-10} = 0b11;
682 let Inst{9-8} = opcod2;
683 let Inst{7-0} = 0b10011111;
691 let Inst{27-23} = 0b00011;
692 let Inst{22-21} = opcod;
693 let Inst{20} = 0;
694 let Inst{19-16} = addr;
695 let Inst{11-10} = 0b11;
696 let Inst{9-8} = opcod2;
697 let Inst{7-4} = 0b1001;
698 let Inst{3-0} = Rt;
709 let Inst{15-12} = Rd;
724 let Inst{15-12} = Rd;
732 let Inst{27-23} = 0b00010;
733 let Inst{22} = b;
734 let Inst{21-20} = 0b00;
735 let Inst{19-16} = addr;
736 let Inst{15-12} = Rt;
737 let Inst{11-4} = 0b00001001;
738 let Inst{3-0} = Rt2;
740 let Unpredictable{11-8} = 0b1111;
741 let DecoderMethod = "DecodeSwap";
753 let Inst{15-12} = 0b1111;
761 let Inst{24-21} = opcod;
762 let Inst{27-26} = 0b00;
768 let Inst{24-21} = opcod;
769 let Inst{27-26} = 0b00;
775 let Inst{24-21} = opcod;
776 let Inst{27-26} = 0b00;
787 let Inst{27-25} = op;
788 let Inst{24} = 1; // 24 == P
790 let Inst{22} = isByte;
791 let Inst{21} = 0; // 21 == W
792 let Inst{20} = isLd;
801 let Inst{27-26} = 0b01;
802 let Inst{24} = isPre; // P bit
803 let Inst{22} = isByte; // B bit
804 let Inst{21} = isPre; // W bit
805 let Inst{20} = isLd; // L bit
806 let Inst{15-12} = Rt;
818 let Inst{25} = 1;
819 let Inst{23} = offset{12};
820 let Inst{19-16} = Rn;
821 let Inst{11-5} = offset{11-5};
822 let Inst{4} = 0;
823 let Inst{3-0} = offset{3-0};
836 let Inst{25} = 0;
837 let Inst{23} = offset{12};
838 let Inst{19-16} = Rn;
839 let Inst{11-0} = offset{11-0};
856 let Inst{25} = addr{13};
857 let Inst{23} = addr{12};
858 let Inst{19-16} = addr{17-14};
859 let Inst{11-0} = addr{11-0};
869 let Inst{27-25} = 0b000;
870 let Inst{24} = 1; // P bit
871 let Inst{23} = addr{8}; // U bit
872 let Inst{22} = addr{13}; // 1 == imm8, 0 == Rm
873 let Inst{21} = 0; // W bit
874 let Inst{20} = op20; // L bit
875 let Inst{19-16} = addr{12-9}; // Rn
876 let Inst{15-12} = Rt; // Rt
877 let Inst{11-8} = addr{7-4}; // imm7_4/zero
878 let Inst{7-4} = op;
879 let Inst{3-0} = addr{3-0}; // imm3_0/Rm
881 let DecoderMethod = "DecodeAddrMode3Instruction";
890 let Inst{27-25} = 0b000;
891 let Inst{24} = isPre; // P bit
892 let Inst{21} = isPre; // W bit
893 let Inst{20} = op20; // L bit
894 let Inst{15-12} = Rt; // Rt
895 let Inst{7-4} = op;
911 let Inst{27-25} = 0b000;
912 let Inst{24} = 0; // P bit
913 let Inst{21} = 1;
914 let Inst{20} = isLoad; // L bit
915 let Inst{19-16} = addr; // Rn
916 let Inst{15-12} = Rt; // Rt
917 let Inst{7-4} = op;
927 let Inst{27-25} = 0b000;
928 let Inst{24} = 1; // P bit
929 let Inst{23} = addr{8}; // U bit
930 let Inst{22} = addr{13}; // 1 == imm8, 0 == Rm
931 let Inst{21} = 0; // W bit
932 let Inst{20} = 0; // L bit
933 let Inst{19-16} = addr{12-9}; // Rn
934 let Inst{15-12} = Rt; // Rt
935 let Inst{11-8} = addr{7-4}; // imm7_4/zero
936 let Inst{7-4} = op;
937 let Inst{3-0} = addr{3-0}; // imm3_0/Rm
938 let DecoderMethod = "DecodeAddrMode3Instruction";
948 let Inst{31-28} = p;
949 let Inst{27-25} = 0b100;
950 let Inst{22} = 0; // S bit
951 let Inst{19-16} = Rn;
952 let Inst{15-0} = regs;
960 let Inst{7-4} = 0b1001;
961 let Inst{20} = 0; // S bit
962 let Inst{27-21} = opcod;
968 let Inst{7-4} = 0b1001;
969 let Inst{27-21} = opcod;
980 let Inst{7-4} = opc7_4;
981 let Inst{20} = 1;
982 let Inst{27-21} = opcod;
983 let Inst{19-16} = Rd;
984 let Inst{11-8} = Rm;
985 let Inst{3-0} = Rn;
992 let Inst{15-12} = Ra;
1002 let Inst{4} = 0;
1003 let Inst{7} = 1;
1004 let Inst{20} = 0;
1005 let Inst{27-21} = opcod;
1006 let Inst{6-5} = bit6_5;
1007 let Inst{11-8} = Rm;
1008 let Inst{3-0} = Rn;
1014 let Inst{19-16} = Rd;
1022 let Inst{15-12} = Ra;
1030 let Inst{19-16} = RdHi;
1031 let Inst{15-12} = RdLo;
1042 let Inst{15-12} = Rd;
1043 let Inst{3-0} = Rm;
1044 let Inst{7-4} = 0b0111;
1045 let Inst{9-8} = 0b00;
1046 let Inst{27-20} = opcod;
1048 let Unpredictable{9-8} = 0b11;
1058 let Inst{27-20} = opcod;
1059 let Inst{19-16} = 0b1111;
1060 let Inst{15-12} = Rd;
1061 let Inst{11-8} = 0b1111;
1062 let Inst{7-4} = opc7_4;
1063 let Inst{3-0} = Rm;
1074 let Inst{27-23} = 0b01110;
1075 let Inst{22-20} = opcod;
1076 let Inst{19-16} = Rd;
1077 let Inst{15-12} = 0b1111;
1078 let Inst{11-8} = Rm;
1079 let Inst{7-4} = 0b0001;
1080 let Inst{3-0} = Rn;
1085 let Name = "PKHLSLImm";
1086 let ParserMethod = "parsePKHLSLImm";
1089 let PrintMethod = "printPKHLSLShiftImm";
1090 let ParserMatchClass = PKHLSLAsmOperand;
1093 let Name = "PKHASRImm";
1094 let ParserMethod = "parsePKHASRImm";
1097 let PrintMethod = "printPKHASRShiftImm";
1098 let ParserMatchClass = PKHASRAsmOperand;
1109 let Inst{27-20} = opcod;
1110 let Inst{19-16} = Rn;
1111 let Inst{15-12} = Rd;
1112 let Inst{11-7} = sh;
1113 let Inst{6} = tb;
1114 let Inst{5-4} = 0b01;
1115 let Inst{3-0} = Rm;
1165 let OutOperandList = oops;
1166 let InOperandList = iops;
1167 let AsmString = asm;
1168 let Pattern = pattern;
1188 let Inst{31-27} = opcod1;
1189 let Inst{15-14} = opcod2;
1190 let Inst{12} = opcod3;
1202 let OutOperandList = oops;
1203 let InOperandList = iops;
1204 let AsmString = asm;
1205 let Pattern = pattern;
1227 let OutOperandList = !con(oops, (outs s_cc_out:$s));
1228 let InOperandList = !con(iops, (ins pred:$p));
1229 let AsmString = !strconcat(opc, "${s}${p}", asm);
1230 let Pattern = pattern;
1231 let thumbArithFlagSetting = 1;
1233 let DecoderNamespace = "ThumbSBit";
1251 let OutOperandList = oops;
1252 let InOperandList = !con(iops, (ins pred:$p));
1253 let AsmString = !strconcat(opc, "${p}", asm);
1254 let Pattern = pattern;
1273 let Inst{31-16} = 0x0000;
1278 let Inst{15-10} = opcode;
1283 let Inst{15-14} = 0b00;
1284 let Inst{13-9} = opcode;
1289 let Inst{15-10} = 0b010000;
1290 let Inst{9-6} = opcode;
1295 let Inst{15-10} = 0b010001;
1296 let Inst{9-6} = opcode;
1301 let Inst{15-12} = opA;
1302 let Inst{11-9} = opB;
1307 let Inst{15-12} = opcode;
1323 let Inst{8-6} = addr{5-3}; // Rm
1324 let Inst{5-3} = addr{2-0}; // Rn
1325 let Inst{2-0} = Rt;
1334 let Inst{10-6} = addr{7-3}; // imm5
1335 let Inst{5-3} = addr{2-0}; // Rn
1336 let Inst{2-0} = Rt;
1341 let Inst{15-12} = 0b1011;
1342 let Inst{11-5} = opcode;
1350 let OutOperandList = oops;
1351 let InOperandList = !con(iops, (ins pred:$p));
1352 let AsmString = !strconcat(opc, "${p}", asm);
1353 let Pattern = pattern;
1355 let DecoderNamespace = "Thumb2";
1369 let Inst{20} = s;
1371 let OutOperandList = oops;
1372 let InOperandList = !con(iops, (ins pred:$p, cc_out:$s));
1373 let AsmString = !strconcat(opc, "${s}${p}", asm);
1374 let Pattern = pattern;
1376 let DecoderNamespace = "Thumb2";
1384 let OutOperandList = oops;
1385 let InOperandList = iops;
1386 let AsmString = asm;
1387 let Pattern = pattern;
1389 let DecoderNamespace = "Thumb2";
1396 let OutOperandList = oops;
1397 let InOperandList = iops;
1398 let AsmString = asm;
1399 let Pattern = pattern;
1401 let DecoderNamespace = "Thumb";
1429 let Inst{31-25} = 0b1110100;
1430 let Inst{24} = P;
1431 let Inst{23} = addr{8};
1432 let Inst{22} = 1;
1433 let Inst{21} = W;
1434 let Inst{20} = isLoad;
1435 let Inst{19-16} = addr{12-9};
1436 let Inst{15-12} = Rt{3-0};
1437 let Inst{11-8} = Rt2{3-0};
1438 let Inst{7-0} = addr{7-0};
1449 let Inst{31-25} = 0b1110100;
1450 let Inst{24} = P;
1451 let Inst{23} = imm{8};
1452 let Inst{22} = 1;
1453 let Inst{21} = W;
1454 let Inst{20} = isLoad;
1455 let Inst{19-16} = addr;
1456 let Inst{15-12} = Rt{3-0};
1457 let Inst{11-8} = Rt2{3-0};
1458 let Inst{7-0} = imm{7-0};
1476 let Inst{31-28} = opc;
1490 let OutOperandList = oops;
1491 let InOperandList = !con(iops, (ins pred:$p));
1492 let AsmString = !strconcat(opc, "${p}", asm);
1493 let Pattern = pattern;
1495 let DecoderNamespace = "Thumb2";
1499 let Inst{31-27} = 0b11111;
1500 let Inst{26-25} = 0b00;
1501 let Inst{24} = signed;
1502 let Inst{23} = 0;
1503 let Inst{22-21} = opcod;
1504 let Inst{20} = load;
1505 let Inst{19-16} = addr{12-9};
1506 let Inst{15-12} = Rt{3-0};
1507 let Inst{11} = 1;
1509 let Inst{10} = pre; // The P bit.
1510 let Inst{9} = addr{8}; // Sign bit
1511 let Inst{8} = 1; // The W bit.
1512 let Inst{7-0} = addr{7-0};
1514 let DecoderMethod = "DecodeT2LdStPre";
1523 let OutOperandList = oops;
1524 let InOperandList = !con(iops, (ins pred:$p));
1525 let AsmString = !strconcat(opc, "${p}", asm);
1526 let Pattern = pattern;
1528 let DecoderNamespace = "Thumb2";
1533 let Inst{31-27} = 0b11111;
1534 let Inst{26-25} = 0b00;
1535 let Inst{24} = signed;
1536 let Inst{23} = 0;
1537 let Inst{22-21} = opcod;
1538 let Inst{20} = load;
1539 let Inst{19-16} = Rn;
1540 let Inst{15-12} = Rt{3-0};
1541 let Inst{11} = 1;
1543 let Inst{10} = pre; // The P bit.
1544 let Inst{9} = offset{8}; // Sign bit
1545 let Inst{8} = 1; // The W bit.
1546 let Inst{7-0} = offset{7-0};
1548 let DecoderMethod = "DecodeT2LdStPre";
1578 let Inst{31-28} = p;
1579 let OutOperandList = oops;
1580 let InOperandList = !con(iops, (ins pred:$p));
1581 let AsmString = !strconcat(opc, "${p}", asm);
1582 let Pattern = pattern;
1583 let PostEncoderMethod = "VFPThumb2PostEncoder";
1584 let DecoderNamespace = "VFP";
1594 let Inst{31-28} = p;
1595 let OutOperandList = oops;
1596 let InOperandList = iops;
1597 let AsmString = asm;
1598 let Pattern = pattern;
1599 let PostEncoderMethod = "VFPThumb2PostEncoder";
1600 let DecoderNamespace = "VFP";
1608 let PostEncoderMethod = "VFPThumb2PostEncoder";
1622 let Inst{23} = addr{8}; // U (add = (U == '1'))
1623 let Inst{22} = Dd{4};
1624 let Inst{19-16} = addr{12-9}; // Rn
1625 let Inst{15-12} = Dd{3-0};
1626 let Inst{7-0} = addr{7-0}; // imm8
1628 let Inst{27-24} = opcod1;
1629 let Inst{21-20} = opcod2;
1630 let Inst{11-9} = 0b101;
1631 let Inst{8} = 1; // Double precision
1634 let D = VFPNeonDomain;
1647 let Inst{23} = addr{8}; // U (add = (U == '1'))
1648 let Inst{22} = Sd{0};
1649 let Inst{19-16} = addr{12-9}; // Rn
1650 let Inst{15-12} = Sd{4-1};
1651 let Inst{7-0} = addr{7-0}; // imm8
1653 let Inst{27-24} = opcod1;
1654 let Inst{21-20} = opcod2;
1655 let Inst{11-9} = 0b101;
1656 let Inst{8} = 0; // Single precision
1659 let D = VFPNeonDomain;
1674 let Inst{23} = addr{8}; // U (add = (U == '1'))
1675 let Inst{22} = Sd{0};
1676 let Inst{19-16} = addr{12-9}; // Rn
1677 let Inst{15-12} = Sd{4-1};
1678 let Inst{7-0} = addr{7-0}; // imm8
1680 let Inst{27-24} = opcod1;
1681 let Inst{21-20} = opcod2;
1682 let Inst{11-8} = 0b1001; // Half precision
1685 let D = VFPNeonDomain;
1687 let isUnpredicable = 1; // FP16 instructions cannot in general be conditional
1695 let OutOperandList = oops;
1696 let InOperandList = !con(iops, (ins pred:$p));
1697 let Pattern = pattern;
1713 let Inst{19-16} = Rn;
1714 let Inst{22} = 0;
1715 let Inst{15-12} = regs{11-8};
1716 let Inst{7-1} = regs{7-1};
1718 let Inst{27-25} = 0b110;
1719 let Inst{11-8} = 0b1011;
1720 let Inst{0} = 1;
1733 let Inst{19-16} = Rn;
1734 let Inst{22} = regs{12};
1735 let Inst{15-12} = regs{11-8};
1736 let Inst{7-1} = regs{7-1};
1738 let Inst{27-25} = 0b110;
1739 let Inst{11-9} = 0b101;
1740 let Inst{8} = 1; // Double precision
1741 let Inst{0} = 0;
1754 let Inst{19-16} = Rn;
1755 let Inst{22} = regs{8};
1756 let Inst{15-12} = regs{12-9};
1757 let Inst{7-0} = regs{7-0};
1759 let Inst{27-25} = 0b110;
1760 let Inst{11-9} = 0b101;
1761 let Inst{8} = 0; // Single precision
1772 let OutOperandList = (outs);
1773 let InOperandList = (ins GPRnopc:$Rn, pred:$p, dpr_reglist:$regs);
1774 let AsmString = asm;
1775 let Pattern = [];
1776 let DecoderNamespace = "VFP";
1778 let Inst{19-16} = Rn;
1779 let Inst{31-28} = 0b1110;
1780 let Inst{27-25} = 0b110;
1781 let Inst{24} = 0b0;
1782 let Inst{23} = 0b0;
1783 let Inst{22} = 0b0;
1784 let Inst{21} = 0b1;
1785 let Inst{20} = load; // Distinguishes vlldm from vlstm
1786 let Inst{15-12} = 0b0000;
1787 let Inst{11-9} = 0b101;
1788 let Inst{8} = 0; // Single precision
1789 let Inst{7} = et; // encoding type, 0 for T1 and 1 for T2.
1790 let Inst{6-0} = 0b0000000;
1791 let mayLoad = load;
1792 let mayStore = !eq(load, 0);
1805 let Inst{3-0} = Dm{3-0};
1806 let Inst{5} = Dm{4};
1807 let Inst{15-12} = Dd{3-0};
1808 let Inst{22} = Dd{4};
1810 let Inst{27-23} = opcod1;
1811 let Inst{21-20} = opcod2;
1812 let Inst{19-16} = opcod3;
1813 let Inst{11-9} = 0b101;
1814 let Inst{8} = 1; // Double precision
1815 let Inst{7-6} = opcod4;
1816 let Inst{4} = opcod5;
1818 let Predicates = [HasVFP2, HasDPVFP];
1830 let Inst{31-28} = 0b1111;
1833 let Inst{3-0} = Dm{3-0};
1834 let Inst{5} = Dm{4};
1835 let Inst{15-12} = Dd{3-0};
1836 let Inst{22} = Dd{4};
1838 let Inst{27-23} = opcod1;
1839 let Inst{21-20} = opcod2;
1840 let Inst{19-16} = opcod3;
1841 let Inst{11-9} = 0b101;
1842 let Inst{8} = 1; // Double precision
1843 let Inst{7-6} = opcod4;
1844 let Inst{4} = opcod5;
1858 let Inst{3-0} = Dm{3-0};
1859 let Inst{5} = Dm{4};
1860 let Inst{19-16} = Dn{3-0};
1861 let Inst{7} = Dn{4};
1862 let Inst{15-12} = Dd{3-0};
1863 let Inst{22} = Dd{4};
1865 let Inst{27-23} = opcod1;
1866 let Inst{21-20} = opcod2;
1867 let Inst{11-9} = 0b101;
1868 let Inst{8} = 1; // Double precision
1869 let Inst{6} = op6;
1870 let Inst{4} = op4;
1872 let Predicates = [HasVFP2, HasDPVFP];
1886 let Inst{31-28} = 0b1111;
1889 let Inst{3-0} = Dm{3-0};
1890 let Inst{5} = Dm{4};
1891 let Inst{19-16} = Dn{3-0};
1892 let Inst{7} = Dn{4};
1893 let Inst{15-12} = Dd{3-0};
1894 let Inst{22} = Dd{4};
1896 let Inst{27-23} = opcod1;
1897 let Inst{21-20} = opcod2;
1898 let Inst{11-9} = 0b101;
1899 let Inst{8} = 1; // double precision
1900 let Inst{6} = opcod3;
1901 let Inst{4} = 0;
1903 let Predicates = [HasVFP2, HasDPVFP];
1916 let Inst{3-0} = Sm{4-1};
1917 let Inst{5} = Sm{0};
1918 let Inst{15-12} = Sd{4-1};
1919 let Inst{22} = Sd{0};
1921 let Inst{27-23} = opcod1;
1922 let Inst{21-20} = opcod2;
1923 let Inst{19-16} = opcod3;
1924 let Inst{11-9} = 0b101;
1925 let Inst{8} = 0; // Single precision
1926 let Inst{7-6} = opcod4;
1927 let Inst{4} = opcod5;
1940 let Inst{31-28} = 0b1111;
1943 let Inst{3-0} = Sm{4-1};
1944 let Inst{5} = Sm{0};
1945 let Inst{15-12} = Sd{4-1};
1946 let Inst{22} = Sd{0};
1948 let Inst{27-23} = opcod1;
1949 let Inst{21-20} = opcod2;
1950 let Inst{19-16} = opcod3;
1951 let Inst{11-9} = 0b101;
1952 let Inst{8} = 0; // Single precision
1953 let Inst{7-6} = opcod4;
1954 let Inst{4} = opcod5;
1977 let Inst{3-0} = Sm{4-1};
1978 let Inst{5} = Sm{0};
1979 let Inst{19-16} = Sn{4-1};
1980 let Inst{7} = Sn{0};
1981 let Inst{15-12} = Sd{4-1};
1982 let Inst{22} = Sd{0};
1984 let Inst{27-23} = opcod1;
1985 let Inst{21-20} = opcod2;
1986 let Inst{11-9} = 0b101;
1987 let Inst{8} = 0; // Single precision
1988 let Inst{6} = op6;
1989 let Inst{4} = op4;
2003 let Inst{31-28} = 0b1111;
2006 let Inst{3-0} = Sm{4-1};
2007 let Inst{5} = Sm{0};
2008 let Inst{19-16} = Sn{4-1};
2009 let Inst{7} = Sn{0};
2010 let Inst{15-12} = Sd{4-1};
2011 let Inst{22} = Sd{0};
2013 let Inst{27-23} = opcod1;
2014 let Inst{21-20} = opcod2;
2015 let Inst{11-9} = 0b101;
2016 let Inst{8} = 0; // Single precision
2017 let Inst{6} = opcod3;
2018 let Inst{4} = 0;
2035 let Inst{3-0} = Sm{4-1};
2036 let Inst{5} = Sm{0};
2037 let Inst{19-16} = Sn{4-1};
2038 let Inst{7} = Sn{0};
2039 let Inst{15-12} = Sd{4-1};
2040 let Inst{22} = Sd{0};
2055 let Inst{3-0} = Sm{4-1};
2056 let Inst{5} = Sm{0};
2057 let Inst{15-12} = Sd{4-1};
2058 let Inst{22} = Sd{0};
2060 let Inst{27-23} = opcod1;
2061 let Inst{21-20} = opcod2;
2062 let Inst{19-16} = opcod3;
2063 let Inst{11-8} = 0b1001; // Half precision
2064 let Inst{7-6} = opcod4;
2065 let Inst{4} = opcod5;
2067 let isUnpredicable = 1; // FP16 instructions cannot in general be conditional
2082 let Inst{31-28} = 0b1111;
2085 let Inst{3-0} = Sm{4-1};
2086 let Inst{5} = Sm{0};
2087 let Inst{15-12} = Sd{4-1};
2088 let Inst{22} = Sd{0};
2090 let Inst{27-23} = opcod1;
2091 let Inst{21-20} = opcod2;
2092 let Inst{19-16} = opcod3;
2093 let Inst{11-8} = 0b1001; // Half precision
2094 let Inst{7-6} = opcod4;
2095 let Inst{4} = opcod5;
2097 let isUnpredicable = 1; // FP16 instructions cannot in general be conditional
2112 let Inst{3-0} = Sm{4-1};
2113 let Inst{5} = Sm{0};
2114 let Inst{19-16} = Sn{4-1};
2115 let Inst{7} = Sn{0};
2116 let Inst{15-12} = Sd{4-1};
2117 let Inst{22} = Sd{0};
2119 let Inst{27-23} = opcod1;
2120 let Inst{21-20} = opcod2;
2121 let Inst{11-8} = 0b1001; // Half precision
2122 let Inst{6} = op6;
2123 let Inst{4} = op4;
2125 let isUnpredicable = 1; // FP16 instructions cannot in general be conditional
2140 let Inst{31-28} = 0b1111;
2143 let Inst{3-0} = Sm{4-1};
2144 let Inst{5} = Sm{0};
2145 let Inst{19-16} = Sn{4-1};
2146 let Inst{7} = Sn{0};
2147 let Inst{15-12} = Sd{4-1};
2148 let Inst{22} = Sd{0};
2150 let Inst{27-23} = opcod1;
2151 let Inst{21-20} = opcod2;
2152 let Inst{11-8} = 0b1001; // Half precision
2153 let Inst{6} = opcod3;
2154 let Inst{4} = 0;
2156 let isUnpredicable = 1; // FP16 instructions cannot in general be conditional
2164 let Inst{27-23} = opcod1;
2165 let Inst{21-20} = opcod2;
2166 let Inst{19-16} = opcod3;
2167 let Inst{11-8} = opcod4;
2168 let Inst{6} = 1;
2169 let Inst{4} = 0;
2179 let Inst{7} = op5; // sx
2180 let Inst{5} = fbits{0};
2181 let Inst{3-0} = fbits{4-1};
2197 let Inst{27-20} = opcod1;
2198 let Inst{11-8} = opcod2;
2199 let Inst{4} = 1;
2228 let OutOperandList = oops;
2229 let InOperandList = !con(iops, (ins pred:$p));
2230 let AsmString = !strconcat(opc, "${p}", ".", dt, "\t", asm);
2231 let Pattern = pattern;
2233 let DecoderNamespace = "NEON";
2241 let OutOperandList = oops;
2242 let InOperandList = !con(iops, (ins pred:$p));
2243 let AsmString = !strconcat(opc, "${p}", "\t", asm);
2244 let Pattern = pattern;
2246 let DecoderNamespace = "NEON";
2254 let OutOperandList = oops;
2255 let InOperandList = iops;
2256 let AsmString = !strconcat(opc, ".", dt, "\t", asm);
2257 let Pattern = pattern;
2259 let DecoderNamespace = "NEON";
2261 let Inst{31-28} = 0b1111;
2269 let Inst{31-24} = 0b11110100;
2270 let Inst{23} = op23;
2271 let Inst{21-20} = op21_20;
2272 let Inst{11-8} = op11_8;
2273 let Inst{7-4} = op7_4;
2275 let PostEncoderMethod = "NEONThumb2LoadStorePostEncoder";
2276 let DecoderNamespace = "NEONLoadStore";
2282 let Inst{22} = Vd{4};
2283 let Inst{15-12} = Vd{3-0};
2284 let Inst{19-16} = Rn{3-0};
2285 let Inst{3-0} = Rm{3-0};
2299 let OutOperandList = oops;
2300 let InOperandList = !con(iops, (ins pred:$p));
2308 let OutOperandList = oops;
2309 let InOperandList = !con(iops, (ins pred:$p));
2310 let Pattern = pattern;
2318 let Inst{31-25} = 0b1111001;
2319 let PostEncoderMethod = "NEONThumb2DataIPostEncoder";
2320 let DecoderNamespace = "NEONData";
2327 let Inst{31-25} = 0b1111001;
2328 let PostEncoderMethod = "NEONThumb2DataIPostEncoder";
2329 let DecoderNamespace = "NEONData";
2339 let Inst{23} = op23;
2340 let Inst{21-19} = op21_19;
2341 let Inst{11-8} = op11_8;
2342 let Inst{7} = op7;
2343 let Inst{6} = op6;
2344 let Inst{5} = op5;
2345 let Inst{4} = op4;
2351 let Inst{15-12} = Vd{3-0};
2352 let Inst{22} = Vd{4};
2353 let Inst{24} = SIMM{7};
2354 let Inst{18-16} = SIMM{6-4};
2355 let Inst{3-0} = SIMM{3-0};
2356 let DecoderMethod = "DecodeVMOVModImmInstruction";
2365 let Inst{24-23} = op24_23;
2366 let Inst{21-20} = op21_20;
2367 let Inst{19-18} = op19_18;
2368 let Inst{17-16} = op17_16;
2369 let Inst{11-7} = op11_7;
2370 let Inst{6} = op6;
2371 let Inst{4} = op4;
2377 let Inst{15-12} = Vd{3-0};
2378 let Inst{22} = Vd{4};
2379 let Inst{3-0} = Vm{3-0};
2380 let Inst{5} = Vm{4};
2393 let Inst{22} = Vd{4};
2394 let Inst{15-12} = Vd{3-0};
2395 let Inst{5} = Vm{4};
2396 let Inst{3-0} = Vm{3-0};
2399 let Inst{27-23} = 0b00111;
2400 let Inst{21-20} = 0b11;
2401 let Inst{19-18} = op19_18;
2402 let Inst{17-16} = op17_16;
2403 let Inst{11} = 0;
2404 let Inst{10-8} = op10_8;
2405 let Inst{7} = op7;
2406 let Inst{6} = op6;
2407 let Inst{4} = 0;
2409 let DecoderNamespace = "NEON";
2418 let Inst{24-23} = op24_23;
2419 let Inst{21-20} = op21_20;
2420 let Inst{19-18} = op19_18;
2421 let Inst{17-16} = op17_16;
2422 let Inst{11-7} = op11_7;
2423 let Inst{6} = op6;
2424 let Inst{4} = op4;
2430 let Inst{15-12} = Vd{3-0};
2431 let Inst{22} = Vd{4};
2432 let Inst{3-0} = Vm{3-0};
2433 let Inst{5} = Vm{4};
2441 let Inst{24} = op24;
2442 let Inst{23} = op23;
2443 let Inst{11-8} = op11_8;
2444 let Inst{7} = op7;
2445 let Inst{6} = op6;
2446 let Inst{4} = op4;
2453 let Inst{15-12} = Vd{3-0};
2454 let Inst{22} = Vd{4};
2455 let Inst{3-0} = Vm{3-0};
2456 let Inst{5} = Vm{4};
2457 let Inst{21-16} = SIMM{5-0};
2467 let Inst{24} = op24;
2468 let Inst{23} = op23;
2469 let Inst{21-20} = op21_20;
2470 let Inst{11-8} = op11_8;
2471 let Inst{6} = op6;
2472 let Inst{4} = op4;
2485 let Inst{15-12} = Vd{3-0};
2486 let Inst{22} = Vd{4};
2487 let Inst{19-16} = Vn{3-0};
2488 let Inst{7} = Vn{4};
2489 let Inst{3-0} = Vm{3-0};
2490 let Inst{5} = Vm{4};
2503 let Inst{22} = Vd{4};
2504 let Inst{15-12} = Vd{3-0};
2505 let Inst{19-16} = Vn{3-0};
2506 let Inst{7} = Vn{4};
2507 let Inst{5} = Vm{4};
2508 let Inst{3-0} = Vm{3-0};
2511 let Inst{27-23} = op27_23;
2512 let Inst{21-20} = op21_20;
2513 let Inst{11-8} = op11_8;
2514 let Inst{6} = op6;
2515 let Inst{4} = op4;
2531 let Inst{15-12} = Vd{3-0};
2532 let Inst{22} = Vd{4};
2533 let Inst{19-16} = Vn{3-0};
2534 let Inst{7} = Vn{4};
2535 let Inst{3-0} = Vm{3-0};
2536 let Inst{5} = lane;
2552 let Inst{15-12} = Vd{3-0};
2553 let Inst{22} = Vd{4};
2554 let Inst{19-16} = Vn{3-0};
2555 let Inst{7} = Vn{4};
2556 let Inst{2-0} = Vm{2-0};
2557 let Inst{5} = lane{1};
2558 let Inst{3} = lane{0};
2567 let Inst{24} = op24;
2568 let Inst{23} = op23;
2569 let Inst{21-20} = op21_20;
2570 let Inst{11-8} = op11_8;
2571 let Inst{6} = op6;
2572 let Inst{4} = op4;
2579 let Inst{15-12} = Vd{3-0};
2580 let Inst{22} = Vd{4};
2581 let Inst{19-16} = Vn{3-0};
2582 let Inst{7} = Vn{4};
2583 let Inst{3-0} = Vm{3-0};
2584 let Inst{5} = Vm{4};
2593 let Inst{27-20} = opcod1;
2594 let Inst{11-8} = opcod2;
2595 let Inst{6-5} = opcod3;
2596 let Inst{4} = 1;
2598 let Inst{3-0} = 0b0000;
2600 let OutOperandList = oops;
2601 let InOperandList = !con(iops, (ins pred:$p));
2602 let AsmString = !strconcat(opc, "${p}", ".", dt, "\t", asm);
2603 let Pattern = pattern;
2606 let PostEncoderMethod = "NEONThumb2DupPostEncoder";
2607 let DecoderNamespace = "NEONDup";
2614 let Inst{31-28} = p{3-0};
2615 let Inst{7} = V{4};
2616 let Inst{19-16} = V{3-0};
2617 let Inst{15-12} = R{3-0};
2640 let Inst{24-23} = 0b11;
2641 let Inst{21-20} = 0b11;
2642 let Inst{19-16} = op19_16;
2643 let Inst{11-7} = 0b11000;
2644 let Inst{6} = op6;
2645 let Inst{4} = 0;
2650 let Inst{22} = Vd{4};
2651 let Inst{15-12} = Vd{3-0};
2652 let Inst{5} = Vm{4};
2653 let Inst{3-0} = Vm{3-0};
2677 let Predicates = [HasNEON] in {
2704 let DecoderNamespace = "VFPV8";
2706 let PostEncoderMethod = "";
2708 let Inst{31-25} = 0b1111110;
2709 let Inst{24-23} = op24_23;
2710 let Inst{22} = Vd{4};
2711 let Inst{21-20} = op21_20;
2712 let Inst{19-16} = Vn{3-0};
2713 let Inst{15-12} = Vd{3-0};
2714 let Inst{11-8} = 0b1000;
2715 let Inst{7} = Vn{4};
2716 let Inst{6} = op6;
2717 let Inst{5} = Vm{4};
2718 let Inst{4} = op4;
2719 let Inst{3-0} = Vm{3-0};
2733 let DecoderNamespace = "VFPV8";
2735 let PostEncoderMethod = "";
2737 let Inst{31-24} = 0b11111110;
2738 let Inst{23} = op23;
2739 let Inst{22} = Vd{4};
2740 let Inst{21-20} = op21_20;
2741 let Inst{19-16} = Vn{3-0};
2742 let Inst{15-12} = Vd{3-0};
2743 let Inst{11-8} = 0b1000;
2744 let Inst{7} = Vn{4};
2745 let Inst{6} = op6;
2747 let Inst{4} = op4;
2748 let Inst{3-0} = Vm{3-0};
2764 let DecoderNamespace = "VFPV8";
2766 let PostEncoderMethod = "";
2768 let Inst{31-25} = 0b1111110;
2769 let Inst{24-23} = op24_23;
2770 let Inst{22} = Vd{4};
2771 let Inst{21-20} = op21_20;
2772 let Inst{19-16} = Vn{4-1};
2773 let Inst{15-12} = Vd{3-0};
2774 let Inst{11-8} = 0b1000;
2775 let Inst{7} = Vn{0};
2776 let Inst{6} = op6;
2777 let Inst{5} = Vm{0};
2778 let Inst{4} = op4;
2779 let Inst{3-0} = Vm{4-1};
2785 let PredicateMethod = "isComplexRotation<" # Angle # ", " # Remainder # ">";
2786 let DiagnosticString = "complex rotation must be " # Diag;
2787 let Name = "ComplexRotation" # Type;
2790 let ParserMatchClass = ComplexRotationOperand<90, 0, "Even", "0, 90, 180 or 270">;
2791 let PrintMethod = "printComplexRotationOp<90, 0>";
2794 let ParserMatchClass = ComplexRotationOperand<180, 90, "Odd", "90 or 270">;
2795 let PrintMethod = "printComplexRotationOp<180, 90>";
2799 let PredicateMethod = "isMveSaturateOp";
2800 let DiagnosticString = "saturate operand must be 48 or 64";
2801 let Name = "MveSaturate";
2804 let ParserMatchClass = MveSaturateOperand;
2805 let PrintMethod = "printMveSaturateOp";