# Copyright (c) 2018-2021, Carnegie Mellon University
# See LICENSE for details

SIMD_ISA_DB.hashAdd(TL(32, 8, 2, 2).withTags([ AVecReg(LRB_16x32f) ]), [ rec(
      ruletree := IxLxI_IxLxI_down( TL(32, 8, 2, 2).withTags([ AVecReg(LRB_16x32f) ]),
          IxLxI_kmn_km( TL(32, 16, 2, 2).withTags([ AVecReg(LRB_16x32f) ]),
            SIMD_ISA_Bases1( TL(16, 8, 4, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
            IxLxI_vtensor( TL(4, 2, 2, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ),
          IxLxI_kmn_km( TL(32, 16, 2, 2).withTags([ AVecReg(LRB_16x32f) ]),
            SIMD_ISA_Bases1( TL(16, 8, 4, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
            IxLxI_vtensor( TL(4, 2, 2, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
      origtree := IxLxI_IxLxI_down( TL(32, 8, 2, 2).withTags([ AVecReg(LRB_16x32f) ]),
          IxLxI_kmn_km( TL(32, 16, 2, 2).withTags([ AVecReg(LRB_16x32f) ]),
            SIMD_ISA_Bases1( TL(16, 8, 4, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
            IxLxI_vtensor( TL(4, 2, 2, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ),
          IxLxI_kmn_km( TL(32, 16, 2, 2).withTags([ AVecReg(LRB_16x32f) ]),
            SIMD_ISA_Bases1( TL(16, 8, 4, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
            IxLxI_vtensor( TL(4, 2, 2, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
      measured := 16,
      globalUnrolling := 10000 ) ]);
SIMD_ISA_DB.hashAdd(TL(64, 32, 4, 1).withTags([ AVecReg(LRB_16x32f) ]), [ rec(
      ruletree := IxLxI_kmn_km( TL(64, 32, 4, 1).withTags([ AVecReg(LRB_16x32f) ]),
          SIMD_ISA_Bases1( TL(32, 16, 8, 1).withTags([ AVecReg(LRB_16x32f) ]) ),
          IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ),
      origtree := IxLxI_kmn_km( TL(64, 32, 4, 1).withTags([ AVecReg(LRB_16x32f) ]),
          SIMD_ISA_Bases1( TL(32, 16, 8, 1).withTags([ AVecReg(LRB_16x32f) ]) ),
          IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ),
      measured := 16,
      globalUnrolling := 10000 ) ]);
SIMD_ISA_DB.hashAdd(TL(32, 8, 8, 1).withTags([ AVecReg(LRB_16x32f) ]), [ rec(
      ruletree := IxLxI_IxLxI_down( TL(32, 8, 8, 1).withTags([ AVecReg(LRB_16x32f) ]),
          SIMD_ISA_Bases1( TL(32, 16, 8, 1).withTags([ AVecReg(LRB_16x32f) ]) ),
          SIMD_ISA_Bases1( TL(32, 16, 8, 1).withTags([ AVecReg(LRB_16x32f) ]) ) ),
      origtree := IxLxI_IxLxI_down( TL(32, 8, 8, 1).withTags([ AVecReg(LRB_16x32f) ]),
          SIMD_ISA_Bases1( TL(32, 16, 8, 1).withTags([ AVecReg(LRB_16x32f) ]) ),
          SIMD_ISA_Bases1( TL(32, 16, 8, 1).withTags([ AVecReg(LRB_16x32f) ]) ) ),
      measured := 32,
      globalUnrolling := 10000 ) ]);
SIMD_ISA_DB.hashAdd(TL(16, 4, 1, 16).withTags([ AVecReg(LRB_16x32f) ]), [ rec(
      ruletree := IxLxI_kmn_n( TL(16, 4, 1, 16).withTags([ AVecReg(LRB_16x32f) ]),
          IxLxI_kmn_km( TL(8, 4, 1, 32).withTags([ AVecReg(LRB_16x32f) ]),
            IxLxI_vtensor( TL(4, 2, 2, 32).withTags([ AVecReg(LRB_16x32f) ]) ),
            IxLxI_vtensor( TL(4, 2, 1, 64).withTags([ AVecReg(LRB_16x32f) ]) ) ),
          IxLxI_kmn_km( TL(8, 4, 2, 16).withTags([ AVecReg(LRB_16x32f) ]),
            IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ),
            IxLxI_vtensor( TL(4, 2, 2, 32).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
      origtree := IxLxI_kmn_n( TL(16, 4, 1, 16).withTags([ AVecReg(LRB_16x32f) ]),
          IxLxI_kmn_km( TL(8, 4, 1, 32).withTags([ AVecReg(LRB_16x32f) ]),
            IxLxI_vtensor( TL(4, 2, 2, 32).withTags([ AVecReg(LRB_16x32f) ]) ),
            IxLxI_vtensor( TL(4, 2, 1, 64).withTags([ AVecReg(LRB_16x32f) ]) ) ),
          IxLxI_kmn_km( TL(8, 4, 2, 16).withTags([ AVecReg(LRB_16x32f) ]),
            IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ),
            IxLxI_vtensor( TL(4, 2, 2, 32).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
      measured := 0,
      globalUnrolling := 64 ) ]);
SIMD_ISA_DB.hashAdd(TL(4, 2, 2, 32).withTags([ AVecReg(LRB_16x32f) ]), [ rec(
      ruletree := IxLxI_vtensor( TL(4, 2, 2, 32).withTags([ AVecReg(LRB_16x32f) ]) ),
      origtree := IxLxI_vtensor( TL(4, 2, 2, 32).withTags([ AVecReg(LRB_16x32f) ]) ),
      measured := 0,
      globalUnrolling := 64 ) ]);
SIMD_ISA_DB.hashAdd(TL(32, 2, 4, 2).withTags([ AVecReg(LRB_16x32f) ]), [ rec(
      ruletree := IxLxI_kmn_n( TL(32, 2, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
          IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ),
          IxLxI_IxLxI_down( TL(16, 2, 8, 2).withTags([ AVecReg(LRB_16x32f) ]),
            SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
            IxLxI_IxLxI_down( TL(16, 4, 8, 2).withTags([ AVecReg(LRB_16x32f) ]),
              SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
              SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ) ) ) ),
      origtree := IxLxI_kmn_n( TL(32, 2, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
          IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ),
          IxLxI_IxLxI_down( TL(16, 2, 8, 2).withTags([ AVecReg(LRB_16x32f) ]),
            SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
            IxLxI_IxLxI_down( TL(16, 4, 8, 2).withTags([ AVecReg(LRB_16x32f) ]),
              SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
              SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ) ) ) ),
      measured := 48,
      globalUnrolling := 10000 ) ]);
SIMD_ISA_DB.hashAdd(TL(32, 4, 2, 2).withTags([ AVecReg(LRB_16x32f) ]), [ rec(
      ruletree := IxLxI_IxLxI_down( TL(32, 4, 2, 2).withTags([ AVecReg(LRB_16x32f) ]),
          IxLxI_kmn_km( TL(32, 16, 2, 2).withTags([ AVecReg(LRB_16x32f) ]),
            SIMD_ISA_Bases1( TL(16, 8, 4, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
            IxLxI_vtensor( TL(4, 2, 2, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ),
          IxLxI_IxLxI_down( TL(32, 8, 2, 2).withTags([ AVecReg(LRB_16x32f) ]),
            IxLxI_kmn_km( TL(32, 16, 2, 2).withTags([ AVecReg(LRB_16x32f) ]),
              SIMD_ISA_Bases1( TL(16, 8, 4, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
              IxLxI_vtensor( TL(4, 2, 2, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ),
            IxLxI_kmn_km( TL(32, 16, 2, 2).withTags([ AVecReg(LRB_16x32f) ]),
              SIMD_ISA_Bases1( TL(16, 8, 4, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
              IxLxI_vtensor( TL(4, 2, 2, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ) ) ),
      origtree := IxLxI_IxLxI_down( TL(32, 4, 2, 2).withTags([ AVecReg(LRB_16x32f) ]),
          IxLxI_kmn_km( TL(32, 16, 2, 2).withTags([ AVecReg(LRB_16x32f) ]),
            SIMD_ISA_Bases1( TL(16, 8, 4, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
            IxLxI_vtensor( TL(4, 2, 2, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ),
          IxLxI_IxLxI_down( TL(32, 8, 2, 2).withTags([ AVecReg(LRB_16x32f) ]),
            IxLxI_kmn_km( TL(32, 16, 2, 2).withTags([ AVecReg(LRB_16x32f) ]),
              SIMD_ISA_Bases1( TL(16, 8, 4, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
              IxLxI_vtensor( TL(4, 2, 2, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ),
            IxLxI_kmn_km( TL(32, 16, 2, 2).withTags([ AVecReg(LRB_16x32f) ]),
              SIMD_ISA_Bases1( TL(16, 8, 4, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
              IxLxI_vtensor( TL(4, 2, 2, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ) ) ),
      measured := 24,
      globalUnrolling := 10000 ) ]);
SIMD_ISA_DB.hashAdd(TL(16, 2, 1, 2).withTags([ AVecReg(LRB_16x32f) ]), [ rec(
      ruletree := IxLxI_IxLxI_down( TL(16, 2, 1, 2).withTags([ AVecReg(LRB_16x32f) ]),
          SIMD_ISA_Bases1( TL(16, 8, 1, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
          IxLxI_IxLxI_down( TL(16, 4, 1, 2).withTags([ AVecReg(LRB_16x32f) ]),
            SIMD_ISA_Bases1( TL(16, 8, 1, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
            SIMD_ISA_Bases1( TL(16, 8, 1, 2).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
      origtree := IxLxI_IxLxI_down( TL(16, 2, 1, 2).withTags([ AVecReg(LRB_16x32f) ]),
          SIMD_ISA_Bases1( TL(16, 8, 1, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
          IxLxI_IxLxI_down( TL(16, 4, 1, 2).withTags([ AVecReg(LRB_16x32f) ]),
            SIMD_ISA_Bases1( TL(16, 8, 1, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
            SIMD_ISA_Bases1( TL(16, 8, 1, 2).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
      measured := 6,
      globalUnrolling := 10000 ) ]);
SIMD_ISA_DB.hashAdd(TL(8, 2, 2, 16).withTags([ AVecReg(LRB_16x32f) ]), [ rec(
      ruletree := IxLxI_kmn_n( TL(8, 2, 2, 16).withTags([ AVecReg(LRB_16x32f) ]),
          IxLxI_vtensor( TL(4, 2, 2, 32).withTags([ AVecReg(LRB_16x32f) ]) ),
          IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ),
      origtree := IxLxI_kmn_n( TL(8, 2, 2, 16).withTags([ AVecReg(LRB_16x32f) ]),
          IxLxI_vtensor( TL(4, 2, 2, 32).withTags([ AVecReg(LRB_16x32f) ]) ),
          IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ),
      measured := 0,
      globalUnrolling := 64 ) ]);
SIMD_ISA_DB.hashAdd(TL(16, 2, 8, 2).withTags([ AVecReg(LRB_16x32f) ]), [ rec(
      ruletree := IxLxI_IxLxI_down( TL(16, 2, 8, 2).withTags([ AVecReg(LRB_16x32f) ]),
          SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
          IxLxI_IxLxI_down( TL(16, 4, 8, 2).withTags([ AVecReg(LRB_16x32f) ]),
            SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
            SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
      origtree := IxLxI_IxLxI_down( TL(16, 2, 8, 2).withTags([ AVecReg(LRB_16x32f) ]),
          SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
          IxLxI_IxLxI_down( TL(16, 4, 8, 2).withTags([ AVecReg(LRB_16x32f) ]),
            SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
            SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
      measured := 48,
      globalUnrolling := 10000 ) ]);
SIMD_ISA_DB.hashAdd(TL(64, 16, 2, 2).withTags([ AVecReg(LRB_16x32f) ]), [ rec(
      ruletree := IxLxI_kmn_km( TL(64, 16, 2, 2).withTags([ AVecReg(LRB_16x32f) ]),
          IxLxI_IxLxI_down( TL(32, 8, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
            IxLxI_kmn_km( TL(32, 16, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
              SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
              IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ),
            IxLxI_kmn_km( TL(32, 16, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
              SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
              IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
          IxLxI_kmn_n( TL(8, 2, 2, 16).withTags([ AVecReg(LRB_16x32f) ]),
            IxLxI_vtensor( TL(4, 2, 2, 32).withTags([ AVecReg(LRB_16x32f) ]) ),
            IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
      origtree := IxLxI_kmn_km( TL(64, 16, 2, 2).withTags([ AVecReg(LRB_16x32f) ]),
          IxLxI_IxLxI_down( TL(32, 8, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
            IxLxI_kmn_km( TL(32, 16, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
              SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
              IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ),
            IxLxI_kmn_km( TL(32, 16, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
              SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
              IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
          IxLxI_kmn_n( TL(8, 2, 2, 16).withTags([ AVecReg(LRB_16x32f) ]),
            IxLxI_vtensor( TL(4, 2, 2, 32).withTags([ AVecReg(LRB_16x32f) ]) ),
            IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
      measured := 32,
      globalUnrolling := 10000 ) ]);
SIMD_ISA_DB.hashAdd(TL(128, 16, 1, 2).withTags([ AVecReg(LRB_16x32f) ]), [ rec(
      ruletree := IxLxI_kmn_km( TL(128, 16, 1, 2).withTags([ AVecReg(LRB_16x32f) ]),
          IxLxI_IxLxI_down( TL(64, 8, 2, 2).withTags([ AVecReg(LRB_16x32f) ]),
            IxLxI_kmn_km( TL(64, 32, 2, 2).withTags([ AVecReg(LRB_16x32f) ]),
              SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
              IxLxI_kmn_km( TL(8, 4, 2, 16).withTags([ AVecReg(LRB_16x32f) ]),
                IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ),
                IxLxI_vtensor( TL(4, 2, 2, 32).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
            IxLxI_kmn_km( TL(64, 16, 2, 2).withTags([ AVecReg(LRB_16x32f) ]),
              IxLxI_IxLxI_down( TL(32, 8, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
                IxLxI_kmn_km( TL(32, 16, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
                  SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
                  IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ),
                IxLxI_kmn_km( TL(32, 16, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
                  SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
                  IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
              IxLxI_kmn_n( TL(8, 2, 2, 16).withTags([ AVecReg(LRB_16x32f) ]),
                IxLxI_vtensor( TL(4, 2, 2, 32).withTags([ AVecReg(LRB_16x32f) ]) ),
                IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ) ) ),
          IxLxI_kmn_n( TL(16, 2, 1, 16).withTags([ AVecReg(LRB_16x32f) ]),
            IxLxI_kmn_n( TL(8, 2, 1, 32).withTags([ AVecReg(LRB_16x32f) ]),
              IxLxI_vtensor( TL(4, 2, 1, 64).withTags([ AVecReg(LRB_16x32f) ]) ),
              IxLxI_vtensor( TL(4, 2, 2, 32).withTags([ AVecReg(LRB_16x32f) ]) ) ),
            IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
      origtree := IxLxI_kmn_km( TL(128, 16, 1, 2).withTags([ AVecReg(LRB_16x32f) ]),
          IxLxI_IxLxI_down( TL(64, 8, 2, 2).withTags([ AVecReg(LRB_16x32f) ]),
            IxLxI_kmn_km( TL(64, 32, 2, 2).withTags([ AVecReg(LRB_16x32f) ]),
              SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
              IxLxI_kmn_km( TL(8, 4, 2, 16).withTags([ AVecReg(LRB_16x32f) ]),
                IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ),
                IxLxI_vtensor( TL(4, 2, 2, 32).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
            IxLxI_kmn_km( TL(64, 16, 2, 2).withTags([ AVecReg(LRB_16x32f) ]),
              IxLxI_IxLxI_down( TL(32, 8, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
                IxLxI_kmn_km( TL(32, 16, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
                  SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
                  IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ),
                IxLxI_kmn_km( TL(32, 16, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
                  SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
                  IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
              IxLxI_kmn_n( TL(8, 2, 2, 16).withTags([ AVecReg(LRB_16x32f) ]),
                IxLxI_vtensor( TL(4, 2, 2, 32).withTags([ AVecReg(LRB_16x32f) ]) ),
                IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ) ) ),
          IxLxI_kmn_n( TL(16, 2, 1, 16).withTags([ AVecReg(LRB_16x32f) ]),
            IxLxI_kmn_n( TL(8, 2, 1, 32).withTags([ AVecReg(LRB_16x32f) ]),
              IxLxI_vtensor( TL(4, 2, 1, 64).withTags([ AVecReg(LRB_16x32f) ]) ),
              IxLxI_vtensor( TL(4, 2, 2, 32).withTags([ AVecReg(LRB_16x32f) ]) ) ),
            IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
      measured := 48,
      globalUnrolling := 10000 ) ]);
SIMD_ISA_DB.hashAdd(TL(128, 16, 2, 1).withTags([ AVecReg(LRB_16x32f) ]), [ rec(
      ruletree := IxLxI_kmn_n( TL(128, 16, 2, 1).withTags([ AVecReg(LRB_16x32f) ]),
          IxLxI_kmn_km( TL(64, 16, 2, 2).withTags([ AVecReg(LRB_16x32f) ]),
            IxLxI_IxLxI_down( TL(32, 8, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
              IxLxI_kmn_km( TL(32, 16, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
                SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
                IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ),
              IxLxI_kmn_km( TL(32, 16, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
                SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
                IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
            IxLxI_kmn_n( TL(8, 2, 2, 16).withTags([ AVecReg(LRB_16x32f) ]),
              IxLxI_vtensor( TL(4, 2, 2, 32).withTags([ AVecReg(LRB_16x32f) ]) ),
              IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
          SIMD_ISA_Bases1( TL(32, 16, 8, 1).withTags([ AVecReg(LRB_16x32f) ]) ) ),
      origtree := IxLxI_kmn_n( TL(128, 16, 2, 1).withTags([ AVecReg(LRB_16x32f) ]),
          IxLxI_kmn_km( TL(64, 16, 2, 2).withTags([ AVecReg(LRB_16x32f) ]),
            IxLxI_IxLxI_down( TL(32, 8, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
              IxLxI_kmn_km( TL(32, 16, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
                SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
                IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ),
              IxLxI_kmn_km( TL(32, 16, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
                SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
                IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
            IxLxI_kmn_n( TL(8, 2, 2, 16).withTags([ AVecReg(LRB_16x32f) ]),
              IxLxI_vtensor( TL(4, 2, 2, 32).withTags([ AVecReg(LRB_16x32f) ]) ),
              IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
          SIMD_ISA_Bases1( TL(32, 16, 8, 1).withTags([ AVecReg(LRB_16x32f) ]) ) ),
      measured := 48,
      globalUnrolling := 10000 ) ]);
SIMD_ISA_DB.hashAdd(TL(32, 4, 1, 1).withTags([ AVecReg(LRB_16x32f) ]), [ rec(
      ruletree := IxLxI_IxLxI_down( TL(32, 4, 1, 1).withTags([ AVecReg(LRB_16x32f) ]),
          SIMD_ISA_Bases1( TL(32, 16, 1, 1).withTags([ AVecReg(LRB_16x32f) ]) ),
          IxLxI_IxLxI_down( TL(32, 8, 1, 1).withTags([ AVecReg(LRB_16x32f) ]),
            SIMD_ISA_Bases1( TL(32, 16, 1, 1).withTags([ AVecReg(LRB_16x32f) ]) ),
            SIMD_ISA_Bases1( TL(32, 16, 1, 1).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
      origtree := IxLxI_IxLxI_down( TL(32, 4, 1, 1).withTags([ AVecReg(LRB_16x32f) ]),
          SIMD_ISA_Bases1( TL(32, 16, 1, 1).withTags([ AVecReg(LRB_16x32f) ]) ),
          IxLxI_IxLxI_down( TL(32, 8, 1, 1).withTags([ AVecReg(LRB_16x32f) ]),
            SIMD_ISA_Bases1( TL(32, 16, 1, 1).withTags([ AVecReg(LRB_16x32f) ]) ),
            SIMD_ISA_Bases1( TL(32, 16, 1, 1).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
      measured := 6,
      globalUnrolling := 10000 ) ]);
SIMD_ISA_DB.hashAdd(TL(64, 8, 1, 2).withTags([ AVecReg(LRB_16x32f) ]), [ rec(
      ruletree := IxLxI_IxLxI_down( TL(64, 8, 1, 2).withTags([ AVecReg(LRB_16x32f) ]),
          IxLxI_kmn_km( TL(64, 32, 1, 2).withTags([ AVecReg(LRB_16x32f) ]),
            SIMD_ISA_Bases1( TL(16, 8, 4, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
            IxLxI_kmn_km( TL(8, 4, 1, 16).withTags([ AVecReg(LRB_16x32f) ]),
              IxLxI_vtensor( TL(4, 2, 2, 16).withTags([ AVecReg(LRB_16x32f) ]) ),
              IxLxI_vtensor( TL(4, 2, 1, 32).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
          IxLxI_kmn_km( TL(64, 16, 1, 2).withTags([ AVecReg(LRB_16x32f) ]),
            IxLxI_IxLxI_down( TL(32, 8, 2, 2).withTags([ AVecReg(LRB_16x32f) ]),
              IxLxI_kmn_km( TL(32, 16, 2, 2).withTags([ AVecReg(LRB_16x32f) ]),
                SIMD_ISA_Bases1( TL(16, 8, 4, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
                IxLxI_vtensor( TL(4, 2, 2, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ),
              IxLxI_kmn_km( TL(32, 16, 2, 2).withTags([ AVecReg(LRB_16x32f) ]),
                SIMD_ISA_Bases1( TL(16, 8, 4, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
                IxLxI_vtensor( TL(4, 2, 2, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
            IxLxI_kmn_n( TL(8, 2, 1, 16).withTags([ AVecReg(LRB_16x32f) ]),
              IxLxI_vtensor( TL(4, 2, 1, 32).withTags([ AVecReg(LRB_16x32f) ]) ),
              IxLxI_vtensor( TL(4, 2, 2, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ) ) ),
      origtree := IxLxI_IxLxI_down( TL(64, 8, 1, 2).withTags([ AVecReg(LRB_16x32f) ]),
          IxLxI_kmn_km( TL(64, 32, 1, 2).withTags([ AVecReg(LRB_16x32f) ]),
            SIMD_ISA_Bases1( TL(16, 8, 4, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
            IxLxI_kmn_km( TL(8, 4, 1, 16).withTags([ AVecReg(LRB_16x32f) ]),
              IxLxI_vtensor( TL(4, 2, 2, 16).withTags([ AVecReg(LRB_16x32f) ]) ),
              IxLxI_vtensor( TL(4, 2, 1, 32).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
          IxLxI_kmn_km( TL(64, 16, 1, 2).withTags([ AVecReg(LRB_16x32f) ]),
            IxLxI_IxLxI_down( TL(32, 8, 2, 2).withTags([ AVecReg(LRB_16x32f) ]),
              IxLxI_kmn_km( TL(32, 16, 2, 2).withTags([ AVecReg(LRB_16x32f) ]),
                SIMD_ISA_Bases1( TL(16, 8, 4, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
                IxLxI_vtensor( TL(4, 2, 2, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ),
              IxLxI_kmn_km( TL(32, 16, 2, 2).withTags([ AVecReg(LRB_16x32f) ]),
                SIMD_ISA_Bases1( TL(16, 8, 4, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
                IxLxI_vtensor( TL(4, 2, 2, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
            IxLxI_kmn_n( TL(8, 2, 1, 16).withTags([ AVecReg(LRB_16x32f) ]),
              IxLxI_vtensor( TL(4, 2, 1, 32).withTags([ AVecReg(LRB_16x32f) ]) ),
              IxLxI_vtensor( TL(4, 2, 2, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ) ) ),
      measured := 24,
      globalUnrolling := 10000 ) ]);
SIMD_ISA_DB.hashAdd(TL(128, 64, 1, 2).withTags([ AVecReg(LRB_16x32f) ]), [ rec(
      ruletree := IxLxI_kmn_km( TL(128, 64, 1, 2).withTags([ AVecReg(LRB_16x32f) ]),
          SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
          IxLxI_kmn_km( TL(16, 8, 1, 16).withTags([ AVecReg(LRB_16x32f) ]),
            IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ),
            IxLxI_kmn_km( TL(8, 4, 1, 32).withTags([ AVecReg(LRB_16x32f) ]),
              IxLxI_vtensor( TL(4, 2, 2, 32).withTags([ AVecReg(LRB_16x32f) ]) ),
              IxLxI_vtensor( TL(4, 2, 1, 64).withTags([ AVecReg(LRB_16x32f) ]) ) ) ) ),
      origtree := IxLxI_kmn_km( TL(128, 64, 1, 2).withTags([ AVecReg(LRB_16x32f) ]),
          SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
          IxLxI_kmn_km( TL(16, 8, 1, 16).withTags([ AVecReg(LRB_16x32f) ]),
            IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ),
            IxLxI_kmn_km( TL(8, 4, 1, 32).withTags([ AVecReg(LRB_16x32f) ]),
              IxLxI_vtensor( TL(4, 2, 2, 32).withTags([ AVecReg(LRB_16x32f) ]) ),
              IxLxI_vtensor( TL(4, 2, 1, 64).withTags([ AVecReg(LRB_16x32f) ]) ) ) ) ),
      measured := 16,
      globalUnrolling := 10000 ) ]);
SIMD_ISA_DB.hashAdd(TL(128, 64, 2, 1).withTags([ AVecReg(LRB_16x32f) ]), [ rec(
      ruletree := IxLxI_kmn_km( TL(128, 64, 2, 1).withTags([ AVecReg(LRB_16x32f) ]),
          SIMD_ISA_Bases1( TL(32, 16, 8, 1).withTags([ AVecReg(LRB_16x32f) ]) ),
          IxLxI_kmn_km( TL(8, 4, 2, 16).withTags([ AVecReg(LRB_16x32f) ]),
            IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ),
            IxLxI_vtensor( TL(4, 2, 2, 32).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
      origtree := IxLxI_kmn_km( TL(128, 64, 2, 1).withTags([ AVecReg(LRB_16x32f) ]),
          SIMD_ISA_Bases1( TL(32, 16, 8, 1).withTags([ AVecReg(LRB_16x32f) ]) ),
          IxLxI_kmn_km( TL(8, 4, 2, 16).withTags([ AVecReg(LRB_16x32f) ]),
            IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ),
            IxLxI_vtensor( TL(4, 2, 2, 32).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
      measured := 16,
      globalUnrolling := 10000 ) ]);
SIMD_ISA_DB.hashAdd(TL(8, 4, 1, 32).withTags([ AVecReg(LRB_16x32f) ]), [ rec(
      ruletree := IxLxI_kmn_km( TL(8, 4, 1, 32).withTags([ AVecReg(LRB_16x32f) ]),
          IxLxI_vtensor( TL(4, 2, 2, 32).withTags([ AVecReg(LRB_16x32f) ]) ),
          IxLxI_vtensor( TL(4, 2, 1, 64).withTags([ AVecReg(LRB_16x32f) ]) ) ),
      origtree := IxLxI_kmn_km( TL(8, 4, 1, 32).withTags([ AVecReg(LRB_16x32f) ]),
          IxLxI_vtensor( TL(4, 2, 2, 32).withTags([ AVecReg(LRB_16x32f) ]) ),
          IxLxI_vtensor( TL(4, 2, 1, 64).withTags([ AVecReg(LRB_16x32f) ]) ) ),
      measured := 0,
      globalUnrolling := 64 ) ]);
SIMD_ISA_DB.hashAdd(TL(32, 4, 8, 1).withTags([ AVecReg(LRB_16x32f) ]), [ rec(
      ruletree := IxLxI_IxLxI_down( TL(32, 4, 8, 1).withTags([ AVecReg(LRB_16x32f) ]),
          SIMD_ISA_Bases1( TL(32, 16, 8, 1).withTags([ AVecReg(LRB_16x32f) ]) ),
          IxLxI_IxLxI_down( TL(32, 8, 8, 1).withTags([ AVecReg(LRB_16x32f) ]),
            SIMD_ISA_Bases1( TL(32, 16, 8, 1).withTags([ AVecReg(LRB_16x32f) ]) ),
            SIMD_ISA_Bases1( TL(32, 16, 8, 1).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
      origtree := IxLxI_IxLxI_down( TL(32, 4, 8, 1).withTags([ AVecReg(LRB_16x32f) ]),
          SIMD_ISA_Bases1( TL(32, 16, 8, 1).withTags([ AVecReg(LRB_16x32f) ]) ),
          IxLxI_IxLxI_down( TL(32, 8, 8, 1).withTags([ AVecReg(LRB_16x32f) ]),
            SIMD_ISA_Bases1( TL(32, 16, 8, 1).withTags([ AVecReg(LRB_16x32f) ]) ),
            SIMD_ISA_Bases1( TL(32, 16, 8, 1).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
      measured := 48,
      globalUnrolling := 10000 ) ]);
SIMD_ISA_DB.hashAdd(TL(32, 2, 1, 1).withTags([ AVecReg(LRB_16x32f) ]), [ rec(
      ruletree := IxLxI_IxLxI_down( TL(32, 2, 1, 1).withTags([ AVecReg(LRB_16x32f) ]),
          SIMD_ISA_Bases1( TL(32, 16, 1, 1).withTags([ AVecReg(LRB_16x32f) ]) ),
          IxLxI_IxLxI_down( TL(32, 4, 1, 1).withTags([ AVecReg(LRB_16x32f) ]),
            SIMD_ISA_Bases1( TL(32, 16, 1, 1).withTags([ AVecReg(LRB_16x32f) ]) ),
            IxLxI_IxLxI_down( TL(32, 8, 1, 1).withTags([ AVecReg(LRB_16x32f) ]),
              SIMD_ISA_Bases1( TL(32, 16, 1, 1).withTags([ AVecReg(LRB_16x32f) ]) ),
              SIMD_ISA_Bases1( TL(32, 16, 1, 1).withTags([ AVecReg(LRB_16x32f) ]) ) ) ) ),
      origtree := IxLxI_IxLxI_down( TL(32, 2, 1, 1).withTags([ AVecReg(LRB_16x32f) ]),
          SIMD_ISA_Bases1( TL(32, 16, 1, 1).withTags([ AVecReg(LRB_16x32f) ]) ),
          IxLxI_IxLxI_down( TL(32, 4, 1, 1).withTags([ AVecReg(LRB_16x32f) ]),
            SIMD_ISA_Bases1( TL(32, 16, 1, 1).withTags([ AVecReg(LRB_16x32f) ]) ),
            IxLxI_IxLxI_down( TL(32, 8, 1, 1).withTags([ AVecReg(LRB_16x32f) ]),
              SIMD_ISA_Bases1( TL(32, 16, 1, 1).withTags([ AVecReg(LRB_16x32f) ]) ),
              SIMD_ISA_Bases1( TL(32, 16, 1, 1).withTags([ AVecReg(LRB_16x32f) ]) ) ) ) ),
      measured := 8,
      globalUnrolling := 10000 ) ]);
SIMD_ISA_DB.hashAdd(TL(8, 2, 1, 32).withTags([ AVecReg(LRB_16x32f) ]), [ rec(
      ruletree := IxLxI_kmn_n( TL(8, 2, 1, 32).withTags([ AVecReg(LRB_16x32f) ]),
          IxLxI_vtensor( TL(4, 2, 1, 64).withTags([ AVecReg(LRB_16x32f) ]) ),
          IxLxI_vtensor( TL(4, 2, 2, 32).withTags([ AVecReg(LRB_16x32f) ]) ) ),
      origtree := IxLxI_kmn_n( TL(8, 2, 1, 32).withTags([ AVecReg(LRB_16x32f) ]),
          IxLxI_vtensor( TL(4, 2, 1, 64).withTags([ AVecReg(LRB_16x32f) ]) ),
          IxLxI_vtensor( TL(4, 2, 2, 32).withTags([ AVecReg(LRB_16x32f) ]) ) ),
      measured := 0,
      globalUnrolling := 64 ) ]);
SIMD_ISA_DB.hashAdd(TL(32, 2, 8, 1).withTags([ AVecReg(LRB_16x32f) ]), [ rec(
      ruletree := IxLxI_IxLxI_down( TL(32, 2, 8, 1).withTags([ AVecReg(LRB_16x32f) ]),
          SIMD_ISA_Bases1( TL(32, 16, 8, 1).withTags([ AVecReg(LRB_16x32f) ]) ),
          IxLxI_IxLxI_down( TL(32, 4, 8, 1).withTags([ AVecReg(LRB_16x32f) ]),
            SIMD_ISA_Bases1( TL(32, 16, 8, 1).withTags([ AVecReg(LRB_16x32f) ]) ),
            IxLxI_IxLxI_down( TL(32, 8, 8, 1).withTags([ AVecReg(LRB_16x32f) ]),
              SIMD_ISA_Bases1( TL(32, 16, 8, 1).withTags([ AVecReg(LRB_16x32f) ]) ),
              SIMD_ISA_Bases1( TL(32, 16, 8, 1).withTags([ AVecReg(LRB_16x32f) ]) ) ) ) ),
      origtree := IxLxI_IxLxI_down( TL(32, 2, 8, 1).withTags([ AVecReg(LRB_16x32f) ]),
          SIMD_ISA_Bases1( TL(32, 16, 8, 1).withTags([ AVecReg(LRB_16x32f) ]) ),
          IxLxI_IxLxI_down( TL(32, 4, 8, 1).withTags([ AVecReg(LRB_16x32f) ]),
            SIMD_ISA_Bases1( TL(32, 16, 8, 1).withTags([ AVecReg(LRB_16x32f) ]) ),
            IxLxI_IxLxI_down( TL(32, 8, 8, 1).withTags([ AVecReg(LRB_16x32f) ]),
              SIMD_ISA_Bases1( TL(32, 16, 8, 1).withTags([ AVecReg(LRB_16x32f) ]) ),
              SIMD_ISA_Bases1( TL(32, 16, 8, 1).withTags([ AVecReg(LRB_16x32f) ]) ) ) ) ),
      measured := 64,
      globalUnrolling := 10000 ) ]);
SIMD_ISA_DB.hashAdd(TL(64, 8, 4, 1).withTags([ AVecReg(LRB_16x32f) ]), [ rec(
      ruletree := IxLxI_IxLxI_down( TL(64, 8, 4, 1).withTags([ AVecReg(LRB_16x32f) ]),
          IxLxI_kmn_km( TL(64, 32, 4, 1).withTags([ AVecReg(LRB_16x32f) ]),
            SIMD_ISA_Bases1( TL(32, 16, 8, 1).withTags([ AVecReg(LRB_16x32f) ]) ),
            IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ),
          IxLxI_kmn_n( TL(64, 16, 4, 1).withTags([ AVecReg(LRB_16x32f) ]),
            IxLxI_kmn_km( TL(32, 16, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
              SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
              IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ),
            SIMD_ISA_Bases1( TL(32, 16, 8, 1).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
      origtree := IxLxI_IxLxI_down( TL(64, 8, 4, 1).withTags([ AVecReg(LRB_16x32f) ]),
          IxLxI_kmn_km( TL(64, 32, 4, 1).withTags([ AVecReg(LRB_16x32f) ]),
            SIMD_ISA_Bases1( TL(32, 16, 8, 1).withTags([ AVecReg(LRB_16x32f) ]) ),
            IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ),
          IxLxI_kmn_n( TL(64, 16, 4, 1).withTags([ AVecReg(LRB_16x32f) ]),
            IxLxI_kmn_km( TL(32, 16, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
              SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
              IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ),
            SIMD_ISA_Bases1( TL(32, 16, 8, 1).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
      measured := 48,
      globalUnrolling := 10000 ) ]);
SIMD_ISA_DB.hashAdd(TL(32, 16, 1, 1).withTags([ AVecReg(LRB_16x32f) ]), [ rec(
      ruletree := SIMD_ISA_Bases1( TL(32, 16, 1, 1).withTags([ AVecReg(LRB_16x32f) ]) ),
      origtree := SIMD_ISA_Bases1( TL(32, 16, 1, 1).withTags([ AVecReg(LRB_16x32f) ]) ),
      measured := 2,
      globalUnrolling := 8 ) ]);
SIMD_ISA_DB.hashAdd(TL(32, 8, 4, 2).withTags([ AVecReg(LRB_16x32f) ]), [ rec(
      ruletree := IxLxI_IxLxI_down( TL(32, 8, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
          IxLxI_kmn_km( TL(32, 16, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
            SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
            IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ),
          IxLxI_kmn_km( TL(32, 16, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
            SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
            IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
      origtree := IxLxI_IxLxI_down( TL(32, 8, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
          IxLxI_kmn_km( TL(32, 16, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
            SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
            IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ),
          IxLxI_kmn_km( TL(32, 16, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
            SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
            IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
      measured := 32,
      globalUnrolling := 10000 ) ]);
SIMD_ISA_DB.hashAdd(TL(16, 8, 1, 2).withTags([ AVecReg(LRB_16x32f) ]), [ rec(
      ruletree := SIMD_ISA_Bases1( TL(16, 8, 1, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
      origtree := SIMD_ISA_Bases1( TL(16, 8, 1, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
      measured := 2,
      globalUnrolling := 8 ) ]);
SIMD_ISA_DB.hashAdd(TL(8, 2, 1, 16).withTags([ AVecReg(LRB_16x32f) ]), [ rec(
      ruletree := IxLxI_kmn_n( TL(8, 2, 1, 16).withTags([ AVecReg(LRB_16x32f) ]),
          IxLxI_vtensor( TL(4, 2, 1, 32).withTags([ AVecReg(LRB_16x32f) ]) ),
          IxLxI_vtensor( TL(4, 2, 2, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ),
      origtree := IxLxI_kmn_n( TL(8, 2, 1, 16).withTags([ AVecReg(LRB_16x32f) ]),
          IxLxI_vtensor( TL(4, 2, 1, 32).withTags([ AVecReg(LRB_16x32f) ]) ),
          IxLxI_vtensor( TL(4, 2, 2, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ),
      measured := 0,
      globalUnrolling := 64 ) ]);
SIMD_ISA_DB.hashAdd(TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]), [ rec(
      ruletree := SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
      origtree := SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
      measured := 16,
      globalUnrolling := 64 ) ]);
SIMD_ISA_DB.hashAdd(TL(16, 8, 1, 16).withTags([ AVecReg(LRB_16x32f) ]), [ rec(
      ruletree := IxLxI_kmn_km( TL(16, 8, 1, 16).withTags([ AVecReg(LRB_16x32f) ]),
          IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ),
          IxLxI_kmn_km( TL(8, 4, 1, 32).withTags([ AVecReg(LRB_16x32f) ]),
            IxLxI_vtensor( TL(4, 2, 2, 32).withTags([ AVecReg(LRB_16x32f) ]) ),
            IxLxI_vtensor( TL(4, 2, 1, 64).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
      origtree := IxLxI_kmn_km( TL(16, 8, 1, 16).withTags([ AVecReg(LRB_16x32f) ]),
          IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ),
          IxLxI_kmn_km( TL(8, 4, 1, 32).withTags([ AVecReg(LRB_16x32f) ]),
            IxLxI_vtensor( TL(4, 2, 2, 32).withTags([ AVecReg(LRB_16x32f) ]) ),
            IxLxI_vtensor( TL(4, 2, 1, 64).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
      measured := 0,
      globalUnrolling := 64 ) ]);
SIMD_ISA_DB.hashAdd(TL(32, 16, 4, 2).withTags([ AVecReg(LRB_16x32f) ]), [ rec(
      ruletree := IxLxI_kmn_km( TL(32, 16, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
          SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
          IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ),
      origtree := IxLxI_kmn_km( TL(32, 16, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
          SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
          IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ),
      measured := 16,
      globalUnrolling := 64 ) ]);
SIMD_ISA_DB.hashAdd(TL(4, 2, 1, 64).withTags([ AVecReg(LRB_16x32f) ]), [ rec(
      ruletree := IxLxI_vtensor( TL(4, 2, 1, 64).withTags([ AVecReg(LRB_16x32f) ]) ),
      origtree := IxLxI_vtensor( TL(4, 2, 1, 64).withTags([ AVecReg(LRB_16x32f) ]) ),
      measured := 0,
      globalUnrolling := 64 ) ]);
SIMD_ISA_DB.hashAdd(TL(256, 128, 1, 1).withTags([ AVecReg(LRB_16x32f) ]), [ rec(
      ruletree := IxLxI_kmn_km( TL(256, 128, 1, 1).withTags([ AVecReg(LRB_16x32f) ]),
          SIMD_ISA_Bases1( TL(32, 16, 8, 1).withTags([ AVecReg(LRB_16x32f) ]) ),
          IxLxI_kmn_km( TL(16, 8, 1, 16).withTags([ AVecReg(LRB_16x32f) ]),
            IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ),
            IxLxI_kmn_km( TL(8, 4, 1, 32).withTags([ AVecReg(LRB_16x32f) ]),
              IxLxI_vtensor( TL(4, 2, 2, 32).withTags([ AVecReg(LRB_16x32f) ]) ),
              IxLxI_vtensor( TL(4, 2, 1, 64).withTags([ AVecReg(LRB_16x32f) ]) ) ) ) ),
      origtree := IxLxI_kmn_km( TL(256, 128, 1, 1).withTags([ AVecReg(LRB_16x32f) ]),
          SIMD_ISA_Bases1( TL(32, 16, 8, 1).withTags([ AVecReg(LRB_16x32f) ]) ),
          IxLxI_kmn_km( TL(16, 8, 1, 16).withTags([ AVecReg(LRB_16x32f) ]),
            IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ),
            IxLxI_kmn_km( TL(8, 4, 1, 32).withTags([ AVecReg(LRB_16x32f) ]),
              IxLxI_vtensor( TL(4, 2, 2, 32).withTags([ AVecReg(LRB_16x32f) ]) ),
              IxLxI_vtensor( TL(4, 2, 1, 64).withTags([ AVecReg(LRB_16x32f) ]) ) ) ) ),
      measured := 16,
      globalUnrolling := 10000 ) ]);
SIMD_ISA_DB.hashAdd(TL(16, 2, 1, 16).withTags([ AVecReg(LRB_16x32f) ]), [ rec(
      ruletree := IxLxI_kmn_n( TL(16, 2, 1, 16).withTags([ AVecReg(LRB_16x32f) ]),
          IxLxI_kmn_n( TL(8, 2, 1, 32).withTags([ AVecReg(LRB_16x32f) ]),
            IxLxI_vtensor( TL(4, 2, 1, 64).withTags([ AVecReg(LRB_16x32f) ]) ),
            IxLxI_vtensor( TL(4, 2, 2, 32).withTags([ AVecReg(LRB_16x32f) ]) ) ),
          IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ),
      origtree := IxLxI_kmn_n( TL(16, 2, 1, 16).withTags([ AVecReg(LRB_16x32f) ]),
          IxLxI_kmn_n( TL(8, 2, 1, 32).withTags([ AVecReg(LRB_16x32f) ]),
            IxLxI_vtensor( TL(4, 2, 1, 64).withTags([ AVecReg(LRB_16x32f) ]) ),
            IxLxI_vtensor( TL(4, 2, 2, 32).withTags([ AVecReg(LRB_16x32f) ]) ) ),
          IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ),
      measured := 0,
      globalUnrolling := 64 ) ]);
SIMD_ISA_DB.hashAdd(TL(128, 32, 1, 2).withTags([ AVecReg(LRB_16x32f) ]), [ rec(
      ruletree := IxLxI_kmn_km( TL(128, 32, 1, 2).withTags([ AVecReg(LRB_16x32f) ]),
          IxLxI_IxLxI_down( TL(32, 8, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
            IxLxI_kmn_km( TL(32, 16, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
              SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
              IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ),
            IxLxI_kmn_km( TL(32, 16, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
              SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
              IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
          IxLxI_kmn_n( TL(16, 4, 1, 16).withTags([ AVecReg(LRB_16x32f) ]),
            IxLxI_kmn_km( TL(8, 4, 1, 32).withTags([ AVecReg(LRB_16x32f) ]),
              IxLxI_vtensor( TL(4, 2, 2, 32).withTags([ AVecReg(LRB_16x32f) ]) ),
              IxLxI_vtensor( TL(4, 2, 1, 64).withTags([ AVecReg(LRB_16x32f) ]) ) ),
            IxLxI_kmn_km( TL(8, 4, 2, 16).withTags([ AVecReg(LRB_16x32f) ]),
              IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ),
              IxLxI_vtensor( TL(4, 2, 2, 32).withTags([ AVecReg(LRB_16x32f) ]) ) ) ) ),
      origtree := IxLxI_kmn_km( TL(128, 32, 1, 2).withTags([ AVecReg(LRB_16x32f) ]),
          IxLxI_IxLxI_down( TL(32, 8, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
            IxLxI_kmn_km( TL(32, 16, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
              SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
              IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ),
            IxLxI_kmn_km( TL(32, 16, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
              SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
              IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
          IxLxI_kmn_n( TL(16, 4, 1, 16).withTags([ AVecReg(LRB_16x32f) ]),
            IxLxI_kmn_km( TL(8, 4, 1, 32).withTags([ AVecReg(LRB_16x32f) ]),
              IxLxI_vtensor( TL(4, 2, 2, 32).withTags([ AVecReg(LRB_16x32f) ]) ),
              IxLxI_vtensor( TL(4, 2, 1, 64).withTags([ AVecReg(LRB_16x32f) ]) ) ),
            IxLxI_kmn_km( TL(8, 4, 2, 16).withTags([ AVecReg(LRB_16x32f) ]),
              IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ),
              IxLxI_vtensor( TL(4, 2, 2, 32).withTags([ AVecReg(LRB_16x32f) ]) ) ) ) ),
      measured := 32,
      globalUnrolling := 10000 ) ]);
SIMD_ISA_DB.hashAdd(TL(128, 32, 2, 1).withTags([ AVecReg(LRB_16x32f) ]), [ rec(
      ruletree := IxLxI_kmn_n( TL(128, 32, 2, 1).withTags([ AVecReg(LRB_16x32f) ]),
          IxLxI_kmn_km( TL(64, 32, 2, 2).withTags([ AVecReg(LRB_16x32f) ]),
            SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
            IxLxI_kmn_km( TL(8, 4, 2, 16).withTags([ AVecReg(LRB_16x32f) ]),
              IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ),
              IxLxI_vtensor( TL(4, 2, 2, 32).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
          IxLxI_kmn_km( TL(64, 32, 4, 1).withTags([ AVecReg(LRB_16x32f) ]),
            SIMD_ISA_Bases1( TL(32, 16, 8, 1).withTags([ AVecReg(LRB_16x32f) ]) ),
            IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
      origtree := IxLxI_kmn_n( TL(128, 32, 2, 1).withTags([ AVecReg(LRB_16x32f) ]),
          IxLxI_kmn_km( TL(64, 32, 2, 2).withTags([ AVecReg(LRB_16x32f) ]),
            SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
            IxLxI_kmn_km( TL(8, 4, 2, 16).withTags([ AVecReg(LRB_16x32f) ]),
              IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ),
              IxLxI_vtensor( TL(4, 2, 2, 32).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
          IxLxI_kmn_km( TL(64, 32, 4, 1).withTags([ AVecReg(LRB_16x32f) ]),
            SIMD_ISA_Bases1( TL(32, 16, 8, 1).withTags([ AVecReg(LRB_16x32f) ]) ),
            IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
      measured := 32,
      globalUnrolling := 10000 ) ]);
SIMD_ISA_DB.hashAdd(TL(256, 64, 1, 1).withTags([ AVecReg(LRB_16x32f) ]), [ rec(
      ruletree := IxLxI_kmn_n( TL(256, 64, 1, 1).withTags([ AVecReg(LRB_16x32f) ]),
          IxLxI_kmn_km( TL(128, 64, 1, 2).withTags([ AVecReg(LRB_16x32f) ]),
            SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
            IxLxI_kmn_km( TL(16, 8, 1, 16).withTags([ AVecReg(LRB_16x32f) ]),
              IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ),
              IxLxI_kmn_km( TL(8, 4, 1, 32).withTags([ AVecReg(LRB_16x32f) ]),
                IxLxI_vtensor( TL(4, 2, 2, 32).withTags([ AVecReg(LRB_16x32f) ]) ),
                IxLxI_vtensor( TL(4, 2, 1, 64).withTags([ AVecReg(LRB_16x32f) ]) ) ) ) ),
          IxLxI_kmn_km( TL(128, 64, 2, 1).withTags([ AVecReg(LRB_16x32f) ]),
            SIMD_ISA_Bases1( TL(32, 16, 8, 1).withTags([ AVecReg(LRB_16x32f) ]) ),
            IxLxI_kmn_km( TL(8, 4, 2, 16).withTags([ AVecReg(LRB_16x32f) ]),
              IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ),
              IxLxI_vtensor( TL(4, 2, 2, 32).withTags([ AVecReg(LRB_16x32f) ]) ) ) ) ),
      origtree := IxLxI_kmn_n( TL(256, 64, 1, 1).withTags([ AVecReg(LRB_16x32f) ]),
          IxLxI_kmn_km( TL(128, 64, 1, 2).withTags([ AVecReg(LRB_16x32f) ]),
            SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
            IxLxI_kmn_km( TL(16, 8, 1, 16).withTags([ AVecReg(LRB_16x32f) ]),
              IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ),
              IxLxI_kmn_km( TL(8, 4, 1, 32).withTags([ AVecReg(LRB_16x32f) ]),
                IxLxI_vtensor( TL(4, 2, 2, 32).withTags([ AVecReg(LRB_16x32f) ]) ),
                IxLxI_vtensor( TL(4, 2, 1, 64).withTags([ AVecReg(LRB_16x32f) ]) ) ) ) ),
          IxLxI_kmn_km( TL(128, 64, 2, 1).withTags([ AVecReg(LRB_16x32f) ]),
            SIMD_ISA_Bases1( TL(32, 16, 8, 1).withTags([ AVecReg(LRB_16x32f) ]) ),
            IxLxI_kmn_km( TL(8, 4, 2, 16).withTags([ AVecReg(LRB_16x32f) ]),
              IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ),
              IxLxI_vtensor( TL(4, 2, 2, 32).withTags([ AVecReg(LRB_16x32f) ]) ) ) ) ),
      measured := 32,
      globalUnrolling := 10000 ) ]);
SIMD_ISA_DB.hashAdd(TL(8, 4, 2, 16).withTags([ AVecReg(LRB_16x32f) ]), [ rec(
      ruletree := IxLxI_kmn_km( TL(8, 4, 2, 16).withTags([ AVecReg(LRB_16x32f) ]),
          IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ),
          IxLxI_vtensor( TL(4, 2, 2, 32).withTags([ AVecReg(LRB_16x32f) ]) ) ),
      origtree := IxLxI_kmn_km( TL(8, 4, 2, 16).withTags([ AVecReg(LRB_16x32f) ]),
          IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ),
          IxLxI_vtensor( TL(4, 2, 2, 32).withTags([ AVecReg(LRB_16x32f) ]) ) ),
      measured := 0,
      globalUnrolling := 64 ) ]);
SIMD_ISA_DB.hashAdd(TL(16, 8, 4, 2).withTags([ AVecReg(LRB_16x32f) ]), [ rec(
      ruletree := SIMD_ISA_Bases1( TL(16, 8, 4, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
      origtree := SIMD_ISA_Bases1( TL(16, 8, 4, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
      measured := 8,
      globalUnrolling := 64 ) ]);
SIMD_ISA_DB.hashAdd(TL(16, 4, 8, 2).withTags([ AVecReg(LRB_16x32f) ]), [ rec(
      ruletree := IxLxI_IxLxI_down( TL(16, 4, 8, 2).withTags([ AVecReg(LRB_16x32f) ]),
          SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
          SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ) ),
      origtree := IxLxI_IxLxI_down( TL(16, 4, 8, 2).withTags([ AVecReg(LRB_16x32f) ]),
          SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
          SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ) ),
      measured := 32,
      globalUnrolling := 10000 ) ]);
SIMD_ISA_DB.hashAdd(TL(256, 32, 1, 1).withTags([ AVecReg(LRB_16x32f) ]), [ rec(
      ruletree := IxLxI_kmn_n( TL(256, 32, 1, 1).withTags([ AVecReg(LRB_16x32f) ]),
          IxLxI_kmn_km( TL(128, 32, 1, 2).withTags([ AVecReg(LRB_16x32f) ]),
            IxLxI_IxLxI_down( TL(32, 8, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
              IxLxI_kmn_km( TL(32, 16, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
                SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
                IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ),
              IxLxI_kmn_km( TL(32, 16, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
                SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
                IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
            IxLxI_kmn_n( TL(16, 4, 1, 16).withTags([ AVecReg(LRB_16x32f) ]),
              IxLxI_kmn_km( TL(8, 4, 1, 32).withTags([ AVecReg(LRB_16x32f) ]),
                IxLxI_vtensor( TL(4, 2, 2, 32).withTags([ AVecReg(LRB_16x32f) ]) ),
                IxLxI_vtensor( TL(4, 2, 1, 64).withTags([ AVecReg(LRB_16x32f) ]) ) ),
              IxLxI_kmn_km( TL(8, 4, 2, 16).withTags([ AVecReg(LRB_16x32f) ]),
                IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ),
                IxLxI_vtensor( TL(4, 2, 2, 32).withTags([ AVecReg(LRB_16x32f) ]) ) ) ) ),
          IxLxI_kmn_km( TL(64, 32, 4, 1).withTags([ AVecReg(LRB_16x32f) ]),
            SIMD_ISA_Bases1( TL(32, 16, 8, 1).withTags([ AVecReg(LRB_16x32f) ]) ),
            IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
      origtree := IxLxI_kmn_n( TL(256, 32, 1, 1).withTags([ AVecReg(LRB_16x32f) ]),
          IxLxI_kmn_km( TL(128, 32, 1, 2).withTags([ AVecReg(LRB_16x32f) ]),
            IxLxI_IxLxI_down( TL(32, 8, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
              IxLxI_kmn_km( TL(32, 16, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
                SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
                IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ),
              IxLxI_kmn_km( TL(32, 16, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
                SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
                IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
            IxLxI_kmn_n( TL(16, 4, 1, 16).withTags([ AVecReg(LRB_16x32f) ]),
              IxLxI_kmn_km( TL(8, 4, 1, 32).withTags([ AVecReg(LRB_16x32f) ]),
                IxLxI_vtensor( TL(4, 2, 2, 32).withTags([ AVecReg(LRB_16x32f) ]) ),
                IxLxI_vtensor( TL(4, 2, 1, 64).withTags([ AVecReg(LRB_16x32f) ]) ) ),
              IxLxI_kmn_km( TL(8, 4, 2, 16).withTags([ AVecReg(LRB_16x32f) ]),
                IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ),
                IxLxI_vtensor( TL(4, 2, 2, 32).withTags([ AVecReg(LRB_16x32f) ]) ) ) ) ),
          IxLxI_kmn_km( TL(64, 32, 4, 1).withTags([ AVecReg(LRB_16x32f) ]),
            SIMD_ISA_Bases1( TL(32, 16, 8, 1).withTags([ AVecReg(LRB_16x32f) ]) ),
            IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
      measured := 48,
      globalUnrolling := 10000 ) ]);
SIMD_ISA_DB.hashAdd(TL(64, 16, 4, 1).withTags([ AVecReg(LRB_16x32f) ]), [ rec(
      ruletree := IxLxI_kmn_n( TL(64, 16, 4, 1).withTags([ AVecReg(LRB_16x32f) ]),
          IxLxI_kmn_km( TL(32, 16, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
            SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
            IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ),
          SIMD_ISA_Bases1( TL(32, 16, 8, 1).withTags([ AVecReg(LRB_16x32f) ]) ) ),
      origtree := IxLxI_kmn_n( TL(64, 16, 4, 1).withTags([ AVecReg(LRB_16x32f) ]),
          IxLxI_kmn_km( TL(32, 16, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
            SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
            IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ),
          SIMD_ISA_Bases1( TL(32, 16, 8, 1).withTags([ AVecReg(LRB_16x32f) ]) ) ),
      measured := 32,
      globalUnrolling := 64 ) ]);
SIMD_ISA_DB.hashAdd(TL(256, 16, 1, 1).withTags([ AVecReg(LRB_16x32f) ]), [ rec(
      ruletree := IxLxI_kmn_n( TL(256, 16, 1, 1).withTags([ AVecReg(LRB_16x32f) ]),
          IxLxI_kmn_km( TL(128, 16, 1, 2).withTags([ AVecReg(LRB_16x32f) ]),
            IxLxI_IxLxI_down( TL(64, 8, 2, 2).withTags([ AVecReg(LRB_16x32f) ]),
              IxLxI_kmn_km( TL(64, 32, 2, 2).withTags([ AVecReg(LRB_16x32f) ]),
                SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
                IxLxI_kmn_km( TL(8, 4, 2, 16).withTags([ AVecReg(LRB_16x32f) ]),
                  IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ),
                  IxLxI_vtensor( TL(4, 2, 2, 32).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
              IxLxI_kmn_km( TL(64, 16, 2, 2).withTags([ AVecReg(LRB_16x32f) ]),
                IxLxI_IxLxI_down( TL(32, 8, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
                  IxLxI_kmn_km( TL(32, 16, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
                    SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
                    IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ),
                  IxLxI_kmn_km( TL(32, 16, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
                    SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
                    IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
                IxLxI_kmn_n( TL(8, 2, 2, 16).withTags([ AVecReg(LRB_16x32f) ]),
                  IxLxI_vtensor( TL(4, 2, 2, 32).withTags([ AVecReg(LRB_16x32f) ]) ),
                  IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ) ) ),
            IxLxI_kmn_n( TL(16, 2, 1, 16).withTags([ AVecReg(LRB_16x32f) ]),
              IxLxI_kmn_n( TL(8, 2, 1, 32).withTags([ AVecReg(LRB_16x32f) ]),
                IxLxI_vtensor( TL(4, 2, 1, 64).withTags([ AVecReg(LRB_16x32f) ]) ),
                IxLxI_vtensor( TL(4, 2, 2, 32).withTags([ AVecReg(LRB_16x32f) ]) ) ),
              IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
          SIMD_ISA_Bases1( TL(32, 16, 8, 1).withTags([ AVecReg(LRB_16x32f) ]) ) ),
      origtree := IxLxI_kmn_n( TL(256, 16, 1, 1).withTags([ AVecReg(LRB_16x32f) ]),
          IxLxI_kmn_km( TL(128, 16, 1, 2).withTags([ AVecReg(LRB_16x32f) ]),
            IxLxI_IxLxI_down( TL(64, 8, 2, 2).withTags([ AVecReg(LRB_16x32f) ]),
              IxLxI_kmn_km( TL(64, 32, 2, 2).withTags([ AVecReg(LRB_16x32f) ]),
                SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
                IxLxI_kmn_km( TL(8, 4, 2, 16).withTags([ AVecReg(LRB_16x32f) ]),
                  IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ),
                  IxLxI_vtensor( TL(4, 2, 2, 32).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
              IxLxI_kmn_km( TL(64, 16, 2, 2).withTags([ AVecReg(LRB_16x32f) ]),
                IxLxI_IxLxI_down( TL(32, 8, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
                  IxLxI_kmn_km( TL(32, 16, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
                    SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
                    IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ),
                  IxLxI_kmn_km( TL(32, 16, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
                    SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
                    IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
                IxLxI_kmn_n( TL(8, 2, 2, 16).withTags([ AVecReg(LRB_16x32f) ]),
                  IxLxI_vtensor( TL(4, 2, 2, 32).withTags([ AVecReg(LRB_16x32f) ]) ),
                  IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ) ) ),
            IxLxI_kmn_n( TL(16, 2, 1, 16).withTags([ AVecReg(LRB_16x32f) ]),
              IxLxI_kmn_n( TL(8, 2, 1, 32).withTags([ AVecReg(LRB_16x32f) ]),
                IxLxI_vtensor( TL(4, 2, 1, 64).withTags([ AVecReg(LRB_16x32f) ]) ),
                IxLxI_vtensor( TL(4, 2, 2, 32).withTags([ AVecReg(LRB_16x32f) ]) ) ),
              IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
          SIMD_ISA_Bases1( TL(32, 16, 8, 1).withTags([ AVecReg(LRB_16x32f) ]) ) ),
      measured := 64,
      globalUnrolling := 10000 ) ]);
SIMD_ISA_DB.hashAdd(TL(64, 4, 2, 2).withTags([ AVecReg(LRB_16x32f) ]), [ rec(
      ruletree := IxLxI_kmn_n( TL(64, 4, 2, 2).withTags([ AVecReg(LRB_16x32f) ]),
          IxLxI_kmn_km( TL(8, 4, 2, 16).withTags([ AVecReg(LRB_16x32f) ]),
            IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ),
            IxLxI_vtensor( TL(4, 2, 2, 32).withTags([ AVecReg(LRB_16x32f) ]) ) ),
          IxLxI_IxLxI_down( TL(32, 4, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
            IxLxI_kmn_km( TL(32, 16, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
              SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
              IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ),
            IxLxI_IxLxI_down( TL(32, 8, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
              IxLxI_kmn_km( TL(32, 16, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
                SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
                IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ),
              IxLxI_kmn_km( TL(32, 16, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
                SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
                IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ) ) ) ),
      origtree := IxLxI_kmn_n( TL(64, 4, 2, 2).withTags([ AVecReg(LRB_16x32f) ]),
          IxLxI_kmn_km( TL(8, 4, 2, 16).withTags([ AVecReg(LRB_16x32f) ]),
            IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ),
            IxLxI_vtensor( TL(4, 2, 2, 32).withTags([ AVecReg(LRB_16x32f) ]) ) ),
          IxLxI_IxLxI_down( TL(32, 4, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
            IxLxI_kmn_km( TL(32, 16, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
              SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
              IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ),
            IxLxI_IxLxI_down( TL(32, 8, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
              IxLxI_kmn_km( TL(32, 16, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
                SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
                IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ),
              IxLxI_kmn_km( TL(32, 16, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
                SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
                IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ) ) ) ),
      measured := 48,
      globalUnrolling := 10000 ) ]);
SIMD_ISA_DB.hashAdd(TL(8, 4, 1, 16).withTags([ AVecReg(LRB_16x32f) ]), [ rec(
      ruletree := IxLxI_kmn_km( TL(8, 4, 1, 16).withTags([ AVecReg(LRB_16x32f) ]),
          IxLxI_vtensor( TL(4, 2, 2, 16).withTags([ AVecReg(LRB_16x32f) ]) ),
          IxLxI_vtensor( TL(4, 2, 1, 32).withTags([ AVecReg(LRB_16x32f) ]) ) ),
      origtree := IxLxI_kmn_km( TL(8, 4, 1, 16).withTags([ AVecReg(LRB_16x32f) ]),
          IxLxI_vtensor( TL(4, 2, 2, 16).withTags([ AVecReg(LRB_16x32f) ]) ),
          IxLxI_vtensor( TL(4, 2, 1, 32).withTags([ AVecReg(LRB_16x32f) ]) ) ),
      measured := 0,
      globalUnrolling := 64 ) ]);
SIMD_ISA_DB.hashAdd(TL(32, 16, 8, 1).withTags([ AVecReg(LRB_16x32f) ]), [ rec(
      ruletree := SIMD_ISA_Bases1( TL(32, 16, 8, 1).withTags([ AVecReg(LRB_16x32f) ]) ),
      origtree := SIMD_ISA_Bases1( TL(32, 16, 8, 1).withTags([ AVecReg(LRB_16x32f) ]) ),
      measured := 16,
      globalUnrolling := 64 ) ]);
SIMD_ISA_DB.hashAdd(TL(64, 32, 2, 2).withTags([ AVecReg(LRB_16x32f) ]), [ rec(
      ruletree := IxLxI_kmn_km( TL(64, 32, 2, 2).withTags([ AVecReg(LRB_16x32f) ]),
          SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
          IxLxI_kmn_km( TL(8, 4, 2, 16).withTags([ AVecReg(LRB_16x32f) ]),
            IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ),
            IxLxI_vtensor( TL(4, 2, 2, 32).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
      origtree := IxLxI_kmn_km( TL(64, 32, 2, 2).withTags([ AVecReg(LRB_16x32f) ]),
          SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
          IxLxI_kmn_km( TL(8, 4, 2, 16).withTags([ AVecReg(LRB_16x32f) ]),
            IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ),
            IxLxI_vtensor( TL(4, 2, 2, 32).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
      measured := 16,
      globalUnrolling := 10000 ) ]);
SIMD_ISA_DB.hashAdd(TL(4, 2, 1, 32).withTags([ AVecReg(LRB_16x32f) ]), [ rec(
      ruletree := IxLxI_vtensor( TL(4, 2, 1, 32).withTags([ AVecReg(LRB_16x32f) ]) ),
      origtree := IxLxI_vtensor( TL(4, 2, 1, 32).withTags([ AVecReg(LRB_16x32f) ]) ),
      measured := 0,
      globalUnrolling := 64 ) ]);
SIMD_ISA_DB.hashAdd(TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]), [ rec(
      ruletree := IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ),
      origtree := IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ),
      measured := 0,
      globalUnrolling := 64 ) ]);
SIMD_ISA_DB.hashAdd(TL(16, 4, 4, 2).withTags([ AVecReg(LRB_16x32f) ]), [ rec(
      ruletree := IxLxI_IxLxI_down( TL(16, 4, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
          SIMD_ISA_Bases1( TL(16, 8, 4, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
          SIMD_ISA_Bases1( TL(16, 8, 4, 2).withTags([ AVecReg(LRB_16x32f) ]) ) ),
      origtree := IxLxI_IxLxI_down( TL(16, 4, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
          SIMD_ISA_Bases1( TL(16, 8, 4, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
          SIMD_ISA_Bases1( TL(16, 8, 4, 2).withTags([ AVecReg(LRB_16x32f) ]) ) ),
      measured := 16,
      globalUnrolling := 10000 ) ]);
SIMD_ISA_DB.hashAdd(TL(64, 16, 1, 2).withTags([ AVecReg(LRB_16x32f) ]), [ rec(
      ruletree := IxLxI_kmn_km( TL(64, 16, 1, 2).withTags([ AVecReg(LRB_16x32f) ]),
          IxLxI_IxLxI_down( TL(32, 8, 2, 2).withTags([ AVecReg(LRB_16x32f) ]),
            IxLxI_kmn_km( TL(32, 16, 2, 2).withTags([ AVecReg(LRB_16x32f) ]),
              SIMD_ISA_Bases1( TL(16, 8, 4, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
              IxLxI_vtensor( TL(4, 2, 2, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ),
            IxLxI_kmn_km( TL(32, 16, 2, 2).withTags([ AVecReg(LRB_16x32f) ]),
              SIMD_ISA_Bases1( TL(16, 8, 4, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
              IxLxI_vtensor( TL(4, 2, 2, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
          IxLxI_kmn_n( TL(8, 2, 1, 16).withTags([ AVecReg(LRB_16x32f) ]),
            IxLxI_vtensor( TL(4, 2, 1, 32).withTags([ AVecReg(LRB_16x32f) ]) ),
            IxLxI_vtensor( TL(4, 2, 2, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
      origtree := IxLxI_kmn_km( TL(64, 16, 1, 2).withTags([ AVecReg(LRB_16x32f) ]),
          IxLxI_IxLxI_down( TL(32, 8, 2, 2).withTags([ AVecReg(LRB_16x32f) ]),
            IxLxI_kmn_km( TL(32, 16, 2, 2).withTags([ AVecReg(LRB_16x32f) ]),
              SIMD_ISA_Bases1( TL(16, 8, 4, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
              IxLxI_vtensor( TL(4, 2, 2, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ),
            IxLxI_kmn_km( TL(32, 16, 2, 2).withTags([ AVecReg(LRB_16x32f) ]),
              SIMD_ISA_Bases1( TL(16, 8, 4, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
              IxLxI_vtensor( TL(4, 2, 2, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
          IxLxI_kmn_n( TL(8, 2, 1, 16).withTags([ AVecReg(LRB_16x32f) ]),
            IxLxI_vtensor( TL(4, 2, 1, 32).withTags([ AVecReg(LRB_16x32f) ]) ),
            IxLxI_vtensor( TL(4, 2, 2, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
      measured := 16,
      globalUnrolling := 10000 ) ]);
SIMD_ISA_DB.hashAdd(TL(64, 4, 4, 1).withTags([ AVecReg(LRB_16x32f) ]), [ rec(
      ruletree := IxLxI_IxLxI_down( TL(64, 4, 4, 1).withTags([ AVecReg(LRB_16x32f) ]),
          IxLxI_kmn_km( TL(64, 32, 4, 1).withTags([ AVecReg(LRB_16x32f) ]),
            SIMD_ISA_Bases1( TL(32, 16, 8, 1).withTags([ AVecReg(LRB_16x32f) ]) ),
            IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ),
          IxLxI_IxLxI_down( TL(64, 8, 4, 1).withTags([ AVecReg(LRB_16x32f) ]),
            IxLxI_kmn_km( TL(64, 32, 4, 1).withTags([ AVecReg(LRB_16x32f) ]),
              SIMD_ISA_Bases1( TL(32, 16, 8, 1).withTags([ AVecReg(LRB_16x32f) ]) ),
              IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ),
            IxLxI_kmn_n( TL(64, 16, 4, 1).withTags([ AVecReg(LRB_16x32f) ]),
              IxLxI_kmn_km( TL(32, 16, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
                SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
                IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ),
              SIMD_ISA_Bases1( TL(32, 16, 8, 1).withTags([ AVecReg(LRB_16x32f) ]) ) ) ) ),
      origtree := IxLxI_IxLxI_down( TL(64, 4, 4, 1).withTags([ AVecReg(LRB_16x32f) ]),
          IxLxI_kmn_km( TL(64, 32, 4, 1).withTags([ AVecReg(LRB_16x32f) ]),
            SIMD_ISA_Bases1( TL(32, 16, 8, 1).withTags([ AVecReg(LRB_16x32f) ]) ),
            IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ),
          IxLxI_IxLxI_down( TL(64, 8, 4, 1).withTags([ AVecReg(LRB_16x32f) ]),
            IxLxI_kmn_km( TL(64, 32, 4, 1).withTags([ AVecReg(LRB_16x32f) ]),
              SIMD_ISA_Bases1( TL(32, 16, 8, 1).withTags([ AVecReg(LRB_16x32f) ]) ),
              IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ),
            IxLxI_kmn_n( TL(64, 16, 4, 1).withTags([ AVecReg(LRB_16x32f) ]),
              IxLxI_kmn_km( TL(32, 16, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
                SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
                IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ),
              SIMD_ISA_Bases1( TL(32, 16, 8, 1).withTags([ AVecReg(LRB_16x32f) ]) ) ) ) ),
      measured := 64,
      globalUnrolling := 10000 ) ]);
SIMD_ISA_DB.hashAdd(TL(64, 32, 1, 2).withTags([ AVecReg(LRB_16x32f) ]), [ rec(
      ruletree := IxLxI_kmn_km( TL(64, 32, 1, 2).withTags([ AVecReg(LRB_16x32f) ]),
          SIMD_ISA_Bases1( TL(16, 8, 4, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
          IxLxI_kmn_km( TL(8, 4, 1, 16).withTags([ AVecReg(LRB_16x32f) ]),
            IxLxI_vtensor( TL(4, 2, 2, 16).withTags([ AVecReg(LRB_16x32f) ]) ),
            IxLxI_vtensor( TL(4, 2, 1, 32).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
      origtree := IxLxI_kmn_km( TL(64, 32, 1, 2).withTags([ AVecReg(LRB_16x32f) ]),
          SIMD_ISA_Bases1( TL(16, 8, 4, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
          IxLxI_kmn_km( TL(8, 4, 1, 16).withTags([ AVecReg(LRB_16x32f) ]),
            IxLxI_vtensor( TL(4, 2, 2, 16).withTags([ AVecReg(LRB_16x32f) ]) ),
            IxLxI_vtensor( TL(4, 2, 1, 32).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
      measured := 8,
      globalUnrolling := 10000 ) ]);
SIMD_ISA_DB.hashAdd(TL(64, 8, 2, 2).withTags([ AVecReg(LRB_16x32f) ]), [ rec(
      ruletree := IxLxI_IxLxI_down( TL(64, 8, 2, 2).withTags([ AVecReg(LRB_16x32f) ]),
          IxLxI_kmn_km( TL(64, 32, 2, 2).withTags([ AVecReg(LRB_16x32f) ]),
            SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
            IxLxI_kmn_km( TL(8, 4, 2, 16).withTags([ AVecReg(LRB_16x32f) ]),
              IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ),
              IxLxI_vtensor( TL(4, 2, 2, 32).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
          IxLxI_kmn_km( TL(64, 16, 2, 2).withTags([ AVecReg(LRB_16x32f) ]),
            IxLxI_IxLxI_down( TL(32, 8, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
              IxLxI_kmn_km( TL(32, 16, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
                SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
                IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ),
              IxLxI_kmn_km( TL(32, 16, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
                SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
                IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
            IxLxI_kmn_n( TL(8, 2, 2, 16).withTags([ AVecReg(LRB_16x32f) ]),
              IxLxI_vtensor( TL(4, 2, 2, 32).withTags([ AVecReg(LRB_16x32f) ]) ),
              IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ) ) ),
      origtree := IxLxI_IxLxI_down( TL(64, 8, 2, 2).withTags([ AVecReg(LRB_16x32f) ]),
          IxLxI_kmn_km( TL(64, 32, 2, 2).withTags([ AVecReg(LRB_16x32f) ]),
            SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
            IxLxI_kmn_km( TL(8, 4, 2, 16).withTags([ AVecReg(LRB_16x32f) ]),
              IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ),
              IxLxI_vtensor( TL(4, 2, 2, 32).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
          IxLxI_kmn_km( TL(64, 16, 2, 2).withTags([ AVecReg(LRB_16x32f) ]),
            IxLxI_IxLxI_down( TL(32, 8, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
              IxLxI_kmn_km( TL(32, 16, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
                SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
                IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ),
              IxLxI_kmn_km( TL(32, 16, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
                SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
                IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
            IxLxI_kmn_n( TL(8, 2, 2, 16).withTags([ AVecReg(LRB_16x32f) ]),
              IxLxI_vtensor( TL(4, 2, 2, 32).withTags([ AVecReg(LRB_16x32f) ]) ),
              IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ) ) ),
      measured := 48,
      globalUnrolling := 10000 ) ]);
SIMD_ISA_DB.hashAdd(TL(4, 2, 2, 16).withTags([ AVecReg(LRB_16x32f) ]), [ rec(
      ruletree := IxLxI_vtensor( TL(4, 2, 2, 16).withTags([ AVecReg(LRB_16x32f) ]) ),
      origtree := IxLxI_vtensor( TL(4, 2, 2, 16).withTags([ AVecReg(LRB_16x32f) ]) ),
      measured := 0,
      globalUnrolling := 64 ) ]);
SIMD_ISA_DB.hashAdd(TL(16, 2, 4, 2).withTags([ AVecReg(LRB_16x32f) ]), [ rec(
      ruletree := IxLxI_IxLxI_down( TL(16, 2, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
          SIMD_ISA_Bases1( TL(16, 8, 4, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
          IxLxI_IxLxI_down( TL(16, 4, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
            SIMD_ISA_Bases1( TL(16, 8, 4, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
            SIMD_ISA_Bases1( TL(16, 8, 4, 2).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
      origtree := IxLxI_IxLxI_down( TL(16, 2, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
          SIMD_ISA_Bases1( TL(16, 8, 4, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
          IxLxI_IxLxI_down( TL(16, 4, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
            SIMD_ISA_Bases1( TL(16, 8, 4, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
            SIMD_ISA_Bases1( TL(16, 8, 4, 2).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
      measured := 24,
      globalUnrolling := 10000 ) ]);
SIMD_ISA_DB.hashAdd(TL(32, 16, 2, 2).withTags([ AVecReg(LRB_16x32f) ]), [ rec(
      ruletree := IxLxI_kmn_km( TL(32, 16, 2, 2).withTags([ AVecReg(LRB_16x32f) ]),
          SIMD_ISA_Bases1( TL(16, 8, 4, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
          IxLxI_vtensor( TL(4, 2, 2, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ),
      origtree := IxLxI_kmn_km( TL(32, 16, 2, 2).withTags([ AVecReg(LRB_16x32f) ]),
          SIMD_ISA_Bases1( TL(16, 8, 4, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
          IxLxI_vtensor( TL(4, 2, 2, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ),
      measured := 8,
      globalUnrolling := 10000 ) ]);
SIMD_ISA_DB.hashAdd(TL(32, 4, 4, 2).withTags([ AVecReg(LRB_16x32f) ]), [ rec(
      ruletree := IxLxI_IxLxI_down( TL(32, 4, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
          IxLxI_kmn_km( TL(32, 16, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
            SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
            IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ),
          IxLxI_IxLxI_down( TL(32, 8, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
            IxLxI_kmn_km( TL(32, 16, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
              SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
              IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ),
            IxLxI_kmn_km( TL(32, 16, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
              SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
              IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ) ) ),
      origtree := IxLxI_IxLxI_down( TL(32, 4, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
          IxLxI_kmn_km( TL(32, 16, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
            SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
            IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ),
          IxLxI_IxLxI_down( TL(32, 8, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
            IxLxI_kmn_km( TL(32, 16, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
              SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
              IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ),
            IxLxI_kmn_km( TL(32, 16, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
              SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
              IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ) ) ),
      measured := 48,
      globalUnrolling := 10000 ) ]);
SIMD_ISA_DB.hashAdd(TL(16, 4, 1, 2).withTags([ AVecReg(LRB_16x32f) ]), [ rec(
      ruletree := IxLxI_IxLxI_down( TL(16, 4, 1, 2).withTags([ AVecReg(LRB_16x32f) ]),
          SIMD_ISA_Bases1( TL(16, 8, 1, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
          SIMD_ISA_Bases1( TL(16, 8, 1, 2).withTags([ AVecReg(LRB_16x32f) ]) ) ),
      origtree := IxLxI_IxLxI_down( TL(16, 4, 1, 2).withTags([ AVecReg(LRB_16x32f) ]),
          SIMD_ISA_Bases1( TL(16, 8, 1, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
          SIMD_ISA_Bases1( TL(16, 8, 1, 2).withTags([ AVecReg(LRB_16x32f) ]) ) ),
      measured := 4,
      globalUnrolling := 10000 ) ]);
SIMD_ISA_DB.hashAdd(TL(32, 8, 1, 1).withTags([ AVecReg(LRB_16x32f) ]), [ rec(
      ruletree := IxLxI_IxLxI_down( TL(32, 8, 1, 1).withTags([ AVecReg(LRB_16x32f) ]),
          SIMD_ISA_Bases1( TL(32, 16, 1, 1).withTags([ AVecReg(LRB_16x32f) ]) ),
          SIMD_ISA_Bases1( TL(32, 16, 1, 1).withTags([ AVecReg(LRB_16x32f) ]) ) ),
      origtree := IxLxI_IxLxI_down( TL(32, 8, 1, 1).withTags([ AVecReg(LRB_16x32f) ]),
          SIMD_ISA_Bases1( TL(32, 16, 1, 1).withTags([ AVecReg(LRB_16x32f) ]) ),
          SIMD_ISA_Bases1( TL(32, 16, 1, 1).withTags([ AVecReg(LRB_16x32f) ]) ) ),
      measured := 4,
      globalUnrolling := 10000 ) ]);
SIMD_ISA_DB.hashAdd(TL(128, 8, 1, 2).withTags([ AVecReg(LRB_16x32f) ]), [ rec(
      ruletree := IxLxI_kmn_n( TL(128, 8, 1, 2).withTags([ AVecReg(LRB_16x32f) ]),
          IxLxI_kmn_km( TL(16, 8, 1, 16).withTags([ AVecReg(LRB_16x32f) ]),
            IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ),
            IxLxI_kmn_km( TL(8, 4, 1, 32).withTags([ AVecReg(LRB_16x32f) ]),
              IxLxI_vtensor( TL(4, 2, 2, 32).withTags([ AVecReg(LRB_16x32f) ]) ),
              IxLxI_vtensor( TL(4, 2, 1, 64).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
          IxLxI_IxLxI_down( TL(64, 8, 2, 2).withTags([ AVecReg(LRB_16x32f) ]),
            IxLxI_kmn_km( TL(64, 32, 2, 2).withTags([ AVecReg(LRB_16x32f) ]),
              SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
              IxLxI_kmn_km( TL(8, 4, 2, 16).withTags([ AVecReg(LRB_16x32f) ]),
                IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ),
                IxLxI_vtensor( TL(4, 2, 2, 32).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
            IxLxI_kmn_km( TL(64, 16, 2, 2).withTags([ AVecReg(LRB_16x32f) ]),
              IxLxI_IxLxI_down( TL(32, 8, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
                IxLxI_kmn_km( TL(32, 16, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
                  SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
                  IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ),
                IxLxI_kmn_km( TL(32, 16, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
                  SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
                  IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
              IxLxI_kmn_n( TL(8, 2, 2, 16).withTags([ AVecReg(LRB_16x32f) ]),
                IxLxI_vtensor( TL(4, 2, 2, 32).withTags([ AVecReg(LRB_16x32f) ]) ),
                IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ) ) ) ),
      origtree := IxLxI_kmn_n( TL(128, 8, 1, 2).withTags([ AVecReg(LRB_16x32f) ]),
          IxLxI_kmn_km( TL(16, 8, 1, 16).withTags([ AVecReg(LRB_16x32f) ]),
            IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ),
            IxLxI_kmn_km( TL(8, 4, 1, 32).withTags([ AVecReg(LRB_16x32f) ]),
              IxLxI_vtensor( TL(4, 2, 2, 32).withTags([ AVecReg(LRB_16x32f) ]) ),
              IxLxI_vtensor( TL(4, 2, 1, 64).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
          IxLxI_IxLxI_down( TL(64, 8, 2, 2).withTags([ AVecReg(LRB_16x32f) ]),
            IxLxI_kmn_km( TL(64, 32, 2, 2).withTags([ AVecReg(LRB_16x32f) ]),
              SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
              IxLxI_kmn_km( TL(8, 4, 2, 16).withTags([ AVecReg(LRB_16x32f) ]),
                IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ),
                IxLxI_vtensor( TL(4, 2, 2, 32).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
            IxLxI_kmn_km( TL(64, 16, 2, 2).withTags([ AVecReg(LRB_16x32f) ]),
              IxLxI_IxLxI_down( TL(32, 8, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
                IxLxI_kmn_km( TL(32, 16, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
                  SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
                  IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ),
                IxLxI_kmn_km( TL(32, 16, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
                  SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
                  IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
              IxLxI_kmn_n( TL(8, 2, 2, 16).withTags([ AVecReg(LRB_16x32f) ]),
                IxLxI_vtensor( TL(4, 2, 2, 32).withTags([ AVecReg(LRB_16x32f) ]) ),
                IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ) ) ) ),
      measured := 48,
      globalUnrolling := 10000 ) ]);
SIMD_ISA_DB.hashAdd(TL(128, 8, 2, 1).withTags([ AVecReg(LRB_16x32f) ]), [ rec(
      ruletree := IxLxI_IxLxI_down( TL(128, 8, 2, 1).withTags([ AVecReg(LRB_16x32f) ]),
          IxLxI_kmn_km( TL(128, 64, 2, 1).withTags([ AVecReg(LRB_16x32f) ]),
            SIMD_ISA_Bases1( TL(32, 16, 8, 1).withTags([ AVecReg(LRB_16x32f) ]) ),
            IxLxI_kmn_km( TL(8, 4, 2, 16).withTags([ AVecReg(LRB_16x32f) ]),
              IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ),
              IxLxI_vtensor( TL(4, 2, 2, 32).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
          IxLxI_kmn_n( TL(128, 16, 2, 1).withTags([ AVecReg(LRB_16x32f) ]),
            IxLxI_kmn_km( TL(64, 16, 2, 2).withTags([ AVecReg(LRB_16x32f) ]),
              IxLxI_IxLxI_down( TL(32, 8, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
                IxLxI_kmn_km( TL(32, 16, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
                  SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
                  IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ),
                IxLxI_kmn_km( TL(32, 16, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
                  SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
                  IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
              IxLxI_kmn_n( TL(8, 2, 2, 16).withTags([ AVecReg(LRB_16x32f) ]),
                IxLxI_vtensor( TL(4, 2, 2, 32).withTags([ AVecReg(LRB_16x32f) ]) ),
                IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
            SIMD_ISA_Bases1( TL(32, 16, 8, 1).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
      origtree := IxLxI_IxLxI_down( TL(128, 8, 2, 1).withTags([ AVecReg(LRB_16x32f) ]),
          IxLxI_kmn_km( TL(128, 64, 2, 1).withTags([ AVecReg(LRB_16x32f) ]),
            SIMD_ISA_Bases1( TL(32, 16, 8, 1).withTags([ AVecReg(LRB_16x32f) ]) ),
            IxLxI_kmn_km( TL(8, 4, 2, 16).withTags([ AVecReg(LRB_16x32f) ]),
              IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ),
              IxLxI_vtensor( TL(4, 2, 2, 32).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
          IxLxI_kmn_n( TL(128, 16, 2, 1).withTags([ AVecReg(LRB_16x32f) ]),
            IxLxI_kmn_km( TL(64, 16, 2, 2).withTags([ AVecReg(LRB_16x32f) ]),
              IxLxI_IxLxI_down( TL(32, 8, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
                IxLxI_kmn_km( TL(32, 16, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
                  SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
                  IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ),
                IxLxI_kmn_km( TL(32, 16, 4, 2).withTags([ AVecReg(LRB_16x32f) ]),
                  SIMD_ISA_Bases1( TL(16, 8, 8, 2).withTags([ AVecReg(LRB_16x32f) ]) ),
                  IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
              IxLxI_kmn_n( TL(8, 2, 2, 16).withTags([ AVecReg(LRB_16x32f) ]),
                IxLxI_vtensor( TL(4, 2, 2, 32).withTags([ AVecReg(LRB_16x32f) ]) ),
                IxLxI_vtensor( TL(4, 2, 4, 16).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
            SIMD_ISA_Bases1( TL(32, 16, 8, 1).withTags([ AVecReg(LRB_16x32f) ]) ) ) ),
      measured := 64,
      globalUnrolling := 10000 ) ]);


# Copyright (c) 2018-2021, Carnegie Mellon University
# See LICENSE for details

ImportAll(paradigms.common);
ImportAll(paradigms.vector);
Import(formgen);

buildBench := function(sizes, isa, optrec, filter, name)
    local opts, goodsizes, dpbench, exp;

    opts := SIMDGlobals.getOpts(isa, optrec);
    goodsizes := Filtered(sizes, i->let(rt := RandomRuleTreeDP(TRC(DFT(i)).withTags(opts.tags), opts), IsRuleTree(rt) and rt.children[1].children[1].rule in filter));
    dpbench :=  doSimdDft(goodsizes, isa, optrec);
    exp := Filtered(RecFields(dpbench.exp), i-> not i in SystemRecFields)[1];

    dpbench.exp.(exp).name := Concat(exp, "_", name);

    dpbench.fileTransform := (exp, t, opts) -> Concat(isa.name, "_", name, "_", "dft_ic_", StringInt(Rows(t)/2), ".c");
    dpbench.funcTransform := (exp, t, opts) -> Concat("dft", StringInt(Rows(t)/2));
    dpbench.txtFileName   := (exp, runMethod) -> Concat(isa.name, "_", name, "_dft_ic_", SubString(runMethod, 5), ".txt");
    dpbench.exp.(exp).hashFile := Concat(isa.name, "_", name, "_dft_ic_", "DP", ".hash");
    dpbench.exp.(exp).outputVecStatistics := true;

    return dpbench;
end;

buildExperiments := function(isas, sizes, setups)
    local benches, isa, vect, vmode, exp, b;

    benches := [];
    for isa in isas do
        for vect in SIMDGlobals.experiments.vects do
            for vmode in SIMDGlobals.experiments.vmodes do
                for exp in setups do
                    b := buildBench(sizes, isa, ApplyFunc(CopyFields, [vmode, vect]::exp[1]), exp[2], Concat(vect.name, "_", vmode.name, "_", exp[3]));
                    Add(benches, b);
                    PrintLine(isa, ", ", vect.name, ", ", vmode.name, ", ", exp[3], "", ": ", List(b.exp.(Filtered(RecFields(b.exp), i-> not i in SystemRecFields)[1]).benchTransforms, i->Rows(i)/2));
                od;
            od;
        od;
    od;

    return benches;
end;

# preset for unrolled DFT code
Class(unrollDFT, rec(
    # scalar algorithms
    PD := true,
    PFA := true,
    PFA_maxSize := 10000,
    RealRader := true,
    Rader := true,
    Rader_maxSize := 10000,
    PRDFT:=true,
    URDFT:= true,
    URDFT_maxRadix := 10000,
    CT := true,
    minCost := true,
    Mincost_maxSize := 10000,
    splitRadix := false,
    SplitRadix_maxSize := 10000,
    # basic vector configuration
    stdTTensor := false,
    pushTag := true,
    flipIxA := true,
    useConj := false,
    interleavedComplex := true,
    # standard codegen
    verify := true,
    globalUnrolling := 10000,
    includeMath := true,
));

# preset for looped DFT code
Class(loopDFT, rec(
    # scalar algorithms
    PD := true,
    PFA := true,
    RealRader := true,
    Rader := true,
    PRDFT:=false,
    URDFT:= true,
    CT := true,
    minCost := true,
    splitRadix := false,
    # basic vector configuration
    stdTTensor := false,
    pushTag := true,
    flipIxA := true,
    useConj := false,
    interleavedComplex := true,
    # standard codegen
    verify := true,
    includeMath := true,
));

Class(baseUnroll, rec(
    PFA_maxSize := 16,
    Rader_maxSize := 16,
    Mincost_maxSize := 16,
    URDFT_maxRadix := 16,
    globalUnrolling := 32,
));

# vectorization methods: real/complex
Class(cxVect, rec(realVect := false, cplxVect := true));
Class(realVect, rec(realVect := true, cplxVect := false));

# vectorization: split L vs. SVCT
Class(vecmem, rec(svct := true, splitL := false));
Class(stride, rec(svct := false, splitL := true));

# zero padding
Class(noPadd, rec(oddSizes := false));
Class(padd, rec(oddSizes := true));

# top-level algorithms
Class(F2, rec(tsplVBase := true, tsplCxVBase := true));
Class(CT, rec(tsplCT := true, tsplPFA := false, tsplRader := false, tsplBluestein := false, tsplVBase := false, tsplCxVBase := false));
Class(PFA, rec(tsplCT := false, tsplPFA := true, tsplRader := false, tsplBluestein := false, tsplVBase := false, tsplCxVBase := false));
Class(Rader_CT, rec(tsplCT := true, tsplPFA := false, tsplRader := true, raderAvoidSizes := [ ], tsplBluestein := false, tsplVBase := false, tsplCxVBase := false));
Class(Rader_PFA, rec(tsplCT := false, tsplPFA := true, tsplRader := true, raderAvoidSizes := [ ], tsplBluestein := false, tsplVBase := false, tsplCxVBase := false));
Class(Bluestein_CT, rec(tsplCT := true, tsplPFA := false, tsplRader := false, tsplBluestein := true,
    bluesteinMinPrime := 997, bluesteinExtraSizes := [ 2..100 ], tsplVBase := false, tsplCxVBase := false));

# all algorithms turned on -- unrolled code only
Class(Small_DFT_RuleSet, rec( tsplCT := true, tsplPFA := true, tsplRader := true, raderAvoidSizes := [ 47, 59, 107 ], tsplBluestein := true, bluesteinMinPrime := 997,
    bluesteinExtraSizes := [ 23, 46, 47, 49, 59, 67, 79, 83, 94, 103, 106, 107, 115 ], tsplVBase := true, tsplCxVBase := true));

SIMDGlobals.experiments := rec(
    vects := [realVect, cxVect],
    vmodes := [vecmem],
    experiments := [
        [[unrollDFT, noPadd, CT], [DFT_tSPL_CT], "SVCT"], # original SVCT
        [[unrollDFT, padd, CT], [DFT_tSPL_CT], "paddSVCT"], # zeropadded SVCT [ICASSP:07]
        [[unrollDFT, padd, PFA], [DFT_tSPL_GoodThomas], "PFA"], # PFA
        [[unrollDFT, padd, F2], [DFT_tSPL_VBase, DFT_tSPL_CxVBase], "baseF2"], # Base case
        [[unrollDFT, noPadd, Rader_CT], [DFT_tSPL_Rader],"Rader+SVCT"], # Rader + SVCT == best Rader sizes
        [[unrollDFT, padd, Rader_CT], [DFT_tSPL_Rader], "Rader+paddSVCT"], # Rader with CT
        [[unrollDFT, padd, Rader_PFA], [DFT_tSPL_Rader], "Rader+PFA"], # Rader with PFA
        [[unrollDFT, noPadd, Bluestein_CT], [DFT_tSPL_Bluestein], "Bluestein"], # Bluestein for all sizes
    ],
    benches := rec(
        unrolled := [[[unrollDFT, padd, Small_DFT_RuleSet], [DFT_tSPL_CT, DFT_tSPL_GoodThomas,
            DFT_tSPL_VBase, DFT_tSPL_CxVBase, DFT_tSPL_Rader, DFT_tSPL_Bluestein], "smallDFT"]],
        looped := [[[loopDFT, baseUnroll, noPadd, CT], [DFT_tSPL_CT], "loopSVCT"]]
    )
);


# Copyright 2018-2019, Carnegie Mellon University
# See LICENSE for details

Class(implies,  AutoFoldExp, rec(    computeType := self >> TBool      ));

Class(RulesTest, RuleSet, rec(inType := "iCode", outType := "iCode"));
RewriteRules(RulesTest, rec(
 float_reduction  := ARule(DirectSum, [@(1), @(2, OLCompose, e->ObjId(e.child(1))=Reduction)],
                        e->[DirectSum(@(2).val, @(1).val)]),
    ));

Class(RulesEagarEval, RuleSet, rec(inType := "iCode", outType := "iCode"));
RewriteRules(RulesEagarEval, rec(
		eagar_eval_eq := Rule([@(1, eq), @(2), @(3).cond( e->e=@(2).val)],
                    e->let(V(true))),

		eagar_eval_ands_1 := Rule([@(1, logic_and),
										@(2, Value).cond(e->IsBool(e.v)),
										@(3,Value).cond(e->IsBool(e.v))],
                    e->logic_and(@(2).val, @(3).val)),

		eagar_eval_ands_2 := Rule([@(1, logic_and),
										@(2, Value).cond(e->IsBool(e.v)),
										@(3)],
                    e->Cond(@(2).val.v, @(3).val, V(false))),

		eagar_eval_ands_3 := Rule([@(1, logic_and),
										@(2),
										@(3, Value).cond(e->IsBool(e.v))],
                    e->Cond(@(3).val.v, @(2).val, V(false))),

));

update_params := function(cx, d)
  cx.opts.params := cx.opts.params::[d];
end;

Class(RulesTranslate, RuleSet, rec(inType := "iCode", outType := "SigmaSPL"));
RewriteRules(RulesTranslate, rec(
        abs_inclusion := ARule(logic_and, [@(1,implies), @(2,implies, e->let(
                                 e.args[1].args[1]=@(1).val.args[1].args[1] and    #anthesdent must be the same
                                 e.args[1].args[2]=@(1).val.args[1].args[2] and    #anthesdent must be the same
                                 ((ObjId(e.args[1])=leq and ObjId(@(1).val.args[1])=geq) or
                                  (ObjId(e.args[1])=geq and ObjId(@(1).val.args[1])=leq)) and
                                 e.args[2].args[2]=@(1).val.args[2].args[2]))],
                    e->[let(x := var.fresh_t("x", T_Real(32)),
                             i := Ind(1),
                                PointWise(1, Lambda([x, i], ObjId(@(1).val.args[2])(abs(@(2).val.args[1].args[1]), @(1).val.args[2].args[2]))))]),

        ands_translate := ARule(logic_and, [@(1), @(2)],
                   e-> [let(i := Ind(1), x := var.fresh_t("x", T_Real(32)),
                           lhs := ObjId(@(1).val), rhs:= ObjId(@(2).val),
                          OLCompose(
                            Reduction(2, (a, b)->logic_and(a, b), V(true), False),
                            DirectSum(
                                Cond(lhs<>PointWise, PointWise(1, Lambda([x, i], @(1).val)), @(1).val),
                                Cond(rhs<>PointWise, PointWise(1, Lambda([x, i], @(2).val)), @(2).val)  ))  )]),
        ors_translate := ARule(logic_or, [@(1), @(2)],
                   e-> [let(i := Ind(1), x := var.fresh_t("x", T_Real(32)),
                           lhs := ObjId(@(1).val), rhs:= ObjId(@(2).val),
                          OLCompose(
                          Reduction(2, (a, b)->logic_or(a, b), V(false), False),
                          DirectSum(
                                Cond(lhs<>PointWise, PointWise(1, Lambda([x, i], @(1).val)), @(1).val),
                                Cond(rhs<>PointWise, PointWise(1, Lambda([x, i], @(2).val)), @(2).val)  ))  )]),

        undo_nesting := Rule(@(1,PointWise, e->IsLambda(e.op) and IsSPL(e.op.expr)),
                    e->Cond(
						ObjId(e.op.expr).name="OLCompose", OLCompose(e.op.expr.children()),
						ObjId(e.op.expr).name="PointWise", PointWise(e.op.expr.N, Lambda( e.op.expr.op.vars, e.op.expr.op.expr)),
Error("Not Implemented")						)),

		swap_ds_child := Rule([@(1, DirectSum), @(2).cond(e->ObjId(e)<>OLCompose), [@(3, OLCompose), @(4, Reduction), @(5)]],
			e->DirectSum(@(3).val, @(2).val)),

		swap_ds_child_1 := ARule(DirectSum, [@(1, PointWise), @(2, OLCompose)],
			e->[DirectSum(@(2).val, @(1).val)]),

		max_intro := Rule([@(1, OLCompose), @(2, Reduction).cond(e->e.idval=false and e.N=2),
						[@(3, DirectSum), @(4, PointWise),
							@(5, PointWise).cond(e->ObjId(e.op.expr)=ObjId(@(4).val.op.expr) and
								ObjId(e.op.expr) = gt and
								e.op.expr.args[2] = @(4).val.op.expr.args[2])]],
			e-> PointWise(1, Lambda(@(4).val.op.vars, gt(max(@(4).val.op.expr.args[1], @(5).val.op.expr.args[1]), @(4).val.op.expr.args[2])))  ),

		reduce_reduction := Rule([@(1, OLCompose), @(2, Reduction), [@(3, DirectSum), [@(4, OLCompose), @(5, Reduction).cond(e->e.idval=@(2).val.idval), @(6)], @(7)]],
			e-> OLCompose(
					Reduction(@(2).val.N + @(5).val.N-1, @(2).val.op, @(2).val.idval, @(2).val.isSaturated),
					DirectSum(@(6).val, @(7).val) )),

		intro_polynomial := Rule([@(1, PointWise), @(2), @(3, Lambda).cond(e->ObjId(e.expr)=gt and
																			  ObjId(e.expr.args[1]) = max and                                   #check max of all abs values
																			  Length(Filtered(List(e.expr.args[1].args, i->ObjId(i)=abs), x->x=false))=0 and
																			  Length(Collect(e.expr.args[2], pow))<>0                           #has degree higher than 1
																			  #Length(Filtered(List(Collect(e.expr.args[2], pow), i->IsInt(i.args[2])), x->x=false))=0  # and exponents are numeric
															  				   #still need to check for sub within the abs operator to be sure that it is TDistance

																			  )],
			(e, cx)->let(d := var.fresh_t("d", TPtr(T_Real(64))),
				   update_params(cx,d),
				   degree := ApplyFunc(max, List(Collect(@(3).val.expr.args[2], pow), i->i.args[2])),
				   TLess(TEvalPolynomial(degree.v, d), TDistance(TInfinityNorm(2)))))
    ));

TInt_Base.check := v->Cond(IsExp(v), Int(v.ev()),
						   IsInt(v), v,
						   IsBool(v), When(v, true, false),
						    IsDouble(v) and IsInt(IntDouble(v)), IntDouble(v),
							IsValue(v) and IsInt(v.v), v.v,
							Error("<v> must be an integer or an expression"));

TReal.check := (self, v) >> Cond(
							IsExp(v), 		ReComplex(Complex(code.EvalScalar(v))),
							IsInt(v), 		Double(v),
							IsRat(v), 		v,
							IsDouble(v), When(AbsFloat(v) < self.cutoff, 0.0, v),
							IsCyc(v), ReComplex(Complex(v)),
							IsComplex(v),	ReComplex(v),
							IsBool(v), 		When(v, true, false),
							Error("<v> must be a double or an expression"));