createSendCode(0, node, filterInfo, init, primePump, tile, rawChip, sendCompression);
if (itemsSending > 0) createSendCode(0, node, filterInfo, init, primePump, tile, rawChip, sendCompression);
    private static void filterSwitchCodeCompressed(int mult,                                                   FilterTraceNode node, FilterInfo filterInfo, boolean init,                                                   boolean primePump, RawTile tile, RawChip rawChip) {        assert mult < 65535;        assert !init;        // the items this filter is receiving for this iteration        int itemsReceiving = filterInfo.itemsNeededToFire(0, init);        // get the number of items sending on this iteration, only matters        // if init and if twostage        int itemsSending = filterInfo.itemsFiring(0, init);        // are we going to compress the individual send and receive        // instructions?        boolean sendCompression = (itemsSending > SC_INS_THRESH), receiveCompression = (itemsReceiving > SC_INS_THRESH);        Label receiveLabel = new Label(), sendLabel = new Label(), multLabel = new Label();        // the multiplicity of the filter        sendBoundProcToSwitch(mult, tile, init, primePump, FILTER_FIRE_LOOP_REG);        // add the label around the entire firing of the node        tile.getSwitchCode().appendIns(multLabel, (init || primePump));        // receive on the switch the number of items we are receiving, the proc        // sends this for each firing of the filter (see bufferedcommunication,        // directcommunicatio)        if (receiveCompression)            recConstOnSwitch(tile, init, primePump, POP_LOOP_REG);        // receive on the switch the number of items we are sending, the proc        // sends this for each firing of the filter (see bufferedcommunication,        // directcommunicatio)        if (sendCompression)            recConstOnSwitch(tile, init, primePump, PUSH_LOOP_REG);        // generate the label for the receive        if (receiveCompression)            tile.getSwitchCode().appendIns(receiveLabel, (init || primePump));        // append the receive code for 1 item if receive compression or pop        // items if not        createReceiveCode(0, node, filterInfo, init, primePump, tile, rawChip,                          receiveCompression);        // generate the loop back for the receive        if (receiveCompression)            generateSwitchLoopTrailer(receiveLabel, tile, init, primePump,                                      POP_LOOP_REG);        // generate the label for the send        if (sendCompression)            tile.getSwitchCode().appendIns(sendLabel, (init || primePump));        // append the send ins for 1 item if send compression or push items if        // not        createSendCode(0, node, filterInfo, init, primePump, tile, rawChip,                       sendCompression);        // generate the loop back for the send        if (sendCompression)            generateSwitchLoopTrailer(sendLabel, tile, init, primePump,                                      PUSH_LOOP_REG);        // generate the loop back for a complete firing of the filter...        generateSwitchLoopTrailer(multLabel, tile, false, primePump,                                  FILTER_FIRE_LOOP_REG);    }