Lines Matching defs:format

156   void Format(Instruction* instr, const char* format);
510 int Decoder::FormatRegister(Instruction* instr, const char* format) {
511 DCHECK_EQ(format[0], 'r');
512 if (format[1] == 's') { // 'rs[12]: Rs register.
513 if (format[2] == '1') {
517 } else if (format[2] == '2') {
523 } else if (format[1] == 'd') { // 'rd: rd register.
534 const char* format) {
535 DCHECK_EQ(format[0], 'f');
536 if (format[1] == 's') { // 'fs[1-3]: Rs register.
537 if (format[2] == '1') {
541 } else if (format[2] == '2') {
545 } else if (format[2] == '3') {
551 } else if (format[1] == 'd') { // 'fd: fd register.
555 } else if (format[1] == 'r') { // 'frm
556 DCHECK(STRING_STARTS_WITH(format, "frm"));
565 int Decoder::FormatRvcRegister(Instruction* instr, const char* format) {
566 DCHECK_EQ(format[0], 'C');
567 DCHECK(format[1] == 'r' || format[1] == 'f');
568 if (format[2] == 's') { // 'Crs[12]: Rs register.
569 if (format[3] == '1') {
570 if (format[4] == 's') { // 'Crs1s: 3-bits register
572 if (format[1] == 'r') {
574 } else if (format[1] == 'f') {
580 if (format[1] == 'r') {
582 } else if (format[1] == 'f') {
586 } else if (format[3] == '2') {
587 if (format[4] == 's') { // 'Crs2s: 3-bits register
589 if (format[1] == 'r') {
591 } else if (format[1] == 'f') {
597 if (format[1] == 'r') {
599 } else if (format[1] == 'f') {
605 } else if (format[2] == 'd') { // 'Crd: rd register.
607 if (format[1] == 'r') {
609 } else if (format[1] == 'f') {
619 int Decoder::FormatRvcImm(Instruction* instr, const char* format) {
620 // TODO(riscv): add other rvc imm format
621 DCHECK(STRING_STARTS_WITH(format, "Cimm"));
622 if (format[4] == '6') {
623 if (format[5] == 'U') {
624 DCHECK(STRING_STARTS_WITH(format, "Cimm6U"));
627 } else if (format[5] == 'A') {
628 if (format[9] == '1' && format[10] == '6') {
629 DCHECK(STRING_STARTS_WITH(format, "Cimm6Addi16sp"));
634 } else if (format[5] == 'L') {
635 if (format[6] == 'd') {
636 if (format[7] == 's') {
637 DCHECK(STRING_STARTS_WITH(format, "Cimm6Ldsp"));
641 } else if (format[6] == 'w') {
642 if (format[7] == 's') {
643 DCHECK(STRING_STARTS_WITH(format, "Cimm6Lwsp"));
649 } else if (format[5] == 'S') {
650 if (format[6] == 'w') {
651 DCHECK(STRING_STARTS_WITH(format, "Cimm6Swsp"));
654 } else if (format[6] == 'd') {
655 DCHECK(STRING_STARTS_WITH(format, "Cimm6Sdsp"));
663 } else if (format[4] == '5') {
664 DCHECK(STRING_STARTS_WITH(format, "Cimm5"));
665 if (format[5] == 'W') {
666 DCHECK(STRING_STARTS_WITH(format, "Cimm5W"));
669 } else if (format[5] == 'D') {
670 DCHECK(STRING_STARTS_WITH(format, "Cimm5D"));
675 } else if (format[4] == '8') {
676 DCHECK(STRING_STARTS_WITH(format, "Cimm8"));
677 if (format[5] == 'A') {
678 DCHECK(STRING_STARTS_WITH(format, "Cimm8Addi4spn"));
681 } else if (format[5] == 'B') {
682 DCHECK(STRING_STARTS_WITH(format, "Cimm8B"));
687 } else if (format[4] == '1') {
688 DCHECK(STRING_STARTS_WITH(format, "Cimm1"));
689 if (format[5] == '1') {
690 DCHECK(STRING_STARTS_WITH(format, "Cimm11CJ"));
700 // the current instructions. The format string points to the first
704 int Decoder::FormatOption(Instruction* instr, const char* format) {
705 switch (format[0]) {
707 if (format[1] == 'r' || format[1] == 'f') {
708 return FormatRvcRegister(instr, format);
709 } else if (format[1] == 'i') {
710 return FormatRvcImm(instr, format);
711 } else if (format[1] == 's') {
712 DCHECK(STRING_STARTS_WITH(format, "Cshamt"));
719 if (format[1] == 's') {
720 if (format[2] == 'r') {
728 if (format[3] == '1') {
729 if (format[4] == '2') {
730 DCHECK(STRING_STARTS_WITH(format, "imm12"));
731 if (format[5] == 'x') {
738 } else if (format[3] == '2' && format[4] == '0') {
739 DCHECK(STRING_STARTS_WITH(format, "imm20"));
740 switch (format[5]) {
742 DCHECK(STRING_STARTS_WITH(format, "imm20U"));
746 DCHECK(STRING_STARTS_WITH(format, "imm20J"));
755 if (format[3] == 'B') {
756 DCHECK(STRING_STARTS_WITH(format, "offB"));
759 } else if (format[3] == 'S') {
760 DCHECK(STRING_STARTS_WITH(format, "offS"));
767 return FormatRegister(instr, format);
770 return FormatFPURegisterOrRoundMode(instr, format);
777 DCHECK(STRING_STARTS_WITH(format, "pre"));
782 if (format[1] == '3') {
783 DCHECK(STRING_STARTS_WITH(format, "s32"));
786 } else if (format[1] == '6') {
787 DCHECK(STRING_STARTS_WITH(format, "s64"));
790 } else if (format[1] == 'u') {
791 DCHECK(STRING_STARTS_WITH(format, "suc"));
794 } else if (format[1] == 'e') {
795 DCHECK(STRING_STARTS_WITH(format, "sew"));
798 } else if (format[1] == 'i') {
799 DCHECK(STRING_STARTS_WITH(format, "simm5"));
806 if (format[1] == 'd') {
807 DCHECK(STRING_STARTS_WITH(format, "vd"));
810 } else if (format[2] == '1') {
811 DCHECK(STRING_STARTS_WITH(format, "vs1"));
814 } else if (format[2] == '2') {
815 DCHECK(STRING_STARTS_WITH(format, "vs2"));
819 DCHECK(STRING_STARTS_WITH(format, "vm"));
825 DCHECK(STRING_STARTS_WITH(format, "lmul"));
830 if (STRING_STARTS_WITH(format, "uimm5")) {
834 DCHECK(STRING_STARTS_WITH(format, "uimm"));
840 DCHECK(STRING_STARTS_WITH(format, "target"));
851 void Decoder::Format(Instruction* instr, const char* format) {
852 char cur = *format++;
855 format += FormatOption(instr, format);
859 cur = *format++;