Changeset 3345 for proto/pabloj/trunk


Ignore:
Timestamp:
Jun 21, 2013, 2:12:40 PM (6 years ago)
Author:
ksherdy
Message:

Harmonized builtin names for both CarrySet? and PabloS. Initial refactoring to centralize CarrySet? function call generation.

Location:
proto/pabloj/trunk
Files:
20 edited
7 moved

Legend:

Unmodified
Added
Removed
  • proto/pabloj/trunk/input/grammar/scatter/pabloS.scatter

    r3328 r3345  
    8686  funcDef    {hasSymbolTable;} [],
    8787 
     88  blockStmt  {hasSymbolTable;} [],             
     89 
    8890  identifier         {hasBinding;} [],
    8991  compoundIdentifier {hasBinding;} [],
     
    129131        blockStmt                               ->      LCURLY stmt* RCURLY ;
    130132        varDecl                                 ->      type varName (ASSIGN^ expr) ? TERMINATOR ;
    131         varName                                 #-> compoundIdentifier ;
     133        varName                                 #-> identifier ; 
    132134        funcCallOrAssignStmt    #-> expr (assignRest _promote_) ? TERMINATOR ; // add SA to validate expr is a function call
    133135        assignRest                              ->      assignOperator^! expr ;
  • proto/pabloj/trunk/output/cpplang/pablo_definitions.hpp

    r3344 r3345  
    1919// runtime libraries
    2020#include <simd-lib/bitblock.hpp>
    21 #include <simd-lib/carryQ.hpp>
     21#include <simd-lib/carrySet.hpp>
    2222#include <simd-lib/pabloSupport.hpp>
    2323
     
    2626ErrorTracker error_tracker;
    2727
    28 #define assert_0_error(errkind, errstrm) error_tracker.NoteError(errkind, errstrm);
     28#define assert_0_error(errstrm,errkind) error_tracker.NoteError(errkind, errstrm);
    2929BitBlock EOF_mask = simd<1>::constant<1>();
    3030
     
    191191        {
    192192        }
    193          
     193       
    194194        IDISA_INLINE void do_block(struct Basis_bits & basis_bits,struct Lex & lex,struct U8 & u8)
    195195        {
    196                 BitBlock temp1 = simd_or(basis_bits.bit_0,basis_bits.bit_1);
    197                 BitBlock temp2 = simd_andc(basis_bits.bit_2,basis_bits.bit_3);
    198                 BitBlock temp3 = simd_andc(temp2,temp1);
    199                 BitBlock temp4 = simd_andc(basis_bits.bit_5,basis_bits.bit_4);
    200                 BitBlock temp5 = simd_andc(basis_bits.bit_6,basis_bits.bit_7);
    201                 BitBlock temp6 = simd_and(temp4,temp5);
    202                 lex.RefStart = simd_and(temp3,temp6);
    203                 BitBlock temp7 = simd_and(basis_bits.bit_2,basis_bits.bit_3);
    204                 BitBlock temp8 = simd_andc(temp7,temp1);
    205                 BitBlock temp9 = simd_andc(basis_bits.bit_4,basis_bits.bit_5);
    206                 BitBlock temp10 = simd_and(basis_bits.bit_6,basis_bits.bit_7);
    207                 BitBlock temp11 = simd_and(temp9,temp10);
    208                 lex.Semicolon = simd_and(temp8,temp11);
    209                 BitBlock temp12 = simd_and(basis_bits.bit_4,basis_bits.bit_5);
    210                 BitBlock temp13 = simd_or(basis_bits.bit_6,basis_bits.bit_7);
    211                 BitBlock temp14 = simd_andc(temp12,temp13);
    212                 lex.LAngle = simd_and(temp8,temp14);
    213                 BitBlock temp15 = simd_and(temp12,temp5);
    214                 lex.RAngle = simd_and(temp8,temp15);
    215                 BitBlock temp16 = simd_andc(basis_bits.bit_1,basis_bits.bit_0);
    216                 BitBlock temp17 = simd_andc(basis_bits.bit_3,basis_bits.bit_2);
    217                 BitBlock temp18 = simd_and(temp16,temp17);
    218                 lex.LBracket = simd_and(temp18,temp11);
    219                 BitBlock temp19 = simd_andc(basis_bits.bit_7,basis_bits.bit_6);
    220                 BitBlock temp20 = simd_and(temp12,temp19);
    221                 lex.RBracket = simd_and(temp18,temp20);
    222                 BitBlock temp21 = simd_or(basis_bits.bit_4,basis_bits.bit_5);
    223                 BitBlock temp22 = simd_andc(temp19,temp21);
    224                 lex.Exclam = simd_and(temp3,temp22);
    225                 BitBlock temp23 = simd_and(temp12,temp10);
    226                 lex.QMark = simd_and(temp8,temp23);
    227                 lex.Hyphen = simd_and(temp3,temp20);
    228                 lex.Equals = simd_and(temp8,temp20);
    229                 BitBlock temp24 = simd_and(temp4,temp10);
    230                 lex.SQuote = simd_and(temp3,temp24);
    231                 BitBlock temp25 = simd_andc(temp5,temp21);
    232                 lex.DQuote = simd_and(temp3,temp25);
    233                 lex.Slash = simd_and(temp3,temp23);
    234                 BitBlock temp26 = simd_andc(temp10,temp21);
    235                 lex.Hash = simd_and(temp3,temp26);
    236                 BitBlock temp27 = simd_and(temp16,temp7);
    237                 BitBlock temp28 = simd_andc(temp9,temp13);
    238                 lex.x = simd_and(temp27,temp28);
    239                 BitBlock temp29 = simd_and(temp9,temp5);
    240                 lex.Colon = simd_and(temp8,temp29);
    241                 BitBlock temp30 = simd_and(temp18,temp23);
    242                 BitBlock temp31 = simd_or(temp30,lex.Colon);
    243                 BitBlock temp32 = simd_andc(temp16,basis_bits.bit_2);
    244                 BitBlock temp33 = simd_or(basis_bits.bit_5,temp10);
    245                 BitBlock temp34 = simd_and(basis_bits.bit_4,temp33);
    246                 BitBlock temp35 = simd_not(temp34);
    247                 BitBlock temp36 = simd_or(temp21,temp13);
    248                 BitBlock temp37 = simd_or(simd_and(basis_bits.bit_3,temp35),simd_andc(temp36,basis_bits.bit_3));
    249                 BitBlock temp38 = simd_and(temp32,temp37);
    250                 BitBlock temp39 = simd_or(temp31,temp38);
    251                 BitBlock temp40 = simd_and(temp16,basis_bits.bit_2);
    252                 BitBlock temp41 = simd_and(temp40,temp37);
    253                 lex.ASCII_name_start = simd_or(temp39,temp41);
    254                 BitBlock temp42 = simd_or(temp30,lex.Hyphen);
    255                 BitBlock temp43 = simd_and(temp3,temp15);
    256                 BitBlock temp44 = simd_or(temp42,temp43);
    257                 BitBlock temp45 = simd_andc(temp8,temp34);
    258                 BitBlock temp46 = simd_or(temp44,temp45);
    259                 BitBlock temp47 = simd_or(temp46,temp38);
    260                 lex.ASCII_name_char = simd_or(temp47,temp41);
     196                BitBlock temp1_v0;
     197                BitBlock temp2_v1;
     198                BitBlock temp3_v2;
     199                BitBlock temp4_v3;
     200                BitBlock temp5_v4;
     201                BitBlock temp6_v5;
     202                BitBlock temp7_v6;
     203                BitBlock temp8_v7;
     204                BitBlock temp9_v8;
     205                BitBlock temp10_v9;
     206                BitBlock temp11_v10;
     207                BitBlock temp12_v11;
     208                BitBlock temp13_v12;
     209                BitBlock temp14_v13;
     210                BitBlock temp15_v14;
     211                BitBlock temp16_v15;
     212                BitBlock temp17_v16;
     213                BitBlock temp18_v17;
     214                BitBlock temp19_v18;
     215                BitBlock temp20_v19;
     216                BitBlock temp21_v20;
     217                BitBlock temp22_v21;
     218                BitBlock temp23_v22;
     219                BitBlock temp24_v23;
     220                BitBlock temp25_v24;
     221                BitBlock temp26_v25;
     222                BitBlock temp27_v26;
     223                BitBlock temp28_v27;
     224                BitBlock temp29_v28;
     225                BitBlock temp30_v29;
     226                BitBlock temp31_v30;
     227                BitBlock temp32_v31;
     228                BitBlock temp33_v32;
     229                BitBlock temp34_v33;
     230                BitBlock temp35_v34;
     231                BitBlock temp36_v35;
     232                BitBlock temp37_v36;
     233                BitBlock temp38_v37;
     234                BitBlock temp39_v38;
     235                BitBlock temp40_v39;
     236                BitBlock temp41_v40;
     237                BitBlock temp42_v41;
     238                BitBlock temp43_v42;
     239                BitBlock temp44_v43;
     240                BitBlock temp45_v44;
     241                BitBlock temp46_v45;
     242                BitBlock temp47_v46;
     243                BitBlock temp48_v47;
     244                BitBlock x00_x1F_v48;
     245                BitBlock temp49_v49;
     246                BitBlock temp50_v50;
     247                BitBlock temp51_v51;
     248                BitBlock temp52_v52;
     249                BitBlock temp53_v53;
     250                BitBlock temp54_v54;
     251                BitBlock temp55_v55;
     252                BitBlock temp56_v56;
     253                BitBlock temp57_v57;
     254                BitBlock temp58_v58;
     255                BitBlock temp59_v59;
     256                BitBlock temp60_v60;
     257                BitBlock temp61_v61;
     258                BitBlock temp62_v62;
     259                BitBlock temp63_v63;
     260                BitBlock temp64_v64;
     261                BitBlock temp65_v65;
     262                BitBlock lex_error_v66;
     263                BitBlock u8_error_v67;
     264                BitBlock u8_FFFE_FFFF_v68;
     265                BitBlock u8anyscope_v69;
     266                BitBlock temp66_v70;
     267                BitBlock temp67_v71;
     268                BitBlock temp68_v72;
     269                BitBlock temp69_v73;
     270                BitBlock temp70_v74;
     271                BitBlock temp71_v75;
     272                BitBlock _temp0_v76;
     273                BitBlock xE0_v77;
     274                BitBlock xED_v78;
     275                BitBlock xF0_v79;
     276                BitBlock temp72_v80;
     277                BitBlock xF4_v81;
     278                BitBlock xEF_v82;
     279                BitBlock temp73_v83;
     280                BitBlock _temp1_v84;
     281                BitBlock _temp2_v85;
     282                BitBlock _temp3_v86;
     283                BitBlock _temp4_v87;
     284                BitBlock _temp5_v88;
     285                BitBlock E0_F0_scope_v89;
     286                BitBlock _temp6_v90;
     287                BitBlock ED_F4_scope_v91;
     288                BitBlock _temp7_v92;
     289                BitBlock _temp8_v93;
     290                BitBlock u8lastscope_v94;
     291                BitBlock u8error1_v95;
     292                BitBlock u8error2_v96;
     293                BitBlock u8error3_v97;
     294                BitBlock u8error4_v98;
     295                BitBlock EF_BF_pending_v99;
     296                BitBlock _temp9_v100;
     297                BitBlock u8mismatch_v101;
     298                temp1_v0 = simd_or(basis_bits.bit_0,basis_bits.bit_1);
     299                temp2_v1 = simd_andc(basis_bits.bit_2,basis_bits.bit_3);
     300                temp3_v2 = simd_andc(temp2_v1,temp1_v0);
     301                temp4_v3 = simd_andc(basis_bits.bit_5,basis_bits.bit_4);
     302                temp5_v4 = simd_andc(basis_bits.bit_6,basis_bits.bit_7);
     303                temp6_v5 = simd_and(temp4_v3,temp5_v4);
     304                lex.RefStart = simd_and(temp3_v2,temp6_v5);
     305                temp7_v6 = simd_and(basis_bits.bit_2,basis_bits.bit_3);
     306                temp8_v7 = simd_andc(temp7_v6,temp1_v0);
     307                temp9_v8 = simd_andc(basis_bits.bit_4,basis_bits.bit_5);
     308                temp10_v9 = simd_and(basis_bits.bit_6,basis_bits.bit_7);
     309                temp11_v10 = simd_and(temp9_v8,temp10_v9);
     310                lex.Semicolon = simd_and(temp8_v7,temp11_v10);
     311                temp12_v11 = simd_and(basis_bits.bit_4,basis_bits.bit_5);
     312                temp13_v12 = simd_or(basis_bits.bit_6,basis_bits.bit_7);
     313                temp14_v13 = simd_andc(temp12_v11,temp13_v12);
     314                lex.LAngle = simd_and(temp8_v7,temp14_v13);
     315                temp15_v14 = simd_and(temp12_v11,temp5_v4);
     316                lex.RAngle = simd_and(temp8_v7,temp15_v14);
     317                temp16_v15 = simd_andc(basis_bits.bit_1,basis_bits.bit_0);
     318                temp17_v16 = simd_andc(basis_bits.bit_3,basis_bits.bit_2);
     319                temp18_v17 = simd_and(temp16_v15,temp17_v16);
     320                lex.LBracket = simd_and(temp18_v17,temp11_v10);
     321                temp19_v18 = simd_andc(basis_bits.bit_7,basis_bits.bit_6);
     322                temp20_v19 = simd_and(temp12_v11,temp19_v18);
     323                lex.RBracket = simd_and(temp18_v17,temp20_v19);
     324                temp21_v20 = simd_or(basis_bits.bit_4,basis_bits.bit_5);
     325                temp22_v21 = simd_andc(temp19_v18,temp21_v20);
     326                lex.Exclam = simd_and(temp3_v2,temp22_v21);
     327                temp23_v22 = simd_and(temp12_v11,temp10_v9);
     328                lex.QMark = simd_and(temp8_v7,temp23_v22);
     329                lex.Hyphen = simd_and(temp3_v2,temp20_v19);
     330                lex.Equals = simd_and(temp8_v7,temp20_v19);
     331                temp24_v23 = simd_and(temp4_v3,temp10_v9);
     332                lex.SQuote = simd_and(temp3_v2,temp24_v23);
     333                temp25_v24 = simd_andc(temp5_v4,temp21_v20);
     334                lex.DQuote = simd_and(temp3_v2,temp25_v24);
     335                lex.Slash = simd_and(temp3_v2,temp23_v22);
     336                temp26_v25 = simd_andc(temp10_v9,temp21_v20);
     337                lex.Hash = simd_and(temp3_v2,temp26_v25);
     338                temp27_v26 = simd_and(temp16_v15,temp7_v6);
     339                temp28_v27 = simd_andc(temp9_v8,temp13_v12);
     340                lex.x = simd_and(temp27_v26,temp28_v27);
     341                temp29_v28 = simd_and(temp9_v8,temp5_v4);
     342                lex.Colon = simd_and(temp8_v7,temp29_v28);
     343                temp30_v29 = simd_and(temp18_v17,temp23_v22);
     344                temp31_v30 = simd_or(temp30_v29,lex.Colon);
     345                temp32_v31 = simd_andc(temp16_v15,basis_bits.bit_2);
     346                temp33_v32 = simd_or(basis_bits.bit_5,temp10_v9);
     347                temp34_v33 = simd_and(basis_bits.bit_4,temp33_v32);
     348                temp35_v34 = simd_not(temp34_v33);
     349                temp36_v35 = simd_or(temp21_v20,temp13_v12);
     350                temp37_v36 = simd_or(simd_and(basis_bits.bit_3,temp35_v34),simd_andc(temp36_v35,basis_bits.bit_3));
     351                temp38_v37 = simd_and(temp32_v31,temp37_v36);
     352                temp39_v38 = simd_or(temp31_v30,temp38_v37);
     353                temp40_v39 = simd_and(temp16_v15,basis_bits.bit_2);
     354                temp41_v40 = simd_and(temp40_v39,temp37_v36);
     355                lex.ASCII_name_start = simd_or(temp39_v38,temp41_v40);
     356                temp42_v41 = simd_or(temp30_v29,lex.Hyphen);
     357                temp43_v42 = simd_and(temp3_v2,temp15_v14);
     358                temp44_v43 = simd_or(temp42_v41,temp43_v42);
     359                temp45_v44 = simd_andc(temp8_v7,temp34_v33);
     360                temp46_v45 = simd_or(temp44_v43,temp45_v44);
     361                temp47_v46 = simd_or(temp46_v45,temp38_v37);
     362                lex.ASCII_name_char = simd_or(temp47_v46,temp41_v40);
    261363                lex.NameScan = simd_or(lex.ASCII_name_char,basis_bits.bit_0);
    262                 BitBlock temp48 = simd_or(temp1,basis_bits.bit_2);
    263                 BitBlock x00_x1F = simd_not(temp48);
    264                 BitBlock temp49 = simd_or(basis_bits.bit_2,basis_bits.bit_3);
    265                 BitBlock temp50 = simd_or(temp1,temp49);
    266                 lex.CR = simd_andc(temp20,temp50);
    267                 lex.LF = simd_andc(temp29,temp50);
    268                 BitBlock temp51 = simd_and(temp9,temp19);
    269                 lex.HT = simd_andc(temp51,temp50);
    270                 lex.SP = simd_andc(temp3,temp36);
    271                 BitBlock temp52 = simd_or(temp20,temp29);
    272                 BitBlock temp53 = simd_or(temp52,temp51);
    273                 BitBlock temp54 = simd_andc(temp53,temp50);
    274                 lex.WS = simd_or(temp54,lex.SP);
    275                 BitBlock temp55 = simd_or(basis_bits.bit_5,basis_bits.bit_6);
    276                 BitBlock temp56 = simd_and(basis_bits.bit_4,temp55);
    277                 lex.Digit = simd_andc(temp8,temp56);
    278                 BitBlock temp57 = simd_andc(temp16,temp49);
    279                 BitBlock temp58 = simd_andc(temp57,basis_bits.bit_4);
    280                 BitBlock temp59 = simd_not(temp10);
    281                 BitBlock temp60 = simd_or(simd_and(basis_bits.bit_5,temp59),simd_andc(temp13,basis_bits.bit_5));
    282                 BitBlock temp61 = simd_and(temp58,temp60);
    283                 BitBlock temp62 = simd_or(lex.Digit,temp61);
    284                 BitBlock temp63 = simd_and(temp16,temp2);
    285                 BitBlock temp64 = simd_andc(temp63,basis_bits.bit_4);
    286                 BitBlock temp65 = simd_and(temp64,temp60);
    287                 lex.Hex = simd_or(temp62,temp65);
    288                 BitBlock lex_error = simd_andc(x00_x1F,lex.WS);
    289                 if (bitblock::any(lex_error))
    290                 {
    291                         assert_0_error("Error: illegal character",lex_error);
     364                temp48_v47 = simd_or(temp1_v0,basis_bits.bit_2);
     365                x00_x1F_v48 = simd_not(temp48_v47);
     366                temp49_v49 = simd_or(basis_bits.bit_2,basis_bits.bit_3);
     367                temp50_v50 = simd_or(temp1_v0,temp49_v49);
     368                lex.CR = simd_andc(temp20_v19,temp50_v50);
     369                lex.LF = simd_andc(temp29_v28,temp50_v50);
     370                temp51_v51 = simd_and(temp9_v8,temp19_v18);
     371                lex.HT = simd_andc(temp51_v51,temp50_v50);
     372                lex.SP = simd_andc(temp3_v2,temp36_v35);
     373                temp52_v52 = simd_or(temp20_v19,temp29_v28);
     374                temp53_v53 = simd_or(temp52_v52,temp51_v51);
     375                temp54_v54 = simd_andc(temp53_v53,temp50_v50);
     376                lex.WS = simd_or(temp54_v54,lex.SP);
     377                temp55_v55 = simd_or(basis_bits.bit_5,basis_bits.bit_6);
     378                temp56_v56 = simd_and(basis_bits.bit_4,temp55_v55);
     379                lex.Digit = simd_andc(temp8_v7,temp56_v56);
     380                temp57_v57 = simd_andc(temp16_v15,temp49_v49);
     381                temp58_v58 = simd_andc(temp57_v57,basis_bits.bit_4);
     382                temp59_v59 = simd_not(temp10_v9);
     383                temp60_v60 = simd_or(simd_and(basis_bits.bit_5,temp59_v59),simd_andc(temp13_v12,basis_bits.bit_5));
     384                temp61_v61 = simd_and(temp58_v58,temp60_v60);
     385                temp62_v62 = simd_or(lex.Digit,temp61_v61);
     386                temp63_v63 = simd_and(temp16_v15,temp2_v1);
     387                temp64_v64 = simd_andc(temp63_v63,basis_bits.bit_4);
     388                temp65_v65 = simd_and(temp64_v64,temp60_v60);
     389                lex.Hex = simd_or(temp62_v62,temp65_v65);
     390                lex_error_v66 = simd_andc(x00_x1F_v48,lex.WS);
     391                if (bitblock::any(lex_error_v66))
     392                {
     393                        assert_0_error(lex_error_v66,"Error: illegal character");
    292394                }
    293395                u8.unibyte = simd_not(basis_bits.bit_0);
    294396                u8.suffix = simd<1>::constant<0>();
    295                 BitBlock u8_error = simd<1>::constant<0>();
    296                 BitBlock u8_FFFE_FFFF = simd<1>::constant<0>();
    297                 BitBlock u8anyscope = simd<1>::constant<0>();
    298                 if (bitblock::any(simd_or(basis_bits.bit_0,carry_set_0.CarryRange(0,10))))
     397                u8_error_v67 = simd<1>::constant<0>();
     398                u8_FFFE_FFFF_v68 = simd<1>::constant<0>();
     399                u8anyscope_v69 = simd<1>::constant<0>();
     400                if (bitblock::any(simd_or(basis_bits.bit_0,carry_set_0.carryRange(0,10))))
    299401                {
    300402                        u8.prefix = simd_and(basis_bits.bit_0,basis_bits.bit_1);
    301403                        u8.prefix2 = simd_andc(u8.prefix,basis_bits.bit_2);
    302                         u8.prefix3 = simd_and(u8.prefix,temp2);
    303                         u8.prefix4 = simd_and(u8.prefix,temp7);
     404                        u8.prefix3 = simd_and(u8.prefix,temp2_v1);
     405                        u8.prefix4 = simd_and(u8.prefix,temp7_v6);
    304406                        u8.suffix = simd_andc(basis_bits.bit_0,basis_bits.bit_1);
    305                         BitBlock temp66 = simd_andc(u8.prefix,temp49);
    306                         BitBlock temp67 = simd_or(temp21,basis_bits.bit_6);
    307                         BitBlock temp68 = simd_andc(temp66,temp67);
    308                         BitBlock temp69 = simd_and(basis_bits.bit_5,temp13);
    309                         BitBlock temp70 = simd_or(basis_bits.bit_4,temp69);
    310                         BitBlock temp71 = simd_and(u8.prefix4,temp70);
    311                         u8.badprefix = simd_or(temp68,temp71);
    312                         u8_error = u8.badprefix;
    313                         // u8.scope22 = carry_set_0.BitBlock_advance_ci_co(u8.prefix2,carry_set_0.GetCarry(0),0);
    314                         u8anyscope = u8.scope22;
    315                         if (bitblock::any(simd_or(simd_or(u8.prefix3,u8.prefix4),carry_set_0.CarryRange(1,9))))
    316                         {
    317                                 BitBlock xE0 = simd_andc(u8.prefix3,temp36);
    318                                 BitBlock xED = simd_and(u8.prefix3,temp20);
    319                                 BitBlock xF0 = simd_andc(u8.prefix4,temp36);
    320                                 BitBlock temp72 = simd_andc(temp4,temp13);
    321                                 BitBlock xF4 = simd_and(u8.prefix4,temp72);
     407                        temp66_v70 = simd_andc(u8.prefix,temp49_v49);
     408                        temp67_v71 = simd_or(temp21_v20,basis_bits.bit_6);
     409                        temp68_v72 = simd_andc(temp66_v70,temp67_v71);
     410                        temp69_v73 = simd_and(basis_bits.bit_5,temp13_v12);
     411                        temp70_v74 = simd_or(basis_bits.bit_4,temp69_v73);
     412                        temp71_v75 = simd_and(u8.prefix4,temp70_v74);
     413                        u8.badprefix = simd_or(temp68_v72,temp71_v75);
     414                        u8_error_v67 = u8.badprefix;
     415                        carry_set_0.getCarry(0) = bitblock::srli<127>(pablo_blk_Advance(u8.prefix2,carry_set_0.getCarry(0),_temp0_v76));
     416                        u8.scope22 = _temp0_v76;
     417                        u8anyscope_v69 = u8.scope22;
     418                        if (bitblock::any(simd_or(simd_or(u8.prefix3,u8.prefix4),carry_set_0.carryRange(1,9))))
     419                        {
     420                                xE0_v77 = simd_andc(u8.prefix3,temp36_v35);
     421                                xED_v78 = simd_and(u8.prefix3,temp20_v19);
     422                                xF0_v79 = simd_andc(u8.prefix4,temp36_v35);
     423                                temp72_v80 = simd_andc(temp4_v3,temp13_v12);
     424                                xF4_v81 = simd_and(u8.prefix4,temp72_v80);
    322425                                u8.xA0_xBF = simd_and(u8.suffix,basis_bits.bit_2);
    323426                                u8.x80_x9F = simd_andc(u8.suffix,basis_bits.bit_2);
    324                                 u8.x90_xBF = simd_and(u8.suffix,temp49);
    325                                 u8.x80_x8F = simd_andc(u8.suffix,temp49);
    326                                 BitBlock xEF = simd_and(u8.prefix3,temp23);
    327                                 BitBlock temp73 = simd_and(u8.suffix,temp7);
    328                                 u8.xBF = simd_and(temp73,temp23);
    329                                 u8.xBE = simd_and(temp73,temp15);
    330                                 //u8.scope32 = carry_set_0.BitBlock_advance_ci_co(u8.prefix3,carry_set_0.GetCarry(1),1);
    331                                 u8.scope33 = carry_set_0.BitBlock_advance_ci_co(u8.scope32,carry_set_0.GetCarry(2),2);
    332                                 u8.scope42 = carry_set_0.BitBlock_advance_ci_co(u8.prefix4,carry_set_0.GetCarry(3),3);
    333                                 u8.scope43 = carry_set_0.BitBlock_advance_ci_co(u8.scope42,carry_set_0.GetCarry(4),4);
    334                                 u8.scope44 = carry_set_0.BitBlock_advance_ci_co(u8.scope43,carry_set_0.GetCarry(5),5);
    335                                 BitBlock E0_F0_scope = carry_set_0.BitBlock_advance_ci_co(simd_or(xE0,xF0),carry_set_0.GetCarry(6),6);
    336                                 BitBlock ED_F4_scope = carry_set_0.BitBlock_advance_ci_co(simd_or(xED,xF4),carry_set_0.GetCarry(7),7);
    337                                 u8.xE0_scope = simd_and(u8.scope32,E0_F0_scope);
    338                                 u8.xED_scope = simd_and(u8.scope32,ED_F4_scope);
    339                                 u8.xF0_scope = simd_and(u8.scope42,E0_F0_scope);
    340                                 u8.xF4_scope = simd_and(u8.scope42,ED_F4_scope);
    341                                 u8.xEF_scope = carry_set_0.BitBlock_advance_ci_co(xEF,carry_set_0.GetCarry(8),8);
    342                                 BitBlock u8lastscope = simd_or(simd_or(u8.scope22,u8.scope33),u8.scope44);
    343                                 u8anyscope = simd_or(simd_or(simd_or(u8lastscope,u8.scope32),u8.scope42),u8.scope43);
    344                                 BitBlock u8error1 = simd_and(u8.xE0_scope,u8.x80_x9F);
    345                                 BitBlock u8error2 = simd_and(u8.xED_scope,u8.xA0_xBF);
    346                                 BitBlock u8error3 = simd_and(u8.xF0_scope,u8.x80_x8F);
    347                                 BitBlock u8error4 = simd_and(u8.xF4_scope,u8.x90_xBF);
    348                                 u8_error = simd_or(u8_error,simd_or(simd_or(simd_or(u8error1,u8error2),u8error3),u8error4));
    349                                 BitBlock EF_BF_pending = carry_set_0.BitBlock_advance_ci_co(simd_and(u8.xEF_scope,u8.xBF),carry_set_0.GetCarry(9),9);
    350                                 u8_FFFE_FFFF = simd_and(EF_BF_pending,simd_or(u8.xBE,u8.xBF));
     427                                u8.x90_xBF = simd_and(u8.suffix,temp49_v49);
     428                                u8.x80_x8F = simd_andc(u8.suffix,temp49_v49);
     429                                xEF_v82 = simd_and(u8.prefix3,temp23_v22);
     430                                temp73_v83 = simd_and(u8.suffix,temp7_v6);
     431                                u8.xBF = simd_and(temp73_v83,temp23_v22);
     432                                u8.xBE = simd_and(temp73_v83,temp15_v14);
     433                                carry_set_0.getCarry(1) = bitblock::srli<127>(pablo_blk_Advance(u8.prefix3,carry_set_0.getCarry(1),_temp1_v84));
     434                                u8.scope32 = _temp1_v84;
     435                                carry_set_0.getCarry(2) = bitblock::srli<127>(pablo_blk_Advance(u8.scope32,carry_set_0.getCarry(2),_temp2_v85));
     436                                u8.scope33 = _temp2_v85;
     437                                carry_set_0.getCarry(3) = bitblock::srli<127>(pablo_blk_Advance(u8.prefix4,carry_set_0.getCarry(3),_temp3_v86));
     438                                u8.scope42 = _temp3_v86;
     439                                carry_set_0.getCarry(4) = bitblock::srli<127>(pablo_blk_Advance(u8.scope42,carry_set_0.getCarry(4),_temp4_v87));
     440                                u8.scope43 = _temp4_v87;
     441                                carry_set_0.getCarry(5) = bitblock::srli<127>(pablo_blk_Advance(u8.scope43,carry_set_0.getCarry(5),_temp5_v88));
     442                                u8.scope44 = _temp5_v88;
     443                                carry_set_0.getCarry(6) = bitblock::srli<127>(pablo_blk_Advance(simd_or(xE0_v77,xF0_v79),carry_set_0.getCarry(6),_temp6_v90));
     444                                E0_F0_scope_v89 = _temp6_v90;
     445                                carry_set_0.getCarry(7) = bitblock::srli<127>(pablo_blk_Advance(simd_or(xED_v78,xF4_v81),carry_set_0.getCarry(7),_temp7_v92));
     446                                ED_F4_scope_v91 = _temp7_v92;
     447                                u8.xE0_scope = simd_and(u8.scope32,E0_F0_scope_v89);
     448                                u8.xED_scope = simd_and(u8.scope32,ED_F4_scope_v91);
     449                                u8.xF0_scope = simd_and(u8.scope42,E0_F0_scope_v89);
     450                                u8.xF4_scope = simd_and(u8.scope42,ED_F4_scope_v91);
     451                                carry_set_0.getCarry(8) = bitblock::srli<127>(pablo_blk_Advance(xEF_v82,carry_set_0.getCarry(8),_temp8_v93));
     452                                u8.xEF_scope = _temp8_v93;
     453                                u8lastscope_v94 = simd_or(simd_or(u8.scope22,u8.scope33),u8.scope44);
     454                                u8anyscope_v69 = simd_or(simd_or(simd_or(u8lastscope_v94,u8.scope32),u8.scope42),u8.scope43);
     455                                u8error1_v95 = simd_and(u8.xE0_scope,u8.x80_x9F);
     456                                u8error2_v96 = simd_and(u8.xED_scope,u8.xA0_xBF);
     457                                u8error3_v97 = simd_and(u8.xF0_scope,u8.x80_x8F);
     458                                u8error4_v98 = simd_and(u8.xF4_scope,u8.x90_xBF);
     459                                u8_error_v67 = simd_or(u8_error_v67,simd_or(simd_or(simd_or(u8error1_v95,u8error2_v96),u8error3_v97),u8error4_v98));
     460                                carry_set_0.getCarry(9) = bitblock::srli<127>(pablo_blk_Advance(simd_and(u8.xEF_scope,u8.xBF),carry_set_0.getCarry(9),_temp9_v100));
     461                                EF_BF_pending_v99 = _temp9_v100;
     462                                u8_FFFE_FFFF_v68 = simd_and(EF_BF_pending_v99,simd_or(u8.xBE,u8.xBF));
    351463                        }
    352464                        else
    353465                        {
    354                                 carry_set_0.CarryDequeueEnqueue(1,9);
    355                         }
    356                         BitBlock u8mismatch = simd_xor(u8anyscope,u8.suffix);
    357                         if (bitblock::any(simd_or(simd_or(u8_error,u8mismatch),u8_FFFE_FFFF)))
    358                         {
    359                                 assert_0_error("UTF-8 error found",simd_or(simd_or(u8_error,u8mismatch),u8_FFFE_FFFF));
     466                                carry_set_0.carryDequeueEnqueue(1,9);
     467                        }
     468                        u8mismatch_v101 = simd_xor(u8anyscope_v69,u8.suffix);
     469                        if (bitblock::any(simd_or(simd_or(u8_error_v67,u8mismatch_v101),u8_FFFE_FFFF_v68)))
     470                        {
     471                                assert_0_error(simd_or(simd_or(u8_error_v67,u8mismatch_v101),u8_FFFE_FFFF_v68),"UTF-8 error found");
    360472                        }
    361473                }
    362474                else
    363475                {
    364                         carry_set_0.CarryDequeueEnqueue(0,10);
    365                 }
    366                 carry_set_0.CarryAdjust(10);
     476                        carry_set_0.carryDequeueEnqueue(0,10);
     477                }
     478                carry_set_0.carryAdjust(10);
    367479        }
    368480       
    369481        void do_final_block(struct Basis_bits & basis_bits,struct Lex & lex,struct U8 & u8,BitBlock & EOF_mask)
    370482        {
    371                 BitBlock temp1 = simd_or(basis_bits.bit_0,basis_bits.bit_1);
    372                 BitBlock temp2 = simd_andc(basis_bits.bit_2,basis_bits.bit_3);
    373                 BitBlock temp3 = simd_andc(temp2,temp1);
    374                 BitBlock temp4 = simd_andc(basis_bits.bit_5,basis_bits.bit_4);
    375                 BitBlock temp5 = simd_andc(basis_bits.bit_6,basis_bits.bit_7);
    376                 BitBlock temp6 = simd_and(temp4,temp5);
    377                 lex.RefStart = simd_and(temp3,temp6);
    378                 BitBlock temp7 = simd_and(basis_bits.bit_2,basis_bits.bit_3);
    379                 BitBlock temp8 = simd_andc(temp7,temp1);
    380                 BitBlock temp9 = simd_andc(basis_bits.bit_4,basis_bits.bit_5);
    381                 BitBlock temp10 = simd_and(basis_bits.bit_6,basis_bits.bit_7);
    382                 BitBlock temp11 = simd_and(temp9,temp10);
    383                 lex.Semicolon = simd_and(temp8,temp11);
    384                 BitBlock temp12 = simd_and(basis_bits.bit_4,basis_bits.bit_5);
    385                 BitBlock temp13 = simd_or(basis_bits.bit_6,basis_bits.bit_7);
    386                 BitBlock temp14 = simd_andc(temp12,temp13);
    387                 lex.LAngle = simd_and(temp8,temp14);
    388                 BitBlock temp15 = simd_and(temp12,temp5);
    389                 lex.RAngle = simd_and(temp8,temp15);
    390                 BitBlock temp16 = simd_andc(basis_bits.bit_1,basis_bits.bit_0);
    391                 BitBlock temp17 = simd_andc(basis_bits.bit_3,basis_bits.bit_2);
    392                 BitBlock temp18 = simd_and(temp16,temp17);
    393                 lex.LBracket = simd_and(temp18,temp11);
    394                 BitBlock temp19 = simd_andc(basis_bits.bit_7,basis_bits.bit_6);
    395                 BitBlock temp20 = simd_and(temp12,temp19);
    396                 lex.RBracket = simd_and(temp18,temp20);
    397                 BitBlock temp21 = simd_or(basis_bits.bit_4,basis_bits.bit_5);
    398                 BitBlock temp22 = simd_andc(temp19,temp21);
    399                 lex.Exclam = simd_and(temp3,temp22);
    400                 BitBlock temp23 = simd_and(temp12,temp10);
    401                 lex.QMark = simd_and(temp8,temp23);
    402                 lex.Hyphen = simd_and(temp3,temp20);
    403                 lex.Equals = simd_and(temp8,temp20);
    404                 BitBlock temp24 = simd_and(temp4,temp10);
    405                 lex.SQuote = simd_and(temp3,temp24);
    406                 BitBlock temp25 = simd_andc(temp5,temp21);
    407                 lex.DQuote = simd_and(temp3,temp25);
    408                 lex.Slash = simd_and(temp3,temp23);
    409                 BitBlock temp26 = simd_andc(temp10,temp21);
    410                 lex.Hash = simd_and(temp3,temp26);
    411                 BitBlock temp27 = simd_and(temp16,temp7);
    412                 BitBlock temp28 = simd_andc(temp9,temp13);
    413                 lex.x = simd_and(temp27,temp28);
    414                 BitBlock temp29 = simd_and(temp9,temp5);
    415                 lex.Colon = simd_and(temp8,temp29);
    416                 BitBlock temp30 = simd_and(temp18,temp23);
    417                 BitBlock temp31 = simd_or(temp30,lex.Colon);
    418                 BitBlock temp32 = simd_andc(temp16,basis_bits.bit_2);
    419                 BitBlock temp33 = simd_or(basis_bits.bit_5,temp10);
    420                 BitBlock temp34 = simd_and(basis_bits.bit_4,temp33);
    421                 BitBlock temp35 = simd_not(temp34);
    422                 BitBlock temp36 = simd_or(temp21,temp13);
    423                 BitBlock temp37 = simd_or(simd_and(basis_bits.bit_3,temp35),simd_andc(temp36,basis_bits.bit_3));
    424                 BitBlock temp38 = simd_and(temp32,temp37);
    425                 BitBlock temp39 = simd_or(temp31,temp38);
    426                 BitBlock temp40 = simd_and(temp16,basis_bits.bit_2);
    427                 BitBlock temp41 = simd_and(temp40,temp37);
    428                 lex.ASCII_name_start = simd_or(temp39,temp41);
    429                 BitBlock temp42 = simd_or(temp30,lex.Hyphen);
    430                 BitBlock temp43 = simd_and(temp3,temp15);
    431                 BitBlock temp44 = simd_or(temp42,temp43);
    432                 BitBlock temp45 = simd_andc(temp8,temp34);
    433                 BitBlock temp46 = simd_or(temp44,temp45);
    434                 BitBlock temp47 = simd_or(temp46,temp38);
    435                 lex.ASCII_name_char = simd_or(temp47,temp41);
     483                BitBlock temp1_v0;
     484                BitBlock temp2_v1;
     485                BitBlock temp3_v2;
     486                BitBlock temp4_v3;
     487                BitBlock temp5_v4;
     488                BitBlock temp6_v5;
     489                BitBlock temp7_v6;
     490                BitBlock temp8_v7;
     491                BitBlock temp9_v8;
     492                BitBlock temp10_v9;
     493                BitBlock temp11_v10;
     494                BitBlock temp12_v11;
     495                BitBlock temp13_v12;
     496                BitBlock temp14_v13;
     497                BitBlock temp15_v14;
     498                BitBlock temp16_v15;
     499                BitBlock temp17_v16;
     500                BitBlock temp18_v17;
     501                BitBlock temp19_v18;
     502                BitBlock temp20_v19;
     503                BitBlock temp21_v20;
     504                BitBlock temp22_v21;
     505                BitBlock temp23_v22;
     506                BitBlock temp24_v23;
     507                BitBlock temp25_v24;
     508                BitBlock temp26_v25;
     509                BitBlock temp27_v26;
     510                BitBlock temp28_v27;
     511                BitBlock temp29_v28;
     512                BitBlock temp30_v29;
     513                BitBlock temp31_v30;
     514                BitBlock temp32_v31;
     515                BitBlock temp33_v32;
     516                BitBlock temp34_v33;
     517                BitBlock temp35_v34;
     518                BitBlock temp36_v35;
     519                BitBlock temp37_v36;
     520                BitBlock temp38_v37;
     521                BitBlock temp39_v38;
     522                BitBlock temp40_v39;
     523                BitBlock temp41_v40;
     524                BitBlock temp42_v41;
     525                BitBlock temp43_v42;
     526                BitBlock temp44_v43;
     527                BitBlock temp45_v44;
     528                BitBlock temp46_v45;
     529                BitBlock temp47_v46;
     530                BitBlock temp48_v47;
     531                BitBlock x00_x1F_v48;
     532                BitBlock temp49_v49;
     533                BitBlock temp50_v50;
     534                BitBlock temp51_v51;
     535                BitBlock temp52_v52;
     536                BitBlock temp53_v53;
     537                BitBlock temp54_v54;
     538                BitBlock temp55_v55;
     539                BitBlock temp56_v56;
     540                BitBlock temp57_v57;
     541                BitBlock temp58_v58;
     542                BitBlock temp59_v59;
     543                BitBlock temp60_v60;
     544                BitBlock temp61_v61;
     545                BitBlock temp62_v62;
     546                BitBlock temp63_v63;
     547                BitBlock temp64_v64;
     548                BitBlock temp65_v65;
     549                BitBlock lex_error_v66;
     550                BitBlock u8_error_v67;
     551                BitBlock u8_FFFE_FFFF_v68;
     552                BitBlock u8anyscope_v69;
     553                BitBlock temp66_v70;
     554                BitBlock temp67_v71;
     555                BitBlock temp68_v72;
     556                BitBlock temp69_v73;
     557                BitBlock temp70_v74;
     558                BitBlock temp71_v75;
     559                BitBlock _temp0_v76;
     560                BitBlock xE0_v77;
     561                BitBlock xED_v78;
     562                BitBlock xF0_v79;
     563                BitBlock temp72_v80;
     564                BitBlock xF4_v81;
     565                BitBlock xEF_v82;
     566                BitBlock temp73_v83;
     567                BitBlock _temp1_v84;
     568                BitBlock _temp2_v85;
     569                BitBlock _temp3_v86;
     570                BitBlock _temp4_v87;
     571                BitBlock _temp5_v88;
     572                BitBlock E0_F0_scope_v89;
     573                BitBlock _temp6_v90;
     574                BitBlock ED_F4_scope_v91;
     575                BitBlock _temp7_v92;
     576                BitBlock _temp8_v93;
     577                BitBlock u8lastscope_v94;
     578                BitBlock u8error1_v95;
     579                BitBlock u8error2_v96;
     580                BitBlock u8error3_v97;
     581                BitBlock u8error4_v98;
     582                BitBlock EF_BF_pending_v99;
     583                BitBlock _temp9_v100;
     584                BitBlock u8mismatch_v101;
     585                temp1_v0 = simd_or(basis_bits.bit_0,basis_bits.bit_1);
     586                temp2_v1 = simd_andc(basis_bits.bit_2,basis_bits.bit_3);
     587                temp3_v2 = simd_andc(temp2_v1,temp1_v0);
     588                temp4_v3 = simd_andc(basis_bits.bit_5,basis_bits.bit_4);
     589                temp5_v4 = simd_andc(basis_bits.bit_6,basis_bits.bit_7);
     590                temp6_v5 = simd_and(temp4_v3,temp5_v4);
     591                lex.RefStart = simd_and(temp3_v2,temp6_v5);
     592                temp7_v6 = simd_and(basis_bits.bit_2,basis_bits.bit_3);
     593                temp8_v7 = simd_andc(temp7_v6,temp1_v0);
     594                temp9_v8 = simd_andc(basis_bits.bit_4,basis_bits.bit_5);
     595                temp10_v9 = simd_and(basis_bits.bit_6,basis_bits.bit_7);
     596                temp11_v10 = simd_and(temp9_v8,temp10_v9);
     597                lex.Semicolon = simd_and(temp8_v7,temp11_v10);
     598                temp12_v11 = simd_and(basis_bits.bit_4,basis_bits.bit_5);
     599                temp13_v12 = simd_or(basis_bits.bit_6,basis_bits.bit_7);
     600                temp14_v13 = simd_andc(temp12_v11,temp13_v12);
     601                lex.LAngle = simd_and(temp8_v7,temp14_v13);
     602                temp15_v14 = simd_and(temp12_v11,temp5_v4);
     603                lex.RAngle = simd_and(temp8_v7,temp15_v14);
     604                temp16_v15 = simd_andc(basis_bits.bit_1,basis_bits.bit_0);
     605                temp17_v16 = simd_andc(basis_bits.bit_3,basis_bits.bit_2);
     606                temp18_v17 = simd_and(temp16_v15,temp17_v16);
     607                lex.LBracket = simd_and(temp18_v17,temp11_v10);
     608                temp19_v18 = simd_andc(basis_bits.bit_7,basis_bits.bit_6);
     609                temp20_v19 = simd_and(temp12_v11,temp19_v18);
     610                lex.RBracket = simd_and(temp18_v17,temp20_v19);
     611                temp21_v20 = simd_or(basis_bits.bit_4,basis_bits.bit_5);
     612                temp22_v21 = simd_andc(temp19_v18,temp21_v20);
     613                lex.Exclam = simd_and(temp3_v2,temp22_v21);
     614                temp23_v22 = simd_and(temp12_v11,temp10_v9);
     615                lex.QMark = simd_and(temp8_v7,temp23_v22);
     616                lex.Hyphen = simd_and(temp3_v2,temp20_v19);
     617                lex.Equals = simd_and(temp8_v7,temp20_v19);
     618                temp24_v23 = simd_and(temp4_v3,temp10_v9);
     619                lex.SQuote = simd_and(temp3_v2,temp24_v23);
     620                temp25_v24 = simd_andc(temp5_v4,temp21_v20);
     621                lex.DQuote = simd_and(temp3_v2,temp25_v24);
     622                lex.Slash = simd_and(temp3_v2,temp23_v22);
     623                temp26_v25 = simd_andc(temp10_v9,temp21_v20);
     624                lex.Hash = simd_and(temp3_v2,temp26_v25);
     625                temp27_v26 = simd_and(temp16_v15,temp7_v6);
     626                temp28_v27 = simd_andc(temp9_v8,temp13_v12);
     627                lex.x = simd_and(temp27_v26,temp28_v27);
     628                temp29_v28 = simd_and(temp9_v8,temp5_v4);
     629                lex.Colon = simd_and(temp8_v7,temp29_v28);
     630                temp30_v29 = simd_and(temp18_v17,temp23_v22);
     631                temp31_v30 = simd_or(temp30_v29,lex.Colon);
     632                temp32_v31 = simd_andc(temp16_v15,basis_bits.bit_2);
     633                temp33_v32 = simd_or(basis_bits.bit_5,temp10_v9);
     634                temp34_v33 = simd_and(basis_bits.bit_4,temp33_v32);
     635                temp35_v34 = simd_not(temp34_v33);
     636                temp36_v35 = simd_or(temp21_v20,temp13_v12);
     637                temp37_v36 = simd_or(simd_and(basis_bits.bit_3,temp35_v34),simd_andc(temp36_v35,basis_bits.bit_3));
     638                temp38_v37 = simd_and(temp32_v31,temp37_v36);
     639                temp39_v38 = simd_or(temp31_v30,temp38_v37);
     640                temp40_v39 = simd_and(temp16_v15,basis_bits.bit_2);
     641                temp41_v40 = simd_and(temp40_v39,temp37_v36);
     642                lex.ASCII_name_start = simd_or(temp39_v38,temp41_v40);
     643                temp42_v41 = simd_or(temp30_v29,lex.Hyphen);
     644                temp43_v42 = simd_and(temp3_v2,temp15_v14);
     645                temp44_v43 = simd_or(temp42_v41,temp43_v42);
     646                temp45_v44 = simd_andc(temp8_v7,temp34_v33);
     647                temp46_v45 = simd_or(temp44_v43,temp45_v44);
     648                temp47_v46 = simd_or(temp46_v45,temp38_v37);
     649                lex.ASCII_name_char = simd_or(temp47_v46,temp41_v40);
    436650                lex.NameScan = simd_or(lex.ASCII_name_char,basis_bits.bit_0);
    437                 BitBlock temp48 = simd_or(temp1,basis_bits.bit_2);
    438                 BitBlock x00_x1F = simd_not(temp48);
    439                 BitBlock temp49 = simd_or(basis_bits.bit_2,basis_bits.bit_3);
    440                 BitBlock temp50 = simd_or(temp1,temp49);
    441                 lex.CR = simd_andc(temp20,temp50);
    442                 lex.LF = simd_andc(temp29,temp50);
    443                 BitBlock temp51 = simd_and(temp9,temp19);
    444                 lex.HT = simd_andc(temp51,temp50);
    445                 lex.SP = simd_andc(temp3,temp36);
    446                 BitBlock temp52 = simd_or(temp20,temp29);
    447                 BitBlock temp53 = simd_or(temp52,temp51);
    448                 BitBlock temp54 = simd_andc(temp53,temp50);
    449                 lex.WS = simd_or(temp54,lex.SP);
    450                 BitBlock temp55 = simd_or(basis_bits.bit_5,basis_bits.bit_6);
    451                 BitBlock temp56 = simd_and(basis_bits.bit_4,temp55);
    452                 lex.Digit = simd_andc(temp8,temp56);
    453                 BitBlock temp57 = simd_andc(temp16,temp49);
    454                 BitBlock temp58 = simd_andc(temp57,basis_bits.bit_4);
    455                 BitBlock temp59 = simd_not(temp10);
    456                 BitBlock temp60 = simd_or(simd_and(basis_bits.bit_5,temp59),simd_andc(temp13,basis_bits.bit_5));
    457                 BitBlock temp61 = simd_and(temp58,temp60);
    458                 BitBlock temp62 = simd_or(lex.Digit,temp61);
    459                 BitBlock temp63 = simd_and(temp16,temp2);
    460                 BitBlock temp64 = simd_andc(temp63,basis_bits.bit_4);
    461                 BitBlock temp65 = simd_and(temp64,temp60);
    462                 lex.Hex = simd_or(temp62,temp65);
    463                 BitBlock lex_error = simd_andc(x00_x1F,lex.WS);
    464                 if (bitblock::any(simd_and(lex_error,EOF_mask)))
    465                 {
    466                         assert_0_error("Error: illegal character",simd_and(lex_error,EOF_mask));
     651                temp48_v47 = simd_or(temp1_v0,basis_bits.bit_2);
     652                x00_x1F_v48 = simd_not(temp48_v47);
     653                temp49_v49 = simd_or(basis_bits.bit_2,basis_bits.bit_3);
     654                temp50_v50 = simd_or(temp1_v0,temp49_v49);
     655                lex.CR = simd_andc(temp20_v19,temp50_v50);
     656                lex.LF = simd_andc(temp29_v28,temp50_v50);
     657                temp51_v51 = simd_and(temp9_v8,temp19_v18);
     658                lex.HT = simd_andc(temp51_v51,temp50_v50);
     659                lex.SP = simd_andc(temp3_v2,temp36_v35);
     660                temp52_v52 = simd_or(temp20_v19,temp29_v28);
     661                temp53_v53 = simd_or(temp52_v52,temp51_v51);
     662                temp54_v54 = simd_andc(temp53_v53,temp50_v50);
     663                lex.WS = simd_or(temp54_v54,lex.SP);
     664                temp55_v55 = simd_or(basis_bits.bit_5,basis_bits.bit_6);
     665                temp56_v56 = simd_and(basis_bits.bit_4,temp55_v55);
     666                lex.Digit = simd_andc(temp8_v7,temp56_v56);
     667                temp57_v57 = simd_andc(temp16_v15,temp49_v49);
     668                temp58_v58 = simd_andc(temp57_v57,basis_bits.bit_4);
     669                temp59_v59 = simd_not(temp10_v9);
     670                temp60_v60 = simd_or(simd_and(basis_bits.bit_5,temp59_v59),simd_andc(temp13_v12,basis_bits.bit_5));
     671                temp61_v61 = simd_and(temp58_v58,temp60_v60);
     672                temp62_v62 = simd_or(lex.Digit,temp61_v61);
     673                temp63_v63 = simd_and(temp16_v15,temp2_v1);
     674                temp64_v64 = simd_andc(temp63_v63,basis_bits.bit_4);
     675                temp65_v65 = simd_and(temp64_v64,temp60_v60);
     676                lex.Hex = simd_or(temp62_v62,temp65_v65);
     677                lex_error_v66 = simd_andc(x00_x1F_v48,lex.WS);
     678                if (bitblock::any(simd_and(lex_error_v66,EOF_mask)))
     679                {
     680                        assert_0_error(simd_and(lex_error_v66,EOF_mask),"Error: illegal character");
    467681                }
    468682                u8.unibyte = simd_not(basis_bits.bit_0);
    469683                u8.suffix = simd<1>::constant<0>();
    470                 BitBlock u8_error = simd<1>::constant<0>();
    471                 BitBlock u8_FFFE_FFFF = simd<1>::constant<0>();
    472                 BitBlock u8anyscope = simd<1>::constant<0>();
    473                 if (bitblock::any(simd_or(basis_bits.bit_0,carry_set_0.CarryRange(0,10))))
     684                u8_error_v67 = simd<1>::constant<0>();
     685                u8_FFFE_FFFF_v68 = simd<1>::constant<0>();
     686                u8anyscope_v69 = simd<1>::constant<0>();
     687                if (bitblock::any(simd_or(basis_bits.bit_0,carry_set_0.carryRange(0,10))))
    474688                {
    475689                        u8.prefix = simd_and(basis_bits.bit_0,basis_bits.bit_1);
    476690                        u8.prefix2 = simd_andc(u8.prefix,basis_bits.bit_2);
    477                         u8.prefix3 = simd_and(u8.prefix,temp2);
    478                         u8.prefix4 = simd_and(u8.prefix,temp7);
     691                        u8.prefix3 = simd_and(u8.prefix,temp2_v1);
     692                        u8.prefix4 = simd_and(u8.prefix,temp7_v6);
    479693                        u8.suffix = simd_andc(basis_bits.bit_0,basis_bits.bit_1);
    480                         BitBlock temp66 = simd_andc(u8.prefix,temp49);
    481                         BitBlock temp67 = simd_or(temp21,basis_bits.bit_6);
    482                         BitBlock temp68 = simd_andc(temp66,temp67);
    483                         BitBlock temp69 = simd_and(basis_bits.bit_5,temp13);
    484                         BitBlock temp70 = simd_or(basis_bits.bit_4,temp69);
    485                         BitBlock temp71 = simd_and(u8.prefix4,temp70);
    486                         u8.badprefix = simd_or(temp68,temp71);
    487                         u8_error = u8.badprefix;
    488                         u8.scope22 = carry_set_0.BitBlock_advance_ci_co(u8.prefix2,carry_set_0.GetCarry(0),0);
    489                         u8anyscope = u8.scope22;
    490                         if (bitblock::any(simd_or(simd_or(u8.prefix3,u8.prefix4),carry_set_0.CarryRange(1,9))))
    491                         {
    492                                 BitBlock xE0 = simd_andc(u8.prefix3,temp36);
    493                                 BitBlock xED = simd_and(u8.prefix3,temp20);
    494                                 BitBlock xF0 = simd_andc(u8.prefix4,temp36);
    495                                 BitBlock temp72 = simd_andc(temp4,temp13);
    496                                 BitBlock xF4 = simd_and(u8.prefix4,temp72);
     694                        temp66_v70 = simd_andc(u8.prefix,temp49_v49);
     695                        temp67_v71 = simd_or(temp21_v20,basis_bits.bit_6);
     696                        temp68_v72 = simd_andc(temp66_v70,temp67_v71);
     697                        temp69_v73 = simd_and(basis_bits.bit_5,temp13_v12);
     698                        temp70_v74 = simd_or(basis_bits.bit_4,temp69_v73);
     699                        temp71_v75 = simd_and(u8.prefix4,temp70_v74);
     700                        u8.badprefix = simd_or(temp68_v72,temp71_v75);
     701                        u8_error_v67 = u8.badprefix;
     702                        carry_set_0.getCarry(0) = bitblock::srli<127>(pablo_blk_Advance(u8.prefix2,carry_set_0.getCarry(0),_temp0_v76));
     703                        u8.scope22 = _temp0_v76;
     704                        u8anyscope_v69 = u8.scope22;
     705                        if (bitblock::any(simd_or(simd_or(u8.prefix3,u8.prefix4),carry_set_0.carryRange(1,9))))
     706                        {
     707                                xE0_v77 = simd_andc(u8.prefix3,temp36_v35);
     708                                xED_v78 = simd_and(u8.prefix3,temp20_v19);
     709                                xF0_v79 = simd_andc(u8.prefix4,temp36_v35);
     710                                temp72_v80 = simd_andc(temp4_v3,temp13_v12);
     711                                xF4_v81 = simd_and(u8.prefix4,temp72_v80);
    497712                                u8.xA0_xBF = simd_and(u8.suffix,basis_bits.bit_2);
    498713                                u8.x80_x9F = simd_andc(u8.suffix,basis_bits.bit_2);
    499                                 u8.x90_xBF = simd_and(u8.suffix,temp49);
    500                                 u8.x80_x8F = simd_andc(u8.suffix,temp49);
    501                                 BitBlock xEF = simd_and(u8.prefix3,temp23);
    502                                 BitBlock temp73 = simd_and(u8.suffix,temp7);
    503                                 u8.xBF = simd_and(temp73,temp23);
    504                                 u8.xBE = simd_and(temp73,temp15);
    505                                 u8.scope32 = carry_set_0.BitBlock_advance_ci_co(u8.prefix3,carry_set_0.GetCarry(1),1);
    506                                 u8.scope33 = carry_set_0.BitBlock_advance_ci_co(u8.scope32,carry_set_0.GetCarry(2),2);
    507                                 u8.scope42 = carry_set_0.BitBlock_advance_ci_co(u8.prefix4,carry_set_0.GetCarry(3),3);
    508                                 u8.scope43 = carry_set_0.BitBlock_advance_ci_co(u8.scope42,carry_set_0.GetCarry(4),4);
    509                                 u8.scope44 = carry_set_0.BitBlock_advance_ci_co(u8.scope43,carry_set_0.GetCarry(5),5);
    510                                 BitBlock E0_F0_scope = carry_set_0.BitBlock_advance_ci_co(simd_or(xE0,xF0),carry_set_0.GetCarry(6),6);
    511                                 BitBlock ED_F4_scope = carry_set_0.BitBlock_advance_ci_co(simd_or(xED,xF4),carry_set_0.GetCarry(7),7);
    512                                 u8.xE0_scope = simd_and(u8.scope32,E0_F0_scope);
    513                                 u8.xED_scope = simd_and(u8.scope32,ED_F4_scope);
    514                                 u8.xF0_scope = simd_and(u8.scope42,E0_F0_scope);
    515                                 u8.xF4_scope = simd_and(u8.scope42,ED_F4_scope);
    516                                 u8.xEF_scope = carry_set_0.BitBlock_advance_ci_co(xEF,carry_set_0.GetCarry(8),8);
    517                                 BitBlock u8lastscope = simd_or(simd_or(u8.scope22,u8.scope33),u8.scope44);
    518                                 u8anyscope = simd_or(simd_or(simd_or(u8lastscope,u8.scope32),u8.scope42),u8.scope43);
    519                                 BitBlock u8error1 = simd_and(u8.xE0_scope,u8.x80_x9F);
    520                                 BitBlock u8error2 = simd_and(u8.xED_scope,u8.xA0_xBF);
    521                                 BitBlock u8error3 = simd_and(u8.xF0_scope,u8.x80_x8F);
    522                                 BitBlock u8error4 = simd_and(u8.xF4_scope,u8.x90_xBF);
    523                                 u8_error = simd_or(u8_error,simd_or(simd_or(simd_or(u8error1,u8error2),u8error3),u8error4));
    524                                 BitBlock EF_BF_pending = carry_set_0.BitBlock_advance_ci_co(simd_and(u8.xEF_scope,u8.xBF),carry_set_0.GetCarry(9),9);
    525                                 u8_FFFE_FFFF = simd_and(EF_BF_pending,simd_or(u8.xBE,u8.xBF));
     714                                u8.x90_xBF = simd_and(u8.suffix,temp49_v49);
     715                                u8.x80_x8F = simd_andc(u8.suffix,temp49_v49);
     716                                xEF_v82 = simd_and(u8.prefix3,temp23_v22);
     717                                temp73_v83 = simd_and(u8.suffix,temp7_v6);
     718                                u8.xBF = simd_and(temp73_v83,temp23_v22);
     719                                u8.xBE = simd_and(temp73_v83,temp15_v14);
     720                                carry_set_0.getCarry(1) = bitblock::srli<127>(pablo_blk_Advance(u8.prefix3,carry_set_0.getCarry(1),_temp1_v84));
     721                                u8.scope32 = _temp1_v84;
     722                                carry_set_0.getCarry(2) = bitblock::srli<127>(pablo_blk_Advance(u8.scope32,carry_set_0.getCarry(2),_temp2_v85));
     723                                u8.scope33 = _temp2_v85;
     724                                carry_set_0.getCarry(3) = bitblock::srli<127>(pablo_blk_Advance(u8.prefix4,carry_set_0.getCarry(3),_temp3_v86));
     725                                u8.scope42 = _temp3_v86;
     726                                carry_set_0.getCarry(4) = bitblock::srli<127>(pablo_blk_Advance(u8.scope42,carry_set_0.getCarry(4),_temp4_v87));
     727                                u8.scope43 = _temp4_v87;
     728                                carry_set_0.getCarry(5) = bitblock::srli<127>(pablo_blk_Advance(u8.scope43,carry_set_0.getCarry(5),_temp5_v88));
     729                                u8.scope44 = _temp5_v88;
     730                                carry_set_0.getCarry(6) = bitblock::srli<127>(pablo_blk_Advance(simd_or(xE0_v77,xF0_v79),carry_set_0.getCarry(6),_temp6_v90));
     731                                E0_F0_scope_v89 = _temp6_v90;
     732                                carry_set_0.getCarry(7) = bitblock::srli<127>(pablo_blk_Advance(simd_or(xED_v78,xF4_v81),carry_set_0.getCarry(7),_temp7_v92));
     733                                ED_F4_scope_v91 = _temp7_v92;
     734                                u8.xE0_scope = simd_and(u8.scope32,E0_F0_scope_v89);
     735                                u8.xED_scope = simd_and(u8.scope32,ED_F4_scope_v91);
     736                                u8.xF0_scope = simd_and(u8.scope42,E0_F0_scope_v89);
     737                                u8.xF4_scope = simd_and(u8.scope42,ED_F4_scope_v91);
     738                                carry_set_0.getCarry(8) = bitblock::srli<127>(pablo_blk_Advance(xEF_v82,carry_set_0.getCarry(8),_temp8_v93));
     739                                u8.xEF_scope = _temp8_v93;
     740                                u8lastscope_v94 = simd_or(simd_or(u8.scope22,u8.scope33),u8.scope44);
     741                                u8anyscope_v69 = simd_or(simd_or(simd_or(u8lastscope_v94,u8.scope32),u8.scope42),u8.scope43);
     742                                u8error1_v95 = simd_and(u8.xE0_scope,u8.x80_x9F);
     743                                u8error2_v96 = simd_and(u8.xED_scope,u8.xA0_xBF);
     744                                u8error3_v97 = simd_and(u8.xF0_scope,u8.x80_x8F);
     745                                u8error4_v98 = simd_and(u8.xF4_scope,u8.x90_xBF);
     746                                u8_error_v67 = simd_or(u8_error_v67,simd_or(simd_or(simd_or(u8error1_v95,u8error2_v96),u8error3_v97),u8error4_v98));
     747                                carry_set_0.getCarry(9) = bitblock::srli<127>(pablo_blk_Advance(simd_and(u8.xEF_scope,u8.xBF),carry_set_0.getCarry(9),_temp9_v100));
     748                                EF_BF_pending_v99 = _temp9_v100;
     749                                u8_FFFE_FFFF_v68 = simd_and(EF_BF_pending_v99,simd_or(u8.xBE,u8.xBF));
    526750                        }
    527751                        else
    528752                        {
    529                                 carry_set_0.CarryDequeueEnqueue(1,9);
    530                         }
    531                         BitBlock u8mismatch = simd_xor(u8anyscope,u8.suffix);
    532                         if (bitblock::any(simd_or(simd_or(u8_error,u8mismatch),u8_FFFE_FFFF)))
    533                         {
    534                                 assert_0_error("UTF-8 error found",simd_or(simd_or(u8_error,u8mismatch),u8_FFFE_FFFF));
     753                                carry_set_0.carryDequeueEnqueue(1,9);
     754                        }
     755                        u8mismatch_v101 = simd_xor(u8anyscope_v69,u8.suffix);
     756                        if (bitblock::any(simd_or(simd_or(u8_error_v67,u8mismatch_v101),u8_FFFE_FFFF_v68)))
     757                        {
     758                                assert_0_error(simd_or(simd_or(u8_error_v67,u8mismatch_v101),u8_FFFE_FFFF_v68),"UTF-8 error found");
    535759                        }
    536760                }
    537761                else
    538762                {
    539                         carry_set_0.CarryDequeueEnqueue(0,10);
     763                        carry_set_0.carryDequeueEnqueue(0,10);
    540764                }
    541765        }
     
    548772        Parse_CtCDPI()
    549773        {
    550                 carry_set_0.SetCarry(carry_set_0.CarryFlip(carry_set_0.GetCarry(2)),2);
    551                 }
    552                  
    553                 IDISA_INLINE void do_block(struct Lex & lex,struct Marker & marker,struct CtCDPI_Callouts & ctCDPI_Callouts,struct Check_streams & check_streams)
    554                 {
    555                         ctCDPI_Callouts.Ct_starts = simd<1>::constant<0>();
    556                         ctCDPI_Callouts.Ct_ends = simd<1>::constant<0>();
    557                         ctCDPI_Callouts.CD_starts = simd<1>::constant<0>();
    558                         ctCDPI_Callouts.CD_ends = simd<1>::constant<0>();
    559                         ctCDPI_Callouts.PI_starts = simd<1>::constant<0>();
    560                         ctCDPI_Callouts.PI_name_starts = simd<1>::constant<0>();
    561                         ctCDPI_Callouts.PI_name_ends = simd<1>::constant<0>();
    562                         ctCDPI_Callouts.PI_ends = simd<1>::constant<0>();
    563                         BitBlock CtCDPI_starts = simd<1>::constant<0>();
    564                         BitBlock CtCDPI_ends = simd<1>::constant<0>();
    565                         BitBlock ctCDPI_mask = simd<1>::constant<0>();
    566                         BitBlock v = simd_or(lex.LAngle,lex.Hyphen);
    567                         BitBlock w = simd_or(lex.Hyphen,lex.QMark);
    568                         BitBlock v1 = carry_set_0.BitBlock_advance_n_<1>(v,carry_set_0.Pending64(0),0);
    569                         BitBlock w1 = carry_set_0.BitBlock_advance_n_<1>(w,carry_set_0.Pending64(1),1);
    570                         BitBlock LAngle_scope = simd_andc(v1,w1);
    571                         BitBlock PI_opener = simd_and(LAngle_scope,lex.QMark);
    572                         BitBlock CtCD_opener = simd_and(LAngle_scope,lex.Exclam);
    573                         BitBlock CtCDPI_opener = simd_or(PI_opener,CtCD_opener);
    574                         BitBlock CD_closer = simd<1>::constant<0>();
    575                         BitBlock DoubleHyphen = simd_and(simd_and(v1,w1),lex.Hyphen);
    576                         if (bitblock::any(simd_or(lex.RBracket,carry_set_0.CarryRange(0,2))))
    577                         {
    578                                 BitBlock DoubleRBracket = simd_and(carry_set_0.BitBlock_advance_ci_co(lex.RBracket,carry_set_0.GetCarry(0),0),lex.RBracket);
    579                                 CD_closer = simd_and(carry_set_0.BitBlock_advance_ci_co(DoubleRBracket,carry_set_0.GetCarry(1),1),lex.RAngle);
     774                carry_set_0.setCarry(carry_set_0.carryFlip(2),2);
     775        }
     776       
     777        IDISA_INLINE void do_block(struct Lex & lex,struct Marker & marker,struct CtCDPI_Callouts & ctCDPI_Callouts,struct Check_streams & check_streams)
     778        {
     779                BitBlock CtCDPI_starts_v0;
     780                BitBlock CtCDPI_ends_v1;
     781                BitBlock ctCDPI_mask_v2;
     782                BitBlock v_v3;
     783                BitBlock w_v4;
     784                BitBlock v1_v5;
     785                BitBlock _temp0_v6;
     786                BitBlock w1_v7;
     787                BitBlock _temp1_v8;
     788                BitBlock LAngle_scope_v9;
     789                BitBlock PI_opener_v10;
     790                BitBlock CtCD_opener_v11;
     791                BitBlock CtCDPI_opener_v12;
     792                BitBlock CD_closer_v13;
     793                BitBlock DoubleHyphen_v14;
     794                BitBlock DoubleRBracket_v15;
     795                BitBlock _temp2_v16;
     796                BitBlock _temp3_v17;
     797                BitBlock PI_closer_v18;
     798                BitBlock CtCDPI_Cursor_v19;
     799                BitBlock _temp4_v20;
     800                BitBlock PI_Cursor_v21;
     801                BitBlock CD_Ct_Cursor_v22;
     802                BitBlock _temp5_v23;
     803                BitBlock CD_Cursor_v24;
     804                BitBlock Ct_Cursor_v25;
     805                BitBlock _temp6_v26;
     806                BitBlock PI_name_end_v27;
     807                BitBlock _temp7_v28;
     808                BitBlock PI_error_v29;
     809                BitBlock PI_noWS_v30;
     810                BitBlock _temp8_v31;
     811                BitBlock _temp9_v32;
     812                BitBlock _temp10_v33;
     813                BitBlock _temp11_v34;
     814                BitBlock Ct_error_v35;
     815                BitBlock _temp12_v36;
     816                BitBlock _temp13_v37;
     817                BitBlock _temp14_v38;
     818                BitBlock _temp15_v39;
     819                BitBlock _temp16_v40;
     820                BitBlock _temp17_v41;
     821                BitBlock PI_Cursor_v42;
     822                BitBlock CD_Ct_Cursor_v43;
     823                BitBlock _temp5_v44;
     824                BitBlock CD_Cursor_v45;
     825                BitBlock Ct_Cursor_v46;
     826                BitBlock _temp6_v47;
     827                BitBlock PI_name_end_v48;
     828                BitBlock _temp7_v49;
     829                BitBlock PI_error_v50;
     830                BitBlock PI_noWS_v51;
     831                BitBlock _temp8_v52;
     832                BitBlock _temp9_v53;
     833                BitBlock _temp10_v54;
     834                BitBlock _temp11_v55;
     835                BitBlock Ct_error_v56;
     836                BitBlock _temp12_v57;
     837                BitBlock _temp13_v58;
     838                BitBlock _temp14_v59;
     839                BitBlock _temp15_v60;
     840                BitBlock _temp16_v61;
     841                BitBlock _temp17_v62;
     842                BitBlock _temp18_v63;
     843                ctCDPI_Callouts.Ct_starts = simd<1>::constant<0>();
     844                ctCDPI_Callouts.Ct_ends = simd<1>::constant<0>();
     845                ctCDPI_Callouts.CD_starts = simd<1>::constant<0>();
     846                ctCDPI_Callouts.CD_ends = simd<1>::constant<0>();
     847                ctCDPI_Callouts.PI_starts = simd<1>::constant<0>();
     848                ctCDPI_Callouts.PI_name_starts = simd<1>::constant<0>();
     849                ctCDPI_Callouts.PI_name_ends = simd<1>::constant<0>();
     850                ctCDPI_Callouts.PI_ends = simd<1>::constant<0>();
     851                CtCDPI_starts_v0 = simd<1>::constant<0>();
     852                CtCDPI_ends_v1 = simd<1>::constant<0>();
     853                ctCDPI_mask_v2 = simd<1>::constant<0>();
     854                v_v3 = simd_or(lex.LAngle,lex.Hyphen);
     855                w_v4 = simd_or(lex.Hyphen,lex.QMark);
     856                carry_set_0.getPending64(0) = bitblock::srli<127>(pablo_blk_Advance_n_<1>(v_v3,carry_set_0.getPending64(0),_temp0_v6));
     857                v1_v5 = _temp0_v6;
     858                carry_set_0.getPending64(1) = bitblock::srli<127>(pablo_blk_Advance_n_<1>(w_v4,carry_set_0.getPending64(1),_temp1_v8));
     859                w1_v7 = _temp1_v8;
     860                LAngle_scope_v9 = simd_andc(v1_v5,w1_v7);
     861                PI_opener_v10 = simd_and(LAngle_scope_v9,lex.QMark);
     862                CtCD_opener_v11 = simd_and(LAngle_scope_v9,lex.Exclam);
     863                CtCDPI_opener_v12 = simd_or(PI_opener_v10,CtCD_opener_v11);
     864                CD_closer_v13 = simd<1>::constant<0>();
     865                DoubleHyphen_v14 = simd_and(simd_and(v1_v5,w1_v7),lex.Hyphen);
     866                if (bitblock::any(simd_or(lex.RBracket,carry_set_0.carryRange(0,2))))
     867                {
     868                        carry_set_0.getCarry(0) = bitblock::srli<127>(pablo_blk_Advance(lex.RBracket,carry_set_0.getCarry(0),_temp2_v16));
     869                        DoubleRBracket_v15 = simd_and(_temp2_v16,lex.RBracket);
     870                        carry_set_0.getCarry(1) = bitblock::srli<127>(pablo_blk_Advance(DoubleRBracket_v15,carry_set_0.getCarry(1),_temp3_v17));
     871                        CD_closer_v13 = simd_and(_temp3_v17,lex.RAngle);
     872                }
     873                else
     874                {
     875                        carry_set_0.carryDequeueEnqueue(0,2);
     876                }
     877                PI_closer_v18 = simd_and(simd_andc(w1_v7,v1_v5),lex.RAngle);
     878                carry_set_0.getCarry(2) = bitblock::srli<127>(pablo_blk_ScanToFirst(CtCDPI_opener_v12,carry_set_0.getCarry(2),_temp4_v20));
     879                CtCDPI_Cursor_v19 = _temp4_v20;
     880                if (bitblock::any(simd_or(CtCDPI_Cursor_v19,carry_set_0.carryRange(3,13))))
     881                {
     882                        CtCDPI_starts_v0 = simd_or(CtCDPI_starts_v0,CtCDPI_Cursor_v19);
     883                        PI_Cursor_v21 = simd_and(CtCDPI_Cursor_v19,PI_opener_v10);
     884                        carry_set_0.getCarry(3) = bitblock::srli<127>(pablo_blk_Advance(simd_andc(CtCDPI_Cursor_v19,PI_Cursor_v21),carry_set_0.getCarry(3),_temp5_v23));
     885                        CD_Ct_Cursor_v22 = _temp5_v23;
     886                        CD_Cursor_v24 = simd_and(CD_Ct_Cursor_v22,lex.LBracket);
     887                        Ct_Cursor_v25 = simd_and(CD_Ct_Cursor_v22,lex.Hyphen);
     888                        if (bitblock::any(simd_or(PI_Cursor_v21,carry_set_0.carryRange(4,4))))
     889                        {
     890                                ctCDPI_Callouts.PI_starts = simd_or(ctCDPI_Callouts.PI_starts,PI_Cursor_v21);
     891                                carry_set_0.getCarry(4) = bitblock::srli<127>(pablo_blk_Advance(PI_Cursor_v21,carry_set_0.getCarry(4),_temp6_v26));
     892                                PI_Cursor_v21 = _temp6_v26;
     893                                ctCDPI_Callouts.PI_name_starts = simd_or(ctCDPI_Callouts.PI_name_starts,PI_Cursor_v21);
     894                                carry_set_0.getCarry(5) = bitblock::srli<127>(pablo_blk_ScanThru(PI_Cursor_v21,lex.NameScan,carry_set_0.getCarry(5),_temp7_v28));
     895                                PI_name_end_v27 = _temp7_v28;
     896                                PI_error_v29 = simd_and(PI_Cursor_v21,PI_name_end_v27);
     897                                PI_noWS_v30 = simd_andc(PI_name_end_v27,lex.WS);
     898                                carry_set_0.getCarry(6) = bitblock::srli<127>(pablo_blk_Advance(PI_noWS_v30,carry_set_0.getCarry(6),_temp8_v31));
     899                                PI_error_v29 = simd_or(PI_error_v29,simd_or(simd_andc(PI_noWS_v30,lex.QMark),simd_andc(_temp8_v31,PI_closer_v18)));
     900                                if (bitblock::any(PI_error_v29))
     901                                {
     902                                        assert_0_error(PI_error_v29,"Error in PI syntax");
     903                                }
     904                                ctCDPI_Callouts.PI_name_ends = simd_or(ctCDPI_Callouts.PI_name_ends,PI_name_end_v27);
     905                                carry_set_0.getCarry(7) = bitblock::srli<127>(pablo_blk_ScanThru(PI_name_end_v27,simd_not(PI_closer_v18),carry_set_0.getCarry(7),_temp9_v32));
     906                                PI_Cursor_v21 = _temp9_v32;
     907                                ctCDPI_Callouts.PI_ends = simd_or(ctCDPI_Callouts.PI_ends,PI_Cursor_v21);
     908                                CtCDPI_ends_v1 = simd_or(CtCDPI_ends_v1,PI_Cursor_v21);
    580909                        }
    581910                        else
    582911                        {
    583                                 carry_set_0.CarryDequeueEnqueue(0,2);
    584                         }
    585                         BitBlock PI_closer = simd_and(simd_andc(w1,v1),lex.RAngle);
    586                         BitBlock CtCDPI_Cursor = carry_set_0.BitBlock_scantofirst(CtCDPI_opener,carry_set_0.GetCarry(2),2);
    587                         if (bitblock::any(simd_or(CtCDPI_Cursor,carry_set_0.CarryRange(3,13))))
    588                         {
    589                                 CtCDPI_starts = simd_or(CtCDPI_starts,CtCDPI_Cursor);
    590                                 BitBlock PI_Cursor = simd_and(CtCDPI_Cursor,PI_opener);
    591                                 BitBlock CD_Ct_Cursor = carry_set_0.BitBlock_advance_ci_co(simd_andc(CtCDPI_Cursor,PI_Cursor),carry_set_0.GetCarry(3),3);
    592                                 BitBlock CD_Cursor = simd_and(CD_Ct_Cursor,lex.LBracket);
    593                                 BitBlock Ct_Cursor = simd_and(CD_Ct_Cursor,lex.Hyphen);
    594                                 if (bitblock::any(simd_or(PI_Cursor,carry_set_0.CarryRange(4,4))))
    595                                 {
    596                                         ctCDPI_Callouts.PI_starts = simd_or(ctCDPI_Callouts.PI_starts,PI_Cursor);
    597                                         PI_Cursor = carry_set_0.BitBlock_advance_ci_co(PI_Cursor,carry_set_0.GetCarry(4),4);
    598                                         ctCDPI_Callouts.PI_name_starts = simd_or(ctCDPI_Callouts.PI_name_starts,PI_Cursor);
    599                                         BitBlock PI_name_end = carry_set_0.BitBlock_scanthru_ci_co(PI_Cursor,lex.NameScan,carry_set_0.GetCarry(5),5);
    600                                         BitBlock PI_error = simd_and(PI_Cursor,PI_name_end);
    601                                         BitBlock PI_noWS = simd_andc(PI_name_end,lex.WS);
    602                                         PI_error = simd_or(PI_error,simd_or(simd_andc(PI_noWS,lex.QMark),simd_andc(carry_set_0.BitBlock_advance_ci_co(PI_noWS,carry_set_0.GetCarry(6),6),PI_closer)));
    603                                         if (bitblock::any(PI_error))
     912                                carry_set_0.carryDequeueEnqueue(4,4);
     913                        }
     914                        if (bitblock::any(simd_or(CD_Cursor_v24,carry_set_0.carryRange(8,1))))
     915                        {
     916                                ctCDPI_Callouts.CD_starts = simd_or(ctCDPI_Callouts.CD_starts,CD_Cursor_v24);
     917                                carry_set_0.getCarry(8) = bitblock::srli<127>(pablo_blk_ScanThru(CD_Cursor_v24,simd_not(CD_closer_v13),carry_set_0.getCarry(8),_temp10_v33));
     918                                CD_Cursor_v24 = _temp10_v33;
     919                                ctCDPI_Callouts.CD_ends = simd_or(ctCDPI_Callouts.CD_ends,CD_Cursor_v24);
     920                                CtCDPI_ends_v1 = simd_or(CtCDPI_ends_v1,CD_Cursor_v24);
     921                        }
     922                        else
     923                        {
     924                                carry_set_0.carryDequeueEnqueue(8,1);
     925                        }
     926                        if (bitblock::any(simd_or(Ct_Cursor_v25,carry_set_0.carryRange(9,5))))
     927                        {
     928                                ctCDPI_Callouts.Ct_starts = simd_or(ctCDPI_Callouts.Ct_starts,Ct_Cursor_v25);
     929                                carry_set_0.getCarry(9) = bitblock::srli<127>(pablo_blk_Advance(Ct_Cursor_v25,carry_set_0.getCarry(9),_temp11_v34));
     930                                Ct_Cursor_v25 = _temp11_v34;
     931                                Ct_error_v35 = simd_andc(Ct_Cursor_v25,lex.Hyphen);
     932                                carry_set_0.getCarry(10) = bitblock::srli<127>(pablo_blk_Advance(Ct_Cursor_v25,carry_set_0.getCarry(10),_temp12_v36));
     933                                carry_set_0.getCarry(11) = bitblock::srli<127>(pablo_blk_Advance(_temp12_v36,carry_set_0.getCarry(11),_temp13_v37));
     934                                Ct_Cursor_v25 = _temp13_v37;
     935                                carry_set_0.getCarry(12) = bitblock::srli<127>(pablo_blk_ScanThru(Ct_Cursor_v25,simd_not(DoubleHyphen_v14),carry_set_0.getCarry(12),_temp14_v38));
     936                                carry_set_0.getCarry(13) = bitblock::srli<127>(pablo_blk_Advance(_temp14_v38,carry_set_0.getCarry(13),_temp15_v39));
     937                                Ct_Cursor_v25 = _temp15_v39;
     938                                if (bitblock::any(simd_or(Ct_error_v35,simd_andc(Ct_Cursor_v25,lex.RAngle))))
     939                                {
     940                                        assert_0_error(simd_or(Ct_error_v35,simd_andc(Ct_Cursor_v25,lex.RAngle)),"Error in comment syntax");
     941                                }
     942                                ctCDPI_Callouts.Ct_ends = simd_or(ctCDPI_Callouts.Ct_ends,Ct_Cursor_v25);
     943                                CtCDPI_ends_v1 = simd_or(CtCDPI_ends_v1,Ct_Cursor_v25);
     944                        }
     945                        else
     946                        {
     947                                carry_set_0.carryDequeueEnqueue(9,5);
     948                        }
     949                        CtCDPI_Cursor_v19 = simd_or(simd_or(PI_Cursor_v21,CD_Cursor_v24),Ct_Cursor_v25);
     950                        carry_set_0.getCarry(14) = bitblock::srli<127>(pablo_blk_InclusiveSpan(CtCDPI_starts_v0,CtCDPI_ends_v1,carry_set_0.getCarry(14),_temp16_v40));
     951                        ctCDPI_mask_v2 = _temp16_v40;
     952                        if (bitblock::any(simd<1>::constant<0>()))
     953                        {
     954                                assert_0_error(simd<1>::constant<0>(),"Error in comment, CDATA or processing instruction syntax");
     955                        }
     956                        carry_set_0.getCarry(15) = bitblock::srli<127>(pablo_blk_ScanThru(CtCDPI_Cursor_v19,simd_not(CtCDPI_opener_v12),carry_set_0.getCarry(15),_temp17_v41));
     957                        CtCDPI_Cursor_v19 = _temp17_v41;
     958                        while (bitblock::any(CtCDPI_Cursor_v19))
     959                        {
     960                                CarryDeclare(carry_set_1,13,0);
     961                                CtCDPI_starts_v0 = simd_or(CtCDPI_starts_v0,CtCDPI_Cursor_v19);
     962                                PI_Cursor_v42 = simd_and(CtCDPI_Cursor_v19,PI_opener_v10);
     963                                carry_set_1.getCarry(0) = bitblock::srli<127>(pablo_blk_Advance(simd_andc(CtCDPI_Cursor_v19,PI_Cursor_v42),carry_set_1.getCarry(0),_temp5_v44));
     964                                CD_Ct_Cursor_v43 = _temp5_v44;
     965                                CD_Cursor_v45 = simd_and(CD_Ct_Cursor_v43,lex.LBracket);
     966                                Ct_Cursor_v46 = simd_and(CD_Ct_Cursor_v43,lex.Hyphen);
     967                                if (bitblock::any(PI_Cursor_v42))
     968                                {
     969                                        ctCDPI_Callouts.PI_starts = simd_or(ctCDPI_Callouts.PI_starts,PI_Cursor_v42);
     970                                        carry_set_1.getCarry(1) = bitblock::srli<127>(pablo_blk_Advance(PI_Cursor_v42,carry_set_1.getCarry(1),_temp6_v47));
     971                                        PI_Cursor_v42 = _temp6_v47;
     972                                        ctCDPI_Callouts.PI_name_starts = simd_or(ctCDPI_Callouts.PI_name_starts,PI_Cursor_v42);
     973                                        carry_set_1.getCarry(2) = bitblock::srli<127>(pablo_blk_ScanThru(PI_Cursor_v42,lex.NameScan,carry_set_1.getCarry(2),_temp7_v49));
     974                                        PI_name_end_v48 = _temp7_v49;
     975                                        PI_error_v50 = simd_and(PI_Cursor_v42,PI_name_end_v48);
     976                                        PI_noWS_v51 = simd_andc(PI_name_end_v48,lex.WS);
     977                                        carry_set_1.getCarry(3) = bitblock::srli<127>(pablo_blk_Advance(PI_noWS_v51,carry_set_1.getCarry(3),_temp8_v52));
     978                                        PI_error_v50 = simd_or(PI_error_v50,simd_or(simd_andc(PI_noWS_v51,lex.QMark),simd_andc(_temp8_v52,PI_closer_v18)));
     979                                        if (bitblock::any(PI_error_v50))
    604980                                        {
    605                                                 assert_0_error("Error in PI syntax",PI_error);
     981                                                assert_0_error(PI_error_v50,"Error in PI syntax");
    606982                                        }
    607                                         ctCDPI_Callouts.PI_name_ends = simd_or(ctCDPI_Callouts.PI_name_ends,PI_name_end);
    608                                         PI_Cursor = carry_set_0.BitBlock_scanthru_ci_co(PI_name_end,simd_not(PI_closer),carry_set_0.GetCarry(7),7);
    609                                         ctCDPI_Callouts.PI_ends = simd_or(ctCDPI_Callouts.PI_ends,PI_Cursor);
    610                                         CtCDPI_ends = simd_or(CtCDPI_ends,PI_Cursor);
    611                                 }
    612                                 else
    613                                 {
    614                                         carry_set_0.CarryDequeueEnqueue(4,4);
    615                                 }
    616                                 if (bitblock::any(simd_or(CD_Cursor,carry_set_0.CarryRange(8,1))))
    617                                 {
    618                                         ctCDPI_Callouts.CD_starts = simd_or(ctCDPI_Callouts.CD_starts,CD_Cursor);
    619                                         CD_Cursor = carry_set_0.BitBlock_scanthru_ci_co(CD_Cursor,simd_not(CD_closer),carry_set_0.GetCarry(8),8);
    620                                         ctCDPI_Callouts.CD_ends = simd_or(ctCDPI_Callouts.CD_ends,CD_Cursor);
    621                                         CtCDPI_ends = simd_or(CtCDPI_ends,CD_Cursor);
    622                                 }
    623                                 else
    624                                 {
    625                                         carry_set_0.CarryDequeueEnqueue(8,1);
    626                                 }
    627                                 if (bitblock::any(simd_or(Ct_Cursor,carry_set_0.CarryRange(9,5))))
    628                                 {
    629                                         ctCDPI_Callouts.Ct_starts = simd_or(ctCDPI_Callouts.Ct_starts,Ct_Cursor);
    630                                         Ct_Cursor = carry_set_0.BitBlock_advance_ci_co(Ct_Cursor,carry_set_0.GetCarry(9),9);
    631                                         BitBlock Ct_error = simd_andc(Ct_Cursor,lex.Hyphen);
    632                                         Ct_Cursor = carry_set_0.BitBlock_advance_ci_co(carry_set_0.BitBlock_advance_ci_co(Ct_Cursor,carry_set_0.GetCarry(10),10),carry_set_0.GetCarry(11),11);
    633                                         Ct_Cursor = carry_set_0.BitBlock_advance_ci_co(carry_set_0.BitBlock_scanthru_ci_co(Ct_Cursor,simd_not(DoubleHyphen),carry_set_0.GetCarry(12),12),carry_set_0.GetCarry(13),13);
    634                                         if (bitblock::any(simd_or(Ct_error,simd_andc(Ct_Cursor,lex.RAngle))))
     983                                        ctCDPI_Callouts.PI_name_ends = simd_or(ctCDPI_Callouts.PI_name_ends,PI_name_end_v48);
     984                                        carry_set_1.getCarry(4) = bitblock::srli<127>(pablo_blk_ScanThru(PI_name_end_v48,simd_not(PI_closer_v18),carry_set_1.getCarry(4),_temp9_v53));
     985                                        PI_Cursor_v42 = _temp9_v53;
     986                                        ctCDPI_Callouts.PI_ends = simd_or(ctCDPI_Callouts.PI_ends,PI_Cursor_v42);
     987                                        CtCDPI_ends_v1 = simd_or(CtCDPI_ends_v1,PI_Cursor_v42);
     988                                }
     989                                if (bitblock::any(CD_Cursor_v45))
     990                                {
     991                                        ctCDPI_Callouts.CD_starts = simd_or(ctCDPI_Callouts.CD_starts,CD_Cursor_v45);
     992                                        carry_set_1.getCarry(5) = bitblock::srli<127>(pablo_blk_ScanThru(CD_Cursor_v45,simd_not(CD_closer_v13),carry_set_1.getCarry(5),_temp10_v54));
     993                                        CD_Cursor_v45 = _temp10_v54;
     994                                        ctCDPI_Callouts.CD_ends = simd_or(ctCDPI_Callouts.CD_ends,CD_Cursor_v45);
     995                                        CtCDPI_ends_v1 = simd_or(CtCDPI_ends_v1,CD_Cursor_v45);
     996                                }
     997                                if (bitblock::any(Ct_Cursor_v46))
     998                                {
     999                                        ctCDPI_Callouts.Ct_starts = simd_or(ctCDPI_Callouts.Ct_starts,Ct_Cursor_v46);
     1000                                        carry_set_1.getCarry(6) = bitblock::srli<127>(pablo_blk_Advance(Ct_Cursor_v46,carry_set_1.getCarry(6),_temp11_v55));
     1001                                        Ct_Cursor_v46 = _temp11_v55;
     1002                                        Ct_error_v56 = simd_andc(Ct_Cursor_v46,lex.Hyphen);
     1003                                        carry_set_1.getCarry(7) = bitblock::srli<127>(pablo_blk_Advance(Ct_Cursor_v46,carry_set_1.getCarry(7),_temp12_v57));
     1004                                        carry_set_1.getCarry(8) = bitblock::srli<127>(pablo_blk_Advance(_temp12_v57,carry_set_1.getCarry(8),_temp13_v58));
     1005                                        Ct_Cursor_v46 = _temp13_v58;
     1006                                        carry_set_1.getCarry(9) = bitblock::srli<127>(pablo_blk_ScanThru(Ct_Cursor_v46,simd_not(DoubleHyphen_v14),carry_set_1.getCarry(9),_temp14_v59));
     1007                                        carry_set_1.getCarry(10) = bitblock::srli<127>(pablo_blk_Advance(_temp14_v59,carry_set_1.getCarry(10),_temp15_v60));
     1008                                        Ct_Cursor_v46 = _temp15_v60;
     1009                                        if (bitblock::any(simd_or(Ct_error_v56,simd_andc(Ct_Cursor_v46,lex.RAngle))))
    6351010                                        {
    636                                                 assert_0_error("Error in comment syntax",simd_or(Ct_error,simd_andc(Ct_Cursor,lex.RAngle)));
     1011                                                assert_0_error(simd_or(Ct_error_v56,simd_andc(Ct_Cursor_v46,lex.RAngle)),"Error in comment syntax");
    6371012                                        }
    638                                         ctCDPI_Callouts.Ct_ends = simd_or(ctCDPI_Callouts.Ct_ends,Ct_Cursor);
    639                                         CtCDPI_ends = simd_or(CtCDPI_ends,Ct_Cursor);
    640                                 }
    641                                 else
    642                                 {
    643                                         carry_set_0.CarryDequeueEnqueue(9,5);
    644                                 }
    645                                 CtCDPI_Cursor = simd_or(simd_or(PI_Cursor,CD_Cursor),Ct_Cursor);
    646                                 ctCDPI_mask = carry_set_0.BitBlock_inclusive_span(CtCDPI_starts,CtCDPI_ends,carry_set_0.GetCarry(14),14);
     1013                                        ctCDPI_Callouts.Ct_ends = simd_or(ctCDPI_Callouts.Ct_ends,Ct_Cursor_v46);
     1014                                        CtCDPI_ends_v1 = simd_or(CtCDPI_ends_v1,Ct_Cursor_v46);
     1015                                }
     1016                                CtCDPI_Cursor_v19 = simd_or(simd_or(PI_Cursor_v42,CD_Cursor_v45),Ct_Cursor_v46);
     1017                                carry_set_1.getCarry(11) = bitblock::srli<127>(pablo_blk_InclusiveSpan(CtCDPI_starts_v0,CtCDPI_ends_v1,carry_set_1.getCarry(11),_temp16_v61));
     1018                                ctCDPI_mask_v2 = _temp16_v61;
    6471019                                if (bitblock::any(simd<1>::constant<0>()))
    6481020                                {
    649                                         assert_0_error("Error in comment, CDATA or processing instruction syntax",simd<1>::constant<0>());
    650                                 }
    651                                 CtCDPI_Cursor = carry_set_0.BitBlock_scanthru_ci_co(CtCDPI_Cursor,simd_not(CtCDPI_opener),carry_set_0.GetCarry(15),15);
    652                                 while (bitblock::any(CtCDPI_Cursor))
    653                                 {
    654                                         CarryDeclare(carry_set_1,13,0);
    655                                         CtCDPI_starts = simd_or(CtCDPI_starts,CtCDPI_Cursor);
    656                                         BitBlock PI_Cursor = simd_and(CtCDPI_Cursor,PI_opener);
    657                                         BitBlock CD_Ct_Cursor = carry_set_1.BitBlock_advance_ci_co(simd_andc(CtCDPI_Cursor,PI_Cursor),simd<1>::constant<0>(),0);
    658                                         BitBlock CD_Cursor = simd_and(CD_Ct_Cursor,lex.LBracket);
    659                                         BitBlock Ct_Cursor = simd_and(CD_Ct_Cursor,lex.Hyphen);
    660                                         if (bitblock::any(PI_Cursor))
     1021                                        assert_0_error(simd<1>::constant<0>(),"Error in comment, CDATA or processing instruction syntax");
     1022                                }
     1023                                carry_set_1.getCarry(12) = bitblock::srli<127>(pablo_blk_ScanThru(CtCDPI_Cursor_v19,simd_not(CtCDPI_opener_v12),carry_set_1.getCarry(12),_temp17_v62));
     1024                                CtCDPI_Cursor_v19 = _temp17_v62;
     1025                                LocalCarryCombine(carry_set_0,carry_set_1,3,13);
     1026                        }
     1027                }
     1028                else
     1029                {
     1030                        carry_set_0.carryDequeueEnqueue(3,13);
     1031                }
     1032                carry_set_0.getCarry(16) = bitblock::srli<127>(pablo_blk_InclusiveSpan(simd_or(ctCDPI_Callouts.Ct_starts,ctCDPI_Callouts.PI_starts),simd_or(ctCDPI_Callouts.Ct_ends,ctCDPI_Callouts.PI_ends),carry_set_0.getCarry(16),_temp18_v63));
     1033                check_streams.misc_mask = simd_and(simd_or(simd_or(simd_or(lex.WS,lex.LAngle),_temp18_v63),CtCDPI_starts_v0),EOF_mask);
     1034                marker.LAngle_scope = simd_andc(LAngle_scope_v9,ctCDPI_mask_v2);
     1035                marker.Ref_opener = simd_andc(lex.RefStart,ctCDPI_mask_v2);
     1036                marker.CD_closer = simd_andc(CD_closer_v13,ctCDPI_mask_v2);
     1037                carry_set_0.carryAdjust(17);
     1038        }
     1039       
     1040        void do_final_block(struct Lex & lex,struct Marker & marker,struct CtCDPI_Callouts & ctCDPI_Callouts,struct Check_streams & check_streams,BitBlock & EOF_mask)
     1041        {
     1042                BitBlock CtCDPI_starts_v0;
     1043                BitBlock CtCDPI_ends_v1;
     1044                BitBlock ctCDPI_mask_v2;
     1045                BitBlock v_v3;
     1046                BitBlock w_v4;
     1047                BitBlock v1_v5;
     1048                BitBlock _temp0_v6;
     1049                BitBlock w1_v7;
     1050                BitBlock _temp1_v8;
     1051                BitBlock LAngle_scope_v9;
     1052                BitBlock PI_opener_v10;
     1053                BitBlock CtCD_opener_v11;
     1054                BitBlock CtCDPI_opener_v12;
     1055                BitBlock CD_closer_v13;
     1056                BitBlock DoubleHyphen_v14;
     1057                BitBlock DoubleRBracket_v15;
     1058                BitBlock _temp2_v16;
     1059                BitBlock _temp3_v17;
     1060                BitBlock PI_closer_v18;
     1061                BitBlock CtCDPI_Cursor_v19;
     1062                BitBlock _temp4_v20;
     1063                BitBlock PI_Cursor_v21;
     1064                BitBlock CD_Ct_Cursor_v22;
     1065                BitBlock _temp5_v23;
     1066                BitBlock CD_Cursor_v24;
     1067                BitBlock Ct_Cursor_v25;
     1068                BitBlock _temp6_v26;
     1069                BitBlock PI_name_end_v27;
     1070                BitBlock _temp7_v28;
     1071                BitBlock PI_error_v29;
     1072                BitBlock PI_noWS_v30;
     1073                BitBlock _temp8_v31;
     1074                BitBlock _temp9_v32;
     1075                BitBlock _temp10_v33;
     1076                BitBlock _temp11_v34;
     1077                BitBlock Ct_error_v35;
     1078                BitBlock _temp12_v36;
     1079                BitBlock _temp13_v37;
     1080                BitBlock _temp14_v38;
     1081                BitBlock _temp15_v39;
     1082                BitBlock _temp16_v40;
     1083                BitBlock _temp17_v41;
     1084                BitBlock PI_Cursor_v42;
     1085                BitBlock CD_Ct_Cursor_v43;
     1086                BitBlock _temp5_v44;
     1087                BitBlock CD_Cursor_v45;
     1088                BitBlock Ct_Cursor_v46;
     1089                BitBlock _temp6_v47;
     1090                BitBlock PI_name_end_v48;
     1091                BitBlock _temp7_v49;
     1092                BitBlock PI_error_v50;
     1093                BitBlock PI_noWS_v51;
     1094                BitBlock _temp8_v52;
     1095                BitBlock _temp9_v53;
     1096                BitBlock _temp10_v54;
     1097                BitBlock _temp11_v55;
     1098                BitBlock Ct_error_v56;
     1099                BitBlock _temp12_v57;
     1100                BitBlock _temp13_v58;
     1101                BitBlock _temp14_v59;
     1102                BitBlock _temp15_v60;
     1103                BitBlock _temp16_v61;
     1104                BitBlock _temp17_v62;
     1105                BitBlock _temp18_v63;
     1106                ctCDPI_Callouts.Ct_starts = simd<1>::constant<0>();
     1107                ctCDPI_Callouts.Ct_ends = simd<1>::constant<0>();
     1108                ctCDPI_Callouts.CD_starts = simd<1>::constant<0>();
     1109                ctCDPI_Callouts.CD_ends = simd<1>::constant<0>();
     1110                ctCDPI_Callouts.PI_starts = simd<1>::constant<0>();
     1111                ctCDPI_Callouts.PI_name_starts = simd<1>::constant<0>();
     1112                ctCDPI_Callouts.PI_name_ends = simd<1>::constant<0>();
     1113                ctCDPI_Callouts.PI_ends = simd<1>::constant<0>();
     1114                CtCDPI_starts_v0 = simd<1>::constant<0>();
     1115                CtCDPI_ends_v1 = simd<1>::constant<0>();
     1116                ctCDPI_mask_v2 = simd<1>::constant<0>();
     1117                v_v3 = simd_or(lex.LAngle,lex.Hyphen);
     1118                w_v4 = simd_or(lex.Hyphen,lex.QMark);
     1119                carry_set_0.getPending64(0) = bitblock::srli<127>(pablo_blk_Advance_n_<1>(v_v3,carry_set_0.getPending64(0),_temp0_v6));
     1120                v1_v5 = _temp0_v6;
     1121                carry_set_0.getPending64(1) = bitblock::srli<127>(pablo_blk_Advance_n_<1>(w_v4,carry_set_0.getPending64(1),_temp1_v8));
     1122                w1_v7 = _temp1_v8;
     1123                LAngle_scope_v9 = simd_andc(v1_v5,w1_v7);
     1124                PI_opener_v10 = simd_and(LAngle_scope_v9,lex.QMark);
     1125                CtCD_opener_v11 = simd_and(LAngle_scope_v9,lex.Exclam);
     1126                CtCDPI_opener_v12 = simd_or(PI_opener_v10,CtCD_opener_v11);
     1127                CD_closer_v13 = simd<1>::constant<0>();
     1128                DoubleHyphen_v14 = simd_and(simd_and(v1_v5,w1_v7),lex.Hyphen);
     1129                if (bitblock::any(simd_or(lex.RBracket,carry_set_0.carryRange(0,2))))
     1130                {
     1131                        carry_set_0.getCarry(0) = bitblock::srli<127>(pablo_blk_Advance(lex.RBracket,carry_set_0.getCarry(0),_temp2_v16));
     1132                        DoubleRBracket_v15 = simd_and(_temp2_v16,lex.RBracket);
     1133                        carry_set_0.getCarry(1) = bitblock::srli<127>(pablo_blk_Advance(DoubleRBracket_v15,carry_set_0.getCarry(1),_temp3_v17));
     1134                        CD_closer_v13 = simd_and(_temp3_v17,lex.RAngle);
     1135                }
     1136                else
     1137                {
     1138                        carry_set_0.carryDequeueEnqueue(0,2);
     1139                }
     1140                PI_closer_v18 = simd_and(simd_andc(w1_v7,v1_v5),lex.RAngle);
     1141                carry_set_0.getCarry(2) = bitblock::srli<127>(pablo_blk_ScanToFirst(CtCDPI_opener_v12,carry_set_0.getCarry(2),_temp4_v20));
     1142                CtCDPI_Cursor_v19 = _temp4_v20;
     1143                if (bitblock::any(simd_or(simd_and(CtCDPI_Cursor_v19,EOF_mask),carry_set_0.carryRange(3,13))))
     1144                {
     1145                        CtCDPI_starts_v0 = simd_or(CtCDPI_starts_v0,CtCDPI_Cursor_v19);
     1146                        PI_Cursor_v21 = simd_and(CtCDPI_Cursor_v19,PI_opener_v10);
     1147                        carry_set_0.getCarry(3) = bitblock::srli<127>(pablo_blk_Advance(simd_andc(CtCDPI_Cursor_v19,PI_Cursor_v21),carry_set_0.getCarry(3),_temp5_v23));
     1148                        CD_Ct_Cursor_v22 = _temp5_v23;
     1149                        CD_Cursor_v24 = simd_and(CD_Ct_Cursor_v22,lex.LBracket);
     1150                        Ct_Cursor_v25 = simd_and(CD_Ct_Cursor_v22,lex.Hyphen);
     1151                        if (bitblock::any(simd_or(PI_Cursor_v21,carry_set_0.carryRange(4,4))))
     1152                        {
     1153                                ctCDPI_Callouts.PI_starts = simd_or(ctCDPI_Callouts.PI_starts,PI_Cursor_v21);
     1154                                carry_set_0.getCarry(4) = bitblock::srli<127>(pablo_blk_Advance(PI_Cursor_v21,carry_set_0.getCarry(4),_temp6_v26));
     1155                                PI_Cursor_v21 = _temp6_v26;
     1156                                ctCDPI_Callouts.PI_name_starts = simd_or(ctCDPI_Callouts.PI_name_starts,PI_Cursor_v21);
     1157                                carry_set_0.getCarry(5) = bitblock::srli<127>(pablo_blk_ScanThru(PI_Cursor_v21,lex.NameScan,carry_set_0.getCarry(5),_temp7_v28));
     1158                                PI_name_end_v27 = _temp7_v28;
     1159                                PI_error_v29 = simd_and(PI_Cursor_v21,PI_name_end_v27);
     1160                                PI_noWS_v30 = simd_andc(PI_name_end_v27,lex.WS);
     1161                                carry_set_0.getCarry(6) = bitblock::srli<127>(pablo_blk_Advance(PI_noWS_v30,carry_set_0.getCarry(6),_temp8_v31));
     1162                                PI_error_v29 = simd_or(PI_error_v29,simd_or(simd_andc(PI_noWS_v30,lex.QMark),simd_andc(_temp8_v31,PI_closer_v18)));
     1163                                if (bitblock::any(PI_error_v29))
     1164                                {
     1165                                        assert_0_error(PI_error_v29,"Error in PI syntax");
     1166                                }
     1167                                ctCDPI_Callouts.PI_name_ends = simd_or(ctCDPI_Callouts.PI_name_ends,PI_name_end_v27);
     1168                                carry_set_0.getCarry(7) = bitblock::srli<127>(pablo_blk_ScanThru(PI_name_end_v27,simd_andc(EOF_mask,PI_closer_v18),carry_set_0.getCarry(7),_temp9_v32));
     1169                                PI_Cursor_v21 = _temp9_v32;
     1170                                ctCDPI_Callouts.PI_ends = simd_or(ctCDPI_Callouts.PI_ends,PI_Cursor_v21);
     1171                                CtCDPI_ends_v1 = simd_or(CtCDPI_ends_v1,PI_Cursor_v21);
     1172                        }
     1173                        else
     1174                        {
     1175                                carry_set_0.carryDequeueEnqueue(4,4);
     1176                        }
     1177                        if (bitblock::any(simd_or(CD_Cursor_v24,carry_set_0.carryRange(8,1))))
     1178                        {
     1179                                ctCDPI_Callouts.CD_starts = simd_or(ctCDPI_Callouts.CD_starts,CD_Cursor_v24);
     1180                                carry_set_0.getCarry(8) = bitblock::srli<127>(pablo_blk_ScanThru(CD_Cursor_v24,simd_andc(EOF_mask,CD_closer_v13),carry_set_0.getCarry(8),_temp10_v33));
     1181                                CD_Cursor_v24 = _temp10_v33;
     1182                                ctCDPI_Callouts.CD_ends = simd_or(ctCDPI_Callouts.CD_ends,CD_Cursor_v24);
     1183                                CtCDPI_ends_v1 = simd_or(CtCDPI_ends_v1,CD_Cursor_v24);
     1184                        }
     1185                        else
     1186                        {
     1187                                carry_set_0.carryDequeueEnqueue(8,1);
     1188                        }
     1189                        if (bitblock::any(simd_or(Ct_Cursor_v25,carry_set_0.carryRange(9,5))))
     1190                        {
     1191                                ctCDPI_Callouts.Ct_starts = simd_or(ctCDPI_Callouts.Ct_starts,Ct_Cursor_v25);
     1192                                carry_set_0.getCarry(9) = bitblock::srli<127>(pablo_blk_Advance(Ct_Cursor_v25,carry_set_0.getCarry(9),_temp11_v34));
     1193                                Ct_Cursor_v25 = _temp11_v34;
     1194                                Ct_error_v35 = simd_andc(Ct_Cursor_v25,lex.Hyphen);
     1195                                carry_set_0.getCarry(10) = bitblock::srli<127>(pablo_blk_Advance(Ct_Cursor_v25,carry_set_0.getCarry(10),_temp12_v36));
     1196                                carry_set_0.getCarry(11) = bitblock::srli<127>(pablo_blk_Advance(_temp12_v36,carry_set_0.getCarry(11),_temp13_v37));
     1197                                Ct_Cursor_v25 = _temp13_v37;
     1198                                carry_set_0.getCarry(12) = bitblock::srli<127>(pablo_blk_ScanThru(Ct_Cursor_v25,simd_andc(EOF_mask,DoubleHyphen_v14),carry_set_0.getCarry(12),_temp14_v38));
     1199                                carry_set_0.getCarry(13) = bitblock::srli<127>(pablo_blk_Advance(_temp14_v38,carry_set_0.getCarry(13),_temp15_v39));
     1200                                Ct_Cursor_v25 = _temp15_v39;
     1201                                if (bitblock::any(simd_or(Ct_error_v35,simd_andc(Ct_Cursor_v25,lex.RAngle))))
     1202                                {
     1203                                        assert_0_error(simd_or(Ct_error_v35,simd_andc(Ct_Cursor_v25,lex.RAngle)),"Error in comment syntax");
     1204                                }
     1205                                ctCDPI_Callouts.Ct_ends = simd_or(ctCDPI_Callouts.Ct_ends,Ct_Cursor_v25);
     1206                                CtCDPI_ends_v1 = simd_or(CtCDPI_ends_v1,Ct_Cursor_v25);
     1207                        }
     1208                        else
     1209                        {
     1210                                carry_set_0.carryDequeueEnqueue(9,5);
     1211                        }
     1212                        CtCDPI_Cursor_v19 = simd_or(simd_or(PI_Cursor_v21,CD_Cursor_v24),Ct_Cursor_v25);
     1213                        carry_set_0.getCarry(14) = bitblock::srli<127>(pablo_blk_InclusiveSpan(CtCDPI_starts_v0,CtCDPI_ends_v1,carry_set_0.getCarry(14),_temp16_v40));
     1214                        ctCDPI_mask_v2 = _temp16_v40;
     1215                        if (bitblock::any(simd_andc(ctCDPI_mask_v2,EOF_mask)))
     1216                        {
     1217                                assert_0_error(simd_andc(ctCDPI_mask_v2,EOF_mask),"Error in comment, CDATA or processing instruction syntax");
     1218                        }
     1219                        carry_set_0.getCarry(15) = bitblock::srli<127>(pablo_blk_ScanThru(CtCDPI_Cursor_v19,simd_andc(EOF_mask,CtCDPI_opener_v12),carry_set_0.getCarry(15),_temp17_v41));
     1220                        CtCDPI_Cursor_v19 = _temp17_v41;
     1221                        while (bitblock::any(simd_and(CtCDPI_Cursor_v19,EOF_mask)))
     1222                        {
     1223                                CarryDeclare(carry_set_1,13,0);
     1224                                CtCDPI_starts_v0 = simd_or(CtCDPI_starts_v0,CtCDPI_Cursor_v19);
     1225                                PI_Cursor_v42 = simd_and(CtCDPI_Cursor_v19,PI_opener_v10);
     1226                                carry_set_1.getCarry(0) = bitblock::srli<127>(pablo_blk_Advance(simd_andc(CtCDPI_Cursor_v19,PI_Cursor_v42),carry_set_1.getCarry(0),_temp5_v44));
     1227                                CD_Ct_Cursor_v43 = _temp5_v44;
     1228                                CD_Cursor_v45 = simd_and(CD_Ct_Cursor_v43,lex.LBracket);
     1229                                Ct_Cursor_v46 = simd_and(CD_Ct_Cursor_v43,lex.Hyphen);
     1230                                if (bitblock::any(PI_Cursor_v42))
     1231                                {
     1232                                        ctCDPI_Callouts.PI_starts = simd_or(ctCDPI_Callouts.PI_starts,PI_Cursor_v42);
     1233                                        carry_set_1.getCarry(1) = bitblock::srli<127>(pablo_blk_Advance(PI_Cursor_v42,carry_set_1.getCarry(1),_temp6_v47));
     1234                                        PI_Cursor_v42 = _temp6_v47;
     1235                                        ctCDPI_Callouts.PI_name_starts = simd_or(ctCDPI_Callouts.PI_name_starts,PI_Cursor_v42);
     1236                                        carry_set_1.getCarry(2) = bitblock::srli<127>(pablo_blk_ScanThru(PI_Cursor_v42,lex.NameScan,carry_set_1.getCarry(2),_temp7_v49));
     1237                                        PI_name_end_v48 = _temp7_v49;
     1238                                        PI_error_v50 = simd_and(PI_Cursor_v42,PI_name_end_v48);
     1239                                        PI_noWS_v51 = simd_andc(PI_name_end_v48,lex.WS);
     1240                                        carry_set_1.getCarry(3) = bitblock::srli<127>(pablo_blk_Advance(PI_noWS_v51,carry_set_1.getCarry(3),_temp8_v52));
     1241                                        PI_error_v50 = simd_or(PI_error_v50,simd_or(simd_andc(PI_noWS_v51,lex.QMark),simd_andc(_temp8_v52,PI_closer_v18)));
     1242                                        if (bitblock::any(PI_error_v50))
    6611243                                        {
    662                                                 ctCDPI_Callouts.PI_starts = simd_or(ctCDPI_Callouts.PI_starts,PI_Cursor);
    663                                                 PI_Cursor = carry_set_1.BitBlock_advance_ci_co(PI_Cursor,simd<1>::constant<0>(),1);
    664                                                 ctCDPI_Callouts.PI_name_starts = simd_or(ctCDPI_Callouts.PI_name_starts,PI_Cursor);
    665                                                 BitBlock PI_name_end = carry_set_1.BitBlock_scanthru_ci_co(PI_Cursor,lex.NameScan,simd<1>::constant<0>(),2);
    666                                                 BitBlock PI_error = simd_and(PI_Cursor,PI_name_end);
    667                                                 BitBlock PI_noWS = simd_andc(PI_name_end,lex.WS);
    668                                                 PI_error = simd_or(PI_error,simd_or(simd_andc(PI_noWS,lex.QMark),simd_andc(carry_set_1.BitBlock_advance_ci_co(PI_noWS,simd<1>::constant<0>(),3),PI_closer)));
    669                                                 if (bitblock::any(PI_error))
    670                                                 {
    671                                                         assert_0_error("Error in PI syntax",PI_error);
    672                                                 }
    673                                                 ctCDPI_Callouts.PI_name_ends = simd_or(ctCDPI_Callouts.PI_name_ends,PI_name_end);
    674                                                 PI_Cursor = carry_set_1.BitBlock_scanthru_ci_co(PI_name_end,simd_not(PI_closer),simd<1>::constant<0>(),4);
    675                                                 ctCDPI_Callouts.PI_ends = simd_or(ctCDPI_Callouts.PI_ends,PI_Cursor);
    676                                                 CtCDPI_ends = simd_or(CtCDPI_ends,PI_Cursor);
     1244                                                assert_0_error(PI_error_v50,"Error in PI syntax");
    6771245                                        }
    678                                         if (bitblock::any(CD_Cursor))
     1246                                        ctCDPI_Callouts.PI_name_ends = simd_or(ctCDPI_Callouts.PI_name_ends,PI_name_end_v48);
     1247                                        carry_set_1.getCarry(4) = bitblock::srli<127>(pablo_blk_ScanThru(PI_name_end_v48,simd_andc(EOF_mask,PI_closer_v18),carry_set_1.getCarry(4),_temp9_v53));
     1248                                        PI_Cursor_v42 = _temp9_v53;
     1249                                        ctCDPI_Callouts.PI_ends = simd_or(ctCDPI_Callouts.PI_ends,PI_Cursor_v42);
     1250                                        CtCDPI_ends_v1 = simd_or(CtCDPI_ends_v1,PI_Cursor_v42);
     1251                                }
     1252                                if (bitblock::any(CD_Cursor_v45))
     1253                                {
     1254                                        ctCDPI_Callouts.CD_starts = simd_or(ctCDPI_Callouts.CD_starts,CD_Cursor_v45);
     1255                                        carry_set_1.getCarry(5) = bitblock::srli<127>(pablo_blk_ScanThru(CD_Cursor_v45,simd_andc(EOF_mask,CD_closer_v13),carry_set_1.getCarry(5),_temp10_v54));
     1256                                        CD_Cursor_v45 = _temp10_v54;
     1257                                        ctCDPI_Callouts.CD_ends = simd_or(ctCDPI_Callouts.CD_ends,CD_Cursor_v45);
     1258                                        CtCDPI_ends_v1 = simd_or(CtCDPI_ends_v1,CD_Cursor_v45);
     1259                                }
     1260                                if (bitblock::any(Ct_Cursor_v46))
     1261                                {
     1262                                        ctCDPI_Callouts.Ct_starts = simd_or(ctCDPI_Callouts.Ct_starts,Ct_Cursor_v46);
     1263                                        carry_set_1.getCarry(6) = bitblock::srli<127>(pablo_blk_Advance(Ct_Cursor_v46,carry_set_1.getCarry(6),_temp11_v55));
     1264                                        Ct_Cursor_v46 = _temp11_v55;
     1265                                        Ct_error_v56 = simd_andc(Ct_Cursor_v46,lex.Hyphen);
     1266                                        carry_set_1.getCarry(7) = bitblock::srli<127>(pablo_blk_Advance(Ct_Cursor_v46,carry_set_1.getCarry(7),_temp12_v57));
     1267                                        carry_set_1.getCarry(8) = bitblock::srli<127>(pablo_blk_Advance(_temp12_v57,carry_set_1.getCarry(8),_temp13_v58));
     1268                                        Ct_Cursor_v46 = _temp13_v58;
     1269                                        carry_set_1.getCarry(9) = bitblock::srli<127>(pablo_blk_ScanThru(Ct_Cursor_v46,simd_andc(EOF_mask,DoubleHyphen_v14),carry_set_1.getCarry(9),_temp14_v59));
     1270                                        carry_set_1.getCarry(10) = bitblock::srli<127>(pablo_blk_Advance(_temp14_v59,carry_set_1.getCarry(10),_temp15_v60));
     1271                                        Ct_Cursor_v46 = _temp15_v60;
     1272                                        if (bitblock::any(simd_or(Ct_error_v56,simd_andc(Ct_Cursor_v46,lex.RAngle))))
    6791273                                        {
    680                                                 ctCDPI_Callouts.CD_starts = simd_or(ctCDPI_Callouts.CD_starts,CD_Cursor);
    681                                                 CD_Cursor = carry_set_1.BitBlock_scanthru_ci_co(CD_Cursor,simd_not(CD_closer),simd<1>::constant<0>(),5);
    682                                                 ctCDPI_Callouts.CD_ends = simd_or(ctCDPI_Callouts.CD_ends,CD_Cursor);
    683                                                 CtCDPI_ends = simd_or(CtCDPI_ends,CD_Cursor);
     1274                                                assert_0_error(simd_or(Ct_error_v56,simd_andc(Ct_Cursor_v46,lex.RAngle)),"Error in comment syntax");
    6841275                                        }
    685                                         if (bitblock::any(Ct_Cursor))
    686                                         {
    687                                                 ctCDPI_Callouts.Ct_starts = simd_or(ctCDPI_Callouts.Ct_starts,Ct_Cursor);
    688                                                 Ct_Cursor = carry_set_1.BitBlock_advance_ci_co(Ct_Cursor,simd<1>::constant<0>(),6);
    689                                                 BitBlock Ct_error = simd_andc(Ct_Cursor,lex.Hyphen);
    690                                                 Ct_Cursor = carry_set_1.BitBlock_advance_ci_co(carry_set_1.BitBlock_advance_ci_co(Ct_Cursor,simd<1>::constant<0>(),7),simd<1>::constant<0>(),8);
    691                                                 Ct_Cursor = carry_set_1.BitBlock_advance_ci_co(carry_set_1.BitBlock_scanthru_ci_co(Ct_Cursor,simd_not(DoubleHyphen),simd<1>::constant<0>(),9),simd<1>::constant<0>(),10);
    692                                                 if (bitblock::any(simd_or(Ct_error,simd_andc(Ct_Cursor,lex.RAngle))))
    693                                                 {
    694                                                         assert_0_error("Error in comment syntax",simd_or(Ct_error,simd_andc(Ct_Cursor,lex.RAngle)));
    695                                                 }
    696                                                 ctCDPI_Callouts.Ct_ends = simd_or(ctCDPI_Callouts.Ct_ends,Ct_Cursor);
    697                                                 CtCDPI_ends = simd_or(CtCDPI_ends,Ct_Cursor);
    698                                         }
    699                                         CtCDPI_Cursor = simd_or(simd_or(PI_Cursor,CD_Cursor),Ct_Cursor);
    700                                         ctCDPI_mask = carry_set_1.BitBlock_inclusive_span(CtCDPI_starts,CtCDPI_ends,simd<1>::constant<0>(),11);
    701                                         if (bitblock::any(simd<1>::constant<0>()))
    702                                         {
    703                                                 assert_0_error("Error in comment, CDATA or processing instruction syntax",simd<1>::constant<0>());
    704                                         }
    705                                         CtCDPI_Cursor = carry_set_1.BitBlock_scanthru_ci_co(CtCDPI_Cursor,simd_not(CtCDPI_opener),simd<1>::constant<0>(),12);
    706                                         LocalCarryCombine(carry_set_0,carry_set_1,3,13);
    707                                 }
    708                         }
    709                         else
    710                         {
    711                                 carry_set_0.CarryDequeueEnqueue(3,13);
    712                         }
    713                         check_streams.misc_mask = simd_and(simd_or(simd_or(simd_or(lex.WS,lex.LAngle),carry_set_0.BitBlock_inclusive_span(simd_or(ctCDPI_Callouts.Ct_starts,ctCDPI_Callouts.PI_starts),simd_or(ctCDPI_Callouts.Ct_ends,ctCDPI_Callouts.PI_ends),carry_set_0.GetCarry(16),16)),CtCDPI_starts),EOF_mask);
    714                         marker.LAngle_scope = simd_andc(LAngle_scope,ctCDPI_mask);
    715                         marker.Ref_opener = simd_andc(lex.RefStart,ctCDPI_mask);
    716                         marker.CD_closer = simd_andc(CD_closer,ctCDPI_mask);
    717                         carry_set_0.CarryAdjust(17);
    718                 }
    719                
    720                 void do_final_block(struct Lex & lex,struct Marker & marker,struct CtCDPI_Callouts & ctCDPI_Callouts,struct Check_streams & check_streams,BitBlock & EOF_mask)
    721                 {
    722                         ctCDPI_Callouts.Ct_starts = simd<1>::constant<0>();
    723                         ctCDPI_Callouts.Ct_ends = simd<1>::constant<0>();
    724                         ctCDPI_Callouts.CD_starts = simd<1>::constant<0>();
    725                         ctCDPI_Callouts.CD_ends = simd<1>::constant<0>();
    726                         ctCDPI_Callouts.PI_starts = simd<1>::constant<0>();
    727                         ctCDPI_Callouts.PI_name_starts = simd<1>::constant<0>();
    728                         ctCDPI_Callouts.PI_name_ends = simd<1>::constant<0>();
    729                         ctCDPI_Callouts.PI_ends = simd<1>::constant<0>();
    730                         BitBlock CtCDPI_starts = simd<1>::constant<0>();
    731                         BitBlock CtCDPI_ends = simd<1>::constant<0>();
    732                         BitBlock ctCDPI_mask = simd<1>::constant<0>();
    733                         BitBlock v = simd_or(lex.LAngle,lex.Hyphen);
    734                         BitBlock w = simd_or(lex.Hyphen,lex.QMark);
    735                         BitBlock v1 = carry_set_0.BitBlock_advance_n_<1>(v,carry_set_0.Pending64(0),0);
    736                         BitBlock w1 = carry_set_0.BitBlock_advance_n_<1>(w,carry_set_0.Pending64(1),1);
    737                         BitBlock LAngle_scope = simd_andc(v1,w1);
    738                         BitBlock PI_opener = simd_and(LAngle_scope,lex.QMark);
    739                         BitBlock CtCD_opener = simd_and(LAngle_scope,lex.Exclam);
    740                         BitBlock CtCDPI_opener = simd_or(PI_opener,CtCD_opener);
    741                         BitBlock CD_closer = simd<1>::constant<0>();
    742                         BitBlock DoubleHyphen = simd_and(simd_and(v1,w1),lex.Hyphen);
    743                         if (bitblock::any(simd_or(lex.RBracket,carry_set_0.CarryRange(0,2))))
    744                         {
    745                                 BitBlock DoubleRBracket = simd_and(carry_set_0.BitBlock_advance_ci_co(lex.RBracket,carry_set_0.GetCarry(0),0),lex.RBracket);
    746                                 CD_closer = simd_and(carry_set_0.BitBlock_advance_ci_co(DoubleRBracket,carry_set_0.GetCarry(1),1),lex.RAngle);
    747                         }
    748                         else
    749                         {
    750                                 carry_set_0.CarryDequeueEnqueue(0,2);
    751                         }
    752                         BitBlock PI_closer = simd_and(simd_andc(w1,v1),lex.RAngle);
    753                         BitBlock CtCDPI_Cursor = carry_set_0.BitBlock_scantofirst(CtCDPI_opener,carry_set_0.GetCarry(2),2);
    754                         if (bitblock::any(simd_or(simd_and(CtCDPI_Cursor,EOF_mask),carry_set_0.CarryRange(3,13))))
    755                         {
    756                                 CtCDPI_starts = simd_or(CtCDPI_starts,CtCDPI_Cursor);
    757                                 BitBlock PI_Cursor = simd_and(CtCDPI_Cursor,PI_opener);
    758                                 BitBlock CD_Ct_Cursor = carry_set_0.BitBlock_advance_ci_co(simd_andc(CtCDPI_Cursor,PI_Cursor),carry_set_0.GetCarry(3),3);
    759                                 BitBlock CD_Cursor = simd_and(CD_Ct_Cursor,lex.LBracket);
    760                                 BitBlock Ct_Cursor = simd_and(CD_Ct_Cursor,lex.Hyphen);
    761                                 if (bitblock::any(simd_or(PI_Cursor,carry_set_0.CarryRange(4,4))))
    762                                 {
    763                                         ctCDPI_Callouts.PI_starts = simd_or(ctCDPI_Callouts.PI_starts,PI_Cursor);
    764                                         PI_Cursor = carry_set_0.BitBlock_advance_ci_co(PI_Cursor,carry_set_0.GetCarry(4),4);
    765                                         ctCDPI_Callouts.PI_name_starts = simd_or(ctCDPI_Callouts.PI_name_starts,PI_Cursor);
    766                                         BitBlock PI_name_end = carry_set_0.BitBlock_scanthru_ci_co(PI_Cursor,lex.NameScan,carry_set_0.GetCarry(5),5);
    767                                         BitBlock PI_error = simd_and(PI_Cursor,PI_name_end);
    768                                         BitBlock PI_noWS = simd_andc(PI_name_end,lex.WS);
    769                                         PI_error = simd_or(PI_error,simd_or(simd_andc(PI_noWS,lex.QMark),simd_andc(carry_set_0.BitBlock_advance_ci_co(PI_noWS,carry_set_0.GetCarry(6),6),PI_closer)));
    770                                         if (bitblock::any(PI_error))
    771                                         {
    772                                                 assert_0_error("Error in PI syntax",PI_error);
    773                                         }
    774                                         ctCDPI_Callouts.PI_name_ends = simd_or(ctCDPI_Callouts.PI_name_ends,PI_name_end);
    775                                         PI_Cursor = carry_set_0.BitBlock_scanthru_ci_co(PI_name_end,simd_andc(EOF_mask,PI_closer),carry_set_0.GetCarry(7),7);
    776                                         ctCDPI_Callouts.PI_ends = simd_or(ctCDPI_Callouts.PI_ends,PI_Cursor);
    777                                         CtCDPI_ends = simd_or(CtCDPI_ends,PI_Cursor);
    778                                 }
    779                                 else
    780                                 {
    781                                         carry_set_0.CarryDequeueEnqueue(4,4);
    782                                 }
    783                                 if (bitblock::any(simd_or(CD_Cursor,carry_set_0.CarryRange(8,1))))
    784                                 {
    785                                         ctCDPI_Callouts.CD_starts = simd_or(ctCDPI_Callouts.CD_starts,CD_Cursor);
    786                                         CD_Cursor = carry_set_0.BitBlock_scanthru_ci_co(CD_Cursor,simd_andc(EOF_mask,CD_closer),carry_set_0.GetCarry(8),8);
    787                                         ctCDPI_Callouts.CD_ends = simd_or(ctCDPI_Callouts.CD_ends,CD_Cursor);
    788                                         CtCDPI_ends = simd_or(CtCDPI_ends,CD_Cursor);
    789                                 }
    790                                 else
    791                                 {
    792                                         carry_set_0.CarryDequeueEnqueue(8,1);
    793                                 }
    794                                 if (bitblock::any(simd_or(Ct_Cursor,carry_set_0.CarryRange(9,5))))
    795                                 {
    796                                         ctCDPI_Callouts.Ct_starts = simd_or(ctCDPI_Callouts.Ct_starts,Ct_Cursor);
    797                                         Ct_Cursor = carry_set_0.BitBlock_advance_ci_co(Ct_Cursor,carry_set_0.GetCarry(9),9);
    798                                         BitBlock Ct_error = simd_andc(Ct_Cursor,lex.Hyphen);
    799                                         Ct_Cursor = carry_set_0.BitBlock_advance_ci_co(carry_set_0.BitBlock_advance_ci_co(Ct_Cursor,carry_set_0.GetCarry(10),10),carry_set_0.GetCarry(11),11);
    800                                         Ct_Cursor = carry_set_0.BitBlock_advance_ci_co(carry_set_0.BitBlock_scanthru_ci_co(Ct_Cursor,simd_andc(EOF_mask,DoubleHyphen),carry_set_0.GetCarry(12),12),carry_set_0.GetCarry(13),13);
    801                                         if (bitblock::any(simd_or(Ct_error,simd_andc(Ct_Cursor,lex.RAngle))))
    802                                         {
    803                                                 assert_0_error("Error in comment syntax",simd_or(Ct_error,simd_andc(Ct_Cursor,lex.RAngle)));
    804                                         }
    805                                         ctCDPI_Callouts.Ct_ends = simd_or(ctCDPI_Callouts.Ct_ends,Ct_Cursor);
    806                                         CtCDPI_ends = simd_or(CtCDPI_ends,Ct_Cursor);
    807                                 }
    808                                 else
    809                                 {
    810                                         carry_set_0.CarryDequeueEnqueue(9,5);
    811                                 }
    812                                 CtCDPI_Cursor = simd_or(simd_or(PI_Cursor,CD_Cursor),Ct_Cursor);
    813                                 ctCDPI_mask = carry_set_0.BitBlock_inclusive_span(CtCDPI_starts,CtCDPI_ends,carry_set_0.GetCarry(14),14);
    814                                 if (bitblock::any(simd_andc(ctCDPI_mask,EOF_mask)))
    815                                 {
    816                                         assert_0_error("Error in comment, CDATA or processing instruction syntax",simd_andc(ctCDPI_mask,EOF_mask));
    817                                 }
    818                                 CtCDPI_Cursor = carry_set_0.BitBlock_scanthru_ci_co(CtCDPI_Cursor,simd_andc(EOF_mask,CtCDPI_opener),carry_set_0.GetCarry(15),15);
    819                                 while (bitblock::any(simd_and(CtCDPI_Cursor,EOF_mask)))
    820                                 {
    821                                         CarryDeclare(carry_set_1,13,0);
    822                                         CtCDPI_starts = simd_or(CtCDPI_starts,CtCDPI_Cursor);
    823                                         BitBlock PI_Cursor = simd_and(CtCDPI_Cursor,PI_opener);
    824                                         BitBlock CD_Ct_Cursor = carry_set_1.BitBlock_advance_ci_co(simd_andc(CtCDPI_Cursor,PI_Cursor),simd<1>::constant<0>(),0);
    825                                         BitBlock CD_Cursor = simd_and(CD_Ct_Cursor,lex.LBracket);
    826                                         BitBlock Ct_Cursor = simd_and(CD_Ct_Cursor,lex.Hyphen);
    827                                         if (bitblock::any(PI_Cursor))
    828                                         {
    829                                                 ctCDPI_Callouts.PI_starts = simd_or(ctCDPI_Callouts.PI_starts,PI_Cursor);
    830                                                 PI_Cursor = carry_set_1.BitBlock_advance_ci_co(PI_Cursor,simd<1>::constant<0>(),1);
    831                                                 ctCDPI_Callouts.PI_name_starts = simd_or(ctCDPI_Callouts.PI_name_starts,PI_Cursor);
    832                                                 BitBlock PI_name_end = carry_set_1.BitBlock_scanthru_ci_co(PI_Cursor,lex.NameScan,simd<1>::constant<0>(),2);
    833                                                 BitBlock PI_error = simd_and(PI_Cursor,PI_name_end);
    834                                                 BitBlock PI_noWS = simd_andc(PI_name_end,lex.WS);
    835                                                 PI_error = simd_or(PI_error,simd_or(simd_andc(PI_noWS,lex.QMark),simd_andc(carry_set_1.BitBlock_advance_ci_co(PI_noWS,simd<1>::constant<0>(),3),PI_closer)));
    836                                                 if (bitblock::any(PI_error))
    837                                                 {
    838                                                         assert_0_error("Error in PI syntax",PI_error);
    839                                                 }
    840                                                 ctCDPI_Callouts.PI_name_ends = simd_or(ctCDPI_Callouts.PI_name_ends,PI_name_end);
    841                                                 PI_Cursor = carry_set_1.BitBlock_scanthru_ci_co(PI_name_end,simd_andc(EOF_mask,PI_closer),simd<1>::constant<0>(),4);
    842                                                 ctCDPI_Callouts.PI_ends = simd_or(ctCDPI_Callouts.PI_ends,PI_Cursor);
    843                                                 CtCDPI_ends = simd_or(CtCDPI_ends,PI_Cursor);
    844                                         }
    845                                         if (bitblock::any(CD_Cursor))
    846                                         {
    847                                                 ctCDPI_Callouts.CD_starts = simd_or(ctCDPI_Callouts.CD_starts,CD_Cursor);
    848                                                 CD_Cursor = carry_set_1.BitBlock_scanthru_ci_co(CD_Cursor,simd_andc(EOF_mask,CD_closer),simd<1>::constant<0>(),5);
    849                                                 ctCDPI_Callouts.CD_ends = simd_or(ctCDPI_Callouts.CD_ends,CD_Cursor);
    850                                                 CtCDPI_ends = simd_or(CtCDPI_ends,CD_Cursor);
    851                                         }
    852                                         if (bitblock::any(Ct_Cursor))
    853                                         {
    854                                                 ctCDPI_Callouts.Ct_starts = simd_or(ctCDPI_Callouts.Ct_starts,Ct_Cursor);
    855                                                 Ct_Cursor = carry_set_1.BitBlock_advance_ci_co(Ct_Cursor,simd<1>::constant<0>(),6);
    856                                                 BitBlock Ct_error = simd_andc(Ct_Cursor,lex.Hyphen);
    857                                                 Ct_Cursor = carry_set_1.BitBlock_advance_ci_co(carry_set_1.BitBlock_advance_ci_co(Ct_Cursor,simd<1>::constant<0>(),7),simd<1>::constant<0>(),8);
    858                                                 Ct_Cursor = carry_set_1.BitBlock_advance_ci_co(carry_set_1.BitBlock_scanthru_ci_co(Ct_Cursor,simd_andc(EOF_mask,DoubleHyphen),simd<1>::constant<0>(),9),simd<1>::constant<0>(),10);
    859                                                 if (bitblock::any(simd_or(Ct_error,simd_andc(Ct_Cursor,lex.RAngle))))
    860                                                 {
    861                                                         assert_0_error("Error in comment syntax",simd_or(Ct_error,simd_andc(Ct_Cursor,lex.RAngle)));
    862                                                 }
    863                                                 ctCDPI_Callouts.Ct_ends = simd_or(ctCDPI_Callouts.Ct_ends,Ct_Cursor);
    864                                                 CtCDPI_ends = simd_or(CtCDPI_ends,Ct_Cursor);
    865                                         }
    866                                         CtCDPI_Cursor = simd_or(simd_or(PI_Cursor,CD_Cursor),Ct_Cursor);
    867                                         ctCDPI_mask = carry_set_1.BitBlock_inclusive_span(CtCDPI_starts,CtCDPI_ends,simd<1>::constant<0>(),11);
    868                                         if (bitblock::any(simd_andc(ctCDPI_mask,EOF_mask)))
    869                                         {
    870                                                 assert_0_error("Error in comment, CDATA or processing instruction syntax",simd_andc(ctCDPI_mask,EOF_mask));
    871                                         }
    872                                         CtCDPI_Cursor = carry_set_1.BitBlock_scanthru_ci_co(CtCDPI_Cursor,simd_andc(EOF_mask,CtCDPI_opener),simd<1>::constant<0>(),12);
    873                                         LocalCarryCombine(carry_set_0,carry_set_1,3,13);
    874                                 }
    875                         }
    876                         else
    877                         {
    878                                 carry_set_0.CarryDequeueEnqueue(3,13);
    879                         }
    880                         check_streams.misc_mask = simd_and(simd_or(simd_or(simd_or(lex.WS,lex.LAngle),carry_set_0.BitBlock_inclusive_span(simd_or(ctCDPI_Callouts.Ct_starts,ctCDPI_Callouts.PI_starts),simd_or(ctCDPI_Callouts.Ct_ends,ctCDPI_Callouts.PI_ends),carry_set_0.GetCarry(16),16)),CtCDPI_starts),EOF_mask);
    881                         marker.LAngle_scope = simd_andc(LAngle_scope,ctCDPI_mask);
    882                         marker.Ref_opener = simd_andc(lex.RefStart,ctCDPI_mask);
    883                         marker.CD_closer = simd_andc(CD_closer,ctCDPI_mask);
    884                 }
    885                
    886                 CarryDeclare(carry_set_0,17,2);
    887         };
    888          
     1276                                        ctCDPI_Callouts.Ct_ends = simd_or(ctCDPI_Callouts.Ct_ends,Ct_Cursor_v46);
     1277                                        CtCDPI_ends_v1 = simd_or(CtCDPI_ends_v1,Ct_Cursor_v46);
     1278                                }
     1279                                CtCDPI_Cursor_v19 = simd_or(simd_or(PI_Cursor_v42,CD_Cursor_v45),Ct_Cursor_v46);
     1280                                carry_set_1.getCarry(11) = bitblock::srli<127>(pablo_blk_InclusiveSpan(CtCDPI_starts_v0,CtCDPI_ends_v1,carry_set_1.getCarry(11),_temp16_v61));
     1281                                ctCDPI_mask_v2 = _temp16_v61;
     1282                                if (bitblock::any(simd_andc(ctCDPI_mask_v2,EOF_mask)))
     1283                                {
     1284                                        assert_0_error(simd_andc(ctCDPI_mask_v2,EOF_mask),"Error in comment, CDATA or processing instruction syntax");
     1285                                }
     1286                                carry_set_1.getCarry(12) = bitblock::srli<127>(pablo_blk_ScanThru(CtCDPI_Cursor_v19,simd_andc(EOF_mask,CtCDPI_opener_v12),carry_set_1.getCarry(12),_temp17_v62));
     1287                                CtCDPI_Cursor_v19 = _temp17_v62;
     1288                                LocalCarryCombine(carry_set_0,carry_set_1,3,13);
     1289                        }
     1290                }
     1291                else
     1292                {
     1293                        carry_set_0.carryDequeueEnqueue(3,13);
     1294                }
     1295                carry_set_0.getCarry(16) = bitblock::srli<127>(pablo_blk_InclusiveSpan(simd_or(ctCDPI_Callouts.Ct_starts,ctCDPI_Callouts.PI_starts),simd_or(ctCDPI_Callouts.Ct_ends,ctCDPI_Callouts.PI_ends),carry_set_0.getCarry(16),_temp18_v63));
     1296                check_streams.misc_mask = simd_and(simd_or(simd_or(simd_or(lex.WS,lex.LAngle),_temp18_v63),CtCDPI_starts_v0),EOF_mask);
     1297                marker.LAngle_scope = simd_andc(LAngle_scope_v9,ctCDPI_mask_v2);
     1298                marker.Ref_opener = simd_andc(lex.RefStart,ctCDPI_mask_v2);
     1299                marker.CD_closer = simd_andc(CD_closer_v13,ctCDPI_mask_v2);
     1300        }
     1301       
     1302        CarryDeclare(carry_set_0,17,2);
     1303};
     1304 
    8891305struct Parse_tags
    8901306{
     
    8921308        {
    8931309        }
    894          
     1310       
    8951311        IDISA_INLINE void do_block(struct Lex & lex,struct Marker & marker,struct Tag_Callouts & tag_Callouts)
    8961312        {
    897                 BitBlock EqExpected = simd<1>::constant<0>();
    898                 BitBlock AttListEnd = simd<1>::constant<0>();
    899                 BitBlock DQuoteDelim = simd_or(lex.DQuote,lex.LAngle);
    900                 BitBlock SQuoteDelim = simd_or(lex.SQuote,lex.LAngle);
    901                 BitBlock AttListDelim = simd_or(lex.Slash,lex.RAngle);
     1313                BitBlock EqExpected_v0;
     1314                BitBlock AttListEnd_v1;
     1315                BitBlock DQuoteDelim_v2;
     1316                BitBlock SQuoteDelim_v3;
     1317                BitBlock AttListDelim_v4;
     1318                BitBlock _temp0_v5;
     1319                BitBlock ParseError_v6;
     1320                BitBlock AfterWS_v7;
     1321                BitBlock _temp1_v8;
     1322                BitBlock AttNameStart_v9;
     1323                BitBlock AttNameFollow_v10;
     1324                BitBlock _temp2_v11;
     1325                BitBlock _temp3_v12;
     1326                BitBlock AttValPos_v13;
     1327                BitBlock _temp4_v14;
     1328                BitBlock DQuoteAttVal_v15;
     1329                BitBlock SQuoteAttVal_v16;
     1330                BitBlock DQuoteAttEnd_v17;
     1331                BitBlock _temp5_v18;
     1332                BitBlock SQuoteAttEnd_v19;
     1333                BitBlock _temp6_v20;
     1334                BitBlock AttValEnd_v21;
     1335                BitBlock AttValFollow_v22;
     1336                BitBlock _temp7_v23;
     1337                BitBlock _temp8_v24;
     1338                BitBlock AttNameFollow_v25;
     1339                BitBlock _temp2_v26;
     1340                BitBlock _temp3_v27;
     1341                BitBlock AttValPos_v28;
     1342                BitBlock _temp4_v29;
     1343                BitBlock DQuoteAttVal_v30;
     1344                BitBlock SQuoteAttVal_v31;
     1345                BitBlock DQuoteAttEnd_v32;
     1346                BitBlock _temp5_v33;
     1347                BitBlock SQuoteAttEnd_v34;
     1348                BitBlock _temp6_v35;
     1349                BitBlock AttValEnd_v36;
     1350                BitBlock AttValFollow_v37;
     1351                BitBlock _temp7_v38;
     1352                BitBlock _temp8_v39;
     1353                BitBlock STagEnds_v40;
     1354                BitBlock _temp9_v41;
     1355                BitBlock EndTagEnds_v42;
     1356                BitBlock _temp10_v43;
     1357                BitBlock _temp11_v44;
     1358                BitBlock _temp12_v45;
     1359                EqExpected_v0 = simd<1>::constant<0>();
     1360                AttListEnd_v1 = simd<1>::constant<0>();
     1361                DQuoteDelim_v2 = simd_or(lex.DQuote,lex.LAngle);
     1362                SQuoteDelim_v3 = simd_or(lex.SQuote,lex.LAngle);
     1363                AttListDelim_v4 = simd_or(lex.Slash,lex.RAngle);
    9021364                tag_Callouts.ElemName_starts = simd_andc(marker.LAngle_scope,lex.Slash);
    9031365                tag_Callouts.EndTag_marks = simd_and(marker.LAngle_scope,lex.Slash);
    904                 tag_Callouts.ElemName_ends = carry_set_0.BitBlock_scanthru_ci_co(tag_Callouts.ElemName_starts,lex.NameScan,carry_set_0.GetCarry(0),0);
    905                 BitBlock ParseError = simd_and(tag_Callouts.ElemName_starts,tag_Callouts.ElemName_ends);
     1366                carry_set_0.getCarry(0) = bitblock::srli<127>(pablo_blk_ScanThru(tag_Callouts.ElemName_starts,lex.NameScan,carry_set_0.getCarry(0),_temp0_v5));
     1367                tag_Callouts.ElemName_ends = _temp0_v5;
     1368                ParseError_v6 = simd_and(tag_Callouts.ElemName_starts,tag_Callouts.ElemName_ends);
    9061369                tag_Callouts.AttName_starts = simd<1>::constant<0>();
    9071370                tag_Callouts.AttName_ends = simd<1>::constant<0>();
    9081371                tag_Callouts.AttVal_starts = simd<1>::constant<0>();
    9091372                tag_Callouts.AttVal_ends = simd<1>::constant<0>();
    910                 if (bitblock::any(simd_or(simd_and(tag_Callouts.ElemName_ends,lex.WS),carry_set_0.CarryRange(1,8))))
    911                 {
    912                         BitBlock AfterWS = carry_set_0.BitBlock_scanthru_ci_co(tag_Callouts.ElemName_ends,lex.WS,carry_set_0.GetCarry(1),1);
    913                         AttListEnd = simd_and(AfterWS,AttListDelim);
    914                         BitBlock AttNameStart = simd_andc(AfterWS,AttListDelim);
    915                         if (bitblock::any(simd_or(AttNameStart,carry_set_0.CarryRange(2,7))))
    916                         {
    917                                 ParseError = simd_or(ParseError,simd_andc(AttNameStart,lex.NameScan));
    918                                 tag_Callouts.AttName_starts = simd_or(tag_Callouts.AttName_starts,AttNameStart);
    919                                 BitBlock AttNameFollow = carry_set_0.BitBlock_scanthru_ci_co(AttNameStart,lex.NameScan,carry_set_0.GetCarry(2),2);
    920                                 tag_Callouts.AttName_ends = simd_or(tag_Callouts.AttName_ends,AttNameFollow);
    921                                 if (bitblock::any(simd_or(simd_and(AttNameFollow,lex.WS),carry_set_0.CarryRange(3,1))))
    922                                 {
    923                                         EqExpected = carry_set_0.BitBlock_scanthru_ci_co(AttNameFollow,lex.WS,carry_set_0.GetCarry(3),3);
     1373                if (bitblock::any(simd_or(simd_and(tag_Callouts.ElemName_ends,lex.WS),carry_set_0.carryRange(1,8))))
     1374                {
     1375                        carry_set_0.getCarry(1) = bitblock::srli<127>(pablo_blk_ScanThru(tag_Callouts.ElemName_ends,lex.WS,carry_set_0.getCarry(1),_temp1_v8));
     1376                        AfterWS_v7 = _temp1_v8;
     1377                        AttListEnd_v1 = simd_and(AfterWS_v7,AttListDelim_v4);
     1378                        AttNameStart_v9 = simd_andc(AfterWS_v7,AttListDelim_v4);
     1379                        if (bitblock::any(simd_or(AttNameStart_v9,carry_set_0.carryRange(2,7))))
     1380                        {
     1381                                ParseError_v6 = simd_or(ParseError_v6,simd_andc(AttNameStart_v9,lex.NameScan));
     1382                                tag_Callouts.AttName_starts = simd_or(tag_Callouts.AttName_starts,AttNameStart_v9);
     1383                                carry_set_0.getCarry(2) = bitblock::srli<127>(pablo_blk_ScanThru(AttNameStart_v9,lex.NameScan,carry_set_0.getCarry(2),_temp2_v11));
     1384                                AttNameFollow_v10 = _temp2_v11;
     1385                                tag_Callouts.AttName_ends = simd_or(tag_Callouts.AttName_ends,AttNameFollow_v10);
     1386                                if (bitblock::any(simd_or(simd_and(AttNameFollow_v10,lex.WS),carry_set_0.carryRange(3,1))))
     1387                                {
     1388                                        carry_set_0.getCarry(3) = bitblock::srli<127>(pablo_blk_ScanThru(AttNameFollow_v10,lex.WS,carry_set_0.getCarry(3),_temp3_v12));
     1389                                        EqExpected_v0 = _temp3_v12;
    9241390                                }
    9251391                                else
    9261392                                {
    927                                         EqExpected = AttNameFollow;
    928                                         carry_set_0.CarryDequeueEnqueue(3,1);
    929                                 }
    930                                 ParseError = simd_or(ParseError,simd_andc(EqExpected,lex.Equals));
    931                                 BitBlock AttValPos = carry_set_0.BitBlock_advance_then_scanthru(EqExpected,lex.WS,carry_set_0.GetCarry(4),4);
    932                                 tag_Callouts.AttVal_starts = simd_or(tag_Callouts.AttVal_starts,AttValPos);
    933                                 BitBlock DQuoteAttVal = simd_and(AttValPos,lex.DQuote);
    934                                 BitBlock SQuoteAttVal = simd_and(AttValPos,lex.SQuote);
    935                                 BitBlock DQuoteAttEnd = carry_set_0.BitBlock_advance_then_scanthru(DQuoteAttVal,simd_not(DQuoteDelim),carry_set_0.GetCarry(5),5);
    936                                 BitBlock SQuoteAttEnd = carry_set_0.BitBlock_advance_then_scanthru(SQuoteAttVal,simd_not(SQuoteDelim),carry_set_0.GetCarry(6),6);
    937                                 BitBlock AttValEnd = simd_or(DQuoteAttEnd,SQuoteAttEnd);
    938                                 ParseError = simd_or(ParseError,simd_andc(simd_or(AttValPos,AttValEnd),simd_or(lex.DQuote,lex.SQuote)));
    939                                 BitBlock AttValFollow = carry_set_0.BitBlock_advance_ci_co(AttValEnd,carry_set_0.GetCarry(7),7);
    940                                 tag_Callouts.AttVal_ends = simd_or(tag_Callouts.AttVal_ends,AttValFollow);
    941                                 if (bitblock::any(simd_or(simd_and(AttValFollow,lex.WS),carry_set_0.CarryRange(8,1))))
    942                                 {
    943                                         AfterWS = carry_set_0.BitBlock_scanthru_ci_co(AttValFollow,lex.WS,carry_set_0.GetCarry(8),8);
    944                                         AttListEnd = simd_or(AttListEnd,simd_and(AfterWS,AttListDelim));
    945                                         AttNameStart = simd_andc(AfterWS,AttListDelim);
     1393                                        EqExpected_v0 = AttNameFollow_v10;
     1394                                        carry_set_0.carryDequeueEnqueue(3,1);
     1395                                }
     1396                                ParseError_v6 = simd_or(ParseError_v6,simd_andc(EqExpected_v0,lex.Equals));
     1397                                carry_set_0.getCarry(4) = bitblock::srli<127>(pablo_blk_AdvanceThenScanThru(EqExpected_v0,lex.WS,carry_set_0.getCarry(4),_temp4_v14));
     1398                                AttValPos_v13 = _temp4_v14;
     1399                                tag_Callouts.AttVal_starts = simd_or(tag_Callouts.AttVal_starts,AttValPos_v13);
     1400                                DQuoteAttVal_v15 = simd_and(AttValPos_v13,lex.DQuote);
     1401                                SQuoteAttVal_v16 = simd_and(AttValPos_v13,lex.SQuote);
     1402                                carry_set_0.getCarry(5) = bitblock::srli<127>(pablo_blk_AdvanceThenScanThru(DQuoteAttVal_v15,simd_not(DQuoteDelim_v2),carry_set_0.getCarry(5),_temp5_v18));
     1403                                DQuoteAttEnd_v17 = _temp5_v18;
     1404                                carry_set_0.getCarry(6) = bitblock::srli<127>(pablo_blk_AdvanceThenScanThru(SQuoteAttVal_v16,simd_not(SQuoteDelim_v3),carry_set_0.getCarry(6),_temp6_v20));
     1405                                SQuoteAttEnd_v19 = _temp6_v20;
     1406                                AttValEnd_v21 = simd_or(DQuoteAttEnd_v17,SQuoteAttEnd_v19);
     1407                                ParseError_v6 = simd_or(ParseError_v6,simd_andc(simd_or(AttValPos_v13,AttValEnd_v21),simd_or(lex.DQuote,lex.SQuote)));
     1408                                carry_set_0.getCarry(7) = bitblock::srli<127>(pablo_blk_Advance(AttValEnd_v21,carry_set_0.getCarry(7),_temp7_v23));
     1409                                AttValFollow_v22 = _temp7_v23;
     1410                                tag_Callouts.AttVal_ends = simd_or(tag_Callouts.AttVal_ends,AttValFollow_v22);
     1411                                if (bitblock::any(simd_or(simd_and(AttValFollow_v22,lex.WS),carry_set_0.carryRange(8,1))))
     1412                                {
     1413                                        carry_set_0.getCarry(8) = bitblock::srli<127>(pablo_blk_ScanThru(AttValFollow_v22,lex.WS,carry_set_0.getCarry(8),_temp8_v24));
     1414                                        AfterWS_v7 = _temp8_v24;
     1415                                        AttListEnd_v1 = simd_or(AttListEnd_v1,simd_and(AfterWS_v7,AttListDelim_v4));
     1416                                        AttNameStart_v9 = simd_andc(AfterWS_v7,AttListDelim_v4);
    9461417                                }
    9471418                                else
    9481419                                {
    949                                         AttListEnd = simd_or(AttListEnd,simd_and(AttValFollow,AttListDelim));
    950                                         AttNameStart = simd_andc(AttValFollow,AttListDelim);
    951                                         carry_set_0.CarryDequeueEnqueue(8,1);
    952                                 }
    953                                 ParseError = simd_or(ParseError,simd_and(AttValFollow,AttNameStart));
    954                                 while (bitblock::any(AttNameStart))
     1420                                        AttListEnd_v1 = simd_or(AttListEnd_v1,simd_and(AttValFollow_v22,AttListDelim_v4));
     1421                                        AttNameStart_v9 = simd_andc(AttValFollow_v22,AttListDelim_v4);
     1422                                        carry_set_0.carryDequeueEnqueue(8,1);
     1423                                }
     1424                                ParseError_v6 = simd_or(ParseError_v6,simd_and(AttValFollow_v22,AttNameStart_v9));
     1425                                while (bitblock::any(AttNameStart_v9))
    9551426                                {
    9561427                                        CarryDeclare(carry_set_1,7,0);
    957                                         ParseError = simd_or(ParseError,simd_andc(AttNameStart,lex.NameScan));
    958                                         tag_Callouts.AttName_starts = simd_or(tag_Callouts.AttName_starts,AttNameStart);
    959                                         BitBlock AttNameFollow = carry_set_1.BitBlock_scanthru_ci_co(AttNameStart,lex.NameScan,simd<1>::constant<0>(),0);
    960                                         tag_Callouts.AttName_ends = simd_or(tag_Callouts.AttName_ends,AttNameFollow);
    961                                         if (bitblock::any(simd_and(AttNameFollow,lex.WS)))
     1428                                        ParseError_v6 = simd_or(ParseError_v6,simd_andc(AttNameStart_v9,lex.NameScan));
     1429                                        tag_Callouts.AttName_starts = simd_or(tag_Callouts.AttName_starts,AttNameStart_v9);
     1430                                        carry_set_1.getCarry(0) = bitblock::srli<127>(pablo_blk_ScanThru(AttNameStart_v9,lex.NameScan,carry_set_1.getCarry(0),_temp2_v26));
     1431                                        AttNameFollow_v25 = _temp2_v26;
     1432                                        tag_Callouts.AttName_ends = simd_or(tag_Callouts.AttName_ends,AttNameFollow_v25);
     1433                                        if (bitblock::any(simd_and(AttNameFollow_v25,lex.WS)))
    9621434                                        {
    963                                                 EqExpected = carry_set_1.BitBlock_scanthru_ci_co(AttNameFollow,lex.WS,simd<1>::constant<0>(),1);
     1435                                                carry_set_1.getCarry(1) = bitblock::srli<127>(pablo_blk_ScanThru(AttNameFollow_v25,lex.WS,carry_set_1.getCarry(1),_temp3_v27));
     1436                                                EqExpected_v0 = _temp3_v27;
    9641437                                        }
    9651438                                        else
    9661439                                        {
    967                                                 EqExpected = AttNameFollow;
     1440                                                EqExpected_v0 = AttNameFollow_v25;
    9681441                                        }
    969                                         ParseError = simd_or(ParseError,simd_andc(EqExpected,lex.Equals));
    970                                         BitBlock AttValPos = carry_set_1.BitBlock_advance_then_scanthru(EqExpected,lex.WS,simd<1>::constant<0>(),2);
    971                                         tag_Callouts.AttVal_starts = simd_or(tag_Callouts.AttVal_starts,AttValPos);
    972                                         BitBlock DQuoteAttVal = simd_and(AttValPos,lex.DQuote);
    973                                         BitBlock SQuoteAttVal = simd_and(AttValPos,lex.SQuote);
    974                                         BitBlock DQuoteAttEnd = carry_set_1.BitBlock_advance_then_scanthru(DQuoteAttVal,simd_not(DQuoteDelim),simd<1>::constant<0>(),3);
    975                                         BitBlock SQuoteAttEnd = carry_set_1.BitBlock_advance_then_scanthru(SQuoteAttVal,simd_not(SQuoteDelim),simd<1>::constant<0>(),4);
    976                                         BitBlock AttValEnd = simd_or(DQuoteAttEnd,SQuoteAttEnd);
    977                                         ParseError = simd_or(ParseError,simd_andc(simd_or(AttValPos,AttValEnd),simd_or(lex.DQuote,lex.SQuote)));
    978                                         BitBlock AttValFollow = carry_set_1.BitBlock_advance_ci_co(AttValEnd,simd<1>::constant<0>(),5);
    979                                         tag_Callouts.AttVal_ends = simd_or(tag_Callouts.AttVal_ends,AttValFollow);
    980                                         if (bitblock::any(simd_and(AttValFollow,lex.WS)))
     1442                                        ParseError_v6 = simd_or(ParseError_v6,simd_andc(EqExpected_v0,lex.Equals));
     1443                                        carry_set_1.getCarry(2) = bitblock::srli<127>(pablo_blk_AdvanceThenScanThru(EqExpected_v0,lex.WS,carry_set_1.getCarry(2),_temp4_v29));
     1444                                        AttValPos_v28 = _temp4_v29;
     1445                                        tag_Callouts.AttVal_starts = simd_or(tag_Callouts.AttVal_starts,AttValPos_v28);
     1446                                        DQuoteAttVal_v30 = simd_and(AttValPos_v28,lex.DQuote);
     1447                                        SQuoteAttVal_v31 = simd_and(AttValPos_v28,lex.SQuote);
     1448                                        carry_set_1.getCarry(3) = bitblock::srli<127>(pablo_blk_AdvanceThenScanThru(DQuoteAttVal_v30,simd_not(DQuoteDelim_v2),carry_set_1.getCarry(3),_temp5_v33));
     1449                                        DQuoteAttEnd_v32 = _temp5_v33;
     1450                                        carry_set_1.getCarry(4) = bitblock::srli<127>(pablo_blk_AdvanceThenScanThru(SQuoteAttVal_v31,simd_not(SQuoteDelim_v3),carry_set_1.getCarry(4),_temp6_v35));
     1451                                        SQuoteAttEnd_v34 = _temp6_v35;
     1452                                        AttValEnd_v36 = simd_or(DQuoteAttEnd_v32,SQuoteAttEnd_v34);
     1453                                        ParseError_v6 = simd_or(ParseError_v6,simd_andc(simd_or(AttValPos_v28,AttValEnd_v36),simd_or(lex.DQuote,lex.SQuote)));
     1454                                        carry_set_1.getCarry(5) = bitblock::srli<127>(pablo_blk_Advance(AttValEnd_v36,carry_set_1.getCarry(5),_temp7_v38));
     1455                                        AttValFollow_v37 = _temp7_v38;
     1456                                        tag_Callouts.AttVal_ends = simd_or(tag_Callouts.AttVal_ends,AttValFollow_v37);
     1457                                        if (bitblock::any(simd_and(AttValFollow_v37,lex.WS)))
    9811458                                        {
    982                                                 AfterWS = carry_set_1.BitBlock_scanthru_ci_co(AttValFollow,lex.WS,simd<1>::constant<0>(),6);
    983                                                 AttListEnd = simd_or(AttListEnd,simd_and(AfterWS,AttListDelim));
    984                                                 AttNameStart = simd_andc(AfterWS,AttListDelim);
     1459                                                carry_set_1.getCarry(6) = bitblock::srli<127>(pablo_blk_ScanThru(AttValFollow_v37,lex.WS,carry_set_1.getCarry(6),_temp8_v39));
     1460                                                AfterWS_v7 = _temp8_v39;
     1461                                                AttListEnd_v1 = simd_or(AttListEnd_v1,simd_and(AfterWS_v7,AttListDelim_v4));
     1462                                                AttNameStart_v9 = simd_andc(AfterWS_v7,AttListDelim_v4);
    9851463                                        }
    9861464                                        else
    9871465                                        {
    988                                                 AttListEnd = simd_or(AttListEnd,simd_and(AttValFollow,AttListDelim));
    989                                                 AttNameStart = simd_andc(AttValFollow,AttListDelim);
     1466                                                AttListEnd_v1 = simd_or(AttListEnd_v1,simd_and(AttValFollow_v37,AttListDelim_v4));
     1467                                                AttNameStart_v9 = simd_andc(AttValFollow_v37,AttListDelim_v4);
    9901468                                        }
    991                                         ParseError = simd_or(ParseError,simd_and(AttValFollow,AttNameStart));
     1469                                        ParseError_v6 = simd_or(ParseError_v6,simd_and(AttValFollow_v37,AttNameStart_v9));
    9921470                                        LocalCarryCombine(carry_set_0,carry_set_1,2,7);
    9931471                                }
     
    9951473                        else
    9961474                        {
    997                                 carry_set_0.CarryDequeueEnqueue(2,7);
     1475                                carry_set_0.carryDequeueEnqueue(2,7);
    9981476                        }
    9991477                }
    10001478                else
    10011479                {
    1002                         AttListEnd = simd_and(tag_Callouts.ElemName_ends,AttListDelim);
    1003                         ParseError = simd_or(ParseError,simd_andc(tag_Callouts.ElemName_ends,AttListDelim));
    1004                         carry_set_0.CarryDequeueEnqueue(1,8);
    1005                 }
    1006                 BitBlock STagEnds = simd_and(AttListEnd,lex.RAngle);
    1007                 tag_Callouts.EmptyTag_marks = carry_set_0.BitBlock_advance_ci_co(simd_and(AttListEnd,lex.Slash),carry_set_0.GetCarry(9),9);
    1008                 ParseError = simd_or(ParseError,simd_andc(tag_Callouts.EmptyTag_marks,lex.RAngle));
    1009                 BitBlock EndTagEnds = carry_set_0.BitBlock_advance_then_scanthru(tag_Callouts.EndTag_marks,lex.NameScan,carry_set_0.GetCarry(10),10);
    1010                 if (bitblock::any(simd_or(simd_and(EndTagEnds,lex.WS),carry_set_0.CarryRange(11,1))))
    1011                 {
    1012                         EndTagEnds = carry_set_0.BitBlock_scanthru_ci_co(EndTagEnds,lex.WS,carry_set_0.GetCarry(11),11);
     1480                        AttListEnd_v1 = simd_and(tag_Callouts.ElemName_ends,AttListDelim_v4);
     1481                        ParseError_v6 = simd_or(ParseError_v6,simd_andc(tag_Callouts.ElemName_ends,AttListDelim_v4));
     1482                        carry_set_0.carryDequeueEnqueue(1,8);
     1483                }
     1484                STagEnds_v40 = simd_and(AttListEnd_v1,lex.RAngle);
     1485                carry_set_0.getCarry(9) = bitblock::srli<127>(pablo_blk_Advance(simd_and(AttListEnd_v1,lex.Slash),carry_set_0.getCarry(9),_temp9_v41));
     1486                tag_Callouts.EmptyTag_marks = _temp9_v41;
     1487                ParseError_v6 = simd_or(ParseError_v6,simd_andc(tag_Callouts.EmptyTag_marks,lex.RAngle));
     1488                carry_set_0.getCarry(10) = bitblock::srli<127>(pablo_blk_AdvanceThenScanThru(tag_Callouts.EndTag_marks,lex.NameScan,carry_set_0.getCarry(10),_temp10_v43));
     1489                EndTagEnds_v42 = _temp10_v43;
     1490                if (bitblock::any(simd_or(simd_and(EndTagEnds_v42,lex.WS),carry_set_0.carryRange(11,1))))
     1491                {
     1492                        carry_set_0.getCarry(11) = bitblock::srli<127>(pablo_blk_ScanThru(EndTagEnds_v42,lex.WS,carry_set_0.getCarry(11),_temp11_v44));
     1493                        EndTagEnds_v42 = _temp11_v44;
    10131494                }
    10141495                else
    10151496                {
    1016                         carry_set_0.CarryDequeueEnqueue(11,1);
    1017                 }
    1018                 ParseError = simd_or(ParseError,simd_andc(EndTagEnds,lex.RAngle));
    1019                 if (bitblock::any(ParseError))
    1020                 {
    1021                         assert_0_error("Tag parsing error found",ParseError);
    1022                 }
    1023                 tag_Callouts.AttVal_spans = carry_set_0.BitBlock_span_upto(tag_Callouts.AttVal_starts,tag_Callouts.AttVal_ends,carry_set_0.GetCarry(12),12);
    1024                 carry_set_0.CarryAdjust(13);
     1497                        carry_set_0.carryDequeueEnqueue(11,1);
     1498                }
     1499                ParseError_v6 = simd_or(ParseError_v6,simd_andc(EndTagEnds_v42,lex.RAngle));
     1500                if (bitblock::any(ParseError_v6))
     1501                {
     1502                        assert_0_error(ParseError_v6,"Tag parsing error found");
     1503                }
     1504                carry_set_0.getCarry(12) = bitblock::srli<127>(pablo_blk_SpanUpTo(tag_Callouts.AttVal_starts,tag_Callouts.AttVal_ends,carry_set_0.getCarry(12),_temp12_v45));
     1505                tag_Callouts.AttVal_spans = _temp12_v45;
     1506                carry_set_0.carryAdjust(13);
    10251507        }
    10261508       
    10271509        void do_final_block(struct Lex & lex,struct Marker & marker,struct Tag_Callouts & tag_Callouts,BitBlock & EOF_mask)
    10281510        {
    1029                 BitBlock EqExpected = simd<1>::constant<0>();
    1030                 BitBlock AttListEnd = simd<1>::constant<0>();
    1031                 BitBlock DQuoteDelim = simd_or(lex.DQuote,lex.LAngle);
    1032                 BitBlock SQuoteDelim = simd_or(lex.SQuote,lex.LAngle);
    1033                 BitBlock AttListDelim = simd_or(lex.Slash,lex.RAngle);
     1511                BitBlock EqExpected_v0;
     1512                BitBlock AttListEnd_v1;
     1513                BitBlock DQuoteDelim_v2;
     1514                BitBlock SQuoteDelim_v3;
     1515                BitBlock AttListDelim_v4;
     1516                BitBlock _temp0_v5;
     1517                BitBlock ParseError_v6;
     1518                BitBlock AfterWS_v7;
     1519                BitBlock _temp1_v8;
     1520                BitBlock AttNameStart_v9;
     1521                BitBlock AttNameFollow_v10;
     1522                BitBlock _temp2_v11;
     1523                BitBlock _temp3_v12;
     1524                BitBlock AttValPos_v13;
     1525                BitBlock _temp4_v14;
     1526                BitBlock DQuoteAttVal_v15;
     1527                BitBlock SQuoteAttVal_v16;
     1528                BitBlock DQuoteAttEnd_v17;
     1529                BitBlock _temp5_v18;
     1530                BitBlock SQuoteAttEnd_v19;
     1531                BitBlock _temp6_v20;
     1532                BitBlock AttValEnd_v21;
     1533                BitBlock AttValFollow_v22;
     1534                BitBlock _temp7_v23;
     1535                BitBlock _temp8_v24;
     1536                BitBlock AttNameFollow_v25;
     1537                BitBlock _temp2_v26;
     1538                BitBlock _temp3_v27;
     1539                BitBlock AttValPos_v28;
     1540                BitBlock _temp4_v29;
     1541                BitBlock DQuoteAttVal_v30;
     1542                BitBlock SQuoteAttVal_v31;
     1543                BitBlock DQuoteAttEnd_v32;
     1544                BitBlock _temp5_v33;
     1545                BitBlock SQuoteAttEnd_v34;
     1546                BitBlock _temp6_v35;
     1547                BitBlock AttValEnd_v36;
     1548                BitBlock AttValFollow_v37;
     1549                BitBlock _temp7_v38;
     1550                BitBlock _temp8_v39;
     1551                BitBlock STagEnds_v40;
     1552                BitBlock _temp9_v41;
     1553                BitBlock EndTagEnds_v42;
     1554                BitBlock _temp10_v43;
     1555                BitBlock _temp11_v44;
     1556                BitBlock _temp12_v45;
     1557                EqExpected_v0 = simd<1>::constant<0>();
     1558                AttListEnd_v1 = simd<1>::constant<0>();
     1559                DQuoteDelim_v2 = simd_or(lex.DQuote,lex.LAngle);
     1560                SQuoteDelim_v3 = simd_or(lex.SQuote,lex.LAngle);
     1561                AttListDelim_v4 = simd_or(lex.Slash,lex.RAngle);
    10341562                tag_Callouts.ElemName_starts = simd_andc(marker.LAngle_scope,lex.Slash);
    10351563                tag_Callouts.EndTag_marks = simd_and(marker.LAngle_scope,lex.Slash);
    1036                 tag_Callouts.ElemName_ends = carry_set_0.BitBlock_scanthru_ci_co(tag_Callouts.ElemName_starts,lex.NameScan,carry_set_0.GetCarry(0),0);
    1037                 BitBlock ParseError = simd_and(tag_Callouts.ElemName_starts,tag_Callouts.ElemName_ends);
     1564                carry_set_0.getCarry(0) = bitblock::srli<127>(pablo_blk_ScanThru(tag_Callouts.ElemName_starts,lex.NameScan,carry_set_0.getCarry(0),_temp0_v5));
     1565                tag_Callouts.ElemName_ends = _temp0_v5;
     1566                ParseError_v6 = simd_and(tag_Callouts.ElemName_starts,tag_Callouts.ElemName_ends);
    10381567                tag_Callouts.AttName_starts = simd<1>::constant<0>();
    10391568                tag_Callouts.AttName_ends = simd<1>::constant<0>();
    10401569                tag_Callouts.AttVal_starts = simd<1>::constant<0>();
    10411570                tag_Callouts.AttVal_ends = simd<1>::constant<0>();
    1042                 if (bitblock::any(simd_or(simd_and(tag_Callouts.ElemName_ends,lex.WS),carry_set_0.CarryRange(1,8))))
    1043                 {
    1044                         BitBlock AfterWS = carry_set_0.BitBlock_scanthru_ci_co(tag_Callouts.ElemName_ends,lex.WS,carry_set_0.GetCarry(1),1);
    1045                         AttListEnd = simd_and(AfterWS,AttListDelim);
    1046                         BitBlock AttNameStart = simd_andc(AfterWS,AttListDelim);
    1047                         if (bitblock::any(simd_or(simd_and(AttNameStart,EOF_mask),carry_set_0.CarryRange(2,7))))
    1048                         {
    1049                                 ParseError = simd_or(ParseError,simd_andc(AttNameStart,lex.NameScan));
    1050                                 tag_Callouts.AttName_starts = simd_or(tag_Callouts.AttName_starts,AttNameStart);
    1051                                 BitBlock AttNameFollow = carry_set_0.BitBlock_scanthru_ci_co(AttNameStart,lex.NameScan,carry_set_0.GetCarry(2),2);
    1052                                 tag_Callouts.AttName_ends = simd_or(tag_Callouts.AttName_ends,AttNameFollow);
    1053                                 if (bitblock::any(simd_or(simd_and(AttNameFollow,lex.WS),carry_set_0.CarryRange(3,1))))
    1054                                 {
    1055                                         EqExpected = carry_set_0.BitBlock_scanthru_ci_co(AttNameFollow,lex.WS,carry_set_0.GetCarry(3),3);
     1571                if (bitblock::any(simd_or(simd_and(tag_Callouts.ElemName_ends,lex.WS),carry_set_0.carryRange(1,8))))
     1572                {
     1573                        carry_set_0.getCarry(1) = bitblock::srli<127>(pablo_blk_ScanThru(tag_Callouts.ElemName_ends,lex.WS,carry_set_0.getCarry(1),_temp1_v8));
     1574                        AfterWS_v7 = _temp1_v8;
     1575                        AttListEnd_v1 = simd_and(AfterWS_v7,AttListDelim_v4);
     1576                        AttNameStart_v9 = simd_andc(AfterWS_v7,AttListDelim_v4);
     1577                        if (bitblock::any(simd_or(simd_and(AttNameStart_v9,EOF_mask),carry_set_0.carryRange(2,7))))
     1578                        {
     1579                                ParseError_v6 = simd_or(ParseError_v6,simd_andc(AttNameStart_v9,lex.NameScan));
     1580                                tag_Callouts.AttName_starts = simd_or(tag_Callouts.AttName_starts,AttNameStart_v9);
     1581                                carry_set_0.getCarry(2) = bitblock::srli<127>(pablo_blk_ScanThru(AttNameStart_v9,lex.NameScan,carry_set_0.getCarry(2),_temp2_v11));
     1582                                AttNameFollow_v10 = _temp2_v11;
     1583                                tag_Callouts.AttName_ends = simd_or(tag_Callouts.AttName_ends,AttNameFollow_v10);
     1584                                if (bitblock::any(simd_or(simd_and(AttNameFollow_v10,lex.WS),carry_set_0.carryRange(3,1))))
     1585                                {
     1586                                        carry_set_0.getCarry(3) = bitblock::srli<127>(pablo_blk_ScanThru(AttNameFollow_v10,lex.WS,carry_set_0.getCarry(3),_temp3_v12));
     1587                                        EqExpected_v0 = _temp3_v12;
    10561588                                }
    10571589                                else
    10581590                                {
    1059                                         EqExpected = AttNameFollow;
    1060                                         carry_set_0.CarryDequeueEnqueue(3,1);
    1061                                 }
    1062                                 ParseError = simd_or(ParseError,simd_andc(EqExpected,lex.Equals));
    1063                                 BitBlock AttValPos = carry_set_0.BitBlock_advance_then_scanthru(EqExpected,lex.WS,carry_set_0.GetCarry(4),4);
    1064                                 tag_Callouts.AttVal_starts = simd_or(tag_Callouts.AttVal_starts,AttValPos);
    1065                                 BitBlock DQuoteAttVal = simd_and(AttValPos,lex.DQuote);
    1066                                 BitBlock SQuoteAttVal = simd_and(AttValPos,lex.SQuote);
    1067                                 BitBlock DQuoteAttEnd = carry_set_0.BitBlock_advance_then_scanthru(DQuoteAttVal,simd_andc(EOF_mask,DQuoteDelim),carry_set_0.GetCarry(5),5);
    1068                                 BitBlock SQuoteAttEnd = carry_set_0.BitBlock_advance_then_scanthru(SQuoteAttVal,simd_andc(EOF_mask,SQuoteDelim),carry_set_0.GetCarry(6),6);
    1069                                 BitBlock AttValEnd = simd_or(DQuoteAttEnd,SQuoteAttEnd);
    1070                                 ParseError = simd_or(ParseError,simd_andc(simd_or(AttValPos,AttValEnd),simd_or(lex.DQuote,lex.SQuote)));
    1071                                 BitBlock AttValFollow = carry_set_0.BitBlock_advance_ci_co(AttValEnd,carry_set_0.GetCarry(7),7);
    1072                                 tag_Callouts.AttVal_ends = simd_or(tag_Callouts.AttVal_ends,AttValFollow);
    1073                                 if (bitblock::any(simd_or(simd_and(AttValFollow,lex.WS),carry_set_0.CarryRange(8,1))))
    1074                                 {
    1075                                         AfterWS = carry_set_0.BitBlock_scanthru_ci_co(AttValFollow,lex.WS,carry_set_0.GetCarry(8),8);
    1076                                         AttListEnd = simd_or(AttListEnd,simd_and(AfterWS,AttListDelim));
    1077                                         AttNameStart = simd_andc(AfterWS,AttListDelim);
     1591                                        EqExpected_v0 = AttNameFollow_v10;
     1592                                        carry_set_0.carryDequeueEnqueue(3,1);
     1593                                }
     1594                                ParseError_v6 = simd_or(ParseError_v6,simd_andc(EqExpected_v0,lex.Equals));
     1595                                carry_set_0.getCarry(4) = bitblock::srli<127>(pablo_blk_AdvanceThenScanThru(EqExpected_v0,lex.WS,carry_set_0.getCarry(4),_temp4_v14));
     1596                                AttValPos_v13 = _temp4_v14;
     1597                                tag_Callouts.AttVal_starts = simd_or(tag_Callouts.AttVal_starts,AttValPos_v13);
     1598                                DQuoteAttVal_v15 = simd_and(AttValPos_v13,lex.DQuote);
     1599                                SQuoteAttVal_v16 = simd_and(AttValPos_v13,lex.SQuote);
     1600                                carry_set_0.getCarry(5) = bitblock::srli<127>(pablo_blk_AdvanceThenScanThru(DQuoteAttVal_v15,simd_andc(EOF_mask,DQuoteDelim_v2),carry_set_0.getCarry(5),_temp5_v18));
     1601                                DQuoteAttEnd_v17 = _temp5_v18;
     1602                                carry_set_0.getCarry(6) = bitblock::srli<127>(pablo_blk_AdvanceThenScanThru(SQuoteAttVal_v16,simd_andc(EOF_mask,SQuoteDelim_v3),carry_set_0.getCarry(6),_temp6_v20));
     1603                                SQuoteAttEnd_v19 = _temp6_v20;
     1604                                AttValEnd_v21 = simd_or(DQuoteAttEnd_v17,SQuoteAttEnd_v19);
     1605                                ParseError_v6 = simd_or(ParseError_v6,simd_andc(simd_or(AttValPos_v13,AttValEnd_v21),simd_or(lex.DQuote,lex.SQuote)));
     1606                                carry_set_0.getCarry(7) = bitblock::srli<127>(pablo_blk_Advance(AttValEnd_v21,carry_set_0.getCarry(7),_temp7_v23));
     1607                                AttValFollow_v22 = _temp7_v23;
     1608                                tag_Callouts.AttVal_ends = simd_or(tag_Callouts.AttVal_ends,AttValFollow_v22);
     1609                                if (bitblock::any(simd_or(simd_and(AttValFollow_v22,lex.WS),carry_set_0.carryRange(8,1))))
     1610                                {
     1611                                        carry_set_0.getCarry(8) = bitblock::srli<127>(pablo_blk_ScanThru(AttValFollow_v22,lex.WS,carry_set_0.getCarry(8),_temp8_v24));
     1612                                        AfterWS_v7 = _temp8_v24;
     1613                                        AttListEnd_v1 = simd_or(AttListEnd_v1,simd_and(AfterWS_v7,AttListDelim_v4));
     1614                                        AttNameStart_v9 = simd_andc(AfterWS_v7,AttListDelim_v4);
    10781615                                }
    10791616                                else
    10801617                                {
    1081                                         AttListEnd = simd_or(AttListEnd,simd_and(AttValFollow,AttListDelim));
    1082                                         AttNameStart = simd_andc(AttValFollow,AttListDelim);
    1083                                         carry_set_0.CarryDequeueEnqueue(8,1);
    1084                                 }
    1085                                 ParseError = simd_or(ParseError,simd_and(AttValFollow,AttNameStart));
    1086                                 while (bitblock::any(simd_and(AttNameStart,EOF_mask)))
     1618                                        AttListEnd_v1 = simd_or(AttListEnd_v1,simd_and(AttValFollow_v22,AttListDelim_v4));
     1619                                        AttNameStart_v9 = simd_andc(AttValFollow_v22,AttListDelim_v4);
     1620                                        carry_set_0.carryDequeueEnqueue(8,1);
     1621                                }
     1622                                ParseError_v6 = simd_or(ParseError_v6,simd_and(AttValFollow_v22,AttNameStart_v9));
     1623                                while (bitblock::any(simd_and(AttNameStart_v9,EOF_mask)))
    10871624                                {
    10881625                                        CarryDeclare(carry_set_1,7,0);
    1089                                         ParseError = simd_or(ParseError,simd_andc(AttNameStart,lex.NameScan));
    1090                                         tag_Callouts.AttName_starts = simd_or(tag_Callouts.AttName_starts,AttNameStart);
    1091                                         BitBlock AttNameFollow = carry_set_1.BitBlock_scanthru_ci_co(AttNameStart,lex.NameScan,simd<1>::constant<0>(),0);
    1092                                         tag_Callouts.AttName_ends = simd_or(tag_Callouts.AttName_ends,AttNameFollow);
    1093                                         if (bitblock::any(simd_and(AttNameFollow,lex.WS)))
     1626                                        ParseError_v6 = simd_or(ParseError_v6,simd_andc(AttNameStart_v9,lex.NameScan));
     1627                                        tag_Callouts.AttName_starts = simd_or(tag_Callouts.AttName_starts,AttNameStart_v9);
     1628                                        carry_set_1.getCarry(0) = bitblock::srli<127>(pablo_blk_ScanThru(AttNameStart_v9,lex.NameScan,carry_set_1.getCarry(0),_temp2_v26));
     1629                                        AttNameFollow_v25 = _temp2_v26;
     1630                                        tag_Callouts.AttName_ends = simd_or(tag_Callouts.AttName_ends,AttNameFollow_v25);
     1631                                        if (bitblock::any(simd_and(AttNameFollow_v25,lex.WS)))
    10941632                                        {
    1095                                                 EqExpected = carry_set_1.BitBlock_scanthru_ci_co(AttNameFollow,lex.WS,simd<1>::constant<0>(),1);
     1633                                                carry_set_1.getCarry(1) = bitblock::srli<127>(pablo_blk_ScanThru(AttNameFollow_v25,lex.WS,carry_set_1.getCarry(1),_temp3_v27));
     1634                                                EqExpected_v0 = _temp3_v27;
    10961635                                        }
    10971636                                        else
    10981637                                        {
    1099                                                 EqExpected = AttNameFollow;
     1638                                                EqExpected_v0 = AttNameFollow_v25;
    11001639                                        }
    1101                                         ParseError = simd_or(ParseError,simd_andc(EqExpected,lex.Equals));
    1102                                         BitBlock AttValPos = carry_set_1.BitBlock_advance_then_scanthru(EqExpected,lex.WS,simd<1>::constant<0>(),2);
    1103                                         tag_Callouts.AttVal_starts = simd_or(tag_Callouts.AttVal_starts,AttValPos);
    1104                                         BitBlock DQuoteAttVal = simd_and(AttValPos,lex.DQuote);
    1105                                         BitBlock SQuoteAttVal = simd_and(AttValPos,lex.SQuote);
    1106                                         BitBlock DQuoteAttEnd = carry_set_1.BitBlock_advance_then_scanthru(DQuoteAttVal,simd_andc(EOF_mask,DQuoteDelim),simd<1>::constant<0>(),3);
    1107                                         BitBlock SQuoteAttEnd = carry_set_1.BitBlock_advance_then_scanthru(SQuoteAttVal,simd_andc(EOF_mask,SQuoteDelim),simd<1>::constant<0>(),4);
    1108                                         BitBlock AttValEnd = simd_or(DQuoteAttEnd,SQuoteAttEnd);
    1109                                         ParseError = simd_or(ParseError,simd_andc(simd_or(AttValPos,AttValEnd),simd_or(lex.DQuote,lex.SQuote)));
    1110                                         BitBlock AttValFollow = carry_set_1.BitBlock_advance_ci_co(AttValEnd,simd<1>::constant<0>(),5);
    1111                                         tag_Callouts.AttVal_ends = simd_or(tag_Callouts.AttVal_ends,AttValFollow);
    1112                                         if (bitblock::any(simd_and(AttValFollow,lex.WS)))
     1640                                        ParseError_v6 = simd_or(ParseError_v6,simd_andc(EqExpected_v0,lex.Equals));
     1641                                        carry_set_1.getCarry(2) = bitblock::srli<127>(pablo_blk_AdvanceThenScanThru(EqExpected_v0,lex.WS,carry_set_1.getCarry(2),_temp4_v29));
     1642                                        AttValPos_v28 = _temp4_v29;
     1643                                        tag_Callouts.AttVal_starts = simd_or(tag_Callouts.AttVal_starts,AttValPos_v28);
     1644                                        DQuoteAttVal_v30 = simd_and(AttValPos_v28,lex.DQuote);
     1645                                        SQuoteAttVal_v31 = simd_and(AttValPos_v28,lex.SQuote);
     1646                                        carry_set_1.getCarry(3) = bitblock::srli<127>(pablo_blk_AdvanceThenScanThru(DQuoteAttVal_v30,simd_andc(EOF_mask,DQuoteDelim_v2),carry_set_1.getCarry(3),_temp5_v33));
     1647                                        DQuoteAttEnd_v32 = _temp5_v33;
     1648                                        carry_set_1.getCarry(4) = bitblock::srli<127>(pablo_blk_AdvanceThenScanThru(SQuoteAttVal_v31,simd_andc(EOF_mask,SQuoteDelim_v3),carry_set_1.getCarry(4),_temp6_v35));
     1649                                        SQuoteAttEnd_v34 = _temp6_v35;
     1650                                        AttValEnd_v36 = simd_or(DQuoteAttEnd_v32,SQuoteAttEnd_v34);
     1651                                        ParseError_v6 = simd_or(ParseError_v6,simd_andc(simd_or(AttValPos_v28,AttValEnd_v36),simd_or(lex.DQuote,lex.SQuote)));
     1652                                        carry_set_1.getCarry(5) = bitblock::srli<127>(pablo_blk_Advance(AttValEnd_v36,carry_set_1.getCarry(5),_temp7_v38));
     1653                                        AttValFollow_v37 = _temp7_v38;
     1654                                        tag_Callouts.AttVal_ends = simd_or(tag_Callouts.AttVal_ends,AttValFollow_v37);
     1655                                        if (bitblock::any(simd_and(AttValFollow_v37,lex.WS)))
    11131656                                        {
    1114                                                 AfterWS = carry_set_1.BitBlock_scanthru_ci_co(AttValFollow,lex.WS,simd<1>::constant<0>(),6);
    1115                                                 AttListEnd = simd_or(AttListEnd,simd_and(AfterWS,AttListDelim));
    1116                                                 AttNameStart = simd_andc(AfterWS,AttListDelim);
     1657                                                carry_set_1.getCarry(6) = bitblock::srli<127>(pablo_blk_ScanThru(AttValFollow_v37,lex.WS,carry_set_1.getCarry(6),_temp8_v39));
     1658                                                AfterWS_v7 = _temp8_v39;
     1659                                                AttListEnd_v1 = simd_or(AttListEnd_v1,simd_and(AfterWS_v7,AttListDelim_v4));
     1660                                                AttNameStart_v9 = simd_andc(AfterWS_v7,AttListDelim_v4);
    11171661                                        }
    11181662                                        else
    11191663                                        {
    1120                                                 AttListEnd = simd_or(AttListEnd,simd_and(AttValFollow,AttListDelim));
    1121                                                 AttNameStart = simd_andc(AttValFollow,AttListDelim);
     1664                                                AttListEnd_v1 = simd_or(AttListEnd_v1,simd_and(AttValFollow_v37,AttListDelim_v4));
     1665                                                AttNameStart_v9 = simd_andc(AttValFollow_v37,AttListDelim_v4);
    11221666                                        }
    1123                                         ParseError = simd_or(ParseError,simd_and(AttValFollow,AttNameStart));
     1667                                        ParseError_v6 = simd_or(ParseError_v6,simd_and(AttValFollow_v37,AttNameStart_v9));
    11241668                                        LocalCarryCombine(carry_set_0,carry_set_1,2,7);
    11251669                                }
     
    11271671                        else
    11281672                        {
    1129                                 carry_set_0.CarryDequeueEnqueue(2,7);
     1673                                carry_set_0.carryDequeueEnqueue(2,7);
    11301674                        }
    11311675                }
    11321676                else
    11331677                {
    1134                         AttListEnd = simd_and(tag_Callouts.ElemName_ends,AttListDelim);
    1135                         ParseError = simd_or(ParseError,simd_andc(tag_Callouts.ElemName_ends,AttListDelim));
    1136                         carry_set_0.CarryDequeueEnqueue(1,8);
    1137                 }
    1138                 BitBlock STagEnds = simd_and(AttListEnd,lex.RAngle);
    1139                 tag_Callouts.EmptyTag_marks = carry_set_0.BitBlock_advance_ci_co(simd_and(AttListEnd,lex.Slash),carry_set_0.GetCarry(9),9);
    1140                 ParseError = simd_or(ParseError,simd_andc(tag_Callouts.EmptyTag_marks,lex.RAngle));
    1141                 BitBlock EndTagEnds = carry_set_0.BitBlock_advance_then_scanthru(tag_Callouts.EndTag_marks,lex.NameScan,carry_set_0.GetCarry(10),10);
    1142                 if (bitblock::any(simd_or(simd_and(EndTagEnds,lex.WS),carry_set_0.CarryRange(11,1))))
    1143                 {
    1144                         EndTagEnds = carry_set_0.BitBlock_scanthru_ci_co(EndTagEnds,lex.WS,carry_set_0.GetCarry(11),11);
     1678                        AttListEnd_v1 = simd_and(tag_Callouts.ElemName_ends,AttListDelim_v4);
     1679                        ParseError_v6 = simd_or(ParseError_v6,simd_andc(tag_Callouts.ElemName_ends,AttListDelim_v4));
     1680                        carry_set_0.carryDequeueEnqueue(1,8);
     1681                }
     1682                STagEnds_v40 = simd_and(AttListEnd_v1,lex.RAngle);
     1683                carry_set_0.getCarry(9) = bitblock::srli<127>(pablo_blk_Advance(simd_and(AttListEnd_v1,lex.Slash),carry_set_0.getCarry(9),_temp9_v41));
     1684                tag_Callouts.EmptyTag_marks = _temp9_v41;
     1685                ParseError_v6 = simd_or(ParseError_v6,simd_andc(tag_Callouts.EmptyTag_marks,lex.RAngle));
     1686                carry_set_0.getCarry(10) = bitblock::srli<127>(pablo_blk_AdvanceThenScanThru(tag_Callouts.EndTag_marks,lex.NameScan,carry_set_0.getCarry(10),_temp10_v43));
     1687                EndTagEnds_v42 = _temp10_v43;
     1688                if (bitblock::any(simd_or(simd_and(EndTagEnds_v42,lex.WS),carry_set_0.carryRange(11,1))))
     1689                {
     1690                        carry_set_0.getCarry(11) = bitblock::srli<127>(pablo_blk_ScanThru(EndTagEnds_v42,lex.WS,carry_set_0.getCarry(11),_temp11_v44));
     1691                        EndTagEnds_v42 = _temp11_v44;
    11451692                }
    11461693                else
    11471694                {
    1148                         carry_set_0.CarryDequeueEnqueue(11,1);
    1149                 }
    1150                 ParseError = simd_or(ParseError,simd_andc(EndTagEnds,lex.RAngle));
    1151                 if (bitblock::any(ParseError))
    1152                 {
    1153                         assert_0_error("Tag parsing error found",ParseError);
    1154                 }
    1155                 tag_Callouts.AttVal_spans = carry_set_0.BitBlock_span_upto(tag_Callouts.AttVal_starts,tag_Callouts.AttVal_ends,carry_set_0.GetCarry(12),12);
     1695                        carry_set_0.carryDequeueEnqueue(11,1);
     1696                }
     1697                ParseError_v6 = simd_or(ParseError_v6,simd_andc(EndTagEnds_v42,lex.RAngle));
     1698                if (bitblock::any(ParseError_v6))
     1699                {
     1700                        assert_0_error(ParseError_v6,"Tag parsing error found");
     1701                }
     1702                carry_set_0.getCarry(12) = bitblock::srli<127>(pablo_blk_SpanUpTo(tag_Callouts.AttVal_starts,tag_Callouts.AttVal_ends,carry_set_0.getCarry(12),_temp12_v45));
     1703                tag_Callouts.AttVal_spans = _temp12_v45;
    11561704        }
    11571705       
     
    11641712        {
    11651713        }
    1166          
     1714       
    11671715        IDISA_INLINE void do_block(struct Lex & lex,struct Marker & marker,struct Ref_Callouts & ref_Callouts)
    11681716        {
     1717                BitBlock ref_error_v0;
     1718                BitBlock Ref_scope_v1;
     1719                BitBlock _temp0_v2;
     1720                BitBlock NumRef2_v3;
     1721                BitBlock NumRef3_v4;
     1722                BitBlock _temp1_v5;
     1723                BitBlock HexRef3_v6;
     1724                BitBlock _temp2_v7;
     1725                BitBlock _temp3_v8;
     1726                BitBlock _temp4_v9;
     1727                BitBlock _temp5_v10;
     1728                BitBlock ref_error1_v11;
     1729                BitBlock ref_error2_v12;
     1730                BitBlock ref_ends_v13;
     1731                BitBlock ref_error3_v14;
    11691732                ref_Callouts.GenRef_starts = simd<1>::constant<0>();
    11701733                ref_Callouts.GenRef_ends = simd<1>::constant<0>();
     
    11731736                ref_Callouts.HexRef_starts = simd<1>::constant<0>();
    11741737                ref_Callouts.HexRef_ends = simd<1>::constant<0>();
    1175                 BitBlock ref_error = simd<1>::constant<0>();
    1176                 if (bitblock::any(simd_or(marker.Ref_opener,carry_set_0.CarryRange(0,6))))
    1177                 {
    1178                         BitBlock Ref_scope = carry_set_0.BitBlock_advance_ci_co(marker.Ref_opener,carry_set_0.GetCarry(0),0);
    1179                         BitBlock NumRef2 = simd_and(Ref_scope,lex.Hash);
    1180                         ref_Callouts.GenRef_starts = simd_andc(Ref_scope,lex.Hash);
    1181                         BitBlock NumRef3 = carry_set_0.BitBlock_advance_ci_co(NumRef2,carry_set_0.GetCarry(1),1);
    1182                         BitBlock HexRef3 = simd_and(NumRef3,lex.x);
    1183                         ref_Callouts.DecRef_starts = simd_andc(NumRef3,lex.x);
    1184                         ref_Callouts.HexRef_starts = carry_set_0.BitBlock_advance_ci_co(HexRef3,carry_set_0.GetCarry(2),2);
    1185                         ref_Callouts.GenRef_ends = carry_set_0.BitBlock_scanthru_ci_co(ref_Callouts.GenRef_starts,lex.NameScan,carry_set_0.GetCarry(3),3);
    1186                         ref_Callouts.DecRef_ends = carry_set_0.BitBlock_scanthru_ci_co(ref_Callouts.DecRef_starts,lex.Digit,carry_set_0.GetCarry(4),4);
    1187                         ref_Callouts.HexRef_ends = carry_set_0.BitBlock_scanthru_ci_co(ref_Callouts.HexRef_starts,lex.Hex,carry_set_0.GetCarry(5),5);
    1188                         BitBlock ref_error1 = simd_andc(ref_Callouts.DecRef_starts,lex.Digit);
    1189                         BitBlock ref_error2 = simd_andc(ref_Callouts.HexRef_starts,lex.Hex);
    1190                         BitBlock ref_ends = simd_or(simd_or(ref_Callouts.GenRef_ends,ref_Callouts.DecRef_ends),ref_Callouts.HexRef_ends);
    1191                         BitBlock ref_error3 = simd_andc(ref_ends,lex.Semicolon);
    1192                         if (bitblock::any(simd_or(simd_or(ref_error1,ref_error2),ref_error3)))
    1193                         {
    1194                                 assert_0_error("Reference error found",simd_or(simd_or(ref_error1,ref_error2),ref_error3));
     1738                ref_error_v0 = simd<1>::constant<0>();
     1739                if (bitblock::any(simd_or(marker.Ref_opener,carry_set_0.carryRange(0,6))))
     1740                {
     1741                        carry_set_0.getCarry(0) = bitblock::srli<127>(pablo_blk_Advance(marker.Ref_opener,carry_set_0.getCarry(0),_temp0_v2));
     1742                        Ref_scope_v1 = _temp0_v2;
     1743                        NumRef2_v3 = simd_and(Ref_scope_v1,lex.Hash);
     1744                        ref_Callouts.GenRef_starts = simd_andc(Ref_scope_v1,lex.Hash);
     1745                        carry_set_0.getCarry(1) = bitblock::srli<127>(pablo_blk_Advance(NumRef2_v3,carry_set_0.getCarry(1),_temp1_v5));
     1746                        NumRef3_v4 = _temp1_v5;
     1747                        HexRef3_v6 = simd_and(NumRef3_v4,lex.x);
     1748                        ref_Callouts.DecRef_starts = simd_andc(NumRef3_v4,lex.x);
     1749                        carry_set_0.getCarry(2) = bitblock::srli<127>(pablo_blk_Advance(HexRef3_v6,carry_set_0.getCarry(2),_temp2_v7));
     1750                        ref_Callouts.HexRef_starts = _temp2_v7;
     1751                        carry_set_0.getCarry(3) = bitblock::srli<127>(pablo_blk_ScanThru(ref_Callouts.GenRef_starts,lex.NameScan,carry_set_0.getCarry(3),_temp3_v8));
     1752                        ref_Callouts.GenRef_ends = _temp3_v8;
     1753                        carry_set_0.getCarry(4) = bitblock::srli<127>(pablo_blk_ScanThru(ref_Callouts.DecRef_starts,lex.Digit,carry_set_0.getCarry(4),_temp4_v9));
     1754                        ref_Callouts.DecRef_ends = _temp4_v9;
     1755                        carry_set_0.getCarry(5) = bitblock::srli<127>(pablo_blk_ScanThru(ref_Callouts.HexRef_starts,lex.Hex,carry_set_0.getCarry(5),_temp5_v10));
     1756                        ref_Callouts.HexRef_ends = _temp5_v10;
     1757                        ref_error1_v11 = simd_andc(ref_Callouts.DecRef_starts,lex.Digit);
     1758                        ref_error2_v12 = simd_andc(ref_Callouts.HexRef_starts,lex.Hex);
     1759                        ref_ends_v13 = simd_or(simd_or(ref_Callouts.GenRef_ends,ref_Callouts.DecRef_ends),ref_Callouts.HexRef_ends);
     1760                        ref_error3_v14 = simd_andc(ref_ends_v13,lex.Semicolon);
     1761                        if (bitblock::any(simd_or(simd_or(ref_error1_v11,ref_error2_v12),ref_error3_v14)))
     1762                        {
     1763                                assert_0_error(simd_or(simd_or(ref_error1_v11,ref_error2_v12),ref_error3_v14),"Reference error found");
    11951764                        }
    11961765                }
    11971766                else
    11981767                {
    1199                         carry_set_0.CarryDequeueEnqueue(0,6);
    1200                 }
    1201                 carry_set_0.CarryAdjust(6);
     1768                        carry_set_0.carryDequeueEnqueue(0,6);
     1769                }
     1770                carry_set_0.carryAdjust(6);
    12021771        }
    12031772       
    12041773        void do_final_block(struct Lex & lex,struct Marker & marker,struct Ref_Callouts & ref_Callouts,BitBlock & EOF_mask)
    12051774        {
     1775                BitBlock ref_error_v0;
     1776                BitBlock Ref_scope_v1;
     1777                BitBlock _temp0_v2;
     1778                BitBlock NumRef2_v3;
     1779                BitBlock NumRef3_v4;
     1780                BitBlock _temp1_v5;
     1781                BitBlock HexRef3_v6;
     1782                BitBlock _temp2_v7;
     1783                BitBlock _temp3_v8;
     1784                BitBlock _temp4_v9;
     1785                BitBlock _temp5_v10;
     1786                BitBlock ref_error1_v11;
     1787                BitBlock ref_error2_v12;
     1788                BitBlock ref_ends_v13;
     1789                BitBlock ref_error3_v14;
    12061790                ref_Callouts.GenRef_starts = simd<1>::constant<0>();
    12071791                ref_Callouts.GenRef_ends = simd<1>::constant<0>();
     
    12101794                ref_Callouts.HexRef_starts = simd<1>::constant<0>();
    12111795                ref_Callouts.HexRef_ends = simd<1>::constant<0>();
    1212                 BitBlock ref_error = simd<1>::constant<0>();
    1213                 if (bitblock::any(simd_or(marker.Ref_opener,carry_set_0.CarryRange(0,6))))
    1214                 {
    1215                         BitBlock Ref_scope = carry_set_0.BitBlock_advance_ci_co(marker.Ref_opener,carry_set_0.GetCarry(0),0);
    1216                         BitBlock NumRef2 = simd_and(Ref_scope,lex.Hash);
    1217                         ref_Callouts.GenRef_starts = simd_andc(Ref_scope,lex.Hash);
    1218                         BitBlock NumRef3 = carry_set_0.BitBlock_advance_ci_co(NumRef2,carry_set_0.GetCarry(1),1);
    1219                         BitBlock HexRef3 = simd_and(NumRef3,lex.x);
    1220                         ref_Callouts.DecRef_starts = simd_andc(NumRef3,lex.x);
    1221                         ref_Callouts.HexRef_starts = carry_set_0.BitBlock_advance_ci_co(HexRef3,carry_set_0.GetCarry(2),2);
    1222                         ref_Callouts.GenRef_ends = carry_set_0.BitBlock_scanthru_ci_co(ref_Callouts.GenRef_starts,lex.NameScan,carry_set_0.GetCarry(3),3);
    1223                         ref_Callouts.DecRef_ends = carry_set_0.BitBlock_scanthru_ci_co(ref_Callouts.DecRef_starts,lex.Digit,carry_set_0.GetCarry(4),4);
    1224                         ref_Callouts.HexRef_ends = carry_set_0.BitBlock_scanthru_ci_co(ref_Callouts.HexRef_starts,lex.Hex,carry_set_0.GetCarry(5),5);
    1225                         BitBlock ref_error1 = simd_andc(ref_Callouts.DecRef_starts,lex.Digit);
    1226                         BitBlock ref_error2 = simd_andc(ref_Callouts.HexRef_starts,lex.Hex);
    1227                         BitBlock ref_ends = simd_or(simd_or(ref_Callouts.GenRef_ends,ref_Callouts.DecRef_ends),ref_Callouts.HexRef_ends);
    1228                         BitBlock ref_error3 = simd_andc(ref_ends,lex.Semicolon);
    1229                         if (bitblock::any(simd_or(simd_or(ref_error1,ref_error2),ref_error3)))
    1230                         {
    1231                                 assert_0_error("Reference error found",simd_or(simd_or(ref_error1,ref_error2),ref_error3));
     1796                ref_error_v0 = simd<1>::constant<0>();
     1797                if (bitblock::any(simd_or(marker.Ref_opener,carry_set_0.carryRange(0,6))))
     1798                {
     1799                        carry_set_0.getCarry(0) = bitblock::srli<127>(pablo_blk_Advance(marker.Ref_opener,carry_set_0.getCarry(0),_temp0_v2));
     1800                        Ref_scope_v1 = _temp0_v2;
     1801                        NumRef2_v3 = simd_and(Ref_scope_v1,lex.Hash);
     1802                        ref_Callouts.GenRef_starts = simd_andc(Ref_scope_v1,lex.Hash);
     1803                        carry_set_0.getCarry(1) = bitblock::srli<127>(pablo_blk_Advance(NumRef2_v3,carry_set_0.getCarry(1),_temp1_v5));
     1804                        NumRef3_v4 = _temp1_v5;
     1805                        HexRef3_v6 = simd_and(NumRef3_v4,lex.x);
     1806                        ref_Callouts.DecRef_starts = simd_andc(NumRef3_v4,lex.x);
     1807                        carry_set_0.getCarry(2) = bitblock::srli<127>(pablo_blk_Advance(HexRef3_v6,carry_set_0.getCarry(2),_temp2_v7));
     1808                        ref_Callouts.HexRef_starts = _temp2_v7;
     1809                        carry_set_0.getCarry(3) = bitblock::srli<127>(pablo_blk_ScanThru(ref_Callouts.GenRef_starts,lex.NameScan,carry_set_0.getCarry(3),_temp3_v8));
     1810                        ref_Callouts.GenRef_ends = _temp3_v8;
     1811                        carry_set_0.getCarry(4) = bitblock::srli<127>(pablo_blk_ScanThru(ref_Callouts.DecRef_starts,lex.Digit,carry_set_0.getCarry(4),_temp4_v9));
     1812                        ref_Callouts.DecRef_ends = _temp4_v9;
     1813                        carry_set_0.getCarry(5) = bitblock::srli<127>(pablo_blk_ScanThru(ref_Callouts.HexRef_starts,lex.Hex,carry_set_0.getCarry(5),_temp5_v10));
     1814                        ref_Callouts.HexRef_ends = _temp5_v10;
     1815                        ref_error1_v11 = simd_andc(ref_Callouts.DecRef_starts,lex.Digit);
     1816                        ref_error2_v12 = simd_andc(ref_Callouts.HexRef_starts,lex.Hex);
     1817                        ref_ends_v13 = simd_or(simd_or(ref_Callouts.GenRef_ends,ref_Callouts.DecRef_ends),ref_Callouts.HexRef_ends);
     1818                        ref_error3_v14 = simd_andc(ref_ends_v13,lex.Semicolon);
     1819                        if (bitblock::any(simd_or(simd_or(ref_error1_v11,ref_error2_v12),ref_error3_v14)))
     1820                        {
     1821                                assert_0_error(simd_or(simd_or(ref_error1_v11,ref_error2_v12),ref_error3_v14),"Reference error found");
    12321822                        }
    12331823                }
    12341824                else
    12351825                {
    1236                         carry_set_0.CarryDequeueEnqueue(0,6);
     1826                        carry_set_0.carryDequeueEnqueue(0,6);
    12371827                }
    12381828        }
     
    12461836        {
    12471837        }
    1248          
     1838       
    12491839        IDISA_INLINE void do_block(struct CtCDPI_Callouts & ctCDPI_Callouts,struct Ref_Callouts & ref_Callouts,struct Tag_Callouts & tag_Callouts,struct Lex & lex,struct U8 & u8,struct Check_streams & check_streams)
    12501840        {
    1251                 BitBlock PI_names = carry_set_0.BitBlock_span_upto(ctCDPI_Callouts.PI_name_starts,ctCDPI_Callouts.PI_name_ends,carry_set_0.GetCarry(0),0);
    1252                 BitBlock GenRefs = carry_set_0.BitBlock_span_upto(ref_Callouts.GenRef_starts,ref_Callouts.GenRef_ends,carry_set_0.GetCarry(1),1);
    1253                 BitBlock ElemNames = carry_set_0.BitBlock_span_upto(tag_Callouts.ElemName_starts,tag_Callouts.ElemName_ends,carry_set_0.GetCarry(2),2);
    1254                 BitBlock AttNames = carry_set_0.BitBlock_span_upto(tag_Callouts.AttName_starts,tag_Callouts.AttName_ends,carry_set_0.GetCarry(3),3);
    1255                 BitBlock qname_stream = simd_or(ElemNames,AttNames);
    1256                 BitBlock ncname_stream = simd_or(PI_names,GenRefs);
    1257                 BitBlock name_stream = simd_or(qname_stream,ncname_stream);
    1258                 BitBlock name_start = simd_andc(name_stream,carry_set_0.BitBlock_advance_ci_co(name_stream,carry_set_0.GetCarry(4),4));
    1259                 BitBlock name_cursor = simd_andc(name_stream,carry_set_0.BitBlock_advance_ci_co(name_stream,carry_set_0.GetCarry(5),5));
    1260                 BitBlock void_prefix_err = simd_and(name_cursor,lex.Colon);
    1261                 BitBlock namespace_sep = simd_and(carry_set_0.BitBlock_scanthru_ci_co(name_cursor,simd_andc(lex.NameScan,lex.Colon),carry_set_0.GetCarry(6),6),lex.Colon);
    1262                 BitBlock local_part_start = carry_set_0.BitBlock_advance_ci_co(namespace_sep,carry_set_0.GetCarry(7),7);
    1263                 BitBlock local_part_err = simd_andc(local_part_start,lex.NameScan);
    1264                 BitBlock colon2_err = simd_and(carry_set_0.BitBlock_scanthru_ci_co(local_part_start,simd_andc(lex.NameScan,lex.Colon),carry_set_0.GetCarry(8),8),lex.Colon);
    1265                 BitBlock ncname_err = simd_and(ncname_stream,lex.Colon);
    1266                 if (bitblock::any(simd_or(simd_or(simd_or(void_prefix_err,local_part_err),colon2_err),ncname_err)))
    1267                 {
    1268                         assert_0_error("name syntax error",simd_or(simd_or(simd_or(void_prefix_err,local_part_err),colon2_err),ncname_err));
    1269                 }
    1270                 check_streams.non_ascii_name_starts = simd_andc(name_start,lex.ASCII_name_start);
    1271                 check_streams.non_ascii_names = simd_andc(simd_andc(simd_andc(name_stream,name_start),lex.ASCII_name_char),u8.suffix);
    1272                 carry_set_0.CarryAdjust(9);
     1841                BitBlock PI_names_v0;
     1842                BitBlock _temp0_v1;
     1843                BitBlock GenRefs_v2;
     1844                BitBlock _temp1_v3;
     1845                BitBlock ElemNames_v4;
     1846                BitBlock _temp2_v5;
     1847                BitBlock AttNames_v6;
     1848                BitBlock _temp3_v7;
     1849                BitBlock qname_stream_v8;
     1850                BitBlock ncname_stream_v9;
     1851                BitBlock name_stream_v10;
     1852                BitBlock name_start_v11;
     1853                BitBlock _temp4_v12;
     1854                BitBlock name_cursor_v13;
     1855                BitBlock _temp5_v14;
     1856                BitBlock void_prefix_err_v15;
     1857                BitBlock namespace_sep_v16;
     1858                BitBlock _temp6_v17;
     1859                BitBlock local_part_start_v18;
     1860                BitBlock _temp7_v19;
     1861                BitBlock local_part_err_v20;
     1862                BitBlock colon2_err_v21;
     1863                BitBlock _temp8_v22;
     1864                BitBlock ncname_err_v23;
     1865                carry_set_0.getCarry(0) = bitblock::srli<127>(pablo_blk_SpanUpTo(ctCDPI_Callouts.PI_name_starts,ctCDPI_Callouts.PI_name_ends,carry_set_0.getCarry(0),_temp0_v1));
     1866                PI_names_v0 = _temp0_v1;
     1867                carry_set_0.getCarry(1) = bitblock::srli<127>(pablo_blk_SpanUpTo(ref_Callouts.GenRef_starts,ref_Callouts.GenRef_ends,carry_set_0.getCarry(1),_temp1_v3));
     1868                GenRefs_v2 = _temp1_v3;
     1869                carry_set_0.getCarry(2) = bitblock::srli<127>(pablo_blk_SpanUpTo(tag_Callouts.ElemName_starts,tag_Callouts.ElemName_ends,carry_set_0.getCarry(2),_temp2_v5));
     1870                ElemNames_v4 = _temp2_v5;
     1871                carry_set_0.getCarry(3) = bitblock::srli<127>(pablo_blk_SpanUpTo(tag_Callouts.AttName_starts,tag_Callouts.AttName_ends,carry_set_0.getCarry(3),_temp3_v7));
     1872                AttNames_v6 = _temp3_v7;
     1873                qname_stream_v8 = simd_or(ElemNames_v4,AttNames_v6);
     1874                ncname_stream_v9 = simd_or(PI_names_v0,GenRefs_v2);
     1875                name_stream_v10 = simd_or(qname_stream_v8,ncname_stream_v9);
     1876                carry_set_0.getCarry(4) = bitblock::srli<127>(pablo_blk_Advance(name_stream_v10,carry_set_0.getCarry(4),_temp4_v12));
     1877                name_start_v11 = simd_andc(name_stream_v10,_temp4_v12);
     1878                carry_set_0.getCarry(5) = bitblock::srli<127>(pablo_blk_Advance(name_stream_v10,carry_set_0.getCarry(5),_temp5_v14));
     1879                name_cursor_v13 = simd_andc(name_stream_v10,_temp5_v14);
     1880                void_prefix_err_v15 = simd_and(name_cursor_v13,lex.Colon);
     1881                carry_set_0.getCarry(6) = bitblock::srli<127>(pablo_blk_ScanThru(name_cursor_v13,simd_andc(lex.NameScan,lex.Colon),carry_set_0.getCarry(6),_temp6_v17));
     1882                namespace_sep_v16 = simd_and(_temp6_v17,lex.Colon);
     1883                carry_set_0.getCarry(7) = bitblock::srli<127>(pablo_blk_Advance(namespace_sep_v16,carry_set_0.getCarry(7),_temp7_v19));
     1884                local_part_start_v18 = _temp7_v19;
     1885                local_part_err_v20 = simd_andc(local_part_start_v18,lex.NameScan);
     1886                carry_set_0.getCarry(8) = bitblock::srli<127>(pablo_blk_ScanThru(local_part_start_v18,simd_andc(lex.NameScan,lex.Colon),carry_set_0.getCarry(8),_temp8_v22));
     1887                colon2_err_v21 = simd_and(_temp8_v22,lex.Colon);
     1888                ncname_err_v23 = simd_and(ncname_stream_v9,lex.Colon);
     1889                if (bitblock::any(simd_or(simd_or(simd_or(void_prefix_err_v15,local_part_err_v20),colon2_err_v21),ncname_err_v23)))
     1890                {
     1891                        assert_0_error(simd_or(simd_or(simd_or(void_prefix_err_v15,local_part_err_v20),colon2_err_v21),ncname_err_v23),"name syntax error");
     1892                }
     1893                check_streams.non_ascii_name_starts = simd_andc(name_start_v11,lex.ASCII_name_start);
     1894                check_streams.non_ascii_names = simd_andc(simd_andc(simd_andc(name_stream_v10,name_start_v11),lex.ASCII_name_char),u8.suffix);
     1895                carry_set_0.carryAdjust(9);
    12731896        }
    12741897       
    12751898        void do_final_block(struct CtCDPI_Callouts & ctCDPI_Callouts,struct Ref_Callouts & ref_Callouts,struct Tag_Callouts & tag_Callouts,struct Lex & lex,struct U8 & u8,struct Check_streams & check_streams,BitBlock & EOF_mask)
    12761899        {
    1277                 BitBlock PI_names = carry_set_0.BitBlock_span_upto(ctCDPI_Callouts.PI_name_starts,ctCDPI_Callouts.PI_name_ends,carry_set_0.GetCarry(0),0);
    1278                 BitBlock GenRefs = carry_set_0.BitBlock_span_upto(ref_Callouts.GenRef_starts,ref_Callouts.GenRef_ends,carry_set_0.GetCarry(1),1);
    1279                 BitBlock ElemNames = carry_set_0.BitBlock_span_upto(tag_Callouts.ElemName_starts,tag_Callouts.ElemName_ends,carry_set_0.GetCarry(2),2);
    1280                 BitBlock AttNames = carry_set_0.BitBlock_span_upto(tag_Callouts.AttName_starts,tag_Callouts.AttName_ends,carry_set_0.GetCarry(3),3);
    1281                 BitBlock qname_stream = simd_or(ElemNames,AttNames);
    1282                 BitBlock ncname_stream = simd_or(PI_names,GenRefs);
    1283                 BitBlock name_stream = simd_or(qname_stream,ncname_stream);
    1284                 BitBlock name_start = simd_andc(name_stream,carry_set_0.BitBlock_advance_ci_co(name_stream,carry_set_0.GetCarry(4),4));
    1285                 BitBlock name_cursor = simd_andc(name_stream,carry_set_0.BitBlock_advance_ci_co(name_stream,carry_set_0.GetCarry(5),5));
    1286                 BitBlock void_prefix_err = simd_and(name_cursor,lex.Colon);
    1287                 BitBlock namespace_sep = simd_and(carry_set_0.BitBlock_scanthru_ci_co(name_cursor,simd_andc(lex.NameScan,lex.Colon),carry_set_0.GetCarry(6),6),lex.Colon);
    1288                 BitBlock local_part_start = carry_set_0.BitBlock_advance_ci_co(namespace_sep,carry_set_0.GetCarry(7),7);
    1289                 BitBlock local_part_err = simd_andc(local_part_start,lex.NameScan);
    1290                 BitBlock colon2_err = simd_and(carry_set_0.BitBlock_scanthru_ci_co(local_part_start,simd_andc(lex.NameScan,lex.Colon),carry_set_0.GetCarry(8),8),lex.Colon);
    1291                 BitBlock ncname_err = simd_and(ncname_stream,lex.Colon);
    1292                 if (bitblock::any(simd_or(simd_or(simd_or(void_prefix_err,local_part_err),colon2_err),ncname_err)))
    1293                 {
    1294                         assert_0_error("name syntax error",simd_or(simd_or(simd_or(void_prefix_err,local_part_err),colon2_err),ncname_err));
    1295                 }
    1296                 check_streams.non_ascii_name_starts = simd_andc(name_start,lex.ASCII_name_start);
    1297                 check_streams.non_ascii_names = simd_andc(simd_andc(simd_andc(name_stream,name_start),lex.ASCII_name_char),u8.suffix);
     1900                BitBlock PI_names_v0;
     1901                BitBlock _temp0_v1;
     1902                BitBlock GenRefs_v2;
     1903                BitBlock _temp1_v3;
     1904                BitBlock ElemNames_v4;
     1905                BitBlock _temp2_v5;
     1906                BitBlock AttNames_v6;
     1907                BitBlock _temp3_v7;
     1908                BitBlock qname_stream_v8;
     1909                BitBlock ncname_stream_v9;
     1910                BitBlock name_stream_v10;
     1911                BitBlock name_start_v11;
     1912                BitBlock _temp4_v12;
     1913                BitBlock name_cursor_v13;
     1914                BitBlock _temp5_v14;
     1915                BitBlock void_prefix_err_v15;
     1916                BitBlock namespace_sep_v16;
     1917                BitBlock _temp6_v17;
     1918                BitBlock local_part_start_v18;
     1919                BitBlock _temp7_v19;
     1920                BitBlock local_part_err_v20;
     1921                BitBlock colon2_err_v21;
     1922                BitBlock _temp8_v22;
     1923                BitBlock ncname_err_v23;
     1924                carry_set_0.getCarry(0) = bitblock::srli<127>(pablo_blk_SpanUpTo(ctCDPI_Callouts.PI_name_starts,ctCDPI_Callouts.PI_name_ends,carry_set_0.getCarry(0),_temp0_v1));
     1925                PI_names_v0 = _temp0_v1;
     1926                carry_set_0.getCarry(1) = bitblock::srli<127>(pablo_blk_SpanUpTo(ref_Callouts.GenRef_starts,ref_Callouts.GenRef_ends,carry_set_0.getCarry(1),_temp1_v3));
     1927                GenRefs_v2 = _temp1_v3;
     1928                carry_set_0.getCarry(2) = bitblock::srli<127>(pablo_blk_SpanUpTo(tag_Callouts.ElemName_starts,tag_Callouts.ElemName_ends,carry_set_0.getCarry(2),_temp2_v5));
     1929                ElemNames_v4 = _temp2_v5;
     1930                carry_set_0.getCarry(3) = bitblock::srli<127>(pablo_blk_SpanUpTo(tag_Callouts.AttName_starts,tag_Callouts.AttName_ends,carry_set_0.getCarry(3),_temp3_v7));
     1931                AttNames_v6 = _temp3_v7;
     1932                qname_stream_v8 = simd_or(ElemNames_v4,AttNames_v6);
     1933                ncname_stream_v9 = simd_or(PI_names_v0,GenRefs_v2);
     1934                name_stream_v10 = simd_or(qname_stream_v8,ncname_stream_v9);
     1935                carry_set_0.getCarry(4) = bitblock::srli<127>(pablo_blk_Advance(name_stream_v10,carry_set_0.getCarry(4),_temp4_v12));
     1936                name_start_v11 = simd_andc(name_stream_v10,_temp4_v12);
     1937                carry_set_0.getCarry(5) = bitblock::srli<127>(pablo_blk_Advance(name_stream_v10,carry_set_0.getCarry(5),_temp5_v14));
     1938                name_cursor_v13 = simd_andc(name_stream_v10,_temp5_v14);
     1939                void_prefix_err_v15 = simd_and(name_cursor_v13,lex.Colon);
     1940                carry_set_0.getCarry(6) = bitblock::srli<127>(pablo_blk_ScanThru(name_cursor_v13,simd_andc(lex.NameScan,lex.Colon),carry_set_0.getCarry(6),_temp6_v17));
     1941                namespace_sep_v16 = simd_and(_temp6_v17,lex.Colon);
     1942                carry_set_0.getCarry(7) = bitblock::srli<127>(pablo_blk_Advance(namespace_sep_v16,carry_set_0.getCarry(7),_temp7_v19));
     1943                local_part_start_v18 = _temp7_v19;
     1944                local_part_err_v20 = simd_andc(local_part_start_v18,lex.NameScan);
     1945                carry_set_0.getCarry(8) = bitblock::srli<127>(pablo_blk_ScanThru(local_part_start_v18,simd_andc(lex.NameScan,lex.Colon),carry_set_0.getCarry(8),_temp8_v22));
     1946                colon2_err_v21 = simd_and(_temp8_v22,lex.Colon);
     1947                ncname_err_v23 = simd_and(ncname_stream_v9,lex.Colon);
     1948                if (bitblock::any(simd_or(simd_or(simd_or(void_prefix_err_v15,local_part_err_v20),colon2_err_v21),ncname_err_v23)))
     1949                {
     1950                        assert_0_error(simd_or(simd_or(simd_or(void_prefix_err_v15,local_part_err_v20),colon2_err_v21),ncname_err_v23),"name syntax error");
     1951                }
     1952                check_streams.non_ascii_name_starts = simd_andc(name_start_v11,lex.ASCII_name_start);
     1953                check_streams.non_ascii_names = simd_andc(simd_andc(simd_andc(name_stream_v10,name_start_v11),lex.ASCII_name_char),u8.suffix);
    12981954        }
    12991955       
     
    13061962        {
    13071963        }
    1308          
     1964       
    13091965        IDISA_INLINE void do_block(struct Marker & marker,struct Tag_Callouts & tag_Callouts,struct Check_streams & check_streams)
    13101966        {
    13111967                if (bitblock::any(simd_andc(marker.CD_closer,tag_Callouts.AttVal_spans)))
    13121968                {
    1313                         assert_0_error("Error: ]]> in text",simd_andc(marker.CD_closer,tag_Callouts.AttVal_spans));
     1969                        assert_0_error(simd_andc(marker.CD_closer,tag_Callouts.AttVal_spans),"Error: ]]> in text");
    13141970                }
    13151971                check_streams.tag_marks = simd_or(simd_or(simd_or(tag_Callouts.EmptyTag_marks,tag_Callouts.ElemName_starts),tag_Callouts.EndTag_marks),tag_Callouts.AttName_starts);
     
    13221978                if (bitblock::any(simd_andc(marker.CD_closer,tag_Callouts.AttVal_spans)))
    13231979                {
    1324                         assert_0_error("Error: ]]> in text",simd_andc(marker.CD_closer,tag_Callouts.AttVal_spans));
     1980                        assert_0_error(simd_andc(marker.CD_closer,tag_Callouts.AttVal_spans),"Error: ]]> in text");
    13251981                }
    13261982                check_streams.tag_marks = simd_or(simd_or(simd_or(tag_Callouts.EmptyTag_marks,tag_Callouts.ElemName_starts),tag_Callouts.EndTag_marks),tag_Callouts.AttName_starts);
  • proto/pabloj/trunk/runConfigurations/compilePabloS.launch

    r3325 r3345  
    99</listAttribute>
    1010<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="application.PabloJ"/>
    11 <stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-s ${project_loc:pabloj}/input/test/pabloS/test.pablos -d"/>
     11<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-s ${project_loc:pabloj}/input/test/pabloS/test.pablos"/>
    1212<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="pabloj"/>
    1313<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-ea"/>
  • proto/pabloj/trunk/src/application/generators/ApplicationGenerator.java

    r3277 r3345  
    5757               
    5858                // Transformation configurations to support multiple backends
    59                 toolchain.pabloS.lang.BuiltinEncoder pabloSbuiltinsEncoder  = null;
     59                toolchain.pabloS.lang.PabloSBuiltinEncoder pabloSbuiltinsEncoder  = null;
    6060                toolchain.pabloB.lang.BuiltinEncoder pabloBBuiltinsEncoder  = null;
    6161                AbstractUnparser unparser                                                                       = null;
     
    6464                               
    6565                if(applicationConfiguration.getTarget() == Target.C_LANG) {
    66             pabloSbuiltinsEncoder       = new toolchain.pabloS.lang.PabloSBuiltins2C();
     66            pabloSbuiltinsEncoder       = new toolchain.pabloS.lang.PabloSBuiltin2C();
    6767            pabloBBuiltinsEncoder       = new toolchain.pabloB.lang.PabloBBuiltins2C();
    68             carrySetEncoder             = new toolchain.pabloS.lang.carrySet.CarrySetBuiltins2C();
     68            carrySetEncoder             = new toolchain.pabloS.lang.carrySet.CarrySetBuiltin2C();
    6969                        unparser                        = new Unparser(new IDISABuiltin2C());                   
    7070                } else if(applicationConfiguration.getTarget() == Target.CPP_LANG) {
    71                         pabloSbuiltinsEncoder   = new toolchain.pabloS.lang.PabloSBuiltins2CPP();
     71                        pabloSbuiltinsEncoder   = new toolchain.pabloS.lang.PabloSBuiltin2CPP();
    7272                        pabloBBuiltinsEncoder   = new toolchain.pabloB.lang.PabloBBuiltins2CPP();
    73                         carrySetEncoder                 = new toolchain.pabloS.lang.carrySet.CarrySetBuiltins2CPP();
     73                        carrySetEncoder                 = new toolchain.pabloS.lang.carrySet.CarrySetBuiltin2CPP();
    7474                        unparser                                = new Unparser(new IDISABuiltin2CPP());
    7575                } /*else if(applicationConfiguration.targetLang.contentEquals(Configuration.LLVM)) {  // default C++
  • proto/pabloj/trunk/src/pabloS/ast/BlockStmtNode.java

    r3295 r3345  
    1010import java.util.List;
    1111
     12import toolchain.pabloS.semanticAnalyzer.SymbolTable;
    1213
    1314
    14 public class BlockStmtNode extends ASTNode  {
     15public class BlockStmtNode extends ASTNode implements HasSymbolTableNodeType {
     16        private SymbolTable symbolTable = null;
    1517
    1618
     
    2022        public BlockStmtNode(BlockStmtNode node) {
    2123                super(node);
     24                this.symbolTable = node.symbolTable;
    2225
    2326        }
     
    3841        // attribute accessors
    3942
     43        public SymbolTable getSymbolTable() {
     44                return symbolTable;
     45        }
     46        public void setSymbolTable(SymbolTable _value_) {
     47                symbolTable = _value_;
     48        }
     49       
    4050
    4151       
     
    4959                        result += ", ";
    5060                }
     61                result += "symbolTable = " + symbolTable + ", ";
    5162
    5263                if(result.isEmpty()) return result;
  • proto/pabloj/trunk/src/pabloS/parser/Parser.java

    r3330 r3345  
    489489                RevList<ASTNode> allChildren = new ReverseAccessibleArrayList<ASTNode>();
    490490                {
    491                         ASTNode child = parseCompoundIdentifier();
     491                        ASTNode child = parseIdentifier();
    492492                        result.appendChild(child);
    493493                        allChildren.add(child);
  • proto/pabloj/trunk/src/test/pabloS/PabloSTestHarness.java

    r3325 r3345  
    2222import test.helpers.FileUtil;
    2323import test.helpers.AssertNodePairComparator;
    24 import toolchain.pabloS.lang.BuiltinEncoder;
    25 import toolchain.pabloS.lang.PabloSBuiltins2CPP;
    26 import toolchain.pabloS.lang.carrySet.CarrySetBuiltins2CPP;
     24import toolchain.pabloS.lang.PabloSBuiltinEncoder;
     25import toolchain.pabloS.lang.PabloSBuiltin2CPP;
     26import toolchain.pabloS.lang.carrySet.CarrySetBuiltin2CPP;
    2727import toolchain.pabloS.lang.carrySet.CarrySetEncoder;
    2828import toolchain.pabloS.transformer.visitors.CombineAdvances;
  • proto/pabloj/trunk/src/toolchain/pabloS/ast/Accessors.java

    r3335 r3345  
    328328        String name = new String();
    329329        if(node instanceof IdentifierNode) {
    330             name = Accessors.name(node);
     330            name = Accessors.name((IdentifierNode)node);
    331331        }
    332332        else if (node instanceof CompoundIdentifierNode) {
    333333            ASTNode pckage = node.child(0);
    334334            ASTNode member = node.child(1);
    335             name = Accessors.name(pckage);
     335            name = Accessors.name((IdentifierNode)pckage);
    336336            name += ".";
    337             name += Accessors.name(member);
     337            name += Accessors.name((IdentifierNode)member);
    338338        }
    339339        else {  // TS: added
     
    352352        public static String structName(StructDeclNode node) {
    353353        String name = new String();
    354         name = Accessors.name(node.child(0));
     354        name = Accessors.name((IdentifierNode)node.child(0));
    355355        return name;
    356356        }
     
    372372       
    373373        public static String structMemberName(StructMemberNode node) {
    374         return Accessors.name(node.child(1));
     374        return Accessors.name((IdentifierNode)node.child(1));
    375375        }       
    376376
     
    391391        // 2^k stream type
    392392        ////////////////////////////////////////////////////////////////////////////
    393         public static String streamTypeName(StreamTypeNode node) {
    394                 return Accessors.name(node);
    395         }       
    396393
    397394        ////////////////////////////////////////////////////////////////////////////
     
    431428        }
    432429        public static String pckageName(CompoundIdentifierNode compound) {
    433                 ASTNode pckageNode = pckageNode(compound);
     430            IdentifierNode pckageNode = pckageNode(compound);
    434431                return name(pckageNode);
    435432        }
    436         public static ASTNode pckageNode(CompoundIdentifierNode compound) {
    437                 return compound.child(0);
     433        public static IdentifierNode pckageNode(CompoundIdentifierNode compound) {
     434                return (IdentifierNode)compound.child(0);
    438435        }
    439436        public static String funcName(CompoundIdentifierNode compound) {
    440                 ASTNode funcNameNode = funcNameNode(compound);
     437            IdentifierNode funcNameNode = funcNameNode(compound);
    441438                return name(funcNameNode);
    442439        }
    443         public static ASTNode funcNameNode(CompoundIdentifierNode compound) {
    444                 return compound.child(1);
     440        public static IdentifierNode funcNameNode(CompoundIdentifierNode compound) {
     441                return (IdentifierNode)compound.child(1);
    445442        }
    446443        public static String name(CompoundIdentifierNode compound) {
     
    451448        // IdentifierNode
    452449        ////////////////////////////////////////////////////////////////////////////
    453         public static String name(ASTNode node) {
    454                 assert node instanceof IdentifierNode;
    455                 return node.getToken().getLexeme();
     450        public static String name(IdentifierNode node) {
     451            return node.getToken().getLexeme();
    456452        }
    457453       
  • proto/pabloj/trunk/src/toolchain/pabloS/ast/Generators.java

    r3330 r3345  
    1717import toolchain.pabloB.lang.idisa.*;
    1818import toolchain.pabloS.lang.*;
     19import toolchain.pabloS.lang.carrySet.CarrySetBuiltin;
     20import toolchain.pabloS.transformer.visitors.carry.Context;
    1921
    2022public class Generators {
     
    4345            localVarDecl.appendChild(type);
    4446            localVarDecl.appendChild(lhs);
    45            
    46            
    47            
    4847            return localVarDecl;
    4948        }
     
    6362        }
    6463       
    65         // Make function call variants 
     64    ///////////////////////////////////////////////////////////////////
     65    // Function call variants
    6666        public static FuncCallNode makeFuncCallNode(Locator locator, String identifier) {
    6767                IdentifierNode identifierNode = Generators.makeIdentifierNode(locator, identifier);     
     
    9999               
    100100        private static void addFuncCallArgs(FuncCallNode node, ASTNode ... args) {
    101                 if(args.length > 0) {
    102                         for(ASTNode child: args) {
    103                                 Accessors.argsListNode(node).appendChild(child);
    104                         }
    105                         Accessors.argsListNode(node).setToken(args[0].getToken());
    106                 }       
    107         }               
     101            for(ASTNode child: args) {
     102                Accessors.argsListNode(node).appendChild(child);
     103            }
     104            Accessors.argsListNode(node).setToken(args[0].getToken());
     105        }
     106       
    108107        public static CompoundIdentifierNode makeCompoundIdentifierNode(Locator locator, String pckage, String name) {
    109108                return makeCompoundIdentifierNode(locator, new String [] {pckage, name});
     
    225224                return ifStmtNode;
    226225        }
    227        
     226
     227    ///////////////////////////////////////////////////////////////////
     228    // Mask calls
    228229        public static FuncCallNode makeMaskFuncCall(Locator locator, int fieldWidth, int value) {
    229230                IntegerConstantNode zeroConstantNode =  Generators.makeIntegerConstantNode(locator, value);
     
    236237        }
    237238       
    238         public static FuncCallNode makeSIMDAndEOFMaskFuncCall(ASTNode node, BuiltinEncoder encoder) {
     239        ///////////////////////////////////////////////////////////////////
     240        // SIMD EOF_mask calls
     241        public static FuncCallNode makeSIMDAndEOFMaskFuncCall(ASTNode node, PabloSBuiltinEncoder encoder) {
    239242                Locator location = (Locator)node;
    240                 ASTNode eofMask = makeIdentifierNode(location, encoder.getCode(PabloSBuiltin.EOF_MASK));
     243                ASTNode eofMask = makeIdentifierNode(location, encoder.getName(PabloSBuiltin.EOF_MASK));
    241244                return Generators.makeFuncCallNode(location, IDISASIMDBitwiseBuiltins.AND.Name(), arguments(node, eofMask));
    242245        }               
    243         private static ASTNode[] arguments(ASTNode...astNodes) {
    244                 return astNodes;
    245         }
    246 
    247         public static FuncCallNode makeSIMDAndCEOFMaskFuncCall(ASTNode node, BuiltinEncoder builtins2Lang) {
    248                 ASTNode [] args = new ASTNode [2];
    249                 args[0] = node;
    250                 args[1] = Generators.makeIdentifierNode(node.getToken(), builtins2Lang.getCode(PabloSBuiltin.EOF_MASK));
     246
     247        public static FuncCallNode makeSIMDAndCEOFMaskFuncCall(ASTNode node, PabloSBuiltinEncoder encoder) {
     248                ASTNode [] args = arguments(node, Generators.makeIdentifierNode(node.getToken(), encoder.getName(PabloSBuiltin.EOF_MASK)));
    251249                return Generators.makeFuncCallNode(node.getToken(), IDISASIMDBitwiseBuiltins.ANDC.Name(), args);
    252250        }       
    253251
    254         public static FuncCallNode makeSIMDEOFMaskAndCNodeFuncCall(ASTNode node, BuiltinEncoder builtins2Lang) {
    255                 ASTNode [] args = new ASTNode [2];
    256                 args[0] = Generators.makeIdentifierNode(node.getToken(), builtins2Lang.getCode(PabloSBuiltin.EOF_MASK));
    257                 args[1] = node;
     252        public static FuncCallNode makeSIMDEOFMaskAndCNodeFuncCall(ASTNode node, PabloSBuiltinEncoder encoder) {
     253                ASTNode [] args = arguments(Generators.makeIdentifierNode(node.getToken(), encoder.getName(PabloSBuiltin.EOF_MASK)), node);
    258254                return Generators.makeFuncCallNode(node.getToken(), IDISASIMDBitwiseBuiltins.ANDC.Name(), args);
    259255        }               
    260256       
    261         public static FuncCallNode makeSIMDNotFuncCall(ASTNode node, BuiltinEncoder builtins2Lang) {
    262                 ASTNode [] args = new ASTNode [1];
    263                 args[0] = node;
     257        public static FuncCallNode makeSIMDNotFuncCall(ASTNode node, PabloSBuiltinEncoder encoder) {
     258                ASTNode [] args = arguments(node);
    264259                return Generators.makeFuncCallNode(node.getToken(), IDISASIMDBitwiseBuiltins.NOT.Name(), args);
    265260        }               
    266261       
    267         public static ParameterNode makeEOFMaskParameter(Locator locator, BuiltinEncoder builtins2Lang) {
     262        public static ParameterNode makeEOFMaskParameter(Locator locator, PabloSBuiltinEncoder encoder) {
    268263               
    269264                Token parameterNodeToken = Generators.makeLextantToken(locator, Lextant.STREAM);
     
    272267                Token streamTypeToken = Generators.makeLextantToken(locator, Lextant.STREAM);
    273268                StreamTypeNode streamTypeNode = new StreamTypeNode(streamTypeToken);
    274                 IdentifierNode identifierNode = Generators.makeIdentifierNode(locator, builtins2Lang.getCode(PabloSBuiltin.EOF_MASK));
     269                IdentifierNode identifierNode = Generators.makeIdentifierNode(locator, encoder.getName(PabloSBuiltin.EOF_MASK));
    275270               
    276271                parameterNode.appendChild(streamTypeNode);
     
    279274                return parameterNode;
    280275        }
    281        
    282         // Helpers
     276
     277    ///////////////////////////////////////////////////////////////////
     278    // Carry builtin calls
     279    public static ASTNode makeGetCallCarryForBuiltin(Locator locator, PabloSBuiltin builtin, int index, Context context) {
     280        if(builtin.isCarryN()) {
     281            return makePending64Call(locator, index, context);
     282        } else {
     283            return makeGetCarryCall(locator, index, context);
     284        }
     285    }
     286   
     287    public static ASTNode makeGetCarryCall(Locator locator, int index, Context context) {
     288        return Generators.makeFuncCallNode(
     289                locator,
     290                context.getCarrySetIdentifier(),
     291                context.getCarrySetEncoder().getName(CarrySetBuiltin.GETCARRY),
     292                Generators.makeIntegerConstantNode(locator, index));
     293    }
     294   
     295    public static ASTNode makePending64Call(Locator locator, int index, Context context) {
     296        return Generators.makeFuncCallNode(
     297                locator,
     298                context.getCarrySetIdentifier(),
     299                context.getCarrySetEncoder().getName(CarrySetBuiltin.PENDING64),
     300                Generators.makeIntegerConstantNode(locator, index));
     301    }
     302       
     303    ///////////////////////////////////////////////////////////////////
     304    // Helpers
     305        public static ASTNode[] arguments(ASTNode...astNodes) {
     306            return astNodes;
     307        }
     308       
    283309        public static String capitalize(String str) {
    284310                return str.substring(0, 1).toUpperCase() + str.substring(1);
     
    288314                return str.substring(0, 1).toLowerCase() + str.substring(1);
    289315        }
    290        
    291316
    292317}
  • proto/pabloj/trunk/src/toolchain/pabloS/lang/PabloSBuiltin2C.java

    r3325 r3345  
    44import java.util.Map;
    55
    6 public class PabloSBuiltins2C extends BuiltinEncoder {
     6public class PabloSBuiltin2C extends PabloSBuiltinEncoder {
    77       
    88        private static Map<PabloSBuiltin, String> pabloS2CCode;
     
    3131        for(PabloSBuiltin builtin : PabloSBuiltin.values()) {
    3232                if(!pabloS2CCode.containsKey(builtin)) {
    33                                 throw new RuntimeException("PabloS builtin to C mapping not unimplemented in :" + PabloSBuiltins2C.class.getSimpleName());
     33                                throw new RuntimeException("PabloS builtin to C mapping not unimplemented in :" + PabloSBuiltin2C.class.getSimpleName());
    3434                }
    3535        }
     
    3737
    3838        @Override
    39         public String getCode(PabloSBuiltin builtin) {
     39        public String getName(PabloSBuiltin builtin) {
    4040                return pabloS2CCode.get(builtin);
    4141        }
  • proto/pabloj/trunk/src/toolchain/pabloS/lang/PabloSBuiltin2CPP.java

    r3325 r3345  
    1515import java.util.Map;
    1616
    17 public class PabloSBuiltins2CPP extends BuiltinEncoder {
     17public class PabloSBuiltin2CPP extends PabloSBuiltinEncoder {
    1818
    1919        private static Map<PabloSBuiltin, String> pabloS2CPPCode;
     
    4242        for(PabloSBuiltin builtin : PabloSBuiltin.values()) {
    4343                if(!pabloS2CPPCode.containsKey(builtin)) {
    44                                 throw new RuntimeException("PabloS builtin to CPP mapping not unimplemented in :" + PabloSBuiltins2CPP.class.getSimpleName());
     44                                throw new RuntimeException("PabloS builtin to CPP mapping not unimplemented in :" + PabloSBuiltin2CPP.class.getSimpleName());
    4545                }
    4646        }
    4747    }
    4848   
    49         public String getCode(PabloSBuiltin builtin) {                 
     49        public String getName(PabloSBuiltin builtin) {                 
    5050                return pabloS2CPPCode.get(builtin);
    5151        }
  • proto/pabloj/trunk/src/toolchain/pabloS/lang/PabloSBuiltinEncoder.java

    r3293 r3345  
    11package toolchain.pabloS.lang;
    22
    3 public abstract class BuiltinEncoder {
    4         public abstract String getCode(PabloSBuiltin builtin);
     3public abstract class PabloSBuiltinEncoder {
     4        public abstract String getName(PabloSBuiltin builtin);
    55}
  • proto/pabloj/trunk/src/toolchain/pabloS/lang/carrySet/CarrySetBuiltin.java

    r3293 r3345  
    11/*
    2  * Carry set builtin function signatures.
    3  *
    4  * TODO - Migrate to 'function signature style' to support type checking.
     2 * Carry set builtin functions.
    53 *
    64 * @author Ken Herdy <ksherdy at sfu dot ca>
     
    108package toolchain.pabloS.lang.carrySet;
    119
    12 public enum CarrySetBuiltins {
     10public enum CarrySetBuiltin {
    1311        CARRYDECLARE(3),               
    1412        CARRYRANGE(2),
     
    2422        private final int argCount;
    2523               
    26         CarrySetBuiltins(int argCount ) {
     24        CarrySetBuiltin(int argCount ) {
    2725                this.argCount = argCount;
    2826        }
  • proto/pabloj/trunk/src/toolchain/pabloS/lang/carrySet/CarrySetBuiltin2C.java

    r3306 r3345  
    55
    66
    7 public class CarrySetBuiltins2C extends CarrySetEncoder {
     7public class CarrySetBuiltin2C extends CarrySetEncoder {
    88       
    9         private static Map<CarrySetBuiltins, String> carry2CCode;
     9        private static Map<CarrySetBuiltin, String> carry2CCode;
    1010       
    1111    static {
    1212       
    13         carry2CCode = new HashMap<CarrySetBuiltins, String>();
    14         carry2CCode.put(CarrySetBuiltins.CARRYDECLARE, "CarryDeclare");             // Macros
    15         carry2CCode.put(CarrySetBuiltins.LOCALCARRYCOMBINE,"LocalCarryCombine");
    16         carry2CCode.put(CarrySetBuiltins.CARRYRANGE,"carryRange");                  // Members
    17         carry2CCode.put(CarrySetBuiltins.GETCARRY,"getCarry");
    18         carry2CCode.put(CarrySetBuiltins.SETCARRY,"setCarry");
    19         carry2CCode.put(CarrySetBuiltins.PENDING64,"getPending64");
    20         carry2CCode.put(CarrySetBuiltins.CARRYADJUST,"carryAdjust");
    21         carry2CCode.put(CarrySetBuiltins.CARRYDEQUEUEENQUEUE,"carryDequeueEnqueue");
    22         carry2CCode.put(CarrySetBuiltins.CARRYFLIP,"carryFlip");
     13        carry2CCode = new HashMap<CarrySetBuiltin, String>();
     14        carry2CCode.put(CarrySetBuiltin.CARRYDECLARE, "CarryDeclare");             // Macros
     15        carry2CCode.put(CarrySetBuiltin.LOCALCARRYCOMBINE,"LocalCarryCombine");
     16        carry2CCode.put(CarrySetBuiltin.CARRYRANGE,"carryRange");                  // Members
     17        carry2CCode.put(CarrySetBuiltin.GETCARRY,"getCarry");
     18        carry2CCode.put(CarrySetBuiltin.SETCARRY,"setCarry");
     19        carry2CCode.put(CarrySetBuiltin.PENDING64,"getPending64");
     20        carry2CCode.put(CarrySetBuiltin.CARRYADJUST,"carryAdjust");
     21        carry2CCode.put(CarrySetBuiltin.CARRYDEQUEUEENQUEUE,"carryDequeueEnqueue");
     22        carry2CCode.put(CarrySetBuiltin.CARRYFLIP,"carryFlip");
    2323       
    24         for(CarrySetBuiltins op : CarrySetBuiltins.values()) {
     24        for(CarrySetBuiltin op : CarrySetBuiltin.values()) {
    2525                if(!carry2CCode.containsKey(op)) {
    26                         throw new RuntimeException("CarrySet to C code mapping unimplemented :" + CarrySetBuiltins2CPP.class.getSimpleName());
     26                        throw new RuntimeException("CarrySet to C code mapping unimplemented :" + CarrySetBuiltin2CPP.class.getSimpleName());
    2727                }
    2828        }
    2929    }
    3030
    31         public String getCode(CarrySetBuiltins op) {
     31        public String getName(CarrySetBuiltin op) {
    3232                return carry2CCode.get(op);
    3333        }
  • proto/pabloj/trunk/src/toolchain/pabloS/lang/carrySet/CarrySetBuiltin2CPP.java

    r3306 r3345  
    1111
    1212
    13 public class CarrySetBuiltins2CPP extends CarrySetEncoder {
     13public class CarrySetBuiltin2CPP extends CarrySetEncoder {
    1414       
    15         private static Map<CarrySetBuiltins, String> carry2CPPCode;
     15        private static Map<CarrySetBuiltin, String> carry2CPPCode;
    1616       
    1717    static {
    1818       
    19         carry2CPPCode = new HashMap<CarrySetBuiltins, String>();
    20         carry2CPPCode.put(CarrySetBuiltins.CARRYDECLARE, "CarryDeclare");              // macros
    21         carry2CPPCode.put(CarrySetBuiltins.LOCALCARRYCOMBINE,"LocalCarryCombine");     
    22         carry2CPPCode.put(CarrySetBuiltins.CARRYRANGE,"carryRange");                   // members
    23         carry2CPPCode.put(CarrySetBuiltins.GETCARRY,"getCarry");
    24         carry2CPPCode.put(CarrySetBuiltins.SETCARRY,"setCarry");
    25         carry2CPPCode.put(CarrySetBuiltins.PENDING64,"getPending64");
    26         carry2CPPCode.put(CarrySetBuiltins.CARRYADJUST,"carryAdjust");
    27         carry2CPPCode.put(CarrySetBuiltins.CARRYDEQUEUEENQUEUE,"carryDequeueEnqueue");
    28         carry2CPPCode.put(CarrySetBuiltins.CARRYFLIP,"carryFlip");
     19        carry2CPPCode = new HashMap<CarrySetBuiltin, String>();
     20        carry2CPPCode.put(CarrySetBuiltin.CARRYDECLARE, "CarryDeclare");              // macros
     21        carry2CPPCode.put(CarrySetBuiltin.LOCALCARRYCOMBINE,"LocalCarryCombine");       
     22        carry2CPPCode.put(CarrySetBuiltin.CARRYRANGE,"carryRange");                   // members
     23        carry2CPPCode.put(CarrySetBuiltin.GETCARRY,"getCarry");
     24        carry2CPPCode.put(CarrySetBuiltin.SETCARRY,"setCarry");
     25        carry2CPPCode.put(CarrySetBuiltin.PENDING64,"getPending64");
     26        carry2CPPCode.put(CarrySetBuiltin.CARRYADJUST,"carryAdjust");
     27        carry2CPPCode.put(CarrySetBuiltin.CARRYDEQUEUEENQUEUE,"carryDequeueEnqueue");
     28        carry2CPPCode.put(CarrySetBuiltin.CARRYFLIP,"carryFlip");
    2929       
    30         for(CarrySetBuiltins op : CarrySetBuiltins.values()) {
     30        for(CarrySetBuiltin op : CarrySetBuiltin.values()) {
    3131                if(!carry2CPPCode.containsKey(op)) {
    32                                 throw new RuntimeException("CarrySet to CPP code mapping unimplemented :" + CarrySetBuiltins2CPP.class.getSimpleName());
     32                                throw new RuntimeException("CarrySet to CPP code mapping unimplemented :" + CarrySetBuiltin2CPP.class.getSimpleName());
    3333                }
    3434        }
    3535    }
    3636   
    37         public String getCode(CarrySetBuiltins op) {                   
     37        public String getName(CarrySetBuiltin op) {                     
    3838                return carry2CPPCode.get(op);
    3939        }
  • proto/pabloj/trunk/src/toolchain/pabloS/lang/carrySet/CarrySetEncoder.java

    r3343 r3345  
    1010public abstract class CarrySetEncoder {
    1111       
    12         public abstract String getCode(CarrySetBuiltins op);
     12        public abstract String getName(CarrySetBuiltin op);
    1313       
    1414        public static final String CARRYSET_NAME_PREFIX         = "carry_set_";
  • proto/pabloj/trunk/src/toolchain/pabloS/semanticAnalyzer/SemanticAnalyzer.java

    r3330 r3345  
    11package toolchain.pabloS.semanticAnalyzer;
    22import java.util.List;
     3
     4
    35
    46import pabloS.ast.*;
     
    1113import toolchain.pabloS.lang.signatures.*;
    1214import toolchain.pabloS.lang.type.*;
     15// import toolchain.util.Labeller;
    1316
    1417public class SemanticAnalyzer {
    15 
    16         public class SemanticAnalysisVisitor extends VoidVisitor.Default {
     18   
     19    //////////////////////////////////////////////////////////////
     20    // static interface
     21    public static ASTNode analyze(ASTNode ASTree) {
     22        SemanticAnalysisVisitor analyzer = new SemanticAnalysisVisitor();
     23        ASTree.accept(analyzer);
     24        return ASTree;
     25    }
     26
     27    static private class SemanticAnalysisVisitor extends VoidVisitor.Default {
    1728
    1829                @Override
  • proto/pabloj/trunk/src/toolchain/pabloS/transformer/Transformer.java

    r3338 r3345  
    1010import toolchain.pabloS.lang.*;
    1111import toolchain.pabloS.lang.carrySet.CarrySetEncoder;
     12import toolchain.pabloS.semanticAnalyzer.SemanticAnalyzer;
    1213import toolchain.pabloS.transformer.visitors.*;
    1314import toolchain.pabloS.transformer.visitors.carry.*;
     
    1920        //private SymbolTable symbolTable;
    2021       
    21         private BuiltinEncoder builtinEncoder;
     22        private PabloSBuiltinEncoder builtinEncoder;
    2223        private CarrySetEncoder carrySet2Lang;
    2324        private boolean finalBlockMode;
     
    4041       
    4142        private void initDefaults() {
    42                 this.setBuiltins2Lang(new PabloSBuiltins2CPP());
    43                 this.setCarrySet2Lang(new toolchain.pabloS.lang.carrySet.CarrySetBuiltins2CPP());
     43                this.setBuiltins2Lang(new PabloSBuiltin2CPP());
     44                this.setCarrySet2Lang(new toolchain.pabloS.lang.carrySet.CarrySetBuiltin2CPP());
    4445                this.setFinalBlockMode(false);
    4546        }
     
    5051               
    5152            pabloS.ast.ASTNode decoratedTree = ASTTree.deepCopy();
    52                
     53           
     54
     55           
    5356                decoratedTree = ExpandAugmentedAssignments.apply(decoratedTree);
    5457                decoratedTree = SurroundAssert0sWithIfs.apply(decoratedTree, getBuiltinEncoder());             
    5558                decoratedTree = CombineAdvances.apply(decoratedTree);
     59               
     60             
    5661               
    5762                decoratedTree = CarryIntroXFormer.apply(decoratedTree, getBuiltinEncoder(), getCarrySet2Lang(), finalBlockMode);
     
    6065                decoratedTree = ConvertBitwiseBooleanToIDISACalls.apply(decoratedTree);
    6166                //decoratedTree = InitializeStreamDefaults.apply(decoratedTree);
     67               
     68        decoratedTree = CombineScopes.apply(decoratedTree);
    6269                               
    6370                return decoratedTree;
     
    6572        }
    6673
    67         public BuiltinEncoder getBuiltinEncoder() {
     74        public PabloSBuiltinEncoder getBuiltinEncoder() {
    6875                return this.builtinEncoder;
    6976        }
    7077
    71         public void setBuiltins2Lang(BuiltinEncoder builtins2Lang) {
     78        public void setBuiltins2Lang(PabloSBuiltinEncoder builtins2Lang) {
    7279                this.builtinEncoder = builtins2Lang;
    7380        }
  • proto/pabloj/trunk/src/toolchain/pabloS/transformer/visitors/CombineScopes.java

    r3338 r3345  
    1818import pabloS.ast.*;
    1919import pabloS.inputHandler.Locator;
     20import pabloS.logging.ScatterLogger;
    2021import toolchain.pabloS.ast.Accessors;
    2122import toolchain.pabloS.ast.Generators;
    2223import toolchain.pabloS.ast.Mutators;
     24import toolchain.pabloS.lang.type.StreamType;
     25import toolchain.pabloS.lang.type.Type;
     26import toolchain.pabloS.semanticAnalyzer.Binding;
     27import toolchain.pabloS.semanticAnalyzer.SymbolTable;
     28import toolchain.util.Labeller;
    2329
    2430public class CombineScopes {
     
    2834            ASTNode xASTree = SplitVarDeclInits.apply(ASTree);
    2935           
    30             // KH: TODO - not yet implemented, requires support from the semantic analyzer
    31             //SubstituteMangledNamesVisitor substituter = new SubstituteMangledNamesVisitor();
    32             //transformASTree.accept(substituter);
    33 
    34         // KH: tested
    35             //CombineVarDeclsVisitor combiner = new CombineVarDeclsVisitor();
    36             //transformASTree.accept(combiner);
     36            InstallVarDeclBindingsVisitor installer = new InstallVarDeclBindingsVisitor();
     37            xASTree.accept(installer);
     38           
     39            SubstituteMangledNamesVisitor mangler = new SubstituteMangledNamesVisitor();
     40            xASTree.accept(mangler);
     41
     42            CombineVarDeclsVisitor combiner = new CombineVarDeclsVisitor();
     43            xASTree.accept(combiner);
    3744           
    3845                return xASTree;                         
    3946        }   
    4047
     48    static private class InstallVarDeclBindingsVisitor extends VoidVisitor.Default {
     49
     50        private Labeller labeller;
     51       
     52        public void visitEnter(FuncDefNode node) {
     53            node.setSymbolTable(new SymbolTable());
     54            labeller = new Labeller("_v");
     55        }
     56
     57        public void visitEnter(ProgramNode node) {
     58            node.setSymbolTable(new SymbolTable());
     59        }
     60       
     61        public void visitEnter(StructDeclNode node) {
     62            node.setSymbolTable(new SymbolTable());
     63        }
     64       
     65        public void visitEnter(BlockStmtNode node) {
     66            node.setSymbolTable(new SymbolTable());
     67        }
     68       
     69        public void visitLeave(VarDeclNode node) {
     70             
     71            SymbolTable symbolTable = findEnclosingSymbolTable(node);
     72           
     73            String varName = Accessors.varDeclName(node);
     74           
     75            if(symbolTable.hasBinding(varName)) {
     76                multipleDefinitionError(node, varName);
     77            }
     78
     79            Binding binding = Binding.make(varName, node.getType() );
     80            String mangledName = varName + labeller.newLabel();
     81            binding.setMangledName(mangledName);
     82            symbolTable.add(binding);
     83
     84        }
     85       
     86        public void visitLeave(StreamTypeNode node) {
     87            Type type = StreamType.STREAM(node.getFieldWidth());
     88            node.setType(type);
     89        }
     90       
     91        private SymbolTable findEnclosingSymbolTable(ASTNode node) {
     92            ASTNode parent = node.getParent();
     93            while(parent != ASTNode.NO_PARENT) {
     94                if( parent instanceof HasSymbolTableNodeType) {
     95                    return ((HasSymbolTableNodeType)parent).getSymbolTable();
     96                }
     97                parent = parent.getParent();
     98            }
     99            assert false : "Symbol table not found.";
     100            return SymbolTable.getNullInstance();
     101        }
     102       
     103        private void multipleDefinitionError(ASTNode node, String variableName) {
     104            combineScopes(node, "identifier " + variableName + " multiply defined.");
     105        }
     106       
     107        private void combineScopes(Locator locator, String errorDescription) {
     108            ScatterLogger log = ScatterLogger.getLogger("pabloS.CombineScopes");
     109            String message = "" + locator.getLocation() + ": " + "semantic error--" + errorDescription;
     110            log.severe(message);
     111        }
     112    }   
     113       
    41114
    42115    static private class SubstituteMangledNamesVisitor extends VoidVisitor.Default {
    43116
     117        public void visitLeave(CompoundIdentifierNode node) {
     118            node.skipChildren();
     119        }
     120       
    44121        public void visitLeave(IdentifierNode node) {
    45122            // KH: logic, if hasMangledName, substitute mangled name for normal name
    46         }
    47        
     123            if(node.getParent() instanceof FuncDefNode) {
     124                // no action
     125            } else if (node.getParent() instanceof ParameterNode) {
     126                // no action
     127            } else if (node.getParent() instanceof StructTypeNode) {
     128                // no action
     129            } else if (node.getParent() instanceof StructDeclNode) {
     130                // no action
     131            } else if (node.getParent() instanceof StructMemberNode) {
     132                // no action
     133            } else if (node.getParent() instanceof CompoundIdentifierNode) {
     134                // no action
     135            } else if (node.getParent() instanceof FuncCallNode) {
     136                // no action
     137            } else if (Accessors.name(node).startsWith("carry_set")) {
     138                // no action
     139            } else if (Accessors.name(node).equals("EOF_mask")) {
     140                // no action
     141            } else {
     142             
     143                Binding binding = bindingOrError(node,node);
     144                Locator locator = node;
     145                IdentifierNode replacement = Generators.makeIdentifierNode(locator, binding.getMangledName());
     146                node.updateSelf(replacement);
     147
     148            }
     149        }
     150       
     151        private Binding bindingOrError(ASTNode startNode, ASTNode nameNode) {
     152            String name = Accessors.lexeme(nameNode);   
     153            for(ASTNode ancestor: startNode.pathToRoot()) {
     154                if(ancestor instanceof HasSymbolTableNodeType) {
     155                    SymbolTable symbolTable = ((HasSymbolTableNodeType) ancestor).getSymbolTable();
     156                    if(symbolTable.hasBinding(name)) {
     157                        return symbolTable.bindingFor(name);
     158                    }
     159                }
     160            }
     161            combineScopes(startNode, "undefined identifier: " + name);
     162            return Binding.getNullInstance();
     163        }
     164       
     165        private void combineScopes(Locator locator, String errorDescription) {
     166            ScatterLogger log = ScatterLogger.getLogger("pabloS.CombineScopes");
     167            String message = "" + locator.getLocation() + ": " + "semantic error--" + errorDescription;
     168            log.severe(message);
     169        }
    48170    }
    49    
    50 
    51171   
    52172    static private class CombineVarDeclsVisitor extends VoidVisitor.Default {
  • proto/pabloj/trunk/src/toolchain/pabloS/transformer/visitors/PabloS2PabloBXFormer.java

    r3327 r3345  
    1919import toolchain.pabloB.lang.KernelState;
    2020import toolchain.pabloS.lang.BuiltinCallUtil;
    21 import toolchain.pabloS.lang.carrySet.CarrySetBuiltins;
     21import toolchain.pabloS.lang.carrySet.CarrySetBuiltin;
    2222import toolchain.pabloS.lang.carrySet.CarrySetEncoder;
    2323
     
    155155        FuncCallNode carryFlipFuncCall  = Generators.makeFuncCallNode(locator,
    156156                                                                    CarrySetEncoder.CARRYSETBASENAME,
    157                                                                     carrySetEncoder.getCode(CarrySetBuiltins.CARRYFLIP),
     157                                                                    carrySetEncoder.getName(CarrySetBuiltin.CARRYFLIP),
    158158                                                                    indexNode);
    159159       
    160160        FuncCallNode setCarryFuncCall   = Generators.makeFuncCallNode(locator,
    161161                                                                    CarrySetEncoder.CARRYSETBASENAME,
    162                                                                     carrySetEncoder.getCode(CarrySetBuiltins.SETCARRY),
     162                                                                    carrySetEncoder.getName(CarrySetBuiltin.SETCARRY),
    163163                                                                    carryFlipFuncCall,
    164164                                                                    indexNode);
     
    173173     
    174174        FuncCallNode carryDeclareFuncCall       =   Generators.makeFuncCallNode(locator,
    175                                                                                    carrySetEncoder.getCode(CarrySetBuiltins.CARRYDECLARE), carrySetBaseName, carry1CountNode, carryNCountNode);
     175                                                                                   carrySetEncoder.getName(CarrySetBuiltin.CARRYDECLARE), carrySetBaseName, carry1CountNode, carryNCountNode);
    176176        return carryDeclareFuncCall;
    177177    }
  • proto/pabloj/trunk/src/toolchain/pabloS/transformer/visitors/SurroundAssert0sWithIfs.java

    r3340 r3345  
    1313import toolchain.pabloS.ast.Accessors;
    1414import toolchain.pabloS.ast.Generators;
    15 import toolchain.pabloS.lang.BuiltinEncoder;
     15import toolchain.pabloS.lang.PabloSBuiltinEncoder;
    1616import toolchain.pabloS.lang.PabloSBuiltin;
    1717import toolchain.pabloS.lang.BuiltinCallUtil;
     
    2828//
    2929public class SurroundAssert0sWithIfs {
    30         static public ASTNode apply(ASTNode ASTree, BuiltinEncoder encoder) {
     30        static public ASTNode apply(ASTNode ASTree, PabloSBuiltinEncoder encoder) {
    3131                XFormer xformer = new XFormer(encoder);
    3232                ASTree.accept(xformer);
     
    3535                               
    3636        static private class XFormer extends VoidVisitor.Default {
    37                 private final BuiltinEncoder encoder;
    38                 private XFormer(BuiltinEncoder encoder) {
     37                private final PabloSBuiltinEncoder encoder;
     38                private XFormer(PabloSBuiltinEncoder encoder) {
    3939                        this.encoder = encoder;
    4040                }
     
    5858                                ASTNode assert0Call
    5959                                                = Generators.makeFuncCallNode(locator,
    60                                                                                                           encoder.getCode(PabloSBuiltin.ASSERT_ZERO),
     60                                                                                                          encoder.getName(PabloSBuiltin.ASSERT_ZERO),
    6161                                                                                                          errorStream,                         
    6262                                                                                                          errorMsg);           
  • proto/pabloj/trunk/src/toolchain/pabloS/transformer/visitors/carry/CarryBuiltinTranslator.java

    r3337 r3345  
    1212import toolchain.pabloS.lang.PabloSBuiltin;
    1313import toolchain.pabloS.lang.BuiltinCallUtil;
     14import toolchain.pabloS.lang.carrySet.CarrySetBuiltin;
    1415
    1516// BuiltinTranslators translate a builtin call from pabloS to pabloB during the
     
    2122public enum CarryBuiltinTranslator implements BuiltinTranslator {
    2223        CARRY_TRANSLATION {     
    23                 public void translate(PabloSBuiltin translatedBuiltin, FuncCallNode node, Counter counter, Context context, ASTNode returnValue) {
     24                public void translate(PabloSBuiltin builtin, FuncCallNode node, Counter counter, Context context, ASTNode returnValue) {
    2425            List<ASTNode> arguments = Accessors.argsList(node);
    2526            Locator locator = node;
    26             replaceCallWithPabloBlkCall(node, context.getCode(translatedBuiltin), arguments, counter.makeGetCarryCall(locator, context), returnValue);
     27            replaceCallWithPabloBlkCall(node,
     28                                        context.getCode(builtin),
     29                                        arguments,
     30                                        Generators.makeGetCallCarryForBuiltin(locator, builtin, counter.value(), context),
     31                                        returnValue);
    2732                }
    2833        },
     
    3843                    Locator locator = node;
    3944                   
    40                     replaceCallWithPabloBlkCall(node, formattedAdvanceN, arguments, counter.makeGetCarryCall(locator, context), returnValue);
     45                    replaceCallWithPabloBlkCall(node,
     46                                                formattedAdvanceN,
     47                                                arguments,
     48                                                Generators.makeGetCallCarryForBuiltin(locator, builtin, counter.value(), context), 
     49                                                returnValue);
    4150                }
    4251
  • proto/pabloj/trunk/src/toolchain/pabloS/transformer/visitors/carry/CarryIntroXFormer.java

    r3338 r3345  
    99import toolchain.pabloS.ast.Generators;
    1010import toolchain.pabloS.lang.*;
    11 import toolchain.pabloS.lang.carrySet.CarrySetBuiltins;
     11import toolchain.pabloS.lang.carrySet.CarrySetBuiltin;
    1212import toolchain.pabloS.lang.carrySet.CarrySetEncoder;
    1313import toolchain.pabloS.transformer.visitors.carry.CarryNoneBuiltinTranslator;
     
    7070        if(!isTempified) {
    7171            isTempified = true;
    72             return TempifyCarryBuiltinCalls.apply(ASTree);
     72            return TempifyCarrySetBuiltinCalls.apply(ASTree);
    7373        }
    7474        return ASTree;
    7575    }
    7676   
    77     public static ASTNode apply(ASTNode root, BuiltinEncoder builtinEncoder, CarrySetEncoder carrySetEncoder, boolean finalBlockMode) {
     77    public static ASTNode apply(ASTNode root, PabloSBuiltinEncoder builtinEncoder, CarrySetEncoder carrySetEncoder, boolean finalBlockMode) {
    7878       
    7979        ASTNode xTree = apply(root, builtinEncoder, carrySetEncoder, finalBlockMode, true, 0);
     
    8282    }
    8383
    84     private static ASTNode apply(ASTNode root, BuiltinEncoder builtinEncoder, CarrySetEncoder carrySetEncoder,
     84    private static ASTNode apply(ASTNode root, PabloSBuiltinEncoder builtinEncoder, CarrySetEncoder carrySetEncoder,
    8585                                boolean finalBlockMode, boolean ciMode, int carrySetDepth) {
    8686        Context context = new Context(builtinEncoder, carrySetEncoder, ciMode, finalBlockMode, carrySetDepth);
     
    104104    static private class Transformer extends VoidVisitor.Default {
    105105        private Context context;
    106         private Counter carryCounter    = new Counter(CarrySetBuiltins.GETCARRY);
    107         private Counter advanceNCounter = new Counter(CarrySetBuiltins.PENDING64);
     106        private Counter carryCounter    = new Counter();
     107        private Counter advanceNCounter = new Counter();
    108108       
    109109        Transformer(Context context) {
     
    158158                                                                        location,
    159159                                                                        context.getCarrySetIdentifier(),                                                                       
    160                                                                         context.getCarrySetEncoder().getCode(CarrySetBuiltins.CARRYADJUST),
    161                                                                         arguments(carry1CountNode));
     160                                                                        context.getCarrySetEncoder().getName(CarrySetBuiltin.CARRYADJUST),
     161                                                                        Generators.arguments(carry1CountNode));
    162162                        return carryAdjustment;
    163163                }
     
    179179                translator.translate(builtin, funcCall, counter, context, returnValue.deepCopy());
    180180               
    181                 node.replaceChild(lhs, counter.makeGetCarryCall(node,context));
     181                Locator locator = node;
     182                node.replaceChild(lhs, Generators.makeGetCallCarryForBuiltin(locator, builtin, counter.value(), context));
     183               
    182184                counter.increment();
    183185                    }
     
    201203                            translator.translate(builtin, funcCall, counter, context, returnValue);
    202204
    203                             node.replaceChild(lhs, counter.makeGetCarryCall(node,context));
     205                            Locator locator = node;
     206                            node.replaceChild(lhs, Generators.makeGetCallCarryForBuiltin(locator, builtin, counter.value(), context));
     207                           
    204208                            counter.increment();
    205209                        }
     
    263267                                                                location,
    264268                                                                context.getCarrySetIdentifier(),
    265                                                                 context.getCarrySetEncoder().getCode(CarrySetBuiltins.CARRYDEQUEUEENQUEUE),
    266                                                                 arguments(carryBaseNode, carryCountNode));
     269                                                                context.getCarrySetEncoder().getName(CarrySetBuiltin.CARRYDEQUEUEENQUEUE),
     270                                                                Generators.arguments(carryBaseNode, carryCountNode));
    267271                        return carryDequeueEnqueue;
    268272                }
     
    372376                                                                        locator,
    373377                                                                        context.getCarrySetIdentifier(),
    374                                                                         context.getCarrySetEncoder().getCode(CarrySetBuiltins.CARRYDEQUEUEENQUEUE),
    375                                                                         arguments(carryBaseNode, carry1CountNode));
     378                                                                        context.getCarrySetEncoder().getName(CarrySetBuiltin.CARRYDEQUEUEENQUEUE),
     379                                                                        Generators.arguments(carryBaseNode, carry1CountNode));
    376380                       
    377381                                               
     
    436440                        FuncCallNode carryDeclare = Generators.makeFuncCallNode(
    437441                                                                location,
    438                                                                 context.getCode(CarrySetBuiltins.CARRYDECLARE),
     442                                                                context.getCode(CarrySetBuiltin.CARRYDECLARE),
    439443                                                                localCarrySetIdentifierNode, leaf(carry1Count, location), leaf(carryNCount, location));
    440444                        return carryDeclare;
     
    449453                        return Generators.makeFuncCallNode(
    450454                                                locator,
    451                                                 context.getCode(CarrySetBuiltins.LOCALCARRYCOMBINE),
    452                                                 arguments(context.carrySetIdentifierNode(locator),
     455                                                context.getCode(CarrySetBuiltin.LOCALCARRYCOMBINE),
     456                                                Generators.arguments(context.carrySetIdentifierNode(locator),
    453457                                                                  localCarrySetIdentifierNode,
    454458                                                                  carryBaseNode,
     
    471475                                                                        location,
    472476                                                                        context.getCarrySetIdentifier(),
    473                                                                         context.getCarrySetEncoder().getCode(CarrySetBuiltins.CARRYRANGE),
    474                                                                         arguments(carryBaseNode, carryCountNode));
     477                                                                        context.getCarrySetEncoder().getName(CarrySetBuiltin.CARRYRANGE),
     478                                                                        Generators.arguments(carryBaseNode, carryCountNode));
    475479
    476480                        LextantToken or = Generators.makeLextantToken(condition, Lextant.OR);
     
    482486                ///////////////////////////////////////////////////////////////////
    483487                // Utilities
    484                
    485                 private ASTNode[] arguments(ASTNode...astNodes) {
    486                         return astNodes;
    487                 }
    488488                public IntegerConstantNode leaf(int n, Locator locator) {
    489489                        return Generators.makeIntegerConstantNode(locator, n);
    490490                }               
    491491        }
    492 
    493 
    494492}       
  • proto/pabloj/trunk/src/toolchain/pabloS/transformer/visitors/carry/CarryNoneBuiltinTranslator.java

    r3325 r3345  
    33import pabloS.ast.ASTNode;
    44import pabloS.ast.FuncCallNode;
     5import pabloS.inputHandler.Locator;
    56import toolchain.pabloS.ast.Accessors;
    67import toolchain.pabloS.ast.Generators;
     
    1819                public void translate(PabloSBuiltin builtin, FuncCallNode node, Counter counter, Context context) {
    1920                        if(context.isFinalBlockMode()) {
    20                                 ASTNode argNode = Accessors.argument(node, 0);
    21                                 ASTNode replacementNode = Generators.makeSIMDAndCEOFMaskFuncCall(argNode, context.getBuiltinEncoder());
    22                                 node.updateSelf(replacementNode);
     21                                ASTNode arg = Accessors.argument(node, 0);
     22                                ASTNode replacement = Generators.makeSIMDAndCEOFMaskFuncCall(arg, context.getBuiltinEncoder());
     23                                node.updateSelf(replacement);
    2324                        }
    2425                        else {                         
    25                                 node.updateSelf(counter.mask(node));                   
     26                            Locator locator = node;
     27                            ASTNode maskCall = Generators.makeMaskFuncCall(locator, 1, 0);
     28                                node.updateSelf(maskCall);                     
    2629                        }
    2730                }
     
    3134                public void translate(PabloSBuiltin builtin, FuncCallNode node, Counter counter, Context context) {
    3235                        if(context.isFinalBlockMode()) {                                       
    33                                 ASTNode argNode = Accessors.argument(node, 0);
    34                                 ASTNode replacementNode = Generators.makeSIMDAndEOFMaskFuncCall(argNode, context.getBuiltinEncoder());
    35                                 node.updateSelf(replacementNode);
     36                                ASTNode arg = Accessors.argument(node, 0);
     37                                ASTNode replacement = Generators.makeSIMDAndEOFMaskFuncCall(arg, context.getBuiltinEncoder());
     38                                node.updateSelf(replacement);
    3639                        } else {
    3740                                node.updateSelf(Accessors.argument(node,0));
     
    4245        MASK_TRANSLATION {
    4346                public void translate(PabloSBuiltin builtin, FuncCallNode node, Counter counter, Context context) {
    44                         node.updateSelf(counter.mask(node));
     47            Locator locator = node;
     48            ASTNode maskCall = Generators.makeMaskFuncCall(locator, 1, 0);
     49            node.updateSelf(maskCall);     
    4550                }
    4651        };
    4752
    48         abstract public void translate(PabloSBuiltin translatedBuiltin, FuncCallNode node, Counter counter, Context context);
     53        abstract public void translate(PabloSBuiltin builtin, FuncCallNode node, Counter counter, Context context);
    4954               
    5055}
  • proto/pabloj/trunk/src/toolchain/pabloS/transformer/visitors/carry/Context.java

    r3271 r3345  
    44import pabloS.inputHandler.Locator;
    55import toolchain.pabloS.ast.Generators;
    6 import toolchain.pabloS.lang.BuiltinEncoder;
     6import toolchain.pabloS.lang.PabloSBuiltinEncoder;
    77import toolchain.pabloS.lang.PabloSBuiltin;
    8 import toolchain.pabloS.lang.carrySet.CarrySetBuiltins;
     8import toolchain.pabloS.lang.carrySet.CarrySetBuiltin;
    99import toolchain.pabloS.lang.carrySet.CarrySetEncoder;
    1010
     
    1313        final private boolean carryInMode;
    1414        final private boolean finalBlockMode;
    15         final private BuiltinEncoder builtinEncoder;
     15        final private PabloSBuiltinEncoder builtinEncoder;
    1616        final private CarrySetEncoder carrySetEncoder;
    1717        final private int carrySetDepth;
    1818       
    19         public Context(BuiltinEncoder builtinEncoder, CarrySetEncoder carrySetEncoder,
     19        public Context(PabloSBuiltinEncoder builtinEncoder, CarrySetEncoder carrySetEncoder) {
     20            this(builtinEncoder, carrySetEncoder, true, false, 0);
     21        }
     22       
     23        public Context(PabloSBuiltinEncoder builtinEncoder, CarrySetEncoder carrySetEncoder,
    2024                        boolean carryInMode, boolean finalBlockMode,
    2125                        int carrySetDepth) {
     
    3539                return finalBlockMode;
    3640        }
    37         public final BuiltinEncoder getBuiltinEncoder() {
     41        public final PabloSBuiltinEncoder getBuiltinEncoder() {
    3842                return builtinEncoder;
    3943        }
     
    5458                return Generators.makeIdentifierNode(location, getCarrySetIdentifier());
    5559        }
    56         public final String getCode(CarrySetBuiltins carrySetBuiltin) {
    57                 return getCarrySetEncoder().getCode(carrySetBuiltin);
     60        public final String getCode(CarrySetBuiltin carrySetBuiltin) {
     61                return getCarrySetEncoder().getName(carrySetBuiltin);
    5862        }
    5963        public final String getCode(PabloSBuiltin builtin) {
    60                 return getBuiltinEncoder().getCode(builtin);
     64                return getBuiltinEncoder().getName(builtin);
    6165        }
    6266       
  • proto/pabloj/trunk/src/toolchain/pabloS/transformer/visitors/carry/Counter.java

    r3327 r3345  
    11package toolchain.pabloS.transformer.visitors.carry;
    22
    3 import pabloS.ast.ASTNode;
    43import pabloS.ast.IntegerConstantNode;
    54import pabloS.inputHandler.Locator;
    65import toolchain.pabloS.ast.Generators;
    7 import toolchain.pabloS.lang.carrySet.CarrySetBuiltins;
    8 
    96
    107public class Counter {
    118        private int count;
    12         private CarrySetBuiltins builtin;
    13        
    14         public Counter(CarrySetBuiltins builtin) {
    15                 this.builtin = builtin;
    16         }
    179        public void reset() {
    1810                count = 0;
     
    3022                return Generators.makeIntegerConstantNode(locator, value());
    3123        }
    32         public ASTNode callOrMask(Locator locator, Context context) {
    33                 if(context.isCarryInMode()) {
    34                         return makeGetCarryCall(locator, context);
    35                 }
    36                 else {
    37                         return mask(locator);
    38                 }
    39         }
    40         public ASTNode makeGetCarryCall(Locator locator, Context context) {
    41             return Generators.makeFuncCallNode(
    42                 locator,
    43                 context.getCarrySetIdentifier(),
    44                 context.getCarrySetEncoder().getCode(builtin),
    45                 valueNode(locator));
    46         }
    47         public ASTNode mask(Locator locator) {
    48                 return Generators.makeMaskFuncCall(locator, 1, 0);
    49         }
     24
    5025}
  • proto/pabloj/trunk/src/toolchain/pabloS/transformer/visitors/carry/TempifyCarrySetBuiltinCalls.java

    r3338 r3345  
    5959
    6060import toolchain.pabloS.transformer.visitors.*;
    61 public class TempifyCarryBuiltinCalls {
     61public class TempifyCarrySetBuiltinCalls {
    6262       
    6363        static public ASTNode apply(ASTNode ASTree) {
Note: See TracChangeset for help on using the changeset viewer.