gcov on lde to find unused opcodes

5 views
Skip to first unread message

Nick Briggs

unread,
Aug 27, 2022, 3:57:19 PM8/27/22
to Lisp Core
Since I am in the middle of revising the code that converts between a “lisp address” and a “native address” I was interested to see if the code I was changing was being executed so that I would have somewhat more confidence that it wasn’t broken once Medley was up and running.   I checked whether “gcov” (an old test coverage tool) was still functional — and it turns out it Clang supports it and provides a Clang-compatible replacement for it.

One of the side-effects of running it was that I could tell what opcodes are executed as part of building new sysouts, and from that I extracted the list of opcodes that are implemented in maiko but are NOT executed during a loadup (i.e., excluding things like BUSBLT(060), MISC8 (061), redprologptr(064) which always punt)

This is that list of implemented but not executed opcodes:

        -:  432:    case073:
    #####:  433:      DRAWLINE;
        -:  435:    case074:
    #####:  436:      STOREN(Get_BYTE_PCMAC1);
        -:  438:    case075:
    #####:  439:      COPYN(Get_BYTE_PCMAC1);
        -:  639:    case173:
    #####:  640:      GCSCAN1;
        -:  642:    case174:
    #####:  643:      GCSCAN2;
        -:  855:    case300:
    #####:  856:      POPN(Get_BYTE_PCMAC1);
        -:  940:    case335:
    #####:  941:      IPLUS_N(Get_BYTE_PCMAC1);
        -:  943:    case336:
    #####:  944:      IDIFFERENCE_N(Get_BYTE_PCMAC1);
        -:  972:    case350:
    #####:  973:      FPLUS2;
        -:  975:    case351:
    #####:  976:      FDIFFERENCE;
        -:  990:    case356:
    #####:  991:      AREF2;
        -:  993:    case357:
    #####:  994:      ASET2;
        -: 1009:    case362:
    #####: 1010:      FGREATERP;

and here the counts for all the close to 7 billion opcodes executed during the loadup:

6948908841:  264:  switch (Get_BYTE_PCMAC0) {
        -:  266:    case000 : { goto op_ufn; } /* unused */
        -:  268:    case001:
 65541341:  269:      OPCAR;
        -:  271:    case002:
 79614418:  272:      OPCDR;
        -:  274:    case003:
 67951995:  275:      LISTP;
        -:  277:    case004:
  2396906:  278:      NTYPEX;
        -:  280:    case005:
 20797258:  281:      TYPEP(Get_BYTE_PCMAC1);
        -:  283:    case056:
        -:  285:    case006:
203298459:  286:      DTEST(Get_AtomNo_PCMAC1);
        -:  288:    case007:
406492120:  289:      UNWIND(Get_BYTE_PCMAC1, Get_BYTE_PCMAC2);
        -:  291:    case010:
  3271349:  292:      FN0;
        -:  294:    case011:
168241812:  295:      FN1;
        -:  297:    case012:
126347629:  298:      FN2;
        -:  300:    case013:
 28766999:  301:      FN3;
        -:  303:    case014:
 22485384:  304:      FN4;
        -:  306:    case015:
 43472675:  307:      FNX;
        -:  309:    case016:
 57631268:  310:      APPLY;
        -:  313:    case017:
   969124:  314:      CHECKAPPLY;
        -:  316:    case020:
167680385:  317:      RETURN;
        -:  320:    case021:
372822026:  322:      BIND;
        -:  324:    case022:
296974078:  325:      UNBIND;
        -:  327:    case023:
 62041383:  328:      DUNBIND;
        -:  330:    case024:
  6731655:  331:      RPLPTR(Get_BYTE_PCMAC1);
        -:  333:    case025:
   119107:  334:      GCREF(Get_BYTE_PCMAC1);
        -:  336:    case026:
   304217:  337:      ASSOC;
        -:  339:    case027:
   868869:  340:      GVAR_(Get_AtomNo_PCMAC1);
        -:  342:    case030:
   400112:  343:      RPLACA;
        -:  345:    case031:
   423642:  346:      RPLACD;
        -:  348:    case032:
  2961543:  349:      CONS;
        -:  351:    case033:
     1946:  352:      CLASSOC;
        -:  354:    case034:
  2488163:  355:      FMEMB;
        -:  357:    case035:
    40655:  358:      CLFMEMB;
        -:  360:    case036:
     2029:  361:      FINDKEY(Get_BYTE_PCMAC1);
        -:  363:    case037:
  2630527:  364:      CREATECELL;
        -:  366:    case040:
 24251007:  367:      BIN;
        -:  369:    case041 : { goto op_ufn; } /* BOUT */
        -:  371:    case042 : { goto op_ufn; } /* POPDISP - prolog only */
        -:  373:    case043:
        6:  374:      RESTLIST(Get_BYTE_PCMAC1);
        -:  376:    case044:
  2357064:  377:      MISCN(Get_BYTE_PCMAC1, Get_BYTE_PCMAC2);
        -:  379:    case045 : { goto op_ufn; } /* unused */
        -:  381:    case046:
  1039322:  382:      RPLCONS;
        -:  384:    case047:
   103938:  385:      LISTGET;
        -:  387:    case050 : { goto op_ufn; } /* unused */
        -:  389:    case051 : { goto op_ufn; } /* unused */
        -:  391:    case052 : { goto op_ufn; } /* unused */
        -:  393:    case053 : { goto op_ufn; } /* unused */
        -:  395:    case054:
   362309:  396:      EVAL;
        -:  398:    case055:
   242813:  399:      ENVCALL;
        -:  401:    /*  case 056 : case056: @ 006 */
        -:  403:    case057:
    75189:  404:      STKSCAN;
        -:  406:    case060 : { goto op_ufn; } /* BUSBLT - DLion only */
        -:  408:    case061 : { goto op_ufn; } /* MISC8 - no longer used */
        -:  410:    case062:
       92:  411:      UBFLOAT3(Get_BYTE_PCMAC1);
        -:  413:    case063:
 19083368:  414:      TYPEMASK(Get_BYTE_PCMAC1);
        -:  416:    case064 : { goto op_ufn; } /* rdprologptr */
        -:  418:    case065 : { goto op_ufn; } /* rdprologtag */
        -:  420:    case066 : { goto op_ufn; } /* writeptr&tag */
        -:  422:    case067 : { goto op_ufn; } /* writeptr&0tag */
        -:  424:    case070:
      136:  425:      MISC7(Get_BYTE_PCMAC1); /* misc7 (pseudocolor, fbitmapbit) */
        -:  427:    case071 : { goto op_ufn; } /* dovemisc - dove only */
        -:  429:    case072:
   621061:  430:      EQLOP;
        -:  432:    case073:
    #####:  433:      DRAWLINE;
        -:  435:    case074:
    #####:  436:      STOREN(Get_BYTE_PCMAC1);
        -:  438:    case075:
    #####:  439:      COPYN(Get_BYTE_PCMAC1);
        -:  441:    case076 : { goto op_ufn; } /* RAID */
        -:  443:    case077 : { goto op_ufn; } /* \RETURN */
        -:  446:    case100:
472607313:  447:      IVARMACRO(0);
        -:  449:    case101:
228482924:  450:      IVARMACRO(1);
        -:  452:    case102:
 45964343:  453:      IVARMACRO(2);
        -:  455:    case103:
 22457449:  456:      IVARMACRO(3);
        -:  458:    case104:
 25541964:  459:      IVARMACRO(4);
        -:  461:    case105:
 10534479:  462:      IVARMACRO(5);
        -:  464:    case106:
  1521212:  465:      IVARMACRO(6);
        -:  467:    case107:
  3891970:  468:      IVARX(Get_BYTE_PCMAC1);
        -:  471:    case110:
199515271:  472:      PVARMACRO(0);
        -:  474:    case111:
217523899:  475:      PVARMACRO(1);
        -:  477:    case112:
161530943:  478:      PVARMACRO(2);
        -:  480:    case113:
 39366355:  481:      PVARMACRO(3);
        -:  483:    case114:
 29087745:  484:      PVARMACRO(4);
        -:  486:    case115:
 15624656:  487:      PVARMACRO(5);
        -:  489:    case116:
 12819518:  490:      PVARMACRO(6);
        -:  493:    case117:
236533683:  494:      PVARX(Get_BYTE_PCMAC1);
        -:  497:    case120:
  1517187:  498:      FVAR(0);
        -:  500:    case121:
  2016500:  501:      FVAR(2);
        -:  503:    case122:
  1089383:  504:      FVAR(4);
        -:  506:    case123:
  1135239:  507:      FVAR(6);
        -:  509:    case124:
  1671447:  510:      FVAR(8);
        -:  512:    case125:
  1971397:  513:      FVAR(10);
        -:  515:    case126:
  2453382:  516:      FVAR(12);
        -:  518:    case127:
 24410498:  519:      FVARX(Get_BYTE_PCMAC1);
        -:  522:    case130:
 33858980:  523:      PVARSETMACRO(0);
        -:  525:    case131:
 27039032:  526:      PVARSETMACRO(1);
        -:  528:    case132:
 39275892:  529:      PVARSETMACRO(2);
        -:  531:    case133:
 31489343:  532:      PVARSETMACRO(3);
        -:  534:    case134:
  6110706:  535:      PVARSETMACRO(4);
        -:  537:    case135:
  2336628:  538:      PVARSETMACRO(5);
        -:  540:    case136:
  2034854:  541:      PVARSETMACRO(6);
        -:  544:    case137:
123980563:  545:      PVARX_(Get_BYTE_PCMAC1);
        -:  548:    case140:
 16068073:  549:      GVAR(Get_AtomNo_PCMAC1);
        -:  551:    case141:
 26031417:  552:      ARG0;
        -:  554:    case142:
 16327709:  555:      IVARX_(Get_BYTE_PCMAC1);
        -:  557:    case143:
   497148:  558:      FVARX_(Get_BYTE_PCMAC1);
        -:  560:    case144:
186920128:  561:      COPY;
        -:  563:    case145:
  1804837:  564:      MYARGCOUNT;
        -:  566:    case146:
  3348326:  567:      MYALINK;
        -:  571:    case147 : {
 40916764:  572:      PUSH(Get_AtomNo_PCMAC1);
 40916764:  573:      nextop_atom;
 61391033:  576:    case150 : { PUSHATOM(NIL_PTR); }
 11881700:  578:    case151 : { PUSHATOM(ATOM_T); }
119446605:  580:    case152 : { PUSHATOM(S_POSITIVE); } /* '0 */
165620417:  582:    case153 : { PUSHATOM(0xE0001); } /* '1 */
        -:  586:    case154 : {
281414038:  587:      PUSH(S_POSITIVE | Get_BYTE_PCMAC1);
281414038:  588:      nextop2;
        -:  593:    case155 : {
  4299329:  594:      PUSH(S_NEGATIVE | 0xff00 | Get_BYTE_PCMAC1);
  4299329:  595:      nextop2;
        -:  600:    case156 : {
 21343684:  601:      PUSH(S_POSITIVE | Get_DLword_PCMAC1);
 21343684:  602:      nextop3;
        -:  607:    case157 : {
  2325107:  608:      PUSH(Get_Pointer_PCMAC1);
  2325107:  609:      nextop_ptr;
        -:  613:    case160 : { goto op_ufn; } /* unused */
        -:  615:    case161 : { goto op_ufn; } /* readflags */
        -:  617:    case162 : { goto op_ufn; } /* readrp */
        -:  619:    case163 : { goto op_ufn; } /* writemap */
        -:  621:    case164 : { goto op_ufn; } /* readprinterport */
        -:  623:    case165 : { goto op_ufn; } /* writeprinterport */
        -:  626:    case166:
    63639:  627:      PILOTBITBLT;
        -:  629:    case167:
       20:  630:      RCLK;
        -:  632:    case170 : { goto op_ufn; } /* MISC1, dorado only */
        -:  634:    case171 : { goto op_ufn; } /* MISC2, dorado only */
        -:  636:    case172:
        -:  639:    case173:
    #####:  640:      GCSCAN1;
        -:  642:    case174:
    #####:  643:      GCSCAN2;
        -:  645:    case175 : {
  1822629:  646:      EXT;
  1822629:  647:      OP_subrcall(Get_BYTE_PCMAC1, Get_BYTE_PCMAC2);
  1822629:  648:      RET;
  1822629:  649:      nextop0;
       34:  652:    case176 : { CONTEXTSWITCH; }
        -:  654:    case177 : { goto op_ufn; } /* RETCALL */
  3993545:  659:    case200 : { JUMPMACRO(2); }
   972251:  661:    case201 : { JUMPMACRO(3); }
 13066181:  663:    case202 : { JUMPMACRO(4); }
  4120274:  665:    case203 : { JUMPMACRO(5); }
   826755:  667:    case204 : { JUMPMACRO(6); }
   123784:  669:    case205 : { JUMPMACRO(7); }
   257461:  671:    case206 : { JUMPMACRO(8); }
   339171:  673:    case207 : { JUMPMACRO(9); }
   359568:  675:    case210 : { JUMPMACRO(10); }
   145011:  677:    case211 : { JUMPMACRO(11); }
   509532:  679:    case212 : { JUMPMACRO(12); }
   326065:  681:    case213 : { JUMPMACRO(13); }
   353383:  683:    case214 : { JUMPMACRO(14); }
   147774:  685:    case215 : { JUMPMACRO(15); }
   530604:  687:    case216 : { JUMPMACRO(16); }
   189704:  689:    case217 : { JUMPMACRO(17); }
    52800:  694:    case220 : { FJUMPMACRO(2); }
 35366114:  696:    case221 : { FJUMPMACRO(3); }
 46470867:  698:    case222 : { FJUMPMACRO(4); }
 44199641:  700:    case223 : { FJUMPMACRO(5); }
 13949120:  702:    case224 : { FJUMPMACRO(6); }
 47598339:  704:    case225 : { FJUMPMACRO(7); }
 11157162:  706:    case226 : { FJUMPMACRO(8); }
 34044601:  708:    case227 : { FJUMPMACRO(9); }
 18687688:  710:    case230 : { FJUMPMACRO(10); }
 11874059:  712:    case231 : { FJUMPMACRO(11); }
  4222353:  714:    case232 : { FJUMPMACRO(12); }
  1340327:  716:    case233 : { FJUMPMACRO(13); }
 16698402:  718:    case234 : { FJUMPMACRO(14); }
  2260815:  720:    case235 : { FJUMPMACRO(15); }
  4712695:  722:    case236 : { FJUMPMACRO(16); }
  2517093:  724:    case237 : { FJUMPMACRO(17); }
   150055:  729:    case240 : { TJUMPMACRO(2); }
  6223391:  731:    case241 : { TJUMPMACRO(3); }
 43459785:  733:    case242 : { TJUMPMACRO(4); }
  2757121:  735:    case243 : { TJUMPMACRO(5); }
 14505901:  737:    case244 : { TJUMPMACRO(6); }
 10232488:  739:    case245 : { TJUMPMACRO(7); }
  6888947:  741:    case246 : { TJUMPMACRO(8); }
  3288115:  743:    case247 : { TJUMPMACRO(9); }
 14537688:  745:    case250 : { TJUMPMACRO(10); }
  3366960:  747:    case251 : { TJUMPMACRO(11); }
 16747553:  749:    case252 : { TJUMPMACRO(12); }
  2545427:  751:    case253 : { TJUMPMACRO(13); }
  1751652:  753:    case254 : { TJUMPMACRO(14); }
   560105:  755:    case255 : { TJUMPMACRO(15); }
  6982519:  757:    case256 : { TJUMPMACRO(16); }
   694648:  759:    case257 : { TJUMPMACRO(17); }
        -:  763:    case260 : {
 54770003:  764:      CHECK_INTERRUPT;
 54769576:  765:      PCMACL += Get_SBYTE_PCMAC1;
 54769576:  766:      nextop0;
        -:  771:    case261 : {
 77413088:  772:      CHECK_INTERRUPT;
 77412948:  774:      PCMACL += (Get_SBYTE_PCMAC1 << 8) | Get_BYTE_PCMAC2;
 77412948:  775:      nextop0;
        -:  780:    case262 : {
179687843:  781:      if (TOPOFSTACK != 0) { goto PopNextop2; }
145281657:  782:      CHECK_INTERRUPT;
145281555:  783:      POP;
145281555:  784:      PCMACL += Get_SBYTE_PCMAC1;
145281555:  785:      nextop0;
        -:  791:    case263 : {
 76798325:  792:      if (TOPOFSTACK == 0) { goto PopNextop2; }
 30853603:  793:      CHECK_INTERRUPT;
 30853569:  794:      POP;
 30853569:  795:      PCMACL += Get_SBYTE_PCMAC1;
 30853569:  796:      nextop0;
        -:  802:    case264 : {
 52144324:  803:      if (TOPOFSTACK != 0) { goto PopNextop2; }
 10048228:  804:      CHECK_INTERRUPT;
 10048209:  805:      PCMACL += Get_SBYTE_PCMAC1;
 10048209:  806:      nextop0;
        -:  812:    case265 : {
 68079391:  813:      if (TOPOFSTACK == 0) { goto PopNextop2; }
 50315739:  814:      CHECK_INTERRUPT;
 50315644:  815:      PCMACL += Get_SBYTE_PCMAC1;
 50315644:  816:      nextop0;
        -:  820:    case266:
  2834230:  821:      AREF1;
        -:  823:    case267:
  5477014:  824:      ASET1;
        -:  827:    case270:
  9192883:  828:      PVARSETPOPMACRO(0);
        -:  830:    case271:
 38470630:  831:      PVARSETPOPMACRO(1);
        -:  833:    case272:
 27049983:  834:      PVARSETPOPMACRO(2);
        -:  836:    case273:
 13235355:  837:      PVARSETPOPMACRO(3);
        -:  839:    case274:
 14130094:  840:      PVARSETPOPMACRO(4);
        -:  842:    case275:
  7911733:  843:      PVARSETPOPMACRO(5);
        -:  845:    case276:
  3395721:  846:      PVARSETPOPMACRO(6);
        -:  849:    case277 : {
220107650:  850:      POP;
220107650:  851:      nextop1;
        -:  855:    case300:
    #####:  856:      POPN(Get_BYTE_PCMAC1);
        -:  858:    case301:
  5859750:  859:      ATOMCELL_N(Get_BYTE_PCMAC1);
        -:  861:    case302:
 49491357:  862:      GETBASEBYTE;
        -:  864:    case303:
  3731518:  865:      INSTANCEP(Get_AtomNo_PCMAC1);
        -:  867:    case304:
   272226:  868:      BLT;
        -:  870:    case305 : { goto op_ufn; } /* MISC10 */
        -:  872:    case306 : { goto op_ufn; } /* P-MISC2 ??? */
        -:  874:    case307:
  9885561:  875:      PUTBASEBYTE;
        -:  877:    case310:
 71746661:  878:      GETBASE_N(Get_BYTE_PCMAC1);
        -:  880:    case311:
135049303:  881:      GETBASEPTR_N(Get_BYTE_PCMAC1);
        -:  883:    case312:
 85235928:  884:      GETBITS_N_M(Get_BYTE_PCMAC1, Get_BYTE_PCMAC2);
        -:  886:    case313 : { goto op_ufn; } /* unused */
        -:  888:    case314:
   341839:  889:      CLEQUAL;
        -:  891:    case315:
 26193513:  892:      PUTBASE_N(Get_BYTE_PCMAC1);
        -:  894:    case316:
 52387026:  895:      PUTBASEPTR_N(Get_BYTE_PCMAC1);
        -:  897:    case317:
  8152579:  898:      PUTBITS_N_M(Get_BYTE_PCMAC1, Get_BYTE_PCMAC2);
        -:  901:    case320:
 86174928:  902:      N_OP_ADDBASE;
        -:  904:    case321:
  3119280:  905:      N_OP_VAG2;
        -:  907:    case322:
   947337:  908:      N_OP_HILOC;
        -:  910:    case323:
 31727688:  911:      N_OP_LOLOC;
        -:  913:    case324:
 45911882:  914:      PLUS2; /* PLUS */
        -:  916:    case325:
  3255099:  917:      DIFFERENCE; /* DIFFERENCE */
        -:  919:    case326:
  3266322:  920:      TIMES2; /* TIMES2 */
        -:  922:    case327:
       18:  923:      QUOTIENT;                          /* QUOTIENT */
        -:  925:    case330:
 66948630:  926:      IPLUS2; /* IPLUS2 only while PLUS has no float */
        -:  928:    case331:
 24641902:  929:      IDIFFERENCE; /* IDIFFERENCE only while no float */
        -:  931:    case332:
  2505065:  932:      ITIMES2; /* ITIMES2 only while no float */
        -:  934:    case333:
   772387:  935:      IQUOTIENT; /* IQUOTIENT */
        -:  937:    case334:
  7558935:  938:      IREMAINDER;
        -:  940:    case335:
    #####:  941:      IPLUS_N(Get_BYTE_PCMAC1);
        -:  943:    case336:
    #####:  944:      IDIFFERENCE_N(Get_BYTE_PCMAC1);
        -:  946:    case337 : { goto op_ufn; } /* BASE-< */
        -:  948:    case340:
 20207178:  949:      LLSH1;
        -:  951:    case341:
 34198730:  952:      LLSH8;
        -:  954:    case342:
  8828829:  955:      LRSH1;
        -:  957:    case343:
 17143390:  958:      LRSH8;
        -:  960:    case344:
 24146718:  961:      LOGOR;
        -:  963:    case345:
 41734936:  964:      LOGAND;
        -:  966:    case346:
  5805051:  967:      LOGXOR;
        -:  969:    case347:
  3394683:  970:      LSH;
        -:  972:    case350:
    #####:  973:      FPLUS2;
        -:  975:    case351:
    #####:  976:      FDIFFERENCE;
        -:  978:    case352:
      374:  979:      FTIMES2;
        -:  981:    case353:
      115:  982:      FQUOTIENT;
        -:  984:    case354:
      166:  985:      UBFLOAT2(Get_BYTE_PCMAC1);
        -:  987:    case355:
    39477:  988:      UBFLOAT1(Get_BYTE_PCMAC1);
        -:  990:    case356:
    #####:  991:      AREF2;
        -:  993:    case357:
    #####:  994:      ASET2;
        -:  997:    case360 : {
296607730:  998:      if (TOPOFSTACK == POP_TOS_1)
 86456052:  999:        TOPOFSTACK = ATOM_T;
296607730: 1002:      nextop1;
        -: 1006:    case361:
133887481: 1007:      IGREATERP; /* IGREATERP if no float */
        -: 1009:    case362:
    #####: 1010:      FGREATERP;
        -: 1012:    case363:
 44309644: 1013:      GREATERP;
        -: 1015:    case364:
    58639: 1016:      ILEQUAL;
        -: 1018:    case365:
 17927565: 1019:      MAKENUMBER;
        -: 1021:    case366:
     1391: 1022:      BOXIPLUS;
        -: 1024:    case367:
      856: 1025:      BOXIDIFFERENCE;
        -: 1027:    case370 : { goto op_ufn; } /* FLOATBLT */
        -: 1029:    case371 : { goto op_ufn; } /* FFTSTEP */
        -: 1031:    case372:
   108310: 1032:      MISC3(Get_BYTE_PCMAC1);
        -: 1034:    case373:
    30758: 1035:      MISC4(Get_BYTE_PCMAC1);
        -: 1037:    case374 : { goto op_ufn; } /* upctrace */
        -: 1039:    case375:
 41518988: 1040:      SWAP;
        -: 1042:    case376:
 83002063: 1043:      NOP;
        -: 1045:    case377:
  5080850: 1046:      CLARITHEQUAL;
    #####: 1048:    default: error("should not default");
    #####: 1050:  } /* switch */

STEPHEN KAISLER

unread,
Aug 27, 2022, 4:53:07 PM8/27/22
to Nick Briggs, Lisp Core
Nick:

Impressive. Are you going to document all these opcodes for Maiko?

Steve K.
--
You received this message because you are subscribed to the Google Groups "Medley Interlisp core" group.
To unsubscribe from this group and stop receiving emails from it, send an email to lispcore+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/lispcore/859A698F-30F6-4957-BB30-61C06E70A402%40gmail.com.
Reply all
Reply to author
Forward
0 new messages