// This file is distributed under the University of Illinois Open Source License.
// See LICENSE.TXT for details.
// RUN: c_compiler -c -o %t1.o -I "common" "common/testsuite.c"
// RUN: c_compiler -c %s -I "common" -o %t2.o
// RUN: linker -o %t1%exeext  %t1.o %t2.o
// RUN: runtool %t1%exeext | checker "TEST PASSED"
// RUN: cxx_compiler cxx_rtti -c %s -I "common" -o %t2.o
// RUN: linker -o %t2%exeext  %t1.o %t2.o
// RUN: runtool %t2%exeext | checker "TEST PASSED"
#include "testsuite.h"

struct  BFs15i_BFs15i  {
  signed int v1:15;
  signed int v2:15;
};
//SIG(1 BFs15i_BFs15i) C1{ Fi:15 Fi:15}



static void Test_BFs15i_BFs15i()
{
  {
    init_simple_test("BFs15i_BFs15i");
    static STRUCT_IF_C BFs15i_BFs15i lv;
    check2(sizeof(lv), 4, "sizeof(BFs15i_BFs15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15i, BFs15i_BFs15i)
//============================================================================


struct  BFs15i_BFs15i_BFs15i  {
  signed int v1:15;
  signed int v2:15;
  signed int v3:15;
};
//SIG(1 BFs15i_BFs15i_BFs15i) C1{ Fi:15 Fi:15 Fi:15}



static void Test_BFs15i_BFs15i_BFs15i()
{
  {
    init_simple_test("BFs15i_BFs15i_BFs15i");
    static STRUCT_IF_C BFs15i_BFs15i_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15i_BFs15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFs15i_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15i_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15i_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15i_BFs15i, BFs15i_BFs15i_BFs15i)
//============================================================================


struct  BFs15i_BFs15i_BFs15i_BFs15i  {
  signed int v1:15;
  signed int v2:15;
  signed int v3:15;
  signed int v4:15;
};
//SIG(1 BFs15i_BFs15i_BFs15i_BFs15i) C1{ Fi:15 Fi:15 Fi:15 Fi:15}



static void Test_BFs15i_BFs15i_BFs15i_BFs15i()
{
  {
    init_simple_test("BFs15i_BFs15i_BFs15i_BFs15i");
    static STRUCT_IF_C BFs15i_BFs15i_BFs15i_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15i_BFs15i_BFs15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFs15i_BFs15i_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15i_BFs15i_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFs15i_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15i_BFs15i_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFs15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15i_BFs15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFs15i_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFs15i_BFs15i_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFs15i_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15i_BFs15i_BFs15i, BFs15i_BFs15i_BFs15i_BFs15i)
//============================================================================


struct  BFs15i_BFs15i_BFs15i_BFs15ll  {
  signed int v1:15;
  signed int v2:15;
  signed int v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15i_BFs15i_BFs15i_BFs15ll) C1{ Fi:15 Fi:15 Fi:15 FL:15}



static void Test_BFs15i_BFs15i_BFs15i_BFs15ll()
{
  {
    init_simple_test("BFs15i_BFs15i_BFs15i_BFs15ll");
    static STRUCT_IF_C BFs15i_BFs15i_BFs15i_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15i_BFs15i_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15i_BFs15i_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15i_BFs15i_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFs15i_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15i_BFs15i_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFs15i_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15i_BFs15i_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFs15i_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFs15i_BFs15i_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFs15i_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15i_BFs15i_BFs15ll, BFs15i_BFs15i_BFs15i_BFs15ll)
//============================================================================


struct  BFs15i_BFs15i_BFs15i_BFs15s  {
  signed int v1:15;
  signed int v2:15;
  signed int v3:15;
  signed short v4:15;
};
//SIG(1 BFs15i_BFs15i_BFs15i_BFs15s) C1{ Fi:15 Fi:15 Fi:15 Fs:15}



static void Test_BFs15i_BFs15i_BFs15i_BFs15s()
{
  {
    init_simple_test("BFs15i_BFs15i_BFs15i_BFs15s");
    static STRUCT_IF_C BFs15i_BFs15i_BFs15i_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15i_BFs15i_BFs15s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFs15i_BFs15i_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15i_BFs15i_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFs15i_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15i_BFs15i_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFs15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15i_BFs15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFs15i_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15i_BFs15i_BFs15i_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFs15i_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15i_BFs15i_BFs15s, BFs15i_BFs15i_BFs15i_BFs15s)
//============================================================================


struct  BFs15i_BFs15i_BFs15i_BFu15i  {
  signed int v1:15;
  signed int v2:15;
  signed int v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15i_BFs15i_BFs15i_BFu15i) C1{ Fi:15 Fi:15 Fi:15 Fi:15}



static void Test_BFs15i_BFs15i_BFs15i_BFu15i()
{
  {
    init_simple_test("BFs15i_BFs15i_BFs15i_BFu15i");
    static STRUCT_IF_C BFs15i_BFs15i_BFs15i_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15i_BFs15i_BFu15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFs15i_BFs15i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15i_BFs15i_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFs15i_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15i_BFs15i_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFs15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15i_BFs15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFs15i_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFs15i_BFs15i_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15i_BFs15i_BFs15i_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15i_BFs15i_BFu15i, BFs15i_BFs15i_BFs15i_BFu15i)
//============================================================================


struct  BFs15i_BFs15i_BFs15i_BFu15ll  {
  signed int v1:15;
  signed int v2:15;
  signed int v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15i_BFs15i_BFs15i_BFu15ll) C1{ Fi:15 Fi:15 Fi:15 FL:15}



static void Test_BFs15i_BFs15i_BFs15i_BFu15ll()
{
  {
    init_simple_test("BFs15i_BFs15i_BFs15i_BFu15ll");
    static STRUCT_IF_C BFs15i_BFs15i_BFs15i_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15i_BFs15i_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15i_BFs15i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15i_BFs15i_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFs15i_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15i_BFs15i_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFs15i_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15i_BFs15i_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFs15i_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFs15i_BFs15i_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15i_BFs15i_BFs15i_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15i_BFs15i_BFu15ll, BFs15i_BFs15i_BFs15i_BFu15ll)
//============================================================================


struct  BFs15i_BFs15i_BFs15i_BFu15s  {
  signed int v1:15;
  signed int v2:15;
  signed int v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15i_BFs15i_BFs15i_BFu15s) C1{ Fi:15 Fi:15 Fi:15 Fs:15}



static void Test_BFs15i_BFs15i_BFs15i_BFu15s()
{
  {
    init_simple_test("BFs15i_BFs15i_BFs15i_BFu15s");
    static STRUCT_IF_C BFs15i_BFs15i_BFs15i_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15i_BFs15i_BFu15s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFs15i_BFs15i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15i_BFs15i_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFs15i_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15i_BFs15i_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFs15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15i_BFs15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFs15i_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15i_BFs15i_BFs15i_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15i_BFs15i_BFs15i_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15i_BFs15i_BFu15s, BFs15i_BFs15i_BFs15i_BFu15s)
//============================================================================


struct  BFs15i_BFs15i_BFs15ll  {
  signed int v1:15;
  signed int v2:15;
  signed __tsi64 v3:15;
};
//SIG(1 BFs15i_BFs15i_BFs15ll) C1{ Fi:15 Fi:15 FL:15}



static void Test_BFs15i_BFs15i_BFs15ll()
{
  {
    init_simple_test("BFs15i_BFs15i_BFs15ll");
    static STRUCT_IF_C BFs15i_BFs15i_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15i_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15i_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15i_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15i_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFs15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15i_BFs15i_BFs15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15i_BFs15ll, BFs15i_BFs15i_BFs15ll)
//============================================================================


struct  BFs15i_BFs15i_BFs15ll_BFs15i  {
  signed int v1:15;
  signed int v2:15;
  signed __tsi64 v3:15;
  signed int v4:15;
};
//SIG(1 BFs15i_BFs15i_BFs15ll_BFs15i) C1{ Fi:15 Fi:15 FL:15 Fi:15}



static void Test_BFs15i_BFs15i_BFs15ll_BFs15i()
{
  {
    init_simple_test("BFs15i_BFs15i_BFs15ll_BFs15i");
    static STRUCT_IF_C BFs15i_BFs15i_BFs15ll_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15i_BFs15ll_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15i_BFs15ll_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15i_BFs15ll_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFs15ll_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15i_BFs15ll_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFs15ll_BFs15i");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15i_BFs15i_BFs15ll_BFs15i");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFs15ll_BFs15i");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15i_BFs15i_BFs15ll_BFs15i");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFs15ll_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15i_BFs15ll_BFs15i, BFs15i_BFs15i_BFs15ll_BFs15i)
//============================================================================


struct  BFs15i_BFs15i_BFs15ll_BFs15ll  {
  signed int v1:15;
  signed int v2:15;
  signed __tsi64 v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15i_BFs15i_BFs15ll_BFs15ll) C1{ Fi:15 Fi:15 FL:15 FL:15}



static void Test_BFs15i_BFs15i_BFs15ll_BFs15ll()
{
  {
    init_simple_test("BFs15i_BFs15i_BFs15ll_BFs15ll");
    static STRUCT_IF_C BFs15i_BFs15i_BFs15ll_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15i_BFs15ll_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15i_BFs15ll_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15i_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15i_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15i_BFs15i_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15i_BFs15i_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFs15ll_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15i_BFs15ll_BFs15ll, BFs15i_BFs15i_BFs15ll_BFs15ll)
//============================================================================


struct  BFs15i_BFs15i_BFs15ll_BFs15s  {
  signed int v1:15;
  signed int v2:15;
  signed __tsi64 v3:15;
  signed short v4:15;
};
//SIG(1 BFs15i_BFs15i_BFs15ll_BFs15s) C1{ Fi:15 Fi:15 FL:15 Fs:15}



static void Test_BFs15i_BFs15i_BFs15ll_BFs15s()
{
  {
    init_simple_test("BFs15i_BFs15i_BFs15ll_BFs15s");
    static STRUCT_IF_C BFs15i_BFs15i_BFs15ll_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15i_BFs15ll_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15i_BFs15ll_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15i_BFs15ll_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFs15ll_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15i_BFs15ll_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFs15ll_BFs15s");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15i_BFs15i_BFs15ll_BFs15s");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFs15ll_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15i_BFs15i_BFs15ll_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFs15ll_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15i_BFs15ll_BFs15s, BFs15i_BFs15i_BFs15ll_BFs15s)
//============================================================================


struct  BFs15i_BFs15i_BFs15ll_BFu15i  {
  signed int v1:15;
  signed int v2:15;
  signed __tsi64 v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15i_BFs15i_BFs15ll_BFu15i) C1{ Fi:15 Fi:15 FL:15 Fi:15}



static void Test_BFs15i_BFs15i_BFs15ll_BFu15i()
{
  {
    init_simple_test("BFs15i_BFs15i_BFs15ll_BFu15i");
    static STRUCT_IF_C BFs15i_BFs15i_BFs15ll_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15i_BFs15ll_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15i_BFs15ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15i_BFs15ll_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFs15ll_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15i_BFs15ll_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFs15ll_BFu15i");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15i_BFs15i_BFs15ll_BFu15i");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFs15ll_BFu15i");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15i_BFs15i_BFs15ll_BFu15i");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_ull(1LL<<14), "BFs15i_BFs15i_BFs15ll_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15i_BFs15ll_BFu15i, BFs15i_BFs15i_BFs15ll_BFu15i)
//============================================================================


struct  BFs15i_BFs15i_BFs15ll_BFu15ll  {
  signed int v1:15;
  signed int v2:15;
  signed __tsi64 v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15i_BFs15i_BFs15ll_BFu15ll) C1{ Fi:15 Fi:15 FL:15 FL:15}



static void Test_BFs15i_BFs15i_BFs15ll_BFu15ll()
{
  {
    init_simple_test("BFs15i_BFs15i_BFs15ll_BFu15ll");
    static STRUCT_IF_C BFs15i_BFs15i_BFs15ll_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15i_BFs15ll_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15i_BFs15ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15i_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15i_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15i_BFs15i_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15i_BFs15i_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_ull(1LL<<14), "BFs15i_BFs15i_BFs15ll_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15i_BFs15ll_BFu15ll, BFs15i_BFs15i_BFs15ll_BFu15ll)
//============================================================================


struct  BFs15i_BFs15i_BFs15ll_BFu15s  {
  signed int v1:15;
  signed int v2:15;
  signed __tsi64 v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15i_BFs15i_BFs15ll_BFu15s) C1{ Fi:15 Fi:15 FL:15 Fs:15}



static void Test_BFs15i_BFs15i_BFs15ll_BFu15s()
{
  {
    init_simple_test("BFs15i_BFs15i_BFs15ll_BFu15s");
    static STRUCT_IF_C BFs15i_BFs15i_BFs15ll_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15i_BFs15ll_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15i_BFs15ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15i_BFs15ll_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFs15ll_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15i_BFs15ll_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFs15ll_BFu15s");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15i_BFs15i_BFs15ll_BFu15s");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFs15ll_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15i_BFs15i_BFs15ll_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15i_BFs15i_BFs15ll_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15i_BFs15ll_BFu15s, BFs15i_BFs15i_BFs15ll_BFu15s)
//============================================================================


struct  BFs15i_BFs15i_BFs15s  {
  signed int v1:15;
  signed int v2:15;
  signed short v3:15;
};
//SIG(1 BFs15i_BFs15i_BFs15s) C1{ Fi:15 Fi:15 Fs:15}



static void Test_BFs15i_BFs15i_BFs15s()
{
  {
    init_simple_test("BFs15i_BFs15i_BFs15s");
    static STRUCT_IF_C BFs15i_BFs15i_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15i_BFs15s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFs15i_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15i_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15i_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15i_BFs15s, BFs15i_BFs15i_BFs15s)
//============================================================================


struct  BFs15i_BFs15i_BFs15s_BFs15i  {
  signed int v1:15;
  signed int v2:15;
  signed short v3:15;
  signed int v4:15;
};
//SIG(1 BFs15i_BFs15i_BFs15s_BFs15i) C1{ Fi:15 Fi:15 Fs:15 Fi:15}



static void Test_BFs15i_BFs15i_BFs15s_BFs15i()
{
  {
    init_simple_test("BFs15i_BFs15i_BFs15s_BFs15i");
    static STRUCT_IF_C BFs15i_BFs15i_BFs15s_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15i_BFs15s_BFs15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFs15i_BFs15s_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15i_BFs15s_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFs15s_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15i_BFs15s_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFs15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15i_BFs15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFs15s_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFs15i_BFs15s_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFs15s_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15i_BFs15s_BFs15i, BFs15i_BFs15i_BFs15s_BFs15i)
//============================================================================


struct  BFs15i_BFs15i_BFs15s_BFs15ll  {
  signed int v1:15;
  signed int v2:15;
  signed short v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15i_BFs15i_BFs15s_BFs15ll) C1{ Fi:15 Fi:15 Fs:15 FL:15}



static void Test_BFs15i_BFs15i_BFs15s_BFs15ll()
{
  {
    init_simple_test("BFs15i_BFs15i_BFs15s_BFs15ll");
    static STRUCT_IF_C BFs15i_BFs15i_BFs15s_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15i_BFs15s_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15i_BFs15s_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15i_BFs15s_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFs15s_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15i_BFs15s_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFs15s_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15i_BFs15s_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFs15s_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFs15i_BFs15s_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFs15s_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15i_BFs15s_BFs15ll, BFs15i_BFs15i_BFs15s_BFs15ll)
//============================================================================


struct  BFs15i_BFs15i_BFs15s_BFs15s  {
  signed int v1:15;
  signed int v2:15;
  signed short v3:15;
  signed short v4:15;
};
//SIG(1 BFs15i_BFs15i_BFs15s_BFs15s) C1{ Fi:15 Fi:15 Fs:15 Fs:15}



static void Test_BFs15i_BFs15i_BFs15s_BFs15s()
{
  {
    init_simple_test("BFs15i_BFs15i_BFs15s_BFs15s");
    static STRUCT_IF_C BFs15i_BFs15i_BFs15s_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15i_BFs15s_BFs15s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFs15i_BFs15s_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15i_BFs15s_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFs15s_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15i_BFs15s_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFs15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15i_BFs15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFs15s_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15i_BFs15i_BFs15s_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFs15s_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15i_BFs15s_BFs15s, BFs15i_BFs15i_BFs15s_BFs15s)
//============================================================================


struct  BFs15i_BFs15i_BFs15s_BFu15i  {
  signed int v1:15;
  signed int v2:15;
  signed short v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15i_BFs15i_BFs15s_BFu15i) C1{ Fi:15 Fi:15 Fs:15 Fi:15}



static void Test_BFs15i_BFs15i_BFs15s_BFu15i()
{
  {
    init_simple_test("BFs15i_BFs15i_BFs15s_BFu15i");
    static STRUCT_IF_C BFs15i_BFs15i_BFs15s_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15i_BFs15s_BFu15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFs15i_BFs15s_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15i_BFs15s_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFs15s_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15i_BFs15s_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFs15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15i_BFs15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFs15s_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFs15i_BFs15s_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15i_BFs15i_BFs15s_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15i_BFs15s_BFu15i, BFs15i_BFs15i_BFs15s_BFu15i)
//============================================================================


struct  BFs15i_BFs15i_BFs15s_BFu15ll  {
  signed int v1:15;
  signed int v2:15;
  signed short v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15i_BFs15i_BFs15s_BFu15ll) C1{ Fi:15 Fi:15 Fs:15 FL:15}



static void Test_BFs15i_BFs15i_BFs15s_BFu15ll()
{
  {
    init_simple_test("BFs15i_BFs15i_BFs15s_BFu15ll");
    static STRUCT_IF_C BFs15i_BFs15i_BFs15s_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15i_BFs15s_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15i_BFs15s_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15i_BFs15s_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFs15s_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15i_BFs15s_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFs15s_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15i_BFs15s_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFs15s_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFs15i_BFs15s_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15i_BFs15i_BFs15s_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15i_BFs15s_BFu15ll, BFs15i_BFs15i_BFs15s_BFu15ll)
//============================================================================


struct  BFs15i_BFs15i_BFs15s_BFu15s  {
  signed int v1:15;
  signed int v2:15;
  signed short v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15i_BFs15i_BFs15s_BFu15s) C1{ Fi:15 Fi:15 Fs:15 Fs:15}



static void Test_BFs15i_BFs15i_BFs15s_BFu15s()
{
  {
    init_simple_test("BFs15i_BFs15i_BFs15s_BFu15s");
    static STRUCT_IF_C BFs15i_BFs15i_BFs15s_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15i_BFs15s_BFu15s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFs15i_BFs15s_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15i_BFs15s_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFs15s_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15i_BFs15s_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFs15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15i_BFs15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFs15s_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15i_BFs15i_BFs15s_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15i_BFs15i_BFs15s_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15i_BFs15s_BFu15s, BFs15i_BFs15i_BFs15s_BFu15s)
//============================================================================


struct  BFs15i_BFs15i_BFu15i  {
  signed int v1:15;
  signed int v2:15;
  unsigned int v3:15;
};
//SIG(1 BFs15i_BFs15i_BFu15i) C1{ Fi:15 Fi:15 Fi:15}



static void Test_BFs15i_BFs15i_BFu15i()
{
  {
    init_simple_test("BFs15i_BFs15i_BFu15i");
    static STRUCT_IF_C BFs15i_BFs15i_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15i_BFu15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFs15i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15i_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15i_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFs15i_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15i_BFu15i, BFs15i_BFs15i_BFu15i)
//============================================================================


struct  BFs15i_BFs15i_BFu15i_BFs15i  {
  signed int v1:15;
  signed int v2:15;
  unsigned int v3:15;
  signed int v4:15;
};
//SIG(1 BFs15i_BFs15i_BFu15i_BFs15i) C1{ Fi:15 Fi:15 Fi:15 Fi:15}



static void Test_BFs15i_BFs15i_BFu15i_BFs15i()
{
  {
    init_simple_test("BFs15i_BFs15i_BFu15i_BFs15i");
    static STRUCT_IF_C BFs15i_BFs15i_BFu15i_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15i_BFu15i_BFs15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFs15i_BFu15i_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15i_BFu15i_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFu15i_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15i_BFu15i_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFu15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15i_BFu15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFs15i_BFu15i_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFs15i_BFu15i_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFu15i_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15i_BFu15i_BFs15i, BFs15i_BFs15i_BFu15i_BFs15i)
//============================================================================


struct  BFs15i_BFs15i_BFu15i_BFs15ll  {
  signed int v1:15;
  signed int v2:15;
  unsigned int v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15i_BFs15i_BFu15i_BFs15ll) C1{ Fi:15 Fi:15 Fi:15 FL:15}



static void Test_BFs15i_BFs15i_BFu15i_BFs15ll()
{
  {
    init_simple_test("BFs15i_BFs15i_BFu15i_BFs15ll");
    static STRUCT_IF_C BFs15i_BFs15i_BFu15i_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15i_BFu15i_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15i_BFu15i_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15i_BFu15i_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFu15i_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15i_BFu15i_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFu15i_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15i_BFu15i_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFs15i_BFu15i_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFs15i_BFu15i_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFu15i_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15i_BFu15i_BFs15ll, BFs15i_BFs15i_BFu15i_BFs15ll)
//============================================================================


struct  BFs15i_BFs15i_BFu15i_BFs15s  {
  signed int v1:15;
  signed int v2:15;
  unsigned int v3:15;
  signed short v4:15;
};
//SIG(1 BFs15i_BFs15i_BFu15i_BFs15s) C1{ Fi:15 Fi:15 Fi:15 Fs:15}



static void Test_BFs15i_BFs15i_BFu15i_BFs15s()
{
  {
    init_simple_test("BFs15i_BFs15i_BFu15i_BFs15s");
    static STRUCT_IF_C BFs15i_BFs15i_BFu15i_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15i_BFu15i_BFs15s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFs15i_BFu15i_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15i_BFu15i_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFu15i_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15i_BFu15i_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFu15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15i_BFu15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFs15i_BFu15i_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15i_BFs15i_BFu15i_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFu15i_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15i_BFu15i_BFs15s, BFs15i_BFs15i_BFu15i_BFs15s)
//============================================================================


struct  BFs15i_BFs15i_BFu15i_BFu15i  {
  signed int v1:15;
  signed int v2:15;
  unsigned int v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15i_BFs15i_BFu15i_BFu15i) C1{ Fi:15 Fi:15 Fi:15 Fi:15}



static void Test_BFs15i_BFs15i_BFu15i_BFu15i()
{
  {
    init_simple_test("BFs15i_BFs15i_BFu15i_BFu15i");
    static STRUCT_IF_C BFs15i_BFs15i_BFu15i_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15i_BFu15i_BFu15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFs15i_BFu15i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15i_BFu15i_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFu15i_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15i_BFu15i_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFu15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15i_BFu15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFs15i_BFu15i_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFs15i_BFu15i_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15i_BFs15i_BFu15i_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15i_BFu15i_BFu15i, BFs15i_BFs15i_BFu15i_BFu15i)
//============================================================================


struct  BFs15i_BFs15i_BFu15i_BFu15ll  {
  signed int v1:15;
  signed int v2:15;
  unsigned int v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15i_BFs15i_BFu15i_BFu15ll) C1{ Fi:15 Fi:15 Fi:15 FL:15}



static void Test_BFs15i_BFs15i_BFu15i_BFu15ll()
{
  {
    init_simple_test("BFs15i_BFs15i_BFu15i_BFu15ll");
    static STRUCT_IF_C BFs15i_BFs15i_BFu15i_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15i_BFu15i_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15i_BFu15i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15i_BFu15i_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFu15i_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15i_BFu15i_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFu15i_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15i_BFu15i_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFs15i_BFu15i_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFs15i_BFu15i_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15i_BFs15i_BFu15i_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15i_BFu15i_BFu15ll, BFs15i_BFs15i_BFu15i_BFu15ll)
//============================================================================


struct  BFs15i_BFs15i_BFu15i_BFu15s  {
  signed int v1:15;
  signed int v2:15;
  unsigned int v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15i_BFs15i_BFu15i_BFu15s) C1{ Fi:15 Fi:15 Fi:15 Fs:15}



static void Test_BFs15i_BFs15i_BFu15i_BFu15s()
{
  {
    init_simple_test("BFs15i_BFs15i_BFu15i_BFu15s");
    static STRUCT_IF_C BFs15i_BFs15i_BFu15i_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15i_BFu15i_BFu15s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFs15i_BFu15i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15i_BFu15i_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFu15i_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15i_BFu15i_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFu15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15i_BFu15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFs15i_BFu15i_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15i_BFs15i_BFu15i_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15i_BFs15i_BFu15i_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15i_BFu15i_BFu15s, BFs15i_BFs15i_BFu15i_BFu15s)
//============================================================================


struct  BFs15i_BFs15i_BFu15ll  {
  signed int v1:15;
  signed int v2:15;
  __tsu64 v3:15;
};
//SIG(1 BFs15i_BFs15i_BFu15ll) C1{ Fi:15 Fi:15 FL:15}



static void Test_BFs15i_BFs15i_BFu15ll()
{
  {
    init_simple_test("BFs15i_BFs15i_BFu15ll");
    static STRUCT_IF_C BFs15i_BFs15i_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15i_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15i_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15i_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFu15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15i_BFs15i_BFu15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15i_BFs15i_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15i_BFu15ll, BFs15i_BFs15i_BFu15ll)
//============================================================================


struct  BFs15i_BFs15i_BFu15ll_BFs15i  {
  signed int v1:15;
  signed int v2:15;
  __tsu64 v3:15;
  signed int v4:15;
};
//SIG(1 BFs15i_BFs15i_BFu15ll_BFs15i) C1{ Fi:15 Fi:15 FL:15 Fi:15}



static void Test_BFs15i_BFs15i_BFu15ll_BFs15i()
{
  {
    init_simple_test("BFs15i_BFs15i_BFu15ll_BFs15i");
    static STRUCT_IF_C BFs15i_BFs15i_BFu15ll_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15i_BFu15ll_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15i_BFu15ll_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15i_BFu15ll_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFu15ll_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15i_BFu15ll_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFu15ll_BFs15i");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15i_BFs15i_BFu15ll_BFs15i");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15i_BFs15i_BFu15ll_BFs15i");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15i_BFs15i_BFu15ll_BFs15i");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFu15ll_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15i_BFu15ll_BFs15i, BFs15i_BFs15i_BFu15ll_BFs15i)
//============================================================================


struct  BFs15i_BFs15i_BFu15ll_BFs15ll  {
  signed int v1:15;
  signed int v2:15;
  __tsu64 v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15i_BFs15i_BFu15ll_BFs15ll) C1{ Fi:15 Fi:15 FL:15 FL:15}



static void Test_BFs15i_BFs15i_BFu15ll_BFs15ll()
{
  {
    init_simple_test("BFs15i_BFs15i_BFu15ll_BFs15ll");
    static STRUCT_IF_C BFs15i_BFs15i_BFu15ll_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15i_BFu15ll_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15i_BFu15ll_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15i_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15i_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15i_BFs15i_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15i_BFs15i_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15i_BFs15i_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFu15ll_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15i_BFu15ll_BFs15ll, BFs15i_BFs15i_BFu15ll_BFs15ll)
//============================================================================


struct  BFs15i_BFs15i_BFu15ll_BFs15s  {
  signed int v1:15;
  signed int v2:15;
  __tsu64 v3:15;
  signed short v4:15;
};
//SIG(1 BFs15i_BFs15i_BFu15ll_BFs15s) C1{ Fi:15 Fi:15 FL:15 Fs:15}



static void Test_BFs15i_BFs15i_BFu15ll_BFs15s()
{
  {
    init_simple_test("BFs15i_BFs15i_BFu15ll_BFs15s");
    static STRUCT_IF_C BFs15i_BFs15i_BFu15ll_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15i_BFu15ll_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15i_BFu15ll_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15i_BFu15ll_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFu15ll_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15i_BFu15ll_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFu15ll_BFs15s");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15i_BFs15i_BFu15ll_BFs15s");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15i_BFs15i_BFu15ll_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15i_BFs15i_BFu15ll_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFu15ll_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15i_BFu15ll_BFs15s, BFs15i_BFs15i_BFu15ll_BFs15s)
//============================================================================


struct  BFs15i_BFs15i_BFu15ll_BFu15i  {
  signed int v1:15;
  signed int v2:15;
  __tsu64 v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15i_BFs15i_BFu15ll_BFu15i) C1{ Fi:15 Fi:15 FL:15 Fi:15}



static void Test_BFs15i_BFs15i_BFu15ll_BFu15i()
{
  {
    init_simple_test("BFs15i_BFs15i_BFu15ll_BFu15i");
    static STRUCT_IF_C BFs15i_BFs15i_BFu15ll_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15i_BFu15ll_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15i_BFu15ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15i_BFu15ll_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFu15ll_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15i_BFu15ll_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFu15ll_BFu15i");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15i_BFs15i_BFu15ll_BFu15i");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15i_BFs15i_BFu15ll_BFu15i");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15i_BFs15i_BFu15ll_BFu15i");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_ull(1LL<<14), "BFs15i_BFs15i_BFu15ll_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15i_BFu15ll_BFu15i, BFs15i_BFs15i_BFu15ll_BFu15i)
//============================================================================


struct  BFs15i_BFs15i_BFu15ll_BFu15ll  {
  signed int v1:15;
  signed int v2:15;
  __tsu64 v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15i_BFs15i_BFu15ll_BFu15ll) C1{ Fi:15 Fi:15 FL:15 FL:15}



static void Test_BFs15i_BFs15i_BFu15ll_BFu15ll()
{
  {
    init_simple_test("BFs15i_BFs15i_BFu15ll_BFu15ll");
    static STRUCT_IF_C BFs15i_BFs15i_BFu15ll_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15i_BFu15ll_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15i_BFu15ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15i_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15i_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15i_BFs15i_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15i_BFs15i_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15i_BFs15i_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_ull(1LL<<14), "BFs15i_BFs15i_BFu15ll_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15i_BFu15ll_BFu15ll, BFs15i_BFs15i_BFu15ll_BFu15ll)
//============================================================================


struct  BFs15i_BFs15i_BFu15ll_BFu15s  {
  signed int v1:15;
  signed int v2:15;
  __tsu64 v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15i_BFs15i_BFu15ll_BFu15s) C1{ Fi:15 Fi:15 FL:15 Fs:15}



static void Test_BFs15i_BFs15i_BFu15ll_BFu15s()
{
  {
    init_simple_test("BFs15i_BFs15i_BFu15ll_BFu15s");
    static STRUCT_IF_C BFs15i_BFs15i_BFu15ll_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15i_BFu15ll_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15i_BFu15ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15i_BFu15ll_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFu15ll_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15i_BFu15ll_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFu15ll_BFu15s");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15i_BFs15i_BFu15ll_BFu15s");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15i_BFs15i_BFu15ll_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15i_BFs15i_BFu15ll_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15i_BFs15i_BFu15ll_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15i_BFu15ll_BFu15s, BFs15i_BFs15i_BFu15ll_BFu15s)
//============================================================================


struct  BFs15i_BFs15i_BFu15s  {
  signed int v1:15;
  signed int v2:15;
  unsigned short v3:15;
};
//SIG(1 BFs15i_BFs15i_BFu15s) C1{ Fi:15 Fi:15 Fs:15}



static void Test_BFs15i_BFs15i_BFu15s()
{
  {
    init_simple_test("BFs15i_BFs15i_BFu15s");
    static STRUCT_IF_C BFs15i_BFs15i_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15i_BFu15s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFs15i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15i_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15i_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFs15i_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15i_BFu15s, BFs15i_BFs15i_BFu15s)
//============================================================================


struct  BFs15i_BFs15i_BFu15s_BFs15i  {
  signed int v1:15;
  signed int v2:15;
  unsigned short v3:15;
  signed int v4:15;
};
//SIG(1 BFs15i_BFs15i_BFu15s_BFs15i) C1{ Fi:15 Fi:15 Fs:15 Fi:15}



static void Test_BFs15i_BFs15i_BFu15s_BFs15i()
{
  {
    init_simple_test("BFs15i_BFs15i_BFu15s_BFs15i");
    static STRUCT_IF_C BFs15i_BFs15i_BFu15s_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15i_BFu15s_BFs15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFs15i_BFu15s_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15i_BFu15s_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFu15s_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15i_BFu15s_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFu15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15i_BFu15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFs15i_BFu15s_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFs15i_BFu15s_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFu15s_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15i_BFu15s_BFs15i, BFs15i_BFs15i_BFu15s_BFs15i)
//============================================================================


struct  BFs15i_BFs15i_BFu15s_BFs15ll  {
  signed int v1:15;
  signed int v2:15;
  unsigned short v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15i_BFs15i_BFu15s_BFs15ll) C1{ Fi:15 Fi:15 Fs:15 FL:15}



static void Test_BFs15i_BFs15i_BFu15s_BFs15ll()
{
  {
    init_simple_test("BFs15i_BFs15i_BFu15s_BFs15ll");
    static STRUCT_IF_C BFs15i_BFs15i_BFu15s_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15i_BFu15s_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15i_BFu15s_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15i_BFu15s_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFu15s_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15i_BFu15s_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFu15s_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15i_BFu15s_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFs15i_BFu15s_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFs15i_BFu15s_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFu15s_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15i_BFu15s_BFs15ll, BFs15i_BFs15i_BFu15s_BFs15ll)
//============================================================================


struct  BFs15i_BFs15i_BFu15s_BFs15s  {
  signed int v1:15;
  signed int v2:15;
  unsigned short v3:15;
  signed short v4:15;
};
//SIG(1 BFs15i_BFs15i_BFu15s_BFs15s) C1{ Fi:15 Fi:15 Fs:15 Fs:15}



static void Test_BFs15i_BFs15i_BFu15s_BFs15s()
{
  {
    init_simple_test("BFs15i_BFs15i_BFu15s_BFs15s");
    static STRUCT_IF_C BFs15i_BFs15i_BFu15s_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15i_BFu15s_BFs15s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFs15i_BFu15s_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15i_BFu15s_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFu15s_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15i_BFu15s_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFu15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15i_BFu15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFs15i_BFu15s_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15i_BFs15i_BFu15s_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFu15s_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15i_BFu15s_BFs15s, BFs15i_BFs15i_BFu15s_BFs15s)
//============================================================================


struct  BFs15i_BFs15i_BFu15s_BFu15i  {
  signed int v1:15;
  signed int v2:15;
  unsigned short v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15i_BFs15i_BFu15s_BFu15i) C1{ Fi:15 Fi:15 Fs:15 Fi:15}



static void Test_BFs15i_BFs15i_BFu15s_BFu15i()
{
  {
    init_simple_test("BFs15i_BFs15i_BFu15s_BFu15i");
    static STRUCT_IF_C BFs15i_BFs15i_BFu15s_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15i_BFu15s_BFu15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFs15i_BFu15s_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15i_BFu15s_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFu15s_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15i_BFu15s_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFu15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15i_BFu15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFs15i_BFu15s_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFs15i_BFu15s_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15i_BFs15i_BFu15s_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15i_BFu15s_BFu15i, BFs15i_BFs15i_BFu15s_BFu15i)
//============================================================================


struct  BFs15i_BFs15i_BFu15s_BFu15ll  {
  signed int v1:15;
  signed int v2:15;
  unsigned short v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15i_BFs15i_BFu15s_BFu15ll) C1{ Fi:15 Fi:15 Fs:15 FL:15}



static void Test_BFs15i_BFs15i_BFu15s_BFu15ll()
{
  {
    init_simple_test("BFs15i_BFs15i_BFu15s_BFu15ll");
    static STRUCT_IF_C BFs15i_BFs15i_BFu15s_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15i_BFu15s_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15i_BFu15s_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15i_BFu15s_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFu15s_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15i_BFu15s_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFu15s_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15i_BFu15s_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFs15i_BFu15s_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFs15i_BFu15s_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15i_BFs15i_BFu15s_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15i_BFu15s_BFu15ll, BFs15i_BFs15i_BFu15s_BFu15ll)
//============================================================================


struct  BFs15i_BFs15i_BFu15s_BFu15s  {
  signed int v1:15;
  signed int v2:15;
  unsigned short v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15i_BFs15i_BFu15s_BFu15s) C1{ Fi:15 Fi:15 Fs:15 Fs:15}



static void Test_BFs15i_BFs15i_BFu15s_BFu15s()
{
  {
    init_simple_test("BFs15i_BFs15i_BFu15s_BFu15s");
    static STRUCT_IF_C BFs15i_BFs15i_BFu15s_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15i_BFu15s_BFu15s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFs15i_BFu15s_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15i_BFu15s_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFu15s_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15i_BFu15s_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15i_BFu15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15i_BFu15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFs15i_BFu15s_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15i_BFs15i_BFu15s_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15i_BFs15i_BFu15s_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15i_BFu15s_BFu15s, BFs15i_BFs15i_BFu15s_BFu15s)
//============================================================================


struct  BFs15i_BFs15ll  {
  signed int v1:15;
  signed __tsi64 v2:15;
};
//SIG(1 BFs15i_BFs15ll) C1{ Fi:15 FL:15}



static void Test_BFs15i_BFs15ll()
{
  {
    init_simple_test("BFs15i_BFs15ll");
    static STRUCT_IF_C BFs15i_BFs15ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs15i_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15ll, BFs15i_BFs15ll)
//============================================================================


struct  BFs15i_BFs15ll_BFs15i  {
  signed int v1:15;
  signed __tsi64 v2:15;
  signed int v3:15;
};
//SIG(1 BFs15i_BFs15ll_BFs15i) C1{ Fi:15 FL:15 Fi:15}



static void Test_BFs15i_BFs15ll_BFs15i()
{
  {
    init_simple_test("BFs15i_BFs15ll_BFs15i");
    static STRUCT_IF_C BFs15i_BFs15ll_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15ll_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15ll_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15ll_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15ll_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15ll_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15ll_BFs15i, BFs15i_BFs15ll_BFs15i)
//============================================================================


struct  BFs15i_BFs15ll_BFs15i_BFs15i  {
  signed int v1:15;
  signed __tsi64 v2:15;
  signed int v3:15;
  signed int v4:15;
};
//SIG(1 BFs15i_BFs15ll_BFs15i_BFs15i) C1{ Fi:15 FL:15 Fi:15 Fi:15}



static void Test_BFs15i_BFs15ll_BFs15i_BFs15i()
{
  {
    init_simple_test("BFs15i_BFs15ll_BFs15i_BFs15i");
    static STRUCT_IF_C BFs15i_BFs15ll_BFs15i_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15ll_BFs15i_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15ll_BFs15i_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15ll_BFs15i_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFs15i_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15ll_BFs15i_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFs15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15ll_BFs15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFs15i_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFs15ll_BFs15i_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFs15i_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15ll_BFs15i_BFs15i, BFs15i_BFs15ll_BFs15i_BFs15i)
//============================================================================


struct  BFs15i_BFs15ll_BFs15i_BFs15ll  {
  signed int v1:15;
  signed __tsi64 v2:15;
  signed int v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15i_BFs15ll_BFs15i_BFs15ll) C1{ Fi:15 FL:15 Fi:15 FL:15}



static void Test_BFs15i_BFs15ll_BFs15i_BFs15ll()
{
  {
    init_simple_test("BFs15i_BFs15ll_BFs15i_BFs15ll");
    static STRUCT_IF_C BFs15i_BFs15ll_BFs15i_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15ll_BFs15i_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15ll_BFs15i_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15ll_BFs15i_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFs15i_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15ll_BFs15i_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFs15i_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15ll_BFs15i_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFs15i_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFs15ll_BFs15i_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFs15i_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15ll_BFs15i_BFs15ll, BFs15i_BFs15ll_BFs15i_BFs15ll)
//============================================================================


struct  BFs15i_BFs15ll_BFs15i_BFs15s  {
  signed int v1:15;
  signed __tsi64 v2:15;
  signed int v3:15;
  signed short v4:15;
};
//SIG(1 BFs15i_BFs15ll_BFs15i_BFs15s) C1{ Fi:15 FL:15 Fi:15 Fs:15}



static void Test_BFs15i_BFs15ll_BFs15i_BFs15s()
{
  {
    init_simple_test("BFs15i_BFs15ll_BFs15i_BFs15s");
    static STRUCT_IF_C BFs15i_BFs15ll_BFs15i_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15ll_BFs15i_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15ll_BFs15i_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15ll_BFs15i_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFs15i_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15ll_BFs15i_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFs15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15ll_BFs15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFs15i_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15i_BFs15ll_BFs15i_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFs15i_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15ll_BFs15i_BFs15s, BFs15i_BFs15ll_BFs15i_BFs15s)
//============================================================================


struct  BFs15i_BFs15ll_BFs15i_BFu15i  {
  signed int v1:15;
  signed __tsi64 v2:15;
  signed int v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15i_BFs15ll_BFs15i_BFu15i) C1{ Fi:15 FL:15 Fi:15 Fi:15}



static void Test_BFs15i_BFs15ll_BFs15i_BFu15i()
{
  {
    init_simple_test("BFs15i_BFs15ll_BFs15i_BFu15i");
    static STRUCT_IF_C BFs15i_BFs15ll_BFs15i_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15ll_BFs15i_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15ll_BFs15i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15ll_BFs15i_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFs15i_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15ll_BFs15i_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFs15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15ll_BFs15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFs15i_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFs15ll_BFs15i_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15i_BFs15ll_BFs15i_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15ll_BFs15i_BFu15i, BFs15i_BFs15ll_BFs15i_BFu15i)
//============================================================================


struct  BFs15i_BFs15ll_BFs15i_BFu15ll  {
  signed int v1:15;
  signed __tsi64 v2:15;
  signed int v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15i_BFs15ll_BFs15i_BFu15ll) C1{ Fi:15 FL:15 Fi:15 FL:15}



static void Test_BFs15i_BFs15ll_BFs15i_BFu15ll()
{
  {
    init_simple_test("BFs15i_BFs15ll_BFs15i_BFu15ll");
    static STRUCT_IF_C BFs15i_BFs15ll_BFs15i_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15ll_BFs15i_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15ll_BFs15i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15ll_BFs15i_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFs15i_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15ll_BFs15i_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFs15i_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15ll_BFs15i_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFs15i_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFs15ll_BFs15i_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15i_BFs15ll_BFs15i_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15ll_BFs15i_BFu15ll, BFs15i_BFs15ll_BFs15i_BFu15ll)
//============================================================================


struct  BFs15i_BFs15ll_BFs15i_BFu15s  {
  signed int v1:15;
  signed __tsi64 v2:15;
  signed int v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15i_BFs15ll_BFs15i_BFu15s) C1{ Fi:15 FL:15 Fi:15 Fs:15}



static void Test_BFs15i_BFs15ll_BFs15i_BFu15s()
{
  {
    init_simple_test("BFs15i_BFs15ll_BFs15i_BFu15s");
    static STRUCT_IF_C BFs15i_BFs15ll_BFs15i_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15ll_BFs15i_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15ll_BFs15i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15ll_BFs15i_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFs15i_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15ll_BFs15i_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFs15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15ll_BFs15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFs15i_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15i_BFs15ll_BFs15i_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15i_BFs15ll_BFs15i_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15ll_BFs15i_BFu15s, BFs15i_BFs15ll_BFs15i_BFu15s)
//============================================================================


struct  BFs15i_BFs15ll_BFs15ll  {
  signed int v1:15;
  signed __tsi64 v2:15;
  signed __tsi64 v3:15;
};
//SIG(1 BFs15i_BFs15ll_BFs15ll) C1{ Fi:15 FL:15 FL:15}



static void Test_BFs15i_BFs15ll_BFs15ll()
{
  {
    init_simple_test("BFs15i_BFs15ll_BFs15ll");
    static STRUCT_IF_C BFs15i_BFs15ll_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15ll_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15ll_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15i_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15ll_BFs15ll, BFs15i_BFs15ll_BFs15ll)
//============================================================================


struct  BFs15i_BFs15ll_BFs15ll_BFs15i  {
  signed int v1:15;
  signed __tsi64 v2:15;
  signed __tsi64 v3:15;
  signed int v4:15;
};
//SIG(1 BFs15i_BFs15ll_BFs15ll_BFs15i) C1{ Fi:15 FL:15 FL:15 Fi:15}



static void Test_BFs15i_BFs15ll_BFs15ll_BFs15i()
{
  {
    init_simple_test("BFs15i_BFs15ll_BFs15ll_BFs15i");
    static STRUCT_IF_C BFs15i_BFs15ll_BFs15ll_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15ll_BFs15ll_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15ll_BFs15ll_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15ll_BFs15ll_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFs15ll_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15ll_BFs15ll_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFs15ll_BFs15i");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15i_BFs15ll_BFs15ll_BFs15i");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFs15ll_BFs15i");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15i_BFs15ll_BFs15ll_BFs15i");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFs15ll_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15ll_BFs15ll_BFs15i, BFs15i_BFs15ll_BFs15ll_BFs15i)
//============================================================================


struct  BFs15i_BFs15ll_BFs15ll_BFs15ll  {
  signed int v1:15;
  signed __tsi64 v2:15;
  signed __tsi64 v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15i_BFs15ll_BFs15ll_BFs15ll) C1{ Fi:15 FL:15 FL:15 FL:15}



static void Test_BFs15i_BFs15ll_BFs15ll_BFs15ll()
{
  {
    init_simple_test("BFs15i_BFs15ll_BFs15ll_BFs15ll");
    static STRUCT_IF_C BFs15i_BFs15ll_BFs15ll_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15ll_BFs15ll_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15ll_BFs15ll_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15ll_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15ll_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15i_BFs15ll_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15i_BFs15ll_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFs15ll_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15ll_BFs15ll_BFs15ll, BFs15i_BFs15ll_BFs15ll_BFs15ll)
//============================================================================


struct  BFs15i_BFs15ll_BFs15ll_BFs15s  {
  signed int v1:15;
  signed __tsi64 v2:15;
  signed __tsi64 v3:15;
  signed short v4:15;
};
//SIG(1 BFs15i_BFs15ll_BFs15ll_BFs15s) C1{ Fi:15 FL:15 FL:15 Fs:15}



static void Test_BFs15i_BFs15ll_BFs15ll_BFs15s()
{
  {
    init_simple_test("BFs15i_BFs15ll_BFs15ll_BFs15s");
    static STRUCT_IF_C BFs15i_BFs15ll_BFs15ll_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15ll_BFs15ll_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15ll_BFs15ll_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15ll_BFs15ll_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFs15ll_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15ll_BFs15ll_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFs15ll_BFs15s");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15i_BFs15ll_BFs15ll_BFs15s");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFs15ll_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15i_BFs15ll_BFs15ll_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFs15ll_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15ll_BFs15ll_BFs15s, BFs15i_BFs15ll_BFs15ll_BFs15s)
//============================================================================


struct  BFs15i_BFs15ll_BFs15ll_BFu15i  {
  signed int v1:15;
  signed __tsi64 v2:15;
  signed __tsi64 v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15i_BFs15ll_BFs15ll_BFu15i) C1{ Fi:15 FL:15 FL:15 Fi:15}



static void Test_BFs15i_BFs15ll_BFs15ll_BFu15i()
{
  {
    init_simple_test("BFs15i_BFs15ll_BFs15ll_BFu15i");
    static STRUCT_IF_C BFs15i_BFs15ll_BFs15ll_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15ll_BFs15ll_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15ll_BFs15ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15ll_BFs15ll_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFs15ll_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15ll_BFs15ll_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFs15ll_BFu15i");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15i_BFs15ll_BFs15ll_BFu15i");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFs15ll_BFu15i");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15i_BFs15ll_BFs15ll_BFu15i");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_ull(1LL<<14), "BFs15i_BFs15ll_BFs15ll_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15ll_BFs15ll_BFu15i, BFs15i_BFs15ll_BFs15ll_BFu15i)
//============================================================================


struct  BFs15i_BFs15ll_BFs15ll_BFu15ll  {
  signed int v1:15;
  signed __tsi64 v2:15;
  signed __tsi64 v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15i_BFs15ll_BFs15ll_BFu15ll) C1{ Fi:15 FL:15 FL:15 FL:15}



static void Test_BFs15i_BFs15ll_BFs15ll_BFu15ll()
{
  {
    init_simple_test("BFs15i_BFs15ll_BFs15ll_BFu15ll");
    static STRUCT_IF_C BFs15i_BFs15ll_BFs15ll_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15ll_BFs15ll_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15ll_BFs15ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15ll_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15ll_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15i_BFs15ll_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15i_BFs15ll_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_ull(1LL<<14), "BFs15i_BFs15ll_BFs15ll_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15ll_BFs15ll_BFu15ll, BFs15i_BFs15ll_BFs15ll_BFu15ll)
//============================================================================


struct  BFs15i_BFs15ll_BFs15ll_BFu15s  {
  signed int v1:15;
  signed __tsi64 v2:15;
  signed __tsi64 v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15i_BFs15ll_BFs15ll_BFu15s) C1{ Fi:15 FL:15 FL:15 Fs:15}



static void Test_BFs15i_BFs15ll_BFs15ll_BFu15s()
{
  {
    init_simple_test("BFs15i_BFs15ll_BFs15ll_BFu15s");
    static STRUCT_IF_C BFs15i_BFs15ll_BFs15ll_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15ll_BFs15ll_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15ll_BFs15ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15ll_BFs15ll_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFs15ll_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15ll_BFs15ll_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFs15ll_BFu15s");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15i_BFs15ll_BFs15ll_BFu15s");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFs15ll_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15i_BFs15ll_BFs15ll_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15i_BFs15ll_BFs15ll_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15ll_BFs15ll_BFu15s, BFs15i_BFs15ll_BFs15ll_BFu15s)
//============================================================================


struct  BFs15i_BFs15ll_BFs15s  {
  signed int v1:15;
  signed __tsi64 v2:15;
  signed short v3:15;
};
//SIG(1 BFs15i_BFs15ll_BFs15s) C1{ Fi:15 FL:15 Fs:15}



static void Test_BFs15i_BFs15ll_BFs15s()
{
  {
    init_simple_test("BFs15i_BFs15ll_BFs15s");
    static STRUCT_IF_C BFs15i_BFs15ll_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15ll_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15ll_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15ll_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15ll_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15ll_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15ll_BFs15s, BFs15i_BFs15ll_BFs15s)
//============================================================================


struct  BFs15i_BFs15ll_BFs15s_BFs15i  {
  signed int v1:15;
  signed __tsi64 v2:15;
  signed short v3:15;
  signed int v4:15;
};
//SIG(1 BFs15i_BFs15ll_BFs15s_BFs15i) C1{ Fi:15 FL:15 Fs:15 Fi:15}



static void Test_BFs15i_BFs15ll_BFs15s_BFs15i()
{
  {
    init_simple_test("BFs15i_BFs15ll_BFs15s_BFs15i");
    static STRUCT_IF_C BFs15i_BFs15ll_BFs15s_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15ll_BFs15s_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15ll_BFs15s_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15ll_BFs15s_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFs15s_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15ll_BFs15s_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFs15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15ll_BFs15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFs15s_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFs15ll_BFs15s_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFs15s_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15ll_BFs15s_BFs15i, BFs15i_BFs15ll_BFs15s_BFs15i)
//============================================================================


struct  BFs15i_BFs15ll_BFs15s_BFs15ll  {
  signed int v1:15;
  signed __tsi64 v2:15;
  signed short v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15i_BFs15ll_BFs15s_BFs15ll) C1{ Fi:15 FL:15 Fs:15 FL:15}



static void Test_BFs15i_BFs15ll_BFs15s_BFs15ll()
{
  {
    init_simple_test("BFs15i_BFs15ll_BFs15s_BFs15ll");
    static STRUCT_IF_C BFs15i_BFs15ll_BFs15s_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15ll_BFs15s_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15ll_BFs15s_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15ll_BFs15s_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFs15s_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15ll_BFs15s_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFs15s_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15ll_BFs15s_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFs15s_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFs15ll_BFs15s_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFs15s_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15ll_BFs15s_BFs15ll, BFs15i_BFs15ll_BFs15s_BFs15ll)
//============================================================================


struct  BFs15i_BFs15ll_BFs15s_BFs15s  {
  signed int v1:15;
  signed __tsi64 v2:15;
  signed short v3:15;
  signed short v4:15;
};
//SIG(1 BFs15i_BFs15ll_BFs15s_BFs15s) C1{ Fi:15 FL:15 Fs:15 Fs:15}



static void Test_BFs15i_BFs15ll_BFs15s_BFs15s()
{
  {
    init_simple_test("BFs15i_BFs15ll_BFs15s_BFs15s");
    static STRUCT_IF_C BFs15i_BFs15ll_BFs15s_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15ll_BFs15s_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15ll_BFs15s_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15ll_BFs15s_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFs15s_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15ll_BFs15s_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFs15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15ll_BFs15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFs15s_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15i_BFs15ll_BFs15s_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFs15s_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15ll_BFs15s_BFs15s, BFs15i_BFs15ll_BFs15s_BFs15s)
//============================================================================


struct  BFs15i_BFs15ll_BFs15s_BFu15i  {
  signed int v1:15;
  signed __tsi64 v2:15;
  signed short v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15i_BFs15ll_BFs15s_BFu15i) C1{ Fi:15 FL:15 Fs:15 Fi:15}



static void Test_BFs15i_BFs15ll_BFs15s_BFu15i()
{
  {
    init_simple_test("BFs15i_BFs15ll_BFs15s_BFu15i");
    static STRUCT_IF_C BFs15i_BFs15ll_BFs15s_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15ll_BFs15s_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15ll_BFs15s_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15ll_BFs15s_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFs15s_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15ll_BFs15s_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFs15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15ll_BFs15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFs15s_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFs15ll_BFs15s_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15i_BFs15ll_BFs15s_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15ll_BFs15s_BFu15i, BFs15i_BFs15ll_BFs15s_BFu15i)
//============================================================================


struct  BFs15i_BFs15ll_BFs15s_BFu15ll  {
  signed int v1:15;
  signed __tsi64 v2:15;
  signed short v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15i_BFs15ll_BFs15s_BFu15ll) C1{ Fi:15 FL:15 Fs:15 FL:15}



static void Test_BFs15i_BFs15ll_BFs15s_BFu15ll()
{
  {
    init_simple_test("BFs15i_BFs15ll_BFs15s_BFu15ll");
    static STRUCT_IF_C BFs15i_BFs15ll_BFs15s_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15ll_BFs15s_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15ll_BFs15s_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15ll_BFs15s_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFs15s_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15ll_BFs15s_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFs15s_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15ll_BFs15s_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFs15s_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFs15ll_BFs15s_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15i_BFs15ll_BFs15s_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15ll_BFs15s_BFu15ll, BFs15i_BFs15ll_BFs15s_BFu15ll)
//============================================================================


struct  BFs15i_BFs15ll_BFs15s_BFu15s  {
  signed int v1:15;
  signed __tsi64 v2:15;
  signed short v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15i_BFs15ll_BFs15s_BFu15s) C1{ Fi:15 FL:15 Fs:15 Fs:15}



static void Test_BFs15i_BFs15ll_BFs15s_BFu15s()
{
  {
    init_simple_test("BFs15i_BFs15ll_BFs15s_BFu15s");
    static STRUCT_IF_C BFs15i_BFs15ll_BFs15s_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15ll_BFs15s_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15ll_BFs15s_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15ll_BFs15s_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFs15s_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15ll_BFs15s_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFs15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15ll_BFs15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFs15s_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15i_BFs15ll_BFs15s_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15i_BFs15ll_BFs15s_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15ll_BFs15s_BFu15s, BFs15i_BFs15ll_BFs15s_BFu15s)
//============================================================================


struct  BFs15i_BFs15ll_BFu15i  {
  signed int v1:15;
  signed __tsi64 v2:15;
  unsigned int v3:15;
};
//SIG(1 BFs15i_BFs15ll_BFu15i) C1{ Fi:15 FL:15 Fi:15}



static void Test_BFs15i_BFs15ll_BFu15i()
{
  {
    init_simple_test("BFs15i_BFs15ll_BFu15i");
    static STRUCT_IF_C BFs15i_BFs15ll_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15ll_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15ll_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15ll_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15ll_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFs15ll_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15ll_BFu15i, BFs15i_BFs15ll_BFu15i)
//============================================================================


struct  BFs15i_BFs15ll_BFu15i_BFs15i  {
  signed int v1:15;
  signed __tsi64 v2:15;
  unsigned int v3:15;
  signed int v4:15;
};
//SIG(1 BFs15i_BFs15ll_BFu15i_BFs15i) C1{ Fi:15 FL:15 Fi:15 Fi:15}



static void Test_BFs15i_BFs15ll_BFu15i_BFs15i()
{
  {
    init_simple_test("BFs15i_BFs15ll_BFu15i_BFs15i");
    static STRUCT_IF_C BFs15i_BFs15ll_BFu15i_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15ll_BFu15i_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15ll_BFu15i_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15ll_BFu15i_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFu15i_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15ll_BFu15i_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFu15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15ll_BFu15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFs15ll_BFu15i_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFs15ll_BFu15i_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFu15i_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15ll_BFu15i_BFs15i, BFs15i_BFs15ll_BFu15i_BFs15i)
//============================================================================


struct  BFs15i_BFs15ll_BFu15i_BFs15ll  {
  signed int v1:15;
  signed __tsi64 v2:15;
  unsigned int v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15i_BFs15ll_BFu15i_BFs15ll) C1{ Fi:15 FL:15 Fi:15 FL:15}



static void Test_BFs15i_BFs15ll_BFu15i_BFs15ll()
{
  {
    init_simple_test("BFs15i_BFs15ll_BFu15i_BFs15ll");
    static STRUCT_IF_C BFs15i_BFs15ll_BFu15i_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15ll_BFu15i_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15ll_BFu15i_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15ll_BFu15i_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFu15i_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15ll_BFu15i_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFu15i_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15ll_BFu15i_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFs15ll_BFu15i_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFs15ll_BFu15i_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFu15i_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15ll_BFu15i_BFs15ll, BFs15i_BFs15ll_BFu15i_BFs15ll)
//============================================================================


struct  BFs15i_BFs15ll_BFu15i_BFs15s  {
  signed int v1:15;
  signed __tsi64 v2:15;
  unsigned int v3:15;
  signed short v4:15;
};
//SIG(1 BFs15i_BFs15ll_BFu15i_BFs15s) C1{ Fi:15 FL:15 Fi:15 Fs:15}



static void Test_BFs15i_BFs15ll_BFu15i_BFs15s()
{
  {
    init_simple_test("BFs15i_BFs15ll_BFu15i_BFs15s");
    static STRUCT_IF_C BFs15i_BFs15ll_BFu15i_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15ll_BFu15i_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15ll_BFu15i_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15ll_BFu15i_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFu15i_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15ll_BFu15i_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFu15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15ll_BFu15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFs15ll_BFu15i_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15i_BFs15ll_BFu15i_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFu15i_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15ll_BFu15i_BFs15s, BFs15i_BFs15ll_BFu15i_BFs15s)
//============================================================================


struct  BFs15i_BFs15ll_BFu15i_BFu15i  {
  signed int v1:15;
  signed __tsi64 v2:15;
  unsigned int v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15i_BFs15ll_BFu15i_BFu15i) C1{ Fi:15 FL:15 Fi:15 Fi:15}



static void Test_BFs15i_BFs15ll_BFu15i_BFu15i()
{
  {
    init_simple_test("BFs15i_BFs15ll_BFu15i_BFu15i");
    static STRUCT_IF_C BFs15i_BFs15ll_BFu15i_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15ll_BFu15i_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15ll_BFu15i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15ll_BFu15i_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFu15i_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15ll_BFu15i_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFu15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15ll_BFu15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFs15ll_BFu15i_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFs15ll_BFu15i_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15i_BFs15ll_BFu15i_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15ll_BFu15i_BFu15i, BFs15i_BFs15ll_BFu15i_BFu15i)
//============================================================================


struct  BFs15i_BFs15ll_BFu15i_BFu15ll  {
  signed int v1:15;
  signed __tsi64 v2:15;
  unsigned int v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15i_BFs15ll_BFu15i_BFu15ll) C1{ Fi:15 FL:15 Fi:15 FL:15}



static void Test_BFs15i_BFs15ll_BFu15i_BFu15ll()
{
  {
    init_simple_test("BFs15i_BFs15ll_BFu15i_BFu15ll");
    static STRUCT_IF_C BFs15i_BFs15ll_BFu15i_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15ll_BFu15i_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15ll_BFu15i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15ll_BFu15i_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFu15i_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15ll_BFu15i_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFu15i_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15ll_BFu15i_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFs15ll_BFu15i_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFs15ll_BFu15i_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15i_BFs15ll_BFu15i_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15ll_BFu15i_BFu15ll, BFs15i_BFs15ll_BFu15i_BFu15ll)
//============================================================================


struct  BFs15i_BFs15ll_BFu15i_BFu15s  {
  signed int v1:15;
  signed __tsi64 v2:15;
  unsigned int v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15i_BFs15ll_BFu15i_BFu15s) C1{ Fi:15 FL:15 Fi:15 Fs:15}



static void Test_BFs15i_BFs15ll_BFu15i_BFu15s()
{
  {
    init_simple_test("BFs15i_BFs15ll_BFu15i_BFu15s");
    static STRUCT_IF_C BFs15i_BFs15ll_BFu15i_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15ll_BFu15i_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15ll_BFu15i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15ll_BFu15i_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFu15i_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15ll_BFu15i_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFu15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15ll_BFu15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFs15ll_BFu15i_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15i_BFs15ll_BFu15i_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15i_BFs15ll_BFu15i_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15ll_BFu15i_BFu15s, BFs15i_BFs15ll_BFu15i_BFu15s)
//============================================================================


struct  BFs15i_BFs15ll_BFu15ll  {
  signed int v1:15;
  signed __tsi64 v2:15;
  __tsu64 v3:15;
};
//SIG(1 BFs15i_BFs15ll_BFu15ll) C1{ Fi:15 FL:15 FL:15}



static void Test_BFs15i_BFs15ll_BFu15ll()
{
  {
    init_simple_test("BFs15i_BFs15ll_BFu15ll");
    static STRUCT_IF_C BFs15i_BFs15ll_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15ll_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15i_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15i_BFs15ll_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15ll_BFu15ll, BFs15i_BFs15ll_BFu15ll)
//============================================================================


struct  BFs15i_BFs15ll_BFu15ll_BFs15i  {
  signed int v1:15;
  signed __tsi64 v2:15;
  __tsu64 v3:15;
  signed int v4:15;
};
//SIG(1 BFs15i_BFs15ll_BFu15ll_BFs15i) C1{ Fi:15 FL:15 FL:15 Fi:15}



static void Test_BFs15i_BFs15ll_BFu15ll_BFs15i()
{
  {
    init_simple_test("BFs15i_BFs15ll_BFu15ll_BFs15i");
    static STRUCT_IF_C BFs15i_BFs15ll_BFu15ll_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15ll_BFu15ll_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15ll_BFu15ll_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15ll_BFu15ll_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFu15ll_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15ll_BFu15ll_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFu15ll_BFs15i");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15i_BFs15ll_BFu15ll_BFs15i");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15i_BFs15ll_BFu15ll_BFs15i");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15i_BFs15ll_BFu15ll_BFs15i");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFu15ll_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15ll_BFu15ll_BFs15i, BFs15i_BFs15ll_BFu15ll_BFs15i)
//============================================================================


struct  BFs15i_BFs15ll_BFu15ll_BFs15ll  {
  signed int v1:15;
  signed __tsi64 v2:15;
  __tsu64 v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15i_BFs15ll_BFu15ll_BFs15ll) C1{ Fi:15 FL:15 FL:15 FL:15}



static void Test_BFs15i_BFs15ll_BFu15ll_BFs15ll()
{
  {
    init_simple_test("BFs15i_BFs15ll_BFu15ll_BFs15ll");
    static STRUCT_IF_C BFs15i_BFs15ll_BFu15ll_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15ll_BFu15ll_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15ll_BFu15ll_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15ll_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15ll_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15i_BFs15ll_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15i_BFs15ll_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15i_BFs15ll_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFu15ll_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15ll_BFu15ll_BFs15ll, BFs15i_BFs15ll_BFu15ll_BFs15ll)
//============================================================================


struct  BFs15i_BFs15ll_BFu15ll_BFs15s  {
  signed int v1:15;
  signed __tsi64 v2:15;
  __tsu64 v3:15;
  signed short v4:15;
};
//SIG(1 BFs15i_BFs15ll_BFu15ll_BFs15s) C1{ Fi:15 FL:15 FL:15 Fs:15}



static void Test_BFs15i_BFs15ll_BFu15ll_BFs15s()
{
  {
    init_simple_test("BFs15i_BFs15ll_BFu15ll_BFs15s");
    static STRUCT_IF_C BFs15i_BFs15ll_BFu15ll_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15ll_BFu15ll_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15ll_BFu15ll_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15ll_BFu15ll_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFu15ll_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15ll_BFu15ll_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFu15ll_BFs15s");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15i_BFs15ll_BFu15ll_BFs15s");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15i_BFs15ll_BFu15ll_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15i_BFs15ll_BFu15ll_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFu15ll_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15ll_BFu15ll_BFs15s, BFs15i_BFs15ll_BFu15ll_BFs15s)
//============================================================================


struct  BFs15i_BFs15ll_BFu15ll_BFu15i  {
  signed int v1:15;
  signed __tsi64 v2:15;
  __tsu64 v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15i_BFs15ll_BFu15ll_BFu15i) C1{ Fi:15 FL:15 FL:15 Fi:15}



static void Test_BFs15i_BFs15ll_BFu15ll_BFu15i()
{
  {
    init_simple_test("BFs15i_BFs15ll_BFu15ll_BFu15i");
    static STRUCT_IF_C BFs15i_BFs15ll_BFu15ll_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15ll_BFu15ll_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15ll_BFu15ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15ll_BFu15ll_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFu15ll_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15ll_BFu15ll_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFu15ll_BFu15i");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15i_BFs15ll_BFu15ll_BFu15i");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15i_BFs15ll_BFu15ll_BFu15i");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15i_BFs15ll_BFu15ll_BFu15i");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_ull(1LL<<14), "BFs15i_BFs15ll_BFu15ll_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15ll_BFu15ll_BFu15i, BFs15i_BFs15ll_BFu15ll_BFu15i)
//============================================================================


struct  BFs15i_BFs15ll_BFu15ll_BFu15ll  {
  signed int v1:15;
  signed __tsi64 v2:15;
  __tsu64 v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15i_BFs15ll_BFu15ll_BFu15ll) C1{ Fi:15 FL:15 FL:15 FL:15}



static void Test_BFs15i_BFs15ll_BFu15ll_BFu15ll()
{
  {
    init_simple_test("BFs15i_BFs15ll_BFu15ll_BFu15ll");
    static STRUCT_IF_C BFs15i_BFs15ll_BFu15ll_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15ll_BFu15ll_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15ll_BFu15ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15ll_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15ll_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15i_BFs15ll_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15i_BFs15ll_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15i_BFs15ll_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_ull(1LL<<14), "BFs15i_BFs15ll_BFu15ll_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15ll_BFu15ll_BFu15ll, BFs15i_BFs15ll_BFu15ll_BFu15ll)
//============================================================================


struct  BFs15i_BFs15ll_BFu15ll_BFu15s  {
  signed int v1:15;
  signed __tsi64 v2:15;
  __tsu64 v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15i_BFs15ll_BFu15ll_BFu15s) C1{ Fi:15 FL:15 FL:15 Fs:15}



static void Test_BFs15i_BFs15ll_BFu15ll_BFu15s()
{
  {
    init_simple_test("BFs15i_BFs15ll_BFu15ll_BFu15s");
    static STRUCT_IF_C BFs15i_BFs15ll_BFu15ll_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15ll_BFu15ll_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15ll_BFu15ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15ll_BFu15ll_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFu15ll_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15ll_BFu15ll_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFu15ll_BFu15s");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15i_BFs15ll_BFu15ll_BFu15s");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15i_BFs15ll_BFu15ll_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15i_BFs15ll_BFu15ll_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15i_BFs15ll_BFu15ll_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15ll_BFu15ll_BFu15s, BFs15i_BFs15ll_BFu15ll_BFu15s)
//============================================================================


struct  BFs15i_BFs15ll_BFu15s  {
  signed int v1:15;
  signed __tsi64 v2:15;
  unsigned short v3:15;
};
//SIG(1 BFs15i_BFs15ll_BFu15s) C1{ Fi:15 FL:15 Fs:15}



static void Test_BFs15i_BFs15ll_BFu15s()
{
  {
    init_simple_test("BFs15i_BFs15ll_BFu15s");
    static STRUCT_IF_C BFs15i_BFs15ll_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15ll_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15ll_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15ll_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15ll_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFs15ll_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15ll_BFu15s, BFs15i_BFs15ll_BFu15s)
//============================================================================


struct  BFs15i_BFs15ll_BFu15s_BFs15i  {
  signed int v1:15;
  signed __tsi64 v2:15;
  unsigned short v3:15;
  signed int v4:15;
};
//SIG(1 BFs15i_BFs15ll_BFu15s_BFs15i) C1{ Fi:15 FL:15 Fs:15 Fi:15}



static void Test_BFs15i_BFs15ll_BFu15s_BFs15i()
{
  {
    init_simple_test("BFs15i_BFs15ll_BFu15s_BFs15i");
    static STRUCT_IF_C BFs15i_BFs15ll_BFu15s_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15ll_BFu15s_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15ll_BFu15s_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15ll_BFu15s_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFu15s_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15ll_BFu15s_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFu15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15ll_BFu15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFs15ll_BFu15s_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFs15ll_BFu15s_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFu15s_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15ll_BFu15s_BFs15i, BFs15i_BFs15ll_BFu15s_BFs15i)
//============================================================================


struct  BFs15i_BFs15ll_BFu15s_BFs15ll  {
  signed int v1:15;
  signed __tsi64 v2:15;
  unsigned short v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15i_BFs15ll_BFu15s_BFs15ll) C1{ Fi:15 FL:15 Fs:15 FL:15}



static void Test_BFs15i_BFs15ll_BFu15s_BFs15ll()
{
  {
    init_simple_test("BFs15i_BFs15ll_BFu15s_BFs15ll");
    static STRUCT_IF_C BFs15i_BFs15ll_BFu15s_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15ll_BFu15s_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15ll_BFu15s_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15ll_BFu15s_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFu15s_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15ll_BFu15s_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFu15s_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15ll_BFu15s_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFs15ll_BFu15s_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFs15ll_BFu15s_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFu15s_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15ll_BFu15s_BFs15ll, BFs15i_BFs15ll_BFu15s_BFs15ll)
//============================================================================


struct  BFs15i_BFs15ll_BFu15s_BFs15s  {
  signed int v1:15;
  signed __tsi64 v2:15;
  unsigned short v3:15;
  signed short v4:15;
};
//SIG(1 BFs15i_BFs15ll_BFu15s_BFs15s) C1{ Fi:15 FL:15 Fs:15 Fs:15}



static void Test_BFs15i_BFs15ll_BFu15s_BFs15s()
{
  {
    init_simple_test("BFs15i_BFs15ll_BFu15s_BFs15s");
    static STRUCT_IF_C BFs15i_BFs15ll_BFu15s_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15ll_BFu15s_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15ll_BFu15s_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15ll_BFu15s_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFu15s_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15ll_BFu15s_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFu15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15ll_BFu15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFs15ll_BFu15s_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15i_BFs15ll_BFu15s_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFu15s_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15ll_BFu15s_BFs15s, BFs15i_BFs15ll_BFu15s_BFs15s)
//============================================================================


struct  BFs15i_BFs15ll_BFu15s_BFu15i  {
  signed int v1:15;
  signed __tsi64 v2:15;
  unsigned short v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15i_BFs15ll_BFu15s_BFu15i) C1{ Fi:15 FL:15 Fs:15 Fi:15}



static void Test_BFs15i_BFs15ll_BFu15s_BFu15i()
{
  {
    init_simple_test("BFs15i_BFs15ll_BFu15s_BFu15i");
    static STRUCT_IF_C BFs15i_BFs15ll_BFu15s_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15ll_BFu15s_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15ll_BFu15s_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15ll_BFu15s_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFu15s_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15ll_BFu15s_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFu15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15ll_BFu15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFs15ll_BFu15s_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFs15ll_BFu15s_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15i_BFs15ll_BFu15s_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15ll_BFu15s_BFu15i, BFs15i_BFs15ll_BFu15s_BFu15i)
//============================================================================


struct  BFs15i_BFs15ll_BFu15s_BFu15ll  {
  signed int v1:15;
  signed __tsi64 v2:15;
  unsigned short v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15i_BFs15ll_BFu15s_BFu15ll) C1{ Fi:15 FL:15 Fs:15 FL:15}



static void Test_BFs15i_BFs15ll_BFu15s_BFu15ll()
{
  {
    init_simple_test("BFs15i_BFs15ll_BFu15s_BFu15ll");
    static STRUCT_IF_C BFs15i_BFs15ll_BFu15s_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15ll_BFu15s_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15ll_BFu15s_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15ll_BFu15s_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFu15s_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15ll_BFu15s_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFu15s_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15ll_BFu15s_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFs15ll_BFu15s_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFs15ll_BFu15s_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15i_BFs15ll_BFu15s_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15ll_BFu15s_BFu15ll, BFs15i_BFs15ll_BFu15s_BFu15ll)
//============================================================================


struct  BFs15i_BFs15ll_BFu15s_BFu15s  {
  signed int v1:15;
  signed __tsi64 v2:15;
  unsigned short v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15i_BFs15ll_BFu15s_BFu15s) C1{ Fi:15 FL:15 Fs:15 Fs:15}



static void Test_BFs15i_BFs15ll_BFu15s_BFu15s()
{
  {
    init_simple_test("BFs15i_BFs15ll_BFu15s_BFu15s");
    static STRUCT_IF_C BFs15i_BFs15ll_BFu15s_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15ll_BFu15s_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15ll_BFu15s_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15ll_BFu15s_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFu15s_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFs15ll_BFu15s_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15ll_BFu15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15ll_BFu15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFs15ll_BFu15s_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15i_BFs15ll_BFu15s_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15i_BFs15ll_BFu15s_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15ll_BFu15s_BFu15s, BFs15i_BFs15ll_BFu15s_BFu15s)
//============================================================================


struct  BFs15i_BFs15s  {
  signed int v1:15;
  signed short v2:15;
};
//SIG(1 BFs15i_BFs15s) C1{ Fi:15 Fs:15}



static void Test_BFs15i_BFs15s()
{
  {
    init_simple_test("BFs15i_BFs15s");
    static STRUCT_IF_C BFs15i_BFs15s lv;
    check2(sizeof(lv), 4, "sizeof(BFs15i_BFs15s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15s, BFs15i_BFs15s)
//============================================================================


struct  BFs15i_BFs15s_BFs15i  {
  signed int v1:15;
  signed short v2:15;
  signed int v3:15;
};
//SIG(1 BFs15i_BFs15s_BFs15i) C1{ Fi:15 Fs:15 Fi:15}



static void Test_BFs15i_BFs15s_BFs15i()
{
  {
    init_simple_test("BFs15i_BFs15s_BFs15i");
    static STRUCT_IF_C BFs15i_BFs15s_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15s_BFs15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFs15s_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15s_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFs15s_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15s_BFs15i, BFs15i_BFs15s_BFs15i)
//============================================================================


struct  BFs15i_BFs15s_BFs15i_BFs15i  {
  signed int v1:15;
  signed short v2:15;
  signed int v3:15;
  signed int v4:15;
};
//SIG(1 BFs15i_BFs15s_BFs15i_BFs15i) C1{ Fi:15 Fs:15 Fi:15 Fi:15}



static void Test_BFs15i_BFs15s_BFs15i_BFs15i()
{
  {
    init_simple_test("BFs15i_BFs15s_BFs15i_BFs15i");
    static STRUCT_IF_C BFs15i_BFs15s_BFs15i_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15s_BFs15i_BFs15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFs15s_BFs15i_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15s_BFs15i_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFs15i_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFs15s_BFs15i_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFs15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15s_BFs15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFs15i_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFs15s_BFs15i_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFs15i_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15s_BFs15i_BFs15i, BFs15i_BFs15s_BFs15i_BFs15i)
//============================================================================


struct  BFs15i_BFs15s_BFs15i_BFs15ll  {
  signed int v1:15;
  signed short v2:15;
  signed int v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15i_BFs15s_BFs15i_BFs15ll) C1{ Fi:15 Fs:15 Fi:15 FL:15}



static void Test_BFs15i_BFs15s_BFs15i_BFs15ll()
{
  {
    init_simple_test("BFs15i_BFs15s_BFs15i_BFs15ll");
    static STRUCT_IF_C BFs15i_BFs15s_BFs15i_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15s_BFs15i_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15s_BFs15i_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15s_BFs15i_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFs15i_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFs15s_BFs15i_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFs15i_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15s_BFs15i_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFs15i_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFs15s_BFs15i_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFs15i_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15s_BFs15i_BFs15ll, BFs15i_BFs15s_BFs15i_BFs15ll)
//============================================================================


struct  BFs15i_BFs15s_BFs15i_BFs15s  {
  signed int v1:15;
  signed short v2:15;
  signed int v3:15;
  signed short v4:15;
};
//SIG(1 BFs15i_BFs15s_BFs15i_BFs15s) C1{ Fi:15 Fs:15 Fi:15 Fs:15}



static void Test_BFs15i_BFs15s_BFs15i_BFs15s()
{
  {
    init_simple_test("BFs15i_BFs15s_BFs15i_BFs15s");
    static STRUCT_IF_C BFs15i_BFs15s_BFs15i_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15s_BFs15i_BFs15s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFs15s_BFs15i_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15s_BFs15i_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFs15i_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFs15s_BFs15i_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFs15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15s_BFs15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFs15i_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15i_BFs15s_BFs15i_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFs15i_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15s_BFs15i_BFs15s, BFs15i_BFs15s_BFs15i_BFs15s)
//============================================================================


struct  BFs15i_BFs15s_BFs15i_BFu15i  {
  signed int v1:15;
  signed short v2:15;
  signed int v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15i_BFs15s_BFs15i_BFu15i) C1{ Fi:15 Fs:15 Fi:15 Fi:15}



static void Test_BFs15i_BFs15s_BFs15i_BFu15i()
{
  {
    init_simple_test("BFs15i_BFs15s_BFs15i_BFu15i");
    static STRUCT_IF_C BFs15i_BFs15s_BFs15i_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15s_BFs15i_BFu15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFs15s_BFs15i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15s_BFs15i_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFs15i_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFs15s_BFs15i_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFs15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15s_BFs15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFs15i_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFs15s_BFs15i_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15i_BFs15s_BFs15i_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15s_BFs15i_BFu15i, BFs15i_BFs15s_BFs15i_BFu15i)
//============================================================================


struct  BFs15i_BFs15s_BFs15i_BFu15ll  {
  signed int v1:15;
  signed short v2:15;
  signed int v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15i_BFs15s_BFs15i_BFu15ll) C1{ Fi:15 Fs:15 Fi:15 FL:15}



static void Test_BFs15i_BFs15s_BFs15i_BFu15ll()
{
  {
    init_simple_test("BFs15i_BFs15s_BFs15i_BFu15ll");
    static STRUCT_IF_C BFs15i_BFs15s_BFs15i_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15s_BFs15i_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15s_BFs15i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15s_BFs15i_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFs15i_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFs15s_BFs15i_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFs15i_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15s_BFs15i_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFs15i_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFs15s_BFs15i_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15i_BFs15s_BFs15i_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15s_BFs15i_BFu15ll, BFs15i_BFs15s_BFs15i_BFu15ll)
//============================================================================


struct  BFs15i_BFs15s_BFs15i_BFu15s  {
  signed int v1:15;
  signed short v2:15;
  signed int v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15i_BFs15s_BFs15i_BFu15s) C1{ Fi:15 Fs:15 Fi:15 Fs:15}



static void Test_BFs15i_BFs15s_BFs15i_BFu15s()
{
  {
    init_simple_test("BFs15i_BFs15s_BFs15i_BFu15s");
    static STRUCT_IF_C BFs15i_BFs15s_BFs15i_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15s_BFs15i_BFu15s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFs15s_BFs15i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15s_BFs15i_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFs15i_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFs15s_BFs15i_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFs15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15s_BFs15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFs15i_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15i_BFs15s_BFs15i_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15i_BFs15s_BFs15i_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15s_BFs15i_BFu15s, BFs15i_BFs15s_BFs15i_BFu15s)
//============================================================================


struct  BFs15i_BFs15s_BFs15ll  {
  signed int v1:15;
  signed short v2:15;
  signed __tsi64 v3:15;
};
//SIG(1 BFs15i_BFs15s_BFs15ll) C1{ Fi:15 Fs:15 FL:15}



static void Test_BFs15i_BFs15s_BFs15ll()
{
  {
    init_simple_test("BFs15i_BFs15s_BFs15ll");
    static STRUCT_IF_C BFs15i_BFs15s_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15s_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15s_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15s_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFs15s_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFs15ll");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15i_BFs15s_BFs15ll");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15s_BFs15ll, BFs15i_BFs15s_BFs15ll)
//============================================================================


struct  BFs15i_BFs15s_BFs15ll_BFs15i  {
  signed int v1:15;
  signed short v2:15;
  signed __tsi64 v3:15;
  signed int v4:15;
};
//SIG(1 BFs15i_BFs15s_BFs15ll_BFs15i) C1{ Fi:15 Fs:15 FL:15 Fi:15}



static void Test_BFs15i_BFs15s_BFs15ll_BFs15i()
{
  {
    init_simple_test("BFs15i_BFs15s_BFs15ll_BFs15i");
    static STRUCT_IF_C BFs15i_BFs15s_BFs15ll_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15s_BFs15ll_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15s_BFs15ll_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15s_BFs15ll_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFs15ll_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFs15s_BFs15ll_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFs15ll_BFs15i");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15i_BFs15s_BFs15ll_BFs15i");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFs15ll_BFs15i");
    set_bf_and_test(lv, v4, 5, 6, 15, 1, "BFs15i_BFs15s_BFs15ll_BFs15i");
    set_bf_and_test(lv, v4, 5, 6, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFs15ll_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15s_BFs15ll_BFs15i, BFs15i_BFs15s_BFs15ll_BFs15i)
//============================================================================


struct  BFs15i_BFs15s_BFs15ll_BFs15ll  {
  signed int v1:15;
  signed short v2:15;
  signed __tsi64 v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15i_BFs15s_BFs15ll_BFs15ll) C1{ Fi:15 Fs:15 FL:15 FL:15}



static void Test_BFs15i_BFs15s_BFs15ll_BFs15ll()
{
  {
    init_simple_test("BFs15i_BFs15s_BFs15ll_BFs15ll");
    static STRUCT_IF_C BFs15i_BFs15s_BFs15ll_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15s_BFs15ll_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15s_BFs15ll_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15s_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFs15s_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15i_BFs15s_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v4, 5, 6, 15, 1, "BFs15i_BFs15s_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v4, 5, 6, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFs15ll_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15s_BFs15ll_BFs15ll, BFs15i_BFs15s_BFs15ll_BFs15ll)
//============================================================================


struct  BFs15i_BFs15s_BFs15ll_BFs15s  {
  signed int v1:15;
  signed short v2:15;
  signed __tsi64 v3:15;
  signed short v4:15;
};
//SIG(1 BFs15i_BFs15s_BFs15ll_BFs15s) C1{ Fi:15 Fs:15 FL:15 Fs:15}



static void Test_BFs15i_BFs15s_BFs15ll_BFs15s()
{
  {
    init_simple_test("BFs15i_BFs15s_BFs15ll_BFs15s");
    static STRUCT_IF_C BFs15i_BFs15s_BFs15ll_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15s_BFs15ll_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15s_BFs15ll_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15s_BFs15ll_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFs15ll_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFs15s_BFs15ll_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFs15ll_BFs15s");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15i_BFs15s_BFs15ll_BFs15s");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFs15ll_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15i_BFs15s_BFs15ll_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFs15ll_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15s_BFs15ll_BFs15s, BFs15i_BFs15s_BFs15ll_BFs15s)
//============================================================================


struct  BFs15i_BFs15s_BFs15ll_BFu15i  {
  signed int v1:15;
  signed short v2:15;
  signed __tsi64 v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15i_BFs15s_BFs15ll_BFu15i) C1{ Fi:15 Fs:15 FL:15 Fi:15}



static void Test_BFs15i_BFs15s_BFs15ll_BFu15i()
{
  {
    init_simple_test("BFs15i_BFs15s_BFs15ll_BFu15i");
    static STRUCT_IF_C BFs15i_BFs15s_BFs15ll_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15s_BFs15ll_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15s_BFs15ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15s_BFs15ll_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFs15ll_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFs15s_BFs15ll_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFs15ll_BFu15i");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15i_BFs15s_BFs15ll_BFu15i");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFs15ll_BFu15i");
    set_bf_and_test(lv, v4, 5, 6, 15, 1, "BFs15i_BFs15s_BFs15ll_BFu15i");
    set_bf_and_test(lv, v4, 5, 6, 15, hide_ull(1LL<<14), "BFs15i_BFs15s_BFs15ll_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15s_BFs15ll_BFu15i, BFs15i_BFs15s_BFs15ll_BFu15i)
//============================================================================


struct  BFs15i_BFs15s_BFs15ll_BFu15ll  {
  signed int v1:15;
  signed short v2:15;
  signed __tsi64 v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15i_BFs15s_BFs15ll_BFu15ll) C1{ Fi:15 Fs:15 FL:15 FL:15}



static void Test_BFs15i_BFs15s_BFs15ll_BFu15ll()
{
  {
    init_simple_test("BFs15i_BFs15s_BFs15ll_BFu15ll");
    static STRUCT_IF_C BFs15i_BFs15s_BFs15ll_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15s_BFs15ll_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15s_BFs15ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15s_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFs15s_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15i_BFs15s_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v4, 5, 6, 15, 1, "BFs15i_BFs15s_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v4, 5, 6, 15, hide_ull(1LL<<14), "BFs15i_BFs15s_BFs15ll_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15s_BFs15ll_BFu15ll, BFs15i_BFs15s_BFs15ll_BFu15ll)
//============================================================================


struct  BFs15i_BFs15s_BFs15ll_BFu15s  {
  signed int v1:15;
  signed short v2:15;
  signed __tsi64 v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15i_BFs15s_BFs15ll_BFu15s) C1{ Fi:15 Fs:15 FL:15 Fs:15}



static void Test_BFs15i_BFs15s_BFs15ll_BFu15s()
{
  {
    init_simple_test("BFs15i_BFs15s_BFs15ll_BFu15s");
    static STRUCT_IF_C BFs15i_BFs15s_BFs15ll_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15s_BFs15ll_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15s_BFs15ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15s_BFs15ll_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFs15ll_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFs15s_BFs15ll_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFs15ll_BFu15s");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15i_BFs15s_BFs15ll_BFu15s");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFs15ll_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15i_BFs15s_BFs15ll_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15i_BFs15s_BFs15ll_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15s_BFs15ll_BFu15s, BFs15i_BFs15s_BFs15ll_BFu15s)
//============================================================================


struct  BFs15i_BFs15s_BFs15s  {
  signed int v1:15;
  signed short v2:15;
  signed short v3:15;
};
//SIG(1 BFs15i_BFs15s_BFs15s) C1{ Fi:15 Fs:15 Fs:15}



static void Test_BFs15i_BFs15s_BFs15s()
{
  {
    init_simple_test("BFs15i_BFs15s_BFs15s");
    static STRUCT_IF_C BFs15i_BFs15s_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15s_BFs15s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFs15s_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15s_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFs15s_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15s_BFs15s, BFs15i_BFs15s_BFs15s)
//============================================================================


struct  BFs15i_BFs15s_BFs15s_BFs15i  {
  signed int v1:15;
  signed short v2:15;
  signed short v3:15;
  signed int v4:15;
};
//SIG(1 BFs15i_BFs15s_BFs15s_BFs15i) C1{ Fi:15 Fs:15 Fs:15 Fi:15}



static void Test_BFs15i_BFs15s_BFs15s_BFs15i()
{
  {
    init_simple_test("BFs15i_BFs15s_BFs15s_BFs15i");
    static STRUCT_IF_C BFs15i_BFs15s_BFs15s_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15s_BFs15s_BFs15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFs15s_BFs15s_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15s_BFs15s_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFs15s_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFs15s_BFs15s_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFs15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15s_BFs15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFs15s_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFs15s_BFs15s_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFs15s_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15s_BFs15s_BFs15i, BFs15i_BFs15s_BFs15s_BFs15i)
//============================================================================


struct  BFs15i_BFs15s_BFs15s_BFs15ll  {
  signed int v1:15;
  signed short v2:15;
  signed short v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15i_BFs15s_BFs15s_BFs15ll) C1{ Fi:15 Fs:15 Fs:15 FL:15}



static void Test_BFs15i_BFs15s_BFs15s_BFs15ll()
{
  {
    init_simple_test("BFs15i_BFs15s_BFs15s_BFs15ll");
    static STRUCT_IF_C BFs15i_BFs15s_BFs15s_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15s_BFs15s_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15s_BFs15s_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15s_BFs15s_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFs15s_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFs15s_BFs15s_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFs15s_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15s_BFs15s_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFs15s_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFs15s_BFs15s_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFs15s_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15s_BFs15s_BFs15ll, BFs15i_BFs15s_BFs15s_BFs15ll)
//============================================================================


struct  BFs15i_BFs15s_BFs15s_BFs15s  {
  signed int v1:15;
  signed short v2:15;
  signed short v3:15;
  signed short v4:15;
};
//SIG(1 BFs15i_BFs15s_BFs15s_BFs15s) C1{ Fi:15 Fs:15 Fs:15 Fs:15}



static void Test_BFs15i_BFs15s_BFs15s_BFs15s()
{
  {
    init_simple_test("BFs15i_BFs15s_BFs15s_BFs15s");
    static STRUCT_IF_C BFs15i_BFs15s_BFs15s_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15s_BFs15s_BFs15s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFs15s_BFs15s_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15s_BFs15s_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFs15s_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFs15s_BFs15s_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFs15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15s_BFs15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFs15s_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15i_BFs15s_BFs15s_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFs15s_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15s_BFs15s_BFs15s, BFs15i_BFs15s_BFs15s_BFs15s)
//============================================================================


struct  BFs15i_BFs15s_BFs15s_BFu15i  {
  signed int v1:15;
  signed short v2:15;
  signed short v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15i_BFs15s_BFs15s_BFu15i) C1{ Fi:15 Fs:15 Fs:15 Fi:15}



static void Test_BFs15i_BFs15s_BFs15s_BFu15i()
{
  {
    init_simple_test("BFs15i_BFs15s_BFs15s_BFu15i");
    static STRUCT_IF_C BFs15i_BFs15s_BFs15s_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15s_BFs15s_BFu15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFs15s_BFs15s_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15s_BFs15s_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFs15s_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFs15s_BFs15s_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFs15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15s_BFs15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFs15s_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFs15s_BFs15s_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15i_BFs15s_BFs15s_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15s_BFs15s_BFu15i, BFs15i_BFs15s_BFs15s_BFu15i)
//============================================================================


struct  BFs15i_BFs15s_BFs15s_BFu15ll  {
  signed int v1:15;
  signed short v2:15;
  signed short v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15i_BFs15s_BFs15s_BFu15ll) C1{ Fi:15 Fs:15 Fs:15 FL:15}



static void Test_BFs15i_BFs15s_BFs15s_BFu15ll()
{
  {
    init_simple_test("BFs15i_BFs15s_BFs15s_BFu15ll");
    static STRUCT_IF_C BFs15i_BFs15s_BFs15s_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15s_BFs15s_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15s_BFs15s_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15s_BFs15s_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFs15s_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFs15s_BFs15s_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFs15s_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15s_BFs15s_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFs15s_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFs15s_BFs15s_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15i_BFs15s_BFs15s_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15s_BFs15s_BFu15ll, BFs15i_BFs15s_BFs15s_BFu15ll)
//============================================================================


struct  BFs15i_BFs15s_BFs15s_BFu15s  {
  signed int v1:15;
  signed short v2:15;
  signed short v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15i_BFs15s_BFs15s_BFu15s) C1{ Fi:15 Fs:15 Fs:15 Fs:15}



static void Test_BFs15i_BFs15s_BFs15s_BFu15s()
{
  {
    init_simple_test("BFs15i_BFs15s_BFs15s_BFu15s");
    static STRUCT_IF_C BFs15i_BFs15s_BFs15s_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15s_BFs15s_BFu15s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFs15s_BFs15s_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15s_BFs15s_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFs15s_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFs15s_BFs15s_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFs15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15s_BFs15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFs15s_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15i_BFs15s_BFs15s_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15i_BFs15s_BFs15s_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15s_BFs15s_BFu15s, BFs15i_BFs15s_BFs15s_BFu15s)
//============================================================================


struct  BFs15i_BFs15s_BFu15i  {
  signed int v1:15;
  signed short v2:15;
  unsigned int v3:15;
};
//SIG(1 BFs15i_BFs15s_BFu15i) C1{ Fi:15 Fs:15 Fi:15}



static void Test_BFs15i_BFs15s_BFu15i()
{
  {
    init_simple_test("BFs15i_BFs15s_BFu15i");
    static STRUCT_IF_C BFs15i_BFs15s_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15s_BFu15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFs15s_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15s_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFs15s_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFs15s_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15s_BFu15i, BFs15i_BFs15s_BFu15i)
//============================================================================


struct  BFs15i_BFs15s_BFu15i_BFs15i  {
  signed int v1:15;
  signed short v2:15;
  unsigned int v3:15;
  signed int v4:15;
};
//SIG(1 BFs15i_BFs15s_BFu15i_BFs15i) C1{ Fi:15 Fs:15 Fi:15 Fi:15}



static void Test_BFs15i_BFs15s_BFu15i_BFs15i()
{
  {
    init_simple_test("BFs15i_BFs15s_BFu15i_BFs15i");
    static STRUCT_IF_C BFs15i_BFs15s_BFu15i_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15s_BFu15i_BFs15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFs15s_BFu15i_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15s_BFu15i_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFu15i_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFs15s_BFu15i_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFu15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15s_BFu15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFs15s_BFu15i_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFs15s_BFu15i_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFu15i_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15s_BFu15i_BFs15i, BFs15i_BFs15s_BFu15i_BFs15i)
//============================================================================


struct  BFs15i_BFs15s_BFu15i_BFs15ll  {
  signed int v1:15;
  signed short v2:15;
  unsigned int v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15i_BFs15s_BFu15i_BFs15ll) C1{ Fi:15 Fs:15 Fi:15 FL:15}



static void Test_BFs15i_BFs15s_BFu15i_BFs15ll()
{
  {
    init_simple_test("BFs15i_BFs15s_BFu15i_BFs15ll");
    static STRUCT_IF_C BFs15i_BFs15s_BFu15i_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15s_BFu15i_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15s_BFu15i_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15s_BFu15i_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFu15i_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFs15s_BFu15i_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFu15i_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15s_BFu15i_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFs15s_BFu15i_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFs15s_BFu15i_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFu15i_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15s_BFu15i_BFs15ll, BFs15i_BFs15s_BFu15i_BFs15ll)
//============================================================================


struct  BFs15i_BFs15s_BFu15i_BFs15s  {
  signed int v1:15;
  signed short v2:15;
  unsigned int v3:15;
  signed short v4:15;
};
//SIG(1 BFs15i_BFs15s_BFu15i_BFs15s) C1{ Fi:15 Fs:15 Fi:15 Fs:15}



static void Test_BFs15i_BFs15s_BFu15i_BFs15s()
{
  {
    init_simple_test("BFs15i_BFs15s_BFu15i_BFs15s");
    static STRUCT_IF_C BFs15i_BFs15s_BFu15i_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15s_BFu15i_BFs15s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFs15s_BFu15i_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15s_BFu15i_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFu15i_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFs15s_BFu15i_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFu15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15s_BFu15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFs15s_BFu15i_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15i_BFs15s_BFu15i_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFu15i_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15s_BFu15i_BFs15s, BFs15i_BFs15s_BFu15i_BFs15s)
//============================================================================


struct  BFs15i_BFs15s_BFu15i_BFu15i  {
  signed int v1:15;
  signed short v2:15;
  unsigned int v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15i_BFs15s_BFu15i_BFu15i) C1{ Fi:15 Fs:15 Fi:15 Fi:15}



static void Test_BFs15i_BFs15s_BFu15i_BFu15i()
{
  {
    init_simple_test("BFs15i_BFs15s_BFu15i_BFu15i");
    static STRUCT_IF_C BFs15i_BFs15s_BFu15i_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15s_BFu15i_BFu15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFs15s_BFu15i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15s_BFu15i_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFu15i_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFs15s_BFu15i_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFu15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15s_BFu15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFs15s_BFu15i_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFs15s_BFu15i_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15i_BFs15s_BFu15i_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15s_BFu15i_BFu15i, BFs15i_BFs15s_BFu15i_BFu15i)
//============================================================================


struct  BFs15i_BFs15s_BFu15i_BFu15ll  {
  signed int v1:15;
  signed short v2:15;
  unsigned int v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15i_BFs15s_BFu15i_BFu15ll) C1{ Fi:15 Fs:15 Fi:15 FL:15}



static void Test_BFs15i_BFs15s_BFu15i_BFu15ll()
{
  {
    init_simple_test("BFs15i_BFs15s_BFu15i_BFu15ll");
    static STRUCT_IF_C BFs15i_BFs15s_BFu15i_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15s_BFu15i_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15s_BFu15i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15s_BFu15i_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFu15i_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFs15s_BFu15i_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFu15i_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15s_BFu15i_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFs15s_BFu15i_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFs15s_BFu15i_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15i_BFs15s_BFu15i_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15s_BFu15i_BFu15ll, BFs15i_BFs15s_BFu15i_BFu15ll)
//============================================================================


struct  BFs15i_BFs15s_BFu15i_BFu15s  {
  signed int v1:15;
  signed short v2:15;
  unsigned int v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15i_BFs15s_BFu15i_BFu15s) C1{ Fi:15 Fs:15 Fi:15 Fs:15}



static void Test_BFs15i_BFs15s_BFu15i_BFu15s()
{
  {
    init_simple_test("BFs15i_BFs15s_BFu15i_BFu15s");
    static STRUCT_IF_C BFs15i_BFs15s_BFu15i_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15s_BFu15i_BFu15s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFs15s_BFu15i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15s_BFu15i_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFu15i_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFs15s_BFu15i_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFu15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15s_BFu15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFs15s_BFu15i_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15i_BFs15s_BFu15i_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15i_BFs15s_BFu15i_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15s_BFu15i_BFu15s, BFs15i_BFs15s_BFu15i_BFu15s)
//============================================================================


struct  BFs15i_BFs15s_BFu15ll  {
  signed int v1:15;
  signed short v2:15;
  __tsu64 v3:15;
};
//SIG(1 BFs15i_BFs15s_BFu15ll) C1{ Fi:15 Fs:15 FL:15}



static void Test_BFs15i_BFs15s_BFu15ll()
{
  {
    init_simple_test("BFs15i_BFs15s_BFu15ll");
    static STRUCT_IF_C BFs15i_BFs15s_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15s_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15s_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15s_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFs15s_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFu15ll");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15i_BFs15s_BFu15ll");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_ull(1LL<<14), "BFs15i_BFs15s_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15s_BFu15ll, BFs15i_BFs15s_BFu15ll)
//============================================================================


struct  BFs15i_BFs15s_BFu15ll_BFs15i  {
  signed int v1:15;
  signed short v2:15;
  __tsu64 v3:15;
  signed int v4:15;
};
//SIG(1 BFs15i_BFs15s_BFu15ll_BFs15i) C1{ Fi:15 Fs:15 FL:15 Fi:15}



static void Test_BFs15i_BFs15s_BFu15ll_BFs15i()
{
  {
    init_simple_test("BFs15i_BFs15s_BFu15ll_BFs15i");
    static STRUCT_IF_C BFs15i_BFs15s_BFu15ll_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15s_BFu15ll_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15s_BFu15ll_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15s_BFu15ll_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFu15ll_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFs15s_BFu15ll_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFu15ll_BFs15i");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15i_BFs15s_BFu15ll_BFs15i");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_ull(1LL<<14), "BFs15i_BFs15s_BFu15ll_BFs15i");
    set_bf_and_test(lv, v4, 5, 6, 15, 1, "BFs15i_BFs15s_BFu15ll_BFs15i");
    set_bf_and_test(lv, v4, 5, 6, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFu15ll_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15s_BFu15ll_BFs15i, BFs15i_BFs15s_BFu15ll_BFs15i)
//============================================================================


struct  BFs15i_BFs15s_BFu15ll_BFs15ll  {
  signed int v1:15;
  signed short v2:15;
  __tsu64 v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15i_BFs15s_BFu15ll_BFs15ll) C1{ Fi:15 Fs:15 FL:15 FL:15}



static void Test_BFs15i_BFs15s_BFu15ll_BFs15ll()
{
  {
    init_simple_test("BFs15i_BFs15s_BFu15ll_BFs15ll");
    static STRUCT_IF_C BFs15i_BFs15s_BFu15ll_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15s_BFu15ll_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15s_BFu15ll_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15s_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFs15s_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15i_BFs15s_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_ull(1LL<<14), "BFs15i_BFs15s_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v4, 5, 6, 15, 1, "BFs15i_BFs15s_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v4, 5, 6, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFu15ll_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15s_BFu15ll_BFs15ll, BFs15i_BFs15s_BFu15ll_BFs15ll)
//============================================================================


struct  BFs15i_BFs15s_BFu15ll_BFs15s  {
  signed int v1:15;
  signed short v2:15;
  __tsu64 v3:15;
  signed short v4:15;
};
//SIG(1 BFs15i_BFs15s_BFu15ll_BFs15s) C1{ Fi:15 Fs:15 FL:15 Fs:15}



static void Test_BFs15i_BFs15s_BFu15ll_BFs15s()
{
  {
    init_simple_test("BFs15i_BFs15s_BFu15ll_BFs15s");
    static STRUCT_IF_C BFs15i_BFs15s_BFu15ll_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15s_BFu15ll_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15s_BFu15ll_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15s_BFu15ll_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFu15ll_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFs15s_BFu15ll_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFu15ll_BFs15s");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15i_BFs15s_BFu15ll_BFs15s");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_ull(1LL<<14), "BFs15i_BFs15s_BFu15ll_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15i_BFs15s_BFu15ll_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFu15ll_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15s_BFu15ll_BFs15s, BFs15i_BFs15s_BFu15ll_BFs15s)
//============================================================================


struct  BFs15i_BFs15s_BFu15ll_BFu15i  {
  signed int v1:15;
  signed short v2:15;
  __tsu64 v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15i_BFs15s_BFu15ll_BFu15i) C1{ Fi:15 Fs:15 FL:15 Fi:15}



static void Test_BFs15i_BFs15s_BFu15ll_BFu15i()
{
  {
    init_simple_test("BFs15i_BFs15s_BFu15ll_BFu15i");
    static STRUCT_IF_C BFs15i_BFs15s_BFu15ll_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15s_BFu15ll_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15s_BFu15ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15s_BFu15ll_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFu15ll_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFs15s_BFu15ll_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFu15ll_BFu15i");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15i_BFs15s_BFu15ll_BFu15i");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_ull(1LL<<14), "BFs15i_BFs15s_BFu15ll_BFu15i");
    set_bf_and_test(lv, v4, 5, 6, 15, 1, "BFs15i_BFs15s_BFu15ll_BFu15i");
    set_bf_and_test(lv, v4, 5, 6, 15, hide_ull(1LL<<14), "BFs15i_BFs15s_BFu15ll_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15s_BFu15ll_BFu15i, BFs15i_BFs15s_BFu15ll_BFu15i)
//============================================================================


struct  BFs15i_BFs15s_BFu15ll_BFu15ll  {
  signed int v1:15;
  signed short v2:15;
  __tsu64 v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15i_BFs15s_BFu15ll_BFu15ll) C1{ Fi:15 Fs:15 FL:15 FL:15}



static void Test_BFs15i_BFs15s_BFu15ll_BFu15ll()
{
  {
    init_simple_test("BFs15i_BFs15s_BFu15ll_BFu15ll");
    static STRUCT_IF_C BFs15i_BFs15s_BFu15ll_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15s_BFu15ll_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15s_BFu15ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15s_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFs15s_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15i_BFs15s_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_ull(1LL<<14), "BFs15i_BFs15s_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v4, 5, 6, 15, 1, "BFs15i_BFs15s_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v4, 5, 6, 15, hide_ull(1LL<<14), "BFs15i_BFs15s_BFu15ll_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15s_BFu15ll_BFu15ll, BFs15i_BFs15s_BFu15ll_BFu15ll)
//============================================================================


struct  BFs15i_BFs15s_BFu15ll_BFu15s  {
  signed int v1:15;
  signed short v2:15;
  __tsu64 v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15i_BFs15s_BFu15ll_BFu15s) C1{ Fi:15 Fs:15 FL:15 Fs:15}



static void Test_BFs15i_BFs15s_BFu15ll_BFu15s()
{
  {
    init_simple_test("BFs15i_BFs15s_BFu15ll_BFu15s");
    static STRUCT_IF_C BFs15i_BFs15s_BFu15ll_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15s_BFu15ll_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15s_BFu15ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15s_BFu15ll_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFu15ll_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFs15s_BFu15ll_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFu15ll_BFu15s");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15i_BFs15s_BFu15ll_BFu15s");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_ull(1LL<<14), "BFs15i_BFs15s_BFu15ll_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15i_BFs15s_BFu15ll_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15i_BFs15s_BFu15ll_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15s_BFu15ll_BFu15s, BFs15i_BFs15s_BFu15ll_BFu15s)
//============================================================================


struct  BFs15i_BFs15s_BFu15s  {
  signed int v1:15;
  signed short v2:15;
  unsigned short v3:15;
};
//SIG(1 BFs15i_BFs15s_BFu15s) C1{ Fi:15 Fs:15 Fs:15}



static void Test_BFs15i_BFs15s_BFu15s()
{
  {
    init_simple_test("BFs15i_BFs15s_BFu15s");
    static STRUCT_IF_C BFs15i_BFs15s_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15s_BFu15s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFs15s_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15s_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFs15s_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFs15s_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15s_BFu15s, BFs15i_BFs15s_BFu15s)
//============================================================================


struct  BFs15i_BFs15s_BFu15s_BFs15i  {
  signed int v1:15;
  signed short v2:15;
  unsigned short v3:15;
  signed int v4:15;
};
//SIG(1 BFs15i_BFs15s_BFu15s_BFs15i) C1{ Fi:15 Fs:15 Fs:15 Fi:15}



static void Test_BFs15i_BFs15s_BFu15s_BFs15i()
{
  {
    init_simple_test("BFs15i_BFs15s_BFu15s_BFs15i");
    static STRUCT_IF_C BFs15i_BFs15s_BFu15s_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15s_BFu15s_BFs15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFs15s_BFu15s_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15s_BFu15s_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFu15s_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFs15s_BFu15s_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFu15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15s_BFu15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFs15s_BFu15s_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFs15s_BFu15s_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFu15s_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15s_BFu15s_BFs15i, BFs15i_BFs15s_BFu15s_BFs15i)
//============================================================================


struct  BFs15i_BFs15s_BFu15s_BFs15ll  {
  signed int v1:15;
  signed short v2:15;
  unsigned short v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15i_BFs15s_BFu15s_BFs15ll) C1{ Fi:15 Fs:15 Fs:15 FL:15}



static void Test_BFs15i_BFs15s_BFu15s_BFs15ll()
{
  {
    init_simple_test("BFs15i_BFs15s_BFu15s_BFs15ll");
    static STRUCT_IF_C BFs15i_BFs15s_BFu15s_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15s_BFu15s_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15s_BFu15s_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15s_BFu15s_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFu15s_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFs15s_BFu15s_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFu15s_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15s_BFu15s_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFs15s_BFu15s_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFs15s_BFu15s_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFu15s_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15s_BFu15s_BFs15ll, BFs15i_BFs15s_BFu15s_BFs15ll)
//============================================================================


struct  BFs15i_BFs15s_BFu15s_BFs15s  {
  signed int v1:15;
  signed short v2:15;
  unsigned short v3:15;
  signed short v4:15;
};
//SIG(1 BFs15i_BFs15s_BFu15s_BFs15s) C1{ Fi:15 Fs:15 Fs:15 Fs:15}



static void Test_BFs15i_BFs15s_BFu15s_BFs15s()
{
  {
    init_simple_test("BFs15i_BFs15s_BFu15s_BFs15s");
    static STRUCT_IF_C BFs15i_BFs15s_BFu15s_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15s_BFu15s_BFs15s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFs15s_BFu15s_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15s_BFu15s_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFu15s_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFs15s_BFu15s_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFu15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15s_BFu15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFs15s_BFu15s_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15i_BFs15s_BFu15s_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFu15s_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15s_BFu15s_BFs15s, BFs15i_BFs15s_BFu15s_BFs15s)
//============================================================================


struct  BFs15i_BFs15s_BFu15s_BFu15i  {
  signed int v1:15;
  signed short v2:15;
  unsigned short v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15i_BFs15s_BFu15s_BFu15i) C1{ Fi:15 Fs:15 Fs:15 Fi:15}



static void Test_BFs15i_BFs15s_BFu15s_BFu15i()
{
  {
    init_simple_test("BFs15i_BFs15s_BFu15s_BFu15i");
    static STRUCT_IF_C BFs15i_BFs15s_BFu15s_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15s_BFu15s_BFu15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFs15s_BFu15s_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15s_BFu15s_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFu15s_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFs15s_BFu15s_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFu15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15s_BFu15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFs15s_BFu15s_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFs15s_BFu15s_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15i_BFs15s_BFu15s_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15s_BFu15s_BFu15i, BFs15i_BFs15s_BFu15s_BFu15i)
//============================================================================


struct  BFs15i_BFs15s_BFu15s_BFu15ll  {
  signed int v1:15;
  signed short v2:15;
  unsigned short v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15i_BFs15s_BFu15s_BFu15ll) C1{ Fi:15 Fs:15 Fs:15 FL:15}



static void Test_BFs15i_BFs15s_BFu15s_BFu15ll()
{
  {
    init_simple_test("BFs15i_BFs15s_BFu15s_BFu15ll");
    static STRUCT_IF_C BFs15i_BFs15s_BFu15s_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15s_BFu15s_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFs15s_BFu15s_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15s_BFu15s_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFu15s_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFs15s_BFu15s_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFu15s_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15s_BFu15s_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFs15s_BFu15s_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFs15s_BFu15s_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15i_BFs15s_BFu15s_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15s_BFu15s_BFu15ll, BFs15i_BFs15s_BFu15s_BFu15ll)
//============================================================================


struct  BFs15i_BFs15s_BFu15s_BFu15s  {
  signed int v1:15;
  signed short v2:15;
  unsigned short v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15i_BFs15s_BFu15s_BFu15s) C1{ Fi:15 Fs:15 Fs:15 Fs:15}



static void Test_BFs15i_BFs15s_BFu15s_BFu15s()
{
  {
    init_simple_test("BFs15i_BFs15s_BFu15s_BFu15s");
    static STRUCT_IF_C BFs15i_BFs15s_BFu15s_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFs15s_BFu15s_BFu15s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFs15s_BFu15s_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFs15s_BFu15s_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFu15s_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFs15s_BFu15s_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15i_BFs15s_BFu15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFs15s_BFu15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFs15s_BFu15s_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15i_BFs15s_BFu15s_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15i_BFs15s_BFu15s_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFs15s_BFu15s_BFu15s, BFs15i_BFs15s_BFu15s_BFu15s)
//============================================================================


struct  BFs15i_BFu15i  {
  signed int v1:15;
  unsigned int v2:15;
};
//SIG(1 BFs15i_BFu15i) C1{ Fi:15 Fi:15}



static void Test_BFs15i_BFu15i()
{
  {
    init_simple_test("BFs15i_BFu15i");
    static STRUCT_IF_C BFs15i_BFu15i lv;
    check2(sizeof(lv), 4, "sizeof(BFs15i_BFu15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15i, BFs15i_BFu15i)
//============================================================================


struct  BFs15i_BFu15i_BFs15i  {
  signed int v1:15;
  unsigned int v2:15;
  signed int v3:15;
};
//SIG(1 BFs15i_BFu15i_BFs15i) C1{ Fi:15 Fi:15 Fi:15}



static void Test_BFs15i_BFu15i_BFs15i()
{
  {
    init_simple_test("BFs15i_BFu15i_BFs15i");
    static STRUCT_IF_C BFs15i_BFu15i_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15i_BFs15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFu15i_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15i_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15i_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15i_BFs15i, BFs15i_BFu15i_BFs15i)
//============================================================================


struct  BFs15i_BFu15i_BFs15i_BFs15i  {
  signed int v1:15;
  unsigned int v2:15;
  signed int v3:15;
  signed int v4:15;
};
//SIG(1 BFs15i_BFu15i_BFs15i_BFs15i) C1{ Fi:15 Fi:15 Fi:15 Fi:15}



static void Test_BFs15i_BFu15i_BFs15i_BFs15i()
{
  {
    init_simple_test("BFs15i_BFu15i_BFs15i_BFs15i");
    static STRUCT_IF_C BFs15i_BFu15i_BFs15i_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15i_BFs15i_BFs15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFu15i_BFs15i_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15i_BFs15i_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFs15i_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15i_BFs15i_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFs15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15i_BFs15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFs15i_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFu15i_BFs15i_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFs15i_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15i_BFs15i_BFs15i, BFs15i_BFu15i_BFs15i_BFs15i)
//============================================================================


struct  BFs15i_BFu15i_BFs15i_BFs15ll  {
  signed int v1:15;
  unsigned int v2:15;
  signed int v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15i_BFu15i_BFs15i_BFs15ll) C1{ Fi:15 Fi:15 Fi:15 FL:15}



static void Test_BFs15i_BFu15i_BFs15i_BFs15ll()
{
  {
    init_simple_test("BFs15i_BFu15i_BFs15i_BFs15ll");
    static STRUCT_IF_C BFs15i_BFu15i_BFs15i_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15i_BFs15i_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15i_BFs15i_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15i_BFs15i_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFs15i_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15i_BFs15i_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFs15i_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15i_BFs15i_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFs15i_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFu15i_BFs15i_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFs15i_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15i_BFs15i_BFs15ll, BFs15i_BFu15i_BFs15i_BFs15ll)
//============================================================================


struct  BFs15i_BFu15i_BFs15i_BFs15s  {
  signed int v1:15;
  unsigned int v2:15;
  signed int v3:15;
  signed short v4:15;
};
//SIG(1 BFs15i_BFu15i_BFs15i_BFs15s) C1{ Fi:15 Fi:15 Fi:15 Fs:15}



static void Test_BFs15i_BFu15i_BFs15i_BFs15s()
{
  {
    init_simple_test("BFs15i_BFu15i_BFs15i_BFs15s");
    static STRUCT_IF_C BFs15i_BFu15i_BFs15i_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15i_BFs15i_BFs15s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFu15i_BFs15i_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15i_BFs15i_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFs15i_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15i_BFs15i_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFs15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15i_BFs15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFs15i_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15i_BFu15i_BFs15i_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFs15i_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15i_BFs15i_BFs15s, BFs15i_BFu15i_BFs15i_BFs15s)
//============================================================================


struct  BFs15i_BFu15i_BFs15i_BFu15i  {
  signed int v1:15;
  unsigned int v2:15;
  signed int v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15i_BFu15i_BFs15i_BFu15i) C1{ Fi:15 Fi:15 Fi:15 Fi:15}



static void Test_BFs15i_BFu15i_BFs15i_BFu15i()
{
  {
    init_simple_test("BFs15i_BFu15i_BFs15i_BFu15i");
    static STRUCT_IF_C BFs15i_BFu15i_BFs15i_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15i_BFs15i_BFu15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFu15i_BFs15i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15i_BFs15i_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFs15i_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15i_BFs15i_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFs15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15i_BFs15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFs15i_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFu15i_BFs15i_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFs15i_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15i_BFs15i_BFu15i, BFs15i_BFu15i_BFs15i_BFu15i)
//============================================================================


struct  BFs15i_BFu15i_BFs15i_BFu15ll  {
  signed int v1:15;
  unsigned int v2:15;
  signed int v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15i_BFu15i_BFs15i_BFu15ll) C1{ Fi:15 Fi:15 Fi:15 FL:15}



static void Test_BFs15i_BFu15i_BFs15i_BFu15ll()
{
  {
    init_simple_test("BFs15i_BFu15i_BFs15i_BFu15ll");
    static STRUCT_IF_C BFs15i_BFu15i_BFs15i_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15i_BFs15i_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15i_BFs15i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15i_BFs15i_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFs15i_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15i_BFs15i_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFs15i_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15i_BFs15i_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFs15i_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFu15i_BFs15i_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFs15i_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15i_BFs15i_BFu15ll, BFs15i_BFu15i_BFs15i_BFu15ll)
//============================================================================


struct  BFs15i_BFu15i_BFs15i_BFu15s  {
  signed int v1:15;
  unsigned int v2:15;
  signed int v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15i_BFu15i_BFs15i_BFu15s) C1{ Fi:15 Fi:15 Fi:15 Fs:15}



static void Test_BFs15i_BFu15i_BFs15i_BFu15s()
{
  {
    init_simple_test("BFs15i_BFu15i_BFs15i_BFu15s");
    static STRUCT_IF_C BFs15i_BFu15i_BFs15i_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15i_BFs15i_BFu15s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFu15i_BFs15i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15i_BFs15i_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFs15i_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15i_BFs15i_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFs15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15i_BFs15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFs15i_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15i_BFu15i_BFs15i_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFs15i_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15i_BFs15i_BFu15s, BFs15i_BFu15i_BFs15i_BFu15s)
//============================================================================


struct  BFs15i_BFu15i_BFs15ll  {
  signed int v1:15;
  unsigned int v2:15;
  signed __tsi64 v3:15;
};
//SIG(1 BFs15i_BFu15i_BFs15ll) C1{ Fi:15 Fi:15 FL:15}



static void Test_BFs15i_BFu15i_BFs15ll()
{
  {
    init_simple_test("BFs15i_BFu15i_BFs15ll");
    static STRUCT_IF_C BFs15i_BFu15i_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15i_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15i_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15i_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15i_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFs15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15i_BFu15i_BFs15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15i_BFs15ll, BFs15i_BFu15i_BFs15ll)
//============================================================================


struct  BFs15i_BFu15i_BFs15ll_BFs15i  {
  signed int v1:15;
  unsigned int v2:15;
  signed __tsi64 v3:15;
  signed int v4:15;
};
//SIG(1 BFs15i_BFu15i_BFs15ll_BFs15i) C1{ Fi:15 Fi:15 FL:15 Fi:15}



static void Test_BFs15i_BFu15i_BFs15ll_BFs15i()
{
  {
    init_simple_test("BFs15i_BFu15i_BFs15ll_BFs15i");
    static STRUCT_IF_C BFs15i_BFu15i_BFs15ll_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15i_BFs15ll_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15i_BFs15ll_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15i_BFs15ll_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFs15ll_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15i_BFs15ll_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFs15ll_BFs15i");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15i_BFu15i_BFs15ll_BFs15i");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFs15ll_BFs15i");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15i_BFu15i_BFs15ll_BFs15i");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFs15ll_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15i_BFs15ll_BFs15i, BFs15i_BFu15i_BFs15ll_BFs15i)
//============================================================================


struct  BFs15i_BFu15i_BFs15ll_BFs15ll  {
  signed int v1:15;
  unsigned int v2:15;
  signed __tsi64 v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15i_BFu15i_BFs15ll_BFs15ll) C1{ Fi:15 Fi:15 FL:15 FL:15}



static void Test_BFs15i_BFu15i_BFs15ll_BFs15ll()
{
  {
    init_simple_test("BFs15i_BFu15i_BFs15ll_BFs15ll");
    static STRUCT_IF_C BFs15i_BFu15i_BFs15ll_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15i_BFs15ll_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15i_BFs15ll_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15i_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15i_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15i_BFu15i_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15i_BFu15i_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFs15ll_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15i_BFs15ll_BFs15ll, BFs15i_BFu15i_BFs15ll_BFs15ll)
//============================================================================


struct  BFs15i_BFu15i_BFs15ll_BFs15s  {
  signed int v1:15;
  unsigned int v2:15;
  signed __tsi64 v3:15;
  signed short v4:15;
};
//SIG(1 BFs15i_BFu15i_BFs15ll_BFs15s) C1{ Fi:15 Fi:15 FL:15 Fs:15}



static void Test_BFs15i_BFu15i_BFs15ll_BFs15s()
{
  {
    init_simple_test("BFs15i_BFu15i_BFs15ll_BFs15s");
    static STRUCT_IF_C BFs15i_BFu15i_BFs15ll_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15i_BFs15ll_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15i_BFs15ll_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15i_BFs15ll_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFs15ll_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15i_BFs15ll_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFs15ll_BFs15s");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15i_BFu15i_BFs15ll_BFs15s");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFs15ll_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15i_BFu15i_BFs15ll_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFs15ll_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15i_BFs15ll_BFs15s, BFs15i_BFu15i_BFs15ll_BFs15s)
//============================================================================


struct  BFs15i_BFu15i_BFs15ll_BFu15i  {
  signed int v1:15;
  unsigned int v2:15;
  signed __tsi64 v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15i_BFu15i_BFs15ll_BFu15i) C1{ Fi:15 Fi:15 FL:15 Fi:15}



static void Test_BFs15i_BFu15i_BFs15ll_BFu15i()
{
  {
    init_simple_test("BFs15i_BFu15i_BFs15ll_BFu15i");
    static STRUCT_IF_C BFs15i_BFu15i_BFs15ll_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15i_BFs15ll_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15i_BFs15ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15i_BFs15ll_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFs15ll_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15i_BFs15ll_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFs15ll_BFu15i");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15i_BFu15i_BFs15ll_BFu15i");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFs15ll_BFu15i");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15i_BFu15i_BFs15ll_BFu15i");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFs15ll_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15i_BFs15ll_BFu15i, BFs15i_BFu15i_BFs15ll_BFu15i)
//============================================================================


struct  BFs15i_BFu15i_BFs15ll_BFu15ll  {
  signed int v1:15;
  unsigned int v2:15;
  signed __tsi64 v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15i_BFu15i_BFs15ll_BFu15ll) C1{ Fi:15 Fi:15 FL:15 FL:15}



static void Test_BFs15i_BFu15i_BFs15ll_BFu15ll()
{
  {
    init_simple_test("BFs15i_BFu15i_BFs15ll_BFu15ll");
    static STRUCT_IF_C BFs15i_BFu15i_BFs15ll_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15i_BFs15ll_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15i_BFs15ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15i_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15i_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15i_BFu15i_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15i_BFu15i_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFs15ll_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15i_BFs15ll_BFu15ll, BFs15i_BFu15i_BFs15ll_BFu15ll)
//============================================================================


struct  BFs15i_BFu15i_BFs15ll_BFu15s  {
  signed int v1:15;
  unsigned int v2:15;
  signed __tsi64 v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15i_BFu15i_BFs15ll_BFu15s) C1{ Fi:15 Fi:15 FL:15 Fs:15}



static void Test_BFs15i_BFu15i_BFs15ll_BFu15s()
{
  {
    init_simple_test("BFs15i_BFu15i_BFs15ll_BFu15s");
    static STRUCT_IF_C BFs15i_BFu15i_BFs15ll_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15i_BFs15ll_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15i_BFs15ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15i_BFs15ll_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFs15ll_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15i_BFs15ll_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFs15ll_BFu15s");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15i_BFu15i_BFs15ll_BFu15s");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFs15ll_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15i_BFu15i_BFs15ll_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFs15ll_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15i_BFs15ll_BFu15s, BFs15i_BFu15i_BFs15ll_BFu15s)
//============================================================================


struct  BFs15i_BFu15i_BFs15s  {
  signed int v1:15;
  unsigned int v2:15;
  signed short v3:15;
};
//SIG(1 BFs15i_BFu15i_BFs15s) C1{ Fi:15 Fi:15 Fs:15}



static void Test_BFs15i_BFu15i_BFs15s()
{
  {
    init_simple_test("BFs15i_BFu15i_BFs15s");
    static STRUCT_IF_C BFs15i_BFu15i_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15i_BFs15s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFu15i_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15i_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15i_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15i_BFs15s, BFs15i_BFu15i_BFs15s)
//============================================================================


struct  BFs15i_BFu15i_BFs15s_BFs15i  {
  signed int v1:15;
  unsigned int v2:15;
  signed short v3:15;
  signed int v4:15;
};
//SIG(1 BFs15i_BFu15i_BFs15s_BFs15i) C1{ Fi:15 Fi:15 Fs:15 Fi:15}



static void Test_BFs15i_BFu15i_BFs15s_BFs15i()
{
  {
    init_simple_test("BFs15i_BFu15i_BFs15s_BFs15i");
    static STRUCT_IF_C BFs15i_BFu15i_BFs15s_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15i_BFs15s_BFs15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFu15i_BFs15s_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15i_BFs15s_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFs15s_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15i_BFs15s_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFs15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15i_BFs15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFs15s_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFu15i_BFs15s_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFs15s_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15i_BFs15s_BFs15i, BFs15i_BFu15i_BFs15s_BFs15i)
//============================================================================


struct  BFs15i_BFu15i_BFs15s_BFs15ll  {
  signed int v1:15;
  unsigned int v2:15;
  signed short v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15i_BFu15i_BFs15s_BFs15ll) C1{ Fi:15 Fi:15 Fs:15 FL:15}



static void Test_BFs15i_BFu15i_BFs15s_BFs15ll()
{
  {
    init_simple_test("BFs15i_BFu15i_BFs15s_BFs15ll");
    static STRUCT_IF_C BFs15i_BFu15i_BFs15s_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15i_BFs15s_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15i_BFs15s_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15i_BFs15s_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFs15s_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15i_BFs15s_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFs15s_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15i_BFs15s_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFs15s_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFu15i_BFs15s_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFs15s_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15i_BFs15s_BFs15ll, BFs15i_BFu15i_BFs15s_BFs15ll)
//============================================================================


struct  BFs15i_BFu15i_BFs15s_BFs15s  {
  signed int v1:15;
  unsigned int v2:15;
  signed short v3:15;
  signed short v4:15;
};
//SIG(1 BFs15i_BFu15i_BFs15s_BFs15s) C1{ Fi:15 Fi:15 Fs:15 Fs:15}



static void Test_BFs15i_BFu15i_BFs15s_BFs15s()
{
  {
    init_simple_test("BFs15i_BFu15i_BFs15s_BFs15s");
    static STRUCT_IF_C BFs15i_BFu15i_BFs15s_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15i_BFs15s_BFs15s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFu15i_BFs15s_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15i_BFs15s_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFs15s_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15i_BFs15s_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFs15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15i_BFs15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFs15s_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15i_BFu15i_BFs15s_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFs15s_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15i_BFs15s_BFs15s, BFs15i_BFu15i_BFs15s_BFs15s)
//============================================================================


struct  BFs15i_BFu15i_BFs15s_BFu15i  {
  signed int v1:15;
  unsigned int v2:15;
  signed short v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15i_BFu15i_BFs15s_BFu15i) C1{ Fi:15 Fi:15 Fs:15 Fi:15}



static void Test_BFs15i_BFu15i_BFs15s_BFu15i()
{
  {
    init_simple_test("BFs15i_BFu15i_BFs15s_BFu15i");
    static STRUCT_IF_C BFs15i_BFu15i_BFs15s_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15i_BFs15s_BFu15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFu15i_BFs15s_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15i_BFs15s_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFs15s_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15i_BFs15s_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFs15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15i_BFs15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFs15s_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFu15i_BFs15s_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFs15s_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15i_BFs15s_BFu15i, BFs15i_BFu15i_BFs15s_BFu15i)
//============================================================================


struct  BFs15i_BFu15i_BFs15s_BFu15ll  {
  signed int v1:15;
  unsigned int v2:15;
  signed short v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15i_BFu15i_BFs15s_BFu15ll) C1{ Fi:15 Fi:15 Fs:15 FL:15}



static void Test_BFs15i_BFu15i_BFs15s_BFu15ll()
{
  {
    init_simple_test("BFs15i_BFu15i_BFs15s_BFu15ll");
    static STRUCT_IF_C BFs15i_BFu15i_BFs15s_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15i_BFs15s_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15i_BFs15s_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15i_BFs15s_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFs15s_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15i_BFs15s_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFs15s_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15i_BFs15s_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFs15s_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFu15i_BFs15s_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFs15s_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15i_BFs15s_BFu15ll, BFs15i_BFu15i_BFs15s_BFu15ll)
//============================================================================


struct  BFs15i_BFu15i_BFs15s_BFu15s  {
  signed int v1:15;
  unsigned int v2:15;
  signed short v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15i_BFu15i_BFs15s_BFu15s) C1{ Fi:15 Fi:15 Fs:15 Fs:15}



static void Test_BFs15i_BFu15i_BFs15s_BFu15s()
{
  {
    init_simple_test("BFs15i_BFu15i_BFs15s_BFu15s");
    static STRUCT_IF_C BFs15i_BFu15i_BFs15s_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15i_BFs15s_BFu15s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFu15i_BFs15s_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15i_BFs15s_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFs15s_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15i_BFs15s_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFs15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15i_BFs15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFs15s_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15i_BFu15i_BFs15s_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFs15s_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15i_BFs15s_BFu15s, BFs15i_BFu15i_BFs15s_BFu15s)
//============================================================================


struct  BFs15i_BFu15i_BFu15i  {
  signed int v1:15;
  unsigned int v2:15;
  unsigned int v3:15;
};
//SIG(1 BFs15i_BFu15i_BFu15i) C1{ Fi:15 Fi:15 Fi:15}



static void Test_BFs15i_BFu15i_BFu15i()
{
  {
    init_simple_test("BFs15i_BFu15i_BFu15i");
    static STRUCT_IF_C BFs15i_BFu15i_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15i_BFu15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFu15i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15i_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15i_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15i_BFu15i, BFs15i_BFu15i_BFu15i)
//============================================================================


struct  BFs15i_BFu15i_BFu15i_BFs15i  {
  signed int v1:15;
  unsigned int v2:15;
  unsigned int v3:15;
  signed int v4:15;
};
//SIG(1 BFs15i_BFu15i_BFu15i_BFs15i) C1{ Fi:15 Fi:15 Fi:15 Fi:15}



static void Test_BFs15i_BFu15i_BFu15i_BFs15i()
{
  {
    init_simple_test("BFs15i_BFu15i_BFu15i_BFs15i");
    static STRUCT_IF_C BFs15i_BFu15i_BFu15i_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15i_BFu15i_BFs15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFu15i_BFu15i_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15i_BFu15i_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFu15i_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15i_BFu15i_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFu15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15i_BFu15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFu15i_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFu15i_BFu15i_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFu15i_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15i_BFu15i_BFs15i, BFs15i_BFu15i_BFu15i_BFs15i)
//============================================================================


struct  BFs15i_BFu15i_BFu15i_BFs15ll  {
  signed int v1:15;
  unsigned int v2:15;
  unsigned int v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15i_BFu15i_BFu15i_BFs15ll) C1{ Fi:15 Fi:15 Fi:15 FL:15}



static void Test_BFs15i_BFu15i_BFu15i_BFs15ll()
{
  {
    init_simple_test("BFs15i_BFu15i_BFu15i_BFs15ll");
    static STRUCT_IF_C BFs15i_BFu15i_BFu15i_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15i_BFu15i_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15i_BFu15i_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15i_BFu15i_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFu15i_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15i_BFu15i_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFu15i_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15i_BFu15i_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFu15i_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFu15i_BFu15i_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFu15i_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15i_BFu15i_BFs15ll, BFs15i_BFu15i_BFu15i_BFs15ll)
//============================================================================


struct  BFs15i_BFu15i_BFu15i_BFs15s  {
  signed int v1:15;
  unsigned int v2:15;
  unsigned int v3:15;
  signed short v4:15;
};
//SIG(1 BFs15i_BFu15i_BFu15i_BFs15s) C1{ Fi:15 Fi:15 Fi:15 Fs:15}



static void Test_BFs15i_BFu15i_BFu15i_BFs15s()
{
  {
    init_simple_test("BFs15i_BFu15i_BFu15i_BFs15s");
    static STRUCT_IF_C BFs15i_BFu15i_BFu15i_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15i_BFu15i_BFs15s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFu15i_BFu15i_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15i_BFu15i_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFu15i_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15i_BFu15i_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFu15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15i_BFu15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFu15i_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15i_BFu15i_BFu15i_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFu15i_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15i_BFu15i_BFs15s, BFs15i_BFu15i_BFu15i_BFs15s)
//============================================================================


struct  BFs15i_BFu15i_BFu15i_BFu15i  {
  signed int v1:15;
  unsigned int v2:15;
  unsigned int v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15i_BFu15i_BFu15i_BFu15i) C1{ Fi:15 Fi:15 Fi:15 Fi:15}



static void Test_BFs15i_BFu15i_BFu15i_BFu15i()
{
  {
    init_simple_test("BFs15i_BFu15i_BFu15i_BFu15i");
    static STRUCT_IF_C BFs15i_BFu15i_BFu15i_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15i_BFu15i_BFu15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFu15i_BFu15i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15i_BFu15i_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFu15i_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15i_BFu15i_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFu15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15i_BFu15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFu15i_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFu15i_BFu15i_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFu15i_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15i_BFu15i_BFu15i, BFs15i_BFu15i_BFu15i_BFu15i)
//============================================================================


struct  BFs15i_BFu15i_BFu15i_BFu15ll  {
  signed int v1:15;
  unsigned int v2:15;
  unsigned int v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15i_BFu15i_BFu15i_BFu15ll) C1{ Fi:15 Fi:15 Fi:15 FL:15}



static void Test_BFs15i_BFu15i_BFu15i_BFu15ll()
{
  {
    init_simple_test("BFs15i_BFu15i_BFu15i_BFu15ll");
    static STRUCT_IF_C BFs15i_BFu15i_BFu15i_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15i_BFu15i_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15i_BFu15i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15i_BFu15i_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFu15i_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15i_BFu15i_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFu15i_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15i_BFu15i_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFu15i_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFu15i_BFu15i_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFu15i_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15i_BFu15i_BFu15ll, BFs15i_BFu15i_BFu15i_BFu15ll)
//============================================================================


struct  BFs15i_BFu15i_BFu15i_BFu15s  {
  signed int v1:15;
  unsigned int v2:15;
  unsigned int v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15i_BFu15i_BFu15i_BFu15s) C1{ Fi:15 Fi:15 Fi:15 Fs:15}



static void Test_BFs15i_BFu15i_BFu15i_BFu15s()
{
  {
    init_simple_test("BFs15i_BFu15i_BFu15i_BFu15s");
    static STRUCT_IF_C BFs15i_BFu15i_BFu15i_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15i_BFu15i_BFu15s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFu15i_BFu15i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15i_BFu15i_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFu15i_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15i_BFu15i_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFu15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15i_BFu15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFu15i_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15i_BFu15i_BFu15i_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFu15i_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15i_BFu15i_BFu15s, BFs15i_BFu15i_BFu15i_BFu15s)
//============================================================================


struct  BFs15i_BFu15i_BFu15ll  {
  signed int v1:15;
  unsigned int v2:15;
  __tsu64 v3:15;
};
//SIG(1 BFs15i_BFu15i_BFu15ll) C1{ Fi:15 Fi:15 FL:15}



static void Test_BFs15i_BFu15i_BFu15ll()
{
  {
    init_simple_test("BFs15i_BFu15i_BFu15ll");
    static STRUCT_IF_C BFs15i_BFu15i_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15i_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15i_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15i_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFu15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15i_BFu15i_BFu15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15i_BFu15ll, BFs15i_BFu15i_BFu15ll)
//============================================================================


struct  BFs15i_BFu15i_BFu15ll_BFs15i  {
  signed int v1:15;
  unsigned int v2:15;
  __tsu64 v3:15;
  signed int v4:15;
};
//SIG(1 BFs15i_BFu15i_BFu15ll_BFs15i) C1{ Fi:15 Fi:15 FL:15 Fi:15}



static void Test_BFs15i_BFu15i_BFu15ll_BFs15i()
{
  {
    init_simple_test("BFs15i_BFu15i_BFu15ll_BFs15i");
    static STRUCT_IF_C BFs15i_BFu15i_BFu15ll_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15i_BFu15ll_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15i_BFu15ll_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15i_BFu15ll_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFu15ll_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15i_BFu15ll_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFu15ll_BFs15i");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15i_BFu15i_BFu15ll_BFs15i");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFu15ll_BFs15i");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15i_BFu15i_BFu15ll_BFs15i");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFu15ll_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15i_BFu15ll_BFs15i, BFs15i_BFu15i_BFu15ll_BFs15i)
//============================================================================


struct  BFs15i_BFu15i_BFu15ll_BFs15ll  {
  signed int v1:15;
  unsigned int v2:15;
  __tsu64 v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15i_BFu15i_BFu15ll_BFs15ll) C1{ Fi:15 Fi:15 FL:15 FL:15}



static void Test_BFs15i_BFu15i_BFu15ll_BFs15ll()
{
  {
    init_simple_test("BFs15i_BFu15i_BFu15ll_BFs15ll");
    static STRUCT_IF_C BFs15i_BFu15i_BFu15ll_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15i_BFu15ll_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15i_BFu15ll_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15i_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15i_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15i_BFu15i_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15i_BFu15i_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFu15ll_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15i_BFu15ll_BFs15ll, BFs15i_BFu15i_BFu15ll_BFs15ll)
//============================================================================


struct  BFs15i_BFu15i_BFu15ll_BFs15s  {
  signed int v1:15;
  unsigned int v2:15;
  __tsu64 v3:15;
  signed short v4:15;
};
//SIG(1 BFs15i_BFu15i_BFu15ll_BFs15s) C1{ Fi:15 Fi:15 FL:15 Fs:15}



static void Test_BFs15i_BFu15i_BFu15ll_BFs15s()
{
  {
    init_simple_test("BFs15i_BFu15i_BFu15ll_BFs15s");
    static STRUCT_IF_C BFs15i_BFu15i_BFu15ll_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15i_BFu15ll_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15i_BFu15ll_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15i_BFu15ll_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFu15ll_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15i_BFu15ll_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFu15ll_BFs15s");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15i_BFu15i_BFu15ll_BFs15s");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFu15ll_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15i_BFu15i_BFu15ll_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFu15ll_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15i_BFu15ll_BFs15s, BFs15i_BFu15i_BFu15ll_BFs15s)
//============================================================================


struct  BFs15i_BFu15i_BFu15ll_BFu15i  {
  signed int v1:15;
  unsigned int v2:15;
  __tsu64 v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15i_BFu15i_BFu15ll_BFu15i) C1{ Fi:15 Fi:15 FL:15 Fi:15}



static void Test_BFs15i_BFu15i_BFu15ll_BFu15i()
{
  {
    init_simple_test("BFs15i_BFu15i_BFu15ll_BFu15i");
    static STRUCT_IF_C BFs15i_BFu15i_BFu15ll_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15i_BFu15ll_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15i_BFu15ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15i_BFu15ll_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFu15ll_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15i_BFu15ll_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFu15ll_BFu15i");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15i_BFu15i_BFu15ll_BFu15i");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFu15ll_BFu15i");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15i_BFu15i_BFu15ll_BFu15i");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFu15ll_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15i_BFu15ll_BFu15i, BFs15i_BFu15i_BFu15ll_BFu15i)
//============================================================================


struct  BFs15i_BFu15i_BFu15ll_BFu15ll  {
  signed int v1:15;
  unsigned int v2:15;
  __tsu64 v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15i_BFu15i_BFu15ll_BFu15ll) C1{ Fi:15 Fi:15 FL:15 FL:15}



static void Test_BFs15i_BFu15i_BFu15ll_BFu15ll()
{
  {
    init_simple_test("BFs15i_BFu15i_BFu15ll_BFu15ll");
    static STRUCT_IF_C BFs15i_BFu15i_BFu15ll_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15i_BFu15ll_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15i_BFu15ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15i_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15i_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15i_BFu15i_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15i_BFu15i_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFu15ll_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15i_BFu15ll_BFu15ll, BFs15i_BFu15i_BFu15ll_BFu15ll)
//============================================================================


struct  BFs15i_BFu15i_BFu15ll_BFu15s  {
  signed int v1:15;
  unsigned int v2:15;
  __tsu64 v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15i_BFu15i_BFu15ll_BFu15s) C1{ Fi:15 Fi:15 FL:15 Fs:15}



static void Test_BFs15i_BFu15i_BFu15ll_BFu15s()
{
  {
    init_simple_test("BFs15i_BFu15i_BFu15ll_BFu15s");
    static STRUCT_IF_C BFs15i_BFu15i_BFu15ll_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15i_BFu15ll_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15i_BFu15ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15i_BFu15ll_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFu15ll_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15i_BFu15ll_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFu15ll_BFu15s");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15i_BFu15i_BFu15ll_BFu15s");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFu15ll_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15i_BFu15i_BFu15ll_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFu15ll_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15i_BFu15ll_BFu15s, BFs15i_BFu15i_BFu15ll_BFu15s)
//============================================================================


struct  BFs15i_BFu15i_BFu15s  {
  signed int v1:15;
  unsigned int v2:15;
  unsigned short v3:15;
};
//SIG(1 BFs15i_BFu15i_BFu15s) C1{ Fi:15 Fi:15 Fs:15}



static void Test_BFs15i_BFu15i_BFu15s()
{
  {
    init_simple_test("BFs15i_BFu15i_BFu15s");
    static STRUCT_IF_C BFs15i_BFu15i_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15i_BFu15s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFu15i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15i_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15i_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15i_BFu15s, BFs15i_BFu15i_BFu15s)
//============================================================================


struct  BFs15i_BFu15i_BFu15s_BFs15i  {
  signed int v1:15;
  unsigned int v2:15;
  unsigned short v3:15;
  signed int v4:15;
};
//SIG(1 BFs15i_BFu15i_BFu15s_BFs15i) C1{ Fi:15 Fi:15 Fs:15 Fi:15}



static void Test_BFs15i_BFu15i_BFu15s_BFs15i()
{
  {
    init_simple_test("BFs15i_BFu15i_BFu15s_BFs15i");
    static STRUCT_IF_C BFs15i_BFu15i_BFu15s_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15i_BFu15s_BFs15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFu15i_BFu15s_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15i_BFu15s_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFu15s_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15i_BFu15s_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFu15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15i_BFu15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFu15s_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFu15i_BFu15s_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFu15s_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15i_BFu15s_BFs15i, BFs15i_BFu15i_BFu15s_BFs15i)
//============================================================================


struct  BFs15i_BFu15i_BFu15s_BFs15ll  {
  signed int v1:15;
  unsigned int v2:15;
  unsigned short v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15i_BFu15i_BFu15s_BFs15ll) C1{ Fi:15 Fi:15 Fs:15 FL:15}



static void Test_BFs15i_BFu15i_BFu15s_BFs15ll()
{
  {
    init_simple_test("BFs15i_BFu15i_BFu15s_BFs15ll");
    static STRUCT_IF_C BFs15i_BFu15i_BFu15s_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15i_BFu15s_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15i_BFu15s_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15i_BFu15s_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFu15s_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15i_BFu15s_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFu15s_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15i_BFu15s_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFu15s_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFu15i_BFu15s_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFu15s_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15i_BFu15s_BFs15ll, BFs15i_BFu15i_BFu15s_BFs15ll)
//============================================================================


struct  BFs15i_BFu15i_BFu15s_BFs15s  {
  signed int v1:15;
  unsigned int v2:15;
  unsigned short v3:15;
  signed short v4:15;
};
//SIG(1 BFs15i_BFu15i_BFu15s_BFs15s) C1{ Fi:15 Fi:15 Fs:15 Fs:15}



static void Test_BFs15i_BFu15i_BFu15s_BFs15s()
{
  {
    init_simple_test("BFs15i_BFu15i_BFu15s_BFs15s");
    static STRUCT_IF_C BFs15i_BFu15i_BFu15s_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15i_BFu15s_BFs15s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFu15i_BFu15s_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15i_BFu15s_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFu15s_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15i_BFu15s_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFu15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15i_BFu15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFu15s_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15i_BFu15i_BFu15s_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFu15s_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15i_BFu15s_BFs15s, BFs15i_BFu15i_BFu15s_BFs15s)
//============================================================================


struct  BFs15i_BFu15i_BFu15s_BFu15i  {
  signed int v1:15;
  unsigned int v2:15;
  unsigned short v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15i_BFu15i_BFu15s_BFu15i) C1{ Fi:15 Fi:15 Fs:15 Fi:15}



static void Test_BFs15i_BFu15i_BFu15s_BFu15i()
{
  {
    init_simple_test("BFs15i_BFu15i_BFu15s_BFu15i");
    static STRUCT_IF_C BFs15i_BFu15i_BFu15s_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15i_BFu15s_BFu15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFu15i_BFu15s_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15i_BFu15s_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFu15s_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15i_BFu15s_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFu15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15i_BFu15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFu15s_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFu15i_BFu15s_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFu15s_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15i_BFu15s_BFu15i, BFs15i_BFu15i_BFu15s_BFu15i)
//============================================================================


struct  BFs15i_BFu15i_BFu15s_BFu15ll  {
  signed int v1:15;
  unsigned int v2:15;
  unsigned short v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15i_BFu15i_BFu15s_BFu15ll) C1{ Fi:15 Fi:15 Fs:15 FL:15}



static void Test_BFs15i_BFu15i_BFu15s_BFu15ll()
{
  {
    init_simple_test("BFs15i_BFu15i_BFu15s_BFu15ll");
    static STRUCT_IF_C BFs15i_BFu15i_BFu15s_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15i_BFu15s_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15i_BFu15s_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15i_BFu15s_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFu15s_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15i_BFu15s_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFu15s_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15i_BFu15s_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFu15s_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFu15i_BFu15s_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFu15s_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15i_BFu15s_BFu15ll, BFs15i_BFu15i_BFu15s_BFu15ll)
//============================================================================


struct  BFs15i_BFu15i_BFu15s_BFu15s  {
  signed int v1:15;
  unsigned int v2:15;
  unsigned short v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15i_BFu15i_BFu15s_BFu15s) C1{ Fi:15 Fi:15 Fs:15 Fs:15}



static void Test_BFs15i_BFu15i_BFu15s_BFu15s()
{
  {
    init_simple_test("BFs15i_BFu15i_BFu15s_BFu15s");
    static STRUCT_IF_C BFs15i_BFu15i_BFu15s_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15i_BFu15s_BFu15s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFu15i_BFu15s_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15i_BFu15s_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15i_BFu15s_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15i_BFu15s_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFu15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15i_BFu15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFu15s_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15i_BFu15i_BFu15s_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15i_BFu15s_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15i_BFu15s_BFu15s, BFs15i_BFu15i_BFu15s_BFu15s)
//============================================================================


struct  BFs15i_BFu15ll  {
  signed int v1:15;
  __tsu64 v2:15;
};
//SIG(1 BFs15i_BFu15ll) C1{ Fi:15 FL:15}



static void Test_BFs15i_BFu15ll()
{
  {
    init_simple_test("BFs15i_BFu15ll");
    static STRUCT_IF_C BFs15i_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs15i_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15ll, BFs15i_BFu15ll)
//============================================================================


struct  BFs15i_BFu15ll_BFs15i  {
  signed int v1:15;
  __tsu64 v2:15;
  signed int v3:15;
};
//SIG(1 BFs15i_BFu15ll_BFs15i) C1{ Fi:15 FL:15 Fi:15}



static void Test_BFs15i_BFu15ll_BFs15i()
{
  {
    init_simple_test("BFs15i_BFu15ll_BFs15i");
    static STRUCT_IF_C BFs15i_BFu15ll_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15ll_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15ll_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15ll_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15ll_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15ll_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15ll_BFs15i, BFs15i_BFu15ll_BFs15i)
//============================================================================


struct  BFs15i_BFu15ll_BFs15i_BFs15i  {
  signed int v1:15;
  __tsu64 v2:15;
  signed int v3:15;
  signed int v4:15;
};
//SIG(1 BFs15i_BFu15ll_BFs15i_BFs15i) C1{ Fi:15 FL:15 Fi:15 Fi:15}



static void Test_BFs15i_BFu15ll_BFs15i_BFs15i()
{
  {
    init_simple_test("BFs15i_BFu15ll_BFs15i_BFs15i");
    static STRUCT_IF_C BFs15i_BFu15ll_BFs15i_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15ll_BFs15i_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15ll_BFs15i_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15ll_BFs15i_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFs15i_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15ll_BFs15i_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFs15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15ll_BFs15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFs15i_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFu15ll_BFs15i_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFs15i_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15ll_BFs15i_BFs15i, BFs15i_BFu15ll_BFs15i_BFs15i)
//============================================================================


struct  BFs15i_BFu15ll_BFs15i_BFs15ll  {
  signed int v1:15;
  __tsu64 v2:15;
  signed int v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15i_BFu15ll_BFs15i_BFs15ll) C1{ Fi:15 FL:15 Fi:15 FL:15}



static void Test_BFs15i_BFu15ll_BFs15i_BFs15ll()
{
  {
    init_simple_test("BFs15i_BFu15ll_BFs15i_BFs15ll");
    static STRUCT_IF_C BFs15i_BFu15ll_BFs15i_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15ll_BFs15i_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15ll_BFs15i_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15ll_BFs15i_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFs15i_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15ll_BFs15i_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFs15i_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15ll_BFs15i_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFs15i_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFu15ll_BFs15i_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFs15i_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15ll_BFs15i_BFs15ll, BFs15i_BFu15ll_BFs15i_BFs15ll)
//============================================================================


struct  BFs15i_BFu15ll_BFs15i_BFs15s  {
  signed int v1:15;
  __tsu64 v2:15;
  signed int v3:15;
  signed short v4:15;
};
//SIG(1 BFs15i_BFu15ll_BFs15i_BFs15s) C1{ Fi:15 FL:15 Fi:15 Fs:15}



static void Test_BFs15i_BFu15ll_BFs15i_BFs15s()
{
  {
    init_simple_test("BFs15i_BFu15ll_BFs15i_BFs15s");
    static STRUCT_IF_C BFs15i_BFu15ll_BFs15i_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15ll_BFs15i_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15ll_BFs15i_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15ll_BFs15i_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFs15i_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15ll_BFs15i_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFs15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15ll_BFs15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFs15i_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15i_BFu15ll_BFs15i_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFs15i_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15ll_BFs15i_BFs15s, BFs15i_BFu15ll_BFs15i_BFs15s)
//============================================================================


struct  BFs15i_BFu15ll_BFs15i_BFu15i  {
  signed int v1:15;
  __tsu64 v2:15;
  signed int v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15i_BFu15ll_BFs15i_BFu15i) C1{ Fi:15 FL:15 Fi:15 Fi:15}



static void Test_BFs15i_BFu15ll_BFs15i_BFu15i()
{
  {
    init_simple_test("BFs15i_BFu15ll_BFs15i_BFu15i");
    static STRUCT_IF_C BFs15i_BFu15ll_BFs15i_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15ll_BFs15i_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15ll_BFs15i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15ll_BFs15i_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFs15i_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15ll_BFs15i_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFs15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15ll_BFs15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFs15i_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFu15ll_BFs15i_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFs15i_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15ll_BFs15i_BFu15i, BFs15i_BFu15ll_BFs15i_BFu15i)
//============================================================================


struct  BFs15i_BFu15ll_BFs15i_BFu15ll  {
  signed int v1:15;
  __tsu64 v2:15;
  signed int v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15i_BFu15ll_BFs15i_BFu15ll) C1{ Fi:15 FL:15 Fi:15 FL:15}



static void Test_BFs15i_BFu15ll_BFs15i_BFu15ll()
{
  {
    init_simple_test("BFs15i_BFu15ll_BFs15i_BFu15ll");
    static STRUCT_IF_C BFs15i_BFu15ll_BFs15i_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15ll_BFs15i_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15ll_BFs15i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15ll_BFs15i_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFs15i_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15ll_BFs15i_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFs15i_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15ll_BFs15i_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFs15i_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFu15ll_BFs15i_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFs15i_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15ll_BFs15i_BFu15ll, BFs15i_BFu15ll_BFs15i_BFu15ll)
//============================================================================


struct  BFs15i_BFu15ll_BFs15i_BFu15s  {
  signed int v1:15;
  __tsu64 v2:15;
  signed int v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15i_BFu15ll_BFs15i_BFu15s) C1{ Fi:15 FL:15 Fi:15 Fs:15}



static void Test_BFs15i_BFu15ll_BFs15i_BFu15s()
{
  {
    init_simple_test("BFs15i_BFu15ll_BFs15i_BFu15s");
    static STRUCT_IF_C BFs15i_BFu15ll_BFs15i_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15ll_BFs15i_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15ll_BFs15i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15ll_BFs15i_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFs15i_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15ll_BFs15i_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFs15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15ll_BFs15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFs15i_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15i_BFu15ll_BFs15i_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFs15i_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15ll_BFs15i_BFu15s, BFs15i_BFu15ll_BFs15i_BFu15s)
//============================================================================


struct  BFs15i_BFu15ll_BFs15ll  {
  signed int v1:15;
  __tsu64 v2:15;
  signed __tsi64 v3:15;
};
//SIG(1 BFs15i_BFu15ll_BFs15ll) C1{ Fi:15 FL:15 FL:15}



static void Test_BFs15i_BFu15ll_BFs15ll()
{
  {
    init_simple_test("BFs15i_BFu15ll_BFs15ll");
    static STRUCT_IF_C BFs15i_BFu15ll_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15ll_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15ll_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15i_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15ll_BFs15ll, BFs15i_BFu15ll_BFs15ll)
//============================================================================


struct  BFs15i_BFu15ll_BFs15ll_BFs15i  {
  signed int v1:15;
  __tsu64 v2:15;
  signed __tsi64 v3:15;
  signed int v4:15;
};
//SIG(1 BFs15i_BFu15ll_BFs15ll_BFs15i) C1{ Fi:15 FL:15 FL:15 Fi:15}



static void Test_BFs15i_BFu15ll_BFs15ll_BFs15i()
{
  {
    init_simple_test("BFs15i_BFu15ll_BFs15ll_BFs15i");
    static STRUCT_IF_C BFs15i_BFu15ll_BFs15ll_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15ll_BFs15ll_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15ll_BFs15ll_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15ll_BFs15ll_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFs15ll_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15ll_BFs15ll_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFs15ll_BFs15i");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15i_BFu15ll_BFs15ll_BFs15i");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFs15ll_BFs15i");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15i_BFu15ll_BFs15ll_BFs15i");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFs15ll_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15ll_BFs15ll_BFs15i, BFs15i_BFu15ll_BFs15ll_BFs15i)
//============================================================================


struct  BFs15i_BFu15ll_BFs15ll_BFs15ll  {
  signed int v1:15;
  __tsu64 v2:15;
  signed __tsi64 v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15i_BFu15ll_BFs15ll_BFs15ll) C1{ Fi:15 FL:15 FL:15 FL:15}



static void Test_BFs15i_BFu15ll_BFs15ll_BFs15ll()
{
  {
    init_simple_test("BFs15i_BFu15ll_BFs15ll_BFs15ll");
    static STRUCT_IF_C BFs15i_BFu15ll_BFs15ll_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15ll_BFs15ll_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15ll_BFs15ll_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15ll_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15ll_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15i_BFu15ll_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15i_BFu15ll_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFs15ll_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15ll_BFs15ll_BFs15ll, BFs15i_BFu15ll_BFs15ll_BFs15ll)
//============================================================================


struct  BFs15i_BFu15ll_BFs15ll_BFs15s  {
  signed int v1:15;
  __tsu64 v2:15;
  signed __tsi64 v3:15;
  signed short v4:15;
};
//SIG(1 BFs15i_BFu15ll_BFs15ll_BFs15s) C1{ Fi:15 FL:15 FL:15 Fs:15}



static void Test_BFs15i_BFu15ll_BFs15ll_BFs15s()
{
  {
    init_simple_test("BFs15i_BFu15ll_BFs15ll_BFs15s");
    static STRUCT_IF_C BFs15i_BFu15ll_BFs15ll_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15ll_BFs15ll_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15ll_BFs15ll_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15ll_BFs15ll_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFs15ll_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15ll_BFs15ll_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFs15ll_BFs15s");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15i_BFu15ll_BFs15ll_BFs15s");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFs15ll_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15i_BFu15ll_BFs15ll_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFs15ll_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15ll_BFs15ll_BFs15s, BFs15i_BFu15ll_BFs15ll_BFs15s)
//============================================================================


struct  BFs15i_BFu15ll_BFs15ll_BFu15i  {
  signed int v1:15;
  __tsu64 v2:15;
  signed __tsi64 v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15i_BFu15ll_BFs15ll_BFu15i) C1{ Fi:15 FL:15 FL:15 Fi:15}



static void Test_BFs15i_BFu15ll_BFs15ll_BFu15i()
{
  {
    init_simple_test("BFs15i_BFu15ll_BFs15ll_BFu15i");
    static STRUCT_IF_C BFs15i_BFu15ll_BFs15ll_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15ll_BFs15ll_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15ll_BFs15ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15ll_BFs15ll_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFs15ll_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15ll_BFs15ll_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFs15ll_BFu15i");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15i_BFu15ll_BFs15ll_BFu15i");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFs15ll_BFu15i");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15i_BFu15ll_BFs15ll_BFu15i");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFs15ll_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15ll_BFs15ll_BFu15i, BFs15i_BFu15ll_BFs15ll_BFu15i)
//============================================================================


struct  BFs15i_BFu15ll_BFs15ll_BFu15ll  {
  signed int v1:15;
  __tsu64 v2:15;
  signed __tsi64 v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15i_BFu15ll_BFs15ll_BFu15ll) C1{ Fi:15 FL:15 FL:15 FL:15}



static void Test_BFs15i_BFu15ll_BFs15ll_BFu15ll()
{
  {
    init_simple_test("BFs15i_BFu15ll_BFs15ll_BFu15ll");
    static STRUCT_IF_C BFs15i_BFu15ll_BFs15ll_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15ll_BFs15ll_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15ll_BFs15ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15ll_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15ll_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15i_BFu15ll_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15i_BFu15ll_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFs15ll_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15ll_BFs15ll_BFu15ll, BFs15i_BFu15ll_BFs15ll_BFu15ll)
//============================================================================


struct  BFs15i_BFu15ll_BFs15ll_BFu15s  {
  signed int v1:15;
  __tsu64 v2:15;
  signed __tsi64 v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15i_BFu15ll_BFs15ll_BFu15s) C1{ Fi:15 FL:15 FL:15 Fs:15}



static void Test_BFs15i_BFu15ll_BFs15ll_BFu15s()
{
  {
    init_simple_test("BFs15i_BFu15ll_BFs15ll_BFu15s");
    static STRUCT_IF_C BFs15i_BFu15ll_BFs15ll_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15ll_BFs15ll_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15ll_BFs15ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15ll_BFs15ll_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFs15ll_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15ll_BFs15ll_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFs15ll_BFu15s");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15i_BFu15ll_BFs15ll_BFu15s");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFs15ll_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15i_BFu15ll_BFs15ll_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFs15ll_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15ll_BFs15ll_BFu15s, BFs15i_BFu15ll_BFs15ll_BFu15s)
//============================================================================


struct  BFs15i_BFu15ll_BFs15s  {
  signed int v1:15;
  __tsu64 v2:15;
  signed short v3:15;
};
//SIG(1 BFs15i_BFu15ll_BFs15s) C1{ Fi:15 FL:15 Fs:15}



static void Test_BFs15i_BFu15ll_BFs15s()
{
  {
    init_simple_test("BFs15i_BFu15ll_BFs15s");
    static STRUCT_IF_C BFs15i_BFu15ll_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15ll_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15ll_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15ll_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15ll_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15ll_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15ll_BFs15s, BFs15i_BFu15ll_BFs15s)
//============================================================================


struct  BFs15i_BFu15ll_BFs15s_BFs15i  {
  signed int v1:15;
  __tsu64 v2:15;
  signed short v3:15;
  signed int v4:15;
};
//SIG(1 BFs15i_BFu15ll_BFs15s_BFs15i) C1{ Fi:15 FL:15 Fs:15 Fi:15}



static void Test_BFs15i_BFu15ll_BFs15s_BFs15i()
{
  {
    init_simple_test("BFs15i_BFu15ll_BFs15s_BFs15i");
    static STRUCT_IF_C BFs15i_BFu15ll_BFs15s_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15ll_BFs15s_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15ll_BFs15s_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15ll_BFs15s_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFs15s_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15ll_BFs15s_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFs15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15ll_BFs15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFs15s_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFu15ll_BFs15s_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFs15s_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15ll_BFs15s_BFs15i, BFs15i_BFu15ll_BFs15s_BFs15i)
//============================================================================


struct  BFs15i_BFu15ll_BFs15s_BFs15ll  {
  signed int v1:15;
  __tsu64 v2:15;
  signed short v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15i_BFu15ll_BFs15s_BFs15ll) C1{ Fi:15 FL:15 Fs:15 FL:15}



static void Test_BFs15i_BFu15ll_BFs15s_BFs15ll()
{
  {
    init_simple_test("BFs15i_BFu15ll_BFs15s_BFs15ll");
    static STRUCT_IF_C BFs15i_BFu15ll_BFs15s_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15ll_BFs15s_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15ll_BFs15s_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15ll_BFs15s_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFs15s_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15ll_BFs15s_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFs15s_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15ll_BFs15s_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFs15s_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFu15ll_BFs15s_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFs15s_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15ll_BFs15s_BFs15ll, BFs15i_BFu15ll_BFs15s_BFs15ll)
//============================================================================


struct  BFs15i_BFu15ll_BFs15s_BFs15s  {
  signed int v1:15;
  __tsu64 v2:15;
  signed short v3:15;
  signed short v4:15;
};
//SIG(1 BFs15i_BFu15ll_BFs15s_BFs15s) C1{ Fi:15 FL:15 Fs:15 Fs:15}



static void Test_BFs15i_BFu15ll_BFs15s_BFs15s()
{
  {
    init_simple_test("BFs15i_BFu15ll_BFs15s_BFs15s");
    static STRUCT_IF_C BFs15i_BFu15ll_BFs15s_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15ll_BFs15s_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15ll_BFs15s_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15ll_BFs15s_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFs15s_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15ll_BFs15s_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFs15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15ll_BFs15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFs15s_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15i_BFu15ll_BFs15s_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFs15s_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15ll_BFs15s_BFs15s, BFs15i_BFu15ll_BFs15s_BFs15s)
//============================================================================


struct  BFs15i_BFu15ll_BFs15s_BFu15i  {
  signed int v1:15;
  __tsu64 v2:15;
  signed short v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15i_BFu15ll_BFs15s_BFu15i) C1{ Fi:15 FL:15 Fs:15 Fi:15}



static void Test_BFs15i_BFu15ll_BFs15s_BFu15i()
{
  {
    init_simple_test("BFs15i_BFu15ll_BFs15s_BFu15i");
    static STRUCT_IF_C BFs15i_BFu15ll_BFs15s_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15ll_BFs15s_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15ll_BFs15s_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15ll_BFs15s_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFs15s_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15ll_BFs15s_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFs15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15ll_BFs15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFs15s_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFu15ll_BFs15s_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFs15s_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15ll_BFs15s_BFu15i, BFs15i_BFu15ll_BFs15s_BFu15i)
//============================================================================


struct  BFs15i_BFu15ll_BFs15s_BFu15ll  {
  signed int v1:15;
  __tsu64 v2:15;
  signed short v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15i_BFu15ll_BFs15s_BFu15ll) C1{ Fi:15 FL:15 Fs:15 FL:15}



static void Test_BFs15i_BFu15ll_BFs15s_BFu15ll()
{
  {
    init_simple_test("BFs15i_BFu15ll_BFs15s_BFu15ll");
    static STRUCT_IF_C BFs15i_BFu15ll_BFs15s_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15ll_BFs15s_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15ll_BFs15s_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15ll_BFs15s_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFs15s_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15ll_BFs15s_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFs15s_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15ll_BFs15s_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFs15s_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFu15ll_BFs15s_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFs15s_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15ll_BFs15s_BFu15ll, BFs15i_BFu15ll_BFs15s_BFu15ll)
//============================================================================


struct  BFs15i_BFu15ll_BFs15s_BFu15s  {
  signed int v1:15;
  __tsu64 v2:15;
  signed short v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15i_BFu15ll_BFs15s_BFu15s) C1{ Fi:15 FL:15 Fs:15 Fs:15}



static void Test_BFs15i_BFu15ll_BFs15s_BFu15s()
{
  {
    init_simple_test("BFs15i_BFu15ll_BFs15s_BFu15s");
    static STRUCT_IF_C BFs15i_BFu15ll_BFs15s_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15ll_BFs15s_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15ll_BFs15s_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15ll_BFs15s_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFs15s_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15ll_BFs15s_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFs15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15ll_BFs15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFs15s_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15i_BFu15ll_BFs15s_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFs15s_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15ll_BFs15s_BFu15s, BFs15i_BFu15ll_BFs15s_BFu15s)
//============================================================================


struct  BFs15i_BFu15ll_BFu15i  {
  signed int v1:15;
  __tsu64 v2:15;
  unsigned int v3:15;
};
//SIG(1 BFs15i_BFu15ll_BFu15i) C1{ Fi:15 FL:15 Fi:15}



static void Test_BFs15i_BFu15ll_BFu15i()
{
  {
    init_simple_test("BFs15i_BFu15ll_BFu15i");
    static STRUCT_IF_C BFs15i_BFu15ll_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15ll_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15ll_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15ll_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15ll_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15ll_BFu15i, BFs15i_BFu15ll_BFu15i)
//============================================================================


struct  BFs15i_BFu15ll_BFu15i_BFs15i  {
  signed int v1:15;
  __tsu64 v2:15;
  unsigned int v3:15;
  signed int v4:15;
};
//SIG(1 BFs15i_BFu15ll_BFu15i_BFs15i) C1{ Fi:15 FL:15 Fi:15 Fi:15}



static void Test_BFs15i_BFu15ll_BFu15i_BFs15i()
{
  {
    init_simple_test("BFs15i_BFu15ll_BFu15i_BFs15i");
    static STRUCT_IF_C BFs15i_BFu15ll_BFu15i_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15ll_BFu15i_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15ll_BFu15i_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15ll_BFu15i_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFu15i_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15ll_BFu15i_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFu15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15ll_BFu15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFu15i_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFu15ll_BFu15i_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFu15i_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15ll_BFu15i_BFs15i, BFs15i_BFu15ll_BFu15i_BFs15i)
//============================================================================


struct  BFs15i_BFu15ll_BFu15i_BFs15ll  {
  signed int v1:15;
  __tsu64 v2:15;
  unsigned int v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15i_BFu15ll_BFu15i_BFs15ll) C1{ Fi:15 FL:15 Fi:15 FL:15}



static void Test_BFs15i_BFu15ll_BFu15i_BFs15ll()
{
  {
    init_simple_test("BFs15i_BFu15ll_BFu15i_BFs15ll");
    static STRUCT_IF_C BFs15i_BFu15ll_BFu15i_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15ll_BFu15i_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15ll_BFu15i_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15ll_BFu15i_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFu15i_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15ll_BFu15i_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFu15i_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15ll_BFu15i_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFu15i_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFu15ll_BFu15i_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFu15i_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15ll_BFu15i_BFs15ll, BFs15i_BFu15ll_BFu15i_BFs15ll)
//============================================================================


struct  BFs15i_BFu15ll_BFu15i_BFs15s  {
  signed int v1:15;
  __tsu64 v2:15;
  unsigned int v3:15;
  signed short v4:15;
};
//SIG(1 BFs15i_BFu15ll_BFu15i_BFs15s) C1{ Fi:15 FL:15 Fi:15 Fs:15}



static void Test_BFs15i_BFu15ll_BFu15i_BFs15s()
{
  {
    init_simple_test("BFs15i_BFu15ll_BFu15i_BFs15s");
    static STRUCT_IF_C BFs15i_BFu15ll_BFu15i_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15ll_BFu15i_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15ll_BFu15i_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15ll_BFu15i_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFu15i_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15ll_BFu15i_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFu15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15ll_BFu15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFu15i_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15i_BFu15ll_BFu15i_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFu15i_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15ll_BFu15i_BFs15s, BFs15i_BFu15ll_BFu15i_BFs15s)
//============================================================================


struct  BFs15i_BFu15ll_BFu15i_BFu15i  {
  signed int v1:15;
  __tsu64 v2:15;
  unsigned int v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15i_BFu15ll_BFu15i_BFu15i) C1{ Fi:15 FL:15 Fi:15 Fi:15}



static void Test_BFs15i_BFu15ll_BFu15i_BFu15i()
{
  {
    init_simple_test("BFs15i_BFu15ll_BFu15i_BFu15i");
    static STRUCT_IF_C BFs15i_BFu15ll_BFu15i_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15ll_BFu15i_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15ll_BFu15i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15ll_BFu15i_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFu15i_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15ll_BFu15i_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFu15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15ll_BFu15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFu15i_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFu15ll_BFu15i_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFu15i_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15ll_BFu15i_BFu15i, BFs15i_BFu15ll_BFu15i_BFu15i)
//============================================================================


struct  BFs15i_BFu15ll_BFu15i_BFu15ll  {
  signed int v1:15;
  __tsu64 v2:15;
  unsigned int v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15i_BFu15ll_BFu15i_BFu15ll) C1{ Fi:15 FL:15 Fi:15 FL:15}



static void Test_BFs15i_BFu15ll_BFu15i_BFu15ll()
{
  {
    init_simple_test("BFs15i_BFu15ll_BFu15i_BFu15ll");
    static STRUCT_IF_C BFs15i_BFu15ll_BFu15i_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15ll_BFu15i_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15ll_BFu15i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15ll_BFu15i_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFu15i_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15ll_BFu15i_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFu15i_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15ll_BFu15i_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFu15i_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFu15ll_BFu15i_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFu15i_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15ll_BFu15i_BFu15ll, BFs15i_BFu15ll_BFu15i_BFu15ll)
//============================================================================


struct  BFs15i_BFu15ll_BFu15i_BFu15s  {
  signed int v1:15;
  __tsu64 v2:15;
  unsigned int v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15i_BFu15ll_BFu15i_BFu15s) C1{ Fi:15 FL:15 Fi:15 Fs:15}



static void Test_BFs15i_BFu15ll_BFu15i_BFu15s()
{
  {
    init_simple_test("BFs15i_BFu15ll_BFu15i_BFu15s");
    static STRUCT_IF_C BFs15i_BFu15ll_BFu15i_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15ll_BFu15i_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15ll_BFu15i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15ll_BFu15i_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFu15i_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15ll_BFu15i_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFu15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15ll_BFu15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFu15i_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15i_BFu15ll_BFu15i_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFu15i_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15ll_BFu15i_BFu15s, BFs15i_BFu15ll_BFu15i_BFu15s)
//============================================================================


struct  BFs15i_BFu15ll_BFu15ll  {
  signed int v1:15;
  __tsu64 v2:15;
  __tsu64 v3:15;
};
//SIG(1 BFs15i_BFu15ll_BFu15ll) C1{ Fi:15 FL:15 FL:15}



static void Test_BFs15i_BFu15ll_BFu15ll()
{
  {
    init_simple_test("BFs15i_BFu15ll_BFu15ll");
    static STRUCT_IF_C BFs15i_BFu15ll_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15ll_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15i_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15ll_BFu15ll, BFs15i_BFu15ll_BFu15ll)
//============================================================================


struct  BFs15i_BFu15ll_BFu15ll_BFs15i  {
  signed int v1:15;
  __tsu64 v2:15;
  __tsu64 v3:15;
  signed int v4:15;
};
//SIG(1 BFs15i_BFu15ll_BFu15ll_BFs15i) C1{ Fi:15 FL:15 FL:15 Fi:15}



static void Test_BFs15i_BFu15ll_BFu15ll_BFs15i()
{
  {
    init_simple_test("BFs15i_BFu15ll_BFu15ll_BFs15i");
    static STRUCT_IF_C BFs15i_BFu15ll_BFu15ll_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15ll_BFu15ll_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15ll_BFu15ll_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15ll_BFu15ll_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFu15ll_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15ll_BFu15ll_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFu15ll_BFs15i");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15i_BFu15ll_BFu15ll_BFs15i");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFu15ll_BFs15i");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15i_BFu15ll_BFu15ll_BFs15i");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFu15ll_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15ll_BFu15ll_BFs15i, BFs15i_BFu15ll_BFu15ll_BFs15i)
//============================================================================


struct  BFs15i_BFu15ll_BFu15ll_BFs15ll  {
  signed int v1:15;
  __tsu64 v2:15;
  __tsu64 v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15i_BFu15ll_BFu15ll_BFs15ll) C1{ Fi:15 FL:15 FL:15 FL:15}



static void Test_BFs15i_BFu15ll_BFu15ll_BFs15ll()
{
  {
    init_simple_test("BFs15i_BFu15ll_BFu15ll_BFs15ll");
    static STRUCT_IF_C BFs15i_BFu15ll_BFu15ll_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15ll_BFu15ll_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15ll_BFu15ll_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15ll_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15ll_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15i_BFu15ll_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15i_BFu15ll_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFu15ll_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15ll_BFu15ll_BFs15ll, BFs15i_BFu15ll_BFu15ll_BFs15ll)
//============================================================================


struct  BFs15i_BFu15ll_BFu15ll_BFs15s  {
  signed int v1:15;
  __tsu64 v2:15;
  __tsu64 v3:15;
  signed short v4:15;
};
//SIG(1 BFs15i_BFu15ll_BFu15ll_BFs15s) C1{ Fi:15 FL:15 FL:15 Fs:15}



static void Test_BFs15i_BFu15ll_BFu15ll_BFs15s()
{
  {
    init_simple_test("BFs15i_BFu15ll_BFu15ll_BFs15s");
    static STRUCT_IF_C BFs15i_BFu15ll_BFu15ll_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15ll_BFu15ll_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15ll_BFu15ll_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15ll_BFu15ll_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFu15ll_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15ll_BFu15ll_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFu15ll_BFs15s");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15i_BFu15ll_BFu15ll_BFs15s");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFu15ll_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15i_BFu15ll_BFu15ll_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFu15ll_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15ll_BFu15ll_BFs15s, BFs15i_BFu15ll_BFu15ll_BFs15s)
//============================================================================


struct  BFs15i_BFu15ll_BFu15ll_BFu15i  {
  signed int v1:15;
  __tsu64 v2:15;
  __tsu64 v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15i_BFu15ll_BFu15ll_BFu15i) C1{ Fi:15 FL:15 FL:15 Fi:15}



static void Test_BFs15i_BFu15ll_BFu15ll_BFu15i()
{
  {
    init_simple_test("BFs15i_BFu15ll_BFu15ll_BFu15i");
    static STRUCT_IF_C BFs15i_BFu15ll_BFu15ll_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15ll_BFu15ll_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15ll_BFu15ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15ll_BFu15ll_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFu15ll_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15ll_BFu15ll_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFu15ll_BFu15i");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15i_BFu15ll_BFu15ll_BFu15i");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFu15ll_BFu15i");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15i_BFu15ll_BFu15ll_BFu15i");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFu15ll_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15ll_BFu15ll_BFu15i, BFs15i_BFu15ll_BFu15ll_BFu15i)
//============================================================================


struct  BFs15i_BFu15ll_BFu15ll_BFu15ll  {
  signed int v1:15;
  __tsu64 v2:15;
  __tsu64 v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15i_BFu15ll_BFu15ll_BFu15ll) C1{ Fi:15 FL:15 FL:15 FL:15}



static void Test_BFs15i_BFu15ll_BFu15ll_BFu15ll()
{
  {
    init_simple_test("BFs15i_BFu15ll_BFu15ll_BFu15ll");
    static STRUCT_IF_C BFs15i_BFu15ll_BFu15ll_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15ll_BFu15ll_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15ll_BFu15ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15ll_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15ll_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15i_BFu15ll_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15i_BFu15ll_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFu15ll_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15ll_BFu15ll_BFu15ll, BFs15i_BFu15ll_BFu15ll_BFu15ll)
//============================================================================


struct  BFs15i_BFu15ll_BFu15ll_BFu15s  {
  signed int v1:15;
  __tsu64 v2:15;
  __tsu64 v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15i_BFu15ll_BFu15ll_BFu15s) C1{ Fi:15 FL:15 FL:15 Fs:15}



static void Test_BFs15i_BFu15ll_BFu15ll_BFu15s()
{
  {
    init_simple_test("BFs15i_BFu15ll_BFu15ll_BFu15s");
    static STRUCT_IF_C BFs15i_BFu15ll_BFu15ll_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15ll_BFu15ll_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15ll_BFu15ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15ll_BFu15ll_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFu15ll_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15ll_BFu15ll_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFu15ll_BFu15s");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15i_BFu15ll_BFu15ll_BFu15s");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFu15ll_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15i_BFu15ll_BFu15ll_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFu15ll_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15ll_BFu15ll_BFu15s, BFs15i_BFu15ll_BFu15ll_BFu15s)
//============================================================================


struct  BFs15i_BFu15ll_BFu15s  {
  signed int v1:15;
  __tsu64 v2:15;
  unsigned short v3:15;
};
//SIG(1 BFs15i_BFu15ll_BFu15s) C1{ Fi:15 FL:15 Fs:15}



static void Test_BFs15i_BFu15ll_BFu15s()
{
  {
    init_simple_test("BFs15i_BFu15ll_BFu15s");
    static STRUCT_IF_C BFs15i_BFu15ll_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15ll_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15ll_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15ll_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15ll_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15ll_BFu15s, BFs15i_BFu15ll_BFu15s)
//============================================================================


struct  BFs15i_BFu15ll_BFu15s_BFs15i  {
  signed int v1:15;
  __tsu64 v2:15;
  unsigned short v3:15;
  signed int v4:15;
};
//SIG(1 BFs15i_BFu15ll_BFu15s_BFs15i) C1{ Fi:15 FL:15 Fs:15 Fi:15}



static void Test_BFs15i_BFu15ll_BFu15s_BFs15i()
{
  {
    init_simple_test("BFs15i_BFu15ll_BFu15s_BFs15i");
    static STRUCT_IF_C BFs15i_BFu15ll_BFu15s_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15ll_BFu15s_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15ll_BFu15s_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15ll_BFu15s_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFu15s_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15ll_BFu15s_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFu15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15ll_BFu15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFu15s_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFu15ll_BFu15s_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFu15s_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15ll_BFu15s_BFs15i, BFs15i_BFu15ll_BFu15s_BFs15i)
//============================================================================


struct  BFs15i_BFu15ll_BFu15s_BFs15ll  {
  signed int v1:15;
  __tsu64 v2:15;
  unsigned short v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15i_BFu15ll_BFu15s_BFs15ll) C1{ Fi:15 FL:15 Fs:15 FL:15}



static void Test_BFs15i_BFu15ll_BFu15s_BFs15ll()
{
  {
    init_simple_test("BFs15i_BFu15ll_BFu15s_BFs15ll");
    static STRUCT_IF_C BFs15i_BFu15ll_BFu15s_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15ll_BFu15s_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15ll_BFu15s_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15ll_BFu15s_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFu15s_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15ll_BFu15s_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFu15s_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15ll_BFu15s_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFu15s_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFu15ll_BFu15s_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFu15s_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15ll_BFu15s_BFs15ll, BFs15i_BFu15ll_BFu15s_BFs15ll)
//============================================================================


struct  BFs15i_BFu15ll_BFu15s_BFs15s  {
  signed int v1:15;
  __tsu64 v2:15;
  unsigned short v3:15;
  signed short v4:15;
};
//SIG(1 BFs15i_BFu15ll_BFu15s_BFs15s) C1{ Fi:15 FL:15 Fs:15 Fs:15}



static void Test_BFs15i_BFu15ll_BFu15s_BFs15s()
{
  {
    init_simple_test("BFs15i_BFu15ll_BFu15s_BFs15s");
    static STRUCT_IF_C BFs15i_BFu15ll_BFu15s_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15ll_BFu15s_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15ll_BFu15s_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15ll_BFu15s_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFu15s_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15ll_BFu15s_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFu15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15ll_BFu15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFu15s_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15i_BFu15ll_BFu15s_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFu15s_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15ll_BFu15s_BFs15s, BFs15i_BFu15ll_BFu15s_BFs15s)
//============================================================================


struct  BFs15i_BFu15ll_BFu15s_BFu15i  {
  signed int v1:15;
  __tsu64 v2:15;
  unsigned short v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15i_BFu15ll_BFu15s_BFu15i) C1{ Fi:15 FL:15 Fs:15 Fi:15}



static void Test_BFs15i_BFu15ll_BFu15s_BFu15i()
{
  {
    init_simple_test("BFs15i_BFu15ll_BFu15s_BFu15i");
    static STRUCT_IF_C BFs15i_BFu15ll_BFu15s_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15ll_BFu15s_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15ll_BFu15s_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15ll_BFu15s_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFu15s_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15ll_BFu15s_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFu15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15ll_BFu15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFu15s_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFu15ll_BFu15s_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFu15s_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15ll_BFu15s_BFu15i, BFs15i_BFu15ll_BFu15s_BFu15i)
//============================================================================


struct  BFs15i_BFu15ll_BFu15s_BFu15ll  {
  signed int v1:15;
  __tsu64 v2:15;
  unsigned short v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15i_BFu15ll_BFu15s_BFu15ll) C1{ Fi:15 FL:15 Fs:15 FL:15}



static void Test_BFs15i_BFu15ll_BFu15s_BFu15ll()
{
  {
    init_simple_test("BFs15i_BFu15ll_BFu15s_BFu15ll");
    static STRUCT_IF_C BFs15i_BFu15ll_BFu15s_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15ll_BFu15s_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15ll_BFu15s_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15ll_BFu15s_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFu15s_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15ll_BFu15s_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFu15s_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15ll_BFu15s_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFu15s_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFu15ll_BFu15s_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFu15s_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15ll_BFu15s_BFu15ll, BFs15i_BFu15ll_BFu15s_BFu15ll)
//============================================================================


struct  BFs15i_BFu15ll_BFu15s_BFu15s  {
  signed int v1:15;
  __tsu64 v2:15;
  unsigned short v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15i_BFu15ll_BFu15s_BFu15s) C1{ Fi:15 FL:15 Fs:15 Fs:15}



static void Test_BFs15i_BFu15ll_BFu15s_BFu15s()
{
  {
    init_simple_test("BFs15i_BFu15ll_BFu15s_BFu15s");
    static STRUCT_IF_C BFs15i_BFu15ll_BFu15s_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15ll_BFu15s_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15ll_BFu15s_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15ll_BFu15s_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15ll_BFu15s_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15i_BFu15ll_BFu15s_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFu15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15ll_BFu15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFu15s_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15i_BFu15ll_BFu15s_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15ll_BFu15s_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15ll_BFu15s_BFu15s, BFs15i_BFu15ll_BFu15s_BFu15s)
//============================================================================


struct  BFs15i_BFu15s  {
  signed int v1:15;
  unsigned short v2:15;
};
//SIG(1 BFs15i_BFu15s) C1{ Fi:15 Fs:15}



static void Test_BFs15i_BFu15s()
{
  {
    init_simple_test("BFs15i_BFu15s");
    static STRUCT_IF_C BFs15i_BFu15s lv;
    check2(sizeof(lv), 4, "sizeof(BFs15i_BFu15s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15s, BFs15i_BFu15s)
//============================================================================


struct  BFs15i_BFu15s_BFs15i  {
  signed int v1:15;
  unsigned short v2:15;
  signed int v3:15;
};
//SIG(1 BFs15i_BFu15s_BFs15i) C1{ Fi:15 Fs:15 Fi:15}



static void Test_BFs15i_BFu15s_BFs15i()
{
  {
    init_simple_test("BFs15i_BFu15s_BFs15i");
    static STRUCT_IF_C BFs15i_BFu15s_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15s_BFs15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFu15s_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15s_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFu15s_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15s_BFs15i, BFs15i_BFu15s_BFs15i)
//============================================================================


struct  BFs15i_BFu15s_BFs15i_BFs15i  {
  signed int v1:15;
  unsigned short v2:15;
  signed int v3:15;
  signed int v4:15;
};
//SIG(1 BFs15i_BFu15s_BFs15i_BFs15i) C1{ Fi:15 Fs:15 Fi:15 Fi:15}



static void Test_BFs15i_BFu15s_BFs15i_BFs15i()
{
  {
    init_simple_test("BFs15i_BFu15s_BFs15i_BFs15i");
    static STRUCT_IF_C BFs15i_BFu15s_BFs15i_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15s_BFs15i_BFs15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFu15s_BFs15i_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15s_BFs15i_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFs15i_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFu15s_BFs15i_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFs15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15s_BFs15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFs15i_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFu15s_BFs15i_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFs15i_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15s_BFs15i_BFs15i, BFs15i_BFu15s_BFs15i_BFs15i)
//============================================================================


struct  BFs15i_BFu15s_BFs15i_BFs15ll  {
  signed int v1:15;
  unsigned short v2:15;
  signed int v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15i_BFu15s_BFs15i_BFs15ll) C1{ Fi:15 Fs:15 Fi:15 FL:15}



static void Test_BFs15i_BFu15s_BFs15i_BFs15ll()
{
  {
    init_simple_test("BFs15i_BFu15s_BFs15i_BFs15ll");
    static STRUCT_IF_C BFs15i_BFu15s_BFs15i_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15s_BFs15i_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15s_BFs15i_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15s_BFs15i_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFs15i_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFu15s_BFs15i_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFs15i_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15s_BFs15i_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFs15i_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFu15s_BFs15i_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFs15i_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15s_BFs15i_BFs15ll, BFs15i_BFu15s_BFs15i_BFs15ll)
//============================================================================


struct  BFs15i_BFu15s_BFs15i_BFs15s  {
  signed int v1:15;
  unsigned short v2:15;
  signed int v3:15;
  signed short v4:15;
};
//SIG(1 BFs15i_BFu15s_BFs15i_BFs15s) C1{ Fi:15 Fs:15 Fi:15 Fs:15}



static void Test_BFs15i_BFu15s_BFs15i_BFs15s()
{
  {
    init_simple_test("BFs15i_BFu15s_BFs15i_BFs15s");
    static STRUCT_IF_C BFs15i_BFu15s_BFs15i_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15s_BFs15i_BFs15s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFu15s_BFs15i_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15s_BFs15i_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFs15i_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFu15s_BFs15i_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFs15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15s_BFs15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFs15i_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15i_BFu15s_BFs15i_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFs15i_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15s_BFs15i_BFs15s, BFs15i_BFu15s_BFs15i_BFs15s)
//============================================================================


struct  BFs15i_BFu15s_BFs15i_BFu15i  {
  signed int v1:15;
  unsigned short v2:15;
  signed int v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15i_BFu15s_BFs15i_BFu15i) C1{ Fi:15 Fs:15 Fi:15 Fi:15}



static void Test_BFs15i_BFu15s_BFs15i_BFu15i()
{
  {
    init_simple_test("BFs15i_BFu15s_BFs15i_BFu15i");
    static STRUCT_IF_C BFs15i_BFu15s_BFs15i_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15s_BFs15i_BFu15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFu15s_BFs15i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15s_BFs15i_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFs15i_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFu15s_BFs15i_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFs15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15s_BFs15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFs15i_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFu15s_BFs15i_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFs15i_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15s_BFs15i_BFu15i, BFs15i_BFu15s_BFs15i_BFu15i)
//============================================================================


struct  BFs15i_BFu15s_BFs15i_BFu15ll  {
  signed int v1:15;
  unsigned short v2:15;
  signed int v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15i_BFu15s_BFs15i_BFu15ll) C1{ Fi:15 Fs:15 Fi:15 FL:15}



static void Test_BFs15i_BFu15s_BFs15i_BFu15ll()
{
  {
    init_simple_test("BFs15i_BFu15s_BFs15i_BFu15ll");
    static STRUCT_IF_C BFs15i_BFu15s_BFs15i_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15s_BFs15i_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15s_BFs15i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15s_BFs15i_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFs15i_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFu15s_BFs15i_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFs15i_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15s_BFs15i_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFs15i_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFu15s_BFs15i_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFs15i_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15s_BFs15i_BFu15ll, BFs15i_BFu15s_BFs15i_BFu15ll)
//============================================================================


struct  BFs15i_BFu15s_BFs15i_BFu15s  {
  signed int v1:15;
  unsigned short v2:15;
  signed int v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15i_BFu15s_BFs15i_BFu15s) C1{ Fi:15 Fs:15 Fi:15 Fs:15}



static void Test_BFs15i_BFu15s_BFs15i_BFu15s()
{
  {
    init_simple_test("BFs15i_BFu15s_BFs15i_BFu15s");
    static STRUCT_IF_C BFs15i_BFu15s_BFs15i_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15s_BFs15i_BFu15s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFu15s_BFs15i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15s_BFs15i_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFs15i_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFu15s_BFs15i_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFs15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15s_BFs15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFs15i_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15i_BFu15s_BFs15i_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFs15i_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15s_BFs15i_BFu15s, BFs15i_BFu15s_BFs15i_BFu15s)
//============================================================================


struct  BFs15i_BFu15s_BFs15ll  {
  signed int v1:15;
  unsigned short v2:15;
  signed __tsi64 v3:15;
};
//SIG(1 BFs15i_BFu15s_BFs15ll) C1{ Fi:15 Fs:15 FL:15}



static void Test_BFs15i_BFu15s_BFs15ll()
{
  {
    init_simple_test("BFs15i_BFu15s_BFs15ll");
    static STRUCT_IF_C BFs15i_BFu15s_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15s_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15s_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15s_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFu15s_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFs15ll");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15i_BFu15s_BFs15ll");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15s_BFs15ll, BFs15i_BFu15s_BFs15ll)
//============================================================================


struct  BFs15i_BFu15s_BFs15ll_BFs15i  {
  signed int v1:15;
  unsigned short v2:15;
  signed __tsi64 v3:15;
  signed int v4:15;
};
//SIG(1 BFs15i_BFu15s_BFs15ll_BFs15i) C1{ Fi:15 Fs:15 FL:15 Fi:15}



static void Test_BFs15i_BFu15s_BFs15ll_BFs15i()
{
  {
    init_simple_test("BFs15i_BFu15s_BFs15ll_BFs15i");
    static STRUCT_IF_C BFs15i_BFu15s_BFs15ll_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15s_BFs15ll_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15s_BFs15ll_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15s_BFs15ll_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFs15ll_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFu15s_BFs15ll_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFs15ll_BFs15i");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15i_BFu15s_BFs15ll_BFs15i");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFs15ll_BFs15i");
    set_bf_and_test(lv, v4, 5, 6, 15, 1, "BFs15i_BFu15s_BFs15ll_BFs15i");
    set_bf_and_test(lv, v4, 5, 6, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFs15ll_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15s_BFs15ll_BFs15i, BFs15i_BFu15s_BFs15ll_BFs15i)
//============================================================================


struct  BFs15i_BFu15s_BFs15ll_BFs15ll  {
  signed int v1:15;
  unsigned short v2:15;
  signed __tsi64 v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15i_BFu15s_BFs15ll_BFs15ll) C1{ Fi:15 Fs:15 FL:15 FL:15}



static void Test_BFs15i_BFu15s_BFs15ll_BFs15ll()
{
  {
    init_simple_test("BFs15i_BFu15s_BFs15ll_BFs15ll");
    static STRUCT_IF_C BFs15i_BFu15s_BFs15ll_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15s_BFs15ll_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15s_BFs15ll_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15s_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFu15s_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15i_BFu15s_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v4, 5, 6, 15, 1, "BFs15i_BFu15s_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v4, 5, 6, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFs15ll_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15s_BFs15ll_BFs15ll, BFs15i_BFu15s_BFs15ll_BFs15ll)
//============================================================================


struct  BFs15i_BFu15s_BFs15ll_BFs15s  {
  signed int v1:15;
  unsigned short v2:15;
  signed __tsi64 v3:15;
  signed short v4:15;
};
//SIG(1 BFs15i_BFu15s_BFs15ll_BFs15s) C1{ Fi:15 Fs:15 FL:15 Fs:15}



static void Test_BFs15i_BFu15s_BFs15ll_BFs15s()
{
  {
    init_simple_test("BFs15i_BFu15s_BFs15ll_BFs15s");
    static STRUCT_IF_C BFs15i_BFu15s_BFs15ll_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15s_BFs15ll_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15s_BFs15ll_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15s_BFs15ll_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFs15ll_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFu15s_BFs15ll_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFs15ll_BFs15s");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15i_BFu15s_BFs15ll_BFs15s");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFs15ll_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15i_BFu15s_BFs15ll_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFs15ll_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15s_BFs15ll_BFs15s, BFs15i_BFu15s_BFs15ll_BFs15s)
//============================================================================


struct  BFs15i_BFu15s_BFs15ll_BFu15i  {
  signed int v1:15;
  unsigned short v2:15;
  signed __tsi64 v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15i_BFu15s_BFs15ll_BFu15i) C1{ Fi:15 Fs:15 FL:15 Fi:15}



static void Test_BFs15i_BFu15s_BFs15ll_BFu15i()
{
  {
    init_simple_test("BFs15i_BFu15s_BFs15ll_BFu15i");
    static STRUCT_IF_C BFs15i_BFu15s_BFs15ll_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15s_BFs15ll_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15s_BFs15ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15s_BFs15ll_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFs15ll_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFu15s_BFs15ll_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFs15ll_BFu15i");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15i_BFu15s_BFs15ll_BFu15i");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFs15ll_BFu15i");
    set_bf_and_test(lv, v4, 5, 6, 15, 1, "BFs15i_BFu15s_BFs15ll_BFu15i");
    set_bf_and_test(lv, v4, 5, 6, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFs15ll_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15s_BFs15ll_BFu15i, BFs15i_BFu15s_BFs15ll_BFu15i)
//============================================================================


struct  BFs15i_BFu15s_BFs15ll_BFu15ll  {
  signed int v1:15;
  unsigned short v2:15;
  signed __tsi64 v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15i_BFu15s_BFs15ll_BFu15ll) C1{ Fi:15 Fs:15 FL:15 FL:15}



static void Test_BFs15i_BFu15s_BFs15ll_BFu15ll()
{
  {
    init_simple_test("BFs15i_BFu15s_BFs15ll_BFu15ll");
    static STRUCT_IF_C BFs15i_BFu15s_BFs15ll_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15s_BFs15ll_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15s_BFs15ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15s_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFu15s_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15i_BFu15s_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v4, 5, 6, 15, 1, "BFs15i_BFu15s_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v4, 5, 6, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFs15ll_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15s_BFs15ll_BFu15ll, BFs15i_BFu15s_BFs15ll_BFu15ll)
//============================================================================


struct  BFs15i_BFu15s_BFs15ll_BFu15s  {
  signed int v1:15;
  unsigned short v2:15;
  signed __tsi64 v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15i_BFu15s_BFs15ll_BFu15s) C1{ Fi:15 Fs:15 FL:15 Fs:15}



static void Test_BFs15i_BFu15s_BFs15ll_BFu15s()
{
  {
    init_simple_test("BFs15i_BFu15s_BFs15ll_BFu15s");
    static STRUCT_IF_C BFs15i_BFu15s_BFs15ll_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15s_BFs15ll_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15s_BFs15ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15s_BFs15ll_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFs15ll_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFu15s_BFs15ll_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFs15ll_BFu15s");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15i_BFu15s_BFs15ll_BFu15s");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFs15ll_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15i_BFu15s_BFs15ll_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFs15ll_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15s_BFs15ll_BFu15s, BFs15i_BFu15s_BFs15ll_BFu15s)
//============================================================================


struct  BFs15i_BFu15s_BFs15s  {
  signed int v1:15;
  unsigned short v2:15;
  signed short v3:15;
};
//SIG(1 BFs15i_BFu15s_BFs15s) C1{ Fi:15 Fs:15 Fs:15}



static void Test_BFs15i_BFu15s_BFs15s()
{
  {
    init_simple_test("BFs15i_BFu15s_BFs15s");
    static STRUCT_IF_C BFs15i_BFu15s_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15s_BFs15s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFu15s_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15s_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFu15s_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15s_BFs15s, BFs15i_BFu15s_BFs15s)
//============================================================================


struct  BFs15i_BFu15s_BFs15s_BFs15i  {
  signed int v1:15;
  unsigned short v2:15;
  signed short v3:15;
  signed int v4:15;
};
//SIG(1 BFs15i_BFu15s_BFs15s_BFs15i) C1{ Fi:15 Fs:15 Fs:15 Fi:15}



static void Test_BFs15i_BFu15s_BFs15s_BFs15i()
{
  {
    init_simple_test("BFs15i_BFu15s_BFs15s_BFs15i");
    static STRUCT_IF_C BFs15i_BFu15s_BFs15s_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15s_BFs15s_BFs15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFu15s_BFs15s_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15s_BFs15s_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFs15s_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFu15s_BFs15s_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFs15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15s_BFs15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFs15s_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFu15s_BFs15s_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFs15s_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15s_BFs15s_BFs15i, BFs15i_BFu15s_BFs15s_BFs15i)
//============================================================================


struct  BFs15i_BFu15s_BFs15s_BFs15ll  {
  signed int v1:15;
  unsigned short v2:15;
  signed short v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15i_BFu15s_BFs15s_BFs15ll) C1{ Fi:15 Fs:15 Fs:15 FL:15}



static void Test_BFs15i_BFu15s_BFs15s_BFs15ll()
{
  {
    init_simple_test("BFs15i_BFu15s_BFs15s_BFs15ll");
    static STRUCT_IF_C BFs15i_BFu15s_BFs15s_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15s_BFs15s_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15s_BFs15s_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15s_BFs15s_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFs15s_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFu15s_BFs15s_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFs15s_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15s_BFs15s_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFs15s_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFu15s_BFs15s_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFs15s_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15s_BFs15s_BFs15ll, BFs15i_BFu15s_BFs15s_BFs15ll)
//============================================================================


struct  BFs15i_BFu15s_BFs15s_BFs15s  {
  signed int v1:15;
  unsigned short v2:15;
  signed short v3:15;
  signed short v4:15;
};
//SIG(1 BFs15i_BFu15s_BFs15s_BFs15s) C1{ Fi:15 Fs:15 Fs:15 Fs:15}



static void Test_BFs15i_BFu15s_BFs15s_BFs15s()
{
  {
    init_simple_test("BFs15i_BFu15s_BFs15s_BFs15s");
    static STRUCT_IF_C BFs15i_BFu15s_BFs15s_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15s_BFs15s_BFs15s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFu15s_BFs15s_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15s_BFs15s_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFs15s_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFu15s_BFs15s_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFs15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15s_BFs15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFs15s_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15i_BFu15s_BFs15s_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFs15s_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15s_BFs15s_BFs15s, BFs15i_BFu15s_BFs15s_BFs15s)
//============================================================================


struct  BFs15i_BFu15s_BFs15s_BFu15i  {
  signed int v1:15;
  unsigned short v2:15;
  signed short v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15i_BFu15s_BFs15s_BFu15i) C1{ Fi:15 Fs:15 Fs:15 Fi:15}



static void Test_BFs15i_BFu15s_BFs15s_BFu15i()
{
  {
    init_simple_test("BFs15i_BFu15s_BFs15s_BFu15i");
    static STRUCT_IF_C BFs15i_BFu15s_BFs15s_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15s_BFs15s_BFu15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFu15s_BFs15s_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15s_BFs15s_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFs15s_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFu15s_BFs15s_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFs15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15s_BFs15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFs15s_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFu15s_BFs15s_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFs15s_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15s_BFs15s_BFu15i, BFs15i_BFu15s_BFs15s_BFu15i)
//============================================================================


struct  BFs15i_BFu15s_BFs15s_BFu15ll  {
  signed int v1:15;
  unsigned short v2:15;
  signed short v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15i_BFu15s_BFs15s_BFu15ll) C1{ Fi:15 Fs:15 Fs:15 FL:15}



static void Test_BFs15i_BFu15s_BFs15s_BFu15ll()
{
  {
    init_simple_test("BFs15i_BFu15s_BFs15s_BFu15ll");
    static STRUCT_IF_C BFs15i_BFu15s_BFs15s_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15s_BFs15s_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15s_BFs15s_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15s_BFs15s_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFs15s_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFu15s_BFs15s_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFs15s_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15s_BFs15s_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFs15s_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFu15s_BFs15s_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFs15s_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15s_BFs15s_BFu15ll, BFs15i_BFu15s_BFs15s_BFu15ll)
//============================================================================


struct  BFs15i_BFu15s_BFs15s_BFu15s  {
  signed int v1:15;
  unsigned short v2:15;
  signed short v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15i_BFu15s_BFs15s_BFu15s) C1{ Fi:15 Fs:15 Fs:15 Fs:15}



static void Test_BFs15i_BFu15s_BFs15s_BFu15s()
{
  {
    init_simple_test("BFs15i_BFu15s_BFs15s_BFu15s");
    static STRUCT_IF_C BFs15i_BFu15s_BFs15s_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15s_BFs15s_BFu15s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFu15s_BFs15s_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15s_BFs15s_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFs15s_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFu15s_BFs15s_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFs15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15s_BFs15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFs15s_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15i_BFu15s_BFs15s_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFs15s_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15s_BFs15s_BFu15s, BFs15i_BFu15s_BFs15s_BFu15s)
//============================================================================


struct  BFs15i_BFu15s_BFu15i  {
  signed int v1:15;
  unsigned short v2:15;
  unsigned int v3:15;
};
//SIG(1 BFs15i_BFu15s_BFu15i) C1{ Fi:15 Fs:15 Fi:15}



static void Test_BFs15i_BFu15s_BFu15i()
{
  {
    init_simple_test("BFs15i_BFu15s_BFu15i");
    static STRUCT_IF_C BFs15i_BFu15s_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15s_BFu15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFu15s_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15s_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFu15s_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15s_BFu15i, BFs15i_BFu15s_BFu15i)
//============================================================================


struct  BFs15i_BFu15s_BFu15i_BFs15i  {
  signed int v1:15;
  unsigned short v2:15;
  unsigned int v3:15;
  signed int v4:15;
};
//SIG(1 BFs15i_BFu15s_BFu15i_BFs15i) C1{ Fi:15 Fs:15 Fi:15 Fi:15}



static void Test_BFs15i_BFu15s_BFu15i_BFs15i()
{
  {
    init_simple_test("BFs15i_BFu15s_BFu15i_BFs15i");
    static STRUCT_IF_C BFs15i_BFu15s_BFu15i_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15s_BFu15i_BFs15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFu15s_BFu15i_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15s_BFu15i_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFu15i_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFu15s_BFu15i_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFu15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15s_BFu15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFu15i_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFu15s_BFu15i_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFu15i_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15s_BFu15i_BFs15i, BFs15i_BFu15s_BFu15i_BFs15i)
//============================================================================


struct  BFs15i_BFu15s_BFu15i_BFs15ll  {
  signed int v1:15;
  unsigned short v2:15;
  unsigned int v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15i_BFu15s_BFu15i_BFs15ll) C1{ Fi:15 Fs:15 Fi:15 FL:15}



static void Test_BFs15i_BFu15s_BFu15i_BFs15ll()
{
  {
    init_simple_test("BFs15i_BFu15s_BFu15i_BFs15ll");
    static STRUCT_IF_C BFs15i_BFu15s_BFu15i_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15s_BFu15i_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15s_BFu15i_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15s_BFu15i_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFu15i_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFu15s_BFu15i_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFu15i_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15s_BFu15i_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFu15i_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFu15s_BFu15i_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFu15i_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15s_BFu15i_BFs15ll, BFs15i_BFu15s_BFu15i_BFs15ll)
//============================================================================


struct  BFs15i_BFu15s_BFu15i_BFs15s  {
  signed int v1:15;
  unsigned short v2:15;
  unsigned int v3:15;
  signed short v4:15;
};
//SIG(1 BFs15i_BFu15s_BFu15i_BFs15s) C1{ Fi:15 Fs:15 Fi:15 Fs:15}



static void Test_BFs15i_BFu15s_BFu15i_BFs15s()
{
  {
    init_simple_test("BFs15i_BFu15s_BFu15i_BFs15s");
    static STRUCT_IF_C BFs15i_BFu15s_BFu15i_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15s_BFu15i_BFs15s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFu15s_BFu15i_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15s_BFu15i_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFu15i_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFu15s_BFu15i_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFu15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15s_BFu15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFu15i_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15i_BFu15s_BFu15i_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFu15i_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15s_BFu15i_BFs15s, BFs15i_BFu15s_BFu15i_BFs15s)
//============================================================================


struct  BFs15i_BFu15s_BFu15i_BFu15i  {
  signed int v1:15;
  unsigned short v2:15;
  unsigned int v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15i_BFu15s_BFu15i_BFu15i) C1{ Fi:15 Fs:15 Fi:15 Fi:15}



static void Test_BFs15i_BFu15s_BFu15i_BFu15i()
{
  {
    init_simple_test("BFs15i_BFu15s_BFu15i_BFu15i");
    static STRUCT_IF_C BFs15i_BFu15s_BFu15i_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15s_BFu15i_BFu15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFu15s_BFu15i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15s_BFu15i_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFu15i_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFu15s_BFu15i_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFu15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15s_BFu15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFu15i_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFu15s_BFu15i_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFu15i_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15s_BFu15i_BFu15i, BFs15i_BFu15s_BFu15i_BFu15i)
//============================================================================


struct  BFs15i_BFu15s_BFu15i_BFu15ll  {
  signed int v1:15;
  unsigned short v2:15;
  unsigned int v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15i_BFu15s_BFu15i_BFu15ll) C1{ Fi:15 Fs:15 Fi:15 FL:15}



static void Test_BFs15i_BFu15s_BFu15i_BFu15ll()
{
  {
    init_simple_test("BFs15i_BFu15s_BFu15i_BFu15ll");
    static STRUCT_IF_C BFs15i_BFu15s_BFu15i_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15s_BFu15i_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15s_BFu15i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15s_BFu15i_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFu15i_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFu15s_BFu15i_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFu15i_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15s_BFu15i_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFu15i_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFu15s_BFu15i_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFu15i_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15s_BFu15i_BFu15ll, BFs15i_BFu15s_BFu15i_BFu15ll)
//============================================================================


struct  BFs15i_BFu15s_BFu15i_BFu15s  {
  signed int v1:15;
  unsigned short v2:15;
  unsigned int v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15i_BFu15s_BFu15i_BFu15s) C1{ Fi:15 Fs:15 Fi:15 Fs:15}



static void Test_BFs15i_BFu15s_BFu15i_BFu15s()
{
  {
    init_simple_test("BFs15i_BFu15s_BFu15i_BFu15s");
    static STRUCT_IF_C BFs15i_BFu15s_BFu15i_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15s_BFu15i_BFu15s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFu15s_BFu15i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15s_BFu15i_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFu15i_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFu15s_BFu15i_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFu15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15s_BFu15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFu15i_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15i_BFu15s_BFu15i_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFu15i_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15s_BFu15i_BFu15s, BFs15i_BFu15s_BFu15i_BFu15s)
//============================================================================


struct  BFs15i_BFu15s_BFu15ll  {
  signed int v1:15;
  unsigned short v2:15;
  __tsu64 v3:15;
};
//SIG(1 BFs15i_BFu15s_BFu15ll) C1{ Fi:15 Fs:15 FL:15}



static void Test_BFs15i_BFu15s_BFu15ll()
{
  {
    init_simple_test("BFs15i_BFu15s_BFu15ll");
    static STRUCT_IF_C BFs15i_BFu15s_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15s_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15s_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15s_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFu15s_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFu15ll");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15i_BFu15s_BFu15ll");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15s_BFu15ll, BFs15i_BFu15s_BFu15ll)
//============================================================================


struct  BFs15i_BFu15s_BFu15ll_BFs15i  {
  signed int v1:15;
  unsigned short v2:15;
  __tsu64 v3:15;
  signed int v4:15;
};
//SIG(1 BFs15i_BFu15s_BFu15ll_BFs15i) C1{ Fi:15 Fs:15 FL:15 Fi:15}



static void Test_BFs15i_BFu15s_BFu15ll_BFs15i()
{
  {
    init_simple_test("BFs15i_BFu15s_BFu15ll_BFs15i");
    static STRUCT_IF_C BFs15i_BFu15s_BFu15ll_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15s_BFu15ll_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15s_BFu15ll_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15s_BFu15ll_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFu15ll_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFu15s_BFu15ll_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFu15ll_BFs15i");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15i_BFu15s_BFu15ll_BFs15i");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFu15ll_BFs15i");
    set_bf_and_test(lv, v4, 5, 6, 15, 1, "BFs15i_BFu15s_BFu15ll_BFs15i");
    set_bf_and_test(lv, v4, 5, 6, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFu15ll_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15s_BFu15ll_BFs15i, BFs15i_BFu15s_BFu15ll_BFs15i)
//============================================================================


struct  BFs15i_BFu15s_BFu15ll_BFs15ll  {
  signed int v1:15;
  unsigned short v2:15;
  __tsu64 v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15i_BFu15s_BFu15ll_BFs15ll) C1{ Fi:15 Fs:15 FL:15 FL:15}



static void Test_BFs15i_BFu15s_BFu15ll_BFs15ll()
{
  {
    init_simple_test("BFs15i_BFu15s_BFu15ll_BFs15ll");
    static STRUCT_IF_C BFs15i_BFu15s_BFu15ll_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15s_BFu15ll_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15s_BFu15ll_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15s_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFu15s_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15i_BFu15s_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v4, 5, 6, 15, 1, "BFs15i_BFu15s_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v4, 5, 6, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFu15ll_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15s_BFu15ll_BFs15ll, BFs15i_BFu15s_BFu15ll_BFs15ll)
//============================================================================


struct  BFs15i_BFu15s_BFu15ll_BFs15s  {
  signed int v1:15;
  unsigned short v2:15;
  __tsu64 v3:15;
  signed short v4:15;
};
//SIG(1 BFs15i_BFu15s_BFu15ll_BFs15s) C1{ Fi:15 Fs:15 FL:15 Fs:15}



static void Test_BFs15i_BFu15s_BFu15ll_BFs15s()
{
  {
    init_simple_test("BFs15i_BFu15s_BFu15ll_BFs15s");
    static STRUCT_IF_C BFs15i_BFu15s_BFu15ll_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15s_BFu15ll_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15s_BFu15ll_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15s_BFu15ll_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFu15ll_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFu15s_BFu15ll_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFu15ll_BFs15s");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15i_BFu15s_BFu15ll_BFs15s");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFu15ll_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15i_BFu15s_BFu15ll_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFu15ll_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15s_BFu15ll_BFs15s, BFs15i_BFu15s_BFu15ll_BFs15s)
//============================================================================


struct  BFs15i_BFu15s_BFu15ll_BFu15i  {
  signed int v1:15;
  unsigned short v2:15;
  __tsu64 v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15i_BFu15s_BFu15ll_BFu15i) C1{ Fi:15 Fs:15 FL:15 Fi:15}



static void Test_BFs15i_BFu15s_BFu15ll_BFu15i()
{
  {
    init_simple_test("BFs15i_BFu15s_BFu15ll_BFu15i");
    static STRUCT_IF_C BFs15i_BFu15s_BFu15ll_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15s_BFu15ll_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15s_BFu15ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15s_BFu15ll_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFu15ll_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFu15s_BFu15ll_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFu15ll_BFu15i");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15i_BFu15s_BFu15ll_BFu15i");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFu15ll_BFu15i");
    set_bf_and_test(lv, v4, 5, 6, 15, 1, "BFs15i_BFu15s_BFu15ll_BFu15i");
    set_bf_and_test(lv, v4, 5, 6, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFu15ll_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15s_BFu15ll_BFu15i, BFs15i_BFu15s_BFu15ll_BFu15i)
//============================================================================


struct  BFs15i_BFu15s_BFu15ll_BFu15ll  {
  signed int v1:15;
  unsigned short v2:15;
  __tsu64 v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15i_BFu15s_BFu15ll_BFu15ll) C1{ Fi:15 Fs:15 FL:15 FL:15}



static void Test_BFs15i_BFu15s_BFu15ll_BFu15ll()
{
  {
    init_simple_test("BFs15i_BFu15s_BFu15ll_BFu15ll");
    static STRUCT_IF_C BFs15i_BFu15s_BFu15ll_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15s_BFu15ll_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15s_BFu15ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15s_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFu15s_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15i_BFu15s_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v4, 5, 6, 15, 1, "BFs15i_BFu15s_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v4, 5, 6, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFu15ll_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15s_BFu15ll_BFu15ll, BFs15i_BFu15s_BFu15ll_BFu15ll)
//============================================================================


struct  BFs15i_BFu15s_BFu15ll_BFu15s  {
  signed int v1:15;
  unsigned short v2:15;
  __tsu64 v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15i_BFu15s_BFu15ll_BFu15s) C1{ Fi:15 Fs:15 FL:15 Fs:15}



static void Test_BFs15i_BFu15s_BFu15ll_BFu15s()
{
  {
    init_simple_test("BFs15i_BFu15s_BFu15ll_BFu15s");
    static STRUCT_IF_C BFs15i_BFu15s_BFu15ll_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15s_BFu15ll_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15s_BFu15ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15s_BFu15ll_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFu15ll_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFu15s_BFu15ll_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFu15ll_BFu15s");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15i_BFu15s_BFu15ll_BFu15s");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFu15ll_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15i_BFu15s_BFu15ll_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFu15ll_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15s_BFu15ll_BFu15s, BFs15i_BFu15s_BFu15ll_BFu15s)
//============================================================================


struct  BFs15i_BFu15s_BFu15s  {
  signed int v1:15;
  unsigned short v2:15;
  unsigned short v3:15;
};
//SIG(1 BFs15i_BFu15s_BFu15s) C1{ Fi:15 Fs:15 Fs:15}



static void Test_BFs15i_BFu15s_BFu15s()
{
  {
    init_simple_test("BFs15i_BFu15s_BFu15s");
    static STRUCT_IF_C BFs15i_BFu15s_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15s_BFu15s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFu15s_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15s_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFu15s_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15s_BFu15s, BFs15i_BFu15s_BFu15s)
//============================================================================


struct  BFs15i_BFu15s_BFu15s_BFs15i  {
  signed int v1:15;
  unsigned short v2:15;
  unsigned short v3:15;
  signed int v4:15;
};
//SIG(1 BFs15i_BFu15s_BFu15s_BFs15i) C1{ Fi:15 Fs:15 Fs:15 Fi:15}



static void Test_BFs15i_BFu15s_BFu15s_BFs15i()
{
  {
    init_simple_test("BFs15i_BFu15s_BFu15s_BFs15i");
    static STRUCT_IF_C BFs15i_BFu15s_BFu15s_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15s_BFu15s_BFs15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFu15s_BFu15s_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15s_BFu15s_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFu15s_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFu15s_BFu15s_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFu15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15s_BFu15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFu15s_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFu15s_BFu15s_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFu15s_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15s_BFu15s_BFs15i, BFs15i_BFu15s_BFu15s_BFs15i)
//============================================================================


struct  BFs15i_BFu15s_BFu15s_BFs15ll  {
  signed int v1:15;
  unsigned short v2:15;
  unsigned short v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15i_BFu15s_BFu15s_BFs15ll) C1{ Fi:15 Fs:15 Fs:15 FL:15}



static void Test_BFs15i_BFu15s_BFu15s_BFs15ll()
{
  {
    init_simple_test("BFs15i_BFu15s_BFu15s_BFs15ll");
    static STRUCT_IF_C BFs15i_BFu15s_BFu15s_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15s_BFu15s_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15s_BFu15s_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15s_BFu15s_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFu15s_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFu15s_BFu15s_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFu15s_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15s_BFu15s_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFu15s_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFu15s_BFu15s_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFu15s_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15s_BFu15s_BFs15ll, BFs15i_BFu15s_BFu15s_BFs15ll)
//============================================================================


struct  BFs15i_BFu15s_BFu15s_BFs15s  {
  signed int v1:15;
  unsigned short v2:15;
  unsigned short v3:15;
  signed short v4:15;
};
//SIG(1 BFs15i_BFu15s_BFu15s_BFs15s) C1{ Fi:15 Fs:15 Fs:15 Fs:15}



static void Test_BFs15i_BFu15s_BFu15s_BFs15s()
{
  {
    init_simple_test("BFs15i_BFu15s_BFu15s_BFs15s");
    static STRUCT_IF_C BFs15i_BFu15s_BFu15s_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15s_BFu15s_BFs15s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFu15s_BFu15s_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15s_BFu15s_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFu15s_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFu15s_BFu15s_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFu15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15s_BFu15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFu15s_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15i_BFu15s_BFu15s_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFu15s_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15s_BFu15s_BFs15s, BFs15i_BFu15s_BFu15s_BFs15s)
//============================================================================


struct  BFs15i_BFu15s_BFu15s_BFu15i  {
  signed int v1:15;
  unsigned short v2:15;
  unsigned short v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15i_BFu15s_BFu15s_BFu15i) C1{ Fi:15 Fs:15 Fs:15 Fi:15}



static void Test_BFs15i_BFu15s_BFu15s_BFu15i()
{
  {
    init_simple_test("BFs15i_BFu15s_BFu15s_BFu15i");
    static STRUCT_IF_C BFs15i_BFu15s_BFu15s_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15s_BFu15s_BFu15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFu15s_BFu15s_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15s_BFu15s_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFu15s_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFu15s_BFu15s_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFu15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15s_BFu15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFu15s_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFu15s_BFu15s_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFu15s_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15s_BFu15s_BFu15i, BFs15i_BFu15s_BFu15s_BFu15i)
//============================================================================


struct  BFs15i_BFu15s_BFu15s_BFu15ll  {
  signed int v1:15;
  unsigned short v2:15;
  unsigned short v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15i_BFu15s_BFu15s_BFu15ll) C1{ Fi:15 Fs:15 Fs:15 FL:15}



static void Test_BFs15i_BFu15s_BFu15s_BFu15ll()
{
  {
    init_simple_test("BFs15i_BFu15s_BFu15s_BFu15ll");
    static STRUCT_IF_C BFs15i_BFu15s_BFu15s_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15s_BFu15s_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15i_BFu15s_BFu15s_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15s_BFu15s_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFu15s_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFu15s_BFu15s_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFu15s_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15s_BFu15s_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFu15s_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15i_BFu15s_BFu15s_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFu15s_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15s_BFu15s_BFu15ll, BFs15i_BFu15s_BFu15s_BFu15ll)
//============================================================================


struct  BFs15i_BFu15s_BFu15s_BFu15s  {
  signed int v1:15;
  unsigned short v2:15;
  unsigned short v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15i_BFu15s_BFu15s_BFu15s) C1{ Fi:15 Fs:15 Fs:15 Fs:15}



static void Test_BFs15i_BFu15s_BFu15s_BFu15s()
{
  {
    init_simple_test("BFs15i_BFu15s_BFu15s_BFu15s");
    static STRUCT_IF_C BFs15i_BFu15s_BFu15s_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15i_BFu15s_BFu15s_BFu15s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15i_BFu15s_BFu15s_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15i_BFu15s_BFu15s_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15i_BFu15s_BFu15s_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15i_BFu15s_BFu15s_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFu15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15i_BFu15s_BFu15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFu15s_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15i_BFu15s_BFu15s_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15i_BFu15s_BFu15s_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15i_BFu15s_BFu15s_BFu15s, BFs15i_BFu15s_BFu15s_BFu15s)
//============================================================================


struct  BFs15ll_BFs15i  {
  signed __tsi64 v1:15;
  signed int v2:15;
};
//SIG(1 BFs15ll_BFs15i) C1{ FL:15 Fi:15}



static void Test_BFs15ll_BFs15i()
{
  {
    init_simple_test("BFs15ll_BFs15i");
    static STRUCT_IF_C BFs15ll_BFs15i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs15ll_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15i, BFs15ll_BFs15i)
//============================================================================


struct  BFs15ll_BFs15i_BFs15i  {
  signed __tsi64 v1:15;
  signed int v2:15;
  signed int v3:15;
};
//SIG(1 BFs15ll_BFs15i_BFs15i) C1{ FL:15 Fi:15 Fi:15}



static void Test_BFs15ll_BFs15i_BFs15i()
{
  {
    init_simple_test("BFs15ll_BFs15i_BFs15i");
    static STRUCT_IF_C BFs15ll_BFs15i_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15i_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15i_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15i_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15i_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15i_BFs15i, BFs15ll_BFs15i_BFs15i)
//============================================================================


struct  BFs15ll_BFs15i_BFs15i_BFs15i  {
  signed __tsi64 v1:15;
  signed int v2:15;
  signed int v3:15;
  signed int v4:15;
};
//SIG(1 BFs15ll_BFs15i_BFs15i_BFs15i) C1{ FL:15 Fi:15 Fi:15 Fi:15}



static void Test_BFs15ll_BFs15i_BFs15i_BFs15i()
{
  {
    init_simple_test("BFs15ll_BFs15i_BFs15i_BFs15i");
    static STRUCT_IF_C BFs15ll_BFs15i_BFs15i_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15i_BFs15i_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15i_BFs15i_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15i_BFs15i_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFs15i_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15i_BFs15i_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFs15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15i_BFs15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFs15i_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFs15i_BFs15i_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFs15i_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15i_BFs15i_BFs15i, BFs15ll_BFs15i_BFs15i_BFs15i)
//============================================================================


struct  BFs15ll_BFs15i_BFs15i_BFs15ll  {
  signed __tsi64 v1:15;
  signed int v2:15;
  signed int v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15ll_BFs15i_BFs15i_BFs15ll) C1{ FL:15 Fi:15 Fi:15 FL:15}



static void Test_BFs15ll_BFs15i_BFs15i_BFs15ll()
{
  {
    init_simple_test("BFs15ll_BFs15i_BFs15i_BFs15ll");
    static STRUCT_IF_C BFs15ll_BFs15i_BFs15i_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15i_BFs15i_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15i_BFs15i_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15i_BFs15i_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFs15i_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15i_BFs15i_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFs15i_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15i_BFs15i_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFs15i_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFs15i_BFs15i_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFs15i_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15i_BFs15i_BFs15ll, BFs15ll_BFs15i_BFs15i_BFs15ll)
//============================================================================


struct  BFs15ll_BFs15i_BFs15i_BFs15s  {
  signed __tsi64 v1:15;
  signed int v2:15;
  signed int v3:15;
  signed short v4:15;
};
//SIG(1 BFs15ll_BFs15i_BFs15i_BFs15s) C1{ FL:15 Fi:15 Fi:15 Fs:15}



static void Test_BFs15ll_BFs15i_BFs15i_BFs15s()
{
  {
    init_simple_test("BFs15ll_BFs15i_BFs15i_BFs15s");
    static STRUCT_IF_C BFs15ll_BFs15i_BFs15i_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15i_BFs15i_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15i_BFs15i_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15i_BFs15i_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFs15i_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15i_BFs15i_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFs15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15i_BFs15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFs15i_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15ll_BFs15i_BFs15i_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFs15i_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15i_BFs15i_BFs15s, BFs15ll_BFs15i_BFs15i_BFs15s)
//============================================================================


struct  BFs15ll_BFs15i_BFs15i_BFu15i  {
  signed __tsi64 v1:15;
  signed int v2:15;
  signed int v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15ll_BFs15i_BFs15i_BFu15i) C1{ FL:15 Fi:15 Fi:15 Fi:15}



static void Test_BFs15ll_BFs15i_BFs15i_BFu15i()
{
  {
    init_simple_test("BFs15ll_BFs15i_BFs15i_BFu15i");
    static STRUCT_IF_C BFs15ll_BFs15i_BFs15i_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15i_BFs15i_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15i_BFs15i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15i_BFs15i_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFs15i_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15i_BFs15i_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFs15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15i_BFs15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFs15i_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFs15i_BFs15i_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFs15i_BFs15i_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15i_BFs15i_BFu15i, BFs15ll_BFs15i_BFs15i_BFu15i)
//============================================================================


struct  BFs15ll_BFs15i_BFs15i_BFu15ll  {
  signed __tsi64 v1:15;
  signed int v2:15;
  signed int v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15ll_BFs15i_BFs15i_BFu15ll) C1{ FL:15 Fi:15 Fi:15 FL:15}



static void Test_BFs15ll_BFs15i_BFs15i_BFu15ll()
{
  {
    init_simple_test("BFs15ll_BFs15i_BFs15i_BFu15ll");
    static STRUCT_IF_C BFs15ll_BFs15i_BFs15i_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15i_BFs15i_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15i_BFs15i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15i_BFs15i_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFs15i_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15i_BFs15i_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFs15i_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15i_BFs15i_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFs15i_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFs15i_BFs15i_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFs15i_BFs15i_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15i_BFs15i_BFu15ll, BFs15ll_BFs15i_BFs15i_BFu15ll)
//============================================================================


struct  BFs15ll_BFs15i_BFs15i_BFu15s  {
  signed __tsi64 v1:15;
  signed int v2:15;
  signed int v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15ll_BFs15i_BFs15i_BFu15s) C1{ FL:15 Fi:15 Fi:15 Fs:15}



static void Test_BFs15ll_BFs15i_BFs15i_BFu15s()
{
  {
    init_simple_test("BFs15ll_BFs15i_BFs15i_BFu15s");
    static STRUCT_IF_C BFs15ll_BFs15i_BFs15i_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15i_BFs15i_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15i_BFs15i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15i_BFs15i_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFs15i_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15i_BFs15i_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFs15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15i_BFs15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFs15i_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15ll_BFs15i_BFs15i_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFs15i_BFs15i_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15i_BFs15i_BFu15s, BFs15ll_BFs15i_BFs15i_BFu15s)
//============================================================================


struct  BFs15ll_BFs15i_BFs15ll  {
  signed __tsi64 v1:15;
  signed int v2:15;
  signed __tsi64 v3:15;
};
//SIG(1 BFs15ll_BFs15i_BFs15ll) C1{ FL:15 Fi:15 FL:15}



static void Test_BFs15ll_BFs15i_BFs15ll()
{
  {
    init_simple_test("BFs15ll_BFs15i_BFs15ll");
    static STRUCT_IF_C BFs15ll_BFs15i_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15i_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15i_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15i_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15i_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFs15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15ll_BFs15i_BFs15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15i_BFs15ll, BFs15ll_BFs15i_BFs15ll)
//============================================================================


struct  BFs15ll_BFs15i_BFs15ll_BFs15i  {
  signed __tsi64 v1:15;
  signed int v2:15;
  signed __tsi64 v3:15;
  signed int v4:15;
};
//SIG(1 BFs15ll_BFs15i_BFs15ll_BFs15i) C1{ FL:15 Fi:15 FL:15 Fi:15}



static void Test_BFs15ll_BFs15i_BFs15ll_BFs15i()
{
  {
    init_simple_test("BFs15ll_BFs15i_BFs15ll_BFs15i");
    static STRUCT_IF_C BFs15ll_BFs15i_BFs15ll_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15i_BFs15ll_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15i_BFs15ll_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15i_BFs15ll_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFs15ll_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15i_BFs15ll_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFs15ll_BFs15i");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15ll_BFs15i_BFs15ll_BFs15i");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFs15ll_BFs15i");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15ll_BFs15i_BFs15ll_BFs15i");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFs15ll_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15i_BFs15ll_BFs15i, BFs15ll_BFs15i_BFs15ll_BFs15i)
//============================================================================


struct  BFs15ll_BFs15i_BFs15ll_BFs15ll  {
  signed __tsi64 v1:15;
  signed int v2:15;
  signed __tsi64 v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15ll_BFs15i_BFs15ll_BFs15ll) C1{ FL:15 Fi:15 FL:15 FL:15}



static void Test_BFs15ll_BFs15i_BFs15ll_BFs15ll()
{
  {
    init_simple_test("BFs15ll_BFs15i_BFs15ll_BFs15ll");
    static STRUCT_IF_C BFs15ll_BFs15i_BFs15ll_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15i_BFs15ll_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15i_BFs15ll_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15i_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15i_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15ll_BFs15i_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15ll_BFs15i_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFs15ll_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15i_BFs15ll_BFs15ll, BFs15ll_BFs15i_BFs15ll_BFs15ll)
//============================================================================


struct  BFs15ll_BFs15i_BFs15ll_BFs15s  {
  signed __tsi64 v1:15;
  signed int v2:15;
  signed __tsi64 v3:15;
  signed short v4:15;
};
//SIG(1 BFs15ll_BFs15i_BFs15ll_BFs15s) C1{ FL:15 Fi:15 FL:15 Fs:15}



static void Test_BFs15ll_BFs15i_BFs15ll_BFs15s()
{
  {
    init_simple_test("BFs15ll_BFs15i_BFs15ll_BFs15s");
    static STRUCT_IF_C BFs15ll_BFs15i_BFs15ll_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15i_BFs15ll_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15i_BFs15ll_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15i_BFs15ll_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFs15ll_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15i_BFs15ll_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFs15ll_BFs15s");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15ll_BFs15i_BFs15ll_BFs15s");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFs15ll_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15ll_BFs15i_BFs15ll_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFs15ll_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15i_BFs15ll_BFs15s, BFs15ll_BFs15i_BFs15ll_BFs15s)
//============================================================================


struct  BFs15ll_BFs15i_BFs15ll_BFu15i  {
  signed __tsi64 v1:15;
  signed int v2:15;
  signed __tsi64 v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15ll_BFs15i_BFs15ll_BFu15i) C1{ FL:15 Fi:15 FL:15 Fi:15}



static void Test_BFs15ll_BFs15i_BFs15ll_BFu15i()
{
  {
    init_simple_test("BFs15ll_BFs15i_BFs15ll_BFu15i");
    static STRUCT_IF_C BFs15ll_BFs15i_BFs15ll_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15i_BFs15ll_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15i_BFs15ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15i_BFs15ll_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFs15ll_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15i_BFs15ll_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFs15ll_BFu15i");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15ll_BFs15i_BFs15ll_BFu15i");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFs15ll_BFu15i");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15ll_BFs15i_BFs15ll_BFu15i");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_ull(1LL<<14), "BFs15ll_BFs15i_BFs15ll_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15i_BFs15ll_BFu15i, BFs15ll_BFs15i_BFs15ll_BFu15i)
//============================================================================


struct  BFs15ll_BFs15i_BFs15ll_BFu15ll  {
  signed __tsi64 v1:15;
  signed int v2:15;
  signed __tsi64 v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15ll_BFs15i_BFs15ll_BFu15ll) C1{ FL:15 Fi:15 FL:15 FL:15}



static void Test_BFs15ll_BFs15i_BFs15ll_BFu15ll()
{
  {
    init_simple_test("BFs15ll_BFs15i_BFs15ll_BFu15ll");
    static STRUCT_IF_C BFs15ll_BFs15i_BFs15ll_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15i_BFs15ll_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15i_BFs15ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15i_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15i_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15ll_BFs15i_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15ll_BFs15i_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_ull(1LL<<14), "BFs15ll_BFs15i_BFs15ll_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15i_BFs15ll_BFu15ll, BFs15ll_BFs15i_BFs15ll_BFu15ll)
//============================================================================


struct  BFs15ll_BFs15i_BFs15ll_BFu15s  {
  signed __tsi64 v1:15;
  signed int v2:15;
  signed __tsi64 v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15ll_BFs15i_BFs15ll_BFu15s) C1{ FL:15 Fi:15 FL:15 Fs:15}



static void Test_BFs15ll_BFs15i_BFs15ll_BFu15s()
{
  {
    init_simple_test("BFs15ll_BFs15i_BFs15ll_BFu15s");
    static STRUCT_IF_C BFs15ll_BFs15i_BFs15ll_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15i_BFs15ll_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15i_BFs15ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15i_BFs15ll_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFs15ll_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15i_BFs15ll_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFs15ll_BFu15s");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15ll_BFs15i_BFs15ll_BFu15s");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFs15ll_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15ll_BFs15i_BFs15ll_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFs15i_BFs15ll_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15i_BFs15ll_BFu15s, BFs15ll_BFs15i_BFs15ll_BFu15s)
//============================================================================


struct  BFs15ll_BFs15i_BFs15s  {
  signed __tsi64 v1:15;
  signed int v2:15;
  signed short v3:15;
};
//SIG(1 BFs15ll_BFs15i_BFs15s) C1{ FL:15 Fi:15 Fs:15}



static void Test_BFs15ll_BFs15i_BFs15s()
{
  {
    init_simple_test("BFs15ll_BFs15i_BFs15s");
    static STRUCT_IF_C BFs15ll_BFs15i_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15i_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15i_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15i_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15i_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15i_BFs15s, BFs15ll_BFs15i_BFs15s)
//============================================================================


struct  BFs15ll_BFs15i_BFs15s_BFs15i  {
  signed __tsi64 v1:15;
  signed int v2:15;
  signed short v3:15;
  signed int v4:15;
};
//SIG(1 BFs15ll_BFs15i_BFs15s_BFs15i) C1{ FL:15 Fi:15 Fs:15 Fi:15}



static void Test_BFs15ll_BFs15i_BFs15s_BFs15i()
{
  {
    init_simple_test("BFs15ll_BFs15i_BFs15s_BFs15i");
    static STRUCT_IF_C BFs15ll_BFs15i_BFs15s_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15i_BFs15s_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15i_BFs15s_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15i_BFs15s_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFs15s_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15i_BFs15s_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFs15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15i_BFs15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFs15s_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFs15i_BFs15s_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFs15s_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15i_BFs15s_BFs15i, BFs15ll_BFs15i_BFs15s_BFs15i)
//============================================================================


struct  BFs15ll_BFs15i_BFs15s_BFs15ll  {
  signed __tsi64 v1:15;
  signed int v2:15;
  signed short v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15ll_BFs15i_BFs15s_BFs15ll) C1{ FL:15 Fi:15 Fs:15 FL:15}



static void Test_BFs15ll_BFs15i_BFs15s_BFs15ll()
{
  {
    init_simple_test("BFs15ll_BFs15i_BFs15s_BFs15ll");
    static STRUCT_IF_C BFs15ll_BFs15i_BFs15s_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15i_BFs15s_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15i_BFs15s_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15i_BFs15s_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFs15s_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15i_BFs15s_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFs15s_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15i_BFs15s_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFs15s_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFs15i_BFs15s_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFs15s_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15i_BFs15s_BFs15ll, BFs15ll_BFs15i_BFs15s_BFs15ll)
//============================================================================


struct  BFs15ll_BFs15i_BFs15s_BFs15s  {
  signed __tsi64 v1:15;
  signed int v2:15;
  signed short v3:15;
  signed short v4:15;
};
//SIG(1 BFs15ll_BFs15i_BFs15s_BFs15s) C1{ FL:15 Fi:15 Fs:15 Fs:15}



static void Test_BFs15ll_BFs15i_BFs15s_BFs15s()
{
  {
    init_simple_test("BFs15ll_BFs15i_BFs15s_BFs15s");
    static STRUCT_IF_C BFs15ll_BFs15i_BFs15s_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15i_BFs15s_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15i_BFs15s_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15i_BFs15s_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFs15s_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15i_BFs15s_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFs15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15i_BFs15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFs15s_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15ll_BFs15i_BFs15s_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFs15s_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15i_BFs15s_BFs15s, BFs15ll_BFs15i_BFs15s_BFs15s)
//============================================================================


struct  BFs15ll_BFs15i_BFs15s_BFu15i  {
  signed __tsi64 v1:15;
  signed int v2:15;
  signed short v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15ll_BFs15i_BFs15s_BFu15i) C1{ FL:15 Fi:15 Fs:15 Fi:15}



static void Test_BFs15ll_BFs15i_BFs15s_BFu15i()
{
  {
    init_simple_test("BFs15ll_BFs15i_BFs15s_BFu15i");
    static STRUCT_IF_C BFs15ll_BFs15i_BFs15s_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15i_BFs15s_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15i_BFs15s_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15i_BFs15s_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFs15s_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15i_BFs15s_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFs15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15i_BFs15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFs15s_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFs15i_BFs15s_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFs15i_BFs15s_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15i_BFs15s_BFu15i, BFs15ll_BFs15i_BFs15s_BFu15i)
//============================================================================


struct  BFs15ll_BFs15i_BFs15s_BFu15ll  {
  signed __tsi64 v1:15;
  signed int v2:15;
  signed short v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15ll_BFs15i_BFs15s_BFu15ll) C1{ FL:15 Fi:15 Fs:15 FL:15}



static void Test_BFs15ll_BFs15i_BFs15s_BFu15ll()
{
  {
    init_simple_test("BFs15ll_BFs15i_BFs15s_BFu15ll");
    static STRUCT_IF_C BFs15ll_BFs15i_BFs15s_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15i_BFs15s_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15i_BFs15s_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15i_BFs15s_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFs15s_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15i_BFs15s_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFs15s_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15i_BFs15s_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFs15s_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFs15i_BFs15s_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFs15i_BFs15s_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15i_BFs15s_BFu15ll, BFs15ll_BFs15i_BFs15s_BFu15ll)
//============================================================================


struct  BFs15ll_BFs15i_BFs15s_BFu15s  {
  signed __tsi64 v1:15;
  signed int v2:15;
  signed short v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15ll_BFs15i_BFs15s_BFu15s) C1{ FL:15 Fi:15 Fs:15 Fs:15}



static void Test_BFs15ll_BFs15i_BFs15s_BFu15s()
{
  {
    init_simple_test("BFs15ll_BFs15i_BFs15s_BFu15s");
    static STRUCT_IF_C BFs15ll_BFs15i_BFs15s_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15i_BFs15s_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15i_BFs15s_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15i_BFs15s_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFs15s_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15i_BFs15s_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFs15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15i_BFs15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFs15s_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15ll_BFs15i_BFs15s_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFs15i_BFs15s_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15i_BFs15s_BFu15s, BFs15ll_BFs15i_BFs15s_BFu15s)
//============================================================================


struct  BFs15ll_BFs15i_BFu15i  {
  signed __tsi64 v1:15;
  signed int v2:15;
  unsigned int v3:15;
};
//SIG(1 BFs15ll_BFs15i_BFu15i) C1{ FL:15 Fi:15 Fi:15}



static void Test_BFs15ll_BFs15i_BFu15i()
{
  {
    init_simple_test("BFs15ll_BFs15i_BFu15i");
    static STRUCT_IF_C BFs15ll_BFs15i_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15i_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15i_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15i_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFs15i_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15i_BFu15i, BFs15ll_BFs15i_BFu15i)
//============================================================================


struct  BFs15ll_BFs15i_BFu15i_BFs15i  {
  signed __tsi64 v1:15;
  signed int v2:15;
  unsigned int v3:15;
  signed int v4:15;
};
//SIG(1 BFs15ll_BFs15i_BFu15i_BFs15i) C1{ FL:15 Fi:15 Fi:15 Fi:15}



static void Test_BFs15ll_BFs15i_BFu15i_BFs15i()
{
  {
    init_simple_test("BFs15ll_BFs15i_BFu15i_BFs15i");
    static STRUCT_IF_C BFs15ll_BFs15i_BFu15i_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15i_BFu15i_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15i_BFu15i_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15i_BFu15i_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFu15i_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15i_BFu15i_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFu15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15i_BFu15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFs15i_BFu15i_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFs15i_BFu15i_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFu15i_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15i_BFu15i_BFs15i, BFs15ll_BFs15i_BFu15i_BFs15i)
//============================================================================


struct  BFs15ll_BFs15i_BFu15i_BFs15ll  {
  signed __tsi64 v1:15;
  signed int v2:15;
  unsigned int v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15ll_BFs15i_BFu15i_BFs15ll) C1{ FL:15 Fi:15 Fi:15 FL:15}



static void Test_BFs15ll_BFs15i_BFu15i_BFs15ll()
{
  {
    init_simple_test("BFs15ll_BFs15i_BFu15i_BFs15ll");
    static STRUCT_IF_C BFs15ll_BFs15i_BFu15i_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15i_BFu15i_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15i_BFu15i_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15i_BFu15i_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFu15i_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15i_BFu15i_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFu15i_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15i_BFu15i_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFs15i_BFu15i_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFs15i_BFu15i_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFu15i_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15i_BFu15i_BFs15ll, BFs15ll_BFs15i_BFu15i_BFs15ll)
//============================================================================


struct  BFs15ll_BFs15i_BFu15i_BFs15s  {
  signed __tsi64 v1:15;
  signed int v2:15;
  unsigned int v3:15;
  signed short v4:15;
};
//SIG(1 BFs15ll_BFs15i_BFu15i_BFs15s) C1{ FL:15 Fi:15 Fi:15 Fs:15}



static void Test_BFs15ll_BFs15i_BFu15i_BFs15s()
{
  {
    init_simple_test("BFs15ll_BFs15i_BFu15i_BFs15s");
    static STRUCT_IF_C BFs15ll_BFs15i_BFu15i_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15i_BFu15i_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15i_BFu15i_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15i_BFu15i_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFu15i_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15i_BFu15i_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFu15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15i_BFu15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFs15i_BFu15i_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15ll_BFs15i_BFu15i_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFu15i_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15i_BFu15i_BFs15s, BFs15ll_BFs15i_BFu15i_BFs15s)
//============================================================================


struct  BFs15ll_BFs15i_BFu15i_BFu15i  {
  signed __tsi64 v1:15;
  signed int v2:15;
  unsigned int v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15ll_BFs15i_BFu15i_BFu15i) C1{ FL:15 Fi:15 Fi:15 Fi:15}



static void Test_BFs15ll_BFs15i_BFu15i_BFu15i()
{
  {
    init_simple_test("BFs15ll_BFs15i_BFu15i_BFu15i");
    static STRUCT_IF_C BFs15ll_BFs15i_BFu15i_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15i_BFu15i_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15i_BFu15i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15i_BFu15i_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFu15i_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15i_BFu15i_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFu15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15i_BFu15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFs15i_BFu15i_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFs15i_BFu15i_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFs15i_BFu15i_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15i_BFu15i_BFu15i, BFs15ll_BFs15i_BFu15i_BFu15i)
//============================================================================


struct  BFs15ll_BFs15i_BFu15i_BFu15ll  {
  signed __tsi64 v1:15;
  signed int v2:15;
  unsigned int v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15ll_BFs15i_BFu15i_BFu15ll) C1{ FL:15 Fi:15 Fi:15 FL:15}



static void Test_BFs15ll_BFs15i_BFu15i_BFu15ll()
{
  {
    init_simple_test("BFs15ll_BFs15i_BFu15i_BFu15ll");
    static STRUCT_IF_C BFs15ll_BFs15i_BFu15i_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15i_BFu15i_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15i_BFu15i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15i_BFu15i_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFu15i_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15i_BFu15i_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFu15i_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15i_BFu15i_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFs15i_BFu15i_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFs15i_BFu15i_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFs15i_BFu15i_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15i_BFu15i_BFu15ll, BFs15ll_BFs15i_BFu15i_BFu15ll)
//============================================================================


struct  BFs15ll_BFs15i_BFu15i_BFu15s  {
  signed __tsi64 v1:15;
  signed int v2:15;
  unsigned int v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15ll_BFs15i_BFu15i_BFu15s) C1{ FL:15 Fi:15 Fi:15 Fs:15}



static void Test_BFs15ll_BFs15i_BFu15i_BFu15s()
{
  {
    init_simple_test("BFs15ll_BFs15i_BFu15i_BFu15s");
    static STRUCT_IF_C BFs15ll_BFs15i_BFu15i_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15i_BFu15i_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15i_BFu15i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15i_BFu15i_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFu15i_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15i_BFu15i_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFu15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15i_BFu15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFs15i_BFu15i_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15ll_BFs15i_BFu15i_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFs15i_BFu15i_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15i_BFu15i_BFu15s, BFs15ll_BFs15i_BFu15i_BFu15s)
//============================================================================


struct  BFs15ll_BFs15i_BFu15ll  {
  signed __tsi64 v1:15;
  signed int v2:15;
  __tsu64 v3:15;
};
//SIG(1 BFs15ll_BFs15i_BFu15ll) C1{ FL:15 Fi:15 FL:15}



static void Test_BFs15ll_BFs15i_BFu15ll()
{
  {
    init_simple_test("BFs15ll_BFs15i_BFu15ll");
    static STRUCT_IF_C BFs15ll_BFs15i_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15i_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15i_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15i_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFu15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15ll_BFs15i_BFu15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15ll_BFs15i_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15i_BFu15ll, BFs15ll_BFs15i_BFu15ll)
//============================================================================


struct  BFs15ll_BFs15i_BFu15ll_BFs15i  {
  signed __tsi64 v1:15;
  signed int v2:15;
  __tsu64 v3:15;
  signed int v4:15;
};
//SIG(1 BFs15ll_BFs15i_BFu15ll_BFs15i) C1{ FL:15 Fi:15 FL:15 Fi:15}



static void Test_BFs15ll_BFs15i_BFu15ll_BFs15i()
{
  {
    init_simple_test("BFs15ll_BFs15i_BFu15ll_BFs15i");
    static STRUCT_IF_C BFs15ll_BFs15i_BFu15ll_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15i_BFu15ll_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15i_BFu15ll_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15i_BFu15ll_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFu15ll_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15i_BFu15ll_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFu15ll_BFs15i");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15ll_BFs15i_BFu15ll_BFs15i");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15ll_BFs15i_BFu15ll_BFs15i");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15ll_BFs15i_BFu15ll_BFs15i");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFu15ll_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15i_BFu15ll_BFs15i, BFs15ll_BFs15i_BFu15ll_BFs15i)
//============================================================================


struct  BFs15ll_BFs15i_BFu15ll_BFs15ll  {
  signed __tsi64 v1:15;
  signed int v2:15;
  __tsu64 v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15ll_BFs15i_BFu15ll_BFs15ll) C1{ FL:15 Fi:15 FL:15 FL:15}



static void Test_BFs15ll_BFs15i_BFu15ll_BFs15ll()
{
  {
    init_simple_test("BFs15ll_BFs15i_BFu15ll_BFs15ll");
    static STRUCT_IF_C BFs15ll_BFs15i_BFu15ll_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15i_BFu15ll_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15i_BFu15ll_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15i_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15i_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15ll_BFs15i_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15ll_BFs15i_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15ll_BFs15i_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFu15ll_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15i_BFu15ll_BFs15ll, BFs15ll_BFs15i_BFu15ll_BFs15ll)
//============================================================================


struct  BFs15ll_BFs15i_BFu15ll_BFs15s  {
  signed __tsi64 v1:15;
  signed int v2:15;
  __tsu64 v3:15;
  signed short v4:15;
};
//SIG(1 BFs15ll_BFs15i_BFu15ll_BFs15s) C1{ FL:15 Fi:15 FL:15 Fs:15}



static void Test_BFs15ll_BFs15i_BFu15ll_BFs15s()
{
  {
    init_simple_test("BFs15ll_BFs15i_BFu15ll_BFs15s");
    static STRUCT_IF_C BFs15ll_BFs15i_BFu15ll_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15i_BFu15ll_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15i_BFu15ll_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15i_BFu15ll_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFu15ll_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15i_BFu15ll_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFu15ll_BFs15s");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15ll_BFs15i_BFu15ll_BFs15s");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15ll_BFs15i_BFu15ll_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15ll_BFs15i_BFu15ll_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFu15ll_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15i_BFu15ll_BFs15s, BFs15ll_BFs15i_BFu15ll_BFs15s)
//============================================================================


struct  BFs15ll_BFs15i_BFu15ll_BFu15i  {
  signed __tsi64 v1:15;
  signed int v2:15;
  __tsu64 v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15ll_BFs15i_BFu15ll_BFu15i) C1{ FL:15 Fi:15 FL:15 Fi:15}



static void Test_BFs15ll_BFs15i_BFu15ll_BFu15i()
{
  {
    init_simple_test("BFs15ll_BFs15i_BFu15ll_BFu15i");
    static STRUCT_IF_C BFs15ll_BFs15i_BFu15ll_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15i_BFu15ll_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15i_BFu15ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15i_BFu15ll_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFu15ll_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15i_BFu15ll_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFu15ll_BFu15i");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15ll_BFs15i_BFu15ll_BFu15i");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15ll_BFs15i_BFu15ll_BFu15i");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15ll_BFs15i_BFu15ll_BFu15i");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_ull(1LL<<14), "BFs15ll_BFs15i_BFu15ll_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15i_BFu15ll_BFu15i, BFs15ll_BFs15i_BFu15ll_BFu15i)
//============================================================================


struct  BFs15ll_BFs15i_BFu15ll_BFu15ll  {
  signed __tsi64 v1:15;
  signed int v2:15;
  __tsu64 v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15ll_BFs15i_BFu15ll_BFu15ll) C1{ FL:15 Fi:15 FL:15 FL:15}



static void Test_BFs15ll_BFs15i_BFu15ll_BFu15ll()
{
  {
    init_simple_test("BFs15ll_BFs15i_BFu15ll_BFu15ll");
    static STRUCT_IF_C BFs15ll_BFs15i_BFu15ll_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15i_BFu15ll_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15i_BFu15ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15i_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15i_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15ll_BFs15i_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15ll_BFs15i_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15ll_BFs15i_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_ull(1LL<<14), "BFs15ll_BFs15i_BFu15ll_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15i_BFu15ll_BFu15ll, BFs15ll_BFs15i_BFu15ll_BFu15ll)
//============================================================================


struct  BFs15ll_BFs15i_BFu15ll_BFu15s  {
  signed __tsi64 v1:15;
  signed int v2:15;
  __tsu64 v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15ll_BFs15i_BFu15ll_BFu15s) C1{ FL:15 Fi:15 FL:15 Fs:15}



static void Test_BFs15ll_BFs15i_BFu15ll_BFu15s()
{
  {
    init_simple_test("BFs15ll_BFs15i_BFu15ll_BFu15s");
    static STRUCT_IF_C BFs15ll_BFs15i_BFu15ll_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15i_BFu15ll_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15i_BFu15ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15i_BFu15ll_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFu15ll_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15i_BFu15ll_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFu15ll_BFu15s");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15ll_BFs15i_BFu15ll_BFu15s");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15ll_BFs15i_BFu15ll_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15ll_BFs15i_BFu15ll_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFs15i_BFu15ll_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15i_BFu15ll_BFu15s, BFs15ll_BFs15i_BFu15ll_BFu15s)
//============================================================================


struct  BFs15ll_BFs15i_BFu15s  {
  signed __tsi64 v1:15;
  signed int v2:15;
  unsigned short v3:15;
};
//SIG(1 BFs15ll_BFs15i_BFu15s) C1{ FL:15 Fi:15 Fs:15}



static void Test_BFs15ll_BFs15i_BFu15s()
{
  {
    init_simple_test("BFs15ll_BFs15i_BFu15s");
    static STRUCT_IF_C BFs15ll_BFs15i_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15i_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15i_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15i_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFs15i_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15i_BFu15s, BFs15ll_BFs15i_BFu15s)
//============================================================================


struct  BFs15ll_BFs15i_BFu15s_BFs15i  {
  signed __tsi64 v1:15;
  signed int v2:15;
  unsigned short v3:15;
  signed int v4:15;
};
//SIG(1 BFs15ll_BFs15i_BFu15s_BFs15i) C1{ FL:15 Fi:15 Fs:15 Fi:15}



static void Test_BFs15ll_BFs15i_BFu15s_BFs15i()
{
  {
    init_simple_test("BFs15ll_BFs15i_BFu15s_BFs15i");
    static STRUCT_IF_C BFs15ll_BFs15i_BFu15s_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15i_BFu15s_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15i_BFu15s_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15i_BFu15s_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFu15s_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15i_BFu15s_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFu15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15i_BFu15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFs15i_BFu15s_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFs15i_BFu15s_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFu15s_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15i_BFu15s_BFs15i, BFs15ll_BFs15i_BFu15s_BFs15i)
//============================================================================


struct  BFs15ll_BFs15i_BFu15s_BFs15ll  {
  signed __tsi64 v1:15;
  signed int v2:15;
  unsigned short v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15ll_BFs15i_BFu15s_BFs15ll) C1{ FL:15 Fi:15 Fs:15 FL:15}



static void Test_BFs15ll_BFs15i_BFu15s_BFs15ll()
{
  {
    init_simple_test("BFs15ll_BFs15i_BFu15s_BFs15ll");
    static STRUCT_IF_C BFs15ll_BFs15i_BFu15s_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15i_BFu15s_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15i_BFu15s_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15i_BFu15s_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFu15s_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15i_BFu15s_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFu15s_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15i_BFu15s_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFs15i_BFu15s_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFs15i_BFu15s_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFu15s_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15i_BFu15s_BFs15ll, BFs15ll_BFs15i_BFu15s_BFs15ll)
//============================================================================


struct  BFs15ll_BFs15i_BFu15s_BFs15s  {
  signed __tsi64 v1:15;
  signed int v2:15;
  unsigned short v3:15;
  signed short v4:15;
};
//SIG(1 BFs15ll_BFs15i_BFu15s_BFs15s) C1{ FL:15 Fi:15 Fs:15 Fs:15}



static void Test_BFs15ll_BFs15i_BFu15s_BFs15s()
{
  {
    init_simple_test("BFs15ll_BFs15i_BFu15s_BFs15s");
    static STRUCT_IF_C BFs15ll_BFs15i_BFu15s_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15i_BFu15s_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15i_BFu15s_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15i_BFu15s_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFu15s_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15i_BFu15s_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFu15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15i_BFu15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFs15i_BFu15s_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15ll_BFs15i_BFu15s_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFu15s_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15i_BFu15s_BFs15s, BFs15ll_BFs15i_BFu15s_BFs15s)
//============================================================================


struct  BFs15ll_BFs15i_BFu15s_BFu15i  {
  signed __tsi64 v1:15;
  signed int v2:15;
  unsigned short v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15ll_BFs15i_BFu15s_BFu15i) C1{ FL:15 Fi:15 Fs:15 Fi:15}



static void Test_BFs15ll_BFs15i_BFu15s_BFu15i()
{
  {
    init_simple_test("BFs15ll_BFs15i_BFu15s_BFu15i");
    static STRUCT_IF_C BFs15ll_BFs15i_BFu15s_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15i_BFu15s_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15i_BFu15s_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15i_BFu15s_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFu15s_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15i_BFu15s_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFu15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15i_BFu15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFs15i_BFu15s_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFs15i_BFu15s_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFs15i_BFu15s_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15i_BFu15s_BFu15i, BFs15ll_BFs15i_BFu15s_BFu15i)
//============================================================================


struct  BFs15ll_BFs15i_BFu15s_BFu15ll  {
  signed __tsi64 v1:15;
  signed int v2:15;
  unsigned short v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15ll_BFs15i_BFu15s_BFu15ll) C1{ FL:15 Fi:15 Fs:15 FL:15}



static void Test_BFs15ll_BFs15i_BFu15s_BFu15ll()
{
  {
    init_simple_test("BFs15ll_BFs15i_BFu15s_BFu15ll");
    static STRUCT_IF_C BFs15ll_BFs15i_BFu15s_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15i_BFu15s_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15i_BFu15s_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15i_BFu15s_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFu15s_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15i_BFu15s_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFu15s_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15i_BFu15s_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFs15i_BFu15s_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFs15i_BFu15s_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFs15i_BFu15s_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15i_BFu15s_BFu15ll, BFs15ll_BFs15i_BFu15s_BFu15ll)
//============================================================================


struct  BFs15ll_BFs15i_BFu15s_BFu15s  {
  signed __tsi64 v1:15;
  signed int v2:15;
  unsigned short v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15ll_BFs15i_BFu15s_BFu15s) C1{ FL:15 Fi:15 Fs:15 Fs:15}



static void Test_BFs15ll_BFs15i_BFu15s_BFu15s()
{
  {
    init_simple_test("BFs15ll_BFs15i_BFu15s_BFu15s");
    static STRUCT_IF_C BFs15ll_BFs15i_BFu15s_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15i_BFu15s_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15i_BFu15s_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15i_BFu15s_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFu15s_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15i_BFu15s_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15i_BFu15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15i_BFu15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFs15i_BFu15s_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15ll_BFs15i_BFu15s_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFs15i_BFu15s_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15i_BFu15s_BFu15s, BFs15ll_BFs15i_BFu15s_BFu15s)
//============================================================================


struct  BFs15ll_BFs15ll  {
  signed __tsi64 v1:15;
  signed __tsi64 v2:15;
};
//SIG(1 BFs15ll_BFs15ll) C1{ FL:15 FL:15}



static void Test_BFs15ll_BFs15ll()
{
  {
    init_simple_test("BFs15ll_BFs15ll");
    static STRUCT_IF_C BFs15ll_BFs15ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs15ll_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15ll, BFs15ll_BFs15ll)
//============================================================================


struct  BFs15ll_BFs15ll_BFs15i  {
  signed __tsi64 v1:15;
  signed __tsi64 v2:15;
  signed int v3:15;
};
//SIG(1 BFs15ll_BFs15ll_BFs15i) C1{ FL:15 FL:15 Fi:15}



static void Test_BFs15ll_BFs15ll_BFs15i()
{
  {
    init_simple_test("BFs15ll_BFs15ll_BFs15i");
    static STRUCT_IF_C BFs15ll_BFs15ll_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15ll_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15ll_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15ll_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15ll_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15ll_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15ll_BFs15i, BFs15ll_BFs15ll_BFs15i)
//============================================================================


struct  BFs15ll_BFs15ll_BFs15i_BFs15i  {
  signed __tsi64 v1:15;
  signed __tsi64 v2:15;
  signed int v3:15;
  signed int v4:15;
};
//SIG(1 BFs15ll_BFs15ll_BFs15i_BFs15i) C1{ FL:15 FL:15 Fi:15 Fi:15}



static void Test_BFs15ll_BFs15ll_BFs15i_BFs15i()
{
  {
    init_simple_test("BFs15ll_BFs15ll_BFs15i_BFs15i");
    static STRUCT_IF_C BFs15ll_BFs15ll_BFs15i_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15ll_BFs15i_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15ll_BFs15i_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15ll_BFs15i_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFs15i_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15ll_BFs15i_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFs15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15ll_BFs15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFs15i_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFs15ll_BFs15i_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFs15i_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15ll_BFs15i_BFs15i, BFs15ll_BFs15ll_BFs15i_BFs15i)
//============================================================================


struct  BFs15ll_BFs15ll_BFs15i_BFs15ll  {
  signed __tsi64 v1:15;
  signed __tsi64 v2:15;
  signed int v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15ll_BFs15ll_BFs15i_BFs15ll) C1{ FL:15 FL:15 Fi:15 FL:15}



static void Test_BFs15ll_BFs15ll_BFs15i_BFs15ll()
{
  {
    init_simple_test("BFs15ll_BFs15ll_BFs15i_BFs15ll");
    static STRUCT_IF_C BFs15ll_BFs15ll_BFs15i_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15ll_BFs15i_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15ll_BFs15i_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15ll_BFs15i_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFs15i_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15ll_BFs15i_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFs15i_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15ll_BFs15i_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFs15i_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFs15ll_BFs15i_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFs15i_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15ll_BFs15i_BFs15ll, BFs15ll_BFs15ll_BFs15i_BFs15ll)
//============================================================================


struct  BFs15ll_BFs15ll_BFs15i_BFs15s  {
  signed __tsi64 v1:15;
  signed __tsi64 v2:15;
  signed int v3:15;
  signed short v4:15;
};
//SIG(1 BFs15ll_BFs15ll_BFs15i_BFs15s) C1{ FL:15 FL:15 Fi:15 Fs:15}



static void Test_BFs15ll_BFs15ll_BFs15i_BFs15s()
{
  {
    init_simple_test("BFs15ll_BFs15ll_BFs15i_BFs15s");
    static STRUCT_IF_C BFs15ll_BFs15ll_BFs15i_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15ll_BFs15i_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15ll_BFs15i_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15ll_BFs15i_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFs15i_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15ll_BFs15i_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFs15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15ll_BFs15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFs15i_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15ll_BFs15ll_BFs15i_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFs15i_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15ll_BFs15i_BFs15s, BFs15ll_BFs15ll_BFs15i_BFs15s)
//============================================================================


struct  BFs15ll_BFs15ll_BFs15i_BFu15i  {
  signed __tsi64 v1:15;
  signed __tsi64 v2:15;
  signed int v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15ll_BFs15ll_BFs15i_BFu15i) C1{ FL:15 FL:15 Fi:15 Fi:15}



static void Test_BFs15ll_BFs15ll_BFs15i_BFu15i()
{
  {
    init_simple_test("BFs15ll_BFs15ll_BFs15i_BFu15i");
    static STRUCT_IF_C BFs15ll_BFs15ll_BFs15i_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15ll_BFs15i_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15ll_BFs15i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15ll_BFs15i_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFs15i_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15ll_BFs15i_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFs15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15ll_BFs15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFs15i_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFs15ll_BFs15i_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFs15ll_BFs15i_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15ll_BFs15i_BFu15i, BFs15ll_BFs15ll_BFs15i_BFu15i)
//============================================================================


struct  BFs15ll_BFs15ll_BFs15i_BFu15ll  {
  signed __tsi64 v1:15;
  signed __tsi64 v2:15;
  signed int v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15ll_BFs15ll_BFs15i_BFu15ll) C1{ FL:15 FL:15 Fi:15 FL:15}



static void Test_BFs15ll_BFs15ll_BFs15i_BFu15ll()
{
  {
    init_simple_test("BFs15ll_BFs15ll_BFs15i_BFu15ll");
    static STRUCT_IF_C BFs15ll_BFs15ll_BFs15i_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15ll_BFs15i_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15ll_BFs15i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15ll_BFs15i_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFs15i_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15ll_BFs15i_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFs15i_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15ll_BFs15i_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFs15i_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFs15ll_BFs15i_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFs15ll_BFs15i_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15ll_BFs15i_BFu15ll, BFs15ll_BFs15ll_BFs15i_BFu15ll)
//============================================================================


struct  BFs15ll_BFs15ll_BFs15i_BFu15s  {
  signed __tsi64 v1:15;
  signed __tsi64 v2:15;
  signed int v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15ll_BFs15ll_BFs15i_BFu15s) C1{ FL:15 FL:15 Fi:15 Fs:15}



static void Test_BFs15ll_BFs15ll_BFs15i_BFu15s()
{
  {
    init_simple_test("BFs15ll_BFs15ll_BFs15i_BFu15s");
    static STRUCT_IF_C BFs15ll_BFs15ll_BFs15i_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15ll_BFs15i_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15ll_BFs15i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15ll_BFs15i_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFs15i_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15ll_BFs15i_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFs15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15ll_BFs15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFs15i_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15ll_BFs15ll_BFs15i_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFs15ll_BFs15i_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15ll_BFs15i_BFu15s, BFs15ll_BFs15ll_BFs15i_BFu15s)
//============================================================================


struct  BFs15ll_BFs15ll_BFs15ll  {
  signed __tsi64 v1:15;
  signed __tsi64 v2:15;
  signed __tsi64 v3:15;
};
//SIG(1 BFs15ll_BFs15ll_BFs15ll) C1{ FL:15 FL:15 FL:15}



static void Test_BFs15ll_BFs15ll_BFs15ll()
{
  {
    init_simple_test("BFs15ll_BFs15ll_BFs15ll");
    static STRUCT_IF_C BFs15ll_BFs15ll_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15ll_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15ll_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15ll_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15ll_BFs15ll, BFs15ll_BFs15ll_BFs15ll)
//============================================================================


struct  BFs15ll_BFs15ll_BFs15ll_BFs15i  {
  signed __tsi64 v1:15;
  signed __tsi64 v2:15;
  signed __tsi64 v3:15;
  signed int v4:15;
};
//SIG(1 BFs15ll_BFs15ll_BFs15ll_BFs15i) C1{ FL:15 FL:15 FL:15 Fi:15}



static void Test_BFs15ll_BFs15ll_BFs15ll_BFs15i()
{
  {
    init_simple_test("BFs15ll_BFs15ll_BFs15ll_BFs15i");
    static STRUCT_IF_C BFs15ll_BFs15ll_BFs15ll_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15ll_BFs15ll_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15ll_BFs15ll_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15ll_BFs15ll_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFs15ll_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15ll_BFs15ll_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFs15ll_BFs15i");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15ll_BFs15ll_BFs15ll_BFs15i");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFs15ll_BFs15i");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15ll_BFs15ll_BFs15ll_BFs15i");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFs15ll_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15ll_BFs15ll_BFs15i, BFs15ll_BFs15ll_BFs15ll_BFs15i)
//============================================================================


struct  BFs15ll_BFs15ll_BFs15ll_BFs15ll  {
  signed __tsi64 v1:15;
  signed __tsi64 v2:15;
  signed __tsi64 v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15ll_BFs15ll_BFs15ll_BFs15ll) C1{ FL:15 FL:15 FL:15 FL:15}



static void Test_BFs15ll_BFs15ll_BFs15ll_BFs15ll()
{
  {
    init_simple_test("BFs15ll_BFs15ll_BFs15ll_BFs15ll");
    static STRUCT_IF_C BFs15ll_BFs15ll_BFs15ll_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15ll_BFs15ll_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15ll_BFs15ll_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15ll_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15ll_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15ll_BFs15ll_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15ll_BFs15ll_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFs15ll_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15ll_BFs15ll_BFs15ll, BFs15ll_BFs15ll_BFs15ll_BFs15ll)
//============================================================================


struct  BFs15ll_BFs15ll_BFs15ll_BFs15s  {
  signed __tsi64 v1:15;
  signed __tsi64 v2:15;
  signed __tsi64 v3:15;
  signed short v4:15;
};
//SIG(1 BFs15ll_BFs15ll_BFs15ll_BFs15s) C1{ FL:15 FL:15 FL:15 Fs:15}



static void Test_BFs15ll_BFs15ll_BFs15ll_BFs15s()
{
  {
    init_simple_test("BFs15ll_BFs15ll_BFs15ll_BFs15s");
    static STRUCT_IF_C BFs15ll_BFs15ll_BFs15ll_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15ll_BFs15ll_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15ll_BFs15ll_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15ll_BFs15ll_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFs15ll_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15ll_BFs15ll_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFs15ll_BFs15s");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15ll_BFs15ll_BFs15ll_BFs15s");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFs15ll_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15ll_BFs15ll_BFs15ll_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFs15ll_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15ll_BFs15ll_BFs15s, BFs15ll_BFs15ll_BFs15ll_BFs15s)
//============================================================================


struct  BFs15ll_BFs15ll_BFs15ll_BFu15i  {
  signed __tsi64 v1:15;
  signed __tsi64 v2:15;
  signed __tsi64 v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15ll_BFs15ll_BFs15ll_BFu15i) C1{ FL:15 FL:15 FL:15 Fi:15}



static void Test_BFs15ll_BFs15ll_BFs15ll_BFu15i()
{
  {
    init_simple_test("BFs15ll_BFs15ll_BFs15ll_BFu15i");
    static STRUCT_IF_C BFs15ll_BFs15ll_BFs15ll_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15ll_BFs15ll_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15ll_BFs15ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15ll_BFs15ll_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFs15ll_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15ll_BFs15ll_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFs15ll_BFu15i");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15ll_BFs15ll_BFs15ll_BFu15i");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFs15ll_BFu15i");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15ll_BFs15ll_BFs15ll_BFu15i");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_ull(1LL<<14), "BFs15ll_BFs15ll_BFs15ll_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15ll_BFs15ll_BFu15i, BFs15ll_BFs15ll_BFs15ll_BFu15i)
//============================================================================


struct  BFs15ll_BFs15ll_BFs15ll_BFu15ll  {
  signed __tsi64 v1:15;
  signed __tsi64 v2:15;
  signed __tsi64 v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15ll_BFs15ll_BFs15ll_BFu15ll) C1{ FL:15 FL:15 FL:15 FL:15}



static void Test_BFs15ll_BFs15ll_BFs15ll_BFu15ll()
{
  {
    init_simple_test("BFs15ll_BFs15ll_BFs15ll_BFu15ll");
    static STRUCT_IF_C BFs15ll_BFs15ll_BFs15ll_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15ll_BFs15ll_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15ll_BFs15ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15ll_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15ll_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15ll_BFs15ll_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15ll_BFs15ll_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_ull(1LL<<14), "BFs15ll_BFs15ll_BFs15ll_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15ll_BFs15ll_BFu15ll, BFs15ll_BFs15ll_BFs15ll_BFu15ll)
//============================================================================


struct  BFs15ll_BFs15ll_BFs15ll_BFu15s  {
  signed __tsi64 v1:15;
  signed __tsi64 v2:15;
  signed __tsi64 v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15ll_BFs15ll_BFs15ll_BFu15s) C1{ FL:15 FL:15 FL:15 Fs:15}



static void Test_BFs15ll_BFs15ll_BFs15ll_BFu15s()
{
  {
    init_simple_test("BFs15ll_BFs15ll_BFs15ll_BFu15s");
    static STRUCT_IF_C BFs15ll_BFs15ll_BFs15ll_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15ll_BFs15ll_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15ll_BFs15ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15ll_BFs15ll_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFs15ll_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15ll_BFs15ll_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFs15ll_BFu15s");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15ll_BFs15ll_BFs15ll_BFu15s");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFs15ll_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15ll_BFs15ll_BFs15ll_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFs15ll_BFs15ll_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15ll_BFs15ll_BFu15s, BFs15ll_BFs15ll_BFs15ll_BFu15s)
//============================================================================


struct  BFs15ll_BFs15ll_BFs15s  {
  signed __tsi64 v1:15;
  signed __tsi64 v2:15;
  signed short v3:15;
};
//SIG(1 BFs15ll_BFs15ll_BFs15s) C1{ FL:15 FL:15 Fs:15}



static void Test_BFs15ll_BFs15ll_BFs15s()
{
  {
    init_simple_test("BFs15ll_BFs15ll_BFs15s");
    static STRUCT_IF_C BFs15ll_BFs15ll_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15ll_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15ll_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15ll_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15ll_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15ll_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15ll_BFs15s, BFs15ll_BFs15ll_BFs15s)
//============================================================================


struct  BFs15ll_BFs15ll_BFs15s_BFs15i  {
  signed __tsi64 v1:15;
  signed __tsi64 v2:15;
  signed short v3:15;
  signed int v4:15;
};
//SIG(1 BFs15ll_BFs15ll_BFs15s_BFs15i) C1{ FL:15 FL:15 Fs:15 Fi:15}



static void Test_BFs15ll_BFs15ll_BFs15s_BFs15i()
{
  {
    init_simple_test("BFs15ll_BFs15ll_BFs15s_BFs15i");
    static STRUCT_IF_C BFs15ll_BFs15ll_BFs15s_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15ll_BFs15s_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15ll_BFs15s_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15ll_BFs15s_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFs15s_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15ll_BFs15s_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFs15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15ll_BFs15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFs15s_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFs15ll_BFs15s_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFs15s_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15ll_BFs15s_BFs15i, BFs15ll_BFs15ll_BFs15s_BFs15i)
//============================================================================


struct  BFs15ll_BFs15ll_BFs15s_BFs15ll  {
  signed __tsi64 v1:15;
  signed __tsi64 v2:15;
  signed short v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15ll_BFs15ll_BFs15s_BFs15ll) C1{ FL:15 FL:15 Fs:15 FL:15}



static void Test_BFs15ll_BFs15ll_BFs15s_BFs15ll()
{
  {
    init_simple_test("BFs15ll_BFs15ll_BFs15s_BFs15ll");
    static STRUCT_IF_C BFs15ll_BFs15ll_BFs15s_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15ll_BFs15s_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15ll_BFs15s_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15ll_BFs15s_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFs15s_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15ll_BFs15s_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFs15s_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15ll_BFs15s_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFs15s_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFs15ll_BFs15s_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFs15s_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15ll_BFs15s_BFs15ll, BFs15ll_BFs15ll_BFs15s_BFs15ll)
//============================================================================


struct  BFs15ll_BFs15ll_BFs15s_BFs15s  {
  signed __tsi64 v1:15;
  signed __tsi64 v2:15;
  signed short v3:15;
  signed short v4:15;
};
//SIG(1 BFs15ll_BFs15ll_BFs15s_BFs15s) C1{ FL:15 FL:15 Fs:15 Fs:15}



static void Test_BFs15ll_BFs15ll_BFs15s_BFs15s()
{
  {
    init_simple_test("BFs15ll_BFs15ll_BFs15s_BFs15s");
    static STRUCT_IF_C BFs15ll_BFs15ll_BFs15s_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15ll_BFs15s_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15ll_BFs15s_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15ll_BFs15s_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFs15s_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15ll_BFs15s_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFs15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15ll_BFs15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFs15s_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15ll_BFs15ll_BFs15s_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFs15s_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15ll_BFs15s_BFs15s, BFs15ll_BFs15ll_BFs15s_BFs15s)
//============================================================================


struct  BFs15ll_BFs15ll_BFs15s_BFu15i  {
  signed __tsi64 v1:15;
  signed __tsi64 v2:15;
  signed short v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15ll_BFs15ll_BFs15s_BFu15i) C1{ FL:15 FL:15 Fs:15 Fi:15}



static void Test_BFs15ll_BFs15ll_BFs15s_BFu15i()
{
  {
    init_simple_test("BFs15ll_BFs15ll_BFs15s_BFu15i");
    static STRUCT_IF_C BFs15ll_BFs15ll_BFs15s_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15ll_BFs15s_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15ll_BFs15s_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15ll_BFs15s_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFs15s_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15ll_BFs15s_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFs15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15ll_BFs15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFs15s_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFs15ll_BFs15s_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFs15ll_BFs15s_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15ll_BFs15s_BFu15i, BFs15ll_BFs15ll_BFs15s_BFu15i)
//============================================================================


struct  BFs15ll_BFs15ll_BFs15s_BFu15ll  {
  signed __tsi64 v1:15;
  signed __tsi64 v2:15;
  signed short v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15ll_BFs15ll_BFs15s_BFu15ll) C1{ FL:15 FL:15 Fs:15 FL:15}



static void Test_BFs15ll_BFs15ll_BFs15s_BFu15ll()
{
  {
    init_simple_test("BFs15ll_BFs15ll_BFs15s_BFu15ll");
    static STRUCT_IF_C BFs15ll_BFs15ll_BFs15s_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15ll_BFs15s_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15ll_BFs15s_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15ll_BFs15s_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFs15s_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15ll_BFs15s_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFs15s_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15ll_BFs15s_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFs15s_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFs15ll_BFs15s_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFs15ll_BFs15s_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15ll_BFs15s_BFu15ll, BFs15ll_BFs15ll_BFs15s_BFu15ll)
//============================================================================


struct  BFs15ll_BFs15ll_BFs15s_BFu15s  {
  signed __tsi64 v1:15;
  signed __tsi64 v2:15;
  signed short v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15ll_BFs15ll_BFs15s_BFu15s) C1{ FL:15 FL:15 Fs:15 Fs:15}



static void Test_BFs15ll_BFs15ll_BFs15s_BFu15s()
{
  {
    init_simple_test("BFs15ll_BFs15ll_BFs15s_BFu15s");
    static STRUCT_IF_C BFs15ll_BFs15ll_BFs15s_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15ll_BFs15s_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15ll_BFs15s_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15ll_BFs15s_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFs15s_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15ll_BFs15s_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFs15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15ll_BFs15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFs15s_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15ll_BFs15ll_BFs15s_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFs15ll_BFs15s_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15ll_BFs15s_BFu15s, BFs15ll_BFs15ll_BFs15s_BFu15s)
//============================================================================


struct  BFs15ll_BFs15ll_BFu15i  {
  signed __tsi64 v1:15;
  signed __tsi64 v2:15;
  unsigned int v3:15;
};
//SIG(1 BFs15ll_BFs15ll_BFu15i) C1{ FL:15 FL:15 Fi:15}



static void Test_BFs15ll_BFs15ll_BFu15i()
{
  {
    init_simple_test("BFs15ll_BFs15ll_BFu15i");
    static STRUCT_IF_C BFs15ll_BFs15ll_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15ll_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15ll_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15ll_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15ll_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFs15ll_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15ll_BFu15i, BFs15ll_BFs15ll_BFu15i)
//============================================================================


struct  BFs15ll_BFs15ll_BFu15i_BFs15i  {
  signed __tsi64 v1:15;
  signed __tsi64 v2:15;
  unsigned int v3:15;
  signed int v4:15;
};
//SIG(1 BFs15ll_BFs15ll_BFu15i_BFs15i) C1{ FL:15 FL:15 Fi:15 Fi:15}



static void Test_BFs15ll_BFs15ll_BFu15i_BFs15i()
{
  {
    init_simple_test("BFs15ll_BFs15ll_BFu15i_BFs15i");
    static STRUCT_IF_C BFs15ll_BFs15ll_BFu15i_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15ll_BFu15i_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15ll_BFu15i_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15ll_BFu15i_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFu15i_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15ll_BFu15i_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFu15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15ll_BFu15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFs15ll_BFu15i_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFs15ll_BFu15i_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFu15i_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15ll_BFu15i_BFs15i, BFs15ll_BFs15ll_BFu15i_BFs15i)
//============================================================================


struct  BFs15ll_BFs15ll_BFu15i_BFs15ll  {
  signed __tsi64 v1:15;
  signed __tsi64 v2:15;
  unsigned int v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15ll_BFs15ll_BFu15i_BFs15ll) C1{ FL:15 FL:15 Fi:15 FL:15}



static void Test_BFs15ll_BFs15ll_BFu15i_BFs15ll()
{
  {
    init_simple_test("BFs15ll_BFs15ll_BFu15i_BFs15ll");
    static STRUCT_IF_C BFs15ll_BFs15ll_BFu15i_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15ll_BFu15i_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15ll_BFu15i_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15ll_BFu15i_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFu15i_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15ll_BFu15i_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFu15i_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15ll_BFu15i_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFs15ll_BFu15i_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFs15ll_BFu15i_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFu15i_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15ll_BFu15i_BFs15ll, BFs15ll_BFs15ll_BFu15i_BFs15ll)
//============================================================================


struct  BFs15ll_BFs15ll_BFu15i_BFs15s  {
  signed __tsi64 v1:15;
  signed __tsi64 v2:15;
  unsigned int v3:15;
  signed short v4:15;
};
//SIG(1 BFs15ll_BFs15ll_BFu15i_BFs15s) C1{ FL:15 FL:15 Fi:15 Fs:15}



static void Test_BFs15ll_BFs15ll_BFu15i_BFs15s()
{
  {
    init_simple_test("BFs15ll_BFs15ll_BFu15i_BFs15s");
    static STRUCT_IF_C BFs15ll_BFs15ll_BFu15i_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15ll_BFu15i_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15ll_BFu15i_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15ll_BFu15i_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFu15i_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15ll_BFu15i_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFu15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15ll_BFu15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFs15ll_BFu15i_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15ll_BFs15ll_BFu15i_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFu15i_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15ll_BFu15i_BFs15s, BFs15ll_BFs15ll_BFu15i_BFs15s)
//============================================================================


struct  BFs15ll_BFs15ll_BFu15i_BFu15i  {
  signed __tsi64 v1:15;
  signed __tsi64 v2:15;
  unsigned int v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15ll_BFs15ll_BFu15i_BFu15i) C1{ FL:15 FL:15 Fi:15 Fi:15}



static void Test_BFs15ll_BFs15ll_BFu15i_BFu15i()
{
  {
    init_simple_test("BFs15ll_BFs15ll_BFu15i_BFu15i");
    static STRUCT_IF_C BFs15ll_BFs15ll_BFu15i_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15ll_BFu15i_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15ll_BFu15i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15ll_BFu15i_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFu15i_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15ll_BFu15i_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFu15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15ll_BFu15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFs15ll_BFu15i_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFs15ll_BFu15i_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFs15ll_BFu15i_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15ll_BFu15i_BFu15i, BFs15ll_BFs15ll_BFu15i_BFu15i)
//============================================================================


struct  BFs15ll_BFs15ll_BFu15i_BFu15ll  {
  signed __tsi64 v1:15;
  signed __tsi64 v2:15;
  unsigned int v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15ll_BFs15ll_BFu15i_BFu15ll) C1{ FL:15 FL:15 Fi:15 FL:15}



static void Test_BFs15ll_BFs15ll_BFu15i_BFu15ll()
{
  {
    init_simple_test("BFs15ll_BFs15ll_BFu15i_BFu15ll");
    static STRUCT_IF_C BFs15ll_BFs15ll_BFu15i_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15ll_BFu15i_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15ll_BFu15i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15ll_BFu15i_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFu15i_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15ll_BFu15i_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFu15i_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15ll_BFu15i_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFs15ll_BFu15i_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFs15ll_BFu15i_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFs15ll_BFu15i_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15ll_BFu15i_BFu15ll, BFs15ll_BFs15ll_BFu15i_BFu15ll)
//============================================================================


struct  BFs15ll_BFs15ll_BFu15i_BFu15s  {
  signed __tsi64 v1:15;
  signed __tsi64 v2:15;
  unsigned int v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15ll_BFs15ll_BFu15i_BFu15s) C1{ FL:15 FL:15 Fi:15 Fs:15}



static void Test_BFs15ll_BFs15ll_BFu15i_BFu15s()
{
  {
    init_simple_test("BFs15ll_BFs15ll_BFu15i_BFu15s");
    static STRUCT_IF_C BFs15ll_BFs15ll_BFu15i_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15ll_BFu15i_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15ll_BFu15i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15ll_BFu15i_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFu15i_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15ll_BFu15i_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFu15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15ll_BFu15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFs15ll_BFu15i_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15ll_BFs15ll_BFu15i_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFs15ll_BFu15i_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15ll_BFu15i_BFu15s, BFs15ll_BFs15ll_BFu15i_BFu15s)
//============================================================================


struct  BFs15ll_BFs15ll_BFu15ll  {
  signed __tsi64 v1:15;
  signed __tsi64 v2:15;
  __tsu64 v3:15;
};
//SIG(1 BFs15ll_BFs15ll_BFu15ll) C1{ FL:15 FL:15 FL:15}



static void Test_BFs15ll_BFs15ll_BFu15ll()
{
  {
    init_simple_test("BFs15ll_BFs15ll_BFu15ll");
    static STRUCT_IF_C BFs15ll_BFs15ll_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15ll_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15ll_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15ll_BFs15ll_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15ll_BFu15ll, BFs15ll_BFs15ll_BFu15ll)
//============================================================================


struct  BFs15ll_BFs15ll_BFu15ll_BFs15i  {
  signed __tsi64 v1:15;
  signed __tsi64 v2:15;
  __tsu64 v3:15;
  signed int v4:15;
};
//SIG(1 BFs15ll_BFs15ll_BFu15ll_BFs15i) C1{ FL:15 FL:15 FL:15 Fi:15}



static void Test_BFs15ll_BFs15ll_BFu15ll_BFs15i()
{
  {
    init_simple_test("BFs15ll_BFs15ll_BFu15ll_BFs15i");
    static STRUCT_IF_C BFs15ll_BFs15ll_BFu15ll_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15ll_BFu15ll_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15ll_BFu15ll_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15ll_BFu15ll_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFu15ll_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15ll_BFu15ll_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFu15ll_BFs15i");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15ll_BFs15ll_BFu15ll_BFs15i");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15ll_BFs15ll_BFu15ll_BFs15i");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15ll_BFs15ll_BFu15ll_BFs15i");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFu15ll_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15ll_BFu15ll_BFs15i, BFs15ll_BFs15ll_BFu15ll_BFs15i)
//============================================================================


struct  BFs15ll_BFs15ll_BFu15ll_BFs15ll  {
  signed __tsi64 v1:15;
  signed __tsi64 v2:15;
  __tsu64 v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15ll_BFs15ll_BFu15ll_BFs15ll) C1{ FL:15 FL:15 FL:15 FL:15}



static void Test_BFs15ll_BFs15ll_BFu15ll_BFs15ll()
{
  {
    init_simple_test("BFs15ll_BFs15ll_BFu15ll_BFs15ll");
    static STRUCT_IF_C BFs15ll_BFs15ll_BFu15ll_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15ll_BFu15ll_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15ll_BFu15ll_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15ll_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15ll_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15ll_BFs15ll_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15ll_BFs15ll_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15ll_BFs15ll_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFu15ll_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15ll_BFu15ll_BFs15ll, BFs15ll_BFs15ll_BFu15ll_BFs15ll)
//============================================================================


struct  BFs15ll_BFs15ll_BFu15ll_BFs15s  {
  signed __tsi64 v1:15;
  signed __tsi64 v2:15;
  __tsu64 v3:15;
  signed short v4:15;
};
//SIG(1 BFs15ll_BFs15ll_BFu15ll_BFs15s) C1{ FL:15 FL:15 FL:15 Fs:15}



static void Test_BFs15ll_BFs15ll_BFu15ll_BFs15s()
{
  {
    init_simple_test("BFs15ll_BFs15ll_BFu15ll_BFs15s");
    static STRUCT_IF_C BFs15ll_BFs15ll_BFu15ll_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15ll_BFu15ll_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15ll_BFu15ll_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15ll_BFu15ll_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFu15ll_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15ll_BFu15ll_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFu15ll_BFs15s");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15ll_BFs15ll_BFu15ll_BFs15s");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15ll_BFs15ll_BFu15ll_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15ll_BFs15ll_BFu15ll_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFu15ll_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15ll_BFu15ll_BFs15s, BFs15ll_BFs15ll_BFu15ll_BFs15s)
//============================================================================


struct  BFs15ll_BFs15ll_BFu15ll_BFu15i  {
  signed __tsi64 v1:15;
  signed __tsi64 v2:15;
  __tsu64 v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15ll_BFs15ll_BFu15ll_BFu15i) C1{ FL:15 FL:15 FL:15 Fi:15}



static void Test_BFs15ll_BFs15ll_BFu15ll_BFu15i()
{
  {
    init_simple_test("BFs15ll_BFs15ll_BFu15ll_BFu15i");
    static STRUCT_IF_C BFs15ll_BFs15ll_BFu15ll_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15ll_BFu15ll_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15ll_BFu15ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15ll_BFu15ll_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFu15ll_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15ll_BFu15ll_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFu15ll_BFu15i");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15ll_BFs15ll_BFu15ll_BFu15i");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15ll_BFs15ll_BFu15ll_BFu15i");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15ll_BFs15ll_BFu15ll_BFu15i");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_ull(1LL<<14), "BFs15ll_BFs15ll_BFu15ll_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15ll_BFu15ll_BFu15i, BFs15ll_BFs15ll_BFu15ll_BFu15i)
//============================================================================


struct  BFs15ll_BFs15ll_BFu15ll_BFu15ll  {
  signed __tsi64 v1:15;
  signed __tsi64 v2:15;
  __tsu64 v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15ll_BFs15ll_BFu15ll_BFu15ll) C1{ FL:15 FL:15 FL:15 FL:15}



static void Test_BFs15ll_BFs15ll_BFu15ll_BFu15ll()
{
  {
    init_simple_test("BFs15ll_BFs15ll_BFu15ll_BFu15ll");
    static STRUCT_IF_C BFs15ll_BFs15ll_BFu15ll_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15ll_BFu15ll_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15ll_BFu15ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15ll_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15ll_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15ll_BFs15ll_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15ll_BFs15ll_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15ll_BFs15ll_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_ull(1LL<<14), "BFs15ll_BFs15ll_BFu15ll_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15ll_BFu15ll_BFu15ll, BFs15ll_BFs15ll_BFu15ll_BFu15ll)
//============================================================================


struct  BFs15ll_BFs15ll_BFu15ll_BFu15s  {
  signed __tsi64 v1:15;
  signed __tsi64 v2:15;
  __tsu64 v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15ll_BFs15ll_BFu15ll_BFu15s) C1{ FL:15 FL:15 FL:15 Fs:15}



static void Test_BFs15ll_BFs15ll_BFu15ll_BFu15s()
{
  {
    init_simple_test("BFs15ll_BFs15ll_BFu15ll_BFu15s");
    static STRUCT_IF_C BFs15ll_BFs15ll_BFu15ll_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15ll_BFu15ll_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15ll_BFu15ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15ll_BFu15ll_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFu15ll_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15ll_BFu15ll_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFu15ll_BFu15s");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15ll_BFs15ll_BFu15ll_BFu15s");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15ll_BFs15ll_BFu15ll_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15ll_BFs15ll_BFu15ll_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFs15ll_BFu15ll_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15ll_BFu15ll_BFu15s, BFs15ll_BFs15ll_BFu15ll_BFu15s)
//============================================================================


struct  BFs15ll_BFs15ll_BFu15s  {
  signed __tsi64 v1:15;
  signed __tsi64 v2:15;
  unsigned short v3:15;
};
//SIG(1 BFs15ll_BFs15ll_BFu15s) C1{ FL:15 FL:15 Fs:15}



static void Test_BFs15ll_BFs15ll_BFu15s()
{
  {
    init_simple_test("BFs15ll_BFs15ll_BFu15s");
    static STRUCT_IF_C BFs15ll_BFs15ll_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15ll_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15ll_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15ll_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15ll_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFs15ll_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15ll_BFu15s, BFs15ll_BFs15ll_BFu15s)
//============================================================================


struct  BFs15ll_BFs15ll_BFu15s_BFs15i  {
  signed __tsi64 v1:15;
  signed __tsi64 v2:15;
  unsigned short v3:15;
  signed int v4:15;
};
//SIG(1 BFs15ll_BFs15ll_BFu15s_BFs15i) C1{ FL:15 FL:15 Fs:15 Fi:15}



static void Test_BFs15ll_BFs15ll_BFu15s_BFs15i()
{
  {
    init_simple_test("BFs15ll_BFs15ll_BFu15s_BFs15i");
    static STRUCT_IF_C BFs15ll_BFs15ll_BFu15s_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15ll_BFu15s_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15ll_BFu15s_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15ll_BFu15s_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFu15s_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15ll_BFu15s_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFu15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15ll_BFu15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFs15ll_BFu15s_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFs15ll_BFu15s_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFu15s_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15ll_BFu15s_BFs15i, BFs15ll_BFs15ll_BFu15s_BFs15i)
//============================================================================


struct  BFs15ll_BFs15ll_BFu15s_BFs15ll  {
  signed __tsi64 v1:15;
  signed __tsi64 v2:15;
  unsigned short v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15ll_BFs15ll_BFu15s_BFs15ll) C1{ FL:15 FL:15 Fs:15 FL:15}



static void Test_BFs15ll_BFs15ll_BFu15s_BFs15ll()
{
  {
    init_simple_test("BFs15ll_BFs15ll_BFu15s_BFs15ll");
    static STRUCT_IF_C BFs15ll_BFs15ll_BFu15s_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15ll_BFu15s_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15ll_BFu15s_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15ll_BFu15s_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFu15s_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15ll_BFu15s_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFu15s_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15ll_BFu15s_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFs15ll_BFu15s_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFs15ll_BFu15s_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFu15s_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15ll_BFu15s_BFs15ll, BFs15ll_BFs15ll_BFu15s_BFs15ll)
//============================================================================


struct  BFs15ll_BFs15ll_BFu15s_BFs15s  {
  signed __tsi64 v1:15;
  signed __tsi64 v2:15;
  unsigned short v3:15;
  signed short v4:15;
};
//SIG(1 BFs15ll_BFs15ll_BFu15s_BFs15s) C1{ FL:15 FL:15 Fs:15 Fs:15}



static void Test_BFs15ll_BFs15ll_BFu15s_BFs15s()
{
  {
    init_simple_test("BFs15ll_BFs15ll_BFu15s_BFs15s");
    static STRUCT_IF_C BFs15ll_BFs15ll_BFu15s_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15ll_BFu15s_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15ll_BFu15s_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15ll_BFu15s_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFu15s_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15ll_BFu15s_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFu15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15ll_BFu15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFs15ll_BFu15s_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15ll_BFs15ll_BFu15s_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFu15s_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15ll_BFu15s_BFs15s, BFs15ll_BFs15ll_BFu15s_BFs15s)
//============================================================================


struct  BFs15ll_BFs15ll_BFu15s_BFu15i  {
  signed __tsi64 v1:15;
  signed __tsi64 v2:15;
  unsigned short v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15ll_BFs15ll_BFu15s_BFu15i) C1{ FL:15 FL:15 Fs:15 Fi:15}



static void Test_BFs15ll_BFs15ll_BFu15s_BFu15i()
{
  {
    init_simple_test("BFs15ll_BFs15ll_BFu15s_BFu15i");
    static STRUCT_IF_C BFs15ll_BFs15ll_BFu15s_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15ll_BFu15s_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15ll_BFu15s_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15ll_BFu15s_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFu15s_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15ll_BFu15s_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFu15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15ll_BFu15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFs15ll_BFu15s_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFs15ll_BFu15s_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFs15ll_BFu15s_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15ll_BFu15s_BFu15i, BFs15ll_BFs15ll_BFu15s_BFu15i)
//============================================================================


struct  BFs15ll_BFs15ll_BFu15s_BFu15ll  {
  signed __tsi64 v1:15;
  signed __tsi64 v2:15;
  unsigned short v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15ll_BFs15ll_BFu15s_BFu15ll) C1{ FL:15 FL:15 Fs:15 FL:15}



static void Test_BFs15ll_BFs15ll_BFu15s_BFu15ll()
{
  {
    init_simple_test("BFs15ll_BFs15ll_BFu15s_BFu15ll");
    static STRUCT_IF_C BFs15ll_BFs15ll_BFu15s_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15ll_BFu15s_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15ll_BFu15s_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15ll_BFu15s_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFu15s_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15ll_BFu15s_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFu15s_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15ll_BFu15s_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFs15ll_BFu15s_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFs15ll_BFu15s_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFs15ll_BFu15s_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15ll_BFu15s_BFu15ll, BFs15ll_BFs15ll_BFu15s_BFu15ll)
//============================================================================


struct  BFs15ll_BFs15ll_BFu15s_BFu15s  {
  signed __tsi64 v1:15;
  signed __tsi64 v2:15;
  unsigned short v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15ll_BFs15ll_BFu15s_BFu15s) C1{ FL:15 FL:15 Fs:15 Fs:15}



static void Test_BFs15ll_BFs15ll_BFu15s_BFu15s()
{
  {
    init_simple_test("BFs15ll_BFs15ll_BFu15s_BFu15s");
    static STRUCT_IF_C BFs15ll_BFs15ll_BFu15s_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15ll_BFu15s_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15ll_BFu15s_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15ll_BFu15s_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFu15s_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFs15ll_BFu15s_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15ll_BFu15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15ll_BFu15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFs15ll_BFu15s_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15ll_BFs15ll_BFu15s_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFs15ll_BFu15s_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15ll_BFu15s_BFu15s, BFs15ll_BFs15ll_BFu15s_BFu15s)
//============================================================================


struct  BFs15ll_BFs15s  {
  signed __tsi64 v1:15;
  signed short v2:15;
};
//SIG(1 BFs15ll_BFs15s) C1{ FL:15 Fs:15}



static void Test_BFs15ll_BFs15s()
{
  {
    init_simple_test("BFs15ll_BFs15s");
    static STRUCT_IF_C BFs15ll_BFs15s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs15ll_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15s, BFs15ll_BFs15s)
//============================================================================


struct  BFs15ll_BFs15s_BFs15i  {
  signed __tsi64 v1:15;
  signed short v2:15;
  signed int v3:15;
};
//SIG(1 BFs15ll_BFs15s_BFs15i) C1{ FL:15 Fs:15 Fi:15}



static void Test_BFs15ll_BFs15s_BFs15i()
{
  {
    init_simple_test("BFs15ll_BFs15s_BFs15i");
    static STRUCT_IF_C BFs15ll_BFs15s_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15s_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15s_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15s_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFs15s_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15s_BFs15i, BFs15ll_BFs15s_BFs15i)
//============================================================================


struct  BFs15ll_BFs15s_BFs15i_BFs15i  {
  signed __tsi64 v1:15;
  signed short v2:15;
  signed int v3:15;
  signed int v4:15;
};
//SIG(1 BFs15ll_BFs15s_BFs15i_BFs15i) C1{ FL:15 Fs:15 Fi:15 Fi:15}



static void Test_BFs15ll_BFs15s_BFs15i_BFs15i()
{
  {
    init_simple_test("BFs15ll_BFs15s_BFs15i_BFs15i");
    static STRUCT_IF_C BFs15ll_BFs15s_BFs15i_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15s_BFs15i_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15s_BFs15i_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15s_BFs15i_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFs15i_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFs15s_BFs15i_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFs15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15s_BFs15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFs15i_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFs15s_BFs15i_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFs15i_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15s_BFs15i_BFs15i, BFs15ll_BFs15s_BFs15i_BFs15i)
//============================================================================


struct  BFs15ll_BFs15s_BFs15i_BFs15ll  {
  signed __tsi64 v1:15;
  signed short v2:15;
  signed int v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15ll_BFs15s_BFs15i_BFs15ll) C1{ FL:15 Fs:15 Fi:15 FL:15}



static void Test_BFs15ll_BFs15s_BFs15i_BFs15ll()
{
  {
    init_simple_test("BFs15ll_BFs15s_BFs15i_BFs15ll");
    static STRUCT_IF_C BFs15ll_BFs15s_BFs15i_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15s_BFs15i_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15s_BFs15i_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15s_BFs15i_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFs15i_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFs15s_BFs15i_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFs15i_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15s_BFs15i_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFs15i_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFs15s_BFs15i_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFs15i_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15s_BFs15i_BFs15ll, BFs15ll_BFs15s_BFs15i_BFs15ll)
//============================================================================


struct  BFs15ll_BFs15s_BFs15i_BFs15s  {
  signed __tsi64 v1:15;
  signed short v2:15;
  signed int v3:15;
  signed short v4:15;
};
//SIG(1 BFs15ll_BFs15s_BFs15i_BFs15s) C1{ FL:15 Fs:15 Fi:15 Fs:15}



static void Test_BFs15ll_BFs15s_BFs15i_BFs15s()
{
  {
    init_simple_test("BFs15ll_BFs15s_BFs15i_BFs15s");
    static STRUCT_IF_C BFs15ll_BFs15s_BFs15i_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15s_BFs15i_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15s_BFs15i_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15s_BFs15i_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFs15i_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFs15s_BFs15i_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFs15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15s_BFs15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFs15i_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15ll_BFs15s_BFs15i_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFs15i_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15s_BFs15i_BFs15s, BFs15ll_BFs15s_BFs15i_BFs15s)
//============================================================================


struct  BFs15ll_BFs15s_BFs15i_BFu15i  {
  signed __tsi64 v1:15;
  signed short v2:15;
  signed int v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15ll_BFs15s_BFs15i_BFu15i) C1{ FL:15 Fs:15 Fi:15 Fi:15}



static void Test_BFs15ll_BFs15s_BFs15i_BFu15i()
{
  {
    init_simple_test("BFs15ll_BFs15s_BFs15i_BFu15i");
    static STRUCT_IF_C BFs15ll_BFs15s_BFs15i_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15s_BFs15i_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15s_BFs15i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15s_BFs15i_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFs15i_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFs15s_BFs15i_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFs15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15s_BFs15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFs15i_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFs15s_BFs15i_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFs15s_BFs15i_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15s_BFs15i_BFu15i, BFs15ll_BFs15s_BFs15i_BFu15i)
//============================================================================


struct  BFs15ll_BFs15s_BFs15i_BFu15ll  {
  signed __tsi64 v1:15;
  signed short v2:15;
  signed int v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15ll_BFs15s_BFs15i_BFu15ll) C1{ FL:15 Fs:15 Fi:15 FL:15}



static void Test_BFs15ll_BFs15s_BFs15i_BFu15ll()
{
  {
    init_simple_test("BFs15ll_BFs15s_BFs15i_BFu15ll");
    static STRUCT_IF_C BFs15ll_BFs15s_BFs15i_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15s_BFs15i_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15s_BFs15i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15s_BFs15i_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFs15i_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFs15s_BFs15i_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFs15i_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15s_BFs15i_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFs15i_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFs15s_BFs15i_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFs15s_BFs15i_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15s_BFs15i_BFu15ll, BFs15ll_BFs15s_BFs15i_BFu15ll)
//============================================================================


struct  BFs15ll_BFs15s_BFs15i_BFu15s  {
  signed __tsi64 v1:15;
  signed short v2:15;
  signed int v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15ll_BFs15s_BFs15i_BFu15s) C1{ FL:15 Fs:15 Fi:15 Fs:15}



static void Test_BFs15ll_BFs15s_BFs15i_BFu15s()
{
  {
    init_simple_test("BFs15ll_BFs15s_BFs15i_BFu15s");
    static STRUCT_IF_C BFs15ll_BFs15s_BFs15i_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15s_BFs15i_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15s_BFs15i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15s_BFs15i_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFs15i_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFs15s_BFs15i_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFs15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15s_BFs15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFs15i_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15ll_BFs15s_BFs15i_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFs15s_BFs15i_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15s_BFs15i_BFu15s, BFs15ll_BFs15s_BFs15i_BFu15s)
//============================================================================


struct  BFs15ll_BFs15s_BFs15ll  {
  signed __tsi64 v1:15;
  signed short v2:15;
  signed __tsi64 v3:15;
};
//SIG(1 BFs15ll_BFs15s_BFs15ll) C1{ FL:15 Fs:15 FL:15}



static void Test_BFs15ll_BFs15s_BFs15ll()
{
  {
    init_simple_test("BFs15ll_BFs15s_BFs15ll");
    static STRUCT_IF_C BFs15ll_BFs15s_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15s_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15s_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15s_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFs15s_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFs15ll");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15ll_BFs15s_BFs15ll");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15s_BFs15ll, BFs15ll_BFs15s_BFs15ll)
//============================================================================


struct  BFs15ll_BFs15s_BFs15ll_BFs15i  {
  signed __tsi64 v1:15;
  signed short v2:15;
  signed __tsi64 v3:15;
  signed int v4:15;
};
//SIG(1 BFs15ll_BFs15s_BFs15ll_BFs15i) C1{ FL:15 Fs:15 FL:15 Fi:15}



static void Test_BFs15ll_BFs15s_BFs15ll_BFs15i()
{
  {
    init_simple_test("BFs15ll_BFs15s_BFs15ll_BFs15i");
    static STRUCT_IF_C BFs15ll_BFs15s_BFs15ll_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15s_BFs15ll_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15s_BFs15ll_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15s_BFs15ll_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFs15ll_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFs15s_BFs15ll_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFs15ll_BFs15i");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15ll_BFs15s_BFs15ll_BFs15i");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFs15ll_BFs15i");
    set_bf_and_test(lv, v4, 5, 6, 15, 1, "BFs15ll_BFs15s_BFs15ll_BFs15i");
    set_bf_and_test(lv, v4, 5, 6, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFs15ll_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15s_BFs15ll_BFs15i, BFs15ll_BFs15s_BFs15ll_BFs15i)
//============================================================================


struct  BFs15ll_BFs15s_BFs15ll_BFs15ll  {
  signed __tsi64 v1:15;
  signed short v2:15;
  signed __tsi64 v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15ll_BFs15s_BFs15ll_BFs15ll) C1{ FL:15 Fs:15 FL:15 FL:15}



static void Test_BFs15ll_BFs15s_BFs15ll_BFs15ll()
{
  {
    init_simple_test("BFs15ll_BFs15s_BFs15ll_BFs15ll");
    static STRUCT_IF_C BFs15ll_BFs15s_BFs15ll_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15s_BFs15ll_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15s_BFs15ll_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15s_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFs15s_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15ll_BFs15s_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v4, 5, 6, 15, 1, "BFs15ll_BFs15s_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v4, 5, 6, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFs15ll_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15s_BFs15ll_BFs15ll, BFs15ll_BFs15s_BFs15ll_BFs15ll)
//============================================================================


struct  BFs15ll_BFs15s_BFs15ll_BFs15s  {
  signed __tsi64 v1:15;
  signed short v2:15;
  signed __tsi64 v3:15;
  signed short v4:15;
};
//SIG(1 BFs15ll_BFs15s_BFs15ll_BFs15s) C1{ FL:15 Fs:15 FL:15 Fs:15}



static void Test_BFs15ll_BFs15s_BFs15ll_BFs15s()
{
  {
    init_simple_test("BFs15ll_BFs15s_BFs15ll_BFs15s");
    static STRUCT_IF_C BFs15ll_BFs15s_BFs15ll_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15s_BFs15ll_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15s_BFs15ll_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15s_BFs15ll_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFs15ll_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFs15s_BFs15ll_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFs15ll_BFs15s");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15ll_BFs15s_BFs15ll_BFs15s");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFs15ll_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15ll_BFs15s_BFs15ll_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFs15ll_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15s_BFs15ll_BFs15s, BFs15ll_BFs15s_BFs15ll_BFs15s)
//============================================================================


struct  BFs15ll_BFs15s_BFs15ll_BFu15i  {
  signed __tsi64 v1:15;
  signed short v2:15;
  signed __tsi64 v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15ll_BFs15s_BFs15ll_BFu15i) C1{ FL:15 Fs:15 FL:15 Fi:15}



static void Test_BFs15ll_BFs15s_BFs15ll_BFu15i()
{
  {
    init_simple_test("BFs15ll_BFs15s_BFs15ll_BFu15i");
    static STRUCT_IF_C BFs15ll_BFs15s_BFs15ll_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15s_BFs15ll_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15s_BFs15ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15s_BFs15ll_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFs15ll_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFs15s_BFs15ll_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFs15ll_BFu15i");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15ll_BFs15s_BFs15ll_BFu15i");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFs15ll_BFu15i");
    set_bf_and_test(lv, v4, 5, 6, 15, 1, "BFs15ll_BFs15s_BFs15ll_BFu15i");
    set_bf_and_test(lv, v4, 5, 6, 15, hide_ull(1LL<<14), "BFs15ll_BFs15s_BFs15ll_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15s_BFs15ll_BFu15i, BFs15ll_BFs15s_BFs15ll_BFu15i)
//============================================================================


struct  BFs15ll_BFs15s_BFs15ll_BFu15ll  {
  signed __tsi64 v1:15;
  signed short v2:15;
  signed __tsi64 v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15ll_BFs15s_BFs15ll_BFu15ll) C1{ FL:15 Fs:15 FL:15 FL:15}



static void Test_BFs15ll_BFs15s_BFs15ll_BFu15ll()
{
  {
    init_simple_test("BFs15ll_BFs15s_BFs15ll_BFu15ll");
    static STRUCT_IF_C BFs15ll_BFs15s_BFs15ll_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15s_BFs15ll_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15s_BFs15ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15s_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFs15s_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15ll_BFs15s_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v4, 5, 6, 15, 1, "BFs15ll_BFs15s_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v4, 5, 6, 15, hide_ull(1LL<<14), "BFs15ll_BFs15s_BFs15ll_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15s_BFs15ll_BFu15ll, BFs15ll_BFs15s_BFs15ll_BFu15ll)
//============================================================================


struct  BFs15ll_BFs15s_BFs15ll_BFu15s  {
  signed __tsi64 v1:15;
  signed short v2:15;
  signed __tsi64 v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15ll_BFs15s_BFs15ll_BFu15s) C1{ FL:15 Fs:15 FL:15 Fs:15}



static void Test_BFs15ll_BFs15s_BFs15ll_BFu15s()
{
  {
    init_simple_test("BFs15ll_BFs15s_BFs15ll_BFu15s");
    static STRUCT_IF_C BFs15ll_BFs15s_BFs15ll_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15s_BFs15ll_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15s_BFs15ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15s_BFs15ll_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFs15ll_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFs15s_BFs15ll_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFs15ll_BFu15s");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15ll_BFs15s_BFs15ll_BFu15s");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFs15ll_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15ll_BFs15s_BFs15ll_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFs15s_BFs15ll_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15s_BFs15ll_BFu15s, BFs15ll_BFs15s_BFs15ll_BFu15s)
//============================================================================


struct  BFs15ll_BFs15s_BFs15s  {
  signed __tsi64 v1:15;
  signed short v2:15;
  signed short v3:15;
};
//SIG(1 BFs15ll_BFs15s_BFs15s) C1{ FL:15 Fs:15 Fs:15}



static void Test_BFs15ll_BFs15s_BFs15s()
{
  {
    init_simple_test("BFs15ll_BFs15s_BFs15s");
    static STRUCT_IF_C BFs15ll_BFs15s_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15s_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15s_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15s_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFs15s_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15s_BFs15s, BFs15ll_BFs15s_BFs15s)
//============================================================================


struct  BFs15ll_BFs15s_BFs15s_BFs15i  {
  signed __tsi64 v1:15;
  signed short v2:15;
  signed short v3:15;
  signed int v4:15;
};
//SIG(1 BFs15ll_BFs15s_BFs15s_BFs15i) C1{ FL:15 Fs:15 Fs:15 Fi:15}



static void Test_BFs15ll_BFs15s_BFs15s_BFs15i()
{
  {
    init_simple_test("BFs15ll_BFs15s_BFs15s_BFs15i");
    static STRUCT_IF_C BFs15ll_BFs15s_BFs15s_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15s_BFs15s_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15s_BFs15s_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15s_BFs15s_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFs15s_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFs15s_BFs15s_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFs15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15s_BFs15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFs15s_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFs15s_BFs15s_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFs15s_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15s_BFs15s_BFs15i, BFs15ll_BFs15s_BFs15s_BFs15i)
//============================================================================


struct  BFs15ll_BFs15s_BFs15s_BFs15ll  {
  signed __tsi64 v1:15;
  signed short v2:15;
  signed short v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15ll_BFs15s_BFs15s_BFs15ll) C1{ FL:15 Fs:15 Fs:15 FL:15}



static void Test_BFs15ll_BFs15s_BFs15s_BFs15ll()
{
  {
    init_simple_test("BFs15ll_BFs15s_BFs15s_BFs15ll");
    static STRUCT_IF_C BFs15ll_BFs15s_BFs15s_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15s_BFs15s_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15s_BFs15s_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15s_BFs15s_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFs15s_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFs15s_BFs15s_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFs15s_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15s_BFs15s_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFs15s_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFs15s_BFs15s_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFs15s_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15s_BFs15s_BFs15ll, BFs15ll_BFs15s_BFs15s_BFs15ll)
//============================================================================


struct  BFs15ll_BFs15s_BFs15s_BFs15s  {
  signed __tsi64 v1:15;
  signed short v2:15;
  signed short v3:15;
  signed short v4:15;
};
//SIG(1 BFs15ll_BFs15s_BFs15s_BFs15s) C1{ FL:15 Fs:15 Fs:15 Fs:15}



static void Test_BFs15ll_BFs15s_BFs15s_BFs15s()
{
  {
    init_simple_test("BFs15ll_BFs15s_BFs15s_BFs15s");
    static STRUCT_IF_C BFs15ll_BFs15s_BFs15s_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15s_BFs15s_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15s_BFs15s_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15s_BFs15s_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFs15s_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFs15s_BFs15s_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFs15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15s_BFs15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFs15s_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15ll_BFs15s_BFs15s_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFs15s_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15s_BFs15s_BFs15s, BFs15ll_BFs15s_BFs15s_BFs15s)
//============================================================================


struct  BFs15ll_BFs15s_BFs15s_BFu15i  {
  signed __tsi64 v1:15;
  signed short v2:15;
  signed short v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15ll_BFs15s_BFs15s_BFu15i) C1{ FL:15 Fs:15 Fs:15 Fi:15}



static void Test_BFs15ll_BFs15s_BFs15s_BFu15i()
{
  {
    init_simple_test("BFs15ll_BFs15s_BFs15s_BFu15i");
    static STRUCT_IF_C BFs15ll_BFs15s_BFs15s_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15s_BFs15s_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15s_BFs15s_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15s_BFs15s_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFs15s_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFs15s_BFs15s_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFs15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15s_BFs15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFs15s_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFs15s_BFs15s_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFs15s_BFs15s_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15s_BFs15s_BFu15i, BFs15ll_BFs15s_BFs15s_BFu15i)
//============================================================================


struct  BFs15ll_BFs15s_BFs15s_BFu15ll  {
  signed __tsi64 v1:15;
  signed short v2:15;
  signed short v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15ll_BFs15s_BFs15s_BFu15ll) C1{ FL:15 Fs:15 Fs:15 FL:15}



static void Test_BFs15ll_BFs15s_BFs15s_BFu15ll()
{
  {
    init_simple_test("BFs15ll_BFs15s_BFs15s_BFu15ll");
    static STRUCT_IF_C BFs15ll_BFs15s_BFs15s_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15s_BFs15s_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15s_BFs15s_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15s_BFs15s_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFs15s_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFs15s_BFs15s_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFs15s_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15s_BFs15s_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFs15s_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFs15s_BFs15s_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFs15s_BFs15s_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15s_BFs15s_BFu15ll, BFs15ll_BFs15s_BFs15s_BFu15ll)
//============================================================================


struct  BFs15ll_BFs15s_BFs15s_BFu15s  {
  signed __tsi64 v1:15;
  signed short v2:15;
  signed short v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15ll_BFs15s_BFs15s_BFu15s) C1{ FL:15 Fs:15 Fs:15 Fs:15}



static void Test_BFs15ll_BFs15s_BFs15s_BFu15s()
{
  {
    init_simple_test("BFs15ll_BFs15s_BFs15s_BFu15s");
    static STRUCT_IF_C BFs15ll_BFs15s_BFs15s_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15s_BFs15s_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15s_BFs15s_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15s_BFs15s_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFs15s_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFs15s_BFs15s_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFs15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15s_BFs15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFs15s_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15ll_BFs15s_BFs15s_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFs15s_BFs15s_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15s_BFs15s_BFu15s, BFs15ll_BFs15s_BFs15s_BFu15s)
//============================================================================


struct  BFs15ll_BFs15s_BFu15i  {
  signed __tsi64 v1:15;
  signed short v2:15;
  unsigned int v3:15;
};
//SIG(1 BFs15ll_BFs15s_BFu15i) C1{ FL:15 Fs:15 Fi:15}



static void Test_BFs15ll_BFs15s_BFu15i()
{
  {
    init_simple_test("BFs15ll_BFs15s_BFu15i");
    static STRUCT_IF_C BFs15ll_BFs15s_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15s_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15s_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15s_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFs15s_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFs15s_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15s_BFu15i, BFs15ll_BFs15s_BFu15i)
//============================================================================


struct  BFs15ll_BFs15s_BFu15i_BFs15i  {
  signed __tsi64 v1:15;
  signed short v2:15;
  unsigned int v3:15;
  signed int v4:15;
};
//SIG(1 BFs15ll_BFs15s_BFu15i_BFs15i) C1{ FL:15 Fs:15 Fi:15 Fi:15}



static void Test_BFs15ll_BFs15s_BFu15i_BFs15i()
{
  {
    init_simple_test("BFs15ll_BFs15s_BFu15i_BFs15i");
    static STRUCT_IF_C BFs15ll_BFs15s_BFu15i_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15s_BFu15i_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15s_BFu15i_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15s_BFu15i_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFu15i_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFs15s_BFu15i_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFu15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15s_BFu15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFs15s_BFu15i_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFs15s_BFu15i_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFu15i_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15s_BFu15i_BFs15i, BFs15ll_BFs15s_BFu15i_BFs15i)
//============================================================================


struct  BFs15ll_BFs15s_BFu15i_BFs15ll  {
  signed __tsi64 v1:15;
  signed short v2:15;
  unsigned int v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15ll_BFs15s_BFu15i_BFs15ll) C1{ FL:15 Fs:15 Fi:15 FL:15}



static void Test_BFs15ll_BFs15s_BFu15i_BFs15ll()
{
  {
    init_simple_test("BFs15ll_BFs15s_BFu15i_BFs15ll");
    static STRUCT_IF_C BFs15ll_BFs15s_BFu15i_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15s_BFu15i_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15s_BFu15i_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15s_BFu15i_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFu15i_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFs15s_BFu15i_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFu15i_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15s_BFu15i_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFs15s_BFu15i_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFs15s_BFu15i_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFu15i_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15s_BFu15i_BFs15ll, BFs15ll_BFs15s_BFu15i_BFs15ll)
//============================================================================


struct  BFs15ll_BFs15s_BFu15i_BFs15s  {
  signed __tsi64 v1:15;
  signed short v2:15;
  unsigned int v3:15;
  signed short v4:15;
};
//SIG(1 BFs15ll_BFs15s_BFu15i_BFs15s) C1{ FL:15 Fs:15 Fi:15 Fs:15}



static void Test_BFs15ll_BFs15s_BFu15i_BFs15s()
{
  {
    init_simple_test("BFs15ll_BFs15s_BFu15i_BFs15s");
    static STRUCT_IF_C BFs15ll_BFs15s_BFu15i_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15s_BFu15i_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15s_BFu15i_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15s_BFu15i_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFu15i_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFs15s_BFu15i_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFu15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15s_BFu15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFs15s_BFu15i_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15ll_BFs15s_BFu15i_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFu15i_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15s_BFu15i_BFs15s, BFs15ll_BFs15s_BFu15i_BFs15s)
//============================================================================


struct  BFs15ll_BFs15s_BFu15i_BFu15i  {
  signed __tsi64 v1:15;
  signed short v2:15;
  unsigned int v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15ll_BFs15s_BFu15i_BFu15i) C1{ FL:15 Fs:15 Fi:15 Fi:15}



static void Test_BFs15ll_BFs15s_BFu15i_BFu15i()
{
  {
    init_simple_test("BFs15ll_BFs15s_BFu15i_BFu15i");
    static STRUCT_IF_C BFs15ll_BFs15s_BFu15i_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15s_BFu15i_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15s_BFu15i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15s_BFu15i_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFu15i_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFs15s_BFu15i_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFu15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15s_BFu15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFs15s_BFu15i_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFs15s_BFu15i_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFs15s_BFu15i_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15s_BFu15i_BFu15i, BFs15ll_BFs15s_BFu15i_BFu15i)
//============================================================================


struct  BFs15ll_BFs15s_BFu15i_BFu15ll  {
  signed __tsi64 v1:15;
  signed short v2:15;
  unsigned int v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15ll_BFs15s_BFu15i_BFu15ll) C1{ FL:15 Fs:15 Fi:15 FL:15}



static void Test_BFs15ll_BFs15s_BFu15i_BFu15ll()
{
  {
    init_simple_test("BFs15ll_BFs15s_BFu15i_BFu15ll");
    static STRUCT_IF_C BFs15ll_BFs15s_BFu15i_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15s_BFu15i_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15s_BFu15i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15s_BFu15i_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFu15i_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFs15s_BFu15i_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFu15i_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15s_BFu15i_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFs15s_BFu15i_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFs15s_BFu15i_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFs15s_BFu15i_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15s_BFu15i_BFu15ll, BFs15ll_BFs15s_BFu15i_BFu15ll)
//============================================================================


struct  BFs15ll_BFs15s_BFu15i_BFu15s  {
  signed __tsi64 v1:15;
  signed short v2:15;
  unsigned int v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15ll_BFs15s_BFu15i_BFu15s) C1{ FL:15 Fs:15 Fi:15 Fs:15}



static void Test_BFs15ll_BFs15s_BFu15i_BFu15s()
{
  {
    init_simple_test("BFs15ll_BFs15s_BFu15i_BFu15s");
    static STRUCT_IF_C BFs15ll_BFs15s_BFu15i_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15s_BFu15i_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15s_BFu15i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15s_BFu15i_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFu15i_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFs15s_BFu15i_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFu15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15s_BFu15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFs15s_BFu15i_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15ll_BFs15s_BFu15i_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFs15s_BFu15i_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15s_BFu15i_BFu15s, BFs15ll_BFs15s_BFu15i_BFu15s)
//============================================================================


struct  BFs15ll_BFs15s_BFu15ll  {
  signed __tsi64 v1:15;
  signed short v2:15;
  __tsu64 v3:15;
};
//SIG(1 BFs15ll_BFs15s_BFu15ll) C1{ FL:15 Fs:15 FL:15}



static void Test_BFs15ll_BFs15s_BFu15ll()
{
  {
    init_simple_test("BFs15ll_BFs15s_BFu15ll");
    static STRUCT_IF_C BFs15ll_BFs15s_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15s_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15s_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15s_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFs15s_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFu15ll");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15ll_BFs15s_BFu15ll");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFs15s_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15s_BFu15ll, BFs15ll_BFs15s_BFu15ll)
//============================================================================


struct  BFs15ll_BFs15s_BFu15ll_BFs15i  {
  signed __tsi64 v1:15;
  signed short v2:15;
  __tsu64 v3:15;
  signed int v4:15;
};
//SIG(1 BFs15ll_BFs15s_BFu15ll_BFs15i) C1{ FL:15 Fs:15 FL:15 Fi:15}



static void Test_BFs15ll_BFs15s_BFu15ll_BFs15i()
{
  {
    init_simple_test("BFs15ll_BFs15s_BFu15ll_BFs15i");
    static STRUCT_IF_C BFs15ll_BFs15s_BFu15ll_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15s_BFu15ll_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15s_BFu15ll_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15s_BFu15ll_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFu15ll_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFs15s_BFu15ll_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFu15ll_BFs15i");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15ll_BFs15s_BFu15ll_BFs15i");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFs15s_BFu15ll_BFs15i");
    set_bf_and_test(lv, v4, 5, 6, 15, 1, "BFs15ll_BFs15s_BFu15ll_BFs15i");
    set_bf_and_test(lv, v4, 5, 6, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFu15ll_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15s_BFu15ll_BFs15i, BFs15ll_BFs15s_BFu15ll_BFs15i)
//============================================================================


struct  BFs15ll_BFs15s_BFu15ll_BFs15ll  {
  signed __tsi64 v1:15;
  signed short v2:15;
  __tsu64 v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15ll_BFs15s_BFu15ll_BFs15ll) C1{ FL:15 Fs:15 FL:15 FL:15}



static void Test_BFs15ll_BFs15s_BFu15ll_BFs15ll()
{
  {
    init_simple_test("BFs15ll_BFs15s_BFu15ll_BFs15ll");
    static STRUCT_IF_C BFs15ll_BFs15s_BFu15ll_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15s_BFu15ll_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15s_BFu15ll_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15s_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFs15s_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15ll_BFs15s_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFs15s_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v4, 5, 6, 15, 1, "BFs15ll_BFs15s_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v4, 5, 6, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFu15ll_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15s_BFu15ll_BFs15ll, BFs15ll_BFs15s_BFu15ll_BFs15ll)
//============================================================================


struct  BFs15ll_BFs15s_BFu15ll_BFs15s  {
  signed __tsi64 v1:15;
  signed short v2:15;
  __tsu64 v3:15;
  signed short v4:15;
};
//SIG(1 BFs15ll_BFs15s_BFu15ll_BFs15s) C1{ FL:15 Fs:15 FL:15 Fs:15}



static void Test_BFs15ll_BFs15s_BFu15ll_BFs15s()
{
  {
    init_simple_test("BFs15ll_BFs15s_BFu15ll_BFs15s");
    static STRUCT_IF_C BFs15ll_BFs15s_BFu15ll_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15s_BFu15ll_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15s_BFu15ll_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15s_BFu15ll_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFu15ll_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFs15s_BFu15ll_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFu15ll_BFs15s");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15ll_BFs15s_BFu15ll_BFs15s");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFs15s_BFu15ll_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15ll_BFs15s_BFu15ll_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFu15ll_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15s_BFu15ll_BFs15s, BFs15ll_BFs15s_BFu15ll_BFs15s)
//============================================================================


struct  BFs15ll_BFs15s_BFu15ll_BFu15i  {
  signed __tsi64 v1:15;
  signed short v2:15;
  __tsu64 v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15ll_BFs15s_BFu15ll_BFu15i) C1{ FL:15 Fs:15 FL:15 Fi:15}



static void Test_BFs15ll_BFs15s_BFu15ll_BFu15i()
{
  {
    init_simple_test("BFs15ll_BFs15s_BFu15ll_BFu15i");
    static STRUCT_IF_C BFs15ll_BFs15s_BFu15ll_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15s_BFu15ll_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15s_BFu15ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15s_BFu15ll_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFu15ll_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFs15s_BFu15ll_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFu15ll_BFu15i");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15ll_BFs15s_BFu15ll_BFu15i");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFs15s_BFu15ll_BFu15i");
    set_bf_and_test(lv, v4, 5, 6, 15, 1, "BFs15ll_BFs15s_BFu15ll_BFu15i");
    set_bf_and_test(lv, v4, 5, 6, 15, hide_ull(1LL<<14), "BFs15ll_BFs15s_BFu15ll_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15s_BFu15ll_BFu15i, BFs15ll_BFs15s_BFu15ll_BFu15i)
//============================================================================


struct  BFs15ll_BFs15s_BFu15ll_BFu15ll  {
  signed __tsi64 v1:15;
  signed short v2:15;
  __tsu64 v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15ll_BFs15s_BFu15ll_BFu15ll) C1{ FL:15 Fs:15 FL:15 FL:15}



static void Test_BFs15ll_BFs15s_BFu15ll_BFu15ll()
{
  {
    init_simple_test("BFs15ll_BFs15s_BFu15ll_BFu15ll");
    static STRUCT_IF_C BFs15ll_BFs15s_BFu15ll_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15s_BFu15ll_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15s_BFu15ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15s_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFs15s_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15ll_BFs15s_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFs15s_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v4, 5, 6, 15, 1, "BFs15ll_BFs15s_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v4, 5, 6, 15, hide_ull(1LL<<14), "BFs15ll_BFs15s_BFu15ll_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15s_BFu15ll_BFu15ll, BFs15ll_BFs15s_BFu15ll_BFu15ll)
//============================================================================


struct  BFs15ll_BFs15s_BFu15ll_BFu15s  {
  signed __tsi64 v1:15;
  signed short v2:15;
  __tsu64 v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15ll_BFs15s_BFu15ll_BFu15s) C1{ FL:15 Fs:15 FL:15 Fs:15}



static void Test_BFs15ll_BFs15s_BFu15ll_BFu15s()
{
  {
    init_simple_test("BFs15ll_BFs15s_BFu15ll_BFu15s");
    static STRUCT_IF_C BFs15ll_BFs15s_BFu15ll_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15s_BFu15ll_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15s_BFu15ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15s_BFu15ll_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFu15ll_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFs15s_BFu15ll_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFu15ll_BFu15s");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15ll_BFs15s_BFu15ll_BFu15s");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFs15s_BFu15ll_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15ll_BFs15s_BFu15ll_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFs15s_BFu15ll_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15s_BFu15ll_BFu15s, BFs15ll_BFs15s_BFu15ll_BFu15s)
//============================================================================


struct  BFs15ll_BFs15s_BFu15s  {
  signed __tsi64 v1:15;
  signed short v2:15;
  unsigned short v3:15;
};
//SIG(1 BFs15ll_BFs15s_BFu15s) C1{ FL:15 Fs:15 Fs:15}



static void Test_BFs15ll_BFs15s_BFu15s()
{
  {
    init_simple_test("BFs15ll_BFs15s_BFu15s");
    static STRUCT_IF_C BFs15ll_BFs15s_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15s_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15s_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15s_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFs15s_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFs15s_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15s_BFu15s, BFs15ll_BFs15s_BFu15s)
//============================================================================


struct  BFs15ll_BFs15s_BFu15s_BFs15i  {
  signed __tsi64 v1:15;
  signed short v2:15;
  unsigned short v3:15;
  signed int v4:15;
};
//SIG(1 BFs15ll_BFs15s_BFu15s_BFs15i) C1{ FL:15 Fs:15 Fs:15 Fi:15}



static void Test_BFs15ll_BFs15s_BFu15s_BFs15i()
{
  {
    init_simple_test("BFs15ll_BFs15s_BFu15s_BFs15i");
    static STRUCT_IF_C BFs15ll_BFs15s_BFu15s_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15s_BFu15s_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15s_BFu15s_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15s_BFu15s_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFu15s_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFs15s_BFu15s_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFu15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15s_BFu15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFs15s_BFu15s_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFs15s_BFu15s_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFu15s_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15s_BFu15s_BFs15i, BFs15ll_BFs15s_BFu15s_BFs15i)
//============================================================================


struct  BFs15ll_BFs15s_BFu15s_BFs15ll  {
  signed __tsi64 v1:15;
  signed short v2:15;
  unsigned short v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15ll_BFs15s_BFu15s_BFs15ll) C1{ FL:15 Fs:15 Fs:15 FL:15}



static void Test_BFs15ll_BFs15s_BFu15s_BFs15ll()
{
  {
    init_simple_test("BFs15ll_BFs15s_BFu15s_BFs15ll");
    static STRUCT_IF_C BFs15ll_BFs15s_BFu15s_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15s_BFu15s_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15s_BFu15s_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15s_BFu15s_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFu15s_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFs15s_BFu15s_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFu15s_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15s_BFu15s_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFs15s_BFu15s_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFs15s_BFu15s_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFu15s_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15s_BFu15s_BFs15ll, BFs15ll_BFs15s_BFu15s_BFs15ll)
//============================================================================


struct  BFs15ll_BFs15s_BFu15s_BFs15s  {
  signed __tsi64 v1:15;
  signed short v2:15;
  unsigned short v3:15;
  signed short v4:15;
};
//SIG(1 BFs15ll_BFs15s_BFu15s_BFs15s) C1{ FL:15 Fs:15 Fs:15 Fs:15}



static void Test_BFs15ll_BFs15s_BFu15s_BFs15s()
{
  {
    init_simple_test("BFs15ll_BFs15s_BFu15s_BFs15s");
    static STRUCT_IF_C BFs15ll_BFs15s_BFu15s_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15s_BFu15s_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15s_BFu15s_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15s_BFu15s_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFu15s_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFs15s_BFu15s_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFu15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15s_BFu15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFs15s_BFu15s_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15ll_BFs15s_BFu15s_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFu15s_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15s_BFu15s_BFs15s, BFs15ll_BFs15s_BFu15s_BFs15s)
//============================================================================


struct  BFs15ll_BFs15s_BFu15s_BFu15i  {
  signed __tsi64 v1:15;
  signed short v2:15;
  unsigned short v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15ll_BFs15s_BFu15s_BFu15i) C1{ FL:15 Fs:15 Fs:15 Fi:15}



static void Test_BFs15ll_BFs15s_BFu15s_BFu15i()
{
  {
    init_simple_test("BFs15ll_BFs15s_BFu15s_BFu15i");
    static STRUCT_IF_C BFs15ll_BFs15s_BFu15s_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15s_BFu15s_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15s_BFu15s_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15s_BFu15s_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFu15s_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFs15s_BFu15s_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFu15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15s_BFu15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFs15s_BFu15s_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFs15s_BFu15s_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFs15s_BFu15s_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15s_BFu15s_BFu15i, BFs15ll_BFs15s_BFu15s_BFu15i)
//============================================================================


struct  BFs15ll_BFs15s_BFu15s_BFu15ll  {
  signed __tsi64 v1:15;
  signed short v2:15;
  unsigned short v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15ll_BFs15s_BFu15s_BFu15ll) C1{ FL:15 Fs:15 Fs:15 FL:15}



static void Test_BFs15ll_BFs15s_BFu15s_BFu15ll()
{
  {
    init_simple_test("BFs15ll_BFs15s_BFu15s_BFu15ll");
    static STRUCT_IF_C BFs15ll_BFs15s_BFu15s_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15s_BFu15s_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15s_BFu15s_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15s_BFu15s_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFu15s_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFs15s_BFu15s_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFu15s_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15s_BFu15s_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFs15s_BFu15s_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFs15s_BFu15s_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFs15s_BFu15s_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15s_BFu15s_BFu15ll, BFs15ll_BFs15s_BFu15s_BFu15ll)
//============================================================================


struct  BFs15ll_BFs15s_BFu15s_BFu15s  {
  signed __tsi64 v1:15;
  signed short v2:15;
  unsigned short v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15ll_BFs15s_BFu15s_BFu15s) C1{ FL:15 Fs:15 Fs:15 Fs:15}



static void Test_BFs15ll_BFs15s_BFu15s_BFu15s()
{
  {
    init_simple_test("BFs15ll_BFs15s_BFu15s_BFu15s");
    static STRUCT_IF_C BFs15ll_BFs15s_BFu15s_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFs15s_BFu15s_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFs15s_BFu15s_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFs15s_BFu15s_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFu15s_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFs15s_BFu15s_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFs15s_BFu15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFs15s_BFu15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFs15s_BFu15s_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15ll_BFs15s_BFu15s_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFs15s_BFu15s_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFs15s_BFu15s_BFu15s, BFs15ll_BFs15s_BFu15s_BFu15s)
//============================================================================


struct  BFs15ll_BFu15i  {
  signed __tsi64 v1:15;
  unsigned int v2:15;
};
//SIG(1 BFs15ll_BFu15i) C1{ FL:15 Fi:15}



static void Test_BFs15ll_BFu15i()
{
  {
    init_simple_test("BFs15ll_BFu15i");
    static STRUCT_IF_C BFs15ll_BFu15i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs15ll_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15i, BFs15ll_BFu15i)
//============================================================================


struct  BFs15ll_BFu15i_BFs15i  {
  signed __tsi64 v1:15;
  unsigned int v2:15;
  signed int v3:15;
};
//SIG(1 BFs15ll_BFu15i_BFs15i) C1{ FL:15 Fi:15 Fi:15}



static void Test_BFs15ll_BFu15i_BFs15i()
{
  {
    init_simple_test("BFs15ll_BFu15i_BFs15i");
    static STRUCT_IF_C BFs15ll_BFu15i_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15i_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15i_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15i_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15i_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15i_BFs15i, BFs15ll_BFu15i_BFs15i)
//============================================================================


struct  BFs15ll_BFu15i_BFs15i_BFs15i  {
  signed __tsi64 v1:15;
  unsigned int v2:15;
  signed int v3:15;
  signed int v4:15;
};
//SIG(1 BFs15ll_BFu15i_BFs15i_BFs15i) C1{ FL:15 Fi:15 Fi:15 Fi:15}



static void Test_BFs15ll_BFu15i_BFs15i_BFs15i()
{
  {
    init_simple_test("BFs15ll_BFu15i_BFs15i_BFs15i");
    static STRUCT_IF_C BFs15ll_BFu15i_BFs15i_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15i_BFs15i_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15i_BFs15i_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15i_BFs15i_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFs15i_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15i_BFs15i_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFs15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15i_BFs15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFs15i_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFu15i_BFs15i_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFs15i_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15i_BFs15i_BFs15i, BFs15ll_BFu15i_BFs15i_BFs15i)
//============================================================================


struct  BFs15ll_BFu15i_BFs15i_BFs15ll  {
  signed __tsi64 v1:15;
  unsigned int v2:15;
  signed int v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15ll_BFu15i_BFs15i_BFs15ll) C1{ FL:15 Fi:15 Fi:15 FL:15}



static void Test_BFs15ll_BFu15i_BFs15i_BFs15ll()
{
  {
    init_simple_test("BFs15ll_BFu15i_BFs15i_BFs15ll");
    static STRUCT_IF_C BFs15ll_BFu15i_BFs15i_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15i_BFs15i_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15i_BFs15i_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15i_BFs15i_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFs15i_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15i_BFs15i_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFs15i_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15i_BFs15i_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFs15i_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFu15i_BFs15i_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFs15i_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15i_BFs15i_BFs15ll, BFs15ll_BFu15i_BFs15i_BFs15ll)
//============================================================================


struct  BFs15ll_BFu15i_BFs15i_BFs15s  {
  signed __tsi64 v1:15;
  unsigned int v2:15;
  signed int v3:15;
  signed short v4:15;
};
//SIG(1 BFs15ll_BFu15i_BFs15i_BFs15s) C1{ FL:15 Fi:15 Fi:15 Fs:15}



static void Test_BFs15ll_BFu15i_BFs15i_BFs15s()
{
  {
    init_simple_test("BFs15ll_BFu15i_BFs15i_BFs15s");
    static STRUCT_IF_C BFs15ll_BFu15i_BFs15i_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15i_BFs15i_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15i_BFs15i_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15i_BFs15i_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFs15i_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15i_BFs15i_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFs15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15i_BFs15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFs15i_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15ll_BFu15i_BFs15i_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFs15i_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15i_BFs15i_BFs15s, BFs15ll_BFu15i_BFs15i_BFs15s)
//============================================================================


struct  BFs15ll_BFu15i_BFs15i_BFu15i  {
  signed __tsi64 v1:15;
  unsigned int v2:15;
  signed int v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15ll_BFu15i_BFs15i_BFu15i) C1{ FL:15 Fi:15 Fi:15 Fi:15}



static void Test_BFs15ll_BFu15i_BFs15i_BFu15i()
{
  {
    init_simple_test("BFs15ll_BFu15i_BFs15i_BFu15i");
    static STRUCT_IF_C BFs15ll_BFu15i_BFs15i_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15i_BFs15i_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15i_BFs15i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15i_BFs15i_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFs15i_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15i_BFs15i_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFs15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15i_BFs15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFs15i_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFu15i_BFs15i_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFs15i_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15i_BFs15i_BFu15i, BFs15ll_BFu15i_BFs15i_BFu15i)
//============================================================================


struct  BFs15ll_BFu15i_BFs15i_BFu15ll  {
  signed __tsi64 v1:15;
  unsigned int v2:15;
  signed int v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15ll_BFu15i_BFs15i_BFu15ll) C1{ FL:15 Fi:15 Fi:15 FL:15}



static void Test_BFs15ll_BFu15i_BFs15i_BFu15ll()
{
  {
    init_simple_test("BFs15ll_BFu15i_BFs15i_BFu15ll");
    static STRUCT_IF_C BFs15ll_BFu15i_BFs15i_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15i_BFs15i_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15i_BFs15i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15i_BFs15i_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFs15i_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15i_BFs15i_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFs15i_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15i_BFs15i_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFs15i_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFu15i_BFs15i_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFs15i_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15i_BFs15i_BFu15ll, BFs15ll_BFu15i_BFs15i_BFu15ll)
//============================================================================


struct  BFs15ll_BFu15i_BFs15i_BFu15s  {
  signed __tsi64 v1:15;
  unsigned int v2:15;
  signed int v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15ll_BFu15i_BFs15i_BFu15s) C1{ FL:15 Fi:15 Fi:15 Fs:15}



static void Test_BFs15ll_BFu15i_BFs15i_BFu15s()
{
  {
    init_simple_test("BFs15ll_BFu15i_BFs15i_BFu15s");
    static STRUCT_IF_C BFs15ll_BFu15i_BFs15i_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15i_BFs15i_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15i_BFs15i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15i_BFs15i_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFs15i_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15i_BFs15i_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFs15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15i_BFs15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFs15i_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15ll_BFu15i_BFs15i_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFs15i_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15i_BFs15i_BFu15s, BFs15ll_BFu15i_BFs15i_BFu15s)
//============================================================================


struct  BFs15ll_BFu15i_BFs15ll  {
  signed __tsi64 v1:15;
  unsigned int v2:15;
  signed __tsi64 v3:15;
};
//SIG(1 BFs15ll_BFu15i_BFs15ll) C1{ FL:15 Fi:15 FL:15}



static void Test_BFs15ll_BFu15i_BFs15ll()
{
  {
    init_simple_test("BFs15ll_BFu15i_BFs15ll");
    static STRUCT_IF_C BFs15ll_BFu15i_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15i_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15i_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15i_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15i_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFs15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15ll_BFu15i_BFs15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15i_BFs15ll, BFs15ll_BFu15i_BFs15ll)
//============================================================================


struct  BFs15ll_BFu15i_BFs15ll_BFs15i  {
  signed __tsi64 v1:15;
  unsigned int v2:15;
  signed __tsi64 v3:15;
  signed int v4:15;
};
//SIG(1 BFs15ll_BFu15i_BFs15ll_BFs15i) C1{ FL:15 Fi:15 FL:15 Fi:15}



static void Test_BFs15ll_BFu15i_BFs15ll_BFs15i()
{
  {
    init_simple_test("BFs15ll_BFu15i_BFs15ll_BFs15i");
    static STRUCT_IF_C BFs15ll_BFu15i_BFs15ll_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15i_BFs15ll_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15i_BFs15ll_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15i_BFs15ll_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFs15ll_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15i_BFs15ll_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFs15ll_BFs15i");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15ll_BFu15i_BFs15ll_BFs15i");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFs15ll_BFs15i");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15ll_BFu15i_BFs15ll_BFs15i");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFs15ll_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15i_BFs15ll_BFs15i, BFs15ll_BFu15i_BFs15ll_BFs15i)
//============================================================================


struct  BFs15ll_BFu15i_BFs15ll_BFs15ll  {
  signed __tsi64 v1:15;
  unsigned int v2:15;
  signed __tsi64 v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15ll_BFu15i_BFs15ll_BFs15ll) C1{ FL:15 Fi:15 FL:15 FL:15}



static void Test_BFs15ll_BFu15i_BFs15ll_BFs15ll()
{
  {
    init_simple_test("BFs15ll_BFu15i_BFs15ll_BFs15ll");
    static STRUCT_IF_C BFs15ll_BFu15i_BFs15ll_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15i_BFs15ll_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15i_BFs15ll_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15i_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15i_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15ll_BFu15i_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15ll_BFu15i_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFs15ll_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15i_BFs15ll_BFs15ll, BFs15ll_BFu15i_BFs15ll_BFs15ll)
//============================================================================


struct  BFs15ll_BFu15i_BFs15ll_BFs15s  {
  signed __tsi64 v1:15;
  unsigned int v2:15;
  signed __tsi64 v3:15;
  signed short v4:15;
};
//SIG(1 BFs15ll_BFu15i_BFs15ll_BFs15s) C1{ FL:15 Fi:15 FL:15 Fs:15}



static void Test_BFs15ll_BFu15i_BFs15ll_BFs15s()
{
  {
    init_simple_test("BFs15ll_BFu15i_BFs15ll_BFs15s");
    static STRUCT_IF_C BFs15ll_BFu15i_BFs15ll_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15i_BFs15ll_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15i_BFs15ll_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15i_BFs15ll_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFs15ll_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15i_BFs15ll_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFs15ll_BFs15s");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15ll_BFu15i_BFs15ll_BFs15s");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFs15ll_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15ll_BFu15i_BFs15ll_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFs15ll_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15i_BFs15ll_BFs15s, BFs15ll_BFu15i_BFs15ll_BFs15s)
//============================================================================


struct  BFs15ll_BFu15i_BFs15ll_BFu15i  {
  signed __tsi64 v1:15;
  unsigned int v2:15;
  signed __tsi64 v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15ll_BFu15i_BFs15ll_BFu15i) C1{ FL:15 Fi:15 FL:15 Fi:15}



static void Test_BFs15ll_BFu15i_BFs15ll_BFu15i()
{
  {
    init_simple_test("BFs15ll_BFu15i_BFs15ll_BFu15i");
    static STRUCT_IF_C BFs15ll_BFu15i_BFs15ll_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15i_BFs15ll_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15i_BFs15ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15i_BFs15ll_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFs15ll_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15i_BFs15ll_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFs15ll_BFu15i");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15ll_BFu15i_BFs15ll_BFu15i");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFs15ll_BFu15i");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15ll_BFu15i_BFs15ll_BFu15i");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFs15ll_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15i_BFs15ll_BFu15i, BFs15ll_BFu15i_BFs15ll_BFu15i)
//============================================================================


struct  BFs15ll_BFu15i_BFs15ll_BFu15ll  {
  signed __tsi64 v1:15;
  unsigned int v2:15;
  signed __tsi64 v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15ll_BFu15i_BFs15ll_BFu15ll) C1{ FL:15 Fi:15 FL:15 FL:15}



static void Test_BFs15ll_BFu15i_BFs15ll_BFu15ll()
{
  {
    init_simple_test("BFs15ll_BFu15i_BFs15ll_BFu15ll");
    static STRUCT_IF_C BFs15ll_BFu15i_BFs15ll_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15i_BFs15ll_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15i_BFs15ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15i_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15i_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15ll_BFu15i_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15ll_BFu15i_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFs15ll_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15i_BFs15ll_BFu15ll, BFs15ll_BFu15i_BFs15ll_BFu15ll)
//============================================================================


struct  BFs15ll_BFu15i_BFs15ll_BFu15s  {
  signed __tsi64 v1:15;
  unsigned int v2:15;
  signed __tsi64 v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15ll_BFu15i_BFs15ll_BFu15s) C1{ FL:15 Fi:15 FL:15 Fs:15}



static void Test_BFs15ll_BFu15i_BFs15ll_BFu15s()
{
  {
    init_simple_test("BFs15ll_BFu15i_BFs15ll_BFu15s");
    static STRUCT_IF_C BFs15ll_BFu15i_BFs15ll_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15i_BFs15ll_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15i_BFs15ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15i_BFs15ll_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFs15ll_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15i_BFs15ll_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFs15ll_BFu15s");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15ll_BFu15i_BFs15ll_BFu15s");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFs15ll_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15ll_BFu15i_BFs15ll_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFs15ll_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15i_BFs15ll_BFu15s, BFs15ll_BFu15i_BFs15ll_BFu15s)
//============================================================================


struct  BFs15ll_BFu15i_BFs15s  {
  signed __tsi64 v1:15;
  unsigned int v2:15;
  signed short v3:15;
};
//SIG(1 BFs15ll_BFu15i_BFs15s) C1{ FL:15 Fi:15 Fs:15}



static void Test_BFs15ll_BFu15i_BFs15s()
{
  {
    init_simple_test("BFs15ll_BFu15i_BFs15s");
    static STRUCT_IF_C BFs15ll_BFu15i_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15i_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15i_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15i_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15i_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15i_BFs15s, BFs15ll_BFu15i_BFs15s)
//============================================================================


struct  BFs15ll_BFu15i_BFs15s_BFs15i  {
  signed __tsi64 v1:15;
  unsigned int v2:15;
  signed short v3:15;
  signed int v4:15;
};
//SIG(1 BFs15ll_BFu15i_BFs15s_BFs15i) C1{ FL:15 Fi:15 Fs:15 Fi:15}



static void Test_BFs15ll_BFu15i_BFs15s_BFs15i()
{
  {
    init_simple_test("BFs15ll_BFu15i_BFs15s_BFs15i");
    static STRUCT_IF_C BFs15ll_BFu15i_BFs15s_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15i_BFs15s_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15i_BFs15s_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15i_BFs15s_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFs15s_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15i_BFs15s_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFs15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15i_BFs15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFs15s_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFu15i_BFs15s_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFs15s_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15i_BFs15s_BFs15i, BFs15ll_BFu15i_BFs15s_BFs15i)
//============================================================================


struct  BFs15ll_BFu15i_BFs15s_BFs15ll  {
  signed __tsi64 v1:15;
  unsigned int v2:15;
  signed short v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15ll_BFu15i_BFs15s_BFs15ll) C1{ FL:15 Fi:15 Fs:15 FL:15}



static void Test_BFs15ll_BFu15i_BFs15s_BFs15ll()
{
  {
    init_simple_test("BFs15ll_BFu15i_BFs15s_BFs15ll");
    static STRUCT_IF_C BFs15ll_BFu15i_BFs15s_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15i_BFs15s_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15i_BFs15s_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15i_BFs15s_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFs15s_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15i_BFs15s_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFs15s_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15i_BFs15s_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFs15s_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFu15i_BFs15s_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFs15s_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15i_BFs15s_BFs15ll, BFs15ll_BFu15i_BFs15s_BFs15ll)
//============================================================================


struct  BFs15ll_BFu15i_BFs15s_BFs15s  {
  signed __tsi64 v1:15;
  unsigned int v2:15;
  signed short v3:15;
  signed short v4:15;
};
//SIG(1 BFs15ll_BFu15i_BFs15s_BFs15s) C1{ FL:15 Fi:15 Fs:15 Fs:15}



static void Test_BFs15ll_BFu15i_BFs15s_BFs15s()
{
  {
    init_simple_test("BFs15ll_BFu15i_BFs15s_BFs15s");
    static STRUCT_IF_C BFs15ll_BFu15i_BFs15s_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15i_BFs15s_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15i_BFs15s_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15i_BFs15s_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFs15s_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15i_BFs15s_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFs15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15i_BFs15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFs15s_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15ll_BFu15i_BFs15s_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFs15s_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15i_BFs15s_BFs15s, BFs15ll_BFu15i_BFs15s_BFs15s)
//============================================================================


struct  BFs15ll_BFu15i_BFs15s_BFu15i  {
  signed __tsi64 v1:15;
  unsigned int v2:15;
  signed short v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15ll_BFu15i_BFs15s_BFu15i) C1{ FL:15 Fi:15 Fs:15 Fi:15}



static void Test_BFs15ll_BFu15i_BFs15s_BFu15i()
{
  {
    init_simple_test("BFs15ll_BFu15i_BFs15s_BFu15i");
    static STRUCT_IF_C BFs15ll_BFu15i_BFs15s_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15i_BFs15s_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15i_BFs15s_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15i_BFs15s_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFs15s_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15i_BFs15s_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFs15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15i_BFs15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFs15s_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFu15i_BFs15s_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFs15s_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15i_BFs15s_BFu15i, BFs15ll_BFu15i_BFs15s_BFu15i)
//============================================================================


struct  BFs15ll_BFu15i_BFs15s_BFu15ll  {
  signed __tsi64 v1:15;
  unsigned int v2:15;
  signed short v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15ll_BFu15i_BFs15s_BFu15ll) C1{ FL:15 Fi:15 Fs:15 FL:15}



static void Test_BFs15ll_BFu15i_BFs15s_BFu15ll()
{
  {
    init_simple_test("BFs15ll_BFu15i_BFs15s_BFu15ll");
    static STRUCT_IF_C BFs15ll_BFu15i_BFs15s_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15i_BFs15s_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15i_BFs15s_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15i_BFs15s_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFs15s_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15i_BFs15s_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFs15s_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15i_BFs15s_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFs15s_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFu15i_BFs15s_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFs15s_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15i_BFs15s_BFu15ll, BFs15ll_BFu15i_BFs15s_BFu15ll)
//============================================================================


struct  BFs15ll_BFu15i_BFs15s_BFu15s  {
  signed __tsi64 v1:15;
  unsigned int v2:15;
  signed short v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15ll_BFu15i_BFs15s_BFu15s) C1{ FL:15 Fi:15 Fs:15 Fs:15}



static void Test_BFs15ll_BFu15i_BFs15s_BFu15s()
{
  {
    init_simple_test("BFs15ll_BFu15i_BFs15s_BFu15s");
    static STRUCT_IF_C BFs15ll_BFu15i_BFs15s_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15i_BFs15s_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15i_BFs15s_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15i_BFs15s_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFs15s_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15i_BFs15s_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFs15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15i_BFs15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFs15s_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15ll_BFu15i_BFs15s_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFs15s_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15i_BFs15s_BFu15s, BFs15ll_BFu15i_BFs15s_BFu15s)
//============================================================================


struct  BFs15ll_BFu15i_BFu15i  {
  signed __tsi64 v1:15;
  unsigned int v2:15;
  unsigned int v3:15;
};
//SIG(1 BFs15ll_BFu15i_BFu15i) C1{ FL:15 Fi:15 Fi:15}



static void Test_BFs15ll_BFu15i_BFu15i()
{
  {
    init_simple_test("BFs15ll_BFu15i_BFu15i");
    static STRUCT_IF_C BFs15ll_BFu15i_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15i_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15i_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15i_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15i_BFu15i, BFs15ll_BFu15i_BFu15i)
//============================================================================


struct  BFs15ll_BFu15i_BFu15i_BFs15i  {
  signed __tsi64 v1:15;
  unsigned int v2:15;
  unsigned int v3:15;
  signed int v4:15;
};
//SIG(1 BFs15ll_BFu15i_BFu15i_BFs15i) C1{ FL:15 Fi:15 Fi:15 Fi:15}



static void Test_BFs15ll_BFu15i_BFu15i_BFs15i()
{
  {
    init_simple_test("BFs15ll_BFu15i_BFu15i_BFs15i");
    static STRUCT_IF_C BFs15ll_BFu15i_BFu15i_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15i_BFu15i_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15i_BFu15i_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15i_BFu15i_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFu15i_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15i_BFu15i_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFu15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15i_BFu15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFu15i_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFu15i_BFu15i_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFu15i_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15i_BFu15i_BFs15i, BFs15ll_BFu15i_BFu15i_BFs15i)
//============================================================================


struct  BFs15ll_BFu15i_BFu15i_BFs15ll  {
  signed __tsi64 v1:15;
  unsigned int v2:15;
  unsigned int v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15ll_BFu15i_BFu15i_BFs15ll) C1{ FL:15 Fi:15 Fi:15 FL:15}



static void Test_BFs15ll_BFu15i_BFu15i_BFs15ll()
{
  {
    init_simple_test("BFs15ll_BFu15i_BFu15i_BFs15ll");
    static STRUCT_IF_C BFs15ll_BFu15i_BFu15i_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15i_BFu15i_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15i_BFu15i_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15i_BFu15i_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFu15i_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15i_BFu15i_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFu15i_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15i_BFu15i_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFu15i_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFu15i_BFu15i_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFu15i_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15i_BFu15i_BFs15ll, BFs15ll_BFu15i_BFu15i_BFs15ll)
//============================================================================


struct  BFs15ll_BFu15i_BFu15i_BFs15s  {
  signed __tsi64 v1:15;
  unsigned int v2:15;
  unsigned int v3:15;
  signed short v4:15;
};
//SIG(1 BFs15ll_BFu15i_BFu15i_BFs15s) C1{ FL:15 Fi:15 Fi:15 Fs:15}



static void Test_BFs15ll_BFu15i_BFu15i_BFs15s()
{
  {
    init_simple_test("BFs15ll_BFu15i_BFu15i_BFs15s");
    static STRUCT_IF_C BFs15ll_BFu15i_BFu15i_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15i_BFu15i_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15i_BFu15i_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15i_BFu15i_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFu15i_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15i_BFu15i_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFu15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15i_BFu15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFu15i_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15ll_BFu15i_BFu15i_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFu15i_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15i_BFu15i_BFs15s, BFs15ll_BFu15i_BFu15i_BFs15s)
//============================================================================


struct  BFs15ll_BFu15i_BFu15i_BFu15i  {
  signed __tsi64 v1:15;
  unsigned int v2:15;
  unsigned int v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15ll_BFu15i_BFu15i_BFu15i) C1{ FL:15 Fi:15 Fi:15 Fi:15}



static void Test_BFs15ll_BFu15i_BFu15i_BFu15i()
{
  {
    init_simple_test("BFs15ll_BFu15i_BFu15i_BFu15i");
    static STRUCT_IF_C BFs15ll_BFu15i_BFu15i_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15i_BFu15i_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15i_BFu15i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15i_BFu15i_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFu15i_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15i_BFu15i_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFu15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15i_BFu15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFu15i_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFu15i_BFu15i_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFu15i_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15i_BFu15i_BFu15i, BFs15ll_BFu15i_BFu15i_BFu15i)
//============================================================================


struct  BFs15ll_BFu15i_BFu15i_BFu15ll  {
  signed __tsi64 v1:15;
  unsigned int v2:15;
  unsigned int v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15ll_BFu15i_BFu15i_BFu15ll) C1{ FL:15 Fi:15 Fi:15 FL:15}



static void Test_BFs15ll_BFu15i_BFu15i_BFu15ll()
{
  {
    init_simple_test("BFs15ll_BFu15i_BFu15i_BFu15ll");
    static STRUCT_IF_C BFs15ll_BFu15i_BFu15i_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15i_BFu15i_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15i_BFu15i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15i_BFu15i_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFu15i_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15i_BFu15i_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFu15i_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15i_BFu15i_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFu15i_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFu15i_BFu15i_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFu15i_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15i_BFu15i_BFu15ll, BFs15ll_BFu15i_BFu15i_BFu15ll)
//============================================================================


struct  BFs15ll_BFu15i_BFu15i_BFu15s  {
  signed __tsi64 v1:15;
  unsigned int v2:15;
  unsigned int v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15ll_BFu15i_BFu15i_BFu15s) C1{ FL:15 Fi:15 Fi:15 Fs:15}



static void Test_BFs15ll_BFu15i_BFu15i_BFu15s()
{
  {
    init_simple_test("BFs15ll_BFu15i_BFu15i_BFu15s");
    static STRUCT_IF_C BFs15ll_BFu15i_BFu15i_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15i_BFu15i_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15i_BFu15i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15i_BFu15i_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFu15i_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15i_BFu15i_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFu15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15i_BFu15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFu15i_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15ll_BFu15i_BFu15i_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFu15i_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15i_BFu15i_BFu15s, BFs15ll_BFu15i_BFu15i_BFu15s)
//============================================================================


struct  BFs15ll_BFu15i_BFu15ll  {
  signed __tsi64 v1:15;
  unsigned int v2:15;
  __tsu64 v3:15;
};
//SIG(1 BFs15ll_BFu15i_BFu15ll) C1{ FL:15 Fi:15 FL:15}



static void Test_BFs15ll_BFu15i_BFu15ll()
{
  {
    init_simple_test("BFs15ll_BFu15i_BFu15ll");
    static STRUCT_IF_C BFs15ll_BFu15i_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15i_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15i_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15i_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFu15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15ll_BFu15i_BFu15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15i_BFu15ll, BFs15ll_BFu15i_BFu15ll)
//============================================================================


struct  BFs15ll_BFu15i_BFu15ll_BFs15i  {
  signed __tsi64 v1:15;
  unsigned int v2:15;
  __tsu64 v3:15;
  signed int v4:15;
};
//SIG(1 BFs15ll_BFu15i_BFu15ll_BFs15i) C1{ FL:15 Fi:15 FL:15 Fi:15}



static void Test_BFs15ll_BFu15i_BFu15ll_BFs15i()
{
  {
    init_simple_test("BFs15ll_BFu15i_BFu15ll_BFs15i");
    static STRUCT_IF_C BFs15ll_BFu15i_BFu15ll_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15i_BFu15ll_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15i_BFu15ll_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15i_BFu15ll_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFu15ll_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15i_BFu15ll_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFu15ll_BFs15i");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15ll_BFu15i_BFu15ll_BFs15i");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFu15ll_BFs15i");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15ll_BFu15i_BFu15ll_BFs15i");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFu15ll_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15i_BFu15ll_BFs15i, BFs15ll_BFu15i_BFu15ll_BFs15i)
//============================================================================


struct  BFs15ll_BFu15i_BFu15ll_BFs15ll  {
  signed __tsi64 v1:15;
  unsigned int v2:15;
  __tsu64 v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15ll_BFu15i_BFu15ll_BFs15ll) C1{ FL:15 Fi:15 FL:15 FL:15}



static void Test_BFs15ll_BFu15i_BFu15ll_BFs15ll()
{
  {
    init_simple_test("BFs15ll_BFu15i_BFu15ll_BFs15ll");
    static STRUCT_IF_C BFs15ll_BFu15i_BFu15ll_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15i_BFu15ll_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15i_BFu15ll_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15i_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15i_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15ll_BFu15i_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15ll_BFu15i_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFu15ll_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15i_BFu15ll_BFs15ll, BFs15ll_BFu15i_BFu15ll_BFs15ll)
//============================================================================


struct  BFs15ll_BFu15i_BFu15ll_BFs15s  {
  signed __tsi64 v1:15;
  unsigned int v2:15;
  __tsu64 v3:15;
  signed short v4:15;
};
//SIG(1 BFs15ll_BFu15i_BFu15ll_BFs15s) C1{ FL:15 Fi:15 FL:15 Fs:15}



static void Test_BFs15ll_BFu15i_BFu15ll_BFs15s()
{
  {
    init_simple_test("BFs15ll_BFu15i_BFu15ll_BFs15s");
    static STRUCT_IF_C BFs15ll_BFu15i_BFu15ll_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15i_BFu15ll_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15i_BFu15ll_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15i_BFu15ll_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFu15ll_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15i_BFu15ll_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFu15ll_BFs15s");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15ll_BFu15i_BFu15ll_BFs15s");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFu15ll_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15ll_BFu15i_BFu15ll_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFu15ll_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15i_BFu15ll_BFs15s, BFs15ll_BFu15i_BFu15ll_BFs15s)
//============================================================================


struct  BFs15ll_BFu15i_BFu15ll_BFu15i  {
  signed __tsi64 v1:15;
  unsigned int v2:15;
  __tsu64 v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15ll_BFu15i_BFu15ll_BFu15i) C1{ FL:15 Fi:15 FL:15 Fi:15}



static void Test_BFs15ll_BFu15i_BFu15ll_BFu15i()
{
  {
    init_simple_test("BFs15ll_BFu15i_BFu15ll_BFu15i");
    static STRUCT_IF_C BFs15ll_BFu15i_BFu15ll_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15i_BFu15ll_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15i_BFu15ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15i_BFu15ll_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFu15ll_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15i_BFu15ll_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFu15ll_BFu15i");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15ll_BFu15i_BFu15ll_BFu15i");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFu15ll_BFu15i");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15ll_BFu15i_BFu15ll_BFu15i");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFu15ll_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15i_BFu15ll_BFu15i, BFs15ll_BFu15i_BFu15ll_BFu15i)
//============================================================================


struct  BFs15ll_BFu15i_BFu15ll_BFu15ll  {
  signed __tsi64 v1:15;
  unsigned int v2:15;
  __tsu64 v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15ll_BFu15i_BFu15ll_BFu15ll) C1{ FL:15 Fi:15 FL:15 FL:15}



static void Test_BFs15ll_BFu15i_BFu15ll_BFu15ll()
{
  {
    init_simple_test("BFs15ll_BFu15i_BFu15ll_BFu15ll");
    static STRUCT_IF_C BFs15ll_BFu15i_BFu15ll_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15i_BFu15ll_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15i_BFu15ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15i_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15i_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15ll_BFu15i_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15ll_BFu15i_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFu15ll_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15i_BFu15ll_BFu15ll, BFs15ll_BFu15i_BFu15ll_BFu15ll)
//============================================================================


struct  BFs15ll_BFu15i_BFu15ll_BFu15s  {
  signed __tsi64 v1:15;
  unsigned int v2:15;
  __tsu64 v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15ll_BFu15i_BFu15ll_BFu15s) C1{ FL:15 Fi:15 FL:15 Fs:15}



static void Test_BFs15ll_BFu15i_BFu15ll_BFu15s()
{
  {
    init_simple_test("BFs15ll_BFu15i_BFu15ll_BFu15s");
    static STRUCT_IF_C BFs15ll_BFu15i_BFu15ll_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15i_BFu15ll_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15i_BFu15ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15i_BFu15ll_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFu15ll_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15i_BFu15ll_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFu15ll_BFu15s");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15ll_BFu15i_BFu15ll_BFu15s");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFu15ll_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15ll_BFu15i_BFu15ll_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFu15ll_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15i_BFu15ll_BFu15s, BFs15ll_BFu15i_BFu15ll_BFu15s)
//============================================================================


struct  BFs15ll_BFu15i_BFu15s  {
  signed __tsi64 v1:15;
  unsigned int v2:15;
  unsigned short v3:15;
};
//SIG(1 BFs15ll_BFu15i_BFu15s) C1{ FL:15 Fi:15 Fs:15}



static void Test_BFs15ll_BFu15i_BFu15s()
{
  {
    init_simple_test("BFs15ll_BFu15i_BFu15s");
    static STRUCT_IF_C BFs15ll_BFu15i_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15i_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15i_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15i_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15i_BFu15s, BFs15ll_BFu15i_BFu15s)
//============================================================================


struct  BFs15ll_BFu15i_BFu15s_BFs15i  {
  signed __tsi64 v1:15;
  unsigned int v2:15;
  unsigned short v3:15;
  signed int v4:15;
};
//SIG(1 BFs15ll_BFu15i_BFu15s_BFs15i) C1{ FL:15 Fi:15 Fs:15 Fi:15}



static void Test_BFs15ll_BFu15i_BFu15s_BFs15i()
{
  {
    init_simple_test("BFs15ll_BFu15i_BFu15s_BFs15i");
    static STRUCT_IF_C BFs15ll_BFu15i_BFu15s_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15i_BFu15s_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15i_BFu15s_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15i_BFu15s_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFu15s_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15i_BFu15s_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFu15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15i_BFu15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFu15s_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFu15i_BFu15s_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFu15s_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15i_BFu15s_BFs15i, BFs15ll_BFu15i_BFu15s_BFs15i)
//============================================================================


struct  BFs15ll_BFu15i_BFu15s_BFs15ll  {
  signed __tsi64 v1:15;
  unsigned int v2:15;
  unsigned short v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15ll_BFu15i_BFu15s_BFs15ll) C1{ FL:15 Fi:15 Fs:15 FL:15}



static void Test_BFs15ll_BFu15i_BFu15s_BFs15ll()
{
  {
    init_simple_test("BFs15ll_BFu15i_BFu15s_BFs15ll");
    static STRUCT_IF_C BFs15ll_BFu15i_BFu15s_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15i_BFu15s_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15i_BFu15s_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15i_BFu15s_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFu15s_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15i_BFu15s_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFu15s_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15i_BFu15s_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFu15s_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFu15i_BFu15s_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFu15s_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15i_BFu15s_BFs15ll, BFs15ll_BFu15i_BFu15s_BFs15ll)
//============================================================================


struct  BFs15ll_BFu15i_BFu15s_BFs15s  {
  signed __tsi64 v1:15;
  unsigned int v2:15;
  unsigned short v3:15;
  signed short v4:15;
};
//SIG(1 BFs15ll_BFu15i_BFu15s_BFs15s) C1{ FL:15 Fi:15 Fs:15 Fs:15}



static void Test_BFs15ll_BFu15i_BFu15s_BFs15s()
{
  {
    init_simple_test("BFs15ll_BFu15i_BFu15s_BFs15s");
    static STRUCT_IF_C BFs15ll_BFu15i_BFu15s_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15i_BFu15s_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15i_BFu15s_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15i_BFu15s_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFu15s_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15i_BFu15s_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFu15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15i_BFu15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFu15s_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15ll_BFu15i_BFu15s_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFu15s_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15i_BFu15s_BFs15s, BFs15ll_BFu15i_BFu15s_BFs15s)
//============================================================================


struct  BFs15ll_BFu15i_BFu15s_BFu15i  {
  signed __tsi64 v1:15;
  unsigned int v2:15;
  unsigned short v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15ll_BFu15i_BFu15s_BFu15i) C1{ FL:15 Fi:15 Fs:15 Fi:15}



static void Test_BFs15ll_BFu15i_BFu15s_BFu15i()
{
  {
    init_simple_test("BFs15ll_BFu15i_BFu15s_BFu15i");
    static STRUCT_IF_C BFs15ll_BFu15i_BFu15s_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15i_BFu15s_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15i_BFu15s_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15i_BFu15s_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFu15s_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15i_BFu15s_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFu15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15i_BFu15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFu15s_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFu15i_BFu15s_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFu15s_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15i_BFu15s_BFu15i, BFs15ll_BFu15i_BFu15s_BFu15i)
//============================================================================


struct  BFs15ll_BFu15i_BFu15s_BFu15ll  {
  signed __tsi64 v1:15;
  unsigned int v2:15;
  unsigned short v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15ll_BFu15i_BFu15s_BFu15ll) C1{ FL:15 Fi:15 Fs:15 FL:15}



static void Test_BFs15ll_BFu15i_BFu15s_BFu15ll()
{
  {
    init_simple_test("BFs15ll_BFu15i_BFu15s_BFu15ll");
    static STRUCT_IF_C BFs15ll_BFu15i_BFu15s_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15i_BFu15s_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15i_BFu15s_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15i_BFu15s_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFu15s_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15i_BFu15s_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFu15s_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15i_BFu15s_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFu15s_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFu15i_BFu15s_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFu15s_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15i_BFu15s_BFu15ll, BFs15ll_BFu15i_BFu15s_BFu15ll)
//============================================================================


struct  BFs15ll_BFu15i_BFu15s_BFu15s  {
  signed __tsi64 v1:15;
  unsigned int v2:15;
  unsigned short v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15ll_BFu15i_BFu15s_BFu15s) C1{ FL:15 Fi:15 Fs:15 Fs:15}



static void Test_BFs15ll_BFu15i_BFu15s_BFu15s()
{
  {
    init_simple_test("BFs15ll_BFu15i_BFu15s_BFu15s");
    static STRUCT_IF_C BFs15ll_BFu15i_BFu15s_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15i_BFu15s_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15i_BFu15s_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15i_BFu15s_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15i_BFu15s_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15i_BFu15s_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFu15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15i_BFu15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFu15s_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15ll_BFu15i_BFu15s_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15i_BFu15s_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15i_BFu15s_BFu15s, BFs15ll_BFu15i_BFu15s_BFu15s)
//============================================================================


struct  BFs15ll_BFu15ll  {
  signed __tsi64 v1:15;
  __tsu64 v2:15;
};
//SIG(1 BFs15ll_BFu15ll) C1{ FL:15 FL:15}



static void Test_BFs15ll_BFu15ll()
{
  {
    init_simple_test("BFs15ll_BFu15ll");
    static STRUCT_IF_C BFs15ll_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs15ll_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15ll, BFs15ll_BFu15ll)
//============================================================================


struct  BFs15ll_BFu15ll_BFs15i  {
  signed __tsi64 v1:15;
  __tsu64 v2:15;
  signed int v3:15;
};
//SIG(1 BFs15ll_BFu15ll_BFs15i) C1{ FL:15 FL:15 Fi:15}



static void Test_BFs15ll_BFu15ll_BFs15i()
{
  {
    init_simple_test("BFs15ll_BFu15ll_BFs15i");
    static STRUCT_IF_C BFs15ll_BFu15ll_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15ll_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15ll_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15ll_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15ll_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15ll_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15ll_BFs15i, BFs15ll_BFu15ll_BFs15i)
//============================================================================


struct  BFs15ll_BFu15ll_BFs15i_BFs15i  {
  signed __tsi64 v1:15;
  __tsu64 v2:15;
  signed int v3:15;
  signed int v4:15;
};
//SIG(1 BFs15ll_BFu15ll_BFs15i_BFs15i) C1{ FL:15 FL:15 Fi:15 Fi:15}



static void Test_BFs15ll_BFu15ll_BFs15i_BFs15i()
{
  {
    init_simple_test("BFs15ll_BFu15ll_BFs15i_BFs15i");
    static STRUCT_IF_C BFs15ll_BFu15ll_BFs15i_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15ll_BFs15i_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15ll_BFs15i_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15ll_BFs15i_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFs15i_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15ll_BFs15i_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFs15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15ll_BFs15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFs15i_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFu15ll_BFs15i_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFs15i_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15ll_BFs15i_BFs15i, BFs15ll_BFu15ll_BFs15i_BFs15i)
//============================================================================


struct  BFs15ll_BFu15ll_BFs15i_BFs15ll  {
  signed __tsi64 v1:15;
  __tsu64 v2:15;
  signed int v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15ll_BFu15ll_BFs15i_BFs15ll) C1{ FL:15 FL:15 Fi:15 FL:15}



static void Test_BFs15ll_BFu15ll_BFs15i_BFs15ll()
{
  {
    init_simple_test("BFs15ll_BFu15ll_BFs15i_BFs15ll");
    static STRUCT_IF_C BFs15ll_BFu15ll_BFs15i_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15ll_BFs15i_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15ll_BFs15i_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15ll_BFs15i_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFs15i_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15ll_BFs15i_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFs15i_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15ll_BFs15i_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFs15i_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFu15ll_BFs15i_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFs15i_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15ll_BFs15i_BFs15ll, BFs15ll_BFu15ll_BFs15i_BFs15ll)
//============================================================================


struct  BFs15ll_BFu15ll_BFs15i_BFs15s  {
  signed __tsi64 v1:15;
  __tsu64 v2:15;
  signed int v3:15;
  signed short v4:15;
};
//SIG(1 BFs15ll_BFu15ll_BFs15i_BFs15s) C1{ FL:15 FL:15 Fi:15 Fs:15}



static void Test_BFs15ll_BFu15ll_BFs15i_BFs15s()
{
  {
    init_simple_test("BFs15ll_BFu15ll_BFs15i_BFs15s");
    static STRUCT_IF_C BFs15ll_BFu15ll_BFs15i_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15ll_BFs15i_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15ll_BFs15i_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15ll_BFs15i_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFs15i_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15ll_BFs15i_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFs15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15ll_BFs15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFs15i_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15ll_BFu15ll_BFs15i_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFs15i_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15ll_BFs15i_BFs15s, BFs15ll_BFu15ll_BFs15i_BFs15s)
//============================================================================


struct  BFs15ll_BFu15ll_BFs15i_BFu15i  {
  signed __tsi64 v1:15;
  __tsu64 v2:15;
  signed int v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15ll_BFu15ll_BFs15i_BFu15i) C1{ FL:15 FL:15 Fi:15 Fi:15}



static void Test_BFs15ll_BFu15ll_BFs15i_BFu15i()
{
  {
    init_simple_test("BFs15ll_BFu15ll_BFs15i_BFu15i");
    static STRUCT_IF_C BFs15ll_BFu15ll_BFs15i_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15ll_BFs15i_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15ll_BFs15i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15ll_BFs15i_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFs15i_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15ll_BFs15i_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFs15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15ll_BFs15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFs15i_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFu15ll_BFs15i_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFs15i_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15ll_BFs15i_BFu15i, BFs15ll_BFu15ll_BFs15i_BFu15i)
//============================================================================


struct  BFs15ll_BFu15ll_BFs15i_BFu15ll  {
  signed __tsi64 v1:15;
  __tsu64 v2:15;
  signed int v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15ll_BFu15ll_BFs15i_BFu15ll) C1{ FL:15 FL:15 Fi:15 FL:15}



static void Test_BFs15ll_BFu15ll_BFs15i_BFu15ll()
{
  {
    init_simple_test("BFs15ll_BFu15ll_BFs15i_BFu15ll");
    static STRUCT_IF_C BFs15ll_BFu15ll_BFs15i_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15ll_BFs15i_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15ll_BFs15i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15ll_BFs15i_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFs15i_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15ll_BFs15i_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFs15i_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15ll_BFs15i_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFs15i_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFu15ll_BFs15i_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFs15i_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15ll_BFs15i_BFu15ll, BFs15ll_BFu15ll_BFs15i_BFu15ll)
//============================================================================


struct  BFs15ll_BFu15ll_BFs15i_BFu15s  {
  signed __tsi64 v1:15;
  __tsu64 v2:15;
  signed int v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15ll_BFu15ll_BFs15i_BFu15s) C1{ FL:15 FL:15 Fi:15 Fs:15}



static void Test_BFs15ll_BFu15ll_BFs15i_BFu15s()
{
  {
    init_simple_test("BFs15ll_BFu15ll_BFs15i_BFu15s");
    static STRUCT_IF_C BFs15ll_BFu15ll_BFs15i_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15ll_BFs15i_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15ll_BFs15i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15ll_BFs15i_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFs15i_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15ll_BFs15i_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFs15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15ll_BFs15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFs15i_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15ll_BFu15ll_BFs15i_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFs15i_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15ll_BFs15i_BFu15s, BFs15ll_BFu15ll_BFs15i_BFu15s)
//============================================================================


struct  BFs15ll_BFu15ll_BFs15ll  {
  signed __tsi64 v1:15;
  __tsu64 v2:15;
  signed __tsi64 v3:15;
};
//SIG(1 BFs15ll_BFu15ll_BFs15ll) C1{ FL:15 FL:15 FL:15}



static void Test_BFs15ll_BFu15ll_BFs15ll()
{
  {
    init_simple_test("BFs15ll_BFu15ll_BFs15ll");
    static STRUCT_IF_C BFs15ll_BFu15ll_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15ll_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15ll_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15ll_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15ll_BFs15ll, BFs15ll_BFu15ll_BFs15ll)
//============================================================================


struct  BFs15ll_BFu15ll_BFs15ll_BFs15i  {
  signed __tsi64 v1:15;
  __tsu64 v2:15;
  signed __tsi64 v3:15;
  signed int v4:15;
};
//SIG(1 BFs15ll_BFu15ll_BFs15ll_BFs15i) C1{ FL:15 FL:15 FL:15 Fi:15}



static void Test_BFs15ll_BFu15ll_BFs15ll_BFs15i()
{
  {
    init_simple_test("BFs15ll_BFu15ll_BFs15ll_BFs15i");
    static STRUCT_IF_C BFs15ll_BFu15ll_BFs15ll_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15ll_BFs15ll_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15ll_BFs15ll_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15ll_BFs15ll_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFs15ll_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15ll_BFs15ll_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFs15ll_BFs15i");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15ll_BFu15ll_BFs15ll_BFs15i");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFs15ll_BFs15i");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15ll_BFu15ll_BFs15ll_BFs15i");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFs15ll_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15ll_BFs15ll_BFs15i, BFs15ll_BFu15ll_BFs15ll_BFs15i)
//============================================================================


struct  BFs15ll_BFu15ll_BFs15ll_BFs15ll  {
  signed __tsi64 v1:15;
  __tsu64 v2:15;
  signed __tsi64 v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15ll_BFu15ll_BFs15ll_BFs15ll) C1{ FL:15 FL:15 FL:15 FL:15}



static void Test_BFs15ll_BFu15ll_BFs15ll_BFs15ll()
{
  {
    init_simple_test("BFs15ll_BFu15ll_BFs15ll_BFs15ll");
    static STRUCT_IF_C BFs15ll_BFu15ll_BFs15ll_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15ll_BFs15ll_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15ll_BFs15ll_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15ll_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15ll_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15ll_BFu15ll_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15ll_BFu15ll_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFs15ll_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15ll_BFs15ll_BFs15ll, BFs15ll_BFu15ll_BFs15ll_BFs15ll)
//============================================================================


struct  BFs15ll_BFu15ll_BFs15ll_BFs15s  {
  signed __tsi64 v1:15;
  __tsu64 v2:15;
  signed __tsi64 v3:15;
  signed short v4:15;
};
//SIG(1 BFs15ll_BFu15ll_BFs15ll_BFs15s) C1{ FL:15 FL:15 FL:15 Fs:15}



static void Test_BFs15ll_BFu15ll_BFs15ll_BFs15s()
{
  {
    init_simple_test("BFs15ll_BFu15ll_BFs15ll_BFs15s");
    static STRUCT_IF_C BFs15ll_BFu15ll_BFs15ll_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15ll_BFs15ll_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15ll_BFs15ll_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15ll_BFs15ll_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFs15ll_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15ll_BFs15ll_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFs15ll_BFs15s");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15ll_BFu15ll_BFs15ll_BFs15s");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFs15ll_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15ll_BFu15ll_BFs15ll_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFs15ll_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15ll_BFs15ll_BFs15s, BFs15ll_BFu15ll_BFs15ll_BFs15s)
//============================================================================


struct  BFs15ll_BFu15ll_BFs15ll_BFu15i  {
  signed __tsi64 v1:15;
  __tsu64 v2:15;
  signed __tsi64 v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15ll_BFu15ll_BFs15ll_BFu15i) C1{ FL:15 FL:15 FL:15 Fi:15}



static void Test_BFs15ll_BFu15ll_BFs15ll_BFu15i()
{
  {
    init_simple_test("BFs15ll_BFu15ll_BFs15ll_BFu15i");
    static STRUCT_IF_C BFs15ll_BFu15ll_BFs15ll_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15ll_BFs15ll_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15ll_BFs15ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15ll_BFs15ll_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFs15ll_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15ll_BFs15ll_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFs15ll_BFu15i");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15ll_BFu15ll_BFs15ll_BFu15i");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFs15ll_BFu15i");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15ll_BFu15ll_BFs15ll_BFu15i");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFs15ll_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15ll_BFs15ll_BFu15i, BFs15ll_BFu15ll_BFs15ll_BFu15i)
//============================================================================


struct  BFs15ll_BFu15ll_BFs15ll_BFu15ll  {
  signed __tsi64 v1:15;
  __tsu64 v2:15;
  signed __tsi64 v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15ll_BFu15ll_BFs15ll_BFu15ll) C1{ FL:15 FL:15 FL:15 FL:15}



static void Test_BFs15ll_BFu15ll_BFs15ll_BFu15ll()
{
  {
    init_simple_test("BFs15ll_BFu15ll_BFs15ll_BFu15ll");
    static STRUCT_IF_C BFs15ll_BFu15ll_BFs15ll_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15ll_BFs15ll_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15ll_BFs15ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15ll_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15ll_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15ll_BFu15ll_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15ll_BFu15ll_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFs15ll_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15ll_BFs15ll_BFu15ll, BFs15ll_BFu15ll_BFs15ll_BFu15ll)
//============================================================================


struct  BFs15ll_BFu15ll_BFs15ll_BFu15s  {
  signed __tsi64 v1:15;
  __tsu64 v2:15;
  signed __tsi64 v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15ll_BFu15ll_BFs15ll_BFu15s) C1{ FL:15 FL:15 FL:15 Fs:15}



static void Test_BFs15ll_BFu15ll_BFs15ll_BFu15s()
{
  {
    init_simple_test("BFs15ll_BFu15ll_BFs15ll_BFu15s");
    static STRUCT_IF_C BFs15ll_BFu15ll_BFs15ll_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15ll_BFs15ll_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15ll_BFs15ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15ll_BFs15ll_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFs15ll_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15ll_BFs15ll_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFs15ll_BFu15s");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15ll_BFu15ll_BFs15ll_BFu15s");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFs15ll_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15ll_BFu15ll_BFs15ll_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFs15ll_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15ll_BFs15ll_BFu15s, BFs15ll_BFu15ll_BFs15ll_BFu15s)
//============================================================================


struct  BFs15ll_BFu15ll_BFs15s  {
  signed __tsi64 v1:15;
  __tsu64 v2:15;
  signed short v3:15;
};
//SIG(1 BFs15ll_BFu15ll_BFs15s) C1{ FL:15 FL:15 Fs:15}



static void Test_BFs15ll_BFu15ll_BFs15s()
{
  {
    init_simple_test("BFs15ll_BFu15ll_BFs15s");
    static STRUCT_IF_C BFs15ll_BFu15ll_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15ll_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15ll_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15ll_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15ll_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15ll_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15ll_BFs15s, BFs15ll_BFu15ll_BFs15s)
//============================================================================


struct  BFs15ll_BFu15ll_BFs15s_BFs15i  {
  signed __tsi64 v1:15;
  __tsu64 v2:15;
  signed short v3:15;
  signed int v4:15;
};
//SIG(1 BFs15ll_BFu15ll_BFs15s_BFs15i) C1{ FL:15 FL:15 Fs:15 Fi:15}



static void Test_BFs15ll_BFu15ll_BFs15s_BFs15i()
{
  {
    init_simple_test("BFs15ll_BFu15ll_BFs15s_BFs15i");
    static STRUCT_IF_C BFs15ll_BFu15ll_BFs15s_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15ll_BFs15s_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15ll_BFs15s_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15ll_BFs15s_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFs15s_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15ll_BFs15s_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFs15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15ll_BFs15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFs15s_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFu15ll_BFs15s_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFs15s_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15ll_BFs15s_BFs15i, BFs15ll_BFu15ll_BFs15s_BFs15i)
//============================================================================


struct  BFs15ll_BFu15ll_BFs15s_BFs15ll  {
  signed __tsi64 v1:15;
  __tsu64 v2:15;
  signed short v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15ll_BFu15ll_BFs15s_BFs15ll) C1{ FL:15 FL:15 Fs:15 FL:15}



static void Test_BFs15ll_BFu15ll_BFs15s_BFs15ll()
{
  {
    init_simple_test("BFs15ll_BFu15ll_BFs15s_BFs15ll");
    static STRUCT_IF_C BFs15ll_BFu15ll_BFs15s_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15ll_BFs15s_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15ll_BFs15s_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15ll_BFs15s_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFs15s_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15ll_BFs15s_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFs15s_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15ll_BFs15s_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFs15s_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFu15ll_BFs15s_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFs15s_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15ll_BFs15s_BFs15ll, BFs15ll_BFu15ll_BFs15s_BFs15ll)
//============================================================================


struct  BFs15ll_BFu15ll_BFs15s_BFs15s  {
  signed __tsi64 v1:15;
  __tsu64 v2:15;
  signed short v3:15;
  signed short v4:15;
};
//SIG(1 BFs15ll_BFu15ll_BFs15s_BFs15s) C1{ FL:15 FL:15 Fs:15 Fs:15}



static void Test_BFs15ll_BFu15ll_BFs15s_BFs15s()
{
  {
    init_simple_test("BFs15ll_BFu15ll_BFs15s_BFs15s");
    static STRUCT_IF_C BFs15ll_BFu15ll_BFs15s_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15ll_BFs15s_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15ll_BFs15s_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15ll_BFs15s_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFs15s_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15ll_BFs15s_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFs15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15ll_BFs15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFs15s_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15ll_BFu15ll_BFs15s_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFs15s_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15ll_BFs15s_BFs15s, BFs15ll_BFu15ll_BFs15s_BFs15s)
//============================================================================


struct  BFs15ll_BFu15ll_BFs15s_BFu15i  {
  signed __tsi64 v1:15;
  __tsu64 v2:15;
  signed short v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15ll_BFu15ll_BFs15s_BFu15i) C1{ FL:15 FL:15 Fs:15 Fi:15}



static void Test_BFs15ll_BFu15ll_BFs15s_BFu15i()
{
  {
    init_simple_test("BFs15ll_BFu15ll_BFs15s_BFu15i");
    static STRUCT_IF_C BFs15ll_BFu15ll_BFs15s_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15ll_BFs15s_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15ll_BFs15s_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15ll_BFs15s_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFs15s_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15ll_BFs15s_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFs15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15ll_BFs15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFs15s_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFu15ll_BFs15s_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFs15s_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15ll_BFs15s_BFu15i, BFs15ll_BFu15ll_BFs15s_BFu15i)
//============================================================================


struct  BFs15ll_BFu15ll_BFs15s_BFu15ll  {
  signed __tsi64 v1:15;
  __tsu64 v2:15;
  signed short v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15ll_BFu15ll_BFs15s_BFu15ll) C1{ FL:15 FL:15 Fs:15 FL:15}



static void Test_BFs15ll_BFu15ll_BFs15s_BFu15ll()
{
  {
    init_simple_test("BFs15ll_BFu15ll_BFs15s_BFu15ll");
    static STRUCT_IF_C BFs15ll_BFu15ll_BFs15s_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15ll_BFs15s_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15ll_BFs15s_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15ll_BFs15s_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFs15s_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15ll_BFs15s_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFs15s_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15ll_BFs15s_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFs15s_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFu15ll_BFs15s_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFs15s_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15ll_BFs15s_BFu15ll, BFs15ll_BFu15ll_BFs15s_BFu15ll)
//============================================================================


struct  BFs15ll_BFu15ll_BFs15s_BFu15s  {
  signed __tsi64 v1:15;
  __tsu64 v2:15;
  signed short v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15ll_BFu15ll_BFs15s_BFu15s) C1{ FL:15 FL:15 Fs:15 Fs:15}



static void Test_BFs15ll_BFu15ll_BFs15s_BFu15s()
{
  {
    init_simple_test("BFs15ll_BFu15ll_BFs15s_BFu15s");
    static STRUCT_IF_C BFs15ll_BFu15ll_BFs15s_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15ll_BFs15s_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15ll_BFs15s_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15ll_BFs15s_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFs15s_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15ll_BFs15s_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFs15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15ll_BFs15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFs15s_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15ll_BFu15ll_BFs15s_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFs15s_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15ll_BFs15s_BFu15s, BFs15ll_BFu15ll_BFs15s_BFu15s)
//============================================================================


struct  BFs15ll_BFu15ll_BFu15i  {
  signed __tsi64 v1:15;
  __tsu64 v2:15;
  unsigned int v3:15;
};
//SIG(1 BFs15ll_BFu15ll_BFu15i) C1{ FL:15 FL:15 Fi:15}



static void Test_BFs15ll_BFu15ll_BFu15i()
{
  {
    init_simple_test("BFs15ll_BFu15ll_BFu15i");
    static STRUCT_IF_C BFs15ll_BFu15ll_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15ll_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15ll_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15ll_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15ll_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15ll_BFu15i, BFs15ll_BFu15ll_BFu15i)
//============================================================================


struct  BFs15ll_BFu15ll_BFu15i_BFs15i  {
  signed __tsi64 v1:15;
  __tsu64 v2:15;
  unsigned int v3:15;
  signed int v4:15;
};
//SIG(1 BFs15ll_BFu15ll_BFu15i_BFs15i) C1{ FL:15 FL:15 Fi:15 Fi:15}



static void Test_BFs15ll_BFu15ll_BFu15i_BFs15i()
{
  {
    init_simple_test("BFs15ll_BFu15ll_BFu15i_BFs15i");
    static STRUCT_IF_C BFs15ll_BFu15ll_BFu15i_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15ll_BFu15i_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15ll_BFu15i_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15ll_BFu15i_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFu15i_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15ll_BFu15i_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFu15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15ll_BFu15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFu15i_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFu15ll_BFu15i_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFu15i_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15ll_BFu15i_BFs15i, BFs15ll_BFu15ll_BFu15i_BFs15i)
//============================================================================


struct  BFs15ll_BFu15ll_BFu15i_BFs15ll  {
  signed __tsi64 v1:15;
  __tsu64 v2:15;
  unsigned int v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15ll_BFu15ll_BFu15i_BFs15ll) C1{ FL:15 FL:15 Fi:15 FL:15}



static void Test_BFs15ll_BFu15ll_BFu15i_BFs15ll()
{
  {
    init_simple_test("BFs15ll_BFu15ll_BFu15i_BFs15ll");
    static STRUCT_IF_C BFs15ll_BFu15ll_BFu15i_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15ll_BFu15i_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15ll_BFu15i_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15ll_BFu15i_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFu15i_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15ll_BFu15i_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFu15i_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15ll_BFu15i_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFu15i_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFu15ll_BFu15i_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFu15i_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15ll_BFu15i_BFs15ll, BFs15ll_BFu15ll_BFu15i_BFs15ll)
//============================================================================


struct  BFs15ll_BFu15ll_BFu15i_BFs15s  {
  signed __tsi64 v1:15;
  __tsu64 v2:15;
  unsigned int v3:15;
  signed short v4:15;
};
//SIG(1 BFs15ll_BFu15ll_BFu15i_BFs15s) C1{ FL:15 FL:15 Fi:15 Fs:15}



static void Test_BFs15ll_BFu15ll_BFu15i_BFs15s()
{
  {
    init_simple_test("BFs15ll_BFu15ll_BFu15i_BFs15s");
    static STRUCT_IF_C BFs15ll_BFu15ll_BFu15i_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15ll_BFu15i_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15ll_BFu15i_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15ll_BFu15i_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFu15i_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15ll_BFu15i_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFu15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15ll_BFu15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFu15i_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15ll_BFu15ll_BFu15i_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFu15i_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15ll_BFu15i_BFs15s, BFs15ll_BFu15ll_BFu15i_BFs15s)
//============================================================================


struct  BFs15ll_BFu15ll_BFu15i_BFu15i  {
  signed __tsi64 v1:15;
  __tsu64 v2:15;
  unsigned int v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15ll_BFu15ll_BFu15i_BFu15i) C1{ FL:15 FL:15 Fi:15 Fi:15}



static void Test_BFs15ll_BFu15ll_BFu15i_BFu15i()
{
  {
    init_simple_test("BFs15ll_BFu15ll_BFu15i_BFu15i");
    static STRUCT_IF_C BFs15ll_BFu15ll_BFu15i_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15ll_BFu15i_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15ll_BFu15i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15ll_BFu15i_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFu15i_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15ll_BFu15i_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFu15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15ll_BFu15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFu15i_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFu15ll_BFu15i_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFu15i_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15ll_BFu15i_BFu15i, BFs15ll_BFu15ll_BFu15i_BFu15i)
//============================================================================


struct  BFs15ll_BFu15ll_BFu15i_BFu15ll  {
  signed __tsi64 v1:15;
  __tsu64 v2:15;
  unsigned int v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15ll_BFu15ll_BFu15i_BFu15ll) C1{ FL:15 FL:15 Fi:15 FL:15}



static void Test_BFs15ll_BFu15ll_BFu15i_BFu15ll()
{
  {
    init_simple_test("BFs15ll_BFu15ll_BFu15i_BFu15ll");
    static STRUCT_IF_C BFs15ll_BFu15ll_BFu15i_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15ll_BFu15i_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15ll_BFu15i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15ll_BFu15i_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFu15i_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15ll_BFu15i_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFu15i_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15ll_BFu15i_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFu15i_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFu15ll_BFu15i_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFu15i_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15ll_BFu15i_BFu15ll, BFs15ll_BFu15ll_BFu15i_BFu15ll)
//============================================================================


struct  BFs15ll_BFu15ll_BFu15i_BFu15s  {
  signed __tsi64 v1:15;
  __tsu64 v2:15;
  unsigned int v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15ll_BFu15ll_BFu15i_BFu15s) C1{ FL:15 FL:15 Fi:15 Fs:15}



static void Test_BFs15ll_BFu15ll_BFu15i_BFu15s()
{
  {
    init_simple_test("BFs15ll_BFu15ll_BFu15i_BFu15s");
    static STRUCT_IF_C BFs15ll_BFu15ll_BFu15i_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15ll_BFu15i_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15ll_BFu15i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15ll_BFu15i_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFu15i_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15ll_BFu15i_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFu15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15ll_BFu15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFu15i_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15ll_BFu15ll_BFu15i_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFu15i_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15ll_BFu15i_BFu15s, BFs15ll_BFu15ll_BFu15i_BFu15s)
//============================================================================


struct  BFs15ll_BFu15ll_BFu15ll  {
  signed __tsi64 v1:15;
  __tsu64 v2:15;
  __tsu64 v3:15;
};
//SIG(1 BFs15ll_BFu15ll_BFu15ll) C1{ FL:15 FL:15 FL:15}



static void Test_BFs15ll_BFu15ll_BFu15ll()
{
  {
    init_simple_test("BFs15ll_BFu15ll_BFu15ll");
    static STRUCT_IF_C BFs15ll_BFu15ll_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15ll_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15ll_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15ll_BFu15ll, BFs15ll_BFu15ll_BFu15ll)
//============================================================================


struct  BFs15ll_BFu15ll_BFu15ll_BFs15i  {
  signed __tsi64 v1:15;
  __tsu64 v2:15;
  __tsu64 v3:15;
  signed int v4:15;
};
//SIG(1 BFs15ll_BFu15ll_BFu15ll_BFs15i) C1{ FL:15 FL:15 FL:15 Fi:15}



static void Test_BFs15ll_BFu15ll_BFu15ll_BFs15i()
{
  {
    init_simple_test("BFs15ll_BFu15ll_BFu15ll_BFs15i");
    static STRUCT_IF_C BFs15ll_BFu15ll_BFu15ll_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15ll_BFu15ll_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15ll_BFu15ll_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15ll_BFu15ll_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFu15ll_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15ll_BFu15ll_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFu15ll_BFs15i");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15ll_BFu15ll_BFu15ll_BFs15i");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFu15ll_BFs15i");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15ll_BFu15ll_BFu15ll_BFs15i");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFu15ll_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15ll_BFu15ll_BFs15i, BFs15ll_BFu15ll_BFu15ll_BFs15i)
//============================================================================


struct  BFs15ll_BFu15ll_BFu15ll_BFs15ll  {
  signed __tsi64 v1:15;
  __tsu64 v2:15;
  __tsu64 v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15ll_BFu15ll_BFu15ll_BFs15ll) C1{ FL:15 FL:15 FL:15 FL:15}



static void Test_BFs15ll_BFu15ll_BFu15ll_BFs15ll()
{
  {
    init_simple_test("BFs15ll_BFu15ll_BFu15ll_BFs15ll");
    static STRUCT_IF_C BFs15ll_BFu15ll_BFu15ll_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15ll_BFu15ll_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15ll_BFu15ll_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15ll_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15ll_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15ll_BFu15ll_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15ll_BFu15ll_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFu15ll_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15ll_BFu15ll_BFs15ll, BFs15ll_BFu15ll_BFu15ll_BFs15ll)
//============================================================================


struct  BFs15ll_BFu15ll_BFu15ll_BFs15s  {
  signed __tsi64 v1:15;
  __tsu64 v2:15;
  __tsu64 v3:15;
  signed short v4:15;
};
//SIG(1 BFs15ll_BFu15ll_BFu15ll_BFs15s) C1{ FL:15 FL:15 FL:15 Fs:15}



static void Test_BFs15ll_BFu15ll_BFu15ll_BFs15s()
{
  {
    init_simple_test("BFs15ll_BFu15ll_BFu15ll_BFs15s");
    static STRUCT_IF_C BFs15ll_BFu15ll_BFu15ll_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15ll_BFu15ll_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15ll_BFu15ll_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15ll_BFu15ll_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFu15ll_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15ll_BFu15ll_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFu15ll_BFs15s");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15ll_BFu15ll_BFu15ll_BFs15s");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFu15ll_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15ll_BFu15ll_BFu15ll_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFu15ll_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15ll_BFu15ll_BFs15s, BFs15ll_BFu15ll_BFu15ll_BFs15s)
//============================================================================


struct  BFs15ll_BFu15ll_BFu15ll_BFu15i  {
  signed __tsi64 v1:15;
  __tsu64 v2:15;
  __tsu64 v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15ll_BFu15ll_BFu15ll_BFu15i) C1{ FL:15 FL:15 FL:15 Fi:15}



static void Test_BFs15ll_BFu15ll_BFu15ll_BFu15i()
{
  {
    init_simple_test("BFs15ll_BFu15ll_BFu15ll_BFu15i");
    static STRUCT_IF_C BFs15ll_BFu15ll_BFu15ll_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15ll_BFu15ll_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15ll_BFu15ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15ll_BFu15ll_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFu15ll_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15ll_BFu15ll_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFu15ll_BFu15i");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15ll_BFu15ll_BFu15ll_BFu15i");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFu15ll_BFu15i");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15ll_BFu15ll_BFu15ll_BFu15i");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFu15ll_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15ll_BFu15ll_BFu15i, BFs15ll_BFu15ll_BFu15ll_BFu15i)
//============================================================================


struct  BFs15ll_BFu15ll_BFu15ll_BFu15ll  {
  signed __tsi64 v1:15;
  __tsu64 v2:15;
  __tsu64 v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15ll_BFu15ll_BFu15ll_BFu15ll) C1{ FL:15 FL:15 FL:15 FL:15}



static void Test_BFs15ll_BFu15ll_BFu15ll_BFu15ll()
{
  {
    init_simple_test("BFs15ll_BFu15ll_BFu15ll_BFu15ll");
    static STRUCT_IF_C BFs15ll_BFu15ll_BFu15ll_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15ll_BFu15ll_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15ll_BFu15ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15ll_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15ll_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15ll_BFu15ll_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15ll_BFu15ll_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFu15ll_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15ll_BFu15ll_BFu15ll, BFs15ll_BFu15ll_BFu15ll_BFu15ll)
//============================================================================


struct  BFs15ll_BFu15ll_BFu15ll_BFu15s  {
  signed __tsi64 v1:15;
  __tsu64 v2:15;
  __tsu64 v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15ll_BFu15ll_BFu15ll_BFu15s) C1{ FL:15 FL:15 FL:15 Fs:15}



static void Test_BFs15ll_BFu15ll_BFu15ll_BFu15s()
{
  {
    init_simple_test("BFs15ll_BFu15ll_BFu15ll_BFu15s");
    static STRUCT_IF_C BFs15ll_BFu15ll_BFu15ll_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15ll_BFu15ll_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15ll_BFu15ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15ll_BFu15ll_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFu15ll_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15ll_BFu15ll_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFu15ll_BFu15s");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15ll_BFu15ll_BFu15ll_BFu15s");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFu15ll_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15ll_BFu15ll_BFu15ll_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFu15ll_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15ll_BFu15ll_BFu15s, BFs15ll_BFu15ll_BFu15ll_BFu15s)
//============================================================================


struct  BFs15ll_BFu15ll_BFu15s  {
  signed __tsi64 v1:15;
  __tsu64 v2:15;
  unsigned short v3:15;
};
//SIG(1 BFs15ll_BFu15ll_BFu15s) C1{ FL:15 FL:15 Fs:15}



static void Test_BFs15ll_BFu15ll_BFu15s()
{
  {
    init_simple_test("BFs15ll_BFu15ll_BFu15s");
    static STRUCT_IF_C BFs15ll_BFu15ll_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15ll_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15ll_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15ll_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15ll_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15ll_BFu15s, BFs15ll_BFu15ll_BFu15s)
//============================================================================


struct  BFs15ll_BFu15ll_BFu15s_BFs15i  {
  signed __tsi64 v1:15;
  __tsu64 v2:15;
  unsigned short v3:15;
  signed int v4:15;
};
//SIG(1 BFs15ll_BFu15ll_BFu15s_BFs15i) C1{ FL:15 FL:15 Fs:15 Fi:15}



static void Test_BFs15ll_BFu15ll_BFu15s_BFs15i()
{
  {
    init_simple_test("BFs15ll_BFu15ll_BFu15s_BFs15i");
    static STRUCT_IF_C BFs15ll_BFu15ll_BFu15s_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15ll_BFu15s_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15ll_BFu15s_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15ll_BFu15s_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFu15s_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15ll_BFu15s_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFu15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15ll_BFu15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFu15s_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFu15ll_BFu15s_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFu15s_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15ll_BFu15s_BFs15i, BFs15ll_BFu15ll_BFu15s_BFs15i)
//============================================================================


struct  BFs15ll_BFu15ll_BFu15s_BFs15ll  {
  signed __tsi64 v1:15;
  __tsu64 v2:15;
  unsigned short v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15ll_BFu15ll_BFu15s_BFs15ll) C1{ FL:15 FL:15 Fs:15 FL:15}



static void Test_BFs15ll_BFu15ll_BFu15s_BFs15ll()
{
  {
    init_simple_test("BFs15ll_BFu15ll_BFu15s_BFs15ll");
    static STRUCT_IF_C BFs15ll_BFu15ll_BFu15s_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15ll_BFu15s_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15ll_BFu15s_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15ll_BFu15s_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFu15s_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15ll_BFu15s_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFu15s_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15ll_BFu15s_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFu15s_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFu15ll_BFu15s_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFu15s_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15ll_BFu15s_BFs15ll, BFs15ll_BFu15ll_BFu15s_BFs15ll)
//============================================================================


struct  BFs15ll_BFu15ll_BFu15s_BFs15s  {
  signed __tsi64 v1:15;
  __tsu64 v2:15;
  unsigned short v3:15;
  signed short v4:15;
};
//SIG(1 BFs15ll_BFu15ll_BFu15s_BFs15s) C1{ FL:15 FL:15 Fs:15 Fs:15}



static void Test_BFs15ll_BFu15ll_BFu15s_BFs15s()
{
  {
    init_simple_test("BFs15ll_BFu15ll_BFu15s_BFs15s");
    static STRUCT_IF_C BFs15ll_BFu15ll_BFu15s_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15ll_BFu15s_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15ll_BFu15s_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15ll_BFu15s_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFu15s_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15ll_BFu15s_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFu15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15ll_BFu15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFu15s_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15ll_BFu15ll_BFu15s_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFu15s_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15ll_BFu15s_BFs15s, BFs15ll_BFu15ll_BFu15s_BFs15s)
//============================================================================


struct  BFs15ll_BFu15ll_BFu15s_BFu15i  {
  signed __tsi64 v1:15;
  __tsu64 v2:15;
  unsigned short v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15ll_BFu15ll_BFu15s_BFu15i) C1{ FL:15 FL:15 Fs:15 Fi:15}



static void Test_BFs15ll_BFu15ll_BFu15s_BFu15i()
{
  {
    init_simple_test("BFs15ll_BFu15ll_BFu15s_BFu15i");
    static STRUCT_IF_C BFs15ll_BFu15ll_BFu15s_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15ll_BFu15s_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15ll_BFu15s_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15ll_BFu15s_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFu15s_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15ll_BFu15s_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFu15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15ll_BFu15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFu15s_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFu15ll_BFu15s_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFu15s_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15ll_BFu15s_BFu15i, BFs15ll_BFu15ll_BFu15s_BFu15i)
//============================================================================


struct  BFs15ll_BFu15ll_BFu15s_BFu15ll  {
  signed __tsi64 v1:15;
  __tsu64 v2:15;
  unsigned short v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15ll_BFu15ll_BFu15s_BFu15ll) C1{ FL:15 FL:15 Fs:15 FL:15}



static void Test_BFs15ll_BFu15ll_BFu15s_BFu15ll()
{
  {
    init_simple_test("BFs15ll_BFu15ll_BFu15s_BFu15ll");
    static STRUCT_IF_C BFs15ll_BFu15ll_BFu15s_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15ll_BFu15s_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15ll_BFu15s_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15ll_BFu15s_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFu15s_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15ll_BFu15s_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFu15s_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15ll_BFu15s_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFu15s_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFu15ll_BFu15s_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFu15s_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15ll_BFu15s_BFu15ll, BFs15ll_BFu15ll_BFu15s_BFu15ll)
//============================================================================


struct  BFs15ll_BFu15ll_BFu15s_BFu15s  {
  signed __tsi64 v1:15;
  __tsu64 v2:15;
  unsigned short v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15ll_BFu15ll_BFu15s_BFu15s) C1{ FL:15 FL:15 Fs:15 Fs:15}



static void Test_BFs15ll_BFu15ll_BFu15s_BFu15s()
{
  {
    init_simple_test("BFs15ll_BFu15ll_BFu15s_BFu15s");
    static STRUCT_IF_C BFs15ll_BFu15ll_BFu15s_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15ll_BFu15s_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15ll_BFu15s_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15ll_BFu15s_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15ll_BFu15s_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15ll_BFu15ll_BFu15s_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFu15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15ll_BFu15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFu15s_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15ll_BFu15ll_BFu15s_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15ll_BFu15s_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15ll_BFu15s_BFu15s, BFs15ll_BFu15ll_BFu15s_BFu15s)
//============================================================================


struct  BFs15ll_BFu15s  {
  signed __tsi64 v1:15;
  unsigned short v2:15;
};
//SIG(1 BFs15ll_BFu15s) C1{ FL:15 Fs:15}



static void Test_BFs15ll_BFu15s()
{
  {
    init_simple_test("BFs15ll_BFu15s");
    static STRUCT_IF_C BFs15ll_BFu15s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs15ll_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15s, BFs15ll_BFu15s)
//============================================================================


struct  BFs15ll_BFu15s_BFs15i  {
  signed __tsi64 v1:15;
  unsigned short v2:15;
  signed int v3:15;
};
//SIG(1 BFs15ll_BFu15s_BFs15i) C1{ FL:15 Fs:15 Fi:15}



static void Test_BFs15ll_BFu15s_BFs15i()
{
  {
    init_simple_test("BFs15ll_BFu15s_BFs15i");
    static STRUCT_IF_C BFs15ll_BFu15s_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15s_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15s_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15s_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFu15s_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15s_BFs15i, BFs15ll_BFu15s_BFs15i)
//============================================================================


struct  BFs15ll_BFu15s_BFs15i_BFs15i  {
  signed __tsi64 v1:15;
  unsigned short v2:15;
  signed int v3:15;
  signed int v4:15;
};
//SIG(1 BFs15ll_BFu15s_BFs15i_BFs15i) C1{ FL:15 Fs:15 Fi:15 Fi:15}



static void Test_BFs15ll_BFu15s_BFs15i_BFs15i()
{
  {
    init_simple_test("BFs15ll_BFu15s_BFs15i_BFs15i");
    static STRUCT_IF_C BFs15ll_BFu15s_BFs15i_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15s_BFs15i_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15s_BFs15i_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15s_BFs15i_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFs15i_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFu15s_BFs15i_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFs15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15s_BFs15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFs15i_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFu15s_BFs15i_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFs15i_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15s_BFs15i_BFs15i, BFs15ll_BFu15s_BFs15i_BFs15i)
//============================================================================


struct  BFs15ll_BFu15s_BFs15i_BFs15ll  {
  signed __tsi64 v1:15;
  unsigned short v2:15;
  signed int v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15ll_BFu15s_BFs15i_BFs15ll) C1{ FL:15 Fs:15 Fi:15 FL:15}



static void Test_BFs15ll_BFu15s_BFs15i_BFs15ll()
{
  {
    init_simple_test("BFs15ll_BFu15s_BFs15i_BFs15ll");
    static STRUCT_IF_C BFs15ll_BFu15s_BFs15i_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15s_BFs15i_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15s_BFs15i_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15s_BFs15i_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFs15i_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFu15s_BFs15i_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFs15i_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15s_BFs15i_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFs15i_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFu15s_BFs15i_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFs15i_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15s_BFs15i_BFs15ll, BFs15ll_BFu15s_BFs15i_BFs15ll)
//============================================================================


struct  BFs15ll_BFu15s_BFs15i_BFs15s  {
  signed __tsi64 v1:15;
  unsigned short v2:15;
  signed int v3:15;
  signed short v4:15;
};
//SIG(1 BFs15ll_BFu15s_BFs15i_BFs15s) C1{ FL:15 Fs:15 Fi:15 Fs:15}



static void Test_BFs15ll_BFu15s_BFs15i_BFs15s()
{
  {
    init_simple_test("BFs15ll_BFu15s_BFs15i_BFs15s");
    static STRUCT_IF_C BFs15ll_BFu15s_BFs15i_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15s_BFs15i_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15s_BFs15i_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15s_BFs15i_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFs15i_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFu15s_BFs15i_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFs15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15s_BFs15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFs15i_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15ll_BFu15s_BFs15i_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFs15i_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15s_BFs15i_BFs15s, BFs15ll_BFu15s_BFs15i_BFs15s)
//============================================================================


struct  BFs15ll_BFu15s_BFs15i_BFu15i  {
  signed __tsi64 v1:15;
  unsigned short v2:15;
  signed int v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15ll_BFu15s_BFs15i_BFu15i) C1{ FL:15 Fs:15 Fi:15 Fi:15}



static void Test_BFs15ll_BFu15s_BFs15i_BFu15i()
{
  {
    init_simple_test("BFs15ll_BFu15s_BFs15i_BFu15i");
    static STRUCT_IF_C BFs15ll_BFu15s_BFs15i_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15s_BFs15i_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15s_BFs15i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15s_BFs15i_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFs15i_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFu15s_BFs15i_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFs15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15s_BFs15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFs15i_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFu15s_BFs15i_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFs15i_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15s_BFs15i_BFu15i, BFs15ll_BFu15s_BFs15i_BFu15i)
//============================================================================


struct  BFs15ll_BFu15s_BFs15i_BFu15ll  {
  signed __tsi64 v1:15;
  unsigned short v2:15;
  signed int v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15ll_BFu15s_BFs15i_BFu15ll) C1{ FL:15 Fs:15 Fi:15 FL:15}



static void Test_BFs15ll_BFu15s_BFs15i_BFu15ll()
{
  {
    init_simple_test("BFs15ll_BFu15s_BFs15i_BFu15ll");
    static STRUCT_IF_C BFs15ll_BFu15s_BFs15i_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15s_BFs15i_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15s_BFs15i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15s_BFs15i_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFs15i_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFu15s_BFs15i_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFs15i_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15s_BFs15i_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFs15i_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFu15s_BFs15i_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFs15i_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15s_BFs15i_BFu15ll, BFs15ll_BFu15s_BFs15i_BFu15ll)
//============================================================================


struct  BFs15ll_BFu15s_BFs15i_BFu15s  {
  signed __tsi64 v1:15;
  unsigned short v2:15;
  signed int v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15ll_BFu15s_BFs15i_BFu15s) C1{ FL:15 Fs:15 Fi:15 Fs:15}



static void Test_BFs15ll_BFu15s_BFs15i_BFu15s()
{
  {
    init_simple_test("BFs15ll_BFu15s_BFs15i_BFu15s");
    static STRUCT_IF_C BFs15ll_BFu15s_BFs15i_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15s_BFs15i_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15s_BFs15i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15s_BFs15i_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFs15i_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFu15s_BFs15i_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFs15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15s_BFs15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFs15i_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15ll_BFu15s_BFs15i_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFs15i_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15s_BFs15i_BFu15s, BFs15ll_BFu15s_BFs15i_BFu15s)
//============================================================================


struct  BFs15ll_BFu15s_BFs15ll  {
  signed __tsi64 v1:15;
  unsigned short v2:15;
  signed __tsi64 v3:15;
};
//SIG(1 BFs15ll_BFu15s_BFs15ll) C1{ FL:15 Fs:15 FL:15}



static void Test_BFs15ll_BFu15s_BFs15ll()
{
  {
    init_simple_test("BFs15ll_BFu15s_BFs15ll");
    static STRUCT_IF_C BFs15ll_BFu15s_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15s_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15s_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15s_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFu15s_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFs15ll");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15ll_BFu15s_BFs15ll");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15s_BFs15ll, BFs15ll_BFu15s_BFs15ll)
//============================================================================


struct  BFs15ll_BFu15s_BFs15ll_BFs15i  {
  signed __tsi64 v1:15;
  unsigned short v2:15;
  signed __tsi64 v3:15;
  signed int v4:15;
};
//SIG(1 BFs15ll_BFu15s_BFs15ll_BFs15i) C1{ FL:15 Fs:15 FL:15 Fi:15}



static void Test_BFs15ll_BFu15s_BFs15ll_BFs15i()
{
  {
    init_simple_test("BFs15ll_BFu15s_BFs15ll_BFs15i");
    static STRUCT_IF_C BFs15ll_BFu15s_BFs15ll_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15s_BFs15ll_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15s_BFs15ll_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15s_BFs15ll_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFs15ll_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFu15s_BFs15ll_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFs15ll_BFs15i");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15ll_BFu15s_BFs15ll_BFs15i");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFs15ll_BFs15i");
    set_bf_and_test(lv, v4, 5, 6, 15, 1, "BFs15ll_BFu15s_BFs15ll_BFs15i");
    set_bf_and_test(lv, v4, 5, 6, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFs15ll_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15s_BFs15ll_BFs15i, BFs15ll_BFu15s_BFs15ll_BFs15i)
//============================================================================


struct  BFs15ll_BFu15s_BFs15ll_BFs15ll  {
  signed __tsi64 v1:15;
  unsigned short v2:15;
  signed __tsi64 v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15ll_BFu15s_BFs15ll_BFs15ll) C1{ FL:15 Fs:15 FL:15 FL:15}



static void Test_BFs15ll_BFu15s_BFs15ll_BFs15ll()
{
  {
    init_simple_test("BFs15ll_BFu15s_BFs15ll_BFs15ll");
    static STRUCT_IF_C BFs15ll_BFu15s_BFs15ll_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15s_BFs15ll_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15s_BFs15ll_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15s_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFu15s_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15ll_BFu15s_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v4, 5, 6, 15, 1, "BFs15ll_BFu15s_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v4, 5, 6, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFs15ll_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15s_BFs15ll_BFs15ll, BFs15ll_BFu15s_BFs15ll_BFs15ll)
//============================================================================


struct  BFs15ll_BFu15s_BFs15ll_BFs15s  {
  signed __tsi64 v1:15;
  unsigned short v2:15;
  signed __tsi64 v3:15;
  signed short v4:15;
};
//SIG(1 BFs15ll_BFu15s_BFs15ll_BFs15s) C1{ FL:15 Fs:15 FL:15 Fs:15}



static void Test_BFs15ll_BFu15s_BFs15ll_BFs15s()
{
  {
    init_simple_test("BFs15ll_BFu15s_BFs15ll_BFs15s");
    static STRUCT_IF_C BFs15ll_BFu15s_BFs15ll_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15s_BFs15ll_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15s_BFs15ll_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15s_BFs15ll_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFs15ll_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFu15s_BFs15ll_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFs15ll_BFs15s");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15ll_BFu15s_BFs15ll_BFs15s");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFs15ll_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15ll_BFu15s_BFs15ll_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFs15ll_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15s_BFs15ll_BFs15s, BFs15ll_BFu15s_BFs15ll_BFs15s)
//============================================================================


struct  BFs15ll_BFu15s_BFs15ll_BFu15i  {
  signed __tsi64 v1:15;
  unsigned short v2:15;
  signed __tsi64 v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15ll_BFu15s_BFs15ll_BFu15i) C1{ FL:15 Fs:15 FL:15 Fi:15}



static void Test_BFs15ll_BFu15s_BFs15ll_BFu15i()
{
  {
    init_simple_test("BFs15ll_BFu15s_BFs15ll_BFu15i");
    static STRUCT_IF_C BFs15ll_BFu15s_BFs15ll_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15s_BFs15ll_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15s_BFs15ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15s_BFs15ll_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFs15ll_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFu15s_BFs15ll_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFs15ll_BFu15i");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15ll_BFu15s_BFs15ll_BFu15i");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFs15ll_BFu15i");
    set_bf_and_test(lv, v4, 5, 6, 15, 1, "BFs15ll_BFu15s_BFs15ll_BFu15i");
    set_bf_and_test(lv, v4, 5, 6, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFs15ll_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15s_BFs15ll_BFu15i, BFs15ll_BFu15s_BFs15ll_BFu15i)
//============================================================================


struct  BFs15ll_BFu15s_BFs15ll_BFu15ll  {
  signed __tsi64 v1:15;
  unsigned short v2:15;
  signed __tsi64 v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15ll_BFu15s_BFs15ll_BFu15ll) C1{ FL:15 Fs:15 FL:15 FL:15}



static void Test_BFs15ll_BFu15s_BFs15ll_BFu15ll()
{
  {
    init_simple_test("BFs15ll_BFu15s_BFs15ll_BFu15ll");
    static STRUCT_IF_C BFs15ll_BFu15s_BFs15ll_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15s_BFs15ll_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15s_BFs15ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15s_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFu15s_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15ll_BFu15s_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v4, 5, 6, 15, 1, "BFs15ll_BFu15s_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v4, 5, 6, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFs15ll_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15s_BFs15ll_BFu15ll, BFs15ll_BFu15s_BFs15ll_BFu15ll)
//============================================================================


struct  BFs15ll_BFu15s_BFs15ll_BFu15s  {
  signed __tsi64 v1:15;
  unsigned short v2:15;
  signed __tsi64 v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15ll_BFu15s_BFs15ll_BFu15s) C1{ FL:15 Fs:15 FL:15 Fs:15}



static void Test_BFs15ll_BFu15s_BFs15ll_BFu15s()
{
  {
    init_simple_test("BFs15ll_BFu15s_BFs15ll_BFu15s");
    static STRUCT_IF_C BFs15ll_BFu15s_BFs15ll_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15s_BFs15ll_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15s_BFs15ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15s_BFs15ll_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFs15ll_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFu15s_BFs15ll_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFs15ll_BFu15s");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15ll_BFu15s_BFs15ll_BFu15s");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFs15ll_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15ll_BFu15s_BFs15ll_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFs15ll_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15s_BFs15ll_BFu15s, BFs15ll_BFu15s_BFs15ll_BFu15s)
//============================================================================


struct  BFs15ll_BFu15s_BFs15s  {
  signed __tsi64 v1:15;
  unsigned short v2:15;
  signed short v3:15;
};
//SIG(1 BFs15ll_BFu15s_BFs15s) C1{ FL:15 Fs:15 Fs:15}



static void Test_BFs15ll_BFu15s_BFs15s()
{
  {
    init_simple_test("BFs15ll_BFu15s_BFs15s");
    static STRUCT_IF_C BFs15ll_BFu15s_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15s_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15s_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15s_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFu15s_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15s_BFs15s, BFs15ll_BFu15s_BFs15s)
//============================================================================


struct  BFs15ll_BFu15s_BFs15s_BFs15i  {
  signed __tsi64 v1:15;
  unsigned short v2:15;
  signed short v3:15;
  signed int v4:15;
};
//SIG(1 BFs15ll_BFu15s_BFs15s_BFs15i) C1{ FL:15 Fs:15 Fs:15 Fi:15}



static void Test_BFs15ll_BFu15s_BFs15s_BFs15i()
{
  {
    init_simple_test("BFs15ll_BFu15s_BFs15s_BFs15i");
    static STRUCT_IF_C BFs15ll_BFu15s_BFs15s_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15s_BFs15s_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15s_BFs15s_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15s_BFs15s_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFs15s_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFu15s_BFs15s_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFs15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15s_BFs15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFs15s_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFu15s_BFs15s_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFs15s_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15s_BFs15s_BFs15i, BFs15ll_BFu15s_BFs15s_BFs15i)
//============================================================================


struct  BFs15ll_BFu15s_BFs15s_BFs15ll  {
  signed __tsi64 v1:15;
  unsigned short v2:15;
  signed short v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15ll_BFu15s_BFs15s_BFs15ll) C1{ FL:15 Fs:15 Fs:15 FL:15}



static void Test_BFs15ll_BFu15s_BFs15s_BFs15ll()
{
  {
    init_simple_test("BFs15ll_BFu15s_BFs15s_BFs15ll");
    static STRUCT_IF_C BFs15ll_BFu15s_BFs15s_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15s_BFs15s_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15s_BFs15s_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15s_BFs15s_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFs15s_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFu15s_BFs15s_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFs15s_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15s_BFs15s_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFs15s_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFu15s_BFs15s_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFs15s_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15s_BFs15s_BFs15ll, BFs15ll_BFu15s_BFs15s_BFs15ll)
//============================================================================


struct  BFs15ll_BFu15s_BFs15s_BFs15s  {
  signed __tsi64 v1:15;
  unsigned short v2:15;
  signed short v3:15;
  signed short v4:15;
};
//SIG(1 BFs15ll_BFu15s_BFs15s_BFs15s) C1{ FL:15 Fs:15 Fs:15 Fs:15}



static void Test_BFs15ll_BFu15s_BFs15s_BFs15s()
{
  {
    init_simple_test("BFs15ll_BFu15s_BFs15s_BFs15s");
    static STRUCT_IF_C BFs15ll_BFu15s_BFs15s_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15s_BFs15s_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15s_BFs15s_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15s_BFs15s_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFs15s_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFu15s_BFs15s_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFs15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15s_BFs15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFs15s_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15ll_BFu15s_BFs15s_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFs15s_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15s_BFs15s_BFs15s, BFs15ll_BFu15s_BFs15s_BFs15s)
//============================================================================


struct  BFs15ll_BFu15s_BFs15s_BFu15i  {
  signed __tsi64 v1:15;
  unsigned short v2:15;
  signed short v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15ll_BFu15s_BFs15s_BFu15i) C1{ FL:15 Fs:15 Fs:15 Fi:15}



static void Test_BFs15ll_BFu15s_BFs15s_BFu15i()
{
  {
    init_simple_test("BFs15ll_BFu15s_BFs15s_BFu15i");
    static STRUCT_IF_C BFs15ll_BFu15s_BFs15s_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15s_BFs15s_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15s_BFs15s_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15s_BFs15s_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFs15s_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFu15s_BFs15s_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFs15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15s_BFs15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFs15s_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFu15s_BFs15s_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFs15s_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15s_BFs15s_BFu15i, BFs15ll_BFu15s_BFs15s_BFu15i)
//============================================================================


struct  BFs15ll_BFu15s_BFs15s_BFu15ll  {
  signed __tsi64 v1:15;
  unsigned short v2:15;
  signed short v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15ll_BFu15s_BFs15s_BFu15ll) C1{ FL:15 Fs:15 Fs:15 FL:15}



static void Test_BFs15ll_BFu15s_BFs15s_BFu15ll()
{
  {
    init_simple_test("BFs15ll_BFu15s_BFs15s_BFu15ll");
    static STRUCT_IF_C BFs15ll_BFu15s_BFs15s_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15s_BFs15s_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15s_BFs15s_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15s_BFs15s_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFs15s_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFu15s_BFs15s_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFs15s_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15s_BFs15s_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFs15s_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFu15s_BFs15s_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFs15s_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15s_BFs15s_BFu15ll, BFs15ll_BFu15s_BFs15s_BFu15ll)
//============================================================================


struct  BFs15ll_BFu15s_BFs15s_BFu15s  {
  signed __tsi64 v1:15;
  unsigned short v2:15;
  signed short v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15ll_BFu15s_BFs15s_BFu15s) C1{ FL:15 Fs:15 Fs:15 Fs:15}



static void Test_BFs15ll_BFu15s_BFs15s_BFu15s()
{
  {
    init_simple_test("BFs15ll_BFu15s_BFs15s_BFu15s");
    static STRUCT_IF_C BFs15ll_BFu15s_BFs15s_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15s_BFs15s_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15s_BFs15s_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15s_BFs15s_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFs15s_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFu15s_BFs15s_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFs15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15s_BFs15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFs15s_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15ll_BFu15s_BFs15s_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFs15s_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15s_BFs15s_BFu15s, BFs15ll_BFu15s_BFs15s_BFu15s)
//============================================================================


struct  BFs15ll_BFu15s_BFu15i  {
  signed __tsi64 v1:15;
  unsigned short v2:15;
  unsigned int v3:15;
};
//SIG(1 BFs15ll_BFu15s_BFu15i) C1{ FL:15 Fs:15 Fi:15}



static void Test_BFs15ll_BFu15s_BFu15i()
{
  {
    init_simple_test("BFs15ll_BFu15s_BFu15i");
    static STRUCT_IF_C BFs15ll_BFu15s_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15s_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15s_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15s_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFu15s_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15s_BFu15i, BFs15ll_BFu15s_BFu15i)
//============================================================================


struct  BFs15ll_BFu15s_BFu15i_BFs15i  {
  signed __tsi64 v1:15;
  unsigned short v2:15;
  unsigned int v3:15;
  signed int v4:15;
};
//SIG(1 BFs15ll_BFu15s_BFu15i_BFs15i) C1{ FL:15 Fs:15 Fi:15 Fi:15}



static void Test_BFs15ll_BFu15s_BFu15i_BFs15i()
{
  {
    init_simple_test("BFs15ll_BFu15s_BFu15i_BFs15i");
    static STRUCT_IF_C BFs15ll_BFu15s_BFu15i_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15s_BFu15i_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15s_BFu15i_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15s_BFu15i_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFu15i_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFu15s_BFu15i_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFu15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15s_BFu15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFu15i_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFu15s_BFu15i_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFu15i_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15s_BFu15i_BFs15i, BFs15ll_BFu15s_BFu15i_BFs15i)
//============================================================================


struct  BFs15ll_BFu15s_BFu15i_BFs15ll  {
  signed __tsi64 v1:15;
  unsigned short v2:15;
  unsigned int v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15ll_BFu15s_BFu15i_BFs15ll) C1{ FL:15 Fs:15 Fi:15 FL:15}



static void Test_BFs15ll_BFu15s_BFu15i_BFs15ll()
{
  {
    init_simple_test("BFs15ll_BFu15s_BFu15i_BFs15ll");
    static STRUCT_IF_C BFs15ll_BFu15s_BFu15i_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15s_BFu15i_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15s_BFu15i_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15s_BFu15i_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFu15i_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFu15s_BFu15i_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFu15i_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15s_BFu15i_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFu15i_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFu15s_BFu15i_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFu15i_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15s_BFu15i_BFs15ll, BFs15ll_BFu15s_BFu15i_BFs15ll)
//============================================================================


struct  BFs15ll_BFu15s_BFu15i_BFs15s  {
  signed __tsi64 v1:15;
  unsigned short v2:15;
  unsigned int v3:15;
  signed short v4:15;
};
//SIG(1 BFs15ll_BFu15s_BFu15i_BFs15s) C1{ FL:15 Fs:15 Fi:15 Fs:15}



static void Test_BFs15ll_BFu15s_BFu15i_BFs15s()
{
  {
    init_simple_test("BFs15ll_BFu15s_BFu15i_BFs15s");
    static STRUCT_IF_C BFs15ll_BFu15s_BFu15i_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15s_BFu15i_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15s_BFu15i_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15s_BFu15i_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFu15i_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFu15s_BFu15i_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFu15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15s_BFu15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFu15i_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15ll_BFu15s_BFu15i_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFu15i_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15s_BFu15i_BFs15s, BFs15ll_BFu15s_BFu15i_BFs15s)
//============================================================================


struct  BFs15ll_BFu15s_BFu15i_BFu15i  {
  signed __tsi64 v1:15;
  unsigned short v2:15;
  unsigned int v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15ll_BFu15s_BFu15i_BFu15i) C1{ FL:15 Fs:15 Fi:15 Fi:15}



static void Test_BFs15ll_BFu15s_BFu15i_BFu15i()
{
  {
    init_simple_test("BFs15ll_BFu15s_BFu15i_BFu15i");
    static STRUCT_IF_C BFs15ll_BFu15s_BFu15i_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15s_BFu15i_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15s_BFu15i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15s_BFu15i_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFu15i_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFu15s_BFu15i_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFu15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15s_BFu15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFu15i_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFu15s_BFu15i_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFu15i_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15s_BFu15i_BFu15i, BFs15ll_BFu15s_BFu15i_BFu15i)
//============================================================================


struct  BFs15ll_BFu15s_BFu15i_BFu15ll  {
  signed __tsi64 v1:15;
  unsigned short v2:15;
  unsigned int v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15ll_BFu15s_BFu15i_BFu15ll) C1{ FL:15 Fs:15 Fi:15 FL:15}



static void Test_BFs15ll_BFu15s_BFu15i_BFu15ll()
{
  {
    init_simple_test("BFs15ll_BFu15s_BFu15i_BFu15ll");
    static STRUCT_IF_C BFs15ll_BFu15s_BFu15i_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15s_BFu15i_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15s_BFu15i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15s_BFu15i_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFu15i_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFu15s_BFu15i_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFu15i_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15s_BFu15i_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFu15i_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFu15s_BFu15i_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFu15i_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15s_BFu15i_BFu15ll, BFs15ll_BFu15s_BFu15i_BFu15ll)
//============================================================================


struct  BFs15ll_BFu15s_BFu15i_BFu15s  {
  signed __tsi64 v1:15;
  unsigned short v2:15;
  unsigned int v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15ll_BFu15s_BFu15i_BFu15s) C1{ FL:15 Fs:15 Fi:15 Fs:15}



static void Test_BFs15ll_BFu15s_BFu15i_BFu15s()
{
  {
    init_simple_test("BFs15ll_BFu15s_BFu15i_BFu15s");
    static STRUCT_IF_C BFs15ll_BFu15s_BFu15i_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15s_BFu15i_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15s_BFu15i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15s_BFu15i_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFu15i_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFu15s_BFu15i_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFu15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15s_BFu15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFu15i_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15ll_BFu15s_BFu15i_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFu15i_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15s_BFu15i_BFu15s, BFs15ll_BFu15s_BFu15i_BFu15s)
//============================================================================


struct  BFs15ll_BFu15s_BFu15ll  {
  signed __tsi64 v1:15;
  unsigned short v2:15;
  __tsu64 v3:15;
};
//SIG(1 BFs15ll_BFu15s_BFu15ll) C1{ FL:15 Fs:15 FL:15}



static void Test_BFs15ll_BFu15s_BFu15ll()
{
  {
    init_simple_test("BFs15ll_BFu15s_BFu15ll");
    static STRUCT_IF_C BFs15ll_BFu15s_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15s_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15s_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15s_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFu15s_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFu15ll");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15ll_BFu15s_BFu15ll");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15s_BFu15ll, BFs15ll_BFu15s_BFu15ll)
//============================================================================


struct  BFs15ll_BFu15s_BFu15ll_BFs15i  {
  signed __tsi64 v1:15;
  unsigned short v2:15;
  __tsu64 v3:15;
  signed int v4:15;
};
//SIG(1 BFs15ll_BFu15s_BFu15ll_BFs15i) C1{ FL:15 Fs:15 FL:15 Fi:15}



static void Test_BFs15ll_BFu15s_BFu15ll_BFs15i()
{
  {
    init_simple_test("BFs15ll_BFu15s_BFu15ll_BFs15i");
    static STRUCT_IF_C BFs15ll_BFu15s_BFu15ll_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15s_BFu15ll_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15s_BFu15ll_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15s_BFu15ll_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFu15ll_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFu15s_BFu15ll_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFu15ll_BFs15i");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15ll_BFu15s_BFu15ll_BFs15i");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFu15ll_BFs15i");
    set_bf_and_test(lv, v4, 5, 6, 15, 1, "BFs15ll_BFu15s_BFu15ll_BFs15i");
    set_bf_and_test(lv, v4, 5, 6, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFu15ll_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15s_BFu15ll_BFs15i, BFs15ll_BFu15s_BFu15ll_BFs15i)
//============================================================================


struct  BFs15ll_BFu15s_BFu15ll_BFs15ll  {
  signed __tsi64 v1:15;
  unsigned short v2:15;
  __tsu64 v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15ll_BFu15s_BFu15ll_BFs15ll) C1{ FL:15 Fs:15 FL:15 FL:15}



static void Test_BFs15ll_BFu15s_BFu15ll_BFs15ll()
{
  {
    init_simple_test("BFs15ll_BFu15s_BFu15ll_BFs15ll");
    static STRUCT_IF_C BFs15ll_BFu15s_BFu15ll_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15s_BFu15ll_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15s_BFu15ll_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15s_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFu15s_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15ll_BFu15s_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v4, 5, 6, 15, 1, "BFs15ll_BFu15s_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v4, 5, 6, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFu15ll_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15s_BFu15ll_BFs15ll, BFs15ll_BFu15s_BFu15ll_BFs15ll)
//============================================================================


struct  BFs15ll_BFu15s_BFu15ll_BFs15s  {
  signed __tsi64 v1:15;
  unsigned short v2:15;
  __tsu64 v3:15;
  signed short v4:15;
};
//SIG(1 BFs15ll_BFu15s_BFu15ll_BFs15s) C1{ FL:15 Fs:15 FL:15 Fs:15}



static void Test_BFs15ll_BFu15s_BFu15ll_BFs15s()
{
  {
    init_simple_test("BFs15ll_BFu15s_BFu15ll_BFs15s");
    static STRUCT_IF_C BFs15ll_BFu15s_BFu15ll_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15s_BFu15ll_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15s_BFu15ll_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15s_BFu15ll_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFu15ll_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFu15s_BFu15ll_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFu15ll_BFs15s");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15ll_BFu15s_BFu15ll_BFs15s");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFu15ll_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15ll_BFu15s_BFu15ll_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFu15ll_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15s_BFu15ll_BFs15s, BFs15ll_BFu15s_BFu15ll_BFs15s)
//============================================================================


struct  BFs15ll_BFu15s_BFu15ll_BFu15i  {
  signed __tsi64 v1:15;
  unsigned short v2:15;
  __tsu64 v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15ll_BFu15s_BFu15ll_BFu15i) C1{ FL:15 Fs:15 FL:15 Fi:15}



static void Test_BFs15ll_BFu15s_BFu15ll_BFu15i()
{
  {
    init_simple_test("BFs15ll_BFu15s_BFu15ll_BFu15i");
    static STRUCT_IF_C BFs15ll_BFu15s_BFu15ll_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15s_BFu15ll_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15s_BFu15ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15s_BFu15ll_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFu15ll_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFu15s_BFu15ll_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFu15ll_BFu15i");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15ll_BFu15s_BFu15ll_BFu15i");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFu15ll_BFu15i");
    set_bf_and_test(lv, v4, 5, 6, 15, 1, "BFs15ll_BFu15s_BFu15ll_BFu15i");
    set_bf_and_test(lv, v4, 5, 6, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFu15ll_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15s_BFu15ll_BFu15i, BFs15ll_BFu15s_BFu15ll_BFu15i)
//============================================================================


struct  BFs15ll_BFu15s_BFu15ll_BFu15ll  {
  signed __tsi64 v1:15;
  unsigned short v2:15;
  __tsu64 v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15ll_BFu15s_BFu15ll_BFu15ll) C1{ FL:15 Fs:15 FL:15 FL:15}



static void Test_BFs15ll_BFu15s_BFu15ll_BFu15ll()
{
  {
    init_simple_test("BFs15ll_BFu15s_BFu15ll_BFu15ll");
    static STRUCT_IF_C BFs15ll_BFu15s_BFu15ll_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15s_BFu15ll_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15s_BFu15ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15s_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFu15s_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15ll_BFu15s_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v4, 5, 6, 15, 1, "BFs15ll_BFu15s_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v4, 5, 6, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFu15ll_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15s_BFu15ll_BFu15ll, BFs15ll_BFu15s_BFu15ll_BFu15ll)
//============================================================================


struct  BFs15ll_BFu15s_BFu15ll_BFu15s  {
  signed __tsi64 v1:15;
  unsigned short v2:15;
  __tsu64 v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15ll_BFu15s_BFu15ll_BFu15s) C1{ FL:15 Fs:15 FL:15 Fs:15}



static void Test_BFs15ll_BFu15s_BFu15ll_BFu15s()
{
  {
    init_simple_test("BFs15ll_BFu15s_BFu15ll_BFu15s");
    static STRUCT_IF_C BFs15ll_BFu15s_BFu15ll_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15s_BFu15ll_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15s_BFu15ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15s_BFu15ll_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFu15ll_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFu15s_BFu15ll_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFu15ll_BFu15s");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15ll_BFu15s_BFu15ll_BFu15s");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFu15ll_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15ll_BFu15s_BFu15ll_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFu15ll_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15s_BFu15ll_BFu15s, BFs15ll_BFu15s_BFu15ll_BFu15s)
//============================================================================


struct  BFs15ll_BFu15s_BFu15s  {
  signed __tsi64 v1:15;
  unsigned short v2:15;
  unsigned short v3:15;
};
//SIG(1 BFs15ll_BFu15s_BFu15s) C1{ FL:15 Fs:15 Fs:15}



static void Test_BFs15ll_BFu15s_BFu15s()
{
  {
    init_simple_test("BFs15ll_BFu15s_BFu15s");
    static STRUCT_IF_C BFs15ll_BFu15s_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15s_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15s_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15s_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFu15s_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15s_BFu15s, BFs15ll_BFu15s_BFu15s)
//============================================================================


struct  BFs15ll_BFu15s_BFu15s_BFs15i  {
  signed __tsi64 v1:15;
  unsigned short v2:15;
  unsigned short v3:15;
  signed int v4:15;
};
//SIG(1 BFs15ll_BFu15s_BFu15s_BFs15i) C1{ FL:15 Fs:15 Fs:15 Fi:15}



static void Test_BFs15ll_BFu15s_BFu15s_BFs15i()
{
  {
    init_simple_test("BFs15ll_BFu15s_BFu15s_BFs15i");
    static STRUCT_IF_C BFs15ll_BFu15s_BFu15s_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15s_BFu15s_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15s_BFu15s_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15s_BFu15s_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFu15s_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFu15s_BFu15s_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFu15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15s_BFu15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFu15s_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFu15s_BFu15s_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFu15s_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15s_BFu15s_BFs15i, BFs15ll_BFu15s_BFu15s_BFs15i)
//============================================================================


struct  BFs15ll_BFu15s_BFu15s_BFs15ll  {
  signed __tsi64 v1:15;
  unsigned short v2:15;
  unsigned short v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15ll_BFu15s_BFu15s_BFs15ll) C1{ FL:15 Fs:15 Fs:15 FL:15}



static void Test_BFs15ll_BFu15s_BFu15s_BFs15ll()
{
  {
    init_simple_test("BFs15ll_BFu15s_BFu15s_BFs15ll");
    static STRUCT_IF_C BFs15ll_BFu15s_BFu15s_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15s_BFu15s_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15s_BFu15s_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15s_BFu15s_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFu15s_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFu15s_BFu15s_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFu15s_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15s_BFu15s_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFu15s_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFu15s_BFu15s_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFu15s_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15s_BFu15s_BFs15ll, BFs15ll_BFu15s_BFu15s_BFs15ll)
//============================================================================


struct  BFs15ll_BFu15s_BFu15s_BFs15s  {
  signed __tsi64 v1:15;
  unsigned short v2:15;
  unsigned short v3:15;
  signed short v4:15;
};
//SIG(1 BFs15ll_BFu15s_BFu15s_BFs15s) C1{ FL:15 Fs:15 Fs:15 Fs:15}



static void Test_BFs15ll_BFu15s_BFu15s_BFs15s()
{
  {
    init_simple_test("BFs15ll_BFu15s_BFu15s_BFs15s");
    static STRUCT_IF_C BFs15ll_BFu15s_BFu15s_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15s_BFu15s_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15s_BFu15s_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15s_BFu15s_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFu15s_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFu15s_BFu15s_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFu15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15s_BFu15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFu15s_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15ll_BFu15s_BFu15s_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFu15s_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15s_BFu15s_BFs15s, BFs15ll_BFu15s_BFu15s_BFs15s)
//============================================================================


struct  BFs15ll_BFu15s_BFu15s_BFu15i  {
  signed __tsi64 v1:15;
  unsigned short v2:15;
  unsigned short v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15ll_BFu15s_BFu15s_BFu15i) C1{ FL:15 Fs:15 Fs:15 Fi:15}



static void Test_BFs15ll_BFu15s_BFu15s_BFu15i()
{
  {
    init_simple_test("BFs15ll_BFu15s_BFu15s_BFu15i");
    static STRUCT_IF_C BFs15ll_BFu15s_BFu15s_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15s_BFu15s_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15s_BFu15s_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15s_BFu15s_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFu15s_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFu15s_BFu15s_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFu15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15s_BFu15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFu15s_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFu15s_BFu15s_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFu15s_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15s_BFu15s_BFu15i, BFs15ll_BFu15s_BFu15s_BFu15i)
//============================================================================


struct  BFs15ll_BFu15s_BFu15s_BFu15ll  {
  signed __tsi64 v1:15;
  unsigned short v2:15;
  unsigned short v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15ll_BFu15s_BFu15s_BFu15ll) C1{ FL:15 Fs:15 Fs:15 FL:15}



static void Test_BFs15ll_BFu15s_BFu15s_BFu15ll()
{
  {
    init_simple_test("BFs15ll_BFu15s_BFu15s_BFu15ll");
    static STRUCT_IF_C BFs15ll_BFu15s_BFu15s_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15s_BFu15s_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15s_BFu15s_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15s_BFu15s_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFu15s_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFu15s_BFu15s_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFu15s_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15s_BFu15s_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFu15s_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15ll_BFu15s_BFu15s_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFu15s_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15s_BFu15s_BFu15ll, BFs15ll_BFu15s_BFu15s_BFu15ll)
//============================================================================


struct  BFs15ll_BFu15s_BFu15s_BFu15s  {
  signed __tsi64 v1:15;
  unsigned short v2:15;
  unsigned short v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15ll_BFu15s_BFu15s_BFu15s) C1{ FL:15 Fs:15 Fs:15 Fs:15}



static void Test_BFs15ll_BFu15s_BFu15s_BFu15s()
{
  {
    init_simple_test("BFs15ll_BFu15s_BFu15s_BFu15s");
    static STRUCT_IF_C BFs15ll_BFu15s_BFu15s_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15ll_BFu15s_BFu15s_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15ll_BFu15s_BFu15s_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15ll_BFu15s_BFu15s_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15ll_BFu15s_BFu15s_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15ll_BFu15s_BFu15s_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFu15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15ll_BFu15s_BFu15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFu15s_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15ll_BFu15s_BFu15s_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15ll_BFu15s_BFu15s_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15ll_BFu15s_BFu15s_BFu15s, BFs15ll_BFu15s_BFu15s_BFu15s)
//============================================================================


struct  BFs15s_BFs15i  {
  signed short v1:15;
  signed int v2:15;
};
//SIG(1 BFs15s_BFs15i) C1{ Fs:15 Fi:15}



static void Test_BFs15s_BFs15i()
{
  {
    init_simple_test("BFs15s_BFs15i");
    static STRUCT_IF_C BFs15s_BFs15i lv;
    check2(sizeof(lv), 4, "sizeof(BFs15s_BFs15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15s_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15i, BFs15s_BFs15i)
//============================================================================


struct  BFs15s_BFs15i_BFs15i  {
  signed short v1:15;
  signed int v2:15;
  signed int v3:15;
};
//SIG(1 BFs15s_BFs15i_BFs15i) C1{ Fs:15 Fi:15 Fi:15}



static void Test_BFs15s_BFs15i_BFs15i()
{
  {
    init_simple_test("BFs15s_BFs15i_BFs15i");
    static STRUCT_IF_C BFs15s_BFs15i_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15i_BFs15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15s_BFs15i_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15i_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15i_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15i_BFs15i, BFs15s_BFs15i_BFs15i)
//============================================================================


struct  BFs15s_BFs15i_BFs15i_BFs15i  {
  signed short v1:15;
  signed int v2:15;
  signed int v3:15;
  signed int v4:15;
};
//SIG(1 BFs15s_BFs15i_BFs15i_BFs15i) C1{ Fs:15 Fi:15 Fi:15 Fi:15}



static void Test_BFs15s_BFs15i_BFs15i_BFs15i()
{
  {
    init_simple_test("BFs15s_BFs15i_BFs15i_BFs15i");
    static STRUCT_IF_C BFs15s_BFs15i_BFs15i_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15i_BFs15i_BFs15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15s_BFs15i_BFs15i_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15i_BFs15i_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFs15i_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15i_BFs15i_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFs15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15i_BFs15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFs15i_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFs15i_BFs15i_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFs15i_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15i_BFs15i_BFs15i, BFs15s_BFs15i_BFs15i_BFs15i)
//============================================================================


struct  BFs15s_BFs15i_BFs15i_BFs15ll  {
  signed short v1:15;
  signed int v2:15;
  signed int v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15s_BFs15i_BFs15i_BFs15ll) C1{ Fs:15 Fi:15 Fi:15 FL:15}



static void Test_BFs15s_BFs15i_BFs15i_BFs15ll()
{
  {
    init_simple_test("BFs15s_BFs15i_BFs15i_BFs15ll");
    static STRUCT_IF_C BFs15s_BFs15i_BFs15i_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15i_BFs15i_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15i_BFs15i_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15i_BFs15i_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFs15i_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15i_BFs15i_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFs15i_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15i_BFs15i_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFs15i_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFs15i_BFs15i_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFs15i_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15i_BFs15i_BFs15ll, BFs15s_BFs15i_BFs15i_BFs15ll)
//============================================================================


struct  BFs15s_BFs15i_BFs15i_BFs15s  {
  signed short v1:15;
  signed int v2:15;
  signed int v3:15;
  signed short v4:15;
};
//SIG(1 BFs15s_BFs15i_BFs15i_BFs15s) C1{ Fs:15 Fi:15 Fi:15 Fs:15}



static void Test_BFs15s_BFs15i_BFs15i_BFs15s()
{
  {
    init_simple_test("BFs15s_BFs15i_BFs15i_BFs15s");
    static STRUCT_IF_C BFs15s_BFs15i_BFs15i_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15i_BFs15i_BFs15s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15s_BFs15i_BFs15i_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15i_BFs15i_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFs15i_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15i_BFs15i_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFs15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15i_BFs15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFs15i_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15s_BFs15i_BFs15i_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFs15i_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15i_BFs15i_BFs15s, BFs15s_BFs15i_BFs15i_BFs15s)
//============================================================================


struct  BFs15s_BFs15i_BFs15i_BFu15i  {
  signed short v1:15;
  signed int v2:15;
  signed int v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15s_BFs15i_BFs15i_BFu15i) C1{ Fs:15 Fi:15 Fi:15 Fi:15}



static void Test_BFs15s_BFs15i_BFs15i_BFu15i()
{
  {
    init_simple_test("BFs15s_BFs15i_BFs15i_BFu15i");
    static STRUCT_IF_C BFs15s_BFs15i_BFs15i_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15i_BFs15i_BFu15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15s_BFs15i_BFs15i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15i_BFs15i_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFs15i_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15i_BFs15i_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFs15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15i_BFs15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFs15i_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFs15i_BFs15i_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15s_BFs15i_BFs15i_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15i_BFs15i_BFu15i, BFs15s_BFs15i_BFs15i_BFu15i)
//============================================================================


struct  BFs15s_BFs15i_BFs15i_BFu15ll  {
  signed short v1:15;
  signed int v2:15;
  signed int v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15s_BFs15i_BFs15i_BFu15ll) C1{ Fs:15 Fi:15 Fi:15 FL:15}



static void Test_BFs15s_BFs15i_BFs15i_BFu15ll()
{
  {
    init_simple_test("BFs15s_BFs15i_BFs15i_BFu15ll");
    static STRUCT_IF_C BFs15s_BFs15i_BFs15i_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15i_BFs15i_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15i_BFs15i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15i_BFs15i_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFs15i_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15i_BFs15i_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFs15i_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15i_BFs15i_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFs15i_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFs15i_BFs15i_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15s_BFs15i_BFs15i_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15i_BFs15i_BFu15ll, BFs15s_BFs15i_BFs15i_BFu15ll)
//============================================================================


struct  BFs15s_BFs15i_BFs15i_BFu15s  {
  signed short v1:15;
  signed int v2:15;
  signed int v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15s_BFs15i_BFs15i_BFu15s) C1{ Fs:15 Fi:15 Fi:15 Fs:15}



static void Test_BFs15s_BFs15i_BFs15i_BFu15s()
{
  {
    init_simple_test("BFs15s_BFs15i_BFs15i_BFu15s");
    static STRUCT_IF_C BFs15s_BFs15i_BFs15i_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15i_BFs15i_BFu15s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15s_BFs15i_BFs15i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15i_BFs15i_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFs15i_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15i_BFs15i_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFs15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15i_BFs15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFs15i_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15s_BFs15i_BFs15i_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15s_BFs15i_BFs15i_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15i_BFs15i_BFu15s, BFs15s_BFs15i_BFs15i_BFu15s)
//============================================================================


struct  BFs15s_BFs15i_BFs15ll  {
  signed short v1:15;
  signed int v2:15;
  signed __tsi64 v3:15;
};
//SIG(1 BFs15s_BFs15i_BFs15ll) C1{ Fs:15 Fi:15 FL:15}



static void Test_BFs15s_BFs15i_BFs15ll()
{
  {
    init_simple_test("BFs15s_BFs15i_BFs15ll");
    static STRUCT_IF_C BFs15s_BFs15i_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15i_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15i_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15i_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15i_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFs15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15s_BFs15i_BFs15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15i_BFs15ll, BFs15s_BFs15i_BFs15ll)
//============================================================================


struct  BFs15s_BFs15i_BFs15ll_BFs15i  {
  signed short v1:15;
  signed int v2:15;
  signed __tsi64 v3:15;
  signed int v4:15;
};
//SIG(1 BFs15s_BFs15i_BFs15ll_BFs15i) C1{ Fs:15 Fi:15 FL:15 Fi:15}



static void Test_BFs15s_BFs15i_BFs15ll_BFs15i()
{
  {
    init_simple_test("BFs15s_BFs15i_BFs15ll_BFs15i");
    static STRUCT_IF_C BFs15s_BFs15i_BFs15ll_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15i_BFs15ll_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15i_BFs15ll_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15i_BFs15ll_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFs15ll_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15i_BFs15ll_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFs15ll_BFs15i");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15s_BFs15i_BFs15ll_BFs15i");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFs15ll_BFs15i");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15s_BFs15i_BFs15ll_BFs15i");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFs15ll_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15i_BFs15ll_BFs15i, BFs15s_BFs15i_BFs15ll_BFs15i)
//============================================================================


struct  BFs15s_BFs15i_BFs15ll_BFs15ll  {
  signed short v1:15;
  signed int v2:15;
  signed __tsi64 v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15s_BFs15i_BFs15ll_BFs15ll) C1{ Fs:15 Fi:15 FL:15 FL:15}



static void Test_BFs15s_BFs15i_BFs15ll_BFs15ll()
{
  {
    init_simple_test("BFs15s_BFs15i_BFs15ll_BFs15ll");
    static STRUCT_IF_C BFs15s_BFs15i_BFs15ll_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15i_BFs15ll_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15i_BFs15ll_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15i_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15i_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15s_BFs15i_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15s_BFs15i_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFs15ll_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15i_BFs15ll_BFs15ll, BFs15s_BFs15i_BFs15ll_BFs15ll)
//============================================================================


struct  BFs15s_BFs15i_BFs15ll_BFs15s  {
  signed short v1:15;
  signed int v2:15;
  signed __tsi64 v3:15;
  signed short v4:15;
};
//SIG(1 BFs15s_BFs15i_BFs15ll_BFs15s) C1{ Fs:15 Fi:15 FL:15 Fs:15}



static void Test_BFs15s_BFs15i_BFs15ll_BFs15s()
{
  {
    init_simple_test("BFs15s_BFs15i_BFs15ll_BFs15s");
    static STRUCT_IF_C BFs15s_BFs15i_BFs15ll_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15i_BFs15ll_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15i_BFs15ll_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15i_BFs15ll_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFs15ll_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15i_BFs15ll_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFs15ll_BFs15s");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15s_BFs15i_BFs15ll_BFs15s");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFs15ll_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15s_BFs15i_BFs15ll_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFs15ll_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15i_BFs15ll_BFs15s, BFs15s_BFs15i_BFs15ll_BFs15s)
//============================================================================


struct  BFs15s_BFs15i_BFs15ll_BFu15i  {
  signed short v1:15;
  signed int v2:15;
  signed __tsi64 v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15s_BFs15i_BFs15ll_BFu15i) C1{ Fs:15 Fi:15 FL:15 Fi:15}



static void Test_BFs15s_BFs15i_BFs15ll_BFu15i()
{
  {
    init_simple_test("BFs15s_BFs15i_BFs15ll_BFu15i");
    static STRUCT_IF_C BFs15s_BFs15i_BFs15ll_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15i_BFs15ll_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15i_BFs15ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15i_BFs15ll_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFs15ll_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15i_BFs15ll_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFs15ll_BFu15i");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15s_BFs15i_BFs15ll_BFu15i");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFs15ll_BFu15i");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15s_BFs15i_BFs15ll_BFu15i");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_ull(1LL<<14), "BFs15s_BFs15i_BFs15ll_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15i_BFs15ll_BFu15i, BFs15s_BFs15i_BFs15ll_BFu15i)
//============================================================================


struct  BFs15s_BFs15i_BFs15ll_BFu15ll  {
  signed short v1:15;
  signed int v2:15;
  signed __tsi64 v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15s_BFs15i_BFs15ll_BFu15ll) C1{ Fs:15 Fi:15 FL:15 FL:15}



static void Test_BFs15s_BFs15i_BFs15ll_BFu15ll()
{
  {
    init_simple_test("BFs15s_BFs15i_BFs15ll_BFu15ll");
    static STRUCT_IF_C BFs15s_BFs15i_BFs15ll_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15i_BFs15ll_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15i_BFs15ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15i_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15i_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15s_BFs15i_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15s_BFs15i_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_ull(1LL<<14), "BFs15s_BFs15i_BFs15ll_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15i_BFs15ll_BFu15ll, BFs15s_BFs15i_BFs15ll_BFu15ll)
//============================================================================


struct  BFs15s_BFs15i_BFs15ll_BFu15s  {
  signed short v1:15;
  signed int v2:15;
  signed __tsi64 v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15s_BFs15i_BFs15ll_BFu15s) C1{ Fs:15 Fi:15 FL:15 Fs:15}



static void Test_BFs15s_BFs15i_BFs15ll_BFu15s()
{
  {
    init_simple_test("BFs15s_BFs15i_BFs15ll_BFu15s");
    static STRUCT_IF_C BFs15s_BFs15i_BFs15ll_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15i_BFs15ll_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15i_BFs15ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15i_BFs15ll_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFs15ll_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15i_BFs15ll_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFs15ll_BFu15s");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15s_BFs15i_BFs15ll_BFu15s");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFs15ll_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15s_BFs15i_BFs15ll_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15s_BFs15i_BFs15ll_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15i_BFs15ll_BFu15s, BFs15s_BFs15i_BFs15ll_BFu15s)
//============================================================================


struct  BFs15s_BFs15i_BFs15s  {
  signed short v1:15;
  signed int v2:15;
  signed short v3:15;
};
//SIG(1 BFs15s_BFs15i_BFs15s) C1{ Fs:15 Fi:15 Fs:15}



static void Test_BFs15s_BFs15i_BFs15s()
{
  {
    init_simple_test("BFs15s_BFs15i_BFs15s");
    static STRUCT_IF_C BFs15s_BFs15i_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15i_BFs15s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15s_BFs15i_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15i_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15i_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15i_BFs15s, BFs15s_BFs15i_BFs15s)
//============================================================================


struct  BFs15s_BFs15i_BFs15s_BFs15i  {
  signed short v1:15;
  signed int v2:15;
  signed short v3:15;
  signed int v4:15;
};
//SIG(1 BFs15s_BFs15i_BFs15s_BFs15i) C1{ Fs:15 Fi:15 Fs:15 Fi:15}



static void Test_BFs15s_BFs15i_BFs15s_BFs15i()
{
  {
    init_simple_test("BFs15s_BFs15i_BFs15s_BFs15i");
    static STRUCT_IF_C BFs15s_BFs15i_BFs15s_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15i_BFs15s_BFs15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15s_BFs15i_BFs15s_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15i_BFs15s_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFs15s_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15i_BFs15s_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFs15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15i_BFs15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFs15s_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFs15i_BFs15s_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFs15s_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15i_BFs15s_BFs15i, BFs15s_BFs15i_BFs15s_BFs15i)
//============================================================================


struct  BFs15s_BFs15i_BFs15s_BFs15ll  {
  signed short v1:15;
  signed int v2:15;
  signed short v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15s_BFs15i_BFs15s_BFs15ll) C1{ Fs:15 Fi:15 Fs:15 FL:15}



static void Test_BFs15s_BFs15i_BFs15s_BFs15ll()
{
  {
    init_simple_test("BFs15s_BFs15i_BFs15s_BFs15ll");
    static STRUCT_IF_C BFs15s_BFs15i_BFs15s_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15i_BFs15s_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15i_BFs15s_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15i_BFs15s_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFs15s_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15i_BFs15s_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFs15s_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15i_BFs15s_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFs15s_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFs15i_BFs15s_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFs15s_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15i_BFs15s_BFs15ll, BFs15s_BFs15i_BFs15s_BFs15ll)
//============================================================================


struct  BFs15s_BFs15i_BFs15s_BFs15s  {
  signed short v1:15;
  signed int v2:15;
  signed short v3:15;
  signed short v4:15;
};
//SIG(1 BFs15s_BFs15i_BFs15s_BFs15s) C1{ Fs:15 Fi:15 Fs:15 Fs:15}



static void Test_BFs15s_BFs15i_BFs15s_BFs15s()
{
  {
    init_simple_test("BFs15s_BFs15i_BFs15s_BFs15s");
    static STRUCT_IF_C BFs15s_BFs15i_BFs15s_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15i_BFs15s_BFs15s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15s_BFs15i_BFs15s_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15i_BFs15s_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFs15s_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15i_BFs15s_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFs15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15i_BFs15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFs15s_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15s_BFs15i_BFs15s_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFs15s_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15i_BFs15s_BFs15s, BFs15s_BFs15i_BFs15s_BFs15s)
//============================================================================


struct  BFs15s_BFs15i_BFs15s_BFu15i  {
  signed short v1:15;
  signed int v2:15;
  signed short v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15s_BFs15i_BFs15s_BFu15i) C1{ Fs:15 Fi:15 Fs:15 Fi:15}



static void Test_BFs15s_BFs15i_BFs15s_BFu15i()
{
  {
    init_simple_test("BFs15s_BFs15i_BFs15s_BFu15i");
    static STRUCT_IF_C BFs15s_BFs15i_BFs15s_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15i_BFs15s_BFu15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15s_BFs15i_BFs15s_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15i_BFs15s_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFs15s_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15i_BFs15s_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFs15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15i_BFs15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFs15s_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFs15i_BFs15s_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15s_BFs15i_BFs15s_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15i_BFs15s_BFu15i, BFs15s_BFs15i_BFs15s_BFu15i)
//============================================================================


struct  BFs15s_BFs15i_BFs15s_BFu15ll  {
  signed short v1:15;
  signed int v2:15;
  signed short v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15s_BFs15i_BFs15s_BFu15ll) C1{ Fs:15 Fi:15 Fs:15 FL:15}



static void Test_BFs15s_BFs15i_BFs15s_BFu15ll()
{
  {
    init_simple_test("BFs15s_BFs15i_BFs15s_BFu15ll");
    static STRUCT_IF_C BFs15s_BFs15i_BFs15s_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15i_BFs15s_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15i_BFs15s_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15i_BFs15s_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFs15s_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15i_BFs15s_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFs15s_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15i_BFs15s_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFs15s_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFs15i_BFs15s_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15s_BFs15i_BFs15s_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15i_BFs15s_BFu15ll, BFs15s_BFs15i_BFs15s_BFu15ll)
//============================================================================


struct  BFs15s_BFs15i_BFs15s_BFu15s  {
  signed short v1:15;
  signed int v2:15;
  signed short v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15s_BFs15i_BFs15s_BFu15s) C1{ Fs:15 Fi:15 Fs:15 Fs:15}



static void Test_BFs15s_BFs15i_BFs15s_BFu15s()
{
  {
    init_simple_test("BFs15s_BFs15i_BFs15s_BFu15s");
    static STRUCT_IF_C BFs15s_BFs15i_BFs15s_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15i_BFs15s_BFu15s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15s_BFs15i_BFs15s_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15i_BFs15s_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFs15s_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15i_BFs15s_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFs15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15i_BFs15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFs15s_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15s_BFs15i_BFs15s_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15s_BFs15i_BFs15s_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15i_BFs15s_BFu15s, BFs15s_BFs15i_BFs15s_BFu15s)
//============================================================================


struct  BFs15s_BFs15i_BFu15i  {
  signed short v1:15;
  signed int v2:15;
  unsigned int v3:15;
};
//SIG(1 BFs15s_BFs15i_BFu15i) C1{ Fs:15 Fi:15 Fi:15}



static void Test_BFs15s_BFs15i_BFu15i()
{
  {
    init_simple_test("BFs15s_BFs15i_BFu15i");
    static STRUCT_IF_C BFs15s_BFs15i_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15i_BFu15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15s_BFs15i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15i_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15i_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFs15i_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15i_BFu15i, BFs15s_BFs15i_BFu15i)
//============================================================================


struct  BFs15s_BFs15i_BFu15i_BFs15i  {
  signed short v1:15;
  signed int v2:15;
  unsigned int v3:15;
  signed int v4:15;
};
//SIG(1 BFs15s_BFs15i_BFu15i_BFs15i) C1{ Fs:15 Fi:15 Fi:15 Fi:15}



static void Test_BFs15s_BFs15i_BFu15i_BFs15i()
{
  {
    init_simple_test("BFs15s_BFs15i_BFu15i_BFs15i");
    static STRUCT_IF_C BFs15s_BFs15i_BFu15i_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15i_BFu15i_BFs15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15s_BFs15i_BFu15i_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15i_BFu15i_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFu15i_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15i_BFu15i_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFu15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15i_BFu15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFs15i_BFu15i_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFs15i_BFu15i_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFu15i_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15i_BFu15i_BFs15i, BFs15s_BFs15i_BFu15i_BFs15i)
//============================================================================


struct  BFs15s_BFs15i_BFu15i_BFs15ll  {
  signed short v1:15;
  signed int v2:15;
  unsigned int v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15s_BFs15i_BFu15i_BFs15ll) C1{ Fs:15 Fi:15 Fi:15 FL:15}



static void Test_BFs15s_BFs15i_BFu15i_BFs15ll()
{
  {
    init_simple_test("BFs15s_BFs15i_BFu15i_BFs15ll");
    static STRUCT_IF_C BFs15s_BFs15i_BFu15i_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15i_BFu15i_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15i_BFu15i_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15i_BFu15i_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFu15i_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15i_BFu15i_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFu15i_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15i_BFu15i_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFs15i_BFu15i_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFs15i_BFu15i_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFu15i_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15i_BFu15i_BFs15ll, BFs15s_BFs15i_BFu15i_BFs15ll)
//============================================================================


struct  BFs15s_BFs15i_BFu15i_BFs15s  {
  signed short v1:15;
  signed int v2:15;
  unsigned int v3:15;
  signed short v4:15;
};
//SIG(1 BFs15s_BFs15i_BFu15i_BFs15s) C1{ Fs:15 Fi:15 Fi:15 Fs:15}



static void Test_BFs15s_BFs15i_BFu15i_BFs15s()
{
  {
    init_simple_test("BFs15s_BFs15i_BFu15i_BFs15s");
    static STRUCT_IF_C BFs15s_BFs15i_BFu15i_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15i_BFu15i_BFs15s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15s_BFs15i_BFu15i_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15i_BFu15i_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFu15i_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15i_BFu15i_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFu15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15i_BFu15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFs15i_BFu15i_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15s_BFs15i_BFu15i_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFu15i_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15i_BFu15i_BFs15s, BFs15s_BFs15i_BFu15i_BFs15s)
//============================================================================


struct  BFs15s_BFs15i_BFu15i_BFu15i  {
  signed short v1:15;
  signed int v2:15;
  unsigned int v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15s_BFs15i_BFu15i_BFu15i) C1{ Fs:15 Fi:15 Fi:15 Fi:15}



static void Test_BFs15s_BFs15i_BFu15i_BFu15i()
{
  {
    init_simple_test("BFs15s_BFs15i_BFu15i_BFu15i");
    static STRUCT_IF_C BFs15s_BFs15i_BFu15i_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15i_BFu15i_BFu15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15s_BFs15i_BFu15i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15i_BFu15i_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFu15i_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15i_BFu15i_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFu15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15i_BFu15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFs15i_BFu15i_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFs15i_BFu15i_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15s_BFs15i_BFu15i_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15i_BFu15i_BFu15i, BFs15s_BFs15i_BFu15i_BFu15i)
//============================================================================


struct  BFs15s_BFs15i_BFu15i_BFu15ll  {
  signed short v1:15;
  signed int v2:15;
  unsigned int v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15s_BFs15i_BFu15i_BFu15ll) C1{ Fs:15 Fi:15 Fi:15 FL:15}



static void Test_BFs15s_BFs15i_BFu15i_BFu15ll()
{
  {
    init_simple_test("BFs15s_BFs15i_BFu15i_BFu15ll");
    static STRUCT_IF_C BFs15s_BFs15i_BFu15i_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15i_BFu15i_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15i_BFu15i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15i_BFu15i_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFu15i_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15i_BFu15i_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFu15i_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15i_BFu15i_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFs15i_BFu15i_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFs15i_BFu15i_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15s_BFs15i_BFu15i_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15i_BFu15i_BFu15ll, BFs15s_BFs15i_BFu15i_BFu15ll)
//============================================================================


struct  BFs15s_BFs15i_BFu15i_BFu15s  {
  signed short v1:15;
  signed int v2:15;
  unsigned int v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15s_BFs15i_BFu15i_BFu15s) C1{ Fs:15 Fi:15 Fi:15 Fs:15}



static void Test_BFs15s_BFs15i_BFu15i_BFu15s()
{
  {
    init_simple_test("BFs15s_BFs15i_BFu15i_BFu15s");
    static STRUCT_IF_C BFs15s_BFs15i_BFu15i_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15i_BFu15i_BFu15s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15s_BFs15i_BFu15i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15i_BFu15i_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFu15i_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15i_BFu15i_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFu15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15i_BFu15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFs15i_BFu15i_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15s_BFs15i_BFu15i_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15s_BFs15i_BFu15i_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15i_BFu15i_BFu15s, BFs15s_BFs15i_BFu15i_BFu15s)
//============================================================================


struct  BFs15s_BFs15i_BFu15ll  {
  signed short v1:15;
  signed int v2:15;
  __tsu64 v3:15;
};
//SIG(1 BFs15s_BFs15i_BFu15ll) C1{ Fs:15 Fi:15 FL:15}



static void Test_BFs15s_BFs15i_BFu15ll()
{
  {
    init_simple_test("BFs15s_BFs15i_BFu15ll");
    static STRUCT_IF_C BFs15s_BFs15i_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15i_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15i_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15i_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFu15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15s_BFs15i_BFu15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15s_BFs15i_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15i_BFu15ll, BFs15s_BFs15i_BFu15ll)
//============================================================================


struct  BFs15s_BFs15i_BFu15ll_BFs15i  {
  signed short v1:15;
  signed int v2:15;
  __tsu64 v3:15;
  signed int v4:15;
};
//SIG(1 BFs15s_BFs15i_BFu15ll_BFs15i) C1{ Fs:15 Fi:15 FL:15 Fi:15}



static void Test_BFs15s_BFs15i_BFu15ll_BFs15i()
{
  {
    init_simple_test("BFs15s_BFs15i_BFu15ll_BFs15i");
    static STRUCT_IF_C BFs15s_BFs15i_BFu15ll_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15i_BFu15ll_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15i_BFu15ll_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15i_BFu15ll_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFu15ll_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15i_BFu15ll_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFu15ll_BFs15i");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15s_BFs15i_BFu15ll_BFs15i");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15s_BFs15i_BFu15ll_BFs15i");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15s_BFs15i_BFu15ll_BFs15i");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFu15ll_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15i_BFu15ll_BFs15i, BFs15s_BFs15i_BFu15ll_BFs15i)
//============================================================================


struct  BFs15s_BFs15i_BFu15ll_BFs15ll  {
  signed short v1:15;
  signed int v2:15;
  __tsu64 v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15s_BFs15i_BFu15ll_BFs15ll) C1{ Fs:15 Fi:15 FL:15 FL:15}



static void Test_BFs15s_BFs15i_BFu15ll_BFs15ll()
{
  {
    init_simple_test("BFs15s_BFs15i_BFu15ll_BFs15ll");
    static STRUCT_IF_C BFs15s_BFs15i_BFu15ll_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15i_BFu15ll_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15i_BFu15ll_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15i_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15i_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15s_BFs15i_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15s_BFs15i_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15s_BFs15i_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFu15ll_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15i_BFu15ll_BFs15ll, BFs15s_BFs15i_BFu15ll_BFs15ll)
//============================================================================


struct  BFs15s_BFs15i_BFu15ll_BFs15s  {
  signed short v1:15;
  signed int v2:15;
  __tsu64 v3:15;
  signed short v4:15;
};
//SIG(1 BFs15s_BFs15i_BFu15ll_BFs15s) C1{ Fs:15 Fi:15 FL:15 Fs:15}



static void Test_BFs15s_BFs15i_BFu15ll_BFs15s()
{
  {
    init_simple_test("BFs15s_BFs15i_BFu15ll_BFs15s");
    static STRUCT_IF_C BFs15s_BFs15i_BFu15ll_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15i_BFu15ll_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15i_BFu15ll_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15i_BFu15ll_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFu15ll_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15i_BFu15ll_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFu15ll_BFs15s");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15s_BFs15i_BFu15ll_BFs15s");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15s_BFs15i_BFu15ll_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15s_BFs15i_BFu15ll_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFu15ll_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15i_BFu15ll_BFs15s, BFs15s_BFs15i_BFu15ll_BFs15s)
//============================================================================


struct  BFs15s_BFs15i_BFu15ll_BFu15i  {
  signed short v1:15;
  signed int v2:15;
  __tsu64 v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15s_BFs15i_BFu15ll_BFu15i) C1{ Fs:15 Fi:15 FL:15 Fi:15}



static void Test_BFs15s_BFs15i_BFu15ll_BFu15i()
{
  {
    init_simple_test("BFs15s_BFs15i_BFu15ll_BFu15i");
    static STRUCT_IF_C BFs15s_BFs15i_BFu15ll_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15i_BFu15ll_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15i_BFu15ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15i_BFu15ll_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFu15ll_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15i_BFu15ll_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFu15ll_BFu15i");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15s_BFs15i_BFu15ll_BFu15i");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15s_BFs15i_BFu15ll_BFu15i");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15s_BFs15i_BFu15ll_BFu15i");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_ull(1LL<<14), "BFs15s_BFs15i_BFu15ll_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15i_BFu15ll_BFu15i, BFs15s_BFs15i_BFu15ll_BFu15i)
//============================================================================


struct  BFs15s_BFs15i_BFu15ll_BFu15ll  {
  signed short v1:15;
  signed int v2:15;
  __tsu64 v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15s_BFs15i_BFu15ll_BFu15ll) C1{ Fs:15 Fi:15 FL:15 FL:15}



static void Test_BFs15s_BFs15i_BFu15ll_BFu15ll()
{
  {
    init_simple_test("BFs15s_BFs15i_BFu15ll_BFu15ll");
    static STRUCT_IF_C BFs15s_BFs15i_BFu15ll_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15i_BFu15ll_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15i_BFu15ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15i_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15i_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15s_BFs15i_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15s_BFs15i_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15s_BFs15i_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_ull(1LL<<14), "BFs15s_BFs15i_BFu15ll_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15i_BFu15ll_BFu15ll, BFs15s_BFs15i_BFu15ll_BFu15ll)
//============================================================================


struct  BFs15s_BFs15i_BFu15ll_BFu15s  {
  signed short v1:15;
  signed int v2:15;
  __tsu64 v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15s_BFs15i_BFu15ll_BFu15s) C1{ Fs:15 Fi:15 FL:15 Fs:15}



static void Test_BFs15s_BFs15i_BFu15ll_BFu15s()
{
  {
    init_simple_test("BFs15s_BFs15i_BFu15ll_BFu15s");
    static STRUCT_IF_C BFs15s_BFs15i_BFu15ll_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15i_BFu15ll_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15i_BFu15ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15i_BFu15ll_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFu15ll_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15i_BFu15ll_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFu15ll_BFu15s");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15s_BFs15i_BFu15ll_BFu15s");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15s_BFs15i_BFu15ll_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15s_BFs15i_BFu15ll_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15s_BFs15i_BFu15ll_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15i_BFu15ll_BFu15s, BFs15s_BFs15i_BFu15ll_BFu15s)
//============================================================================


struct  BFs15s_BFs15i_BFu15s  {
  signed short v1:15;
  signed int v2:15;
  unsigned short v3:15;
};
//SIG(1 BFs15s_BFs15i_BFu15s) C1{ Fs:15 Fi:15 Fs:15}



static void Test_BFs15s_BFs15i_BFu15s()
{
  {
    init_simple_test("BFs15s_BFs15i_BFu15s");
    static STRUCT_IF_C BFs15s_BFs15i_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15i_BFu15s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15s_BFs15i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15i_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15i_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFs15i_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15i_BFu15s, BFs15s_BFs15i_BFu15s)
//============================================================================


struct  BFs15s_BFs15i_BFu15s_BFs15i  {
  signed short v1:15;
  signed int v2:15;
  unsigned short v3:15;
  signed int v4:15;
};
//SIG(1 BFs15s_BFs15i_BFu15s_BFs15i) C1{ Fs:15 Fi:15 Fs:15 Fi:15}



static void Test_BFs15s_BFs15i_BFu15s_BFs15i()
{
  {
    init_simple_test("BFs15s_BFs15i_BFu15s_BFs15i");
    static STRUCT_IF_C BFs15s_BFs15i_BFu15s_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15i_BFu15s_BFs15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15s_BFs15i_BFu15s_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15i_BFu15s_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFu15s_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15i_BFu15s_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFu15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15i_BFu15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFs15i_BFu15s_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFs15i_BFu15s_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFu15s_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15i_BFu15s_BFs15i, BFs15s_BFs15i_BFu15s_BFs15i)
//============================================================================


struct  BFs15s_BFs15i_BFu15s_BFs15ll  {
  signed short v1:15;
  signed int v2:15;
  unsigned short v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15s_BFs15i_BFu15s_BFs15ll) C1{ Fs:15 Fi:15 Fs:15 FL:15}



static void Test_BFs15s_BFs15i_BFu15s_BFs15ll()
{
  {
    init_simple_test("BFs15s_BFs15i_BFu15s_BFs15ll");
    static STRUCT_IF_C BFs15s_BFs15i_BFu15s_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15i_BFu15s_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15i_BFu15s_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15i_BFu15s_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFu15s_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15i_BFu15s_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFu15s_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15i_BFu15s_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFs15i_BFu15s_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFs15i_BFu15s_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFu15s_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15i_BFu15s_BFs15ll, BFs15s_BFs15i_BFu15s_BFs15ll)
//============================================================================


struct  BFs15s_BFs15i_BFu15s_BFs15s  {
  signed short v1:15;
  signed int v2:15;
  unsigned short v3:15;
  signed short v4:15;
};
//SIG(1 BFs15s_BFs15i_BFu15s_BFs15s) C1{ Fs:15 Fi:15 Fs:15 Fs:15}



static void Test_BFs15s_BFs15i_BFu15s_BFs15s()
{
  {
    init_simple_test("BFs15s_BFs15i_BFu15s_BFs15s");
    static STRUCT_IF_C BFs15s_BFs15i_BFu15s_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15i_BFu15s_BFs15s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15s_BFs15i_BFu15s_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15i_BFu15s_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFu15s_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15i_BFu15s_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFu15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15i_BFu15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFs15i_BFu15s_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15s_BFs15i_BFu15s_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFu15s_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15i_BFu15s_BFs15s, BFs15s_BFs15i_BFu15s_BFs15s)
//============================================================================


struct  BFs15s_BFs15i_BFu15s_BFu15i  {
  signed short v1:15;
  signed int v2:15;
  unsigned short v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15s_BFs15i_BFu15s_BFu15i) C1{ Fs:15 Fi:15 Fs:15 Fi:15}



static void Test_BFs15s_BFs15i_BFu15s_BFu15i()
{
  {
    init_simple_test("BFs15s_BFs15i_BFu15s_BFu15i");
    static STRUCT_IF_C BFs15s_BFs15i_BFu15s_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15i_BFu15s_BFu15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15s_BFs15i_BFu15s_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15i_BFu15s_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFu15s_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15i_BFu15s_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFu15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15i_BFu15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFs15i_BFu15s_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFs15i_BFu15s_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15s_BFs15i_BFu15s_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15i_BFu15s_BFu15i, BFs15s_BFs15i_BFu15s_BFu15i)
//============================================================================


struct  BFs15s_BFs15i_BFu15s_BFu15ll  {
  signed short v1:15;
  signed int v2:15;
  unsigned short v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15s_BFs15i_BFu15s_BFu15ll) C1{ Fs:15 Fi:15 Fs:15 FL:15}



static void Test_BFs15s_BFs15i_BFu15s_BFu15ll()
{
  {
    init_simple_test("BFs15s_BFs15i_BFu15s_BFu15ll");
    static STRUCT_IF_C BFs15s_BFs15i_BFu15s_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15i_BFu15s_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15i_BFu15s_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15i_BFu15s_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFu15s_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15i_BFu15s_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFu15s_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15i_BFu15s_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFs15i_BFu15s_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFs15i_BFu15s_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15s_BFs15i_BFu15s_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15i_BFu15s_BFu15ll, BFs15s_BFs15i_BFu15s_BFu15ll)
//============================================================================


struct  BFs15s_BFs15i_BFu15s_BFu15s  {
  signed short v1:15;
  signed int v2:15;
  unsigned short v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15s_BFs15i_BFu15s_BFu15s) C1{ Fs:15 Fi:15 Fs:15 Fs:15}



static void Test_BFs15s_BFs15i_BFu15s_BFu15s()
{
  {
    init_simple_test("BFs15s_BFs15i_BFu15s_BFu15s");
    static STRUCT_IF_C BFs15s_BFs15i_BFu15s_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15i_BFu15s_BFu15s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15s_BFs15i_BFu15s_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15i_BFu15s_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFu15s_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15i_BFu15s_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15i_BFu15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15i_BFu15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFs15i_BFu15s_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15s_BFs15i_BFu15s_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15s_BFs15i_BFu15s_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15i_BFu15s_BFu15s, BFs15s_BFs15i_BFu15s_BFu15s)
//============================================================================


struct  BFs15s_BFs15ll  {
  signed short v1:15;
  signed __tsi64 v2:15;
};
//SIG(1 BFs15s_BFs15ll) C1{ Fs:15 FL:15}



static void Test_BFs15s_BFs15ll()
{
  {
    init_simple_test("BFs15s_BFs15ll");
    static STRUCT_IF_C BFs15s_BFs15ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs15s_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15ll, BFs15s_BFs15ll)
//============================================================================


struct  BFs15s_BFs15ll_BFs15i  {
  signed short v1:15;
  signed __tsi64 v2:15;
  signed int v3:15;
};
//SIG(1 BFs15s_BFs15ll_BFs15i) C1{ Fs:15 FL:15 Fi:15}



static void Test_BFs15s_BFs15ll_BFs15i()
{
  {
    init_simple_test("BFs15s_BFs15ll_BFs15i");
    static STRUCT_IF_C BFs15s_BFs15ll_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15ll_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15ll_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15ll_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15ll_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15ll_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15ll_BFs15i, BFs15s_BFs15ll_BFs15i)
//============================================================================


struct  BFs15s_BFs15ll_BFs15i_BFs15i  {
  signed short v1:15;
  signed __tsi64 v2:15;
  signed int v3:15;
  signed int v4:15;
};
//SIG(1 BFs15s_BFs15ll_BFs15i_BFs15i) C1{ Fs:15 FL:15 Fi:15 Fi:15}



static void Test_BFs15s_BFs15ll_BFs15i_BFs15i()
{
  {
    init_simple_test("BFs15s_BFs15ll_BFs15i_BFs15i");
    static STRUCT_IF_C BFs15s_BFs15ll_BFs15i_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15ll_BFs15i_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15ll_BFs15i_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15ll_BFs15i_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFs15i_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15ll_BFs15i_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFs15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15ll_BFs15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFs15i_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFs15ll_BFs15i_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFs15i_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15ll_BFs15i_BFs15i, BFs15s_BFs15ll_BFs15i_BFs15i)
//============================================================================


struct  BFs15s_BFs15ll_BFs15i_BFs15ll  {
  signed short v1:15;
  signed __tsi64 v2:15;
  signed int v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15s_BFs15ll_BFs15i_BFs15ll) C1{ Fs:15 FL:15 Fi:15 FL:15}



static void Test_BFs15s_BFs15ll_BFs15i_BFs15ll()
{
  {
    init_simple_test("BFs15s_BFs15ll_BFs15i_BFs15ll");
    static STRUCT_IF_C BFs15s_BFs15ll_BFs15i_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15ll_BFs15i_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15ll_BFs15i_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15ll_BFs15i_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFs15i_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15ll_BFs15i_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFs15i_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15ll_BFs15i_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFs15i_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFs15ll_BFs15i_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFs15i_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15ll_BFs15i_BFs15ll, BFs15s_BFs15ll_BFs15i_BFs15ll)
//============================================================================


struct  BFs15s_BFs15ll_BFs15i_BFs15s  {
  signed short v1:15;
  signed __tsi64 v2:15;
  signed int v3:15;
  signed short v4:15;
};
//SIG(1 BFs15s_BFs15ll_BFs15i_BFs15s) C1{ Fs:15 FL:15 Fi:15 Fs:15}



static void Test_BFs15s_BFs15ll_BFs15i_BFs15s()
{
  {
    init_simple_test("BFs15s_BFs15ll_BFs15i_BFs15s");
    static STRUCT_IF_C BFs15s_BFs15ll_BFs15i_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15ll_BFs15i_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15ll_BFs15i_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15ll_BFs15i_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFs15i_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15ll_BFs15i_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFs15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15ll_BFs15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFs15i_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15s_BFs15ll_BFs15i_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFs15i_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15ll_BFs15i_BFs15s, BFs15s_BFs15ll_BFs15i_BFs15s)
//============================================================================


struct  BFs15s_BFs15ll_BFs15i_BFu15i  {
  signed short v1:15;
  signed __tsi64 v2:15;
  signed int v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15s_BFs15ll_BFs15i_BFu15i) C1{ Fs:15 FL:15 Fi:15 Fi:15}



static void Test_BFs15s_BFs15ll_BFs15i_BFu15i()
{
  {
    init_simple_test("BFs15s_BFs15ll_BFs15i_BFu15i");
    static STRUCT_IF_C BFs15s_BFs15ll_BFs15i_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15ll_BFs15i_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15ll_BFs15i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15ll_BFs15i_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFs15i_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15ll_BFs15i_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFs15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15ll_BFs15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFs15i_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFs15ll_BFs15i_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15s_BFs15ll_BFs15i_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15ll_BFs15i_BFu15i, BFs15s_BFs15ll_BFs15i_BFu15i)
//============================================================================


struct  BFs15s_BFs15ll_BFs15i_BFu15ll  {
  signed short v1:15;
  signed __tsi64 v2:15;
  signed int v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15s_BFs15ll_BFs15i_BFu15ll) C1{ Fs:15 FL:15 Fi:15 FL:15}



static void Test_BFs15s_BFs15ll_BFs15i_BFu15ll()
{
  {
    init_simple_test("BFs15s_BFs15ll_BFs15i_BFu15ll");
    static STRUCT_IF_C BFs15s_BFs15ll_BFs15i_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15ll_BFs15i_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15ll_BFs15i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15ll_BFs15i_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFs15i_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15ll_BFs15i_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFs15i_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15ll_BFs15i_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFs15i_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFs15ll_BFs15i_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15s_BFs15ll_BFs15i_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15ll_BFs15i_BFu15ll, BFs15s_BFs15ll_BFs15i_BFu15ll)
//============================================================================


struct  BFs15s_BFs15ll_BFs15i_BFu15s  {
  signed short v1:15;
  signed __tsi64 v2:15;
  signed int v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15s_BFs15ll_BFs15i_BFu15s) C1{ Fs:15 FL:15 Fi:15 Fs:15}



static void Test_BFs15s_BFs15ll_BFs15i_BFu15s()
{
  {
    init_simple_test("BFs15s_BFs15ll_BFs15i_BFu15s");
    static STRUCT_IF_C BFs15s_BFs15ll_BFs15i_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15ll_BFs15i_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15ll_BFs15i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15ll_BFs15i_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFs15i_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15ll_BFs15i_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFs15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15ll_BFs15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFs15i_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15s_BFs15ll_BFs15i_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15s_BFs15ll_BFs15i_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15ll_BFs15i_BFu15s, BFs15s_BFs15ll_BFs15i_BFu15s)
//============================================================================


struct  BFs15s_BFs15ll_BFs15ll  {
  signed short v1:15;
  signed __tsi64 v2:15;
  signed __tsi64 v3:15;
};
//SIG(1 BFs15s_BFs15ll_BFs15ll) C1{ Fs:15 FL:15 FL:15}



static void Test_BFs15s_BFs15ll_BFs15ll()
{
  {
    init_simple_test("BFs15s_BFs15ll_BFs15ll");
    static STRUCT_IF_C BFs15s_BFs15ll_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15ll_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15ll_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15s_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15ll_BFs15ll, BFs15s_BFs15ll_BFs15ll)
//============================================================================


struct  BFs15s_BFs15ll_BFs15ll_BFs15i  {
  signed short v1:15;
  signed __tsi64 v2:15;
  signed __tsi64 v3:15;
  signed int v4:15;
};
//SIG(1 BFs15s_BFs15ll_BFs15ll_BFs15i) C1{ Fs:15 FL:15 FL:15 Fi:15}



static void Test_BFs15s_BFs15ll_BFs15ll_BFs15i()
{
  {
    init_simple_test("BFs15s_BFs15ll_BFs15ll_BFs15i");
    static STRUCT_IF_C BFs15s_BFs15ll_BFs15ll_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15ll_BFs15ll_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15ll_BFs15ll_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15ll_BFs15ll_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFs15ll_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15ll_BFs15ll_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFs15ll_BFs15i");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15s_BFs15ll_BFs15ll_BFs15i");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFs15ll_BFs15i");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15s_BFs15ll_BFs15ll_BFs15i");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFs15ll_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15ll_BFs15ll_BFs15i, BFs15s_BFs15ll_BFs15ll_BFs15i)
//============================================================================


struct  BFs15s_BFs15ll_BFs15ll_BFs15ll  {
  signed short v1:15;
  signed __tsi64 v2:15;
  signed __tsi64 v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15s_BFs15ll_BFs15ll_BFs15ll) C1{ Fs:15 FL:15 FL:15 FL:15}



static void Test_BFs15s_BFs15ll_BFs15ll_BFs15ll()
{
  {
    init_simple_test("BFs15s_BFs15ll_BFs15ll_BFs15ll");
    static STRUCT_IF_C BFs15s_BFs15ll_BFs15ll_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15ll_BFs15ll_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15ll_BFs15ll_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15ll_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15ll_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15s_BFs15ll_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15s_BFs15ll_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFs15ll_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15ll_BFs15ll_BFs15ll, BFs15s_BFs15ll_BFs15ll_BFs15ll)
//============================================================================


struct  BFs15s_BFs15ll_BFs15ll_BFs15s  {
  signed short v1:15;
  signed __tsi64 v2:15;
  signed __tsi64 v3:15;
  signed short v4:15;
};
//SIG(1 BFs15s_BFs15ll_BFs15ll_BFs15s) C1{ Fs:15 FL:15 FL:15 Fs:15}



static void Test_BFs15s_BFs15ll_BFs15ll_BFs15s()
{
  {
    init_simple_test("BFs15s_BFs15ll_BFs15ll_BFs15s");
    static STRUCT_IF_C BFs15s_BFs15ll_BFs15ll_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15ll_BFs15ll_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15ll_BFs15ll_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15ll_BFs15ll_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFs15ll_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15ll_BFs15ll_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFs15ll_BFs15s");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15s_BFs15ll_BFs15ll_BFs15s");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFs15ll_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15s_BFs15ll_BFs15ll_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFs15ll_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15ll_BFs15ll_BFs15s, BFs15s_BFs15ll_BFs15ll_BFs15s)
//============================================================================


struct  BFs15s_BFs15ll_BFs15ll_BFu15i  {
  signed short v1:15;
  signed __tsi64 v2:15;
  signed __tsi64 v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15s_BFs15ll_BFs15ll_BFu15i) C1{ Fs:15 FL:15 FL:15 Fi:15}



static void Test_BFs15s_BFs15ll_BFs15ll_BFu15i()
{
  {
    init_simple_test("BFs15s_BFs15ll_BFs15ll_BFu15i");
    static STRUCT_IF_C BFs15s_BFs15ll_BFs15ll_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15ll_BFs15ll_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15ll_BFs15ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15ll_BFs15ll_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFs15ll_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15ll_BFs15ll_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFs15ll_BFu15i");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15s_BFs15ll_BFs15ll_BFu15i");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFs15ll_BFu15i");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15s_BFs15ll_BFs15ll_BFu15i");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_ull(1LL<<14), "BFs15s_BFs15ll_BFs15ll_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15ll_BFs15ll_BFu15i, BFs15s_BFs15ll_BFs15ll_BFu15i)
//============================================================================


struct  BFs15s_BFs15ll_BFs15ll_BFu15ll  {
  signed short v1:15;
  signed __tsi64 v2:15;
  signed __tsi64 v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15s_BFs15ll_BFs15ll_BFu15ll) C1{ Fs:15 FL:15 FL:15 FL:15}



static void Test_BFs15s_BFs15ll_BFs15ll_BFu15ll()
{
  {
    init_simple_test("BFs15s_BFs15ll_BFs15ll_BFu15ll");
    static STRUCT_IF_C BFs15s_BFs15ll_BFs15ll_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15ll_BFs15ll_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15ll_BFs15ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15ll_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15ll_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15s_BFs15ll_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15s_BFs15ll_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_ull(1LL<<14), "BFs15s_BFs15ll_BFs15ll_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15ll_BFs15ll_BFu15ll, BFs15s_BFs15ll_BFs15ll_BFu15ll)
//============================================================================


struct  BFs15s_BFs15ll_BFs15ll_BFu15s  {
  signed short v1:15;
  signed __tsi64 v2:15;
  signed __tsi64 v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15s_BFs15ll_BFs15ll_BFu15s) C1{ Fs:15 FL:15 FL:15 Fs:15}



static void Test_BFs15s_BFs15ll_BFs15ll_BFu15s()
{
  {
    init_simple_test("BFs15s_BFs15ll_BFs15ll_BFu15s");
    static STRUCT_IF_C BFs15s_BFs15ll_BFs15ll_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15ll_BFs15ll_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15ll_BFs15ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15ll_BFs15ll_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFs15ll_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15ll_BFs15ll_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFs15ll_BFu15s");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15s_BFs15ll_BFs15ll_BFu15s");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFs15ll_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15s_BFs15ll_BFs15ll_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15s_BFs15ll_BFs15ll_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15ll_BFs15ll_BFu15s, BFs15s_BFs15ll_BFs15ll_BFu15s)
//============================================================================


struct  BFs15s_BFs15ll_BFs15s  {
  signed short v1:15;
  signed __tsi64 v2:15;
  signed short v3:15;
};
//SIG(1 BFs15s_BFs15ll_BFs15s) C1{ Fs:15 FL:15 Fs:15}



static void Test_BFs15s_BFs15ll_BFs15s()
{
  {
    init_simple_test("BFs15s_BFs15ll_BFs15s");
    static STRUCT_IF_C BFs15s_BFs15ll_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15ll_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15ll_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15ll_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15ll_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15ll_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15ll_BFs15s, BFs15s_BFs15ll_BFs15s)
//============================================================================


struct  BFs15s_BFs15ll_BFs15s_BFs15i  {
  signed short v1:15;
  signed __tsi64 v2:15;
  signed short v3:15;
  signed int v4:15;
};
//SIG(1 BFs15s_BFs15ll_BFs15s_BFs15i) C1{ Fs:15 FL:15 Fs:15 Fi:15}



static void Test_BFs15s_BFs15ll_BFs15s_BFs15i()
{
  {
    init_simple_test("BFs15s_BFs15ll_BFs15s_BFs15i");
    static STRUCT_IF_C BFs15s_BFs15ll_BFs15s_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15ll_BFs15s_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15ll_BFs15s_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15ll_BFs15s_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFs15s_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15ll_BFs15s_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFs15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15ll_BFs15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFs15s_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFs15ll_BFs15s_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFs15s_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15ll_BFs15s_BFs15i, BFs15s_BFs15ll_BFs15s_BFs15i)
//============================================================================


struct  BFs15s_BFs15ll_BFs15s_BFs15ll  {
  signed short v1:15;
  signed __tsi64 v2:15;
  signed short v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15s_BFs15ll_BFs15s_BFs15ll) C1{ Fs:15 FL:15 Fs:15 FL:15}



static void Test_BFs15s_BFs15ll_BFs15s_BFs15ll()
{
  {
    init_simple_test("BFs15s_BFs15ll_BFs15s_BFs15ll");
    static STRUCT_IF_C BFs15s_BFs15ll_BFs15s_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15ll_BFs15s_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15ll_BFs15s_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15ll_BFs15s_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFs15s_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15ll_BFs15s_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFs15s_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15ll_BFs15s_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFs15s_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFs15ll_BFs15s_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFs15s_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15ll_BFs15s_BFs15ll, BFs15s_BFs15ll_BFs15s_BFs15ll)
//============================================================================


struct  BFs15s_BFs15ll_BFs15s_BFs15s  {
  signed short v1:15;
  signed __tsi64 v2:15;
  signed short v3:15;
  signed short v4:15;
};
//SIG(1 BFs15s_BFs15ll_BFs15s_BFs15s) C1{ Fs:15 FL:15 Fs:15 Fs:15}



static void Test_BFs15s_BFs15ll_BFs15s_BFs15s()
{
  {
    init_simple_test("BFs15s_BFs15ll_BFs15s_BFs15s");
    static STRUCT_IF_C BFs15s_BFs15ll_BFs15s_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15ll_BFs15s_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15ll_BFs15s_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15ll_BFs15s_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFs15s_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15ll_BFs15s_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFs15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15ll_BFs15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFs15s_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15s_BFs15ll_BFs15s_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFs15s_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15ll_BFs15s_BFs15s, BFs15s_BFs15ll_BFs15s_BFs15s)
//============================================================================


struct  BFs15s_BFs15ll_BFs15s_BFu15i  {
  signed short v1:15;
  signed __tsi64 v2:15;
  signed short v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15s_BFs15ll_BFs15s_BFu15i) C1{ Fs:15 FL:15 Fs:15 Fi:15}



static void Test_BFs15s_BFs15ll_BFs15s_BFu15i()
{
  {
    init_simple_test("BFs15s_BFs15ll_BFs15s_BFu15i");
    static STRUCT_IF_C BFs15s_BFs15ll_BFs15s_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15ll_BFs15s_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15ll_BFs15s_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15ll_BFs15s_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFs15s_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15ll_BFs15s_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFs15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15ll_BFs15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFs15s_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFs15ll_BFs15s_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15s_BFs15ll_BFs15s_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15ll_BFs15s_BFu15i, BFs15s_BFs15ll_BFs15s_BFu15i)
//============================================================================


struct  BFs15s_BFs15ll_BFs15s_BFu15ll  {
  signed short v1:15;
  signed __tsi64 v2:15;
  signed short v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15s_BFs15ll_BFs15s_BFu15ll) C1{ Fs:15 FL:15 Fs:15 FL:15}



static void Test_BFs15s_BFs15ll_BFs15s_BFu15ll()
{
  {
    init_simple_test("BFs15s_BFs15ll_BFs15s_BFu15ll");
    static STRUCT_IF_C BFs15s_BFs15ll_BFs15s_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15ll_BFs15s_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15ll_BFs15s_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15ll_BFs15s_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFs15s_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15ll_BFs15s_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFs15s_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15ll_BFs15s_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFs15s_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFs15ll_BFs15s_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15s_BFs15ll_BFs15s_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15ll_BFs15s_BFu15ll, BFs15s_BFs15ll_BFs15s_BFu15ll)
//============================================================================


struct  BFs15s_BFs15ll_BFs15s_BFu15s  {
  signed short v1:15;
  signed __tsi64 v2:15;
  signed short v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15s_BFs15ll_BFs15s_BFu15s) C1{ Fs:15 FL:15 Fs:15 Fs:15}



static void Test_BFs15s_BFs15ll_BFs15s_BFu15s()
{
  {
    init_simple_test("BFs15s_BFs15ll_BFs15s_BFu15s");
    static STRUCT_IF_C BFs15s_BFs15ll_BFs15s_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15ll_BFs15s_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15ll_BFs15s_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15ll_BFs15s_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFs15s_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15ll_BFs15s_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFs15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15ll_BFs15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFs15s_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15s_BFs15ll_BFs15s_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15s_BFs15ll_BFs15s_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15ll_BFs15s_BFu15s, BFs15s_BFs15ll_BFs15s_BFu15s)
//============================================================================


struct  BFs15s_BFs15ll_BFu15i  {
  signed short v1:15;
  signed __tsi64 v2:15;
  unsigned int v3:15;
};
//SIG(1 BFs15s_BFs15ll_BFu15i) C1{ Fs:15 FL:15 Fi:15}



static void Test_BFs15s_BFs15ll_BFu15i()
{
  {
    init_simple_test("BFs15s_BFs15ll_BFu15i");
    static STRUCT_IF_C BFs15s_BFs15ll_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15ll_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15ll_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15ll_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15ll_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFs15ll_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15ll_BFu15i, BFs15s_BFs15ll_BFu15i)
//============================================================================


struct  BFs15s_BFs15ll_BFu15i_BFs15i  {
  signed short v1:15;
  signed __tsi64 v2:15;
  unsigned int v3:15;
  signed int v4:15;
};
//SIG(1 BFs15s_BFs15ll_BFu15i_BFs15i) C1{ Fs:15 FL:15 Fi:15 Fi:15}



static void Test_BFs15s_BFs15ll_BFu15i_BFs15i()
{
  {
    init_simple_test("BFs15s_BFs15ll_BFu15i_BFs15i");
    static STRUCT_IF_C BFs15s_BFs15ll_BFu15i_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15ll_BFu15i_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15ll_BFu15i_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15ll_BFu15i_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFu15i_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15ll_BFu15i_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFu15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15ll_BFu15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFs15ll_BFu15i_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFs15ll_BFu15i_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFu15i_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15ll_BFu15i_BFs15i, BFs15s_BFs15ll_BFu15i_BFs15i)
//============================================================================


struct  BFs15s_BFs15ll_BFu15i_BFs15ll  {
  signed short v1:15;
  signed __tsi64 v2:15;
  unsigned int v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15s_BFs15ll_BFu15i_BFs15ll) C1{ Fs:15 FL:15 Fi:15 FL:15}



static void Test_BFs15s_BFs15ll_BFu15i_BFs15ll()
{
  {
    init_simple_test("BFs15s_BFs15ll_BFu15i_BFs15ll");
    static STRUCT_IF_C BFs15s_BFs15ll_BFu15i_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15ll_BFu15i_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15ll_BFu15i_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15ll_BFu15i_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFu15i_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15ll_BFu15i_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFu15i_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15ll_BFu15i_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFs15ll_BFu15i_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFs15ll_BFu15i_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFu15i_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15ll_BFu15i_BFs15ll, BFs15s_BFs15ll_BFu15i_BFs15ll)
//============================================================================


struct  BFs15s_BFs15ll_BFu15i_BFs15s  {
  signed short v1:15;
  signed __tsi64 v2:15;
  unsigned int v3:15;
  signed short v4:15;
};
//SIG(1 BFs15s_BFs15ll_BFu15i_BFs15s) C1{ Fs:15 FL:15 Fi:15 Fs:15}



static void Test_BFs15s_BFs15ll_BFu15i_BFs15s()
{
  {
    init_simple_test("BFs15s_BFs15ll_BFu15i_BFs15s");
    static STRUCT_IF_C BFs15s_BFs15ll_BFu15i_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15ll_BFu15i_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15ll_BFu15i_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15ll_BFu15i_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFu15i_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15ll_BFu15i_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFu15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15ll_BFu15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFs15ll_BFu15i_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15s_BFs15ll_BFu15i_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFu15i_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15ll_BFu15i_BFs15s, BFs15s_BFs15ll_BFu15i_BFs15s)
//============================================================================


struct  BFs15s_BFs15ll_BFu15i_BFu15i  {
  signed short v1:15;
  signed __tsi64 v2:15;
  unsigned int v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15s_BFs15ll_BFu15i_BFu15i) C1{ Fs:15 FL:15 Fi:15 Fi:15}



static void Test_BFs15s_BFs15ll_BFu15i_BFu15i()
{
  {
    init_simple_test("BFs15s_BFs15ll_BFu15i_BFu15i");
    static STRUCT_IF_C BFs15s_BFs15ll_BFu15i_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15ll_BFu15i_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15ll_BFu15i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15ll_BFu15i_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFu15i_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15ll_BFu15i_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFu15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15ll_BFu15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFs15ll_BFu15i_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFs15ll_BFu15i_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15s_BFs15ll_BFu15i_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15ll_BFu15i_BFu15i, BFs15s_BFs15ll_BFu15i_BFu15i)
//============================================================================


struct  BFs15s_BFs15ll_BFu15i_BFu15ll  {
  signed short v1:15;
  signed __tsi64 v2:15;
  unsigned int v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15s_BFs15ll_BFu15i_BFu15ll) C1{ Fs:15 FL:15 Fi:15 FL:15}



static void Test_BFs15s_BFs15ll_BFu15i_BFu15ll()
{
  {
    init_simple_test("BFs15s_BFs15ll_BFu15i_BFu15ll");
    static STRUCT_IF_C BFs15s_BFs15ll_BFu15i_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15ll_BFu15i_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15ll_BFu15i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15ll_BFu15i_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFu15i_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15ll_BFu15i_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFu15i_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15ll_BFu15i_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFs15ll_BFu15i_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFs15ll_BFu15i_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15s_BFs15ll_BFu15i_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15ll_BFu15i_BFu15ll, BFs15s_BFs15ll_BFu15i_BFu15ll)
//============================================================================


struct  BFs15s_BFs15ll_BFu15i_BFu15s  {
  signed short v1:15;
  signed __tsi64 v2:15;
  unsigned int v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15s_BFs15ll_BFu15i_BFu15s) C1{ Fs:15 FL:15 Fi:15 Fs:15}



static void Test_BFs15s_BFs15ll_BFu15i_BFu15s()
{
  {
    init_simple_test("BFs15s_BFs15ll_BFu15i_BFu15s");
    static STRUCT_IF_C BFs15s_BFs15ll_BFu15i_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15ll_BFu15i_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15ll_BFu15i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15ll_BFu15i_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFu15i_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15ll_BFu15i_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFu15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15ll_BFu15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFs15ll_BFu15i_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15s_BFs15ll_BFu15i_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15s_BFs15ll_BFu15i_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15ll_BFu15i_BFu15s, BFs15s_BFs15ll_BFu15i_BFu15s)
//============================================================================


struct  BFs15s_BFs15ll_BFu15ll  {
  signed short v1:15;
  signed __tsi64 v2:15;
  __tsu64 v3:15;
};
//SIG(1 BFs15s_BFs15ll_BFu15ll) C1{ Fs:15 FL:15 FL:15}



static void Test_BFs15s_BFs15ll_BFu15ll()
{
  {
    init_simple_test("BFs15s_BFs15ll_BFu15ll");
    static STRUCT_IF_C BFs15s_BFs15ll_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15ll_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15s_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15s_BFs15ll_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15ll_BFu15ll, BFs15s_BFs15ll_BFu15ll)
//============================================================================


struct  BFs15s_BFs15ll_BFu15ll_BFs15i  {
  signed short v1:15;
  signed __tsi64 v2:15;
  __tsu64 v3:15;
  signed int v4:15;
};
//SIG(1 BFs15s_BFs15ll_BFu15ll_BFs15i) C1{ Fs:15 FL:15 FL:15 Fi:15}



static void Test_BFs15s_BFs15ll_BFu15ll_BFs15i()
{
  {
    init_simple_test("BFs15s_BFs15ll_BFu15ll_BFs15i");
    static STRUCT_IF_C BFs15s_BFs15ll_BFu15ll_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15ll_BFu15ll_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15ll_BFu15ll_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15ll_BFu15ll_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFu15ll_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15ll_BFu15ll_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFu15ll_BFs15i");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15s_BFs15ll_BFu15ll_BFs15i");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15s_BFs15ll_BFu15ll_BFs15i");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15s_BFs15ll_BFu15ll_BFs15i");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFu15ll_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15ll_BFu15ll_BFs15i, BFs15s_BFs15ll_BFu15ll_BFs15i)
//============================================================================


struct  BFs15s_BFs15ll_BFu15ll_BFs15ll  {
  signed short v1:15;
  signed __tsi64 v2:15;
  __tsu64 v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15s_BFs15ll_BFu15ll_BFs15ll) C1{ Fs:15 FL:15 FL:15 FL:15}



static void Test_BFs15s_BFs15ll_BFu15ll_BFs15ll()
{
  {
    init_simple_test("BFs15s_BFs15ll_BFu15ll_BFs15ll");
    static STRUCT_IF_C BFs15s_BFs15ll_BFu15ll_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15ll_BFu15ll_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15ll_BFu15ll_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15ll_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15ll_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15s_BFs15ll_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15s_BFs15ll_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15s_BFs15ll_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFu15ll_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15ll_BFu15ll_BFs15ll, BFs15s_BFs15ll_BFu15ll_BFs15ll)
//============================================================================


struct  BFs15s_BFs15ll_BFu15ll_BFs15s  {
  signed short v1:15;
  signed __tsi64 v2:15;
  __tsu64 v3:15;
  signed short v4:15;
};
//SIG(1 BFs15s_BFs15ll_BFu15ll_BFs15s) C1{ Fs:15 FL:15 FL:15 Fs:15}



static void Test_BFs15s_BFs15ll_BFu15ll_BFs15s()
{
  {
    init_simple_test("BFs15s_BFs15ll_BFu15ll_BFs15s");
    static STRUCT_IF_C BFs15s_BFs15ll_BFu15ll_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15ll_BFu15ll_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15ll_BFu15ll_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15ll_BFu15ll_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFu15ll_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15ll_BFu15ll_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFu15ll_BFs15s");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15s_BFs15ll_BFu15ll_BFs15s");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15s_BFs15ll_BFu15ll_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15s_BFs15ll_BFu15ll_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFu15ll_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15ll_BFu15ll_BFs15s, BFs15s_BFs15ll_BFu15ll_BFs15s)
//============================================================================


struct  BFs15s_BFs15ll_BFu15ll_BFu15i  {
  signed short v1:15;
  signed __tsi64 v2:15;
  __tsu64 v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15s_BFs15ll_BFu15ll_BFu15i) C1{ Fs:15 FL:15 FL:15 Fi:15}



static void Test_BFs15s_BFs15ll_BFu15ll_BFu15i()
{
  {
    init_simple_test("BFs15s_BFs15ll_BFu15ll_BFu15i");
    static STRUCT_IF_C BFs15s_BFs15ll_BFu15ll_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15ll_BFu15ll_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15ll_BFu15ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15ll_BFu15ll_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFu15ll_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15ll_BFu15ll_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFu15ll_BFu15i");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15s_BFs15ll_BFu15ll_BFu15i");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15s_BFs15ll_BFu15ll_BFu15i");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15s_BFs15ll_BFu15ll_BFu15i");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_ull(1LL<<14), "BFs15s_BFs15ll_BFu15ll_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15ll_BFu15ll_BFu15i, BFs15s_BFs15ll_BFu15ll_BFu15i)
//============================================================================


struct  BFs15s_BFs15ll_BFu15ll_BFu15ll  {
  signed short v1:15;
  signed __tsi64 v2:15;
  __tsu64 v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15s_BFs15ll_BFu15ll_BFu15ll) C1{ Fs:15 FL:15 FL:15 FL:15}



static void Test_BFs15s_BFs15ll_BFu15ll_BFu15ll()
{
  {
    init_simple_test("BFs15s_BFs15ll_BFu15ll_BFu15ll");
    static STRUCT_IF_C BFs15s_BFs15ll_BFu15ll_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15ll_BFu15ll_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15ll_BFu15ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15ll_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15ll_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15s_BFs15ll_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15s_BFs15ll_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15s_BFs15ll_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_ull(1LL<<14), "BFs15s_BFs15ll_BFu15ll_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15ll_BFu15ll_BFu15ll, BFs15s_BFs15ll_BFu15ll_BFu15ll)
//============================================================================


struct  BFs15s_BFs15ll_BFu15ll_BFu15s  {
  signed short v1:15;
  signed __tsi64 v2:15;
  __tsu64 v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15s_BFs15ll_BFu15ll_BFu15s) C1{ Fs:15 FL:15 FL:15 Fs:15}



static void Test_BFs15s_BFs15ll_BFu15ll_BFu15s()
{
  {
    init_simple_test("BFs15s_BFs15ll_BFu15ll_BFu15s");
    static STRUCT_IF_C BFs15s_BFs15ll_BFu15ll_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15ll_BFu15ll_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15ll_BFu15ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15ll_BFu15ll_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFu15ll_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15ll_BFu15ll_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFu15ll_BFu15s");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15s_BFs15ll_BFu15ll_BFu15s");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15s_BFs15ll_BFu15ll_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15s_BFs15ll_BFu15ll_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15s_BFs15ll_BFu15ll_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15ll_BFu15ll_BFu15s, BFs15s_BFs15ll_BFu15ll_BFu15s)
//============================================================================


struct  BFs15s_BFs15ll_BFu15s  {
  signed short v1:15;
  signed __tsi64 v2:15;
  unsigned short v3:15;
};
//SIG(1 BFs15s_BFs15ll_BFu15s) C1{ Fs:15 FL:15 Fs:15}



static void Test_BFs15s_BFs15ll_BFu15s()
{
  {
    init_simple_test("BFs15s_BFs15ll_BFu15s");
    static STRUCT_IF_C BFs15s_BFs15ll_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15ll_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15ll_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15ll_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15ll_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFs15ll_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15ll_BFu15s, BFs15s_BFs15ll_BFu15s)
//============================================================================


struct  BFs15s_BFs15ll_BFu15s_BFs15i  {
  signed short v1:15;
  signed __tsi64 v2:15;
  unsigned short v3:15;
  signed int v4:15;
};
//SIG(1 BFs15s_BFs15ll_BFu15s_BFs15i) C1{ Fs:15 FL:15 Fs:15 Fi:15}



static void Test_BFs15s_BFs15ll_BFu15s_BFs15i()
{
  {
    init_simple_test("BFs15s_BFs15ll_BFu15s_BFs15i");
    static STRUCT_IF_C BFs15s_BFs15ll_BFu15s_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15ll_BFu15s_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15ll_BFu15s_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15ll_BFu15s_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFu15s_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15ll_BFu15s_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFu15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15ll_BFu15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFs15ll_BFu15s_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFs15ll_BFu15s_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFu15s_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15ll_BFu15s_BFs15i, BFs15s_BFs15ll_BFu15s_BFs15i)
//============================================================================


struct  BFs15s_BFs15ll_BFu15s_BFs15ll  {
  signed short v1:15;
  signed __tsi64 v2:15;
  unsigned short v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15s_BFs15ll_BFu15s_BFs15ll) C1{ Fs:15 FL:15 Fs:15 FL:15}



static void Test_BFs15s_BFs15ll_BFu15s_BFs15ll()
{
  {
    init_simple_test("BFs15s_BFs15ll_BFu15s_BFs15ll");
    static STRUCT_IF_C BFs15s_BFs15ll_BFu15s_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15ll_BFu15s_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15ll_BFu15s_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15ll_BFu15s_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFu15s_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15ll_BFu15s_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFu15s_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15ll_BFu15s_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFs15ll_BFu15s_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFs15ll_BFu15s_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFu15s_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15ll_BFu15s_BFs15ll, BFs15s_BFs15ll_BFu15s_BFs15ll)
//============================================================================


struct  BFs15s_BFs15ll_BFu15s_BFs15s  {
  signed short v1:15;
  signed __tsi64 v2:15;
  unsigned short v3:15;
  signed short v4:15;
};
//SIG(1 BFs15s_BFs15ll_BFu15s_BFs15s) C1{ Fs:15 FL:15 Fs:15 Fs:15}



static void Test_BFs15s_BFs15ll_BFu15s_BFs15s()
{
  {
    init_simple_test("BFs15s_BFs15ll_BFu15s_BFs15s");
    static STRUCT_IF_C BFs15s_BFs15ll_BFu15s_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15ll_BFu15s_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15ll_BFu15s_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15ll_BFu15s_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFu15s_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15ll_BFu15s_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFu15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15ll_BFu15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFs15ll_BFu15s_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15s_BFs15ll_BFu15s_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFu15s_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15ll_BFu15s_BFs15s, BFs15s_BFs15ll_BFu15s_BFs15s)
//============================================================================


struct  BFs15s_BFs15ll_BFu15s_BFu15i  {
  signed short v1:15;
  signed __tsi64 v2:15;
  unsigned short v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15s_BFs15ll_BFu15s_BFu15i) C1{ Fs:15 FL:15 Fs:15 Fi:15}



static void Test_BFs15s_BFs15ll_BFu15s_BFu15i()
{
  {
    init_simple_test("BFs15s_BFs15ll_BFu15s_BFu15i");
    static STRUCT_IF_C BFs15s_BFs15ll_BFu15s_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15ll_BFu15s_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15ll_BFu15s_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15ll_BFu15s_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFu15s_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15ll_BFu15s_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFu15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15ll_BFu15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFs15ll_BFu15s_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFs15ll_BFu15s_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15s_BFs15ll_BFu15s_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15ll_BFu15s_BFu15i, BFs15s_BFs15ll_BFu15s_BFu15i)
//============================================================================


struct  BFs15s_BFs15ll_BFu15s_BFu15ll  {
  signed short v1:15;
  signed __tsi64 v2:15;
  unsigned short v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15s_BFs15ll_BFu15s_BFu15ll) C1{ Fs:15 FL:15 Fs:15 FL:15}



static void Test_BFs15s_BFs15ll_BFu15s_BFu15ll()
{
  {
    init_simple_test("BFs15s_BFs15ll_BFu15s_BFu15ll");
    static STRUCT_IF_C BFs15s_BFs15ll_BFu15s_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15ll_BFu15s_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15ll_BFu15s_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15ll_BFu15s_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFu15s_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15ll_BFu15s_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFu15s_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15ll_BFu15s_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFs15ll_BFu15s_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFs15ll_BFu15s_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15s_BFs15ll_BFu15s_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15ll_BFu15s_BFu15ll, BFs15s_BFs15ll_BFu15s_BFu15ll)
//============================================================================


struct  BFs15s_BFs15ll_BFu15s_BFu15s  {
  signed short v1:15;
  signed __tsi64 v2:15;
  unsigned short v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15s_BFs15ll_BFu15s_BFu15s) C1{ Fs:15 FL:15 Fs:15 Fs:15}



static void Test_BFs15s_BFs15ll_BFu15s_BFu15s()
{
  {
    init_simple_test("BFs15s_BFs15ll_BFu15s_BFu15s");
    static STRUCT_IF_C BFs15s_BFs15ll_BFu15s_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15ll_BFu15s_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15ll_BFu15s_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15ll_BFu15s_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFu15s_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFs15ll_BFu15s_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15ll_BFu15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15ll_BFu15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFs15ll_BFu15s_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15s_BFs15ll_BFu15s_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15s_BFs15ll_BFu15s_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15ll_BFu15s_BFu15s, BFs15s_BFs15ll_BFu15s_BFu15s)
//============================================================================


struct  BFs15s_BFs15s  {
  signed short v1:15;
  signed short v2:15;
};
//SIG(1 BFs15s_BFs15s) C1{ Fs:15 Fs:15}



static void Test_BFs15s_BFs15s()
{
  {
    init_simple_test("BFs15s_BFs15s");
    static STRUCT_IF_C BFs15s_BFs15s lv;
    check2(sizeof(lv), 4, "sizeof(BFs15s_BFs15s)");
    check2(__alignof__(lv), 2, "__alignof__(BFs15s_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15s, BFs15s_BFs15s)
//============================================================================


struct  BFs15s_BFs15s_BFs15i  {
  signed short v1:15;
  signed short v2:15;
  signed int v3:15;
};
//SIG(1 BFs15s_BFs15s_BFs15i) C1{ Fs:15 Fs:15 Fi:15}



static void Test_BFs15s_BFs15s_BFs15i()
{
  {
    init_simple_test("BFs15s_BFs15s_BFs15i");
    static STRUCT_IF_C BFs15s_BFs15s_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15s_BFs15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15s_BFs15s_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15s_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFs15s_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15s_BFs15i, BFs15s_BFs15s_BFs15i)
//============================================================================


struct  BFs15s_BFs15s_BFs15i_BFs15i  {
  signed short v1:15;
  signed short v2:15;
  signed int v3:15;
  signed int v4:15;
};
//SIG(1 BFs15s_BFs15s_BFs15i_BFs15i) C1{ Fs:15 Fs:15 Fi:15 Fi:15}



static void Test_BFs15s_BFs15s_BFs15i_BFs15i()
{
  {
    init_simple_test("BFs15s_BFs15s_BFs15i_BFs15i");
    static STRUCT_IF_C BFs15s_BFs15s_BFs15i_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15s_BFs15i_BFs15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15s_BFs15s_BFs15i_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15s_BFs15i_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFs15i_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFs15s_BFs15i_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFs15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15s_BFs15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFs15i_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFs15s_BFs15i_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFs15i_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15s_BFs15i_BFs15i, BFs15s_BFs15s_BFs15i_BFs15i)
//============================================================================


struct  BFs15s_BFs15s_BFs15i_BFs15ll  {
  signed short v1:15;
  signed short v2:15;
  signed int v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15s_BFs15s_BFs15i_BFs15ll) C1{ Fs:15 Fs:15 Fi:15 FL:15}



static void Test_BFs15s_BFs15s_BFs15i_BFs15ll()
{
  {
    init_simple_test("BFs15s_BFs15s_BFs15i_BFs15ll");
    static STRUCT_IF_C BFs15s_BFs15s_BFs15i_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15s_BFs15i_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15s_BFs15i_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15s_BFs15i_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFs15i_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFs15s_BFs15i_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFs15i_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15s_BFs15i_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFs15i_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFs15s_BFs15i_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFs15i_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15s_BFs15i_BFs15ll, BFs15s_BFs15s_BFs15i_BFs15ll)
//============================================================================


struct  BFs15s_BFs15s_BFs15i_BFs15s  {
  signed short v1:15;
  signed short v2:15;
  signed int v3:15;
  signed short v4:15;
};
//SIG(1 BFs15s_BFs15s_BFs15i_BFs15s) C1{ Fs:15 Fs:15 Fi:15 Fs:15}



static void Test_BFs15s_BFs15s_BFs15i_BFs15s()
{
  {
    init_simple_test("BFs15s_BFs15s_BFs15i_BFs15s");
    static STRUCT_IF_C BFs15s_BFs15s_BFs15i_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15s_BFs15i_BFs15s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15s_BFs15s_BFs15i_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15s_BFs15i_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFs15i_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFs15s_BFs15i_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFs15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15s_BFs15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFs15i_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15s_BFs15s_BFs15i_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFs15i_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15s_BFs15i_BFs15s, BFs15s_BFs15s_BFs15i_BFs15s)
//============================================================================


struct  BFs15s_BFs15s_BFs15i_BFu15i  {
  signed short v1:15;
  signed short v2:15;
  signed int v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15s_BFs15s_BFs15i_BFu15i) C1{ Fs:15 Fs:15 Fi:15 Fi:15}



static void Test_BFs15s_BFs15s_BFs15i_BFu15i()
{
  {
    init_simple_test("BFs15s_BFs15s_BFs15i_BFu15i");
    static STRUCT_IF_C BFs15s_BFs15s_BFs15i_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15s_BFs15i_BFu15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15s_BFs15s_BFs15i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15s_BFs15i_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFs15i_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFs15s_BFs15i_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFs15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15s_BFs15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFs15i_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFs15s_BFs15i_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15s_BFs15s_BFs15i_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15s_BFs15i_BFu15i, BFs15s_BFs15s_BFs15i_BFu15i)
//============================================================================


struct  BFs15s_BFs15s_BFs15i_BFu15ll  {
  signed short v1:15;
  signed short v2:15;
  signed int v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15s_BFs15s_BFs15i_BFu15ll) C1{ Fs:15 Fs:15 Fi:15 FL:15}



static void Test_BFs15s_BFs15s_BFs15i_BFu15ll()
{
  {
    init_simple_test("BFs15s_BFs15s_BFs15i_BFu15ll");
    static STRUCT_IF_C BFs15s_BFs15s_BFs15i_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15s_BFs15i_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15s_BFs15i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15s_BFs15i_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFs15i_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFs15s_BFs15i_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFs15i_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15s_BFs15i_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFs15i_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFs15s_BFs15i_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15s_BFs15s_BFs15i_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15s_BFs15i_BFu15ll, BFs15s_BFs15s_BFs15i_BFu15ll)
//============================================================================


struct  BFs15s_BFs15s_BFs15i_BFu15s  {
  signed short v1:15;
  signed short v2:15;
  signed int v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15s_BFs15s_BFs15i_BFu15s) C1{ Fs:15 Fs:15 Fi:15 Fs:15}



static void Test_BFs15s_BFs15s_BFs15i_BFu15s()
{
  {
    init_simple_test("BFs15s_BFs15s_BFs15i_BFu15s");
    static STRUCT_IF_C BFs15s_BFs15s_BFs15i_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15s_BFs15i_BFu15s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15s_BFs15s_BFs15i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15s_BFs15i_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFs15i_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFs15s_BFs15i_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFs15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15s_BFs15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFs15i_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15s_BFs15s_BFs15i_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15s_BFs15s_BFs15i_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15s_BFs15i_BFu15s, BFs15s_BFs15s_BFs15i_BFu15s)
//============================================================================


struct  BFs15s_BFs15s_BFs15ll  {
  signed short v1:15;
  signed short v2:15;
  signed __tsi64 v3:15;
};
//SIG(1 BFs15s_BFs15s_BFs15ll) C1{ Fs:15 Fs:15 FL:15}



static void Test_BFs15s_BFs15s_BFs15ll()
{
  {
    init_simple_test("BFs15s_BFs15s_BFs15ll");
    static STRUCT_IF_C BFs15s_BFs15s_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15s_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15s_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15s_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFs15s_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFs15ll");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15s_BFs15s_BFs15ll");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15s_BFs15ll, BFs15s_BFs15s_BFs15ll)
//============================================================================


struct  BFs15s_BFs15s_BFs15ll_BFs15i  {
  signed short v1:15;
  signed short v2:15;
  signed __tsi64 v3:15;
  signed int v4:15;
};
//SIG(1 BFs15s_BFs15s_BFs15ll_BFs15i) C1{ Fs:15 Fs:15 FL:15 Fi:15}



static void Test_BFs15s_BFs15s_BFs15ll_BFs15i()
{
  {
    init_simple_test("BFs15s_BFs15s_BFs15ll_BFs15i");
    static STRUCT_IF_C BFs15s_BFs15s_BFs15ll_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15s_BFs15ll_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15s_BFs15ll_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15s_BFs15ll_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFs15ll_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFs15s_BFs15ll_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFs15ll_BFs15i");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15s_BFs15s_BFs15ll_BFs15i");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFs15ll_BFs15i");
    set_bf_and_test(lv, v4, 5, 6, 15, 1, "BFs15s_BFs15s_BFs15ll_BFs15i");
    set_bf_and_test(lv, v4, 5, 6, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFs15ll_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15s_BFs15ll_BFs15i, BFs15s_BFs15s_BFs15ll_BFs15i)
//============================================================================


struct  BFs15s_BFs15s_BFs15ll_BFs15ll  {
  signed short v1:15;
  signed short v2:15;
  signed __tsi64 v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15s_BFs15s_BFs15ll_BFs15ll) C1{ Fs:15 Fs:15 FL:15 FL:15}



static void Test_BFs15s_BFs15s_BFs15ll_BFs15ll()
{
  {
    init_simple_test("BFs15s_BFs15s_BFs15ll_BFs15ll");
    static STRUCT_IF_C BFs15s_BFs15s_BFs15ll_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15s_BFs15ll_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15s_BFs15ll_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15s_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFs15s_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15s_BFs15s_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v4, 5, 6, 15, 1, "BFs15s_BFs15s_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v4, 5, 6, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFs15ll_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15s_BFs15ll_BFs15ll, BFs15s_BFs15s_BFs15ll_BFs15ll)
//============================================================================


struct  BFs15s_BFs15s_BFs15ll_BFs15s  {
  signed short v1:15;
  signed short v2:15;
  signed __tsi64 v3:15;
  signed short v4:15;
};
//SIG(1 BFs15s_BFs15s_BFs15ll_BFs15s) C1{ Fs:15 Fs:15 FL:15 Fs:15}



static void Test_BFs15s_BFs15s_BFs15ll_BFs15s()
{
  {
    init_simple_test("BFs15s_BFs15s_BFs15ll_BFs15s");
    static STRUCT_IF_C BFs15s_BFs15s_BFs15ll_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15s_BFs15ll_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15s_BFs15ll_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15s_BFs15ll_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFs15ll_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFs15s_BFs15ll_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFs15ll_BFs15s");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15s_BFs15s_BFs15ll_BFs15s");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFs15ll_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15s_BFs15s_BFs15ll_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFs15ll_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15s_BFs15ll_BFs15s, BFs15s_BFs15s_BFs15ll_BFs15s)
//============================================================================


struct  BFs15s_BFs15s_BFs15ll_BFu15i  {
  signed short v1:15;
  signed short v2:15;
  signed __tsi64 v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15s_BFs15s_BFs15ll_BFu15i) C1{ Fs:15 Fs:15 FL:15 Fi:15}



static void Test_BFs15s_BFs15s_BFs15ll_BFu15i()
{
  {
    init_simple_test("BFs15s_BFs15s_BFs15ll_BFu15i");
    static STRUCT_IF_C BFs15s_BFs15s_BFs15ll_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15s_BFs15ll_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15s_BFs15ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15s_BFs15ll_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFs15ll_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFs15s_BFs15ll_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFs15ll_BFu15i");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15s_BFs15s_BFs15ll_BFu15i");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFs15ll_BFu15i");
    set_bf_and_test(lv, v4, 5, 6, 15, 1, "BFs15s_BFs15s_BFs15ll_BFu15i");
    set_bf_and_test(lv, v4, 5, 6, 15, hide_ull(1LL<<14), "BFs15s_BFs15s_BFs15ll_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15s_BFs15ll_BFu15i, BFs15s_BFs15s_BFs15ll_BFu15i)
//============================================================================


struct  BFs15s_BFs15s_BFs15ll_BFu15ll  {
  signed short v1:15;
  signed short v2:15;
  signed __tsi64 v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15s_BFs15s_BFs15ll_BFu15ll) C1{ Fs:15 Fs:15 FL:15 FL:15}



static void Test_BFs15s_BFs15s_BFs15ll_BFu15ll()
{
  {
    init_simple_test("BFs15s_BFs15s_BFs15ll_BFu15ll");
    static STRUCT_IF_C BFs15s_BFs15s_BFs15ll_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15s_BFs15ll_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15s_BFs15ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15s_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFs15s_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15s_BFs15s_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v4, 5, 6, 15, 1, "BFs15s_BFs15s_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v4, 5, 6, 15, hide_ull(1LL<<14), "BFs15s_BFs15s_BFs15ll_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15s_BFs15ll_BFu15ll, BFs15s_BFs15s_BFs15ll_BFu15ll)
//============================================================================


struct  BFs15s_BFs15s_BFs15ll_BFu15s  {
  signed short v1:15;
  signed short v2:15;
  signed __tsi64 v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15s_BFs15s_BFs15ll_BFu15s) C1{ Fs:15 Fs:15 FL:15 Fs:15}



static void Test_BFs15s_BFs15s_BFs15ll_BFu15s()
{
  {
    init_simple_test("BFs15s_BFs15s_BFs15ll_BFu15s");
    static STRUCT_IF_C BFs15s_BFs15s_BFs15ll_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15s_BFs15ll_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15s_BFs15ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15s_BFs15ll_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFs15ll_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFs15s_BFs15ll_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFs15ll_BFu15s");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15s_BFs15s_BFs15ll_BFu15s");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFs15ll_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15s_BFs15s_BFs15ll_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15s_BFs15s_BFs15ll_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15s_BFs15ll_BFu15s, BFs15s_BFs15s_BFs15ll_BFu15s)
//============================================================================


struct  BFs15s_BFs15s_BFs15s  {
  signed short v1:15;
  signed short v2:15;
  signed short v3:15;
};
//SIG(1 BFs15s_BFs15s_BFs15s) C1{ Fs:15 Fs:15 Fs:15}



static void Test_BFs15s_BFs15s_BFs15s()
{
  {
    init_simple_test("BFs15s_BFs15s_BFs15s");
    static STRUCT_IF_C BFs15s_BFs15s_BFs15s lv;
    check2(sizeof(lv), 6, "sizeof(BFs15s_BFs15s_BFs15s)");
    check2(__alignof__(lv), 2, "__alignof__(BFs15s_BFs15s_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15s_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFs15s_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15s_BFs15s, BFs15s_BFs15s_BFs15s)
//============================================================================


struct  BFs15s_BFs15s_BFs15s_BFs15i  {
  signed short v1:15;
  signed short v2:15;
  signed short v3:15;
  signed int v4:15;
};
//SIG(1 BFs15s_BFs15s_BFs15s_BFs15i) C1{ Fs:15 Fs:15 Fs:15 Fi:15}



static void Test_BFs15s_BFs15s_BFs15s_BFs15i()
{
  {
    init_simple_test("BFs15s_BFs15s_BFs15s_BFs15i");
    static STRUCT_IF_C BFs15s_BFs15s_BFs15s_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15s_BFs15s_BFs15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15s_BFs15s_BFs15s_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15s_BFs15s_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFs15s_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFs15s_BFs15s_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFs15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15s_BFs15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFs15s_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFs15s_BFs15s_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFs15s_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15s_BFs15s_BFs15i, BFs15s_BFs15s_BFs15s_BFs15i)
//============================================================================


struct  BFs15s_BFs15s_BFs15s_BFs15ll  {
  signed short v1:15;
  signed short v2:15;
  signed short v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15s_BFs15s_BFs15s_BFs15ll) C1{ Fs:15 Fs:15 Fs:15 FL:15}



static void Test_BFs15s_BFs15s_BFs15s_BFs15ll()
{
  {
    init_simple_test("BFs15s_BFs15s_BFs15s_BFs15ll");
    static STRUCT_IF_C BFs15s_BFs15s_BFs15s_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15s_BFs15s_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15s_BFs15s_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15s_BFs15s_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFs15s_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFs15s_BFs15s_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFs15s_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15s_BFs15s_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFs15s_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFs15s_BFs15s_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFs15s_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15s_BFs15s_BFs15ll, BFs15s_BFs15s_BFs15s_BFs15ll)
//============================================================================


struct  BFs15s_BFs15s_BFs15s_BFs15s  {
  signed short v1:15;
  signed short v2:15;
  signed short v3:15;
  signed short v4:15;
};
//SIG(1 BFs15s_BFs15s_BFs15s_BFs15s) C1{ Fs:15 Fs:15 Fs:15 Fs:15}



static void Test_BFs15s_BFs15s_BFs15s_BFs15s()
{
  {
    init_simple_test("BFs15s_BFs15s_BFs15s_BFs15s");
    static STRUCT_IF_C BFs15s_BFs15s_BFs15s_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15s_BFs15s_BFs15s)");
    check2(__alignof__(lv), 2, "__alignof__(BFs15s_BFs15s_BFs15s_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15s_BFs15s_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFs15s_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFs15s_BFs15s_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFs15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15s_BFs15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFs15s_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15s_BFs15s_BFs15s_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFs15s_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15s_BFs15s_BFs15s, BFs15s_BFs15s_BFs15s_BFs15s)
//============================================================================


struct  BFs15s_BFs15s_BFs15s_BFu15i  {
  signed short v1:15;
  signed short v2:15;
  signed short v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15s_BFs15s_BFs15s_BFu15i) C1{ Fs:15 Fs:15 Fs:15 Fi:15}



static void Test_BFs15s_BFs15s_BFs15s_BFu15i()
{
  {
    init_simple_test("BFs15s_BFs15s_BFs15s_BFu15i");
    static STRUCT_IF_C BFs15s_BFs15s_BFs15s_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15s_BFs15s_BFu15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15s_BFs15s_BFs15s_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15s_BFs15s_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFs15s_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFs15s_BFs15s_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFs15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15s_BFs15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFs15s_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFs15s_BFs15s_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15s_BFs15s_BFs15s_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15s_BFs15s_BFu15i, BFs15s_BFs15s_BFs15s_BFu15i)
//============================================================================


struct  BFs15s_BFs15s_BFs15s_BFu15ll  {
  signed short v1:15;
  signed short v2:15;
  signed short v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15s_BFs15s_BFs15s_BFu15ll) C1{ Fs:15 Fs:15 Fs:15 FL:15}



static void Test_BFs15s_BFs15s_BFs15s_BFu15ll()
{
  {
    init_simple_test("BFs15s_BFs15s_BFs15s_BFu15ll");
    static STRUCT_IF_C BFs15s_BFs15s_BFs15s_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15s_BFs15s_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15s_BFs15s_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15s_BFs15s_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFs15s_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFs15s_BFs15s_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFs15s_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15s_BFs15s_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFs15s_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFs15s_BFs15s_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15s_BFs15s_BFs15s_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15s_BFs15s_BFu15ll, BFs15s_BFs15s_BFs15s_BFu15ll)
//============================================================================


struct  BFs15s_BFs15s_BFs15s_BFu15s  {
  signed short v1:15;
  signed short v2:15;
  signed short v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15s_BFs15s_BFs15s_BFu15s) C1{ Fs:15 Fs:15 Fs:15 Fs:15}



static void Test_BFs15s_BFs15s_BFs15s_BFu15s()
{
  {
    init_simple_test("BFs15s_BFs15s_BFs15s_BFu15s");
    static STRUCT_IF_C BFs15s_BFs15s_BFs15s_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15s_BFs15s_BFu15s)");
    check2(__alignof__(lv), 2, "__alignof__(BFs15s_BFs15s_BFs15s_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15s_BFs15s_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFs15s_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFs15s_BFs15s_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFs15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15s_BFs15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFs15s_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15s_BFs15s_BFs15s_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15s_BFs15s_BFs15s_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15s_BFs15s_BFu15s, BFs15s_BFs15s_BFs15s_BFu15s)
//============================================================================


struct  BFs15s_BFs15s_BFu15i  {
  signed short v1:15;
  signed short v2:15;
  unsigned int v3:15;
};
//SIG(1 BFs15s_BFs15s_BFu15i) C1{ Fs:15 Fs:15 Fi:15}



static void Test_BFs15s_BFs15s_BFu15i()
{
  {
    init_simple_test("BFs15s_BFs15s_BFu15i");
    static STRUCT_IF_C BFs15s_BFs15s_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15s_BFu15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15s_BFs15s_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15s_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFs15s_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFs15s_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15s_BFu15i, BFs15s_BFs15s_BFu15i)
//============================================================================


struct  BFs15s_BFs15s_BFu15i_BFs15i  {
  signed short v1:15;
  signed short v2:15;
  unsigned int v3:15;
  signed int v4:15;
};
//SIG(1 BFs15s_BFs15s_BFu15i_BFs15i) C1{ Fs:15 Fs:15 Fi:15 Fi:15}



static void Test_BFs15s_BFs15s_BFu15i_BFs15i()
{
  {
    init_simple_test("BFs15s_BFs15s_BFu15i_BFs15i");
    static STRUCT_IF_C BFs15s_BFs15s_BFu15i_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15s_BFu15i_BFs15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15s_BFs15s_BFu15i_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15s_BFu15i_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFu15i_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFs15s_BFu15i_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFu15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15s_BFu15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFs15s_BFu15i_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFs15s_BFu15i_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFu15i_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15s_BFu15i_BFs15i, BFs15s_BFs15s_BFu15i_BFs15i)
//============================================================================


struct  BFs15s_BFs15s_BFu15i_BFs15ll  {
  signed short v1:15;
  signed short v2:15;
  unsigned int v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15s_BFs15s_BFu15i_BFs15ll) C1{ Fs:15 Fs:15 Fi:15 FL:15}



static void Test_BFs15s_BFs15s_BFu15i_BFs15ll()
{
  {
    init_simple_test("BFs15s_BFs15s_BFu15i_BFs15ll");
    static STRUCT_IF_C BFs15s_BFs15s_BFu15i_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15s_BFu15i_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15s_BFu15i_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15s_BFu15i_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFu15i_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFs15s_BFu15i_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFu15i_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15s_BFu15i_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFs15s_BFu15i_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFs15s_BFu15i_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFu15i_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15s_BFu15i_BFs15ll, BFs15s_BFs15s_BFu15i_BFs15ll)
//============================================================================


struct  BFs15s_BFs15s_BFu15i_BFs15s  {
  signed short v1:15;
  signed short v2:15;
  unsigned int v3:15;
  signed short v4:15;
};
//SIG(1 BFs15s_BFs15s_BFu15i_BFs15s) C1{ Fs:15 Fs:15 Fi:15 Fs:15}



static void Test_BFs15s_BFs15s_BFu15i_BFs15s()
{
  {
    init_simple_test("BFs15s_BFs15s_BFu15i_BFs15s");
    static STRUCT_IF_C BFs15s_BFs15s_BFu15i_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15s_BFu15i_BFs15s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15s_BFs15s_BFu15i_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15s_BFu15i_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFu15i_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFs15s_BFu15i_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFu15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15s_BFu15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFs15s_BFu15i_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15s_BFs15s_BFu15i_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFu15i_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15s_BFu15i_BFs15s, BFs15s_BFs15s_BFu15i_BFs15s)
//============================================================================


struct  BFs15s_BFs15s_BFu15i_BFu15i  {
  signed short v1:15;
  signed short v2:15;
  unsigned int v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15s_BFs15s_BFu15i_BFu15i) C1{ Fs:15 Fs:15 Fi:15 Fi:15}



static void Test_BFs15s_BFs15s_BFu15i_BFu15i()
{
  {
    init_simple_test("BFs15s_BFs15s_BFu15i_BFu15i");
    static STRUCT_IF_C BFs15s_BFs15s_BFu15i_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15s_BFu15i_BFu15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15s_BFs15s_BFu15i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15s_BFu15i_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFu15i_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFs15s_BFu15i_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFu15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15s_BFu15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFs15s_BFu15i_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFs15s_BFu15i_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15s_BFs15s_BFu15i_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15s_BFu15i_BFu15i, BFs15s_BFs15s_BFu15i_BFu15i)
//============================================================================


struct  BFs15s_BFs15s_BFu15i_BFu15ll  {
  signed short v1:15;
  signed short v2:15;
  unsigned int v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15s_BFs15s_BFu15i_BFu15ll) C1{ Fs:15 Fs:15 Fi:15 FL:15}



static void Test_BFs15s_BFs15s_BFu15i_BFu15ll()
{
  {
    init_simple_test("BFs15s_BFs15s_BFu15i_BFu15ll");
    static STRUCT_IF_C BFs15s_BFs15s_BFu15i_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15s_BFu15i_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15s_BFu15i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15s_BFu15i_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFu15i_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFs15s_BFu15i_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFu15i_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15s_BFu15i_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFs15s_BFu15i_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFs15s_BFu15i_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15s_BFs15s_BFu15i_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15s_BFu15i_BFu15ll, BFs15s_BFs15s_BFu15i_BFu15ll)
//============================================================================


struct  BFs15s_BFs15s_BFu15i_BFu15s  {
  signed short v1:15;
  signed short v2:15;
  unsigned int v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15s_BFs15s_BFu15i_BFu15s) C1{ Fs:15 Fs:15 Fi:15 Fs:15}



static void Test_BFs15s_BFs15s_BFu15i_BFu15s()
{
  {
    init_simple_test("BFs15s_BFs15s_BFu15i_BFu15s");
    static STRUCT_IF_C BFs15s_BFs15s_BFu15i_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15s_BFu15i_BFu15s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15s_BFs15s_BFu15i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15s_BFu15i_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFu15i_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFs15s_BFu15i_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFu15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15s_BFu15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFs15s_BFu15i_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15s_BFs15s_BFu15i_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15s_BFs15s_BFu15i_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15s_BFu15i_BFu15s, BFs15s_BFs15s_BFu15i_BFu15s)
//============================================================================


struct  BFs15s_BFs15s_BFu15ll  {
  signed short v1:15;
  signed short v2:15;
  __tsu64 v3:15;
};
//SIG(1 BFs15s_BFs15s_BFu15ll) C1{ Fs:15 Fs:15 FL:15}



static void Test_BFs15s_BFs15s_BFu15ll()
{
  {
    init_simple_test("BFs15s_BFs15s_BFu15ll");
    static STRUCT_IF_C BFs15s_BFs15s_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15s_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15s_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15s_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFs15s_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFu15ll");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15s_BFs15s_BFu15ll");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_ull(1LL<<14), "BFs15s_BFs15s_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15s_BFu15ll, BFs15s_BFs15s_BFu15ll)
//============================================================================


struct  BFs15s_BFs15s_BFu15ll_BFs15i  {
  signed short v1:15;
  signed short v2:15;
  __tsu64 v3:15;
  signed int v4:15;
};
//SIG(1 BFs15s_BFs15s_BFu15ll_BFs15i) C1{ Fs:15 Fs:15 FL:15 Fi:15}



static void Test_BFs15s_BFs15s_BFu15ll_BFs15i()
{
  {
    init_simple_test("BFs15s_BFs15s_BFu15ll_BFs15i");
    static STRUCT_IF_C BFs15s_BFs15s_BFu15ll_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15s_BFu15ll_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15s_BFu15ll_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15s_BFu15ll_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFu15ll_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFs15s_BFu15ll_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFu15ll_BFs15i");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15s_BFs15s_BFu15ll_BFs15i");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_ull(1LL<<14), "BFs15s_BFs15s_BFu15ll_BFs15i");
    set_bf_and_test(lv, v4, 5, 6, 15, 1, "BFs15s_BFs15s_BFu15ll_BFs15i");
    set_bf_and_test(lv, v4, 5, 6, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFu15ll_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15s_BFu15ll_BFs15i, BFs15s_BFs15s_BFu15ll_BFs15i)
//============================================================================


struct  BFs15s_BFs15s_BFu15ll_BFs15ll  {
  signed short v1:15;
  signed short v2:15;
  __tsu64 v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15s_BFs15s_BFu15ll_BFs15ll) C1{ Fs:15 Fs:15 FL:15 FL:15}



static void Test_BFs15s_BFs15s_BFu15ll_BFs15ll()
{
  {
    init_simple_test("BFs15s_BFs15s_BFu15ll_BFs15ll");
    static STRUCT_IF_C BFs15s_BFs15s_BFu15ll_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15s_BFu15ll_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15s_BFu15ll_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15s_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFs15s_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15s_BFs15s_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_ull(1LL<<14), "BFs15s_BFs15s_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v4, 5, 6, 15, 1, "BFs15s_BFs15s_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v4, 5, 6, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFu15ll_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15s_BFu15ll_BFs15ll, BFs15s_BFs15s_BFu15ll_BFs15ll)
//============================================================================


struct  BFs15s_BFs15s_BFu15ll_BFs15s  {
  signed short v1:15;
  signed short v2:15;
  __tsu64 v3:15;
  signed short v4:15;
};
//SIG(1 BFs15s_BFs15s_BFu15ll_BFs15s) C1{ Fs:15 Fs:15 FL:15 Fs:15}



static void Test_BFs15s_BFs15s_BFu15ll_BFs15s()
{
  {
    init_simple_test("BFs15s_BFs15s_BFu15ll_BFs15s");
    static STRUCT_IF_C BFs15s_BFs15s_BFu15ll_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15s_BFu15ll_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15s_BFu15ll_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15s_BFu15ll_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFu15ll_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFs15s_BFu15ll_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFu15ll_BFs15s");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15s_BFs15s_BFu15ll_BFs15s");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_ull(1LL<<14), "BFs15s_BFs15s_BFu15ll_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15s_BFs15s_BFu15ll_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFu15ll_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15s_BFu15ll_BFs15s, BFs15s_BFs15s_BFu15ll_BFs15s)
//============================================================================


struct  BFs15s_BFs15s_BFu15ll_BFu15i  {
  signed short v1:15;
  signed short v2:15;
  __tsu64 v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15s_BFs15s_BFu15ll_BFu15i) C1{ Fs:15 Fs:15 FL:15 Fi:15}



static void Test_BFs15s_BFs15s_BFu15ll_BFu15i()
{
  {
    init_simple_test("BFs15s_BFs15s_BFu15ll_BFu15i");
    static STRUCT_IF_C BFs15s_BFs15s_BFu15ll_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15s_BFu15ll_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15s_BFu15ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15s_BFu15ll_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFu15ll_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFs15s_BFu15ll_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFu15ll_BFu15i");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15s_BFs15s_BFu15ll_BFu15i");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_ull(1LL<<14), "BFs15s_BFs15s_BFu15ll_BFu15i");
    set_bf_and_test(lv, v4, 5, 6, 15, 1, "BFs15s_BFs15s_BFu15ll_BFu15i");
    set_bf_and_test(lv, v4, 5, 6, 15, hide_ull(1LL<<14), "BFs15s_BFs15s_BFu15ll_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15s_BFu15ll_BFu15i, BFs15s_BFs15s_BFu15ll_BFu15i)
//============================================================================


struct  BFs15s_BFs15s_BFu15ll_BFu15ll  {
  signed short v1:15;
  signed short v2:15;
  __tsu64 v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15s_BFs15s_BFu15ll_BFu15ll) C1{ Fs:15 Fs:15 FL:15 FL:15}



static void Test_BFs15s_BFs15s_BFu15ll_BFu15ll()
{
  {
    init_simple_test("BFs15s_BFs15s_BFu15ll_BFu15ll");
    static STRUCT_IF_C BFs15s_BFs15s_BFu15ll_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15s_BFu15ll_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15s_BFu15ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15s_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFs15s_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15s_BFs15s_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_ull(1LL<<14), "BFs15s_BFs15s_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v4, 5, 6, 15, 1, "BFs15s_BFs15s_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v4, 5, 6, 15, hide_ull(1LL<<14), "BFs15s_BFs15s_BFu15ll_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15s_BFu15ll_BFu15ll, BFs15s_BFs15s_BFu15ll_BFu15ll)
//============================================================================


struct  BFs15s_BFs15s_BFu15ll_BFu15s  {
  signed short v1:15;
  signed short v2:15;
  __tsu64 v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15s_BFs15s_BFu15ll_BFu15s) C1{ Fs:15 Fs:15 FL:15 Fs:15}



static void Test_BFs15s_BFs15s_BFu15ll_BFu15s()
{
  {
    init_simple_test("BFs15s_BFs15s_BFu15ll_BFu15s");
    static STRUCT_IF_C BFs15s_BFs15s_BFu15ll_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15s_BFu15ll_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15s_BFu15ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15s_BFu15ll_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFu15ll_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFs15s_BFu15ll_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFu15ll_BFu15s");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15s_BFs15s_BFu15ll_BFu15s");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_ull(1LL<<14), "BFs15s_BFs15s_BFu15ll_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15s_BFs15s_BFu15ll_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15s_BFs15s_BFu15ll_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15s_BFu15ll_BFu15s, BFs15s_BFs15s_BFu15ll_BFu15s)
//============================================================================


struct  BFs15s_BFs15s_BFu15s  {
  signed short v1:15;
  signed short v2:15;
  unsigned short v3:15;
};
//SIG(1 BFs15s_BFs15s_BFu15s) C1{ Fs:15 Fs:15 Fs:15}



static void Test_BFs15s_BFs15s_BFu15s()
{
  {
    init_simple_test("BFs15s_BFs15s_BFu15s");
    static STRUCT_IF_C BFs15s_BFs15s_BFu15s lv;
    check2(sizeof(lv), 6, "sizeof(BFs15s_BFs15s_BFu15s)");
    check2(__alignof__(lv), 2, "__alignof__(BFs15s_BFs15s_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15s_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFs15s_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFs15s_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15s_BFu15s, BFs15s_BFs15s_BFu15s)
//============================================================================


struct  BFs15s_BFs15s_BFu15s_BFs15i  {
  signed short v1:15;
  signed short v2:15;
  unsigned short v3:15;
  signed int v4:15;
};
//SIG(1 BFs15s_BFs15s_BFu15s_BFs15i) C1{ Fs:15 Fs:15 Fs:15 Fi:15}



static void Test_BFs15s_BFs15s_BFu15s_BFs15i()
{
  {
    init_simple_test("BFs15s_BFs15s_BFu15s_BFs15i");
    static STRUCT_IF_C BFs15s_BFs15s_BFu15s_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15s_BFu15s_BFs15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15s_BFs15s_BFu15s_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15s_BFu15s_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFu15s_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFs15s_BFu15s_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFu15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15s_BFu15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFs15s_BFu15s_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFs15s_BFu15s_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFu15s_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15s_BFu15s_BFs15i, BFs15s_BFs15s_BFu15s_BFs15i)
//============================================================================


struct  BFs15s_BFs15s_BFu15s_BFs15ll  {
  signed short v1:15;
  signed short v2:15;
  unsigned short v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15s_BFs15s_BFu15s_BFs15ll) C1{ Fs:15 Fs:15 Fs:15 FL:15}



static void Test_BFs15s_BFs15s_BFu15s_BFs15ll()
{
  {
    init_simple_test("BFs15s_BFs15s_BFu15s_BFs15ll");
    static STRUCT_IF_C BFs15s_BFs15s_BFu15s_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15s_BFu15s_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15s_BFu15s_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15s_BFu15s_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFu15s_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFs15s_BFu15s_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFu15s_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15s_BFu15s_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFs15s_BFu15s_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFs15s_BFu15s_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFu15s_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15s_BFu15s_BFs15ll, BFs15s_BFs15s_BFu15s_BFs15ll)
//============================================================================


struct  BFs15s_BFs15s_BFu15s_BFs15s  {
  signed short v1:15;
  signed short v2:15;
  unsigned short v3:15;
  signed short v4:15;
};
//SIG(1 BFs15s_BFs15s_BFu15s_BFs15s) C1{ Fs:15 Fs:15 Fs:15 Fs:15}



static void Test_BFs15s_BFs15s_BFu15s_BFs15s()
{
  {
    init_simple_test("BFs15s_BFs15s_BFu15s_BFs15s");
    static STRUCT_IF_C BFs15s_BFs15s_BFu15s_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15s_BFu15s_BFs15s)");
    check2(__alignof__(lv), 2, "__alignof__(BFs15s_BFs15s_BFu15s_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15s_BFu15s_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFu15s_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFs15s_BFu15s_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFu15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15s_BFu15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFs15s_BFu15s_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15s_BFs15s_BFu15s_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFu15s_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15s_BFu15s_BFs15s, BFs15s_BFs15s_BFu15s_BFs15s)
//============================================================================


struct  BFs15s_BFs15s_BFu15s_BFu15i  {
  signed short v1:15;
  signed short v2:15;
  unsigned short v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15s_BFs15s_BFu15s_BFu15i) C1{ Fs:15 Fs:15 Fs:15 Fi:15}



static void Test_BFs15s_BFs15s_BFu15s_BFu15i()
{
  {
    init_simple_test("BFs15s_BFs15s_BFu15s_BFu15i");
    static STRUCT_IF_C BFs15s_BFs15s_BFu15s_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15s_BFu15s_BFu15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15s_BFs15s_BFu15s_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15s_BFu15s_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFu15s_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFs15s_BFu15s_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFu15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15s_BFu15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFs15s_BFu15s_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFs15s_BFu15s_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15s_BFs15s_BFu15s_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15s_BFu15s_BFu15i, BFs15s_BFs15s_BFu15s_BFu15i)
//============================================================================


struct  BFs15s_BFs15s_BFu15s_BFu15ll  {
  signed short v1:15;
  signed short v2:15;
  unsigned short v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15s_BFs15s_BFu15s_BFu15ll) C1{ Fs:15 Fs:15 Fs:15 FL:15}



static void Test_BFs15s_BFs15s_BFu15s_BFu15ll()
{
  {
    init_simple_test("BFs15s_BFs15s_BFu15s_BFu15ll");
    static STRUCT_IF_C BFs15s_BFs15s_BFu15s_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15s_BFu15s_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFs15s_BFu15s_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15s_BFu15s_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFu15s_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFs15s_BFu15s_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFu15s_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15s_BFu15s_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFs15s_BFu15s_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFs15s_BFu15s_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15s_BFs15s_BFu15s_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15s_BFu15s_BFu15ll, BFs15s_BFs15s_BFu15s_BFu15ll)
//============================================================================


struct  BFs15s_BFs15s_BFu15s_BFu15s  {
  signed short v1:15;
  signed short v2:15;
  unsigned short v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15s_BFs15s_BFu15s_BFu15s) C1{ Fs:15 Fs:15 Fs:15 Fs:15}



static void Test_BFs15s_BFs15s_BFu15s_BFu15s()
{
  {
    init_simple_test("BFs15s_BFs15s_BFu15s_BFu15s");
    static STRUCT_IF_C BFs15s_BFs15s_BFu15s_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFs15s_BFu15s_BFu15s)");
    check2(__alignof__(lv), 2, "__alignof__(BFs15s_BFs15s_BFu15s_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFs15s_BFu15s_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFu15s_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFs15s_BFu15s_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_sll(1LL<<14), "BFs15s_BFs15s_BFu15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFs15s_BFu15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFs15s_BFu15s_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15s_BFs15s_BFu15s_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15s_BFs15s_BFu15s_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFs15s_BFu15s_BFu15s, BFs15s_BFs15s_BFu15s_BFu15s)
//============================================================================


struct  BFs15s_BFu15i  {
  signed short v1:15;
  unsigned int v2:15;
};
//SIG(1 BFs15s_BFu15i) C1{ Fs:15 Fi:15}



static void Test_BFs15s_BFu15i()
{
  {
    init_simple_test("BFs15s_BFu15i");
    static STRUCT_IF_C BFs15s_BFu15i lv;
    check2(sizeof(lv), 4, "sizeof(BFs15s_BFu15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15s_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15i, BFs15s_BFu15i)
//============================================================================


struct  BFs15s_BFu15i_BFs15i  {
  signed short v1:15;
  unsigned int v2:15;
  signed int v3:15;
};
//SIG(1 BFs15s_BFu15i_BFs15i) C1{ Fs:15 Fi:15 Fi:15}



static void Test_BFs15s_BFu15i_BFs15i()
{
  {
    init_simple_test("BFs15s_BFu15i_BFs15i");
    static STRUCT_IF_C BFs15s_BFu15i_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15i_BFs15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15s_BFu15i_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15i_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15i_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15i_BFs15i, BFs15s_BFu15i_BFs15i)
//============================================================================


struct  BFs15s_BFu15i_BFs15i_BFs15i  {
  signed short v1:15;
  unsigned int v2:15;
  signed int v3:15;
  signed int v4:15;
};
//SIG(1 BFs15s_BFu15i_BFs15i_BFs15i) C1{ Fs:15 Fi:15 Fi:15 Fi:15}



static void Test_BFs15s_BFu15i_BFs15i_BFs15i()
{
  {
    init_simple_test("BFs15s_BFu15i_BFs15i_BFs15i");
    static STRUCT_IF_C BFs15s_BFu15i_BFs15i_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15i_BFs15i_BFs15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15s_BFu15i_BFs15i_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15i_BFs15i_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFs15i_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15i_BFs15i_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFs15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15i_BFs15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFs15i_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFu15i_BFs15i_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFs15i_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15i_BFs15i_BFs15i, BFs15s_BFu15i_BFs15i_BFs15i)
//============================================================================


struct  BFs15s_BFu15i_BFs15i_BFs15ll  {
  signed short v1:15;
  unsigned int v2:15;
  signed int v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15s_BFu15i_BFs15i_BFs15ll) C1{ Fs:15 Fi:15 Fi:15 FL:15}



static void Test_BFs15s_BFu15i_BFs15i_BFs15ll()
{
  {
    init_simple_test("BFs15s_BFu15i_BFs15i_BFs15ll");
    static STRUCT_IF_C BFs15s_BFu15i_BFs15i_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15i_BFs15i_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15i_BFs15i_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15i_BFs15i_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFs15i_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15i_BFs15i_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFs15i_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15i_BFs15i_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFs15i_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFu15i_BFs15i_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFs15i_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15i_BFs15i_BFs15ll, BFs15s_BFu15i_BFs15i_BFs15ll)
//============================================================================


struct  BFs15s_BFu15i_BFs15i_BFs15s  {
  signed short v1:15;
  unsigned int v2:15;
  signed int v3:15;
  signed short v4:15;
};
//SIG(1 BFs15s_BFu15i_BFs15i_BFs15s) C1{ Fs:15 Fi:15 Fi:15 Fs:15}



static void Test_BFs15s_BFu15i_BFs15i_BFs15s()
{
  {
    init_simple_test("BFs15s_BFu15i_BFs15i_BFs15s");
    static STRUCT_IF_C BFs15s_BFu15i_BFs15i_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15i_BFs15i_BFs15s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15s_BFu15i_BFs15i_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15i_BFs15i_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFs15i_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15i_BFs15i_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFs15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15i_BFs15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFs15i_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15s_BFu15i_BFs15i_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFs15i_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15i_BFs15i_BFs15s, BFs15s_BFu15i_BFs15i_BFs15s)
//============================================================================


struct  BFs15s_BFu15i_BFs15i_BFu15i  {
  signed short v1:15;
  unsigned int v2:15;
  signed int v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15s_BFu15i_BFs15i_BFu15i) C1{ Fs:15 Fi:15 Fi:15 Fi:15}



static void Test_BFs15s_BFu15i_BFs15i_BFu15i()
{
  {
    init_simple_test("BFs15s_BFu15i_BFs15i_BFu15i");
    static STRUCT_IF_C BFs15s_BFu15i_BFs15i_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15i_BFs15i_BFu15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15s_BFu15i_BFs15i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15i_BFs15i_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFs15i_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15i_BFs15i_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFs15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15i_BFs15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFs15i_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFu15i_BFs15i_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFs15i_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15i_BFs15i_BFu15i, BFs15s_BFu15i_BFs15i_BFu15i)
//============================================================================


struct  BFs15s_BFu15i_BFs15i_BFu15ll  {
  signed short v1:15;
  unsigned int v2:15;
  signed int v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15s_BFu15i_BFs15i_BFu15ll) C1{ Fs:15 Fi:15 Fi:15 FL:15}



static void Test_BFs15s_BFu15i_BFs15i_BFu15ll()
{
  {
    init_simple_test("BFs15s_BFu15i_BFs15i_BFu15ll");
    static STRUCT_IF_C BFs15s_BFu15i_BFs15i_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15i_BFs15i_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15i_BFs15i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15i_BFs15i_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFs15i_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15i_BFs15i_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFs15i_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15i_BFs15i_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFs15i_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFu15i_BFs15i_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFs15i_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15i_BFs15i_BFu15ll, BFs15s_BFu15i_BFs15i_BFu15ll)
//============================================================================


struct  BFs15s_BFu15i_BFs15i_BFu15s  {
  signed short v1:15;
  unsigned int v2:15;
  signed int v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15s_BFu15i_BFs15i_BFu15s) C1{ Fs:15 Fi:15 Fi:15 Fs:15}



static void Test_BFs15s_BFu15i_BFs15i_BFu15s()
{
  {
    init_simple_test("BFs15s_BFu15i_BFs15i_BFu15s");
    static STRUCT_IF_C BFs15s_BFu15i_BFs15i_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15i_BFs15i_BFu15s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15s_BFu15i_BFs15i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15i_BFs15i_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFs15i_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15i_BFs15i_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFs15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15i_BFs15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFs15i_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15s_BFu15i_BFs15i_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFs15i_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15i_BFs15i_BFu15s, BFs15s_BFu15i_BFs15i_BFu15s)
//============================================================================


struct  BFs15s_BFu15i_BFs15ll  {
  signed short v1:15;
  unsigned int v2:15;
  signed __tsi64 v3:15;
};
//SIG(1 BFs15s_BFu15i_BFs15ll) C1{ Fs:15 Fi:15 FL:15}



static void Test_BFs15s_BFu15i_BFs15ll()
{
  {
    init_simple_test("BFs15s_BFu15i_BFs15ll");
    static STRUCT_IF_C BFs15s_BFu15i_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15i_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15i_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15i_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15i_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFs15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15s_BFu15i_BFs15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15i_BFs15ll, BFs15s_BFu15i_BFs15ll)
//============================================================================


struct  BFs15s_BFu15i_BFs15ll_BFs15i  {
  signed short v1:15;
  unsigned int v2:15;
  signed __tsi64 v3:15;
  signed int v4:15;
};
//SIG(1 BFs15s_BFu15i_BFs15ll_BFs15i) C1{ Fs:15 Fi:15 FL:15 Fi:15}



static void Test_BFs15s_BFu15i_BFs15ll_BFs15i()
{
  {
    init_simple_test("BFs15s_BFu15i_BFs15ll_BFs15i");
    static STRUCT_IF_C BFs15s_BFu15i_BFs15ll_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15i_BFs15ll_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15i_BFs15ll_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15i_BFs15ll_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFs15ll_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15i_BFs15ll_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFs15ll_BFs15i");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15s_BFu15i_BFs15ll_BFs15i");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFs15ll_BFs15i");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15s_BFu15i_BFs15ll_BFs15i");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFs15ll_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15i_BFs15ll_BFs15i, BFs15s_BFu15i_BFs15ll_BFs15i)
//============================================================================


struct  BFs15s_BFu15i_BFs15ll_BFs15ll  {
  signed short v1:15;
  unsigned int v2:15;
  signed __tsi64 v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15s_BFu15i_BFs15ll_BFs15ll) C1{ Fs:15 Fi:15 FL:15 FL:15}



static void Test_BFs15s_BFu15i_BFs15ll_BFs15ll()
{
  {
    init_simple_test("BFs15s_BFu15i_BFs15ll_BFs15ll");
    static STRUCT_IF_C BFs15s_BFu15i_BFs15ll_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15i_BFs15ll_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15i_BFs15ll_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15i_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15i_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15s_BFu15i_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15s_BFu15i_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFs15ll_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15i_BFs15ll_BFs15ll, BFs15s_BFu15i_BFs15ll_BFs15ll)
//============================================================================


struct  BFs15s_BFu15i_BFs15ll_BFs15s  {
  signed short v1:15;
  unsigned int v2:15;
  signed __tsi64 v3:15;
  signed short v4:15;
};
//SIG(1 BFs15s_BFu15i_BFs15ll_BFs15s) C1{ Fs:15 Fi:15 FL:15 Fs:15}



static void Test_BFs15s_BFu15i_BFs15ll_BFs15s()
{
  {
    init_simple_test("BFs15s_BFu15i_BFs15ll_BFs15s");
    static STRUCT_IF_C BFs15s_BFu15i_BFs15ll_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15i_BFs15ll_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15i_BFs15ll_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15i_BFs15ll_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFs15ll_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15i_BFs15ll_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFs15ll_BFs15s");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15s_BFu15i_BFs15ll_BFs15s");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFs15ll_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15s_BFu15i_BFs15ll_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFs15ll_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15i_BFs15ll_BFs15s, BFs15s_BFu15i_BFs15ll_BFs15s)
//============================================================================


struct  BFs15s_BFu15i_BFs15ll_BFu15i  {
  signed short v1:15;
  unsigned int v2:15;
  signed __tsi64 v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15s_BFu15i_BFs15ll_BFu15i) C1{ Fs:15 Fi:15 FL:15 Fi:15}



static void Test_BFs15s_BFu15i_BFs15ll_BFu15i()
{
  {
    init_simple_test("BFs15s_BFu15i_BFs15ll_BFu15i");
    static STRUCT_IF_C BFs15s_BFu15i_BFs15ll_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15i_BFs15ll_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15i_BFs15ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15i_BFs15ll_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFs15ll_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15i_BFs15ll_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFs15ll_BFu15i");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15s_BFu15i_BFs15ll_BFu15i");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFs15ll_BFu15i");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15s_BFu15i_BFs15ll_BFu15i");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFs15ll_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15i_BFs15ll_BFu15i, BFs15s_BFu15i_BFs15ll_BFu15i)
//============================================================================


struct  BFs15s_BFu15i_BFs15ll_BFu15ll  {
  signed short v1:15;
  unsigned int v2:15;
  signed __tsi64 v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15s_BFu15i_BFs15ll_BFu15ll) C1{ Fs:15 Fi:15 FL:15 FL:15}



static void Test_BFs15s_BFu15i_BFs15ll_BFu15ll()
{
  {
    init_simple_test("BFs15s_BFu15i_BFs15ll_BFu15ll");
    static STRUCT_IF_C BFs15s_BFu15i_BFs15ll_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15i_BFs15ll_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15i_BFs15ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15i_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15i_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15s_BFu15i_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15s_BFu15i_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFs15ll_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15i_BFs15ll_BFu15ll, BFs15s_BFu15i_BFs15ll_BFu15ll)
//============================================================================


struct  BFs15s_BFu15i_BFs15ll_BFu15s  {
  signed short v1:15;
  unsigned int v2:15;
  signed __tsi64 v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15s_BFu15i_BFs15ll_BFu15s) C1{ Fs:15 Fi:15 FL:15 Fs:15}



static void Test_BFs15s_BFu15i_BFs15ll_BFu15s()
{
  {
    init_simple_test("BFs15s_BFu15i_BFs15ll_BFu15s");
    static STRUCT_IF_C BFs15s_BFu15i_BFs15ll_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15i_BFs15ll_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15i_BFs15ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15i_BFs15ll_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFs15ll_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15i_BFs15ll_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFs15ll_BFu15s");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15s_BFu15i_BFs15ll_BFu15s");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFs15ll_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15s_BFu15i_BFs15ll_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFs15ll_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15i_BFs15ll_BFu15s, BFs15s_BFu15i_BFs15ll_BFu15s)
//============================================================================


struct  BFs15s_BFu15i_BFs15s  {
  signed short v1:15;
  unsigned int v2:15;
  signed short v3:15;
};
//SIG(1 BFs15s_BFu15i_BFs15s) C1{ Fs:15 Fi:15 Fs:15}



static void Test_BFs15s_BFu15i_BFs15s()
{
  {
    init_simple_test("BFs15s_BFu15i_BFs15s");
    static STRUCT_IF_C BFs15s_BFu15i_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15i_BFs15s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15s_BFu15i_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15i_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15i_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15i_BFs15s, BFs15s_BFu15i_BFs15s)
//============================================================================


struct  BFs15s_BFu15i_BFs15s_BFs15i  {
  signed short v1:15;
  unsigned int v2:15;
  signed short v3:15;
  signed int v4:15;
};
//SIG(1 BFs15s_BFu15i_BFs15s_BFs15i) C1{ Fs:15 Fi:15 Fs:15 Fi:15}



static void Test_BFs15s_BFu15i_BFs15s_BFs15i()
{
  {
    init_simple_test("BFs15s_BFu15i_BFs15s_BFs15i");
    static STRUCT_IF_C BFs15s_BFu15i_BFs15s_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15i_BFs15s_BFs15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15s_BFu15i_BFs15s_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15i_BFs15s_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFs15s_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15i_BFs15s_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFs15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15i_BFs15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFs15s_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFu15i_BFs15s_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFs15s_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15i_BFs15s_BFs15i, BFs15s_BFu15i_BFs15s_BFs15i)
//============================================================================


struct  BFs15s_BFu15i_BFs15s_BFs15ll  {
  signed short v1:15;
  unsigned int v2:15;
  signed short v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15s_BFu15i_BFs15s_BFs15ll) C1{ Fs:15 Fi:15 Fs:15 FL:15}



static void Test_BFs15s_BFu15i_BFs15s_BFs15ll()
{
  {
    init_simple_test("BFs15s_BFu15i_BFs15s_BFs15ll");
    static STRUCT_IF_C BFs15s_BFu15i_BFs15s_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15i_BFs15s_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15i_BFs15s_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15i_BFs15s_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFs15s_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15i_BFs15s_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFs15s_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15i_BFs15s_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFs15s_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFu15i_BFs15s_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFs15s_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15i_BFs15s_BFs15ll, BFs15s_BFu15i_BFs15s_BFs15ll)
//============================================================================


struct  BFs15s_BFu15i_BFs15s_BFs15s  {
  signed short v1:15;
  unsigned int v2:15;
  signed short v3:15;
  signed short v4:15;
};
//SIG(1 BFs15s_BFu15i_BFs15s_BFs15s) C1{ Fs:15 Fi:15 Fs:15 Fs:15}



static void Test_BFs15s_BFu15i_BFs15s_BFs15s()
{
  {
    init_simple_test("BFs15s_BFu15i_BFs15s_BFs15s");
    static STRUCT_IF_C BFs15s_BFu15i_BFs15s_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15i_BFs15s_BFs15s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15s_BFu15i_BFs15s_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15i_BFs15s_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFs15s_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15i_BFs15s_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFs15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15i_BFs15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFs15s_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15s_BFu15i_BFs15s_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFs15s_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15i_BFs15s_BFs15s, BFs15s_BFu15i_BFs15s_BFs15s)
//============================================================================


struct  BFs15s_BFu15i_BFs15s_BFu15i  {
  signed short v1:15;
  unsigned int v2:15;
  signed short v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15s_BFu15i_BFs15s_BFu15i) C1{ Fs:15 Fi:15 Fs:15 Fi:15}



static void Test_BFs15s_BFu15i_BFs15s_BFu15i()
{
  {
    init_simple_test("BFs15s_BFu15i_BFs15s_BFu15i");
    static STRUCT_IF_C BFs15s_BFu15i_BFs15s_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15i_BFs15s_BFu15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15s_BFu15i_BFs15s_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15i_BFs15s_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFs15s_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15i_BFs15s_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFs15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15i_BFs15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFs15s_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFu15i_BFs15s_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFs15s_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15i_BFs15s_BFu15i, BFs15s_BFu15i_BFs15s_BFu15i)
//============================================================================


struct  BFs15s_BFu15i_BFs15s_BFu15ll  {
  signed short v1:15;
  unsigned int v2:15;
  signed short v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15s_BFu15i_BFs15s_BFu15ll) C1{ Fs:15 Fi:15 Fs:15 FL:15}



static void Test_BFs15s_BFu15i_BFs15s_BFu15ll()
{
  {
    init_simple_test("BFs15s_BFu15i_BFs15s_BFu15ll");
    static STRUCT_IF_C BFs15s_BFu15i_BFs15s_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15i_BFs15s_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15i_BFs15s_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15i_BFs15s_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFs15s_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15i_BFs15s_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFs15s_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15i_BFs15s_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFs15s_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFu15i_BFs15s_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFs15s_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15i_BFs15s_BFu15ll, BFs15s_BFu15i_BFs15s_BFu15ll)
//============================================================================


struct  BFs15s_BFu15i_BFs15s_BFu15s  {
  signed short v1:15;
  unsigned int v2:15;
  signed short v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15s_BFu15i_BFs15s_BFu15s) C1{ Fs:15 Fi:15 Fs:15 Fs:15}



static void Test_BFs15s_BFu15i_BFs15s_BFu15s()
{
  {
    init_simple_test("BFs15s_BFu15i_BFs15s_BFu15s");
    static STRUCT_IF_C BFs15s_BFu15i_BFs15s_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15i_BFs15s_BFu15s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15s_BFu15i_BFs15s_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15i_BFs15s_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFs15s_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15i_BFs15s_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFs15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15i_BFs15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFs15s_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15s_BFu15i_BFs15s_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFs15s_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15i_BFs15s_BFu15s, BFs15s_BFu15i_BFs15s_BFu15s)
//============================================================================


struct  BFs15s_BFu15i_BFu15i  {
  signed short v1:15;
  unsigned int v2:15;
  unsigned int v3:15;
};
//SIG(1 BFs15s_BFu15i_BFu15i) C1{ Fs:15 Fi:15 Fi:15}



static void Test_BFs15s_BFu15i_BFu15i()
{
  {
    init_simple_test("BFs15s_BFu15i_BFu15i");
    static STRUCT_IF_C BFs15s_BFu15i_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15i_BFu15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15s_BFu15i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15i_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15i_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15i_BFu15i, BFs15s_BFu15i_BFu15i)
//============================================================================


struct  BFs15s_BFu15i_BFu15i_BFs15i  {
  signed short v1:15;
  unsigned int v2:15;
  unsigned int v3:15;
  signed int v4:15;
};
//SIG(1 BFs15s_BFu15i_BFu15i_BFs15i) C1{ Fs:15 Fi:15 Fi:15 Fi:15}



static void Test_BFs15s_BFu15i_BFu15i_BFs15i()
{
  {
    init_simple_test("BFs15s_BFu15i_BFu15i_BFs15i");
    static STRUCT_IF_C BFs15s_BFu15i_BFu15i_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15i_BFu15i_BFs15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15s_BFu15i_BFu15i_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15i_BFu15i_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFu15i_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15i_BFu15i_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFu15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15i_BFu15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFu15i_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFu15i_BFu15i_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFu15i_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15i_BFu15i_BFs15i, BFs15s_BFu15i_BFu15i_BFs15i)
//============================================================================


struct  BFs15s_BFu15i_BFu15i_BFs15ll  {
  signed short v1:15;
  unsigned int v2:15;
  unsigned int v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15s_BFu15i_BFu15i_BFs15ll) C1{ Fs:15 Fi:15 Fi:15 FL:15}



static void Test_BFs15s_BFu15i_BFu15i_BFs15ll()
{
  {
    init_simple_test("BFs15s_BFu15i_BFu15i_BFs15ll");
    static STRUCT_IF_C BFs15s_BFu15i_BFu15i_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15i_BFu15i_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15i_BFu15i_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15i_BFu15i_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFu15i_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15i_BFu15i_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFu15i_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15i_BFu15i_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFu15i_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFu15i_BFu15i_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFu15i_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15i_BFu15i_BFs15ll, BFs15s_BFu15i_BFu15i_BFs15ll)
//============================================================================


struct  BFs15s_BFu15i_BFu15i_BFs15s  {
  signed short v1:15;
  unsigned int v2:15;
  unsigned int v3:15;
  signed short v4:15;
};
//SIG(1 BFs15s_BFu15i_BFu15i_BFs15s) C1{ Fs:15 Fi:15 Fi:15 Fs:15}



static void Test_BFs15s_BFu15i_BFu15i_BFs15s()
{
  {
    init_simple_test("BFs15s_BFu15i_BFu15i_BFs15s");
    static STRUCT_IF_C BFs15s_BFu15i_BFu15i_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15i_BFu15i_BFs15s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15s_BFu15i_BFu15i_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15i_BFu15i_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFu15i_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15i_BFu15i_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFu15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15i_BFu15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFu15i_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15s_BFu15i_BFu15i_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFu15i_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15i_BFu15i_BFs15s, BFs15s_BFu15i_BFu15i_BFs15s)
//============================================================================


struct  BFs15s_BFu15i_BFu15i_BFu15i  {
  signed short v1:15;
  unsigned int v2:15;
  unsigned int v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15s_BFu15i_BFu15i_BFu15i) C1{ Fs:15 Fi:15 Fi:15 Fi:15}



static void Test_BFs15s_BFu15i_BFu15i_BFu15i()
{
  {
    init_simple_test("BFs15s_BFu15i_BFu15i_BFu15i");
    static STRUCT_IF_C BFs15s_BFu15i_BFu15i_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15i_BFu15i_BFu15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15s_BFu15i_BFu15i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15i_BFu15i_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFu15i_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15i_BFu15i_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFu15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15i_BFu15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFu15i_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFu15i_BFu15i_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFu15i_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15i_BFu15i_BFu15i, BFs15s_BFu15i_BFu15i_BFu15i)
//============================================================================


struct  BFs15s_BFu15i_BFu15i_BFu15ll  {
  signed short v1:15;
  unsigned int v2:15;
  unsigned int v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15s_BFu15i_BFu15i_BFu15ll) C1{ Fs:15 Fi:15 Fi:15 FL:15}



static void Test_BFs15s_BFu15i_BFu15i_BFu15ll()
{
  {
    init_simple_test("BFs15s_BFu15i_BFu15i_BFu15ll");
    static STRUCT_IF_C BFs15s_BFu15i_BFu15i_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15i_BFu15i_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15i_BFu15i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15i_BFu15i_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFu15i_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15i_BFu15i_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFu15i_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15i_BFu15i_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFu15i_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFu15i_BFu15i_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFu15i_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15i_BFu15i_BFu15ll, BFs15s_BFu15i_BFu15i_BFu15ll)
//============================================================================


struct  BFs15s_BFu15i_BFu15i_BFu15s  {
  signed short v1:15;
  unsigned int v2:15;
  unsigned int v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15s_BFu15i_BFu15i_BFu15s) C1{ Fs:15 Fi:15 Fi:15 Fs:15}



static void Test_BFs15s_BFu15i_BFu15i_BFu15s()
{
  {
    init_simple_test("BFs15s_BFu15i_BFu15i_BFu15s");
    static STRUCT_IF_C BFs15s_BFu15i_BFu15i_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15i_BFu15i_BFu15s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15s_BFu15i_BFu15i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15i_BFu15i_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFu15i_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15i_BFu15i_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFu15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15i_BFu15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFu15i_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15s_BFu15i_BFu15i_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFu15i_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15i_BFu15i_BFu15s, BFs15s_BFu15i_BFu15i_BFu15s)
//============================================================================


struct  BFs15s_BFu15i_BFu15ll  {
  signed short v1:15;
  unsigned int v2:15;
  __tsu64 v3:15;
};
//SIG(1 BFs15s_BFu15i_BFu15ll) C1{ Fs:15 Fi:15 FL:15}



static void Test_BFs15s_BFu15i_BFu15ll()
{
  {
    init_simple_test("BFs15s_BFu15i_BFu15ll");
    static STRUCT_IF_C BFs15s_BFu15i_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15i_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15i_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15i_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFu15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15s_BFu15i_BFu15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15i_BFu15ll, BFs15s_BFu15i_BFu15ll)
//============================================================================


struct  BFs15s_BFu15i_BFu15ll_BFs15i  {
  signed short v1:15;
  unsigned int v2:15;
  __tsu64 v3:15;
  signed int v4:15;
};
//SIG(1 BFs15s_BFu15i_BFu15ll_BFs15i) C1{ Fs:15 Fi:15 FL:15 Fi:15}



static void Test_BFs15s_BFu15i_BFu15ll_BFs15i()
{
  {
    init_simple_test("BFs15s_BFu15i_BFu15ll_BFs15i");
    static STRUCT_IF_C BFs15s_BFu15i_BFu15ll_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15i_BFu15ll_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15i_BFu15ll_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15i_BFu15ll_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFu15ll_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15i_BFu15ll_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFu15ll_BFs15i");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15s_BFu15i_BFu15ll_BFs15i");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFu15ll_BFs15i");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15s_BFu15i_BFu15ll_BFs15i");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFu15ll_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15i_BFu15ll_BFs15i, BFs15s_BFu15i_BFu15ll_BFs15i)
//============================================================================


struct  BFs15s_BFu15i_BFu15ll_BFs15ll  {
  signed short v1:15;
  unsigned int v2:15;
  __tsu64 v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15s_BFu15i_BFu15ll_BFs15ll) C1{ Fs:15 Fi:15 FL:15 FL:15}



static void Test_BFs15s_BFu15i_BFu15ll_BFs15ll()
{
  {
    init_simple_test("BFs15s_BFu15i_BFu15ll_BFs15ll");
    static STRUCT_IF_C BFs15s_BFu15i_BFu15ll_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15i_BFu15ll_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15i_BFu15ll_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15i_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15i_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15s_BFu15i_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15s_BFu15i_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFu15ll_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15i_BFu15ll_BFs15ll, BFs15s_BFu15i_BFu15ll_BFs15ll)
//============================================================================


struct  BFs15s_BFu15i_BFu15ll_BFs15s  {
  signed short v1:15;
  unsigned int v2:15;
  __tsu64 v3:15;
  signed short v4:15;
};
//SIG(1 BFs15s_BFu15i_BFu15ll_BFs15s) C1{ Fs:15 Fi:15 FL:15 Fs:15}



static void Test_BFs15s_BFu15i_BFu15ll_BFs15s()
{
  {
    init_simple_test("BFs15s_BFu15i_BFu15ll_BFs15s");
    static STRUCT_IF_C BFs15s_BFu15i_BFu15ll_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15i_BFu15ll_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15i_BFu15ll_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15i_BFu15ll_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFu15ll_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15i_BFu15ll_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFu15ll_BFs15s");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15s_BFu15i_BFu15ll_BFs15s");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFu15ll_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15s_BFu15i_BFu15ll_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFu15ll_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15i_BFu15ll_BFs15s, BFs15s_BFu15i_BFu15ll_BFs15s)
//============================================================================


struct  BFs15s_BFu15i_BFu15ll_BFu15i  {
  signed short v1:15;
  unsigned int v2:15;
  __tsu64 v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15s_BFu15i_BFu15ll_BFu15i) C1{ Fs:15 Fi:15 FL:15 Fi:15}



static void Test_BFs15s_BFu15i_BFu15ll_BFu15i()
{
  {
    init_simple_test("BFs15s_BFu15i_BFu15ll_BFu15i");
    static STRUCT_IF_C BFs15s_BFu15i_BFu15ll_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15i_BFu15ll_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15i_BFu15ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15i_BFu15ll_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFu15ll_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15i_BFu15ll_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFu15ll_BFu15i");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15s_BFu15i_BFu15ll_BFu15i");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFu15ll_BFu15i");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15s_BFu15i_BFu15ll_BFu15i");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFu15ll_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15i_BFu15ll_BFu15i, BFs15s_BFu15i_BFu15ll_BFu15i)
//============================================================================


struct  BFs15s_BFu15i_BFu15ll_BFu15ll  {
  signed short v1:15;
  unsigned int v2:15;
  __tsu64 v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15s_BFu15i_BFu15ll_BFu15ll) C1{ Fs:15 Fi:15 FL:15 FL:15}



static void Test_BFs15s_BFu15i_BFu15ll_BFu15ll()
{
  {
    init_simple_test("BFs15s_BFu15i_BFu15ll_BFu15ll");
    static STRUCT_IF_C BFs15s_BFu15i_BFu15ll_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15i_BFu15ll_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15i_BFu15ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15i_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15i_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15s_BFu15i_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15s_BFu15i_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFu15ll_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15i_BFu15ll_BFu15ll, BFs15s_BFu15i_BFu15ll_BFu15ll)
//============================================================================


struct  BFs15s_BFu15i_BFu15ll_BFu15s  {
  signed short v1:15;
  unsigned int v2:15;
  __tsu64 v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15s_BFu15i_BFu15ll_BFu15s) C1{ Fs:15 Fi:15 FL:15 Fs:15}



static void Test_BFs15s_BFu15i_BFu15ll_BFu15s()
{
  {
    init_simple_test("BFs15s_BFu15i_BFu15ll_BFu15s");
    static STRUCT_IF_C BFs15s_BFu15i_BFu15ll_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15i_BFu15ll_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15i_BFu15ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15i_BFu15ll_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFu15ll_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15i_BFu15ll_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFu15ll_BFu15s");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15s_BFu15i_BFu15ll_BFu15s");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFu15ll_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15s_BFu15i_BFu15ll_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFu15ll_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15i_BFu15ll_BFu15s, BFs15s_BFu15i_BFu15ll_BFu15s)
//============================================================================


struct  BFs15s_BFu15i_BFu15s  {
  signed short v1:15;
  unsigned int v2:15;
  unsigned short v3:15;
};
//SIG(1 BFs15s_BFu15i_BFu15s) C1{ Fs:15 Fi:15 Fs:15}



static void Test_BFs15s_BFu15i_BFu15s()
{
  {
    init_simple_test("BFs15s_BFu15i_BFu15s");
    static STRUCT_IF_C BFs15s_BFu15i_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15i_BFu15s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15s_BFu15i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15i_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15i_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15i_BFu15s, BFs15s_BFu15i_BFu15s)
//============================================================================


struct  BFs15s_BFu15i_BFu15s_BFs15i  {
  signed short v1:15;
  unsigned int v2:15;
  unsigned short v3:15;
  signed int v4:15;
};
//SIG(1 BFs15s_BFu15i_BFu15s_BFs15i) C1{ Fs:15 Fi:15 Fs:15 Fi:15}



static void Test_BFs15s_BFu15i_BFu15s_BFs15i()
{
  {
    init_simple_test("BFs15s_BFu15i_BFu15s_BFs15i");
    static STRUCT_IF_C BFs15s_BFu15i_BFu15s_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15i_BFu15s_BFs15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15s_BFu15i_BFu15s_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15i_BFu15s_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFu15s_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15i_BFu15s_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFu15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15i_BFu15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFu15s_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFu15i_BFu15s_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFu15s_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15i_BFu15s_BFs15i, BFs15s_BFu15i_BFu15s_BFs15i)
//============================================================================


struct  BFs15s_BFu15i_BFu15s_BFs15ll  {
  signed short v1:15;
  unsigned int v2:15;
  unsigned short v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15s_BFu15i_BFu15s_BFs15ll) C1{ Fs:15 Fi:15 Fs:15 FL:15}



static void Test_BFs15s_BFu15i_BFu15s_BFs15ll()
{
  {
    init_simple_test("BFs15s_BFu15i_BFu15s_BFs15ll");
    static STRUCT_IF_C BFs15s_BFu15i_BFu15s_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15i_BFu15s_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15i_BFu15s_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15i_BFu15s_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFu15s_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15i_BFu15s_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFu15s_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15i_BFu15s_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFu15s_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFu15i_BFu15s_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFu15s_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15i_BFu15s_BFs15ll, BFs15s_BFu15i_BFu15s_BFs15ll)
//============================================================================


struct  BFs15s_BFu15i_BFu15s_BFs15s  {
  signed short v1:15;
  unsigned int v2:15;
  unsigned short v3:15;
  signed short v4:15;
};
//SIG(1 BFs15s_BFu15i_BFu15s_BFs15s) C1{ Fs:15 Fi:15 Fs:15 Fs:15}



static void Test_BFs15s_BFu15i_BFu15s_BFs15s()
{
  {
    init_simple_test("BFs15s_BFu15i_BFu15s_BFs15s");
    static STRUCT_IF_C BFs15s_BFu15i_BFu15s_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15i_BFu15s_BFs15s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15s_BFu15i_BFu15s_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15i_BFu15s_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFu15s_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15i_BFu15s_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFu15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15i_BFu15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFu15s_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15s_BFu15i_BFu15s_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFu15s_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15i_BFu15s_BFs15s, BFs15s_BFu15i_BFu15s_BFs15s)
//============================================================================


struct  BFs15s_BFu15i_BFu15s_BFu15i  {
  signed short v1:15;
  unsigned int v2:15;
  unsigned short v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15s_BFu15i_BFu15s_BFu15i) C1{ Fs:15 Fi:15 Fs:15 Fi:15}



static void Test_BFs15s_BFu15i_BFu15s_BFu15i()
{
  {
    init_simple_test("BFs15s_BFu15i_BFu15s_BFu15i");
    static STRUCT_IF_C BFs15s_BFu15i_BFu15s_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15i_BFu15s_BFu15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15s_BFu15i_BFu15s_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15i_BFu15s_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFu15s_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15i_BFu15s_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFu15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15i_BFu15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFu15s_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFu15i_BFu15s_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFu15s_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15i_BFu15s_BFu15i, BFs15s_BFu15i_BFu15s_BFu15i)
//============================================================================


struct  BFs15s_BFu15i_BFu15s_BFu15ll  {
  signed short v1:15;
  unsigned int v2:15;
  unsigned short v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15s_BFu15i_BFu15s_BFu15ll) C1{ Fs:15 Fi:15 Fs:15 FL:15}



static void Test_BFs15s_BFu15i_BFu15s_BFu15ll()
{
  {
    init_simple_test("BFs15s_BFu15i_BFu15s_BFu15ll");
    static STRUCT_IF_C BFs15s_BFu15i_BFu15s_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15i_BFu15s_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15i_BFu15s_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15i_BFu15s_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFu15s_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15i_BFu15s_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFu15s_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15i_BFu15s_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFu15s_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFu15i_BFu15s_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFu15s_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15i_BFu15s_BFu15ll, BFs15s_BFu15i_BFu15s_BFu15ll)
//============================================================================


struct  BFs15s_BFu15i_BFu15s_BFu15s  {
  signed short v1:15;
  unsigned int v2:15;
  unsigned short v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15s_BFu15i_BFu15s_BFu15s) C1{ Fs:15 Fi:15 Fs:15 Fs:15}



static void Test_BFs15s_BFu15i_BFu15s_BFu15s()
{
  {
    init_simple_test("BFs15s_BFu15i_BFu15s_BFu15s");
    static STRUCT_IF_C BFs15s_BFu15i_BFu15s_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15i_BFu15s_BFu15s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15s_BFu15i_BFu15s_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15i_BFu15s_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15i_BFu15s_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15i_BFu15s_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFu15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15i_BFu15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFu15s_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15s_BFu15i_BFu15s_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15i_BFu15s_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15i_BFu15s_BFu15s, BFs15s_BFu15i_BFu15s_BFu15s)
//============================================================================


struct  BFs15s_BFu15ll  {
  signed short v1:15;
  __tsu64 v2:15;
};
//SIG(1 BFs15s_BFu15ll) C1{ Fs:15 FL:15}



static void Test_BFs15s_BFu15ll()
{
  {
    init_simple_test("BFs15s_BFu15ll");
    static STRUCT_IF_C BFs15s_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs15s_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15ll, BFs15s_BFu15ll)
//============================================================================


struct  BFs15s_BFu15ll_BFs15i  {
  signed short v1:15;
  __tsu64 v2:15;
  signed int v3:15;
};
//SIG(1 BFs15s_BFu15ll_BFs15i) C1{ Fs:15 FL:15 Fi:15}



static void Test_BFs15s_BFu15ll_BFs15i()
{
  {
    init_simple_test("BFs15s_BFu15ll_BFs15i");
    static STRUCT_IF_C BFs15s_BFu15ll_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15ll_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15ll_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15ll_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15ll_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15ll_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15ll_BFs15i, BFs15s_BFu15ll_BFs15i)
//============================================================================


struct  BFs15s_BFu15ll_BFs15i_BFs15i  {
  signed short v1:15;
  __tsu64 v2:15;
  signed int v3:15;
  signed int v4:15;
};
//SIG(1 BFs15s_BFu15ll_BFs15i_BFs15i) C1{ Fs:15 FL:15 Fi:15 Fi:15}



static void Test_BFs15s_BFu15ll_BFs15i_BFs15i()
{
  {
    init_simple_test("BFs15s_BFu15ll_BFs15i_BFs15i");
    static STRUCT_IF_C BFs15s_BFu15ll_BFs15i_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15ll_BFs15i_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15ll_BFs15i_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15ll_BFs15i_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFs15i_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15ll_BFs15i_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFs15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15ll_BFs15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFs15i_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFu15ll_BFs15i_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFs15i_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15ll_BFs15i_BFs15i, BFs15s_BFu15ll_BFs15i_BFs15i)
//============================================================================


struct  BFs15s_BFu15ll_BFs15i_BFs15ll  {
  signed short v1:15;
  __tsu64 v2:15;
  signed int v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15s_BFu15ll_BFs15i_BFs15ll) C1{ Fs:15 FL:15 Fi:15 FL:15}



static void Test_BFs15s_BFu15ll_BFs15i_BFs15ll()
{
  {
    init_simple_test("BFs15s_BFu15ll_BFs15i_BFs15ll");
    static STRUCT_IF_C BFs15s_BFu15ll_BFs15i_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15ll_BFs15i_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15ll_BFs15i_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15ll_BFs15i_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFs15i_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15ll_BFs15i_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFs15i_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15ll_BFs15i_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFs15i_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFu15ll_BFs15i_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFs15i_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15ll_BFs15i_BFs15ll, BFs15s_BFu15ll_BFs15i_BFs15ll)
//============================================================================


struct  BFs15s_BFu15ll_BFs15i_BFs15s  {
  signed short v1:15;
  __tsu64 v2:15;
  signed int v3:15;
  signed short v4:15;
};
//SIG(1 BFs15s_BFu15ll_BFs15i_BFs15s) C1{ Fs:15 FL:15 Fi:15 Fs:15}



static void Test_BFs15s_BFu15ll_BFs15i_BFs15s()
{
  {
    init_simple_test("BFs15s_BFu15ll_BFs15i_BFs15s");
    static STRUCT_IF_C BFs15s_BFu15ll_BFs15i_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15ll_BFs15i_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15ll_BFs15i_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15ll_BFs15i_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFs15i_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15ll_BFs15i_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFs15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15ll_BFs15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFs15i_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15s_BFu15ll_BFs15i_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFs15i_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15ll_BFs15i_BFs15s, BFs15s_BFu15ll_BFs15i_BFs15s)
//============================================================================


struct  BFs15s_BFu15ll_BFs15i_BFu15i  {
  signed short v1:15;
  __tsu64 v2:15;
  signed int v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15s_BFu15ll_BFs15i_BFu15i) C1{ Fs:15 FL:15 Fi:15 Fi:15}



static void Test_BFs15s_BFu15ll_BFs15i_BFu15i()
{
  {
    init_simple_test("BFs15s_BFu15ll_BFs15i_BFu15i");
    static STRUCT_IF_C BFs15s_BFu15ll_BFs15i_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15ll_BFs15i_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15ll_BFs15i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15ll_BFs15i_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFs15i_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15ll_BFs15i_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFs15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15ll_BFs15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFs15i_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFu15ll_BFs15i_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFs15i_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15ll_BFs15i_BFu15i, BFs15s_BFu15ll_BFs15i_BFu15i)
//============================================================================


struct  BFs15s_BFu15ll_BFs15i_BFu15ll  {
  signed short v1:15;
  __tsu64 v2:15;
  signed int v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15s_BFu15ll_BFs15i_BFu15ll) C1{ Fs:15 FL:15 Fi:15 FL:15}



static void Test_BFs15s_BFu15ll_BFs15i_BFu15ll()
{
  {
    init_simple_test("BFs15s_BFu15ll_BFs15i_BFu15ll");
    static STRUCT_IF_C BFs15s_BFu15ll_BFs15i_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15ll_BFs15i_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15ll_BFs15i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15ll_BFs15i_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFs15i_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15ll_BFs15i_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFs15i_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15ll_BFs15i_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFs15i_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFu15ll_BFs15i_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFs15i_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15ll_BFs15i_BFu15ll, BFs15s_BFu15ll_BFs15i_BFu15ll)
//============================================================================


struct  BFs15s_BFu15ll_BFs15i_BFu15s  {
  signed short v1:15;
  __tsu64 v2:15;
  signed int v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15s_BFu15ll_BFs15i_BFu15s) C1{ Fs:15 FL:15 Fi:15 Fs:15}



static void Test_BFs15s_BFu15ll_BFs15i_BFu15s()
{
  {
    init_simple_test("BFs15s_BFu15ll_BFs15i_BFu15s");
    static STRUCT_IF_C BFs15s_BFu15ll_BFs15i_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15ll_BFs15i_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15ll_BFs15i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15ll_BFs15i_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFs15i_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15ll_BFs15i_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFs15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15ll_BFs15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFs15i_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15s_BFu15ll_BFs15i_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFs15i_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15ll_BFs15i_BFu15s, BFs15s_BFu15ll_BFs15i_BFu15s)
//============================================================================


struct  BFs15s_BFu15ll_BFs15ll  {
  signed short v1:15;
  __tsu64 v2:15;
  signed __tsi64 v3:15;
};
//SIG(1 BFs15s_BFu15ll_BFs15ll) C1{ Fs:15 FL:15 FL:15}



static void Test_BFs15s_BFu15ll_BFs15ll()
{
  {
    init_simple_test("BFs15s_BFu15ll_BFs15ll");
    static STRUCT_IF_C BFs15s_BFu15ll_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15ll_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15ll_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15s_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15ll_BFs15ll, BFs15s_BFu15ll_BFs15ll)
//============================================================================


struct  BFs15s_BFu15ll_BFs15ll_BFs15i  {
  signed short v1:15;
  __tsu64 v2:15;
  signed __tsi64 v3:15;
  signed int v4:15;
};
//SIG(1 BFs15s_BFu15ll_BFs15ll_BFs15i) C1{ Fs:15 FL:15 FL:15 Fi:15}



static void Test_BFs15s_BFu15ll_BFs15ll_BFs15i()
{
  {
    init_simple_test("BFs15s_BFu15ll_BFs15ll_BFs15i");
    static STRUCT_IF_C BFs15s_BFu15ll_BFs15ll_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15ll_BFs15ll_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15ll_BFs15ll_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15ll_BFs15ll_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFs15ll_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15ll_BFs15ll_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFs15ll_BFs15i");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15s_BFu15ll_BFs15ll_BFs15i");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFs15ll_BFs15i");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15s_BFu15ll_BFs15ll_BFs15i");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFs15ll_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15ll_BFs15ll_BFs15i, BFs15s_BFu15ll_BFs15ll_BFs15i)
//============================================================================


struct  BFs15s_BFu15ll_BFs15ll_BFs15ll  {
  signed short v1:15;
  __tsu64 v2:15;
  signed __tsi64 v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15s_BFu15ll_BFs15ll_BFs15ll) C1{ Fs:15 FL:15 FL:15 FL:15}



static void Test_BFs15s_BFu15ll_BFs15ll_BFs15ll()
{
  {
    init_simple_test("BFs15s_BFu15ll_BFs15ll_BFs15ll");
    static STRUCT_IF_C BFs15s_BFu15ll_BFs15ll_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15ll_BFs15ll_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15ll_BFs15ll_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15ll_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15ll_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15s_BFu15ll_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15s_BFu15ll_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFs15ll_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15ll_BFs15ll_BFs15ll, BFs15s_BFu15ll_BFs15ll_BFs15ll)
//============================================================================


struct  BFs15s_BFu15ll_BFs15ll_BFs15s  {
  signed short v1:15;
  __tsu64 v2:15;
  signed __tsi64 v3:15;
  signed short v4:15;
};
//SIG(1 BFs15s_BFu15ll_BFs15ll_BFs15s) C1{ Fs:15 FL:15 FL:15 Fs:15}



static void Test_BFs15s_BFu15ll_BFs15ll_BFs15s()
{
  {
    init_simple_test("BFs15s_BFu15ll_BFs15ll_BFs15s");
    static STRUCT_IF_C BFs15s_BFu15ll_BFs15ll_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15ll_BFs15ll_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15ll_BFs15ll_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15ll_BFs15ll_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFs15ll_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15ll_BFs15ll_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFs15ll_BFs15s");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15s_BFu15ll_BFs15ll_BFs15s");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFs15ll_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15s_BFu15ll_BFs15ll_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFs15ll_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15ll_BFs15ll_BFs15s, BFs15s_BFu15ll_BFs15ll_BFs15s)
//============================================================================


struct  BFs15s_BFu15ll_BFs15ll_BFu15i  {
  signed short v1:15;
  __tsu64 v2:15;
  signed __tsi64 v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15s_BFu15ll_BFs15ll_BFu15i) C1{ Fs:15 FL:15 FL:15 Fi:15}



static void Test_BFs15s_BFu15ll_BFs15ll_BFu15i()
{
  {
    init_simple_test("BFs15s_BFu15ll_BFs15ll_BFu15i");
    static STRUCT_IF_C BFs15s_BFu15ll_BFs15ll_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15ll_BFs15ll_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15ll_BFs15ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15ll_BFs15ll_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFs15ll_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15ll_BFs15ll_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFs15ll_BFu15i");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15s_BFu15ll_BFs15ll_BFu15i");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFs15ll_BFu15i");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15s_BFu15ll_BFs15ll_BFu15i");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFs15ll_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15ll_BFs15ll_BFu15i, BFs15s_BFu15ll_BFs15ll_BFu15i)
//============================================================================


struct  BFs15s_BFu15ll_BFs15ll_BFu15ll  {
  signed short v1:15;
  __tsu64 v2:15;
  signed __tsi64 v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15s_BFu15ll_BFs15ll_BFu15ll) C1{ Fs:15 FL:15 FL:15 FL:15}



static void Test_BFs15s_BFu15ll_BFs15ll_BFu15ll()
{
  {
    init_simple_test("BFs15s_BFu15ll_BFs15ll_BFu15ll");
    static STRUCT_IF_C BFs15s_BFu15ll_BFs15ll_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15ll_BFs15ll_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15ll_BFs15ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15ll_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15ll_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15s_BFu15ll_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15s_BFu15ll_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFs15ll_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15ll_BFs15ll_BFu15ll, BFs15s_BFu15ll_BFs15ll_BFu15ll)
//============================================================================


struct  BFs15s_BFu15ll_BFs15ll_BFu15s  {
  signed short v1:15;
  __tsu64 v2:15;
  signed __tsi64 v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15s_BFu15ll_BFs15ll_BFu15s) C1{ Fs:15 FL:15 FL:15 Fs:15}



static void Test_BFs15s_BFu15ll_BFs15ll_BFu15s()
{
  {
    init_simple_test("BFs15s_BFu15ll_BFs15ll_BFu15s");
    static STRUCT_IF_C BFs15s_BFu15ll_BFs15ll_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15ll_BFs15ll_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15ll_BFs15ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15ll_BFs15ll_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFs15ll_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15ll_BFs15ll_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFs15ll_BFu15s");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15s_BFu15ll_BFs15ll_BFu15s");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFs15ll_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15s_BFu15ll_BFs15ll_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFs15ll_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15ll_BFs15ll_BFu15s, BFs15s_BFu15ll_BFs15ll_BFu15s)
//============================================================================


struct  BFs15s_BFu15ll_BFs15s  {
  signed short v1:15;
  __tsu64 v2:15;
  signed short v3:15;
};
//SIG(1 BFs15s_BFu15ll_BFs15s) C1{ Fs:15 FL:15 Fs:15}



static void Test_BFs15s_BFu15ll_BFs15s()
{
  {
    init_simple_test("BFs15s_BFu15ll_BFs15s");
    static STRUCT_IF_C BFs15s_BFu15ll_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15ll_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15ll_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15ll_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15ll_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15ll_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15ll_BFs15s, BFs15s_BFu15ll_BFs15s)
//============================================================================


struct  BFs15s_BFu15ll_BFs15s_BFs15i  {
  signed short v1:15;
  __tsu64 v2:15;
  signed short v3:15;
  signed int v4:15;
};
//SIG(1 BFs15s_BFu15ll_BFs15s_BFs15i) C1{ Fs:15 FL:15 Fs:15 Fi:15}



static void Test_BFs15s_BFu15ll_BFs15s_BFs15i()
{
  {
    init_simple_test("BFs15s_BFu15ll_BFs15s_BFs15i");
    static STRUCT_IF_C BFs15s_BFu15ll_BFs15s_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15ll_BFs15s_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15ll_BFs15s_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15ll_BFs15s_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFs15s_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15ll_BFs15s_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFs15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15ll_BFs15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFs15s_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFu15ll_BFs15s_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFs15s_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15ll_BFs15s_BFs15i, BFs15s_BFu15ll_BFs15s_BFs15i)
//============================================================================


struct  BFs15s_BFu15ll_BFs15s_BFs15ll  {
  signed short v1:15;
  __tsu64 v2:15;
  signed short v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15s_BFu15ll_BFs15s_BFs15ll) C1{ Fs:15 FL:15 Fs:15 FL:15}



static void Test_BFs15s_BFu15ll_BFs15s_BFs15ll()
{
  {
    init_simple_test("BFs15s_BFu15ll_BFs15s_BFs15ll");
    static STRUCT_IF_C BFs15s_BFu15ll_BFs15s_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15ll_BFs15s_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15ll_BFs15s_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15ll_BFs15s_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFs15s_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15ll_BFs15s_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFs15s_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15ll_BFs15s_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFs15s_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFu15ll_BFs15s_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFs15s_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15ll_BFs15s_BFs15ll, BFs15s_BFu15ll_BFs15s_BFs15ll)
//============================================================================


struct  BFs15s_BFu15ll_BFs15s_BFs15s  {
  signed short v1:15;
  __tsu64 v2:15;
  signed short v3:15;
  signed short v4:15;
};
//SIG(1 BFs15s_BFu15ll_BFs15s_BFs15s) C1{ Fs:15 FL:15 Fs:15 Fs:15}



static void Test_BFs15s_BFu15ll_BFs15s_BFs15s()
{
  {
    init_simple_test("BFs15s_BFu15ll_BFs15s_BFs15s");
    static STRUCT_IF_C BFs15s_BFu15ll_BFs15s_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15ll_BFs15s_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15ll_BFs15s_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15ll_BFs15s_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFs15s_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15ll_BFs15s_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFs15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15ll_BFs15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFs15s_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15s_BFu15ll_BFs15s_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFs15s_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15ll_BFs15s_BFs15s, BFs15s_BFu15ll_BFs15s_BFs15s)
//============================================================================


struct  BFs15s_BFu15ll_BFs15s_BFu15i  {
  signed short v1:15;
  __tsu64 v2:15;
  signed short v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15s_BFu15ll_BFs15s_BFu15i) C1{ Fs:15 FL:15 Fs:15 Fi:15}



static void Test_BFs15s_BFu15ll_BFs15s_BFu15i()
{
  {
    init_simple_test("BFs15s_BFu15ll_BFs15s_BFu15i");
    static STRUCT_IF_C BFs15s_BFu15ll_BFs15s_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15ll_BFs15s_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15ll_BFs15s_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15ll_BFs15s_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFs15s_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15ll_BFs15s_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFs15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15ll_BFs15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFs15s_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFu15ll_BFs15s_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFs15s_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15ll_BFs15s_BFu15i, BFs15s_BFu15ll_BFs15s_BFu15i)
//============================================================================


struct  BFs15s_BFu15ll_BFs15s_BFu15ll  {
  signed short v1:15;
  __tsu64 v2:15;
  signed short v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15s_BFu15ll_BFs15s_BFu15ll) C1{ Fs:15 FL:15 Fs:15 FL:15}



static void Test_BFs15s_BFu15ll_BFs15s_BFu15ll()
{
  {
    init_simple_test("BFs15s_BFu15ll_BFs15s_BFu15ll");
    static STRUCT_IF_C BFs15s_BFu15ll_BFs15s_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15ll_BFs15s_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15ll_BFs15s_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15ll_BFs15s_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFs15s_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15ll_BFs15s_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFs15s_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15ll_BFs15s_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFs15s_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFu15ll_BFs15s_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFs15s_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15ll_BFs15s_BFu15ll, BFs15s_BFu15ll_BFs15s_BFu15ll)
//============================================================================


struct  BFs15s_BFu15ll_BFs15s_BFu15s  {
  signed short v1:15;
  __tsu64 v2:15;
  signed short v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15s_BFu15ll_BFs15s_BFu15s) C1{ Fs:15 FL:15 Fs:15 Fs:15}



static void Test_BFs15s_BFu15ll_BFs15s_BFu15s()
{
  {
    init_simple_test("BFs15s_BFu15ll_BFs15s_BFu15s");
    static STRUCT_IF_C BFs15s_BFu15ll_BFs15s_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15ll_BFs15s_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15ll_BFs15s_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15ll_BFs15s_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFs15s_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15ll_BFs15s_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFs15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15ll_BFs15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFs15s_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15s_BFu15ll_BFs15s_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFs15s_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15ll_BFs15s_BFu15s, BFs15s_BFu15ll_BFs15s_BFu15s)
//============================================================================


struct  BFs15s_BFu15ll_BFu15i  {
  signed short v1:15;
  __tsu64 v2:15;
  unsigned int v3:15;
};
//SIG(1 BFs15s_BFu15ll_BFu15i) C1{ Fs:15 FL:15 Fi:15}



static void Test_BFs15s_BFu15ll_BFu15i()
{
  {
    init_simple_test("BFs15s_BFu15ll_BFu15i");
    static STRUCT_IF_C BFs15s_BFu15ll_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15ll_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15ll_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15ll_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15ll_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15ll_BFu15i, BFs15s_BFu15ll_BFu15i)
//============================================================================


struct  BFs15s_BFu15ll_BFu15i_BFs15i  {
  signed short v1:15;
  __tsu64 v2:15;
  unsigned int v3:15;
  signed int v4:15;
};
//SIG(1 BFs15s_BFu15ll_BFu15i_BFs15i) C1{ Fs:15 FL:15 Fi:15 Fi:15}



static void Test_BFs15s_BFu15ll_BFu15i_BFs15i()
{
  {
    init_simple_test("BFs15s_BFu15ll_BFu15i_BFs15i");
    static STRUCT_IF_C BFs15s_BFu15ll_BFu15i_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15ll_BFu15i_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15ll_BFu15i_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15ll_BFu15i_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFu15i_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15ll_BFu15i_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFu15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15ll_BFu15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFu15i_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFu15ll_BFu15i_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFu15i_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15ll_BFu15i_BFs15i, BFs15s_BFu15ll_BFu15i_BFs15i)
//============================================================================


struct  BFs15s_BFu15ll_BFu15i_BFs15ll  {
  signed short v1:15;
  __tsu64 v2:15;
  unsigned int v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15s_BFu15ll_BFu15i_BFs15ll) C1{ Fs:15 FL:15 Fi:15 FL:15}



static void Test_BFs15s_BFu15ll_BFu15i_BFs15ll()
{
  {
    init_simple_test("BFs15s_BFu15ll_BFu15i_BFs15ll");
    static STRUCT_IF_C BFs15s_BFu15ll_BFu15i_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15ll_BFu15i_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15ll_BFu15i_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15ll_BFu15i_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFu15i_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15ll_BFu15i_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFu15i_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15ll_BFu15i_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFu15i_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFu15ll_BFu15i_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFu15i_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15ll_BFu15i_BFs15ll, BFs15s_BFu15ll_BFu15i_BFs15ll)
//============================================================================


struct  BFs15s_BFu15ll_BFu15i_BFs15s  {
  signed short v1:15;
  __tsu64 v2:15;
  unsigned int v3:15;
  signed short v4:15;
};
//SIG(1 BFs15s_BFu15ll_BFu15i_BFs15s) C1{ Fs:15 FL:15 Fi:15 Fs:15}



static void Test_BFs15s_BFu15ll_BFu15i_BFs15s()
{
  {
    init_simple_test("BFs15s_BFu15ll_BFu15i_BFs15s");
    static STRUCT_IF_C BFs15s_BFu15ll_BFu15i_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15ll_BFu15i_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15ll_BFu15i_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15ll_BFu15i_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFu15i_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15ll_BFu15i_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFu15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15ll_BFu15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFu15i_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15s_BFu15ll_BFu15i_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFu15i_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15ll_BFu15i_BFs15s, BFs15s_BFu15ll_BFu15i_BFs15s)
//============================================================================


struct  BFs15s_BFu15ll_BFu15i_BFu15i  {
  signed short v1:15;
  __tsu64 v2:15;
  unsigned int v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15s_BFu15ll_BFu15i_BFu15i) C1{ Fs:15 FL:15 Fi:15 Fi:15}



static void Test_BFs15s_BFu15ll_BFu15i_BFu15i()
{
  {
    init_simple_test("BFs15s_BFu15ll_BFu15i_BFu15i");
    static STRUCT_IF_C BFs15s_BFu15ll_BFu15i_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15ll_BFu15i_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15ll_BFu15i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15ll_BFu15i_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFu15i_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15ll_BFu15i_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFu15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15ll_BFu15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFu15i_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFu15ll_BFu15i_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFu15i_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15ll_BFu15i_BFu15i, BFs15s_BFu15ll_BFu15i_BFu15i)
//============================================================================


struct  BFs15s_BFu15ll_BFu15i_BFu15ll  {
  signed short v1:15;
  __tsu64 v2:15;
  unsigned int v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15s_BFu15ll_BFu15i_BFu15ll) C1{ Fs:15 FL:15 Fi:15 FL:15}



static void Test_BFs15s_BFu15ll_BFu15i_BFu15ll()
{
  {
    init_simple_test("BFs15s_BFu15ll_BFu15i_BFu15ll");
    static STRUCT_IF_C BFs15s_BFu15ll_BFu15i_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15ll_BFu15i_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15ll_BFu15i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15ll_BFu15i_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFu15i_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15ll_BFu15i_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFu15i_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15ll_BFu15i_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFu15i_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFu15ll_BFu15i_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFu15i_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15ll_BFu15i_BFu15ll, BFs15s_BFu15ll_BFu15i_BFu15ll)
//============================================================================


struct  BFs15s_BFu15ll_BFu15i_BFu15s  {
  signed short v1:15;
  __tsu64 v2:15;
  unsigned int v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15s_BFu15ll_BFu15i_BFu15s) C1{ Fs:15 FL:15 Fi:15 Fs:15}



static void Test_BFs15s_BFu15ll_BFu15i_BFu15s()
{
  {
    init_simple_test("BFs15s_BFu15ll_BFu15i_BFu15s");
    static STRUCT_IF_C BFs15s_BFu15ll_BFu15i_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15ll_BFu15i_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15ll_BFu15i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15ll_BFu15i_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFu15i_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15ll_BFu15i_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFu15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15ll_BFu15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFu15i_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15s_BFu15ll_BFu15i_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFu15i_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15ll_BFu15i_BFu15s, BFs15s_BFu15ll_BFu15i_BFu15s)
//============================================================================


struct  BFs15s_BFu15ll_BFu15ll  {
  signed short v1:15;
  __tsu64 v2:15;
  __tsu64 v3:15;
};
//SIG(1 BFs15s_BFu15ll_BFu15ll) C1{ Fs:15 FL:15 FL:15}



static void Test_BFs15s_BFu15ll_BFu15ll()
{
  {
    init_simple_test("BFs15s_BFu15ll_BFu15ll");
    static STRUCT_IF_C BFs15s_BFu15ll_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15ll_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15s_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15ll_BFu15ll, BFs15s_BFu15ll_BFu15ll)
//============================================================================


struct  BFs15s_BFu15ll_BFu15ll_BFs15i  {
  signed short v1:15;
  __tsu64 v2:15;
  __tsu64 v3:15;
  signed int v4:15;
};
//SIG(1 BFs15s_BFu15ll_BFu15ll_BFs15i) C1{ Fs:15 FL:15 FL:15 Fi:15}



static void Test_BFs15s_BFu15ll_BFu15ll_BFs15i()
{
  {
    init_simple_test("BFs15s_BFu15ll_BFu15ll_BFs15i");
    static STRUCT_IF_C BFs15s_BFu15ll_BFu15ll_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15ll_BFu15ll_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15ll_BFu15ll_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15ll_BFu15ll_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFu15ll_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15ll_BFu15ll_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFu15ll_BFs15i");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15s_BFu15ll_BFu15ll_BFs15i");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFu15ll_BFs15i");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15s_BFu15ll_BFu15ll_BFs15i");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFu15ll_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15ll_BFu15ll_BFs15i, BFs15s_BFu15ll_BFu15ll_BFs15i)
//============================================================================


struct  BFs15s_BFu15ll_BFu15ll_BFs15ll  {
  signed short v1:15;
  __tsu64 v2:15;
  __tsu64 v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15s_BFu15ll_BFu15ll_BFs15ll) C1{ Fs:15 FL:15 FL:15 FL:15}



static void Test_BFs15s_BFu15ll_BFu15ll_BFs15ll()
{
  {
    init_simple_test("BFs15s_BFu15ll_BFu15ll_BFs15ll");
    static STRUCT_IF_C BFs15s_BFu15ll_BFu15ll_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15ll_BFu15ll_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15ll_BFu15ll_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15ll_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15ll_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15s_BFu15ll_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15s_BFu15ll_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFu15ll_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15ll_BFu15ll_BFs15ll, BFs15s_BFu15ll_BFu15ll_BFs15ll)
//============================================================================


struct  BFs15s_BFu15ll_BFu15ll_BFs15s  {
  signed short v1:15;
  __tsu64 v2:15;
  __tsu64 v3:15;
  signed short v4:15;
};
//SIG(1 BFs15s_BFu15ll_BFu15ll_BFs15s) C1{ Fs:15 FL:15 FL:15 Fs:15}



static void Test_BFs15s_BFu15ll_BFu15ll_BFs15s()
{
  {
    init_simple_test("BFs15s_BFu15ll_BFu15ll_BFs15s");
    static STRUCT_IF_C BFs15s_BFu15ll_BFu15ll_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15ll_BFu15ll_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15ll_BFu15ll_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15ll_BFu15ll_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFu15ll_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15ll_BFu15ll_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFu15ll_BFs15s");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15s_BFu15ll_BFu15ll_BFs15s");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFu15ll_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15s_BFu15ll_BFu15ll_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFu15ll_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15ll_BFu15ll_BFs15s, BFs15s_BFu15ll_BFu15ll_BFs15s)
//============================================================================


struct  BFs15s_BFu15ll_BFu15ll_BFu15i  {
  signed short v1:15;
  __tsu64 v2:15;
  __tsu64 v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15s_BFu15ll_BFu15ll_BFu15i) C1{ Fs:15 FL:15 FL:15 Fi:15}



static void Test_BFs15s_BFu15ll_BFu15ll_BFu15i()
{
  {
    init_simple_test("BFs15s_BFu15ll_BFu15ll_BFu15i");
    static STRUCT_IF_C BFs15s_BFu15ll_BFu15ll_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15ll_BFu15ll_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15ll_BFu15ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15ll_BFu15ll_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFu15ll_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15ll_BFu15ll_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFu15ll_BFu15i");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15s_BFu15ll_BFu15ll_BFu15i");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFu15ll_BFu15i");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15s_BFu15ll_BFu15ll_BFu15i");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFu15ll_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15ll_BFu15ll_BFu15i, BFs15s_BFu15ll_BFu15ll_BFu15i)
//============================================================================


struct  BFs15s_BFu15ll_BFu15ll_BFu15ll  {
  signed short v1:15;
  __tsu64 v2:15;
  __tsu64 v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15s_BFu15ll_BFu15ll_BFu15ll) C1{ Fs:15 FL:15 FL:15 FL:15}



static void Test_BFs15s_BFu15ll_BFu15ll_BFu15ll()
{
  {
    init_simple_test("BFs15s_BFu15ll_BFu15ll_BFu15ll");
    static STRUCT_IF_C BFs15s_BFu15ll_BFu15ll_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15ll_BFu15ll_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15ll_BFu15ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15ll_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15ll_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15s_BFu15ll_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, 1, "BFs15s_BFu15ll_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v4, 5, 5, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFu15ll_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15ll_BFu15ll_BFu15ll, BFs15s_BFu15ll_BFu15ll_BFu15ll)
//============================================================================


struct  BFs15s_BFu15ll_BFu15ll_BFu15s  {
  signed short v1:15;
  __tsu64 v2:15;
  __tsu64 v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15s_BFu15ll_BFu15ll_BFu15s) C1{ Fs:15 FL:15 FL:15 Fs:15}



static void Test_BFs15s_BFu15ll_BFu15ll_BFu15s()
{
  {
    init_simple_test("BFs15s_BFu15ll_BFu15ll_BFu15s");
    static STRUCT_IF_C BFs15s_BFu15ll_BFu15ll_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15ll_BFu15ll_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15ll_BFu15ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15ll_BFu15ll_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFu15ll_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15ll_BFu15ll_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFu15ll_BFu15s");
    set_bf_and_test(lv, v3, 3, 6, 15, 1, "BFs15s_BFu15ll_BFu15ll_BFu15s");
    set_bf_and_test(lv, v3, 3, 6, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFu15ll_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15s_BFu15ll_BFu15ll_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFu15ll_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15ll_BFu15ll_BFu15s, BFs15s_BFu15ll_BFu15ll_BFu15s)
//============================================================================


struct  BFs15s_BFu15ll_BFu15s  {
  signed short v1:15;
  __tsu64 v2:15;
  unsigned short v3:15;
};
//SIG(1 BFs15s_BFu15ll_BFu15s) C1{ Fs:15 FL:15 Fs:15}



static void Test_BFs15s_BFu15ll_BFu15s()
{
  {
    init_simple_test("BFs15s_BFu15ll_BFu15s");
    static STRUCT_IF_C BFs15s_BFu15ll_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15ll_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15ll_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15ll_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15ll_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15ll_BFu15s, BFs15s_BFu15ll_BFu15s)
//============================================================================


struct  BFs15s_BFu15ll_BFu15s_BFs15i  {
  signed short v1:15;
  __tsu64 v2:15;
  unsigned short v3:15;
  signed int v4:15;
};
//SIG(1 BFs15s_BFu15ll_BFu15s_BFs15i) C1{ Fs:15 FL:15 Fs:15 Fi:15}



static void Test_BFs15s_BFu15ll_BFu15s_BFs15i()
{
  {
    init_simple_test("BFs15s_BFu15ll_BFu15s_BFs15i");
    static STRUCT_IF_C BFs15s_BFu15ll_BFu15s_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15ll_BFu15s_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15ll_BFu15s_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15ll_BFu15s_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFu15s_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15ll_BFu15s_BFs15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFu15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15ll_BFu15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFu15s_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFu15ll_BFu15s_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFu15s_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15ll_BFu15s_BFs15i, BFs15s_BFu15ll_BFu15s_BFs15i)
//============================================================================


struct  BFs15s_BFu15ll_BFu15s_BFs15ll  {
  signed short v1:15;
  __tsu64 v2:15;
  unsigned short v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15s_BFu15ll_BFu15s_BFs15ll) C1{ Fs:15 FL:15 Fs:15 FL:15}



static void Test_BFs15s_BFu15ll_BFu15s_BFs15ll()
{
  {
    init_simple_test("BFs15s_BFu15ll_BFu15s_BFs15ll");
    static STRUCT_IF_C BFs15s_BFu15ll_BFu15s_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15ll_BFu15s_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15ll_BFu15s_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15ll_BFu15s_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFu15s_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15ll_BFu15s_BFs15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFu15s_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15ll_BFu15s_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFu15s_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFu15ll_BFu15s_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFu15s_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15ll_BFu15s_BFs15ll, BFs15s_BFu15ll_BFu15s_BFs15ll)
//============================================================================


struct  BFs15s_BFu15ll_BFu15s_BFs15s  {
  signed short v1:15;
  __tsu64 v2:15;
  unsigned short v3:15;
  signed short v4:15;
};
//SIG(1 BFs15s_BFu15ll_BFu15s_BFs15s) C1{ Fs:15 FL:15 Fs:15 Fs:15}



static void Test_BFs15s_BFu15ll_BFu15s_BFs15s()
{
  {
    init_simple_test("BFs15s_BFu15ll_BFu15s_BFs15s");
    static STRUCT_IF_C BFs15s_BFu15ll_BFu15s_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15ll_BFu15s_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15ll_BFu15s_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15ll_BFu15s_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFu15s_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15ll_BFu15s_BFs15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFu15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15ll_BFu15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFu15s_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15s_BFu15ll_BFu15s_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFu15s_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15ll_BFu15s_BFs15s, BFs15s_BFu15ll_BFu15s_BFs15s)
//============================================================================


struct  BFs15s_BFu15ll_BFu15s_BFu15i  {
  signed short v1:15;
  __tsu64 v2:15;
  unsigned short v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15s_BFu15ll_BFu15s_BFu15i) C1{ Fs:15 FL:15 Fs:15 Fi:15}



static void Test_BFs15s_BFu15ll_BFu15s_BFu15i()
{
  {
    init_simple_test("BFs15s_BFu15ll_BFu15s_BFu15i");
    static STRUCT_IF_C BFs15s_BFu15ll_BFu15s_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15ll_BFu15s_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15ll_BFu15s_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15ll_BFu15s_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFu15s_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15ll_BFu15s_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFu15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15ll_BFu15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFu15s_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFu15ll_BFu15s_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFu15s_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15ll_BFu15s_BFu15i, BFs15s_BFu15ll_BFu15s_BFu15i)
//============================================================================


struct  BFs15s_BFu15ll_BFu15s_BFu15ll  {
  signed short v1:15;
  __tsu64 v2:15;
  unsigned short v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15s_BFu15ll_BFu15s_BFu15ll) C1{ Fs:15 FL:15 Fs:15 FL:15}



static void Test_BFs15s_BFu15ll_BFu15s_BFu15ll()
{
  {
    init_simple_test("BFs15s_BFu15ll_BFu15s_BFu15ll");
    static STRUCT_IF_C BFs15s_BFu15ll_BFu15s_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15ll_BFu15s_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15ll_BFu15s_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15ll_BFu15s_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFu15s_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15ll_BFu15s_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFu15s_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15ll_BFu15s_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFu15s_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFu15ll_BFu15s_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFu15s_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15ll_BFu15s_BFu15ll, BFs15s_BFu15ll_BFu15s_BFu15ll)
//============================================================================


struct  BFs15s_BFu15ll_BFu15s_BFu15s  {
  signed short v1:15;
  __tsu64 v2:15;
  unsigned short v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15s_BFu15ll_BFu15s_BFu15s) C1{ Fs:15 FL:15 Fs:15 Fs:15}



static void Test_BFs15s_BFu15ll_BFu15s_BFu15s()
{
  {
    init_simple_test("BFs15s_BFu15ll_BFu15s_BFu15s");
    static STRUCT_IF_C BFs15s_BFu15ll_BFu15s_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15ll_BFu15s_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15ll_BFu15s_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15ll_BFu15s_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15ll_BFu15s_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFs15s_BFu15ll_BFu15s_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFu15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15ll_BFu15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFu15s_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15s_BFu15ll_BFu15s_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15ll_BFu15s_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15ll_BFu15s_BFu15s, BFs15s_BFu15ll_BFu15s_BFu15s)
//============================================================================


struct  BFs15s_BFu15s  {
  signed short v1:15;
  unsigned short v2:15;
};
//SIG(1 BFs15s_BFu15s) C1{ Fs:15 Fs:15}



static void Test_BFs15s_BFu15s()
{
  {
    init_simple_test("BFs15s_BFu15s");
    static STRUCT_IF_C BFs15s_BFu15s lv;
    check2(sizeof(lv), 4, "sizeof(BFs15s_BFu15s)");
    check2(__alignof__(lv), 2, "__alignof__(BFs15s_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15s, BFs15s_BFu15s)
//============================================================================


struct  BFs15s_BFu15s_BFs15i  {
  signed short v1:15;
  unsigned short v2:15;
  signed int v3:15;
};
//SIG(1 BFs15s_BFu15s_BFs15i) C1{ Fs:15 Fs:15 Fi:15}



static void Test_BFs15s_BFu15s_BFs15i()
{
  {
    init_simple_test("BFs15s_BFu15s_BFs15i");
    static STRUCT_IF_C BFs15s_BFu15s_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15s_BFs15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15s_BFu15s_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15s_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFu15s_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15s_BFs15i, BFs15s_BFu15s_BFs15i)
//============================================================================


struct  BFs15s_BFu15s_BFs15i_BFs15i  {
  signed short v1:15;
  unsigned short v2:15;
  signed int v3:15;
  signed int v4:15;
};
//SIG(1 BFs15s_BFu15s_BFs15i_BFs15i) C1{ Fs:15 Fs:15 Fi:15 Fi:15}



static void Test_BFs15s_BFu15s_BFs15i_BFs15i()
{
  {
    init_simple_test("BFs15s_BFu15s_BFs15i_BFs15i");
    static STRUCT_IF_C BFs15s_BFu15s_BFs15i_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15s_BFs15i_BFs15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15s_BFu15s_BFs15i_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15s_BFs15i_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFs15i_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFu15s_BFs15i_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFs15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15s_BFs15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFs15i_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFu15s_BFs15i_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFs15i_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15s_BFs15i_BFs15i, BFs15s_BFu15s_BFs15i_BFs15i)
//============================================================================


struct  BFs15s_BFu15s_BFs15i_BFs15ll  {
  signed short v1:15;
  unsigned short v2:15;
  signed int v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15s_BFu15s_BFs15i_BFs15ll) C1{ Fs:15 Fs:15 Fi:15 FL:15}



static void Test_BFs15s_BFu15s_BFs15i_BFs15ll()
{
  {
    init_simple_test("BFs15s_BFu15s_BFs15i_BFs15ll");
    static STRUCT_IF_C BFs15s_BFu15s_BFs15i_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15s_BFs15i_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15s_BFs15i_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15s_BFs15i_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFs15i_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFu15s_BFs15i_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFs15i_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15s_BFs15i_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFs15i_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFu15s_BFs15i_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFs15i_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15s_BFs15i_BFs15ll, BFs15s_BFu15s_BFs15i_BFs15ll)
//============================================================================


struct  BFs15s_BFu15s_BFs15i_BFs15s  {
  signed short v1:15;
  unsigned short v2:15;
  signed int v3:15;
  signed short v4:15;
};
//SIG(1 BFs15s_BFu15s_BFs15i_BFs15s) C1{ Fs:15 Fs:15 Fi:15 Fs:15}



static void Test_BFs15s_BFu15s_BFs15i_BFs15s()
{
  {
    init_simple_test("BFs15s_BFu15s_BFs15i_BFs15s");
    static STRUCT_IF_C BFs15s_BFu15s_BFs15i_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15s_BFs15i_BFs15s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15s_BFu15s_BFs15i_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15s_BFs15i_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFs15i_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFu15s_BFs15i_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFs15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15s_BFs15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFs15i_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15s_BFu15s_BFs15i_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFs15i_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15s_BFs15i_BFs15s, BFs15s_BFu15s_BFs15i_BFs15s)
//============================================================================


struct  BFs15s_BFu15s_BFs15i_BFu15i  {
  signed short v1:15;
  unsigned short v2:15;
  signed int v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15s_BFu15s_BFs15i_BFu15i) C1{ Fs:15 Fs:15 Fi:15 Fi:15}



static void Test_BFs15s_BFu15s_BFs15i_BFu15i()
{
  {
    init_simple_test("BFs15s_BFu15s_BFs15i_BFu15i");
    static STRUCT_IF_C BFs15s_BFu15s_BFs15i_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15s_BFs15i_BFu15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15s_BFu15s_BFs15i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15s_BFs15i_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFs15i_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFu15s_BFs15i_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFs15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15s_BFs15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFs15i_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFu15s_BFs15i_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFs15i_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15s_BFs15i_BFu15i, BFs15s_BFu15s_BFs15i_BFu15i)
//============================================================================


struct  BFs15s_BFu15s_BFs15i_BFu15ll  {
  signed short v1:15;
  unsigned short v2:15;
  signed int v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15s_BFu15s_BFs15i_BFu15ll) C1{ Fs:15 Fs:15 Fi:15 FL:15}



static void Test_BFs15s_BFu15s_BFs15i_BFu15ll()
{
  {
    init_simple_test("BFs15s_BFu15s_BFs15i_BFu15ll");
    static STRUCT_IF_C BFs15s_BFu15s_BFs15i_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15s_BFs15i_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15s_BFs15i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15s_BFs15i_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFs15i_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFu15s_BFs15i_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFs15i_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15s_BFs15i_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFs15i_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFu15s_BFs15i_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFs15i_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15s_BFs15i_BFu15ll, BFs15s_BFu15s_BFs15i_BFu15ll)
//============================================================================


struct  BFs15s_BFu15s_BFs15i_BFu15s  {
  signed short v1:15;
  unsigned short v2:15;
  signed int v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15s_BFu15s_BFs15i_BFu15s) C1{ Fs:15 Fs:15 Fi:15 Fs:15}



static void Test_BFs15s_BFu15s_BFs15i_BFu15s()
{
  {
    init_simple_test("BFs15s_BFu15s_BFs15i_BFu15s");
    static STRUCT_IF_C BFs15s_BFu15s_BFs15i_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15s_BFs15i_BFu15s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15s_BFu15s_BFs15i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15s_BFs15i_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFs15i_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFu15s_BFs15i_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFs15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15s_BFs15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFs15i_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15s_BFu15s_BFs15i_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFs15i_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15s_BFs15i_BFu15s, BFs15s_BFu15s_BFs15i_BFu15s)
//============================================================================


struct  BFs15s_BFu15s_BFs15ll  {
  signed short v1:15;
  unsigned short v2:15;
  signed __tsi64 v3:15;
};
//SIG(1 BFs15s_BFu15s_BFs15ll) C1{ Fs:15 Fs:15 FL:15}



static void Test_BFs15s_BFu15s_BFs15ll()
{
  {
    init_simple_test("BFs15s_BFu15s_BFs15ll");
    static STRUCT_IF_C BFs15s_BFu15s_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15s_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15s_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15s_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFu15s_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFs15ll");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15s_BFu15s_BFs15ll");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15s_BFs15ll, BFs15s_BFu15s_BFs15ll)
//============================================================================


struct  BFs15s_BFu15s_BFs15ll_BFs15i  {
  signed short v1:15;
  unsigned short v2:15;
  signed __tsi64 v3:15;
  signed int v4:15;
};
//SIG(1 BFs15s_BFu15s_BFs15ll_BFs15i) C1{ Fs:15 Fs:15 FL:15 Fi:15}



static void Test_BFs15s_BFu15s_BFs15ll_BFs15i()
{
  {
    init_simple_test("BFs15s_BFu15s_BFs15ll_BFs15i");
    static STRUCT_IF_C BFs15s_BFu15s_BFs15ll_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15s_BFs15ll_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15s_BFs15ll_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15s_BFs15ll_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFs15ll_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFu15s_BFs15ll_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFs15ll_BFs15i");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15s_BFu15s_BFs15ll_BFs15i");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFs15ll_BFs15i");
    set_bf_and_test(lv, v4, 5, 6, 15, 1, "BFs15s_BFu15s_BFs15ll_BFs15i");
    set_bf_and_test(lv, v4, 5, 6, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFs15ll_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15s_BFs15ll_BFs15i, BFs15s_BFu15s_BFs15ll_BFs15i)
//============================================================================


struct  BFs15s_BFu15s_BFs15ll_BFs15ll  {
  signed short v1:15;
  unsigned short v2:15;
  signed __tsi64 v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15s_BFu15s_BFs15ll_BFs15ll) C1{ Fs:15 Fs:15 FL:15 FL:15}



static void Test_BFs15s_BFu15s_BFs15ll_BFs15ll()
{
  {
    init_simple_test("BFs15s_BFu15s_BFs15ll_BFs15ll");
    static STRUCT_IF_C BFs15s_BFu15s_BFs15ll_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15s_BFs15ll_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15s_BFs15ll_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15s_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFu15s_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15s_BFu15s_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v4, 5, 6, 15, 1, "BFs15s_BFu15s_BFs15ll_BFs15ll");
    set_bf_and_test(lv, v4, 5, 6, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFs15ll_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15s_BFs15ll_BFs15ll, BFs15s_BFu15s_BFs15ll_BFs15ll)
//============================================================================


struct  BFs15s_BFu15s_BFs15ll_BFs15s  {
  signed short v1:15;
  unsigned short v2:15;
  signed __tsi64 v3:15;
  signed short v4:15;
};
//SIG(1 BFs15s_BFu15s_BFs15ll_BFs15s) C1{ Fs:15 Fs:15 FL:15 Fs:15}



static void Test_BFs15s_BFu15s_BFs15ll_BFs15s()
{
  {
    init_simple_test("BFs15s_BFu15s_BFs15ll_BFs15s");
    static STRUCT_IF_C BFs15s_BFu15s_BFs15ll_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15s_BFs15ll_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15s_BFs15ll_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15s_BFs15ll_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFs15ll_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFu15s_BFs15ll_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFs15ll_BFs15s");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15s_BFu15s_BFs15ll_BFs15s");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFs15ll_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15s_BFu15s_BFs15ll_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFs15ll_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15s_BFs15ll_BFs15s, BFs15s_BFu15s_BFs15ll_BFs15s)
//============================================================================


struct  BFs15s_BFu15s_BFs15ll_BFu15i  {
  signed short v1:15;
  unsigned short v2:15;
  signed __tsi64 v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15s_BFu15s_BFs15ll_BFu15i) C1{ Fs:15 Fs:15 FL:15 Fi:15}



static void Test_BFs15s_BFu15s_BFs15ll_BFu15i()
{
  {
    init_simple_test("BFs15s_BFu15s_BFs15ll_BFu15i");
    static STRUCT_IF_C BFs15s_BFu15s_BFs15ll_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15s_BFs15ll_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15s_BFs15ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15s_BFs15ll_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFs15ll_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFu15s_BFs15ll_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFs15ll_BFu15i");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15s_BFu15s_BFs15ll_BFu15i");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFs15ll_BFu15i");
    set_bf_and_test(lv, v4, 5, 6, 15, 1, "BFs15s_BFu15s_BFs15ll_BFu15i");
    set_bf_and_test(lv, v4, 5, 6, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFs15ll_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15s_BFs15ll_BFu15i, BFs15s_BFu15s_BFs15ll_BFu15i)
//============================================================================


struct  BFs15s_BFu15s_BFs15ll_BFu15ll  {
  signed short v1:15;
  unsigned short v2:15;
  signed __tsi64 v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15s_BFu15s_BFs15ll_BFu15ll) C1{ Fs:15 Fs:15 FL:15 FL:15}



static void Test_BFs15s_BFu15s_BFs15ll_BFu15ll()
{
  {
    init_simple_test("BFs15s_BFu15s_BFs15ll_BFu15ll");
    static STRUCT_IF_C BFs15s_BFu15s_BFs15ll_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15s_BFs15ll_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15s_BFs15ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15s_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFu15s_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15s_BFu15s_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v4, 5, 6, 15, 1, "BFs15s_BFu15s_BFs15ll_BFu15ll");
    set_bf_and_test(lv, v4, 5, 6, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFs15ll_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15s_BFs15ll_BFu15ll, BFs15s_BFu15s_BFs15ll_BFu15ll)
//============================================================================


struct  BFs15s_BFu15s_BFs15ll_BFu15s  {
  signed short v1:15;
  unsigned short v2:15;
  signed __tsi64 v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15s_BFu15s_BFs15ll_BFu15s) C1{ Fs:15 Fs:15 FL:15 Fs:15}



static void Test_BFs15s_BFu15s_BFs15ll_BFu15s()
{
  {
    init_simple_test("BFs15s_BFu15s_BFs15ll_BFu15s");
    static STRUCT_IF_C BFs15s_BFu15s_BFs15ll_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15s_BFs15ll_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15s_BFs15ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15s_BFs15ll_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFs15ll_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFu15s_BFs15ll_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFs15ll_BFu15s");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15s_BFu15s_BFs15ll_BFu15s");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFs15ll_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15s_BFu15s_BFs15ll_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFs15ll_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15s_BFs15ll_BFu15s, BFs15s_BFu15s_BFs15ll_BFu15s)
//============================================================================


struct  BFs15s_BFu15s_BFs15s  {
  signed short v1:15;
  unsigned short v2:15;
  signed short v3:15;
};
//SIG(1 BFs15s_BFu15s_BFs15s) C1{ Fs:15 Fs:15 Fs:15}



static void Test_BFs15s_BFu15s_BFs15s()
{
  {
    init_simple_test("BFs15s_BFu15s_BFs15s");
    static STRUCT_IF_C BFs15s_BFu15s_BFs15s lv;
    check2(sizeof(lv), 6, "sizeof(BFs15s_BFu15s_BFs15s)");
    check2(__alignof__(lv), 2, "__alignof__(BFs15s_BFu15s_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15s_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFu15s_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15s_BFs15s, BFs15s_BFu15s_BFs15s)
//============================================================================


struct  BFs15s_BFu15s_BFs15s_BFs15i  {
  signed short v1:15;
  unsigned short v2:15;
  signed short v3:15;
  signed int v4:15;
};
//SIG(1 BFs15s_BFu15s_BFs15s_BFs15i) C1{ Fs:15 Fs:15 Fs:15 Fi:15}



static void Test_BFs15s_BFu15s_BFs15s_BFs15i()
{
  {
    init_simple_test("BFs15s_BFu15s_BFs15s_BFs15i");
    static STRUCT_IF_C BFs15s_BFu15s_BFs15s_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15s_BFs15s_BFs15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15s_BFu15s_BFs15s_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15s_BFs15s_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFs15s_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFu15s_BFs15s_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFs15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15s_BFs15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFs15s_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFu15s_BFs15s_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFs15s_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15s_BFs15s_BFs15i, BFs15s_BFu15s_BFs15s_BFs15i)
//============================================================================


struct  BFs15s_BFu15s_BFs15s_BFs15ll  {
  signed short v1:15;
  unsigned short v2:15;
  signed short v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15s_BFu15s_BFs15s_BFs15ll) C1{ Fs:15 Fs:15 Fs:15 FL:15}



static void Test_BFs15s_BFu15s_BFs15s_BFs15ll()
{
  {
    init_simple_test("BFs15s_BFu15s_BFs15s_BFs15ll");
    static STRUCT_IF_C BFs15s_BFu15s_BFs15s_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15s_BFs15s_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15s_BFs15s_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15s_BFs15s_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFs15s_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFu15s_BFs15s_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFs15s_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15s_BFs15s_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFs15s_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFu15s_BFs15s_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFs15s_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15s_BFs15s_BFs15ll, BFs15s_BFu15s_BFs15s_BFs15ll)
//============================================================================


struct  BFs15s_BFu15s_BFs15s_BFs15s  {
  signed short v1:15;
  unsigned short v2:15;
  signed short v3:15;
  signed short v4:15;
};
//SIG(1 BFs15s_BFu15s_BFs15s_BFs15s) C1{ Fs:15 Fs:15 Fs:15 Fs:15}



static void Test_BFs15s_BFu15s_BFs15s_BFs15s()
{
  {
    init_simple_test("BFs15s_BFu15s_BFs15s_BFs15s");
    static STRUCT_IF_C BFs15s_BFu15s_BFs15s_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15s_BFs15s_BFs15s)");
    check2(__alignof__(lv), 2, "__alignof__(BFs15s_BFu15s_BFs15s_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15s_BFs15s_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFs15s_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFu15s_BFs15s_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFs15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15s_BFs15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFs15s_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15s_BFu15s_BFs15s_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFs15s_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15s_BFs15s_BFs15s, BFs15s_BFu15s_BFs15s_BFs15s)
//============================================================================


struct  BFs15s_BFu15s_BFs15s_BFu15i  {
  signed short v1:15;
  unsigned short v2:15;
  signed short v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15s_BFu15s_BFs15s_BFu15i) C1{ Fs:15 Fs:15 Fs:15 Fi:15}



static void Test_BFs15s_BFu15s_BFs15s_BFu15i()
{
  {
    init_simple_test("BFs15s_BFu15s_BFs15s_BFu15i");
    static STRUCT_IF_C BFs15s_BFu15s_BFs15s_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15s_BFs15s_BFu15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15s_BFu15s_BFs15s_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15s_BFs15s_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFs15s_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFu15s_BFs15s_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFs15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15s_BFs15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFs15s_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFu15s_BFs15s_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFs15s_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15s_BFs15s_BFu15i, BFs15s_BFu15s_BFs15s_BFu15i)
//============================================================================


struct  BFs15s_BFu15s_BFs15s_BFu15ll  {
  signed short v1:15;
  unsigned short v2:15;
  signed short v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15s_BFu15s_BFs15s_BFu15ll) C1{ Fs:15 Fs:15 Fs:15 FL:15}



static void Test_BFs15s_BFu15s_BFs15s_BFu15ll()
{
  {
    init_simple_test("BFs15s_BFu15s_BFs15s_BFu15ll");
    static STRUCT_IF_C BFs15s_BFu15s_BFs15s_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15s_BFs15s_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15s_BFs15s_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15s_BFs15s_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFs15s_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFu15s_BFs15s_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFs15s_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15s_BFs15s_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFs15s_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFu15s_BFs15s_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFs15s_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15s_BFs15s_BFu15ll, BFs15s_BFu15s_BFs15s_BFu15ll)
//============================================================================


struct  BFs15s_BFu15s_BFs15s_BFu15s  {
  signed short v1:15;
  unsigned short v2:15;
  signed short v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15s_BFu15s_BFs15s_BFu15s) C1{ Fs:15 Fs:15 Fs:15 Fs:15}



static void Test_BFs15s_BFu15s_BFs15s_BFu15s()
{
  {
    init_simple_test("BFs15s_BFu15s_BFs15s_BFu15s");
    static STRUCT_IF_C BFs15s_BFu15s_BFs15s_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15s_BFs15s_BFu15s)");
    check2(__alignof__(lv), 2, "__alignof__(BFs15s_BFu15s_BFs15s_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15s_BFs15s_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFs15s_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFu15s_BFs15s_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFs15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15s_BFs15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFs15s_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15s_BFu15s_BFs15s_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFs15s_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15s_BFs15s_BFu15s, BFs15s_BFu15s_BFs15s_BFu15s)
//============================================================================


struct  BFs15s_BFu15s_BFu15i  {
  signed short v1:15;
  unsigned short v2:15;
  unsigned int v3:15;
};
//SIG(1 BFs15s_BFu15s_BFu15i) C1{ Fs:15 Fs:15 Fi:15}



static void Test_BFs15s_BFu15s_BFu15i()
{
  {
    init_simple_test("BFs15s_BFu15s_BFu15i");
    static STRUCT_IF_C BFs15s_BFu15s_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15s_BFu15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15s_BFu15s_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15s_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFu15s_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15s_BFu15i, BFs15s_BFu15s_BFu15i)
//============================================================================


struct  BFs15s_BFu15s_BFu15i_BFs15i  {
  signed short v1:15;
  unsigned short v2:15;
  unsigned int v3:15;
  signed int v4:15;
};
//SIG(1 BFs15s_BFu15s_BFu15i_BFs15i) C1{ Fs:15 Fs:15 Fi:15 Fi:15}



static void Test_BFs15s_BFu15s_BFu15i_BFs15i()
{
  {
    init_simple_test("BFs15s_BFu15s_BFu15i_BFs15i");
    static STRUCT_IF_C BFs15s_BFu15s_BFu15i_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15s_BFu15i_BFs15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15s_BFu15s_BFu15i_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15s_BFu15i_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFu15i_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFu15s_BFu15i_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFu15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15s_BFu15i_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFu15i_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFu15s_BFu15i_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFu15i_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15s_BFu15i_BFs15i, BFs15s_BFu15s_BFu15i_BFs15i)
//============================================================================


struct  BFs15s_BFu15s_BFu15i_BFs15ll  {
  signed short v1:15;
  unsigned short v2:15;
  unsigned int v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15s_BFu15s_BFu15i_BFs15ll) C1{ Fs:15 Fs:15 Fi:15 FL:15}



static void Test_BFs15s_BFu15s_BFu15i_BFs15ll()
{
  {
    init_simple_test("BFs15s_BFu15s_BFu15i_BFs15ll");
    static STRUCT_IF_C BFs15s_BFu15s_BFu15i_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15s_BFu15i_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15s_BFu15i_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15s_BFu15i_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFu15i_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFu15s_BFu15i_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFu15i_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15s_BFu15i_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFu15i_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFu15s_BFu15i_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFu15i_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15s_BFu15i_BFs15ll, BFs15s_BFu15s_BFu15i_BFs15ll)
//============================================================================


struct  BFs15s_BFu15s_BFu15i_BFs15s  {
  signed short v1:15;
  unsigned short v2:15;
  unsigned int v3:15;
  signed short v4:15;
};
//SIG(1 BFs15s_BFu15s_BFu15i_BFs15s) C1{ Fs:15 Fs:15 Fi:15 Fs:15}



static void Test_BFs15s_BFu15s_BFu15i_BFs15s()
{
  {
    init_simple_test("BFs15s_BFu15s_BFu15i_BFs15s");
    static STRUCT_IF_C BFs15s_BFu15s_BFu15i_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15s_BFu15i_BFs15s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15s_BFu15s_BFu15i_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15s_BFu15i_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFu15i_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFu15s_BFu15i_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFu15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15s_BFu15i_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFu15i_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15s_BFu15s_BFu15i_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFu15i_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15s_BFu15i_BFs15s, BFs15s_BFu15s_BFu15i_BFs15s)
//============================================================================


struct  BFs15s_BFu15s_BFu15i_BFu15i  {
  signed short v1:15;
  unsigned short v2:15;
  unsigned int v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15s_BFu15s_BFu15i_BFu15i) C1{ Fs:15 Fs:15 Fi:15 Fi:15}



static void Test_BFs15s_BFu15s_BFu15i_BFu15i()
{
  {
    init_simple_test("BFs15s_BFu15s_BFu15i_BFu15i");
    static STRUCT_IF_C BFs15s_BFu15s_BFu15i_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15s_BFu15i_BFu15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15s_BFu15s_BFu15i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15s_BFu15i_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFu15i_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFu15s_BFu15i_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFu15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15s_BFu15i_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFu15i_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFu15s_BFu15i_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFu15i_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15s_BFu15i_BFu15i, BFs15s_BFu15s_BFu15i_BFu15i)
//============================================================================


struct  BFs15s_BFu15s_BFu15i_BFu15ll  {
  signed short v1:15;
  unsigned short v2:15;
  unsigned int v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15s_BFu15s_BFu15i_BFu15ll) C1{ Fs:15 Fs:15 Fi:15 FL:15}



static void Test_BFs15s_BFu15s_BFu15i_BFu15ll()
{
  {
    init_simple_test("BFs15s_BFu15s_BFu15i_BFu15ll");
    static STRUCT_IF_C BFs15s_BFu15s_BFu15i_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15s_BFu15i_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15s_BFu15i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15s_BFu15i_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFu15i_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFu15s_BFu15i_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFu15i_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15s_BFu15i_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFu15i_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFu15s_BFu15i_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFu15i_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15s_BFu15i_BFu15ll, BFs15s_BFu15s_BFu15i_BFu15ll)
//============================================================================


struct  BFs15s_BFu15s_BFu15i_BFu15s  {
  signed short v1:15;
  unsigned short v2:15;
  unsigned int v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15s_BFu15s_BFu15i_BFu15s) C1{ Fs:15 Fs:15 Fi:15 Fs:15}



static void Test_BFs15s_BFu15s_BFu15i_BFu15s()
{
  {
    init_simple_test("BFs15s_BFu15s_BFu15i_BFu15s");
    static STRUCT_IF_C BFs15s_BFu15s_BFu15i_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15s_BFu15i_BFu15s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15s_BFu15s_BFu15i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15s_BFu15i_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFu15i_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFu15s_BFu15i_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFu15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15s_BFu15i_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFu15i_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15s_BFu15s_BFu15i_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFu15i_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15s_BFu15i_BFu15s, BFs15s_BFu15s_BFu15i_BFu15s)
//============================================================================


struct  BFs15s_BFu15s_BFu15ll  {
  signed short v1:15;
  unsigned short v2:15;
  __tsu64 v3:15;
};
//SIG(1 BFs15s_BFu15s_BFu15ll) C1{ Fs:15 Fs:15 FL:15}



static void Test_BFs15s_BFu15s_BFu15ll()
{
  {
    init_simple_test("BFs15s_BFu15s_BFu15ll");
    static STRUCT_IF_C BFs15s_BFu15s_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15s_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15s_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15s_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFu15s_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFu15ll");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15s_BFu15s_BFu15ll");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15s_BFu15ll, BFs15s_BFu15s_BFu15ll)
//============================================================================


struct  BFs15s_BFu15s_BFu15ll_BFs15i  {
  signed short v1:15;
  unsigned short v2:15;
  __tsu64 v3:15;
  signed int v4:15;
};
//SIG(1 BFs15s_BFu15s_BFu15ll_BFs15i) C1{ Fs:15 Fs:15 FL:15 Fi:15}



static void Test_BFs15s_BFu15s_BFu15ll_BFs15i()
{
  {
    init_simple_test("BFs15s_BFu15s_BFu15ll_BFs15i");
    static STRUCT_IF_C BFs15s_BFu15s_BFu15ll_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15s_BFu15ll_BFs15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15s_BFu15ll_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15s_BFu15ll_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFu15ll_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFu15s_BFu15ll_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFu15ll_BFs15i");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15s_BFu15s_BFu15ll_BFs15i");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFu15ll_BFs15i");
    set_bf_and_test(lv, v4, 5, 6, 15, 1, "BFs15s_BFu15s_BFu15ll_BFs15i");
    set_bf_and_test(lv, v4, 5, 6, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFu15ll_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15s_BFu15ll_BFs15i, BFs15s_BFu15s_BFu15ll_BFs15i)
//============================================================================


struct  BFs15s_BFu15s_BFu15ll_BFs15ll  {
  signed short v1:15;
  unsigned short v2:15;
  __tsu64 v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15s_BFu15s_BFu15ll_BFs15ll) C1{ Fs:15 Fs:15 FL:15 FL:15}



static void Test_BFs15s_BFu15s_BFu15ll_BFs15ll()
{
  {
    init_simple_test("BFs15s_BFu15s_BFu15ll_BFs15ll");
    static STRUCT_IF_C BFs15s_BFu15s_BFu15ll_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15s_BFu15ll_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15s_BFu15ll_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15s_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFu15s_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15s_BFu15s_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v4, 5, 6, 15, 1, "BFs15s_BFu15s_BFu15ll_BFs15ll");
    set_bf_and_test(lv, v4, 5, 6, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFu15ll_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15s_BFu15ll_BFs15ll, BFs15s_BFu15s_BFu15ll_BFs15ll)
//============================================================================


struct  BFs15s_BFu15s_BFu15ll_BFs15s  {
  signed short v1:15;
  unsigned short v2:15;
  __tsu64 v3:15;
  signed short v4:15;
};
//SIG(1 BFs15s_BFu15s_BFu15ll_BFs15s) C1{ Fs:15 Fs:15 FL:15 Fs:15}



static void Test_BFs15s_BFu15s_BFu15ll_BFs15s()
{
  {
    init_simple_test("BFs15s_BFu15s_BFu15ll_BFs15s");
    static STRUCT_IF_C BFs15s_BFu15s_BFu15ll_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15s_BFu15ll_BFs15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15s_BFu15ll_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15s_BFu15ll_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFu15ll_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFu15s_BFu15ll_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFu15ll_BFs15s");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15s_BFu15s_BFu15ll_BFs15s");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFu15ll_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15s_BFu15s_BFu15ll_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFu15ll_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15s_BFu15ll_BFs15s, BFs15s_BFu15s_BFu15ll_BFs15s)
//============================================================================


struct  BFs15s_BFu15s_BFu15ll_BFu15i  {
  signed short v1:15;
  unsigned short v2:15;
  __tsu64 v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15s_BFu15s_BFu15ll_BFu15i) C1{ Fs:15 Fs:15 FL:15 Fi:15}



static void Test_BFs15s_BFu15s_BFu15ll_BFu15i()
{
  {
    init_simple_test("BFs15s_BFu15s_BFu15ll_BFu15i");
    static STRUCT_IF_C BFs15s_BFu15s_BFu15ll_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15s_BFu15ll_BFu15i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15s_BFu15ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15s_BFu15ll_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFu15ll_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFu15s_BFu15ll_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFu15ll_BFu15i");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15s_BFu15s_BFu15ll_BFu15i");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFu15ll_BFu15i");
    set_bf_and_test(lv, v4, 5, 6, 15, 1, "BFs15s_BFu15s_BFu15ll_BFu15i");
    set_bf_and_test(lv, v4, 5, 6, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFu15ll_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15s_BFu15ll_BFu15i, BFs15s_BFu15s_BFu15ll_BFu15i)
//============================================================================


struct  BFs15s_BFu15s_BFu15ll_BFu15ll  {
  signed short v1:15;
  unsigned short v2:15;
  __tsu64 v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15s_BFu15s_BFu15ll_BFu15ll) C1{ Fs:15 Fs:15 FL:15 FL:15}



static void Test_BFs15s_BFu15s_BFu15ll_BFu15ll()
{
  {
    init_simple_test("BFs15s_BFu15s_BFu15ll_BFu15ll");
    static STRUCT_IF_C BFs15s_BFu15s_BFu15ll_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15s_BFu15ll_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15s_BFu15ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15s_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFu15s_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15s_BFu15s_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v4, 5, 6, 15, 1, "BFs15s_BFu15s_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v4, 5, 6, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFu15ll_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15s_BFu15ll_BFu15ll, BFs15s_BFu15s_BFu15ll_BFu15ll)
//============================================================================


struct  BFs15s_BFu15s_BFu15ll_BFu15s  {
  signed short v1:15;
  unsigned short v2:15;
  __tsu64 v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15s_BFu15s_BFu15ll_BFu15s) C1{ Fs:15 Fs:15 FL:15 Fs:15}



static void Test_BFs15s_BFu15s_BFu15ll_BFu15s()
{
  {
    init_simple_test("BFs15s_BFu15s_BFu15ll_BFu15s");
    static STRUCT_IF_C BFs15s_BFu15s_BFu15ll_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15s_BFu15ll_BFu15s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15s_BFu15ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15s_BFu15ll_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFu15ll_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFu15s_BFu15ll_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFu15ll_BFu15s");
    set_bf_and_test(lv, v3, 3, 7, 15, 1, "BFs15s_BFu15s_BFu15ll_BFu15s");
    set_bf_and_test(lv, v3, 3, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFu15ll_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15s_BFu15s_BFu15ll_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFu15ll_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15s_BFu15ll_BFu15s, BFs15s_BFu15s_BFu15ll_BFu15s)
//============================================================================


struct  BFs15s_BFu15s_BFu15s  {
  signed short v1:15;
  unsigned short v2:15;
  unsigned short v3:15;
};
//SIG(1 BFs15s_BFu15s_BFu15s) C1{ Fs:15 Fs:15 Fs:15}



static void Test_BFs15s_BFu15s_BFu15s()
{
  {
    init_simple_test("BFs15s_BFu15s_BFu15s");
    static STRUCT_IF_C BFs15s_BFu15s_BFu15s lv;
    check2(sizeof(lv), 6, "sizeof(BFs15s_BFu15s_BFu15s)");
    check2(__alignof__(lv), 2, "__alignof__(BFs15s_BFu15s_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15s_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFu15s_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15s_BFu15s, BFs15s_BFu15s_BFu15s)
//============================================================================


struct  BFs15s_BFu15s_BFu15s_BFs15i  {
  signed short v1:15;
  unsigned short v2:15;
  unsigned short v3:15;
  signed int v4:15;
};
//SIG(1 BFs15s_BFu15s_BFu15s_BFs15i) C1{ Fs:15 Fs:15 Fs:15 Fi:15}



static void Test_BFs15s_BFu15s_BFu15s_BFs15i()
{
  {
    init_simple_test("BFs15s_BFu15s_BFu15s_BFs15i");
    static STRUCT_IF_C BFs15s_BFu15s_BFu15s_BFs15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15s_BFu15s_BFs15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15s_BFu15s_BFu15s_BFs15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15s_BFu15s_BFs15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFu15s_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFu15s_BFu15s_BFs15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFu15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15s_BFu15s_BFs15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFu15s_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFu15s_BFu15s_BFs15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFu15s_BFs15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15s_BFu15s_BFs15i, BFs15s_BFu15s_BFu15s_BFs15i)
//============================================================================


struct  BFs15s_BFu15s_BFu15s_BFs15ll  {
  signed short v1:15;
  unsigned short v2:15;
  unsigned short v3:15;
  signed __tsi64 v4:15;
};
//SIG(1 BFs15s_BFu15s_BFu15s_BFs15ll) C1{ Fs:15 Fs:15 Fs:15 FL:15}



static void Test_BFs15s_BFu15s_BFu15s_BFs15ll()
{
  {
    init_simple_test("BFs15s_BFu15s_BFu15s_BFs15ll");
    static STRUCT_IF_C BFs15s_BFu15s_BFu15s_BFs15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15s_BFu15s_BFs15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15s_BFu15s_BFs15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15s_BFu15s_BFs15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFu15s_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFu15s_BFu15s_BFs15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFu15s_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15s_BFu15s_BFs15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFu15s_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFu15s_BFu15s_BFs15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFu15s_BFs15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15s_BFu15s_BFs15ll, BFs15s_BFu15s_BFu15s_BFs15ll)
//============================================================================


struct  BFs15s_BFu15s_BFu15s_BFs15s  {
  signed short v1:15;
  unsigned short v2:15;
  unsigned short v3:15;
  signed short v4:15;
};
//SIG(1 BFs15s_BFu15s_BFu15s_BFs15s) C1{ Fs:15 Fs:15 Fs:15 Fs:15}



static void Test_BFs15s_BFu15s_BFu15s_BFs15s()
{
  {
    init_simple_test("BFs15s_BFu15s_BFu15s_BFs15s");
    static STRUCT_IF_C BFs15s_BFu15s_BFu15s_BFs15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15s_BFu15s_BFs15s)");
    check2(__alignof__(lv), 2, "__alignof__(BFs15s_BFu15s_BFu15s_BFs15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15s_BFu15s_BFs15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFu15s_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFu15s_BFu15s_BFs15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFu15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15s_BFu15s_BFs15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFu15s_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15s_BFu15s_BFu15s_BFs15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFu15s_BFs15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15s_BFu15s_BFs15s, BFs15s_BFu15s_BFu15s_BFs15s)
//============================================================================


struct  BFs15s_BFu15s_BFu15s_BFu15i  {
  signed short v1:15;
  unsigned short v2:15;
  unsigned short v3:15;
  unsigned int v4:15;
};
//SIG(1 BFs15s_BFu15s_BFu15s_BFu15i) C1{ Fs:15 Fs:15 Fs:15 Fi:15}



static void Test_BFs15s_BFu15s_BFu15s_BFu15i()
{
  {
    init_simple_test("BFs15s_BFu15s_BFu15s_BFu15i");
    static STRUCT_IF_C BFs15s_BFu15s_BFu15s_BFu15i lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15s_BFu15s_BFu15i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs15s_BFu15s_BFu15s_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15s_BFu15s_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFu15s_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFu15s_BFu15s_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFu15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15s_BFu15s_BFu15i");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFu15s_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFu15s_BFu15s_BFu15i");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFu15s_BFu15i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15s_BFu15s_BFu15i, BFs15s_BFu15s_BFu15s_BFu15i)
//============================================================================


struct  BFs15s_BFu15s_BFu15s_BFu15ll  {
  signed short v1:15;
  unsigned short v2:15;
  unsigned short v3:15;
  __tsu64 v4:15;
};
//SIG(1 BFs15s_BFu15s_BFu15s_BFu15ll) C1{ Fs:15 Fs:15 Fs:15 FL:15}



static void Test_BFs15s_BFu15s_BFu15s_BFu15ll()
{
  {
    init_simple_test("BFs15s_BFu15s_BFu15s_BFu15ll");
    static STRUCT_IF_C BFs15s_BFu15s_BFu15s_BFu15ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15s_BFu15s_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs15s_BFu15s_BFu15s_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15s_BFu15s_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFu15s_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFu15s_BFu15s_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFu15s_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15s_BFu15s_BFu15ll");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFu15s_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, 1, "BFs15s_BFu15s_BFu15s_BFu15ll");
    set_bf_and_test(lv, v4, 5, 7, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFu15s_BFu15ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15s_BFu15s_BFu15ll, BFs15s_BFu15s_BFu15s_BFu15ll)
//============================================================================


struct  BFs15s_BFu15s_BFu15s_BFu15s  {
  signed short v1:15;
  unsigned short v2:15;
  unsigned short v3:15;
  unsigned short v4:15;
};
//SIG(1 BFs15s_BFu15s_BFu15s_BFu15s) C1{ Fs:15 Fs:15 Fs:15 Fs:15}



static void Test_BFs15s_BFu15s_BFu15s_BFu15s()
{
  {
    init_simple_test("BFs15s_BFu15s_BFu15s_BFu15s");
    static STRUCT_IF_C BFs15s_BFu15s_BFu15s_BFu15s lv;
    check2(sizeof(lv), 8, "sizeof(BFs15s_BFu15s_BFu15s_BFu15s)");
    check2(__alignof__(lv), 2, "__alignof__(BFs15s_BFu15s_BFu15s_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFs15s_BFu15s_BFu15s_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_sll(1LL<<14), "BFs15s_BFu15s_BFu15s_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFs15s_BFu15s_BFu15s_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFu15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, 1, "BFs15s_BFu15s_BFu15s_BFu15s");
    set_bf_and_test(lv, v3, 4, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFu15s_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, 1, "BFs15s_BFu15s_BFu15s_BFu15s");
    set_bf_and_test(lv, v4, 6, 0, 15, hide_ull(1LL<<14), "BFs15s_BFu15s_BFu15s_BFu15s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs15s_BFu15s_BFu15s_BFu15s, BFs15s_BFu15s_BFu15s_BFu15s)
//============================================================================


struct  BFs16i_BFs16i  {
  signed int v1:16;
  signed int v2:16;
};
//SIG(1 BFs16i_BFs16i) C1{ Fi:16 Fi:16}



static void Test_BFs16i_BFs16i()
{
  {
    init_simple_test("BFs16i_BFs16i");
    static STRUCT_IF_C BFs16i_BFs16i lv;
    check2(sizeof(lv), 4, "sizeof(BFs16i_BFs16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16i, BFs16i_BFs16i)
//============================================================================


struct  BFs16i_BFs16i_BFs16i  {
  signed int v1:16;
  signed int v2:16;
  signed int v3:16;
};
//SIG(1 BFs16i_BFs16i_BFs16i) C1{ Fi:16 Fi:16 Fi:16}



static void Test_BFs16i_BFs16i_BFs16i()
{
  {
    init_simple_test("BFs16i_BFs16i_BFs16i");
    static STRUCT_IF_C BFs16i_BFs16i_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16i_BFs16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFs16i_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16i_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16i_BFs16i, BFs16i_BFs16i_BFs16i)
//============================================================================


struct  BFs16i_BFs16i_BFs16i_BFs16i  {
  signed int v1:16;
  signed int v2:16;
  signed int v3:16;
  signed int v4:16;
};
//SIG(1 BFs16i_BFs16i_BFs16i_BFs16i) C1{ Fi:16 Fi:16 Fi:16 Fi:16}



static void Test_BFs16i_BFs16i_BFs16i_BFs16i()
{
  {
    init_simple_test("BFs16i_BFs16i_BFs16i_BFs16i");
    static STRUCT_IF_C BFs16i_BFs16i_BFs16i_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16i_BFs16i_BFs16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFs16i_BFs16i_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16i_BFs16i_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFs16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16i_BFs16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFs16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16i_BFs16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFs16i_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16i_BFs16i_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFs16i_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16i_BFs16i_BFs16i, BFs16i_BFs16i_BFs16i_BFs16i)
//============================================================================


struct  BFs16i_BFs16i_BFs16i_BFs16ll  {
  signed int v1:16;
  signed int v2:16;
  signed int v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16i_BFs16i_BFs16i_BFs16ll) C1{ Fi:16 Fi:16 Fi:16 FL:16}



static void Test_BFs16i_BFs16i_BFs16i_BFs16ll()
{
  {
    init_simple_test("BFs16i_BFs16i_BFs16i_BFs16ll");
    static STRUCT_IF_C BFs16i_BFs16i_BFs16i_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16i_BFs16i_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16i_BFs16i_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16i_BFs16i_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFs16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16i_BFs16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFs16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16i_BFs16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFs16i_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16i_BFs16i_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFs16i_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16i_BFs16i_BFs16ll, BFs16i_BFs16i_BFs16i_BFs16ll)
//============================================================================


struct  BFs16i_BFs16i_BFs16i_BFs16s  {
  signed int v1:16;
  signed int v2:16;
  signed int v3:16;
  signed short v4:16;
};
//SIG(1 BFs16i_BFs16i_BFs16i_BFs16s) C1{ Fi:16 Fi:16 Fi:16 Fs:16}



static void Test_BFs16i_BFs16i_BFs16i_BFs16s()
{
  {
    init_simple_test("BFs16i_BFs16i_BFs16i_BFs16s");
    static STRUCT_IF_C BFs16i_BFs16i_BFs16i_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16i_BFs16i_BFs16s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFs16i_BFs16i_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16i_BFs16i_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFs16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16i_BFs16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFs16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16i_BFs16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFs16i_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16i_BFs16i_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFs16i_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16i_BFs16i_BFs16s, BFs16i_BFs16i_BFs16i_BFs16s)
//============================================================================


struct  BFs16i_BFs16i_BFs16i_BFu16i  {
  signed int v1:16;
  signed int v2:16;
  signed int v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16i_BFs16i_BFs16i_BFu16i) C1{ Fi:16 Fi:16 Fi:16 Fi:16}



static void Test_BFs16i_BFs16i_BFs16i_BFu16i()
{
  {
    init_simple_test("BFs16i_BFs16i_BFs16i_BFu16i");
    static STRUCT_IF_C BFs16i_BFs16i_BFs16i_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16i_BFs16i_BFu16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFs16i_BFs16i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16i_BFs16i_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFs16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16i_BFs16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFs16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16i_BFs16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFs16i_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16i_BFs16i_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16i_BFs16i_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16i_BFs16i_BFu16i, BFs16i_BFs16i_BFs16i_BFu16i)
//============================================================================


struct  BFs16i_BFs16i_BFs16i_BFu16ll  {
  signed int v1:16;
  signed int v2:16;
  signed int v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16i_BFs16i_BFs16i_BFu16ll) C1{ Fi:16 Fi:16 Fi:16 FL:16}



static void Test_BFs16i_BFs16i_BFs16i_BFu16ll()
{
  {
    init_simple_test("BFs16i_BFs16i_BFs16i_BFu16ll");
    static STRUCT_IF_C BFs16i_BFs16i_BFs16i_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16i_BFs16i_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16i_BFs16i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16i_BFs16i_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFs16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16i_BFs16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFs16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16i_BFs16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFs16i_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16i_BFs16i_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16i_BFs16i_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16i_BFs16i_BFu16ll, BFs16i_BFs16i_BFs16i_BFu16ll)
//============================================================================


struct  BFs16i_BFs16i_BFs16i_BFu16s  {
  signed int v1:16;
  signed int v2:16;
  signed int v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16i_BFs16i_BFs16i_BFu16s) C1{ Fi:16 Fi:16 Fi:16 Fs:16}



static void Test_BFs16i_BFs16i_BFs16i_BFu16s()
{
  {
    init_simple_test("BFs16i_BFs16i_BFs16i_BFu16s");
    static STRUCT_IF_C BFs16i_BFs16i_BFs16i_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16i_BFs16i_BFu16s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFs16i_BFs16i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16i_BFs16i_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFs16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16i_BFs16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFs16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16i_BFs16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFs16i_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16i_BFs16i_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16i_BFs16i_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16i_BFs16i_BFu16s, BFs16i_BFs16i_BFs16i_BFu16s)
//============================================================================


struct  BFs16i_BFs16i_BFs16ll  {
  signed int v1:16;
  signed int v2:16;
  signed __tsi64 v3:16;
};
//SIG(1 BFs16i_BFs16i_BFs16ll) C1{ Fi:16 Fi:16 FL:16}



static void Test_BFs16i_BFs16i_BFs16ll()
{
  {
    init_simple_test("BFs16i_BFs16i_BFs16ll");
    static STRUCT_IF_C BFs16i_BFs16i_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16i_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16i_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16i_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16i_BFs16ll, BFs16i_BFs16i_BFs16ll)
//============================================================================


struct  BFs16i_BFs16i_BFs16ll_BFs16i  {
  signed int v1:16;
  signed int v2:16;
  signed __tsi64 v3:16;
  signed int v4:16;
};
//SIG(1 BFs16i_BFs16i_BFs16ll_BFs16i) C1{ Fi:16 Fi:16 FL:16 Fi:16}



static void Test_BFs16i_BFs16i_BFs16ll_BFs16i()
{
  {
    init_simple_test("BFs16i_BFs16i_BFs16ll_BFs16i");
    static STRUCT_IF_C BFs16i_BFs16i_BFs16ll_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16i_BFs16ll_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16i_BFs16ll_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16i_BFs16ll_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFs16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16i_BFs16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFs16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16i_BFs16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFs16ll_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16i_BFs16ll_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFs16ll_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16i_BFs16ll_BFs16i, BFs16i_BFs16i_BFs16ll_BFs16i)
//============================================================================


struct  BFs16i_BFs16i_BFs16ll_BFs16ll  {
  signed int v1:16;
  signed int v2:16;
  signed __tsi64 v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16i_BFs16i_BFs16ll_BFs16ll) C1{ Fi:16 Fi:16 FL:16 FL:16}



static void Test_BFs16i_BFs16i_BFs16ll_BFs16ll()
{
  {
    init_simple_test("BFs16i_BFs16i_BFs16ll_BFs16ll");
    static STRUCT_IF_C BFs16i_BFs16i_BFs16ll_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16i_BFs16ll_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16i_BFs16ll_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16i_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16i_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16i_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16i_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFs16ll_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16i_BFs16ll_BFs16ll, BFs16i_BFs16i_BFs16ll_BFs16ll)
//============================================================================


struct  BFs16i_BFs16i_BFs16ll_BFs16s  {
  signed int v1:16;
  signed int v2:16;
  signed __tsi64 v3:16;
  signed short v4:16;
};
//SIG(1 BFs16i_BFs16i_BFs16ll_BFs16s) C1{ Fi:16 Fi:16 FL:16 Fs:16}



static void Test_BFs16i_BFs16i_BFs16ll_BFs16s()
{
  {
    init_simple_test("BFs16i_BFs16i_BFs16ll_BFs16s");
    static STRUCT_IF_C BFs16i_BFs16i_BFs16ll_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16i_BFs16ll_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16i_BFs16ll_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16i_BFs16ll_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFs16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16i_BFs16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFs16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16i_BFs16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFs16ll_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16i_BFs16ll_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFs16ll_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16i_BFs16ll_BFs16s, BFs16i_BFs16i_BFs16ll_BFs16s)
//============================================================================


struct  BFs16i_BFs16i_BFs16ll_BFu16i  {
  signed int v1:16;
  signed int v2:16;
  signed __tsi64 v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16i_BFs16i_BFs16ll_BFu16i) C1{ Fi:16 Fi:16 FL:16 Fi:16}



static void Test_BFs16i_BFs16i_BFs16ll_BFu16i()
{
  {
    init_simple_test("BFs16i_BFs16i_BFs16ll_BFu16i");
    static STRUCT_IF_C BFs16i_BFs16i_BFs16ll_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16i_BFs16ll_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16i_BFs16ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16i_BFs16ll_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFs16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16i_BFs16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFs16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16i_BFs16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFs16ll_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16i_BFs16ll_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16i_BFs16ll_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16i_BFs16ll_BFu16i, BFs16i_BFs16i_BFs16ll_BFu16i)
//============================================================================


struct  BFs16i_BFs16i_BFs16ll_BFu16ll  {
  signed int v1:16;
  signed int v2:16;
  signed __tsi64 v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16i_BFs16i_BFs16ll_BFu16ll) C1{ Fi:16 Fi:16 FL:16 FL:16}



static void Test_BFs16i_BFs16i_BFs16ll_BFu16ll()
{
  {
    init_simple_test("BFs16i_BFs16i_BFs16ll_BFu16ll");
    static STRUCT_IF_C BFs16i_BFs16i_BFs16ll_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16i_BFs16ll_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16i_BFs16ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16i_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16i_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16i_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16i_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16i_BFs16ll_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16i_BFs16ll_BFu16ll, BFs16i_BFs16i_BFs16ll_BFu16ll)
//============================================================================


struct  BFs16i_BFs16i_BFs16ll_BFu16s  {
  signed int v1:16;
  signed int v2:16;
  signed __tsi64 v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16i_BFs16i_BFs16ll_BFu16s) C1{ Fi:16 Fi:16 FL:16 Fs:16}



static void Test_BFs16i_BFs16i_BFs16ll_BFu16s()
{
  {
    init_simple_test("BFs16i_BFs16i_BFs16ll_BFu16s");
    static STRUCT_IF_C BFs16i_BFs16i_BFs16ll_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16i_BFs16ll_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16i_BFs16ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16i_BFs16ll_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFs16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16i_BFs16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFs16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16i_BFs16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFs16ll_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16i_BFs16ll_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16i_BFs16ll_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16i_BFs16ll_BFu16s, BFs16i_BFs16i_BFs16ll_BFu16s)
//============================================================================


struct  BFs16i_BFs16i_BFs16s  {
  signed int v1:16;
  signed int v2:16;
  signed short v3:16;
};
//SIG(1 BFs16i_BFs16i_BFs16s) C1{ Fi:16 Fi:16 Fs:16}



static void Test_BFs16i_BFs16i_BFs16s()
{
  {
    init_simple_test("BFs16i_BFs16i_BFs16s");
    static STRUCT_IF_C BFs16i_BFs16i_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16i_BFs16s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFs16i_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16i_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16i_BFs16s, BFs16i_BFs16i_BFs16s)
//============================================================================


struct  BFs16i_BFs16i_BFs16s_BFs16i  {
  signed int v1:16;
  signed int v2:16;
  signed short v3:16;
  signed int v4:16;
};
//SIG(1 BFs16i_BFs16i_BFs16s_BFs16i) C1{ Fi:16 Fi:16 Fs:16 Fi:16}



static void Test_BFs16i_BFs16i_BFs16s_BFs16i()
{
  {
    init_simple_test("BFs16i_BFs16i_BFs16s_BFs16i");
    static STRUCT_IF_C BFs16i_BFs16i_BFs16s_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16i_BFs16s_BFs16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFs16i_BFs16s_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16i_BFs16s_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFs16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16i_BFs16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFs16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16i_BFs16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFs16s_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16i_BFs16s_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFs16s_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16i_BFs16s_BFs16i, BFs16i_BFs16i_BFs16s_BFs16i)
//============================================================================


struct  BFs16i_BFs16i_BFs16s_BFs16ll  {
  signed int v1:16;
  signed int v2:16;
  signed short v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16i_BFs16i_BFs16s_BFs16ll) C1{ Fi:16 Fi:16 Fs:16 FL:16}



static void Test_BFs16i_BFs16i_BFs16s_BFs16ll()
{
  {
    init_simple_test("BFs16i_BFs16i_BFs16s_BFs16ll");
    static STRUCT_IF_C BFs16i_BFs16i_BFs16s_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16i_BFs16s_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16i_BFs16s_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16i_BFs16s_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFs16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16i_BFs16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFs16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16i_BFs16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFs16s_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16i_BFs16s_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFs16s_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16i_BFs16s_BFs16ll, BFs16i_BFs16i_BFs16s_BFs16ll)
//============================================================================


struct  BFs16i_BFs16i_BFs16s_BFs16s  {
  signed int v1:16;
  signed int v2:16;
  signed short v3:16;
  signed short v4:16;
};
//SIG(1 BFs16i_BFs16i_BFs16s_BFs16s) C1{ Fi:16 Fi:16 Fs:16 Fs:16}



static void Test_BFs16i_BFs16i_BFs16s_BFs16s()
{
  {
    init_simple_test("BFs16i_BFs16i_BFs16s_BFs16s");
    static STRUCT_IF_C BFs16i_BFs16i_BFs16s_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16i_BFs16s_BFs16s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFs16i_BFs16s_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16i_BFs16s_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFs16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16i_BFs16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFs16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16i_BFs16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFs16s_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16i_BFs16s_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFs16s_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16i_BFs16s_BFs16s, BFs16i_BFs16i_BFs16s_BFs16s)
//============================================================================


struct  BFs16i_BFs16i_BFs16s_BFu16i  {
  signed int v1:16;
  signed int v2:16;
  signed short v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16i_BFs16i_BFs16s_BFu16i) C1{ Fi:16 Fi:16 Fs:16 Fi:16}



static void Test_BFs16i_BFs16i_BFs16s_BFu16i()
{
  {
    init_simple_test("BFs16i_BFs16i_BFs16s_BFu16i");
    static STRUCT_IF_C BFs16i_BFs16i_BFs16s_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16i_BFs16s_BFu16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFs16i_BFs16s_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16i_BFs16s_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFs16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16i_BFs16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFs16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16i_BFs16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFs16s_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16i_BFs16s_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16i_BFs16s_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16i_BFs16s_BFu16i, BFs16i_BFs16i_BFs16s_BFu16i)
//============================================================================


struct  BFs16i_BFs16i_BFs16s_BFu16ll  {
  signed int v1:16;
  signed int v2:16;
  signed short v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16i_BFs16i_BFs16s_BFu16ll) C1{ Fi:16 Fi:16 Fs:16 FL:16}



static void Test_BFs16i_BFs16i_BFs16s_BFu16ll()
{
  {
    init_simple_test("BFs16i_BFs16i_BFs16s_BFu16ll");
    static STRUCT_IF_C BFs16i_BFs16i_BFs16s_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16i_BFs16s_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16i_BFs16s_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16i_BFs16s_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFs16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16i_BFs16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFs16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16i_BFs16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFs16s_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16i_BFs16s_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16i_BFs16s_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16i_BFs16s_BFu16ll, BFs16i_BFs16i_BFs16s_BFu16ll)
//============================================================================


struct  BFs16i_BFs16i_BFs16s_BFu16s  {
  signed int v1:16;
  signed int v2:16;
  signed short v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16i_BFs16i_BFs16s_BFu16s) C1{ Fi:16 Fi:16 Fs:16 Fs:16}



static void Test_BFs16i_BFs16i_BFs16s_BFu16s()
{
  {
    init_simple_test("BFs16i_BFs16i_BFs16s_BFu16s");
    static STRUCT_IF_C BFs16i_BFs16i_BFs16s_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16i_BFs16s_BFu16s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFs16i_BFs16s_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16i_BFs16s_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFs16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16i_BFs16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFs16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16i_BFs16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFs16s_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16i_BFs16s_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16i_BFs16s_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16i_BFs16s_BFu16s, BFs16i_BFs16i_BFs16s_BFu16s)
//============================================================================


struct  BFs16i_BFs16i_BFu16i  {
  signed int v1:16;
  signed int v2:16;
  unsigned int v3:16;
};
//SIG(1 BFs16i_BFs16i_BFu16i) C1{ Fi:16 Fi:16 Fi:16}



static void Test_BFs16i_BFs16i_BFu16i()
{
  {
    init_simple_test("BFs16i_BFs16i_BFu16i");
    static STRUCT_IF_C BFs16i_BFs16i_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16i_BFu16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFs16i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16i_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16i_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16i_BFu16i, BFs16i_BFs16i_BFu16i)
//============================================================================


struct  BFs16i_BFs16i_BFu16i_BFs16i  {
  signed int v1:16;
  signed int v2:16;
  unsigned int v3:16;
  signed int v4:16;
};
//SIG(1 BFs16i_BFs16i_BFu16i_BFs16i) C1{ Fi:16 Fi:16 Fi:16 Fi:16}



static void Test_BFs16i_BFs16i_BFu16i_BFs16i()
{
  {
    init_simple_test("BFs16i_BFs16i_BFu16i_BFs16i");
    static STRUCT_IF_C BFs16i_BFs16i_BFu16i_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16i_BFu16i_BFs16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFs16i_BFu16i_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16i_BFu16i_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFu16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16i_BFu16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFu16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16i_BFu16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16i_BFu16i_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16i_BFu16i_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFu16i_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16i_BFu16i_BFs16i, BFs16i_BFs16i_BFu16i_BFs16i)
//============================================================================


struct  BFs16i_BFs16i_BFu16i_BFs16ll  {
  signed int v1:16;
  signed int v2:16;
  unsigned int v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16i_BFs16i_BFu16i_BFs16ll) C1{ Fi:16 Fi:16 Fi:16 FL:16}



static void Test_BFs16i_BFs16i_BFu16i_BFs16ll()
{
  {
    init_simple_test("BFs16i_BFs16i_BFu16i_BFs16ll");
    static STRUCT_IF_C BFs16i_BFs16i_BFu16i_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16i_BFu16i_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16i_BFu16i_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16i_BFu16i_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFu16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16i_BFu16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFu16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16i_BFu16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16i_BFu16i_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16i_BFu16i_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFu16i_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16i_BFu16i_BFs16ll, BFs16i_BFs16i_BFu16i_BFs16ll)
//============================================================================


struct  BFs16i_BFs16i_BFu16i_BFs16s  {
  signed int v1:16;
  signed int v2:16;
  unsigned int v3:16;
  signed short v4:16;
};
//SIG(1 BFs16i_BFs16i_BFu16i_BFs16s) C1{ Fi:16 Fi:16 Fi:16 Fs:16}



static void Test_BFs16i_BFs16i_BFu16i_BFs16s()
{
  {
    init_simple_test("BFs16i_BFs16i_BFu16i_BFs16s");
    static STRUCT_IF_C BFs16i_BFs16i_BFu16i_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16i_BFu16i_BFs16s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFs16i_BFu16i_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16i_BFu16i_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFu16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16i_BFu16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFu16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16i_BFu16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16i_BFu16i_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16i_BFu16i_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFu16i_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16i_BFu16i_BFs16s, BFs16i_BFs16i_BFu16i_BFs16s)
//============================================================================


struct  BFs16i_BFs16i_BFu16i_BFu16i  {
  signed int v1:16;
  signed int v2:16;
  unsigned int v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16i_BFs16i_BFu16i_BFu16i) C1{ Fi:16 Fi:16 Fi:16 Fi:16}



static void Test_BFs16i_BFs16i_BFu16i_BFu16i()
{
  {
    init_simple_test("BFs16i_BFs16i_BFu16i_BFu16i");
    static STRUCT_IF_C BFs16i_BFs16i_BFu16i_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16i_BFu16i_BFu16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFs16i_BFu16i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16i_BFu16i_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFu16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16i_BFu16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFu16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16i_BFu16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16i_BFu16i_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16i_BFu16i_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16i_BFu16i_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16i_BFu16i_BFu16i, BFs16i_BFs16i_BFu16i_BFu16i)
//============================================================================


struct  BFs16i_BFs16i_BFu16i_BFu16ll  {
  signed int v1:16;
  signed int v2:16;
  unsigned int v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16i_BFs16i_BFu16i_BFu16ll) C1{ Fi:16 Fi:16 Fi:16 FL:16}



static void Test_BFs16i_BFs16i_BFu16i_BFu16ll()
{
  {
    init_simple_test("BFs16i_BFs16i_BFu16i_BFu16ll");
    static STRUCT_IF_C BFs16i_BFs16i_BFu16i_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16i_BFu16i_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16i_BFu16i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16i_BFu16i_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFu16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16i_BFu16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFu16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16i_BFu16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16i_BFu16i_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16i_BFu16i_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16i_BFu16i_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16i_BFu16i_BFu16ll, BFs16i_BFs16i_BFu16i_BFu16ll)
//============================================================================


struct  BFs16i_BFs16i_BFu16i_BFu16s  {
  signed int v1:16;
  signed int v2:16;
  unsigned int v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16i_BFs16i_BFu16i_BFu16s) C1{ Fi:16 Fi:16 Fi:16 Fs:16}



static void Test_BFs16i_BFs16i_BFu16i_BFu16s()
{
  {
    init_simple_test("BFs16i_BFs16i_BFu16i_BFu16s");
    static STRUCT_IF_C BFs16i_BFs16i_BFu16i_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16i_BFu16i_BFu16s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFs16i_BFu16i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16i_BFu16i_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFu16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16i_BFu16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFu16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16i_BFu16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16i_BFu16i_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16i_BFu16i_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16i_BFu16i_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16i_BFu16i_BFu16s, BFs16i_BFs16i_BFu16i_BFu16s)
//============================================================================


struct  BFs16i_BFs16i_BFu16ll  {
  signed int v1:16;
  signed int v2:16;
  __tsu64 v3:16;
};
//SIG(1 BFs16i_BFs16i_BFu16ll) C1{ Fi:16 Fi:16 FL:16}



static void Test_BFs16i_BFs16i_BFu16ll()
{
  {
    init_simple_test("BFs16i_BFs16i_BFu16ll");
    static STRUCT_IF_C BFs16i_BFs16i_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16i_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16i_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16i_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16i_BFu16ll, BFs16i_BFs16i_BFu16ll)
//============================================================================


struct  BFs16i_BFs16i_BFu16ll_BFs16i  {
  signed int v1:16;
  signed int v2:16;
  __tsu64 v3:16;
  signed int v4:16;
};
//SIG(1 BFs16i_BFs16i_BFu16ll_BFs16i) C1{ Fi:16 Fi:16 FL:16 Fi:16}



static void Test_BFs16i_BFs16i_BFu16ll_BFs16i()
{
  {
    init_simple_test("BFs16i_BFs16i_BFu16ll_BFs16i");
    static STRUCT_IF_C BFs16i_BFs16i_BFu16ll_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16i_BFu16ll_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16i_BFu16ll_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16i_BFu16ll_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFu16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16i_BFu16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFu16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16i_BFu16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16i_BFu16ll_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16i_BFu16ll_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFu16ll_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16i_BFu16ll_BFs16i, BFs16i_BFs16i_BFu16ll_BFs16i)
//============================================================================


struct  BFs16i_BFs16i_BFu16ll_BFs16ll  {
  signed int v1:16;
  signed int v2:16;
  __tsu64 v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16i_BFs16i_BFu16ll_BFs16ll) C1{ Fi:16 Fi:16 FL:16 FL:16}



static void Test_BFs16i_BFs16i_BFu16ll_BFs16ll()
{
  {
    init_simple_test("BFs16i_BFs16i_BFu16ll_BFs16ll");
    static STRUCT_IF_C BFs16i_BFs16i_BFu16ll_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16i_BFu16ll_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16i_BFu16ll_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16i_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16i_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16i_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16i_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16i_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFu16ll_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16i_BFu16ll_BFs16ll, BFs16i_BFs16i_BFu16ll_BFs16ll)
//============================================================================


struct  BFs16i_BFs16i_BFu16ll_BFs16s  {
  signed int v1:16;
  signed int v2:16;
  __tsu64 v3:16;
  signed short v4:16;
};
//SIG(1 BFs16i_BFs16i_BFu16ll_BFs16s) C1{ Fi:16 Fi:16 FL:16 Fs:16}



static void Test_BFs16i_BFs16i_BFu16ll_BFs16s()
{
  {
    init_simple_test("BFs16i_BFs16i_BFu16ll_BFs16s");
    static STRUCT_IF_C BFs16i_BFs16i_BFu16ll_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16i_BFu16ll_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16i_BFu16ll_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16i_BFu16ll_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFu16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16i_BFu16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFu16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16i_BFu16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16i_BFu16ll_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16i_BFu16ll_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFu16ll_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16i_BFu16ll_BFs16s, BFs16i_BFs16i_BFu16ll_BFs16s)
//============================================================================


struct  BFs16i_BFs16i_BFu16ll_BFu16i  {
  signed int v1:16;
  signed int v2:16;
  __tsu64 v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16i_BFs16i_BFu16ll_BFu16i) C1{ Fi:16 Fi:16 FL:16 Fi:16}



static void Test_BFs16i_BFs16i_BFu16ll_BFu16i()
{
  {
    init_simple_test("BFs16i_BFs16i_BFu16ll_BFu16i");
    static STRUCT_IF_C BFs16i_BFs16i_BFu16ll_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16i_BFu16ll_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16i_BFu16ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16i_BFu16ll_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFu16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16i_BFu16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFu16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16i_BFu16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16i_BFu16ll_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16i_BFu16ll_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16i_BFu16ll_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16i_BFu16ll_BFu16i, BFs16i_BFs16i_BFu16ll_BFu16i)
//============================================================================


struct  BFs16i_BFs16i_BFu16ll_BFu16ll  {
  signed int v1:16;
  signed int v2:16;
  __tsu64 v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16i_BFs16i_BFu16ll_BFu16ll) C1{ Fi:16 Fi:16 FL:16 FL:16}



static void Test_BFs16i_BFs16i_BFu16ll_BFu16ll()
{
  {
    init_simple_test("BFs16i_BFs16i_BFu16ll_BFu16ll");
    static STRUCT_IF_C BFs16i_BFs16i_BFu16ll_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16i_BFu16ll_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16i_BFu16ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16i_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16i_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16i_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16i_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16i_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16i_BFu16ll_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16i_BFu16ll_BFu16ll, BFs16i_BFs16i_BFu16ll_BFu16ll)
//============================================================================


struct  BFs16i_BFs16i_BFu16ll_BFu16s  {
  signed int v1:16;
  signed int v2:16;
  __tsu64 v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16i_BFs16i_BFu16ll_BFu16s) C1{ Fi:16 Fi:16 FL:16 Fs:16}



static void Test_BFs16i_BFs16i_BFu16ll_BFu16s()
{
  {
    init_simple_test("BFs16i_BFs16i_BFu16ll_BFu16s");
    static STRUCT_IF_C BFs16i_BFs16i_BFu16ll_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16i_BFu16ll_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16i_BFu16ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16i_BFu16ll_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFu16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16i_BFu16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFu16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16i_BFu16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16i_BFu16ll_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16i_BFu16ll_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16i_BFu16ll_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16i_BFu16ll_BFu16s, BFs16i_BFs16i_BFu16ll_BFu16s)
//============================================================================


struct  BFs16i_BFs16i_BFu16s  {
  signed int v1:16;
  signed int v2:16;
  unsigned short v3:16;
};
//SIG(1 BFs16i_BFs16i_BFu16s) C1{ Fi:16 Fi:16 Fs:16}



static void Test_BFs16i_BFs16i_BFu16s()
{
  {
    init_simple_test("BFs16i_BFs16i_BFu16s");
    static STRUCT_IF_C BFs16i_BFs16i_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16i_BFu16s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFs16i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16i_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16i_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16i_BFu16s, BFs16i_BFs16i_BFu16s)
//============================================================================


struct  BFs16i_BFs16i_BFu16s_BFs16i  {
  signed int v1:16;
  signed int v2:16;
  unsigned short v3:16;
  signed int v4:16;
};
//SIG(1 BFs16i_BFs16i_BFu16s_BFs16i) C1{ Fi:16 Fi:16 Fs:16 Fi:16}



static void Test_BFs16i_BFs16i_BFu16s_BFs16i()
{
  {
    init_simple_test("BFs16i_BFs16i_BFu16s_BFs16i");
    static STRUCT_IF_C BFs16i_BFs16i_BFu16s_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16i_BFu16s_BFs16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFs16i_BFu16s_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16i_BFu16s_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFu16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16i_BFu16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFu16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16i_BFu16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16i_BFu16s_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16i_BFu16s_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFu16s_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16i_BFu16s_BFs16i, BFs16i_BFs16i_BFu16s_BFs16i)
//============================================================================


struct  BFs16i_BFs16i_BFu16s_BFs16ll  {
  signed int v1:16;
  signed int v2:16;
  unsigned short v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16i_BFs16i_BFu16s_BFs16ll) C1{ Fi:16 Fi:16 Fs:16 FL:16}



static void Test_BFs16i_BFs16i_BFu16s_BFs16ll()
{
  {
    init_simple_test("BFs16i_BFs16i_BFu16s_BFs16ll");
    static STRUCT_IF_C BFs16i_BFs16i_BFu16s_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16i_BFu16s_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16i_BFu16s_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16i_BFu16s_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFu16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16i_BFu16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFu16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16i_BFu16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16i_BFu16s_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16i_BFu16s_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFu16s_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16i_BFu16s_BFs16ll, BFs16i_BFs16i_BFu16s_BFs16ll)
//============================================================================


struct  BFs16i_BFs16i_BFu16s_BFs16s  {
  signed int v1:16;
  signed int v2:16;
  unsigned short v3:16;
  signed short v4:16;
};
//SIG(1 BFs16i_BFs16i_BFu16s_BFs16s) C1{ Fi:16 Fi:16 Fs:16 Fs:16}



static void Test_BFs16i_BFs16i_BFu16s_BFs16s()
{
  {
    init_simple_test("BFs16i_BFs16i_BFu16s_BFs16s");
    static STRUCT_IF_C BFs16i_BFs16i_BFu16s_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16i_BFu16s_BFs16s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFs16i_BFu16s_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16i_BFu16s_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFu16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16i_BFu16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFu16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16i_BFu16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16i_BFu16s_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16i_BFu16s_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFu16s_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16i_BFu16s_BFs16s, BFs16i_BFs16i_BFu16s_BFs16s)
//============================================================================


struct  BFs16i_BFs16i_BFu16s_BFu16i  {
  signed int v1:16;
  signed int v2:16;
  unsigned short v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16i_BFs16i_BFu16s_BFu16i) C1{ Fi:16 Fi:16 Fs:16 Fi:16}



static void Test_BFs16i_BFs16i_BFu16s_BFu16i()
{
  {
    init_simple_test("BFs16i_BFs16i_BFu16s_BFu16i");
    static STRUCT_IF_C BFs16i_BFs16i_BFu16s_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16i_BFu16s_BFu16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFs16i_BFu16s_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16i_BFu16s_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFu16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16i_BFu16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFu16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16i_BFu16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16i_BFu16s_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16i_BFu16s_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16i_BFu16s_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16i_BFu16s_BFu16i, BFs16i_BFs16i_BFu16s_BFu16i)
//============================================================================


struct  BFs16i_BFs16i_BFu16s_BFu16ll  {
  signed int v1:16;
  signed int v2:16;
  unsigned short v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16i_BFs16i_BFu16s_BFu16ll) C1{ Fi:16 Fi:16 Fs:16 FL:16}



static void Test_BFs16i_BFs16i_BFu16s_BFu16ll()
{
  {
    init_simple_test("BFs16i_BFs16i_BFu16s_BFu16ll");
    static STRUCT_IF_C BFs16i_BFs16i_BFu16s_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16i_BFu16s_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16i_BFu16s_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16i_BFu16s_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFu16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16i_BFu16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFu16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16i_BFu16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16i_BFu16s_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16i_BFu16s_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16i_BFu16s_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16i_BFu16s_BFu16ll, BFs16i_BFs16i_BFu16s_BFu16ll)
//============================================================================


struct  BFs16i_BFs16i_BFu16s_BFu16s  {
  signed int v1:16;
  signed int v2:16;
  unsigned short v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16i_BFs16i_BFu16s_BFu16s) C1{ Fi:16 Fi:16 Fs:16 Fs:16}



static void Test_BFs16i_BFs16i_BFu16s_BFu16s()
{
  {
    init_simple_test("BFs16i_BFs16i_BFu16s_BFu16s");
    static STRUCT_IF_C BFs16i_BFs16i_BFu16s_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16i_BFu16s_BFu16s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFs16i_BFu16s_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16i_BFu16s_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFu16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16i_BFu16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16i_BFu16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16i_BFu16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16i_BFu16s_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16i_BFu16s_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16i_BFu16s_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16i_BFu16s_BFu16s, BFs16i_BFs16i_BFu16s_BFu16s)
//============================================================================


struct  BFs16i_BFs16ll  {
  signed int v1:16;
  signed __tsi64 v2:16;
};
//SIG(1 BFs16i_BFs16ll) C1{ Fi:16 FL:16}



static void Test_BFs16i_BFs16ll()
{
  {
    init_simple_test("BFs16i_BFs16ll");
    static STRUCT_IF_C BFs16i_BFs16ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs16i_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16ll, BFs16i_BFs16ll)
//============================================================================


struct  BFs16i_BFs16ll_BFs16i  {
  signed int v1:16;
  signed __tsi64 v2:16;
  signed int v3:16;
};
//SIG(1 BFs16i_BFs16ll_BFs16i) C1{ Fi:16 FL:16 Fi:16}



static void Test_BFs16i_BFs16ll_BFs16i()
{
  {
    init_simple_test("BFs16i_BFs16ll_BFs16i");
    static STRUCT_IF_C BFs16i_BFs16ll_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16ll_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16ll_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16ll_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16ll_BFs16i, BFs16i_BFs16ll_BFs16i)
//============================================================================


struct  BFs16i_BFs16ll_BFs16i_BFs16i  {
  signed int v1:16;
  signed __tsi64 v2:16;
  signed int v3:16;
  signed int v4:16;
};
//SIG(1 BFs16i_BFs16ll_BFs16i_BFs16i) C1{ Fi:16 FL:16 Fi:16 Fi:16}



static void Test_BFs16i_BFs16ll_BFs16i_BFs16i()
{
  {
    init_simple_test("BFs16i_BFs16ll_BFs16i_BFs16i");
    static STRUCT_IF_C BFs16i_BFs16ll_BFs16i_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16ll_BFs16i_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16ll_BFs16i_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16ll_BFs16i_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFs16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16ll_BFs16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFs16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16ll_BFs16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFs16i_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16ll_BFs16i_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFs16i_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16ll_BFs16i_BFs16i, BFs16i_BFs16ll_BFs16i_BFs16i)
//============================================================================


struct  BFs16i_BFs16ll_BFs16i_BFs16ll  {
  signed int v1:16;
  signed __tsi64 v2:16;
  signed int v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16i_BFs16ll_BFs16i_BFs16ll) C1{ Fi:16 FL:16 Fi:16 FL:16}



static void Test_BFs16i_BFs16ll_BFs16i_BFs16ll()
{
  {
    init_simple_test("BFs16i_BFs16ll_BFs16i_BFs16ll");
    static STRUCT_IF_C BFs16i_BFs16ll_BFs16i_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16ll_BFs16i_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16ll_BFs16i_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16ll_BFs16i_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFs16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16ll_BFs16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFs16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16ll_BFs16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFs16i_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16ll_BFs16i_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFs16i_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16ll_BFs16i_BFs16ll, BFs16i_BFs16ll_BFs16i_BFs16ll)
//============================================================================


struct  BFs16i_BFs16ll_BFs16i_BFs16s  {
  signed int v1:16;
  signed __tsi64 v2:16;
  signed int v3:16;
  signed short v4:16;
};
//SIG(1 BFs16i_BFs16ll_BFs16i_BFs16s) C1{ Fi:16 FL:16 Fi:16 Fs:16}



static void Test_BFs16i_BFs16ll_BFs16i_BFs16s()
{
  {
    init_simple_test("BFs16i_BFs16ll_BFs16i_BFs16s");
    static STRUCT_IF_C BFs16i_BFs16ll_BFs16i_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16ll_BFs16i_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16ll_BFs16i_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16ll_BFs16i_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFs16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16ll_BFs16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFs16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16ll_BFs16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFs16i_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16ll_BFs16i_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFs16i_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16ll_BFs16i_BFs16s, BFs16i_BFs16ll_BFs16i_BFs16s)
//============================================================================


struct  BFs16i_BFs16ll_BFs16i_BFu16i  {
  signed int v1:16;
  signed __tsi64 v2:16;
  signed int v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16i_BFs16ll_BFs16i_BFu16i) C1{ Fi:16 FL:16 Fi:16 Fi:16}



static void Test_BFs16i_BFs16ll_BFs16i_BFu16i()
{
  {
    init_simple_test("BFs16i_BFs16ll_BFs16i_BFu16i");
    static STRUCT_IF_C BFs16i_BFs16ll_BFs16i_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16ll_BFs16i_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16ll_BFs16i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16ll_BFs16i_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFs16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16ll_BFs16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFs16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16ll_BFs16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFs16i_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16ll_BFs16i_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16ll_BFs16i_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16ll_BFs16i_BFu16i, BFs16i_BFs16ll_BFs16i_BFu16i)
//============================================================================


struct  BFs16i_BFs16ll_BFs16i_BFu16ll  {
  signed int v1:16;
  signed __tsi64 v2:16;
  signed int v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16i_BFs16ll_BFs16i_BFu16ll) C1{ Fi:16 FL:16 Fi:16 FL:16}



static void Test_BFs16i_BFs16ll_BFs16i_BFu16ll()
{
  {
    init_simple_test("BFs16i_BFs16ll_BFs16i_BFu16ll");
    static STRUCT_IF_C BFs16i_BFs16ll_BFs16i_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16ll_BFs16i_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16ll_BFs16i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16ll_BFs16i_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFs16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16ll_BFs16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFs16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16ll_BFs16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFs16i_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16ll_BFs16i_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16ll_BFs16i_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16ll_BFs16i_BFu16ll, BFs16i_BFs16ll_BFs16i_BFu16ll)
//============================================================================


struct  BFs16i_BFs16ll_BFs16i_BFu16s  {
  signed int v1:16;
  signed __tsi64 v2:16;
  signed int v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16i_BFs16ll_BFs16i_BFu16s) C1{ Fi:16 FL:16 Fi:16 Fs:16}



static void Test_BFs16i_BFs16ll_BFs16i_BFu16s()
{
  {
    init_simple_test("BFs16i_BFs16ll_BFs16i_BFu16s");
    static STRUCT_IF_C BFs16i_BFs16ll_BFs16i_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16ll_BFs16i_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16ll_BFs16i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16ll_BFs16i_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFs16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16ll_BFs16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFs16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16ll_BFs16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFs16i_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16ll_BFs16i_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16ll_BFs16i_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16ll_BFs16i_BFu16s, BFs16i_BFs16ll_BFs16i_BFu16s)
//============================================================================


struct  BFs16i_BFs16ll_BFs16ll  {
  signed int v1:16;
  signed __tsi64 v2:16;
  signed __tsi64 v3:16;
};
//SIG(1 BFs16i_BFs16ll_BFs16ll) C1{ Fi:16 FL:16 FL:16}



static void Test_BFs16i_BFs16ll_BFs16ll()
{
  {
    init_simple_test("BFs16i_BFs16ll_BFs16ll");
    static STRUCT_IF_C BFs16i_BFs16ll_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16ll_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16ll_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16ll_BFs16ll, BFs16i_BFs16ll_BFs16ll)
//============================================================================


struct  BFs16i_BFs16ll_BFs16ll_BFs16i  {
  signed int v1:16;
  signed __tsi64 v2:16;
  signed __tsi64 v3:16;
  signed int v4:16;
};
//SIG(1 BFs16i_BFs16ll_BFs16ll_BFs16i) C1{ Fi:16 FL:16 FL:16 Fi:16}



static void Test_BFs16i_BFs16ll_BFs16ll_BFs16i()
{
  {
    init_simple_test("BFs16i_BFs16ll_BFs16ll_BFs16i");
    static STRUCT_IF_C BFs16i_BFs16ll_BFs16ll_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16ll_BFs16ll_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16ll_BFs16ll_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16ll_BFs16ll_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFs16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16ll_BFs16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFs16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16ll_BFs16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFs16ll_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16ll_BFs16ll_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFs16ll_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16ll_BFs16ll_BFs16i, BFs16i_BFs16ll_BFs16ll_BFs16i)
//============================================================================


struct  BFs16i_BFs16ll_BFs16ll_BFs16ll  {
  signed int v1:16;
  signed __tsi64 v2:16;
  signed __tsi64 v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16i_BFs16ll_BFs16ll_BFs16ll) C1{ Fi:16 FL:16 FL:16 FL:16}



static void Test_BFs16i_BFs16ll_BFs16ll_BFs16ll()
{
  {
    init_simple_test("BFs16i_BFs16ll_BFs16ll_BFs16ll");
    static STRUCT_IF_C BFs16i_BFs16ll_BFs16ll_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16ll_BFs16ll_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16ll_BFs16ll_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16ll_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16ll_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16ll_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16ll_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFs16ll_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16ll_BFs16ll_BFs16ll, BFs16i_BFs16ll_BFs16ll_BFs16ll)
//============================================================================


struct  BFs16i_BFs16ll_BFs16ll_BFs16s  {
  signed int v1:16;
  signed __tsi64 v2:16;
  signed __tsi64 v3:16;
  signed short v4:16;
};
//SIG(1 BFs16i_BFs16ll_BFs16ll_BFs16s) C1{ Fi:16 FL:16 FL:16 Fs:16}



static void Test_BFs16i_BFs16ll_BFs16ll_BFs16s()
{
  {
    init_simple_test("BFs16i_BFs16ll_BFs16ll_BFs16s");
    static STRUCT_IF_C BFs16i_BFs16ll_BFs16ll_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16ll_BFs16ll_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16ll_BFs16ll_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16ll_BFs16ll_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFs16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16ll_BFs16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFs16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16ll_BFs16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFs16ll_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16ll_BFs16ll_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFs16ll_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16ll_BFs16ll_BFs16s, BFs16i_BFs16ll_BFs16ll_BFs16s)
//============================================================================


struct  BFs16i_BFs16ll_BFs16ll_BFu16i  {
  signed int v1:16;
  signed __tsi64 v2:16;
  signed __tsi64 v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16i_BFs16ll_BFs16ll_BFu16i) C1{ Fi:16 FL:16 FL:16 Fi:16}



static void Test_BFs16i_BFs16ll_BFs16ll_BFu16i()
{
  {
    init_simple_test("BFs16i_BFs16ll_BFs16ll_BFu16i");
    static STRUCT_IF_C BFs16i_BFs16ll_BFs16ll_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16ll_BFs16ll_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16ll_BFs16ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16ll_BFs16ll_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFs16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16ll_BFs16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFs16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16ll_BFs16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFs16ll_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16ll_BFs16ll_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16ll_BFs16ll_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16ll_BFs16ll_BFu16i, BFs16i_BFs16ll_BFs16ll_BFu16i)
//============================================================================


struct  BFs16i_BFs16ll_BFs16ll_BFu16ll  {
  signed int v1:16;
  signed __tsi64 v2:16;
  signed __tsi64 v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16i_BFs16ll_BFs16ll_BFu16ll) C1{ Fi:16 FL:16 FL:16 FL:16}



static void Test_BFs16i_BFs16ll_BFs16ll_BFu16ll()
{
  {
    init_simple_test("BFs16i_BFs16ll_BFs16ll_BFu16ll");
    static STRUCT_IF_C BFs16i_BFs16ll_BFs16ll_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16ll_BFs16ll_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16ll_BFs16ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16ll_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16ll_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16ll_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16ll_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16ll_BFs16ll_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16ll_BFs16ll_BFu16ll, BFs16i_BFs16ll_BFs16ll_BFu16ll)
//============================================================================


struct  BFs16i_BFs16ll_BFs16ll_BFu16s  {
  signed int v1:16;
  signed __tsi64 v2:16;
  signed __tsi64 v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16i_BFs16ll_BFs16ll_BFu16s) C1{ Fi:16 FL:16 FL:16 Fs:16}



static void Test_BFs16i_BFs16ll_BFs16ll_BFu16s()
{
  {
    init_simple_test("BFs16i_BFs16ll_BFs16ll_BFu16s");
    static STRUCT_IF_C BFs16i_BFs16ll_BFs16ll_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16ll_BFs16ll_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16ll_BFs16ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16ll_BFs16ll_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFs16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16ll_BFs16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFs16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16ll_BFs16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFs16ll_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16ll_BFs16ll_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16ll_BFs16ll_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16ll_BFs16ll_BFu16s, BFs16i_BFs16ll_BFs16ll_BFu16s)
//============================================================================


struct  BFs16i_BFs16ll_BFs16s  {
  signed int v1:16;
  signed __tsi64 v2:16;
  signed short v3:16;
};
//SIG(1 BFs16i_BFs16ll_BFs16s) C1{ Fi:16 FL:16 Fs:16}



static void Test_BFs16i_BFs16ll_BFs16s()
{
  {
    init_simple_test("BFs16i_BFs16ll_BFs16s");
    static STRUCT_IF_C BFs16i_BFs16ll_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16ll_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16ll_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16ll_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16ll_BFs16s, BFs16i_BFs16ll_BFs16s)
//============================================================================


struct  BFs16i_BFs16ll_BFs16s_BFs16i  {
  signed int v1:16;
  signed __tsi64 v2:16;
  signed short v3:16;
  signed int v4:16;
};
//SIG(1 BFs16i_BFs16ll_BFs16s_BFs16i) C1{ Fi:16 FL:16 Fs:16 Fi:16}



static void Test_BFs16i_BFs16ll_BFs16s_BFs16i()
{
  {
    init_simple_test("BFs16i_BFs16ll_BFs16s_BFs16i");
    static STRUCT_IF_C BFs16i_BFs16ll_BFs16s_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16ll_BFs16s_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16ll_BFs16s_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16ll_BFs16s_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFs16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16ll_BFs16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFs16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16ll_BFs16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFs16s_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16ll_BFs16s_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFs16s_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16ll_BFs16s_BFs16i, BFs16i_BFs16ll_BFs16s_BFs16i)
//============================================================================


struct  BFs16i_BFs16ll_BFs16s_BFs16ll  {
  signed int v1:16;
  signed __tsi64 v2:16;
  signed short v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16i_BFs16ll_BFs16s_BFs16ll) C1{ Fi:16 FL:16 Fs:16 FL:16}



static void Test_BFs16i_BFs16ll_BFs16s_BFs16ll()
{
  {
    init_simple_test("BFs16i_BFs16ll_BFs16s_BFs16ll");
    static STRUCT_IF_C BFs16i_BFs16ll_BFs16s_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16ll_BFs16s_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16ll_BFs16s_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16ll_BFs16s_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFs16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16ll_BFs16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFs16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16ll_BFs16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFs16s_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16ll_BFs16s_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFs16s_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16ll_BFs16s_BFs16ll, BFs16i_BFs16ll_BFs16s_BFs16ll)
//============================================================================


struct  BFs16i_BFs16ll_BFs16s_BFs16s  {
  signed int v1:16;
  signed __tsi64 v2:16;
  signed short v3:16;
  signed short v4:16;
};
//SIG(1 BFs16i_BFs16ll_BFs16s_BFs16s) C1{ Fi:16 FL:16 Fs:16 Fs:16}



static void Test_BFs16i_BFs16ll_BFs16s_BFs16s()
{
  {
    init_simple_test("BFs16i_BFs16ll_BFs16s_BFs16s");
    static STRUCT_IF_C BFs16i_BFs16ll_BFs16s_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16ll_BFs16s_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16ll_BFs16s_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16ll_BFs16s_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFs16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16ll_BFs16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFs16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16ll_BFs16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFs16s_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16ll_BFs16s_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFs16s_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16ll_BFs16s_BFs16s, BFs16i_BFs16ll_BFs16s_BFs16s)
//============================================================================


struct  BFs16i_BFs16ll_BFs16s_BFu16i  {
  signed int v1:16;
  signed __tsi64 v2:16;
  signed short v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16i_BFs16ll_BFs16s_BFu16i) C1{ Fi:16 FL:16 Fs:16 Fi:16}



static void Test_BFs16i_BFs16ll_BFs16s_BFu16i()
{
  {
    init_simple_test("BFs16i_BFs16ll_BFs16s_BFu16i");
    static STRUCT_IF_C BFs16i_BFs16ll_BFs16s_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16ll_BFs16s_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16ll_BFs16s_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16ll_BFs16s_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFs16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16ll_BFs16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFs16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16ll_BFs16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFs16s_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16ll_BFs16s_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16ll_BFs16s_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16ll_BFs16s_BFu16i, BFs16i_BFs16ll_BFs16s_BFu16i)
//============================================================================


struct  BFs16i_BFs16ll_BFs16s_BFu16ll  {
  signed int v1:16;
  signed __tsi64 v2:16;
  signed short v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16i_BFs16ll_BFs16s_BFu16ll) C1{ Fi:16 FL:16 Fs:16 FL:16}



static void Test_BFs16i_BFs16ll_BFs16s_BFu16ll()
{
  {
    init_simple_test("BFs16i_BFs16ll_BFs16s_BFu16ll");
    static STRUCT_IF_C BFs16i_BFs16ll_BFs16s_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16ll_BFs16s_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16ll_BFs16s_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16ll_BFs16s_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFs16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16ll_BFs16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFs16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16ll_BFs16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFs16s_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16ll_BFs16s_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16ll_BFs16s_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16ll_BFs16s_BFu16ll, BFs16i_BFs16ll_BFs16s_BFu16ll)
//============================================================================


struct  BFs16i_BFs16ll_BFs16s_BFu16s  {
  signed int v1:16;
  signed __tsi64 v2:16;
  signed short v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16i_BFs16ll_BFs16s_BFu16s) C1{ Fi:16 FL:16 Fs:16 Fs:16}



static void Test_BFs16i_BFs16ll_BFs16s_BFu16s()
{
  {
    init_simple_test("BFs16i_BFs16ll_BFs16s_BFu16s");
    static STRUCT_IF_C BFs16i_BFs16ll_BFs16s_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16ll_BFs16s_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16ll_BFs16s_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16ll_BFs16s_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFs16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16ll_BFs16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFs16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16ll_BFs16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFs16s_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16ll_BFs16s_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16ll_BFs16s_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16ll_BFs16s_BFu16s, BFs16i_BFs16ll_BFs16s_BFu16s)
//============================================================================


struct  BFs16i_BFs16ll_BFu16i  {
  signed int v1:16;
  signed __tsi64 v2:16;
  unsigned int v3:16;
};
//SIG(1 BFs16i_BFs16ll_BFu16i) C1{ Fi:16 FL:16 Fi:16}



static void Test_BFs16i_BFs16ll_BFu16i()
{
  {
    init_simple_test("BFs16i_BFs16ll_BFu16i");
    static STRUCT_IF_C BFs16i_BFs16ll_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16ll_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16ll_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16ll_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16ll_BFu16i, BFs16i_BFs16ll_BFu16i)
//============================================================================


struct  BFs16i_BFs16ll_BFu16i_BFs16i  {
  signed int v1:16;
  signed __tsi64 v2:16;
  unsigned int v3:16;
  signed int v4:16;
};
//SIG(1 BFs16i_BFs16ll_BFu16i_BFs16i) C1{ Fi:16 FL:16 Fi:16 Fi:16}



static void Test_BFs16i_BFs16ll_BFu16i_BFs16i()
{
  {
    init_simple_test("BFs16i_BFs16ll_BFu16i_BFs16i");
    static STRUCT_IF_C BFs16i_BFs16ll_BFu16i_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16ll_BFu16i_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16ll_BFu16i_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16ll_BFu16i_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFu16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16ll_BFu16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFu16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16ll_BFu16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16ll_BFu16i_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16ll_BFu16i_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFu16i_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16ll_BFu16i_BFs16i, BFs16i_BFs16ll_BFu16i_BFs16i)
//============================================================================


struct  BFs16i_BFs16ll_BFu16i_BFs16ll  {
  signed int v1:16;
  signed __tsi64 v2:16;
  unsigned int v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16i_BFs16ll_BFu16i_BFs16ll) C1{ Fi:16 FL:16 Fi:16 FL:16}



static void Test_BFs16i_BFs16ll_BFu16i_BFs16ll()
{
  {
    init_simple_test("BFs16i_BFs16ll_BFu16i_BFs16ll");
    static STRUCT_IF_C BFs16i_BFs16ll_BFu16i_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16ll_BFu16i_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16ll_BFu16i_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16ll_BFu16i_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFu16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16ll_BFu16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFu16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16ll_BFu16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16ll_BFu16i_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16ll_BFu16i_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFu16i_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16ll_BFu16i_BFs16ll, BFs16i_BFs16ll_BFu16i_BFs16ll)
//============================================================================


struct  BFs16i_BFs16ll_BFu16i_BFs16s  {
  signed int v1:16;
  signed __tsi64 v2:16;
  unsigned int v3:16;
  signed short v4:16;
};
//SIG(1 BFs16i_BFs16ll_BFu16i_BFs16s) C1{ Fi:16 FL:16 Fi:16 Fs:16}



static void Test_BFs16i_BFs16ll_BFu16i_BFs16s()
{
  {
    init_simple_test("BFs16i_BFs16ll_BFu16i_BFs16s");
    static STRUCT_IF_C BFs16i_BFs16ll_BFu16i_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16ll_BFu16i_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16ll_BFu16i_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16ll_BFu16i_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFu16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16ll_BFu16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFu16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16ll_BFu16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16ll_BFu16i_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16ll_BFu16i_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFu16i_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16ll_BFu16i_BFs16s, BFs16i_BFs16ll_BFu16i_BFs16s)
//============================================================================


struct  BFs16i_BFs16ll_BFu16i_BFu16i  {
  signed int v1:16;
  signed __tsi64 v2:16;
  unsigned int v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16i_BFs16ll_BFu16i_BFu16i) C1{ Fi:16 FL:16 Fi:16 Fi:16}



static void Test_BFs16i_BFs16ll_BFu16i_BFu16i()
{
  {
    init_simple_test("BFs16i_BFs16ll_BFu16i_BFu16i");
    static STRUCT_IF_C BFs16i_BFs16ll_BFu16i_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16ll_BFu16i_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16ll_BFu16i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16ll_BFu16i_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFu16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16ll_BFu16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFu16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16ll_BFu16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16ll_BFu16i_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16ll_BFu16i_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16ll_BFu16i_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16ll_BFu16i_BFu16i, BFs16i_BFs16ll_BFu16i_BFu16i)
//============================================================================


struct  BFs16i_BFs16ll_BFu16i_BFu16ll  {
  signed int v1:16;
  signed __tsi64 v2:16;
  unsigned int v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16i_BFs16ll_BFu16i_BFu16ll) C1{ Fi:16 FL:16 Fi:16 FL:16}



static void Test_BFs16i_BFs16ll_BFu16i_BFu16ll()
{
  {
    init_simple_test("BFs16i_BFs16ll_BFu16i_BFu16ll");
    static STRUCT_IF_C BFs16i_BFs16ll_BFu16i_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16ll_BFu16i_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16ll_BFu16i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16ll_BFu16i_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFu16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16ll_BFu16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFu16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16ll_BFu16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16ll_BFu16i_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16ll_BFu16i_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16ll_BFu16i_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16ll_BFu16i_BFu16ll, BFs16i_BFs16ll_BFu16i_BFu16ll)
//============================================================================


struct  BFs16i_BFs16ll_BFu16i_BFu16s  {
  signed int v1:16;
  signed __tsi64 v2:16;
  unsigned int v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16i_BFs16ll_BFu16i_BFu16s) C1{ Fi:16 FL:16 Fi:16 Fs:16}



static void Test_BFs16i_BFs16ll_BFu16i_BFu16s()
{
  {
    init_simple_test("BFs16i_BFs16ll_BFu16i_BFu16s");
    static STRUCT_IF_C BFs16i_BFs16ll_BFu16i_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16ll_BFu16i_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16ll_BFu16i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16ll_BFu16i_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFu16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16ll_BFu16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFu16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16ll_BFu16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16ll_BFu16i_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16ll_BFu16i_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16ll_BFu16i_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16ll_BFu16i_BFu16s, BFs16i_BFs16ll_BFu16i_BFu16s)
//============================================================================


struct  BFs16i_BFs16ll_BFu16ll  {
  signed int v1:16;
  signed __tsi64 v2:16;
  __tsu64 v3:16;
};
//SIG(1 BFs16i_BFs16ll_BFu16ll) C1{ Fi:16 FL:16 FL:16}



static void Test_BFs16i_BFs16ll_BFu16ll()
{
  {
    init_simple_test("BFs16i_BFs16ll_BFu16ll");
    static STRUCT_IF_C BFs16i_BFs16ll_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16ll_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16ll_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16ll_BFu16ll, BFs16i_BFs16ll_BFu16ll)
//============================================================================


struct  BFs16i_BFs16ll_BFu16ll_BFs16i  {
  signed int v1:16;
  signed __tsi64 v2:16;
  __tsu64 v3:16;
  signed int v4:16;
};
//SIG(1 BFs16i_BFs16ll_BFu16ll_BFs16i) C1{ Fi:16 FL:16 FL:16 Fi:16}



static void Test_BFs16i_BFs16ll_BFu16ll_BFs16i()
{
  {
    init_simple_test("BFs16i_BFs16ll_BFu16ll_BFs16i");
    static STRUCT_IF_C BFs16i_BFs16ll_BFu16ll_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16ll_BFu16ll_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16ll_BFu16ll_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16ll_BFu16ll_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFu16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16ll_BFu16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFu16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16ll_BFu16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16ll_BFu16ll_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16ll_BFu16ll_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFu16ll_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16ll_BFu16ll_BFs16i, BFs16i_BFs16ll_BFu16ll_BFs16i)
//============================================================================


struct  BFs16i_BFs16ll_BFu16ll_BFs16ll  {
  signed int v1:16;
  signed __tsi64 v2:16;
  __tsu64 v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16i_BFs16ll_BFu16ll_BFs16ll) C1{ Fi:16 FL:16 FL:16 FL:16}



static void Test_BFs16i_BFs16ll_BFu16ll_BFs16ll()
{
  {
    init_simple_test("BFs16i_BFs16ll_BFu16ll_BFs16ll");
    static STRUCT_IF_C BFs16i_BFs16ll_BFu16ll_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16ll_BFu16ll_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16ll_BFu16ll_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16ll_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16ll_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16ll_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16ll_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16ll_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFu16ll_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16ll_BFu16ll_BFs16ll, BFs16i_BFs16ll_BFu16ll_BFs16ll)
//============================================================================


struct  BFs16i_BFs16ll_BFu16ll_BFs16s  {
  signed int v1:16;
  signed __tsi64 v2:16;
  __tsu64 v3:16;
  signed short v4:16;
};
//SIG(1 BFs16i_BFs16ll_BFu16ll_BFs16s) C1{ Fi:16 FL:16 FL:16 Fs:16}



static void Test_BFs16i_BFs16ll_BFu16ll_BFs16s()
{
  {
    init_simple_test("BFs16i_BFs16ll_BFu16ll_BFs16s");
    static STRUCT_IF_C BFs16i_BFs16ll_BFu16ll_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16ll_BFu16ll_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16ll_BFu16ll_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16ll_BFu16ll_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFu16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16ll_BFu16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFu16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16ll_BFu16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16ll_BFu16ll_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16ll_BFu16ll_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFu16ll_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16ll_BFu16ll_BFs16s, BFs16i_BFs16ll_BFu16ll_BFs16s)
//============================================================================


struct  BFs16i_BFs16ll_BFu16ll_BFu16i  {
  signed int v1:16;
  signed __tsi64 v2:16;
  __tsu64 v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16i_BFs16ll_BFu16ll_BFu16i) C1{ Fi:16 FL:16 FL:16 Fi:16}



static void Test_BFs16i_BFs16ll_BFu16ll_BFu16i()
{
  {
    init_simple_test("BFs16i_BFs16ll_BFu16ll_BFu16i");
    static STRUCT_IF_C BFs16i_BFs16ll_BFu16ll_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16ll_BFu16ll_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16ll_BFu16ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16ll_BFu16ll_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFu16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16ll_BFu16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFu16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16ll_BFu16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16ll_BFu16ll_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16ll_BFu16ll_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16ll_BFu16ll_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16ll_BFu16ll_BFu16i, BFs16i_BFs16ll_BFu16ll_BFu16i)
//============================================================================


struct  BFs16i_BFs16ll_BFu16ll_BFu16ll  {
  signed int v1:16;
  signed __tsi64 v2:16;
  __tsu64 v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16i_BFs16ll_BFu16ll_BFu16ll) C1{ Fi:16 FL:16 FL:16 FL:16}



static void Test_BFs16i_BFs16ll_BFu16ll_BFu16ll()
{
  {
    init_simple_test("BFs16i_BFs16ll_BFu16ll_BFu16ll");
    static STRUCT_IF_C BFs16i_BFs16ll_BFu16ll_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16ll_BFu16ll_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16ll_BFu16ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16ll_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16ll_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16ll_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16ll_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16ll_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16ll_BFu16ll_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16ll_BFu16ll_BFu16ll, BFs16i_BFs16ll_BFu16ll_BFu16ll)
//============================================================================


struct  BFs16i_BFs16ll_BFu16ll_BFu16s  {
  signed int v1:16;
  signed __tsi64 v2:16;
  __tsu64 v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16i_BFs16ll_BFu16ll_BFu16s) C1{ Fi:16 FL:16 FL:16 Fs:16}



static void Test_BFs16i_BFs16ll_BFu16ll_BFu16s()
{
  {
    init_simple_test("BFs16i_BFs16ll_BFu16ll_BFu16s");
    static STRUCT_IF_C BFs16i_BFs16ll_BFu16ll_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16ll_BFu16ll_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16ll_BFu16ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16ll_BFu16ll_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFu16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16ll_BFu16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFu16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16ll_BFu16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16ll_BFu16ll_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16ll_BFu16ll_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16ll_BFu16ll_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16ll_BFu16ll_BFu16s, BFs16i_BFs16ll_BFu16ll_BFu16s)
//============================================================================


struct  BFs16i_BFs16ll_BFu16s  {
  signed int v1:16;
  signed __tsi64 v2:16;
  unsigned short v3:16;
};
//SIG(1 BFs16i_BFs16ll_BFu16s) C1{ Fi:16 FL:16 Fs:16}



static void Test_BFs16i_BFs16ll_BFu16s()
{
  {
    init_simple_test("BFs16i_BFs16ll_BFu16s");
    static STRUCT_IF_C BFs16i_BFs16ll_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16ll_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16ll_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16ll_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16ll_BFu16s, BFs16i_BFs16ll_BFu16s)
//============================================================================


struct  BFs16i_BFs16ll_BFu16s_BFs16i  {
  signed int v1:16;
  signed __tsi64 v2:16;
  unsigned short v3:16;
  signed int v4:16;
};
//SIG(1 BFs16i_BFs16ll_BFu16s_BFs16i) C1{ Fi:16 FL:16 Fs:16 Fi:16}



static void Test_BFs16i_BFs16ll_BFu16s_BFs16i()
{
  {
    init_simple_test("BFs16i_BFs16ll_BFu16s_BFs16i");
    static STRUCT_IF_C BFs16i_BFs16ll_BFu16s_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16ll_BFu16s_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16ll_BFu16s_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16ll_BFu16s_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFu16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16ll_BFu16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFu16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16ll_BFu16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16ll_BFu16s_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16ll_BFu16s_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFu16s_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16ll_BFu16s_BFs16i, BFs16i_BFs16ll_BFu16s_BFs16i)
//============================================================================


struct  BFs16i_BFs16ll_BFu16s_BFs16ll  {
  signed int v1:16;
  signed __tsi64 v2:16;
  unsigned short v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16i_BFs16ll_BFu16s_BFs16ll) C1{ Fi:16 FL:16 Fs:16 FL:16}



static void Test_BFs16i_BFs16ll_BFu16s_BFs16ll()
{
  {
    init_simple_test("BFs16i_BFs16ll_BFu16s_BFs16ll");
    static STRUCT_IF_C BFs16i_BFs16ll_BFu16s_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16ll_BFu16s_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16ll_BFu16s_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16ll_BFu16s_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFu16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16ll_BFu16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFu16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16ll_BFu16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16ll_BFu16s_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16ll_BFu16s_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFu16s_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16ll_BFu16s_BFs16ll, BFs16i_BFs16ll_BFu16s_BFs16ll)
//============================================================================


struct  BFs16i_BFs16ll_BFu16s_BFs16s  {
  signed int v1:16;
  signed __tsi64 v2:16;
  unsigned short v3:16;
  signed short v4:16;
};
//SIG(1 BFs16i_BFs16ll_BFu16s_BFs16s) C1{ Fi:16 FL:16 Fs:16 Fs:16}



static void Test_BFs16i_BFs16ll_BFu16s_BFs16s()
{
  {
    init_simple_test("BFs16i_BFs16ll_BFu16s_BFs16s");
    static STRUCT_IF_C BFs16i_BFs16ll_BFu16s_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16ll_BFu16s_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16ll_BFu16s_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16ll_BFu16s_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFu16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16ll_BFu16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFu16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16ll_BFu16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16ll_BFu16s_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16ll_BFu16s_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFu16s_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16ll_BFu16s_BFs16s, BFs16i_BFs16ll_BFu16s_BFs16s)
//============================================================================


struct  BFs16i_BFs16ll_BFu16s_BFu16i  {
  signed int v1:16;
  signed __tsi64 v2:16;
  unsigned short v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16i_BFs16ll_BFu16s_BFu16i) C1{ Fi:16 FL:16 Fs:16 Fi:16}



static void Test_BFs16i_BFs16ll_BFu16s_BFu16i()
{
  {
    init_simple_test("BFs16i_BFs16ll_BFu16s_BFu16i");
    static STRUCT_IF_C BFs16i_BFs16ll_BFu16s_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16ll_BFu16s_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16ll_BFu16s_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16ll_BFu16s_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFu16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16ll_BFu16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFu16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16ll_BFu16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16ll_BFu16s_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16ll_BFu16s_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16ll_BFu16s_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16ll_BFu16s_BFu16i, BFs16i_BFs16ll_BFu16s_BFu16i)
//============================================================================


struct  BFs16i_BFs16ll_BFu16s_BFu16ll  {
  signed int v1:16;
  signed __tsi64 v2:16;
  unsigned short v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16i_BFs16ll_BFu16s_BFu16ll) C1{ Fi:16 FL:16 Fs:16 FL:16}



static void Test_BFs16i_BFs16ll_BFu16s_BFu16ll()
{
  {
    init_simple_test("BFs16i_BFs16ll_BFu16s_BFu16ll");
    static STRUCT_IF_C BFs16i_BFs16ll_BFu16s_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16ll_BFu16s_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16ll_BFu16s_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16ll_BFu16s_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFu16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16ll_BFu16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFu16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16ll_BFu16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16ll_BFu16s_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16ll_BFu16s_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16ll_BFu16s_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16ll_BFu16s_BFu16ll, BFs16i_BFs16ll_BFu16s_BFu16ll)
//============================================================================


struct  BFs16i_BFs16ll_BFu16s_BFu16s  {
  signed int v1:16;
  signed __tsi64 v2:16;
  unsigned short v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16i_BFs16ll_BFu16s_BFu16s) C1{ Fi:16 FL:16 Fs:16 Fs:16}



static void Test_BFs16i_BFs16ll_BFu16s_BFu16s()
{
  {
    init_simple_test("BFs16i_BFs16ll_BFu16s_BFu16s");
    static STRUCT_IF_C BFs16i_BFs16ll_BFu16s_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16ll_BFu16s_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16ll_BFu16s_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16ll_BFu16s_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFu16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16ll_BFu16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16ll_BFu16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16ll_BFu16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16ll_BFu16s_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16ll_BFu16s_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16ll_BFu16s_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16ll_BFu16s_BFu16s, BFs16i_BFs16ll_BFu16s_BFu16s)
//============================================================================


struct  BFs16i_BFs16s  {
  signed int v1:16;
  signed short v2:16;
};
//SIG(1 BFs16i_BFs16s) C1{ Fi:16 Fs:16}



static void Test_BFs16i_BFs16s()
{
  {
    init_simple_test("BFs16i_BFs16s");
    static STRUCT_IF_C BFs16i_BFs16s lv;
    check2(sizeof(lv), 4, "sizeof(BFs16i_BFs16s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16s, BFs16i_BFs16s)
//============================================================================


struct  BFs16i_BFs16s_BFs16i  {
  signed int v1:16;
  signed short v2:16;
  signed int v3:16;
};
//SIG(1 BFs16i_BFs16s_BFs16i) C1{ Fi:16 Fs:16 Fi:16}



static void Test_BFs16i_BFs16s_BFs16i()
{
  {
    init_simple_test("BFs16i_BFs16s_BFs16i");
    static STRUCT_IF_C BFs16i_BFs16s_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16s_BFs16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFs16s_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16s_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16s_BFs16i, BFs16i_BFs16s_BFs16i)
//============================================================================


struct  BFs16i_BFs16s_BFs16i_BFs16i  {
  signed int v1:16;
  signed short v2:16;
  signed int v3:16;
  signed int v4:16;
};
//SIG(1 BFs16i_BFs16s_BFs16i_BFs16i) C1{ Fi:16 Fs:16 Fi:16 Fi:16}



static void Test_BFs16i_BFs16s_BFs16i_BFs16i()
{
  {
    init_simple_test("BFs16i_BFs16s_BFs16i_BFs16i");
    static STRUCT_IF_C BFs16i_BFs16s_BFs16i_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16s_BFs16i_BFs16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFs16s_BFs16i_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16s_BFs16i_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFs16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16s_BFs16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFs16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16s_BFs16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFs16i_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16s_BFs16i_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFs16i_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16s_BFs16i_BFs16i, BFs16i_BFs16s_BFs16i_BFs16i)
//============================================================================


struct  BFs16i_BFs16s_BFs16i_BFs16ll  {
  signed int v1:16;
  signed short v2:16;
  signed int v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16i_BFs16s_BFs16i_BFs16ll) C1{ Fi:16 Fs:16 Fi:16 FL:16}



static void Test_BFs16i_BFs16s_BFs16i_BFs16ll()
{
  {
    init_simple_test("BFs16i_BFs16s_BFs16i_BFs16ll");
    static STRUCT_IF_C BFs16i_BFs16s_BFs16i_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16s_BFs16i_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16s_BFs16i_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16s_BFs16i_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFs16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16s_BFs16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFs16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16s_BFs16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFs16i_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16s_BFs16i_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFs16i_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16s_BFs16i_BFs16ll, BFs16i_BFs16s_BFs16i_BFs16ll)
//============================================================================


struct  BFs16i_BFs16s_BFs16i_BFs16s  {
  signed int v1:16;
  signed short v2:16;
  signed int v3:16;
  signed short v4:16;
};
//SIG(1 BFs16i_BFs16s_BFs16i_BFs16s) C1{ Fi:16 Fs:16 Fi:16 Fs:16}



static void Test_BFs16i_BFs16s_BFs16i_BFs16s()
{
  {
    init_simple_test("BFs16i_BFs16s_BFs16i_BFs16s");
    static STRUCT_IF_C BFs16i_BFs16s_BFs16i_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16s_BFs16i_BFs16s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFs16s_BFs16i_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16s_BFs16i_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFs16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16s_BFs16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFs16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16s_BFs16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFs16i_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16s_BFs16i_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFs16i_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16s_BFs16i_BFs16s, BFs16i_BFs16s_BFs16i_BFs16s)
//============================================================================


struct  BFs16i_BFs16s_BFs16i_BFu16i  {
  signed int v1:16;
  signed short v2:16;
  signed int v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16i_BFs16s_BFs16i_BFu16i) C1{ Fi:16 Fs:16 Fi:16 Fi:16}



static void Test_BFs16i_BFs16s_BFs16i_BFu16i()
{
  {
    init_simple_test("BFs16i_BFs16s_BFs16i_BFu16i");
    static STRUCT_IF_C BFs16i_BFs16s_BFs16i_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16s_BFs16i_BFu16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFs16s_BFs16i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16s_BFs16i_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFs16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16s_BFs16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFs16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16s_BFs16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFs16i_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16s_BFs16i_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16s_BFs16i_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16s_BFs16i_BFu16i, BFs16i_BFs16s_BFs16i_BFu16i)
//============================================================================


struct  BFs16i_BFs16s_BFs16i_BFu16ll  {
  signed int v1:16;
  signed short v2:16;
  signed int v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16i_BFs16s_BFs16i_BFu16ll) C1{ Fi:16 Fs:16 Fi:16 FL:16}



static void Test_BFs16i_BFs16s_BFs16i_BFu16ll()
{
  {
    init_simple_test("BFs16i_BFs16s_BFs16i_BFu16ll");
    static STRUCT_IF_C BFs16i_BFs16s_BFs16i_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16s_BFs16i_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16s_BFs16i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16s_BFs16i_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFs16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16s_BFs16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFs16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16s_BFs16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFs16i_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16s_BFs16i_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16s_BFs16i_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16s_BFs16i_BFu16ll, BFs16i_BFs16s_BFs16i_BFu16ll)
//============================================================================


struct  BFs16i_BFs16s_BFs16i_BFu16s  {
  signed int v1:16;
  signed short v2:16;
  signed int v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16i_BFs16s_BFs16i_BFu16s) C1{ Fi:16 Fs:16 Fi:16 Fs:16}



static void Test_BFs16i_BFs16s_BFs16i_BFu16s()
{
  {
    init_simple_test("BFs16i_BFs16s_BFs16i_BFu16s");
    static STRUCT_IF_C BFs16i_BFs16s_BFs16i_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16s_BFs16i_BFu16s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFs16s_BFs16i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16s_BFs16i_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFs16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16s_BFs16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFs16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16s_BFs16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFs16i_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16s_BFs16i_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16s_BFs16i_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16s_BFs16i_BFu16s, BFs16i_BFs16s_BFs16i_BFu16s)
//============================================================================


struct  BFs16i_BFs16s_BFs16ll  {
  signed int v1:16;
  signed short v2:16;
  signed __tsi64 v3:16;
};
//SIG(1 BFs16i_BFs16s_BFs16ll) C1{ Fi:16 Fs:16 FL:16}



static void Test_BFs16i_BFs16s_BFs16ll()
{
  {
    init_simple_test("BFs16i_BFs16s_BFs16ll");
    static STRUCT_IF_C BFs16i_BFs16s_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16s_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16s_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16s_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16s_BFs16ll, BFs16i_BFs16s_BFs16ll)
//============================================================================


struct  BFs16i_BFs16s_BFs16ll_BFs16i  {
  signed int v1:16;
  signed short v2:16;
  signed __tsi64 v3:16;
  signed int v4:16;
};
//SIG(1 BFs16i_BFs16s_BFs16ll_BFs16i) C1{ Fi:16 Fs:16 FL:16 Fi:16}



static void Test_BFs16i_BFs16s_BFs16ll_BFs16i()
{
  {
    init_simple_test("BFs16i_BFs16s_BFs16ll_BFs16i");
    static STRUCT_IF_C BFs16i_BFs16s_BFs16ll_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16s_BFs16ll_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16s_BFs16ll_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16s_BFs16ll_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFs16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16s_BFs16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFs16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16s_BFs16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFs16ll_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16s_BFs16ll_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFs16ll_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16s_BFs16ll_BFs16i, BFs16i_BFs16s_BFs16ll_BFs16i)
//============================================================================


struct  BFs16i_BFs16s_BFs16ll_BFs16ll  {
  signed int v1:16;
  signed short v2:16;
  signed __tsi64 v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16i_BFs16s_BFs16ll_BFs16ll) C1{ Fi:16 Fs:16 FL:16 FL:16}



static void Test_BFs16i_BFs16s_BFs16ll_BFs16ll()
{
  {
    init_simple_test("BFs16i_BFs16s_BFs16ll_BFs16ll");
    static STRUCT_IF_C BFs16i_BFs16s_BFs16ll_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16s_BFs16ll_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16s_BFs16ll_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16s_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16s_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16s_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16s_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFs16ll_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16s_BFs16ll_BFs16ll, BFs16i_BFs16s_BFs16ll_BFs16ll)
//============================================================================


struct  BFs16i_BFs16s_BFs16ll_BFs16s  {
  signed int v1:16;
  signed short v2:16;
  signed __tsi64 v3:16;
  signed short v4:16;
};
//SIG(1 BFs16i_BFs16s_BFs16ll_BFs16s) C1{ Fi:16 Fs:16 FL:16 Fs:16}



static void Test_BFs16i_BFs16s_BFs16ll_BFs16s()
{
  {
    init_simple_test("BFs16i_BFs16s_BFs16ll_BFs16s");
    static STRUCT_IF_C BFs16i_BFs16s_BFs16ll_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16s_BFs16ll_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16s_BFs16ll_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16s_BFs16ll_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFs16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16s_BFs16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFs16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16s_BFs16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFs16ll_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16s_BFs16ll_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFs16ll_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16s_BFs16ll_BFs16s, BFs16i_BFs16s_BFs16ll_BFs16s)
//============================================================================


struct  BFs16i_BFs16s_BFs16ll_BFu16i  {
  signed int v1:16;
  signed short v2:16;
  signed __tsi64 v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16i_BFs16s_BFs16ll_BFu16i) C1{ Fi:16 Fs:16 FL:16 Fi:16}



static void Test_BFs16i_BFs16s_BFs16ll_BFu16i()
{
  {
    init_simple_test("BFs16i_BFs16s_BFs16ll_BFu16i");
    static STRUCT_IF_C BFs16i_BFs16s_BFs16ll_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16s_BFs16ll_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16s_BFs16ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16s_BFs16ll_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFs16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16s_BFs16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFs16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16s_BFs16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFs16ll_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16s_BFs16ll_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16s_BFs16ll_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16s_BFs16ll_BFu16i, BFs16i_BFs16s_BFs16ll_BFu16i)
//============================================================================


struct  BFs16i_BFs16s_BFs16ll_BFu16ll  {
  signed int v1:16;
  signed short v2:16;
  signed __tsi64 v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16i_BFs16s_BFs16ll_BFu16ll) C1{ Fi:16 Fs:16 FL:16 FL:16}



static void Test_BFs16i_BFs16s_BFs16ll_BFu16ll()
{
  {
    init_simple_test("BFs16i_BFs16s_BFs16ll_BFu16ll");
    static STRUCT_IF_C BFs16i_BFs16s_BFs16ll_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16s_BFs16ll_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16s_BFs16ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16s_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16s_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16s_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16s_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16s_BFs16ll_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16s_BFs16ll_BFu16ll, BFs16i_BFs16s_BFs16ll_BFu16ll)
//============================================================================


struct  BFs16i_BFs16s_BFs16ll_BFu16s  {
  signed int v1:16;
  signed short v2:16;
  signed __tsi64 v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16i_BFs16s_BFs16ll_BFu16s) C1{ Fi:16 Fs:16 FL:16 Fs:16}



static void Test_BFs16i_BFs16s_BFs16ll_BFu16s()
{
  {
    init_simple_test("BFs16i_BFs16s_BFs16ll_BFu16s");
    static STRUCT_IF_C BFs16i_BFs16s_BFs16ll_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16s_BFs16ll_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16s_BFs16ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16s_BFs16ll_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFs16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16s_BFs16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFs16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16s_BFs16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFs16ll_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16s_BFs16ll_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16s_BFs16ll_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16s_BFs16ll_BFu16s, BFs16i_BFs16s_BFs16ll_BFu16s)
//============================================================================


struct  BFs16i_BFs16s_BFs16s  {
  signed int v1:16;
  signed short v2:16;
  signed short v3:16;
};
//SIG(1 BFs16i_BFs16s_BFs16s) C1{ Fi:16 Fs:16 Fs:16}



static void Test_BFs16i_BFs16s_BFs16s()
{
  {
    init_simple_test("BFs16i_BFs16s_BFs16s");
    static STRUCT_IF_C BFs16i_BFs16s_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16s_BFs16s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFs16s_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16s_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16s_BFs16s, BFs16i_BFs16s_BFs16s)
//============================================================================


struct  BFs16i_BFs16s_BFs16s_BFs16i  {
  signed int v1:16;
  signed short v2:16;
  signed short v3:16;
  signed int v4:16;
};
//SIG(1 BFs16i_BFs16s_BFs16s_BFs16i) C1{ Fi:16 Fs:16 Fs:16 Fi:16}



static void Test_BFs16i_BFs16s_BFs16s_BFs16i()
{
  {
    init_simple_test("BFs16i_BFs16s_BFs16s_BFs16i");
    static STRUCT_IF_C BFs16i_BFs16s_BFs16s_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16s_BFs16s_BFs16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFs16s_BFs16s_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16s_BFs16s_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFs16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16s_BFs16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFs16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16s_BFs16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFs16s_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16s_BFs16s_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFs16s_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16s_BFs16s_BFs16i, BFs16i_BFs16s_BFs16s_BFs16i)
//============================================================================


struct  BFs16i_BFs16s_BFs16s_BFs16ll  {
  signed int v1:16;
  signed short v2:16;
  signed short v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16i_BFs16s_BFs16s_BFs16ll) C1{ Fi:16 Fs:16 Fs:16 FL:16}



static void Test_BFs16i_BFs16s_BFs16s_BFs16ll()
{
  {
    init_simple_test("BFs16i_BFs16s_BFs16s_BFs16ll");
    static STRUCT_IF_C BFs16i_BFs16s_BFs16s_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16s_BFs16s_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16s_BFs16s_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16s_BFs16s_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFs16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16s_BFs16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFs16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16s_BFs16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFs16s_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16s_BFs16s_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFs16s_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16s_BFs16s_BFs16ll, BFs16i_BFs16s_BFs16s_BFs16ll)
//============================================================================


struct  BFs16i_BFs16s_BFs16s_BFs16s  {
  signed int v1:16;
  signed short v2:16;
  signed short v3:16;
  signed short v4:16;
};
//SIG(1 BFs16i_BFs16s_BFs16s_BFs16s) C1{ Fi:16 Fs:16 Fs:16 Fs:16}



static void Test_BFs16i_BFs16s_BFs16s_BFs16s()
{
  {
    init_simple_test("BFs16i_BFs16s_BFs16s_BFs16s");
    static STRUCT_IF_C BFs16i_BFs16s_BFs16s_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16s_BFs16s_BFs16s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFs16s_BFs16s_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16s_BFs16s_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFs16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16s_BFs16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFs16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16s_BFs16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFs16s_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16s_BFs16s_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFs16s_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16s_BFs16s_BFs16s, BFs16i_BFs16s_BFs16s_BFs16s)
//============================================================================


struct  BFs16i_BFs16s_BFs16s_BFu16i  {
  signed int v1:16;
  signed short v2:16;
  signed short v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16i_BFs16s_BFs16s_BFu16i) C1{ Fi:16 Fs:16 Fs:16 Fi:16}



static void Test_BFs16i_BFs16s_BFs16s_BFu16i()
{
  {
    init_simple_test("BFs16i_BFs16s_BFs16s_BFu16i");
    static STRUCT_IF_C BFs16i_BFs16s_BFs16s_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16s_BFs16s_BFu16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFs16s_BFs16s_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16s_BFs16s_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFs16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16s_BFs16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFs16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16s_BFs16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFs16s_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16s_BFs16s_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16s_BFs16s_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16s_BFs16s_BFu16i, BFs16i_BFs16s_BFs16s_BFu16i)
//============================================================================


struct  BFs16i_BFs16s_BFs16s_BFu16ll  {
  signed int v1:16;
  signed short v2:16;
  signed short v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16i_BFs16s_BFs16s_BFu16ll) C1{ Fi:16 Fs:16 Fs:16 FL:16}



static void Test_BFs16i_BFs16s_BFs16s_BFu16ll()
{
  {
    init_simple_test("BFs16i_BFs16s_BFs16s_BFu16ll");
    static STRUCT_IF_C BFs16i_BFs16s_BFs16s_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16s_BFs16s_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16s_BFs16s_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16s_BFs16s_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFs16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16s_BFs16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFs16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16s_BFs16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFs16s_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16s_BFs16s_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16s_BFs16s_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16s_BFs16s_BFu16ll, BFs16i_BFs16s_BFs16s_BFu16ll)
//============================================================================


struct  BFs16i_BFs16s_BFs16s_BFu16s  {
  signed int v1:16;
  signed short v2:16;
  signed short v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16i_BFs16s_BFs16s_BFu16s) C1{ Fi:16 Fs:16 Fs:16 Fs:16}



static void Test_BFs16i_BFs16s_BFs16s_BFu16s()
{
  {
    init_simple_test("BFs16i_BFs16s_BFs16s_BFu16s");
    static STRUCT_IF_C BFs16i_BFs16s_BFs16s_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16s_BFs16s_BFu16s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFs16s_BFs16s_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16s_BFs16s_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFs16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16s_BFs16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFs16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16s_BFs16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFs16s_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16s_BFs16s_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16s_BFs16s_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16s_BFs16s_BFu16s, BFs16i_BFs16s_BFs16s_BFu16s)
//============================================================================


struct  BFs16i_BFs16s_BFu16i  {
  signed int v1:16;
  signed short v2:16;
  unsigned int v3:16;
};
//SIG(1 BFs16i_BFs16s_BFu16i) C1{ Fi:16 Fs:16 Fi:16}



static void Test_BFs16i_BFs16s_BFu16i()
{
  {
    init_simple_test("BFs16i_BFs16s_BFu16i");
    static STRUCT_IF_C BFs16i_BFs16s_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16s_BFu16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFs16s_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16s_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16s_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16s_BFu16i, BFs16i_BFs16s_BFu16i)
//============================================================================


struct  BFs16i_BFs16s_BFu16i_BFs16i  {
  signed int v1:16;
  signed short v2:16;
  unsigned int v3:16;
  signed int v4:16;
};
//SIG(1 BFs16i_BFs16s_BFu16i_BFs16i) C1{ Fi:16 Fs:16 Fi:16 Fi:16}



static void Test_BFs16i_BFs16s_BFu16i_BFs16i()
{
  {
    init_simple_test("BFs16i_BFs16s_BFu16i_BFs16i");
    static STRUCT_IF_C BFs16i_BFs16s_BFu16i_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16s_BFu16i_BFs16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFs16s_BFu16i_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16s_BFu16i_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFu16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16s_BFu16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFu16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16s_BFu16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16s_BFu16i_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16s_BFu16i_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFu16i_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16s_BFu16i_BFs16i, BFs16i_BFs16s_BFu16i_BFs16i)
//============================================================================


struct  BFs16i_BFs16s_BFu16i_BFs16ll  {
  signed int v1:16;
  signed short v2:16;
  unsigned int v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16i_BFs16s_BFu16i_BFs16ll) C1{ Fi:16 Fs:16 Fi:16 FL:16}



static void Test_BFs16i_BFs16s_BFu16i_BFs16ll()
{
  {
    init_simple_test("BFs16i_BFs16s_BFu16i_BFs16ll");
    static STRUCT_IF_C BFs16i_BFs16s_BFu16i_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16s_BFu16i_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16s_BFu16i_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16s_BFu16i_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFu16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16s_BFu16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFu16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16s_BFu16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16s_BFu16i_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16s_BFu16i_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFu16i_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16s_BFu16i_BFs16ll, BFs16i_BFs16s_BFu16i_BFs16ll)
//============================================================================


struct  BFs16i_BFs16s_BFu16i_BFs16s  {
  signed int v1:16;
  signed short v2:16;
  unsigned int v3:16;
  signed short v4:16;
};
//SIG(1 BFs16i_BFs16s_BFu16i_BFs16s) C1{ Fi:16 Fs:16 Fi:16 Fs:16}



static void Test_BFs16i_BFs16s_BFu16i_BFs16s()
{
  {
    init_simple_test("BFs16i_BFs16s_BFu16i_BFs16s");
    static STRUCT_IF_C BFs16i_BFs16s_BFu16i_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16s_BFu16i_BFs16s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFs16s_BFu16i_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16s_BFu16i_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFu16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16s_BFu16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFu16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16s_BFu16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16s_BFu16i_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16s_BFu16i_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFu16i_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16s_BFu16i_BFs16s, BFs16i_BFs16s_BFu16i_BFs16s)
//============================================================================


struct  BFs16i_BFs16s_BFu16i_BFu16i  {
  signed int v1:16;
  signed short v2:16;
  unsigned int v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16i_BFs16s_BFu16i_BFu16i) C1{ Fi:16 Fs:16 Fi:16 Fi:16}



static void Test_BFs16i_BFs16s_BFu16i_BFu16i()
{
  {
    init_simple_test("BFs16i_BFs16s_BFu16i_BFu16i");
    static STRUCT_IF_C BFs16i_BFs16s_BFu16i_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16s_BFu16i_BFu16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFs16s_BFu16i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16s_BFu16i_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFu16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16s_BFu16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFu16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16s_BFu16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16s_BFu16i_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16s_BFu16i_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16s_BFu16i_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16s_BFu16i_BFu16i, BFs16i_BFs16s_BFu16i_BFu16i)
//============================================================================


struct  BFs16i_BFs16s_BFu16i_BFu16ll  {
  signed int v1:16;
  signed short v2:16;
  unsigned int v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16i_BFs16s_BFu16i_BFu16ll) C1{ Fi:16 Fs:16 Fi:16 FL:16}



static void Test_BFs16i_BFs16s_BFu16i_BFu16ll()
{
  {
    init_simple_test("BFs16i_BFs16s_BFu16i_BFu16ll");
    static STRUCT_IF_C BFs16i_BFs16s_BFu16i_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16s_BFu16i_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16s_BFu16i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16s_BFu16i_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFu16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16s_BFu16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFu16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16s_BFu16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16s_BFu16i_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16s_BFu16i_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16s_BFu16i_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16s_BFu16i_BFu16ll, BFs16i_BFs16s_BFu16i_BFu16ll)
//============================================================================


struct  BFs16i_BFs16s_BFu16i_BFu16s  {
  signed int v1:16;
  signed short v2:16;
  unsigned int v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16i_BFs16s_BFu16i_BFu16s) C1{ Fi:16 Fs:16 Fi:16 Fs:16}



static void Test_BFs16i_BFs16s_BFu16i_BFu16s()
{
  {
    init_simple_test("BFs16i_BFs16s_BFu16i_BFu16s");
    static STRUCT_IF_C BFs16i_BFs16s_BFu16i_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16s_BFu16i_BFu16s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFs16s_BFu16i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16s_BFu16i_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFu16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16s_BFu16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFu16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16s_BFu16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16s_BFu16i_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16s_BFu16i_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16s_BFu16i_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16s_BFu16i_BFu16s, BFs16i_BFs16s_BFu16i_BFu16s)
//============================================================================


struct  BFs16i_BFs16s_BFu16ll  {
  signed int v1:16;
  signed short v2:16;
  __tsu64 v3:16;
};
//SIG(1 BFs16i_BFs16s_BFu16ll) C1{ Fi:16 Fs:16 FL:16}



static void Test_BFs16i_BFs16s_BFu16ll()
{
  {
    init_simple_test("BFs16i_BFs16s_BFu16ll");
    static STRUCT_IF_C BFs16i_BFs16s_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16s_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16s_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16s_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16s_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16s_BFu16ll, BFs16i_BFs16s_BFu16ll)
//============================================================================


struct  BFs16i_BFs16s_BFu16ll_BFs16i  {
  signed int v1:16;
  signed short v2:16;
  __tsu64 v3:16;
  signed int v4:16;
};
//SIG(1 BFs16i_BFs16s_BFu16ll_BFs16i) C1{ Fi:16 Fs:16 FL:16 Fi:16}



static void Test_BFs16i_BFs16s_BFu16ll_BFs16i()
{
  {
    init_simple_test("BFs16i_BFs16s_BFu16ll_BFs16i");
    static STRUCT_IF_C BFs16i_BFs16s_BFu16ll_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16s_BFu16ll_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16s_BFu16ll_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16s_BFu16ll_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFu16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16s_BFu16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFu16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16s_BFu16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16s_BFu16ll_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16s_BFu16ll_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFu16ll_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16s_BFu16ll_BFs16i, BFs16i_BFs16s_BFu16ll_BFs16i)
//============================================================================


struct  BFs16i_BFs16s_BFu16ll_BFs16ll  {
  signed int v1:16;
  signed short v2:16;
  __tsu64 v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16i_BFs16s_BFu16ll_BFs16ll) C1{ Fi:16 Fs:16 FL:16 FL:16}



static void Test_BFs16i_BFs16s_BFu16ll_BFs16ll()
{
  {
    init_simple_test("BFs16i_BFs16s_BFu16ll_BFs16ll");
    static STRUCT_IF_C BFs16i_BFs16s_BFu16ll_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16s_BFu16ll_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16s_BFu16ll_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16s_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16s_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16s_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16s_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16s_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFu16ll_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16s_BFu16ll_BFs16ll, BFs16i_BFs16s_BFu16ll_BFs16ll)
//============================================================================


struct  BFs16i_BFs16s_BFu16ll_BFs16s  {
  signed int v1:16;
  signed short v2:16;
  __tsu64 v3:16;
  signed short v4:16;
};
//SIG(1 BFs16i_BFs16s_BFu16ll_BFs16s) C1{ Fi:16 Fs:16 FL:16 Fs:16}



static void Test_BFs16i_BFs16s_BFu16ll_BFs16s()
{
  {
    init_simple_test("BFs16i_BFs16s_BFu16ll_BFs16s");
    static STRUCT_IF_C BFs16i_BFs16s_BFu16ll_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16s_BFu16ll_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16s_BFu16ll_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16s_BFu16ll_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFu16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16s_BFu16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFu16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16s_BFu16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16s_BFu16ll_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16s_BFu16ll_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFu16ll_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16s_BFu16ll_BFs16s, BFs16i_BFs16s_BFu16ll_BFs16s)
//============================================================================


struct  BFs16i_BFs16s_BFu16ll_BFu16i  {
  signed int v1:16;
  signed short v2:16;
  __tsu64 v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16i_BFs16s_BFu16ll_BFu16i) C1{ Fi:16 Fs:16 FL:16 Fi:16}



static void Test_BFs16i_BFs16s_BFu16ll_BFu16i()
{
  {
    init_simple_test("BFs16i_BFs16s_BFu16ll_BFu16i");
    static STRUCT_IF_C BFs16i_BFs16s_BFu16ll_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16s_BFu16ll_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16s_BFu16ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16s_BFu16ll_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFu16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16s_BFu16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFu16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16s_BFu16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16s_BFu16ll_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16s_BFu16ll_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16s_BFu16ll_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16s_BFu16ll_BFu16i, BFs16i_BFs16s_BFu16ll_BFu16i)
//============================================================================


struct  BFs16i_BFs16s_BFu16ll_BFu16ll  {
  signed int v1:16;
  signed short v2:16;
  __tsu64 v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16i_BFs16s_BFu16ll_BFu16ll) C1{ Fi:16 Fs:16 FL:16 FL:16}



static void Test_BFs16i_BFs16s_BFu16ll_BFu16ll()
{
  {
    init_simple_test("BFs16i_BFs16s_BFu16ll_BFu16ll");
    static STRUCT_IF_C BFs16i_BFs16s_BFu16ll_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16s_BFu16ll_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16s_BFu16ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16s_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16s_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16s_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16s_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16s_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16s_BFu16ll_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16s_BFu16ll_BFu16ll, BFs16i_BFs16s_BFu16ll_BFu16ll)
//============================================================================


struct  BFs16i_BFs16s_BFu16ll_BFu16s  {
  signed int v1:16;
  signed short v2:16;
  __tsu64 v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16i_BFs16s_BFu16ll_BFu16s) C1{ Fi:16 Fs:16 FL:16 Fs:16}



static void Test_BFs16i_BFs16s_BFu16ll_BFu16s()
{
  {
    init_simple_test("BFs16i_BFs16s_BFu16ll_BFu16s");
    static STRUCT_IF_C BFs16i_BFs16s_BFu16ll_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16s_BFu16ll_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16s_BFu16ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16s_BFu16ll_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFu16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16s_BFu16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFu16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16s_BFu16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16s_BFu16ll_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16s_BFu16ll_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16s_BFu16ll_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16s_BFu16ll_BFu16s, BFs16i_BFs16s_BFu16ll_BFu16s)
//============================================================================


struct  BFs16i_BFs16s_BFu16s  {
  signed int v1:16;
  signed short v2:16;
  unsigned short v3:16;
};
//SIG(1 BFs16i_BFs16s_BFu16s) C1{ Fi:16 Fs:16 Fs:16}



static void Test_BFs16i_BFs16s_BFu16s()
{
  {
    init_simple_test("BFs16i_BFs16s_BFu16s");
    static STRUCT_IF_C BFs16i_BFs16s_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16s_BFu16s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFs16s_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16s_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16s_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16s_BFu16s, BFs16i_BFs16s_BFu16s)
//============================================================================


struct  BFs16i_BFs16s_BFu16s_BFs16i  {
  signed int v1:16;
  signed short v2:16;
  unsigned short v3:16;
  signed int v4:16;
};
//SIG(1 BFs16i_BFs16s_BFu16s_BFs16i) C1{ Fi:16 Fs:16 Fs:16 Fi:16}



static void Test_BFs16i_BFs16s_BFu16s_BFs16i()
{
  {
    init_simple_test("BFs16i_BFs16s_BFu16s_BFs16i");
    static STRUCT_IF_C BFs16i_BFs16s_BFu16s_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16s_BFu16s_BFs16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFs16s_BFu16s_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16s_BFu16s_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFu16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16s_BFu16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFu16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16s_BFu16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16s_BFu16s_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16s_BFu16s_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFu16s_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16s_BFu16s_BFs16i, BFs16i_BFs16s_BFu16s_BFs16i)
//============================================================================


struct  BFs16i_BFs16s_BFu16s_BFs16ll  {
  signed int v1:16;
  signed short v2:16;
  unsigned short v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16i_BFs16s_BFu16s_BFs16ll) C1{ Fi:16 Fs:16 Fs:16 FL:16}



static void Test_BFs16i_BFs16s_BFu16s_BFs16ll()
{
  {
    init_simple_test("BFs16i_BFs16s_BFu16s_BFs16ll");
    static STRUCT_IF_C BFs16i_BFs16s_BFu16s_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16s_BFu16s_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16s_BFu16s_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16s_BFu16s_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFu16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16s_BFu16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFu16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16s_BFu16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16s_BFu16s_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16s_BFu16s_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFu16s_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16s_BFu16s_BFs16ll, BFs16i_BFs16s_BFu16s_BFs16ll)
//============================================================================


struct  BFs16i_BFs16s_BFu16s_BFs16s  {
  signed int v1:16;
  signed short v2:16;
  unsigned short v3:16;
  signed short v4:16;
};
//SIG(1 BFs16i_BFs16s_BFu16s_BFs16s) C1{ Fi:16 Fs:16 Fs:16 Fs:16}



static void Test_BFs16i_BFs16s_BFu16s_BFs16s()
{
  {
    init_simple_test("BFs16i_BFs16s_BFu16s_BFs16s");
    static STRUCT_IF_C BFs16i_BFs16s_BFu16s_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16s_BFu16s_BFs16s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFs16s_BFu16s_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16s_BFu16s_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFu16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16s_BFu16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFu16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16s_BFu16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16s_BFu16s_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16s_BFu16s_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFu16s_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16s_BFu16s_BFs16s, BFs16i_BFs16s_BFu16s_BFs16s)
//============================================================================


struct  BFs16i_BFs16s_BFu16s_BFu16i  {
  signed int v1:16;
  signed short v2:16;
  unsigned short v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16i_BFs16s_BFu16s_BFu16i) C1{ Fi:16 Fs:16 Fs:16 Fi:16}



static void Test_BFs16i_BFs16s_BFu16s_BFu16i()
{
  {
    init_simple_test("BFs16i_BFs16s_BFu16s_BFu16i");
    static STRUCT_IF_C BFs16i_BFs16s_BFu16s_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16s_BFu16s_BFu16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFs16s_BFu16s_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16s_BFu16s_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFu16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16s_BFu16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFu16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16s_BFu16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16s_BFu16s_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16s_BFu16s_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16s_BFu16s_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16s_BFu16s_BFu16i, BFs16i_BFs16s_BFu16s_BFu16i)
//============================================================================


struct  BFs16i_BFs16s_BFu16s_BFu16ll  {
  signed int v1:16;
  signed short v2:16;
  unsigned short v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16i_BFs16s_BFu16s_BFu16ll) C1{ Fi:16 Fs:16 Fs:16 FL:16}



static void Test_BFs16i_BFs16s_BFu16s_BFu16ll()
{
  {
    init_simple_test("BFs16i_BFs16s_BFu16s_BFu16ll");
    static STRUCT_IF_C BFs16i_BFs16s_BFu16s_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16s_BFu16s_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFs16s_BFu16s_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16s_BFu16s_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFu16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16s_BFu16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFu16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16s_BFu16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16s_BFu16s_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16s_BFu16s_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16s_BFu16s_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16s_BFu16s_BFu16ll, BFs16i_BFs16s_BFu16s_BFu16ll)
//============================================================================


struct  BFs16i_BFs16s_BFu16s_BFu16s  {
  signed int v1:16;
  signed short v2:16;
  unsigned short v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16i_BFs16s_BFu16s_BFu16s) C1{ Fi:16 Fs:16 Fs:16 Fs:16}



static void Test_BFs16i_BFs16s_BFu16s_BFu16s()
{
  {
    init_simple_test("BFs16i_BFs16s_BFu16s_BFu16s");
    static STRUCT_IF_C BFs16i_BFs16s_BFu16s_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFs16s_BFu16s_BFu16s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFs16s_BFu16s_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFs16s_BFu16s_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFu16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFs16s_BFu16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16i_BFs16s_BFu16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFs16s_BFu16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16s_BFu16s_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFs16s_BFu16s_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFs16s_BFu16s_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFs16s_BFu16s_BFu16s, BFs16i_BFs16s_BFu16s_BFu16s)
//============================================================================


struct  BFs16i_BFu16i  {
  signed int v1:16;
  unsigned int v2:16;
};
//SIG(1 BFs16i_BFu16i) C1{ Fi:16 Fi:16}



static void Test_BFs16i_BFu16i()
{
  {
    init_simple_test("BFs16i_BFu16i");
    static STRUCT_IF_C BFs16i_BFu16i lv;
    check2(sizeof(lv), 4, "sizeof(BFs16i_BFu16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16i, BFs16i_BFu16i)
//============================================================================


struct  BFs16i_BFu16i_BFs16i  {
  signed int v1:16;
  unsigned int v2:16;
  signed int v3:16;
};
//SIG(1 BFs16i_BFu16i_BFs16i) C1{ Fi:16 Fi:16 Fi:16}



static void Test_BFs16i_BFu16i_BFs16i()
{
  {
    init_simple_test("BFs16i_BFu16i_BFs16i");
    static STRUCT_IF_C BFs16i_BFu16i_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16i_BFs16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFu16i_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16i_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16i_BFs16i, BFs16i_BFu16i_BFs16i)
//============================================================================


struct  BFs16i_BFu16i_BFs16i_BFs16i  {
  signed int v1:16;
  unsigned int v2:16;
  signed int v3:16;
  signed int v4:16;
};
//SIG(1 BFs16i_BFu16i_BFs16i_BFs16i) C1{ Fi:16 Fi:16 Fi:16 Fi:16}



static void Test_BFs16i_BFu16i_BFs16i_BFs16i()
{
  {
    init_simple_test("BFs16i_BFu16i_BFs16i_BFs16i");
    static STRUCT_IF_C BFs16i_BFu16i_BFs16i_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16i_BFs16i_BFs16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFu16i_BFs16i_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16i_BFs16i_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFs16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16i_BFs16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFs16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16i_BFs16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFs16i_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16i_BFs16i_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFs16i_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16i_BFs16i_BFs16i, BFs16i_BFu16i_BFs16i_BFs16i)
//============================================================================


struct  BFs16i_BFu16i_BFs16i_BFs16ll  {
  signed int v1:16;
  unsigned int v2:16;
  signed int v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16i_BFu16i_BFs16i_BFs16ll) C1{ Fi:16 Fi:16 Fi:16 FL:16}



static void Test_BFs16i_BFu16i_BFs16i_BFs16ll()
{
  {
    init_simple_test("BFs16i_BFu16i_BFs16i_BFs16ll");
    static STRUCT_IF_C BFs16i_BFu16i_BFs16i_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16i_BFs16i_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16i_BFs16i_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16i_BFs16i_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFs16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16i_BFs16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFs16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16i_BFs16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFs16i_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16i_BFs16i_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFs16i_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16i_BFs16i_BFs16ll, BFs16i_BFu16i_BFs16i_BFs16ll)
//============================================================================


struct  BFs16i_BFu16i_BFs16i_BFs16s  {
  signed int v1:16;
  unsigned int v2:16;
  signed int v3:16;
  signed short v4:16;
};
//SIG(1 BFs16i_BFu16i_BFs16i_BFs16s) C1{ Fi:16 Fi:16 Fi:16 Fs:16}



static void Test_BFs16i_BFu16i_BFs16i_BFs16s()
{
  {
    init_simple_test("BFs16i_BFu16i_BFs16i_BFs16s");
    static STRUCT_IF_C BFs16i_BFu16i_BFs16i_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16i_BFs16i_BFs16s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFu16i_BFs16i_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16i_BFs16i_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFs16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16i_BFs16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFs16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16i_BFs16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFs16i_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16i_BFs16i_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFs16i_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16i_BFs16i_BFs16s, BFs16i_BFu16i_BFs16i_BFs16s)
//============================================================================


struct  BFs16i_BFu16i_BFs16i_BFu16i  {
  signed int v1:16;
  unsigned int v2:16;
  signed int v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16i_BFu16i_BFs16i_BFu16i) C1{ Fi:16 Fi:16 Fi:16 Fi:16}



static void Test_BFs16i_BFu16i_BFs16i_BFu16i()
{
  {
    init_simple_test("BFs16i_BFu16i_BFs16i_BFu16i");
    static STRUCT_IF_C BFs16i_BFu16i_BFs16i_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16i_BFs16i_BFu16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFu16i_BFs16i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16i_BFs16i_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFs16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16i_BFs16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFs16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16i_BFs16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFs16i_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16i_BFs16i_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFs16i_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16i_BFs16i_BFu16i, BFs16i_BFu16i_BFs16i_BFu16i)
//============================================================================


struct  BFs16i_BFu16i_BFs16i_BFu16ll  {
  signed int v1:16;
  unsigned int v2:16;
  signed int v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16i_BFu16i_BFs16i_BFu16ll) C1{ Fi:16 Fi:16 Fi:16 FL:16}



static void Test_BFs16i_BFu16i_BFs16i_BFu16ll()
{
  {
    init_simple_test("BFs16i_BFu16i_BFs16i_BFu16ll");
    static STRUCT_IF_C BFs16i_BFu16i_BFs16i_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16i_BFs16i_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16i_BFs16i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16i_BFs16i_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFs16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16i_BFs16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFs16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16i_BFs16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFs16i_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16i_BFs16i_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFs16i_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16i_BFs16i_BFu16ll, BFs16i_BFu16i_BFs16i_BFu16ll)
//============================================================================


struct  BFs16i_BFu16i_BFs16i_BFu16s  {
  signed int v1:16;
  unsigned int v2:16;
  signed int v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16i_BFu16i_BFs16i_BFu16s) C1{ Fi:16 Fi:16 Fi:16 Fs:16}



static void Test_BFs16i_BFu16i_BFs16i_BFu16s()
{
  {
    init_simple_test("BFs16i_BFu16i_BFs16i_BFu16s");
    static STRUCT_IF_C BFs16i_BFu16i_BFs16i_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16i_BFs16i_BFu16s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFu16i_BFs16i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16i_BFs16i_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFs16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16i_BFs16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFs16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16i_BFs16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFs16i_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16i_BFs16i_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFs16i_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16i_BFs16i_BFu16s, BFs16i_BFu16i_BFs16i_BFu16s)
//============================================================================


struct  BFs16i_BFu16i_BFs16ll  {
  signed int v1:16;
  unsigned int v2:16;
  signed __tsi64 v3:16;
};
//SIG(1 BFs16i_BFu16i_BFs16ll) C1{ Fi:16 Fi:16 FL:16}



static void Test_BFs16i_BFu16i_BFs16ll()
{
  {
    init_simple_test("BFs16i_BFu16i_BFs16ll");
    static STRUCT_IF_C BFs16i_BFu16i_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16i_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16i_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16i_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16i_BFs16ll, BFs16i_BFu16i_BFs16ll)
//============================================================================


struct  BFs16i_BFu16i_BFs16ll_BFs16i  {
  signed int v1:16;
  unsigned int v2:16;
  signed __tsi64 v3:16;
  signed int v4:16;
};
//SIG(1 BFs16i_BFu16i_BFs16ll_BFs16i) C1{ Fi:16 Fi:16 FL:16 Fi:16}



static void Test_BFs16i_BFu16i_BFs16ll_BFs16i()
{
  {
    init_simple_test("BFs16i_BFu16i_BFs16ll_BFs16i");
    static STRUCT_IF_C BFs16i_BFu16i_BFs16ll_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16i_BFs16ll_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16i_BFs16ll_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16i_BFs16ll_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFs16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16i_BFs16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFs16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16i_BFs16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFs16ll_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16i_BFs16ll_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFs16ll_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16i_BFs16ll_BFs16i, BFs16i_BFu16i_BFs16ll_BFs16i)
//============================================================================


struct  BFs16i_BFu16i_BFs16ll_BFs16ll  {
  signed int v1:16;
  unsigned int v2:16;
  signed __tsi64 v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16i_BFu16i_BFs16ll_BFs16ll) C1{ Fi:16 Fi:16 FL:16 FL:16}



static void Test_BFs16i_BFu16i_BFs16ll_BFs16ll()
{
  {
    init_simple_test("BFs16i_BFu16i_BFs16ll_BFs16ll");
    static STRUCT_IF_C BFs16i_BFu16i_BFs16ll_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16i_BFs16ll_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16i_BFs16ll_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16i_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16i_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16i_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16i_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFs16ll_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16i_BFs16ll_BFs16ll, BFs16i_BFu16i_BFs16ll_BFs16ll)
//============================================================================


struct  BFs16i_BFu16i_BFs16ll_BFs16s  {
  signed int v1:16;
  unsigned int v2:16;
  signed __tsi64 v3:16;
  signed short v4:16;
};
//SIG(1 BFs16i_BFu16i_BFs16ll_BFs16s) C1{ Fi:16 Fi:16 FL:16 Fs:16}



static void Test_BFs16i_BFu16i_BFs16ll_BFs16s()
{
  {
    init_simple_test("BFs16i_BFu16i_BFs16ll_BFs16s");
    static STRUCT_IF_C BFs16i_BFu16i_BFs16ll_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16i_BFs16ll_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16i_BFs16ll_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16i_BFs16ll_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFs16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16i_BFs16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFs16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16i_BFs16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFs16ll_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16i_BFs16ll_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFs16ll_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16i_BFs16ll_BFs16s, BFs16i_BFu16i_BFs16ll_BFs16s)
//============================================================================


struct  BFs16i_BFu16i_BFs16ll_BFu16i  {
  signed int v1:16;
  unsigned int v2:16;
  signed __tsi64 v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16i_BFu16i_BFs16ll_BFu16i) C1{ Fi:16 Fi:16 FL:16 Fi:16}



static void Test_BFs16i_BFu16i_BFs16ll_BFu16i()
{
  {
    init_simple_test("BFs16i_BFu16i_BFs16ll_BFu16i");
    static STRUCT_IF_C BFs16i_BFu16i_BFs16ll_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16i_BFs16ll_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16i_BFs16ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16i_BFs16ll_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFs16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16i_BFs16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFs16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16i_BFs16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFs16ll_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16i_BFs16ll_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFs16ll_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16i_BFs16ll_BFu16i, BFs16i_BFu16i_BFs16ll_BFu16i)
//============================================================================


struct  BFs16i_BFu16i_BFs16ll_BFu16ll  {
  signed int v1:16;
  unsigned int v2:16;
  signed __tsi64 v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16i_BFu16i_BFs16ll_BFu16ll) C1{ Fi:16 Fi:16 FL:16 FL:16}



static void Test_BFs16i_BFu16i_BFs16ll_BFu16ll()
{
  {
    init_simple_test("BFs16i_BFu16i_BFs16ll_BFu16ll");
    static STRUCT_IF_C BFs16i_BFu16i_BFs16ll_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16i_BFs16ll_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16i_BFs16ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16i_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16i_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16i_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16i_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFs16ll_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16i_BFs16ll_BFu16ll, BFs16i_BFu16i_BFs16ll_BFu16ll)
//============================================================================


struct  BFs16i_BFu16i_BFs16ll_BFu16s  {
  signed int v1:16;
  unsigned int v2:16;
  signed __tsi64 v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16i_BFu16i_BFs16ll_BFu16s) C1{ Fi:16 Fi:16 FL:16 Fs:16}



static void Test_BFs16i_BFu16i_BFs16ll_BFu16s()
{
  {
    init_simple_test("BFs16i_BFu16i_BFs16ll_BFu16s");
    static STRUCT_IF_C BFs16i_BFu16i_BFs16ll_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16i_BFs16ll_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16i_BFs16ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16i_BFs16ll_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFs16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16i_BFs16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFs16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16i_BFs16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFs16ll_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16i_BFs16ll_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFs16ll_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16i_BFs16ll_BFu16s, BFs16i_BFu16i_BFs16ll_BFu16s)
//============================================================================


struct  BFs16i_BFu16i_BFs16s  {
  signed int v1:16;
  unsigned int v2:16;
  signed short v3:16;
};
//SIG(1 BFs16i_BFu16i_BFs16s) C1{ Fi:16 Fi:16 Fs:16}



static void Test_BFs16i_BFu16i_BFs16s()
{
  {
    init_simple_test("BFs16i_BFu16i_BFs16s");
    static STRUCT_IF_C BFs16i_BFu16i_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16i_BFs16s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFu16i_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16i_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16i_BFs16s, BFs16i_BFu16i_BFs16s)
//============================================================================


struct  BFs16i_BFu16i_BFs16s_BFs16i  {
  signed int v1:16;
  unsigned int v2:16;
  signed short v3:16;
  signed int v4:16;
};
//SIG(1 BFs16i_BFu16i_BFs16s_BFs16i) C1{ Fi:16 Fi:16 Fs:16 Fi:16}



static void Test_BFs16i_BFu16i_BFs16s_BFs16i()
{
  {
    init_simple_test("BFs16i_BFu16i_BFs16s_BFs16i");
    static STRUCT_IF_C BFs16i_BFu16i_BFs16s_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16i_BFs16s_BFs16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFu16i_BFs16s_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16i_BFs16s_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFs16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16i_BFs16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFs16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16i_BFs16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFs16s_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16i_BFs16s_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFs16s_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16i_BFs16s_BFs16i, BFs16i_BFu16i_BFs16s_BFs16i)
//============================================================================


struct  BFs16i_BFu16i_BFs16s_BFs16ll  {
  signed int v1:16;
  unsigned int v2:16;
  signed short v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16i_BFu16i_BFs16s_BFs16ll) C1{ Fi:16 Fi:16 Fs:16 FL:16}



static void Test_BFs16i_BFu16i_BFs16s_BFs16ll()
{
  {
    init_simple_test("BFs16i_BFu16i_BFs16s_BFs16ll");
    static STRUCT_IF_C BFs16i_BFu16i_BFs16s_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16i_BFs16s_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16i_BFs16s_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16i_BFs16s_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFs16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16i_BFs16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFs16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16i_BFs16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFs16s_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16i_BFs16s_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFs16s_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16i_BFs16s_BFs16ll, BFs16i_BFu16i_BFs16s_BFs16ll)
//============================================================================


struct  BFs16i_BFu16i_BFs16s_BFs16s  {
  signed int v1:16;
  unsigned int v2:16;
  signed short v3:16;
  signed short v4:16;
};
//SIG(1 BFs16i_BFu16i_BFs16s_BFs16s) C1{ Fi:16 Fi:16 Fs:16 Fs:16}



static void Test_BFs16i_BFu16i_BFs16s_BFs16s()
{
  {
    init_simple_test("BFs16i_BFu16i_BFs16s_BFs16s");
    static STRUCT_IF_C BFs16i_BFu16i_BFs16s_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16i_BFs16s_BFs16s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFu16i_BFs16s_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16i_BFs16s_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFs16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16i_BFs16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFs16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16i_BFs16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFs16s_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16i_BFs16s_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFs16s_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16i_BFs16s_BFs16s, BFs16i_BFu16i_BFs16s_BFs16s)
//============================================================================


struct  BFs16i_BFu16i_BFs16s_BFu16i  {
  signed int v1:16;
  unsigned int v2:16;
  signed short v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16i_BFu16i_BFs16s_BFu16i) C1{ Fi:16 Fi:16 Fs:16 Fi:16}



static void Test_BFs16i_BFu16i_BFs16s_BFu16i()
{
  {
    init_simple_test("BFs16i_BFu16i_BFs16s_BFu16i");
    static STRUCT_IF_C BFs16i_BFu16i_BFs16s_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16i_BFs16s_BFu16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFu16i_BFs16s_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16i_BFs16s_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFs16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16i_BFs16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFs16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16i_BFs16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFs16s_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16i_BFs16s_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFs16s_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16i_BFs16s_BFu16i, BFs16i_BFu16i_BFs16s_BFu16i)
//============================================================================


struct  BFs16i_BFu16i_BFs16s_BFu16ll  {
  signed int v1:16;
  unsigned int v2:16;
  signed short v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16i_BFu16i_BFs16s_BFu16ll) C1{ Fi:16 Fi:16 Fs:16 FL:16}



static void Test_BFs16i_BFu16i_BFs16s_BFu16ll()
{
  {
    init_simple_test("BFs16i_BFu16i_BFs16s_BFu16ll");
    static STRUCT_IF_C BFs16i_BFu16i_BFs16s_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16i_BFs16s_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16i_BFs16s_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16i_BFs16s_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFs16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16i_BFs16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFs16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16i_BFs16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFs16s_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16i_BFs16s_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFs16s_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16i_BFs16s_BFu16ll, BFs16i_BFu16i_BFs16s_BFu16ll)
//============================================================================


struct  BFs16i_BFu16i_BFs16s_BFu16s  {
  signed int v1:16;
  unsigned int v2:16;
  signed short v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16i_BFu16i_BFs16s_BFu16s) C1{ Fi:16 Fi:16 Fs:16 Fs:16}



static void Test_BFs16i_BFu16i_BFs16s_BFu16s()
{
  {
    init_simple_test("BFs16i_BFu16i_BFs16s_BFu16s");
    static STRUCT_IF_C BFs16i_BFu16i_BFs16s_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16i_BFs16s_BFu16s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFu16i_BFs16s_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16i_BFs16s_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFs16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16i_BFs16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFs16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16i_BFs16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFs16s_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16i_BFs16s_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFs16s_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16i_BFs16s_BFu16s, BFs16i_BFu16i_BFs16s_BFu16s)
//============================================================================


struct  BFs16i_BFu16i_BFu16i  {
  signed int v1:16;
  unsigned int v2:16;
  unsigned int v3:16;
};
//SIG(1 BFs16i_BFu16i_BFu16i) C1{ Fi:16 Fi:16 Fi:16}



static void Test_BFs16i_BFu16i_BFu16i()
{
  {
    init_simple_test("BFs16i_BFu16i_BFu16i");
    static STRUCT_IF_C BFs16i_BFu16i_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16i_BFu16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFu16i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16i_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16i_BFu16i, BFs16i_BFu16i_BFu16i)
//============================================================================


struct  BFs16i_BFu16i_BFu16i_BFs16i  {
  signed int v1:16;
  unsigned int v2:16;
  unsigned int v3:16;
  signed int v4:16;
};
//SIG(1 BFs16i_BFu16i_BFu16i_BFs16i) C1{ Fi:16 Fi:16 Fi:16 Fi:16}



static void Test_BFs16i_BFu16i_BFu16i_BFs16i()
{
  {
    init_simple_test("BFs16i_BFu16i_BFu16i_BFs16i");
    static STRUCT_IF_C BFs16i_BFu16i_BFu16i_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16i_BFu16i_BFs16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFu16i_BFu16i_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16i_BFu16i_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFu16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16i_BFu16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFu16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16i_BFu16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFu16i_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16i_BFu16i_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFu16i_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16i_BFu16i_BFs16i, BFs16i_BFu16i_BFu16i_BFs16i)
//============================================================================


struct  BFs16i_BFu16i_BFu16i_BFs16ll  {
  signed int v1:16;
  unsigned int v2:16;
  unsigned int v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16i_BFu16i_BFu16i_BFs16ll) C1{ Fi:16 Fi:16 Fi:16 FL:16}



static void Test_BFs16i_BFu16i_BFu16i_BFs16ll()
{
  {
    init_simple_test("BFs16i_BFu16i_BFu16i_BFs16ll");
    static STRUCT_IF_C BFs16i_BFu16i_BFu16i_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16i_BFu16i_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16i_BFu16i_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16i_BFu16i_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFu16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16i_BFu16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFu16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16i_BFu16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFu16i_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16i_BFu16i_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFu16i_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16i_BFu16i_BFs16ll, BFs16i_BFu16i_BFu16i_BFs16ll)
//============================================================================


struct  BFs16i_BFu16i_BFu16i_BFs16s  {
  signed int v1:16;
  unsigned int v2:16;
  unsigned int v3:16;
  signed short v4:16;
};
//SIG(1 BFs16i_BFu16i_BFu16i_BFs16s) C1{ Fi:16 Fi:16 Fi:16 Fs:16}



static void Test_BFs16i_BFu16i_BFu16i_BFs16s()
{
  {
    init_simple_test("BFs16i_BFu16i_BFu16i_BFs16s");
    static STRUCT_IF_C BFs16i_BFu16i_BFu16i_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16i_BFu16i_BFs16s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFu16i_BFu16i_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16i_BFu16i_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFu16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16i_BFu16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFu16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16i_BFu16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFu16i_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16i_BFu16i_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFu16i_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16i_BFu16i_BFs16s, BFs16i_BFu16i_BFu16i_BFs16s)
//============================================================================


struct  BFs16i_BFu16i_BFu16i_BFu16i  {
  signed int v1:16;
  unsigned int v2:16;
  unsigned int v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16i_BFu16i_BFu16i_BFu16i) C1{ Fi:16 Fi:16 Fi:16 Fi:16}



static void Test_BFs16i_BFu16i_BFu16i_BFu16i()
{
  {
    init_simple_test("BFs16i_BFu16i_BFu16i_BFu16i");
    static STRUCT_IF_C BFs16i_BFu16i_BFu16i_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16i_BFu16i_BFu16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFu16i_BFu16i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16i_BFu16i_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFu16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16i_BFu16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFu16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16i_BFu16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFu16i_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16i_BFu16i_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFu16i_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16i_BFu16i_BFu16i, BFs16i_BFu16i_BFu16i_BFu16i)
//============================================================================


struct  BFs16i_BFu16i_BFu16i_BFu16ll  {
  signed int v1:16;
  unsigned int v2:16;
  unsigned int v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16i_BFu16i_BFu16i_BFu16ll) C1{ Fi:16 Fi:16 Fi:16 FL:16}



static void Test_BFs16i_BFu16i_BFu16i_BFu16ll()
{
  {
    init_simple_test("BFs16i_BFu16i_BFu16i_BFu16ll");
    static STRUCT_IF_C BFs16i_BFu16i_BFu16i_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16i_BFu16i_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16i_BFu16i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16i_BFu16i_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFu16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16i_BFu16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFu16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16i_BFu16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFu16i_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16i_BFu16i_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFu16i_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16i_BFu16i_BFu16ll, BFs16i_BFu16i_BFu16i_BFu16ll)
//============================================================================


struct  BFs16i_BFu16i_BFu16i_BFu16s  {
  signed int v1:16;
  unsigned int v2:16;
  unsigned int v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16i_BFu16i_BFu16i_BFu16s) C1{ Fi:16 Fi:16 Fi:16 Fs:16}



static void Test_BFs16i_BFu16i_BFu16i_BFu16s()
{
  {
    init_simple_test("BFs16i_BFu16i_BFu16i_BFu16s");
    static STRUCT_IF_C BFs16i_BFu16i_BFu16i_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16i_BFu16i_BFu16s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFu16i_BFu16i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16i_BFu16i_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFu16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16i_BFu16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFu16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16i_BFu16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFu16i_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16i_BFu16i_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFu16i_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16i_BFu16i_BFu16s, BFs16i_BFu16i_BFu16i_BFu16s)
//============================================================================


struct  BFs16i_BFu16i_BFu16ll  {
  signed int v1:16;
  unsigned int v2:16;
  __tsu64 v3:16;
};
//SIG(1 BFs16i_BFu16i_BFu16ll) C1{ Fi:16 Fi:16 FL:16}



static void Test_BFs16i_BFu16i_BFu16ll()
{
  {
    init_simple_test("BFs16i_BFu16i_BFu16ll");
    static STRUCT_IF_C BFs16i_BFu16i_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16i_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16i_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16i_BFu16ll, BFs16i_BFu16i_BFu16ll)
//============================================================================


struct  BFs16i_BFu16i_BFu16ll_BFs16i  {
  signed int v1:16;
  unsigned int v2:16;
  __tsu64 v3:16;
  signed int v4:16;
};
//SIG(1 BFs16i_BFu16i_BFu16ll_BFs16i) C1{ Fi:16 Fi:16 FL:16 Fi:16}



static void Test_BFs16i_BFu16i_BFu16ll_BFs16i()
{
  {
    init_simple_test("BFs16i_BFu16i_BFu16ll_BFs16i");
    static STRUCT_IF_C BFs16i_BFu16i_BFu16ll_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16i_BFu16ll_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16i_BFu16ll_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16i_BFu16ll_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFu16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16i_BFu16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFu16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16i_BFu16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFu16ll_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16i_BFu16ll_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFu16ll_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16i_BFu16ll_BFs16i, BFs16i_BFu16i_BFu16ll_BFs16i)
//============================================================================


struct  BFs16i_BFu16i_BFu16ll_BFs16ll  {
  signed int v1:16;
  unsigned int v2:16;
  __tsu64 v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16i_BFu16i_BFu16ll_BFs16ll) C1{ Fi:16 Fi:16 FL:16 FL:16}



static void Test_BFs16i_BFu16i_BFu16ll_BFs16ll()
{
  {
    init_simple_test("BFs16i_BFu16i_BFu16ll_BFs16ll");
    static STRUCT_IF_C BFs16i_BFu16i_BFu16ll_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16i_BFu16ll_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16i_BFu16ll_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16i_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16i_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16i_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16i_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFu16ll_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16i_BFu16ll_BFs16ll, BFs16i_BFu16i_BFu16ll_BFs16ll)
//============================================================================


struct  BFs16i_BFu16i_BFu16ll_BFs16s  {
  signed int v1:16;
  unsigned int v2:16;
  __tsu64 v3:16;
  signed short v4:16;
};
//SIG(1 BFs16i_BFu16i_BFu16ll_BFs16s) C1{ Fi:16 Fi:16 FL:16 Fs:16}



static void Test_BFs16i_BFu16i_BFu16ll_BFs16s()
{
  {
    init_simple_test("BFs16i_BFu16i_BFu16ll_BFs16s");
    static STRUCT_IF_C BFs16i_BFu16i_BFu16ll_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16i_BFu16ll_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16i_BFu16ll_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16i_BFu16ll_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFu16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16i_BFu16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFu16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16i_BFu16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFu16ll_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16i_BFu16ll_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFu16ll_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16i_BFu16ll_BFs16s, BFs16i_BFu16i_BFu16ll_BFs16s)
//============================================================================


struct  BFs16i_BFu16i_BFu16ll_BFu16i  {
  signed int v1:16;
  unsigned int v2:16;
  __tsu64 v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16i_BFu16i_BFu16ll_BFu16i) C1{ Fi:16 Fi:16 FL:16 Fi:16}



static void Test_BFs16i_BFu16i_BFu16ll_BFu16i()
{
  {
    init_simple_test("BFs16i_BFu16i_BFu16ll_BFu16i");
    static STRUCT_IF_C BFs16i_BFu16i_BFu16ll_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16i_BFu16ll_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16i_BFu16ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16i_BFu16ll_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFu16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16i_BFu16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFu16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16i_BFu16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFu16ll_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16i_BFu16ll_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFu16ll_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16i_BFu16ll_BFu16i, BFs16i_BFu16i_BFu16ll_BFu16i)
//============================================================================


struct  BFs16i_BFu16i_BFu16ll_BFu16ll  {
  signed int v1:16;
  unsigned int v2:16;
  __tsu64 v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16i_BFu16i_BFu16ll_BFu16ll) C1{ Fi:16 Fi:16 FL:16 FL:16}



static void Test_BFs16i_BFu16i_BFu16ll_BFu16ll()
{
  {
    init_simple_test("BFs16i_BFu16i_BFu16ll_BFu16ll");
    static STRUCT_IF_C BFs16i_BFu16i_BFu16ll_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16i_BFu16ll_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16i_BFu16ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16i_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16i_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16i_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16i_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFu16ll_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16i_BFu16ll_BFu16ll, BFs16i_BFu16i_BFu16ll_BFu16ll)
//============================================================================


struct  BFs16i_BFu16i_BFu16ll_BFu16s  {
  signed int v1:16;
  unsigned int v2:16;
  __tsu64 v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16i_BFu16i_BFu16ll_BFu16s) C1{ Fi:16 Fi:16 FL:16 Fs:16}



static void Test_BFs16i_BFu16i_BFu16ll_BFu16s()
{
  {
    init_simple_test("BFs16i_BFu16i_BFu16ll_BFu16s");
    static STRUCT_IF_C BFs16i_BFu16i_BFu16ll_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16i_BFu16ll_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16i_BFu16ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16i_BFu16ll_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFu16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16i_BFu16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFu16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16i_BFu16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFu16ll_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16i_BFu16ll_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFu16ll_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16i_BFu16ll_BFu16s, BFs16i_BFu16i_BFu16ll_BFu16s)
//============================================================================


struct  BFs16i_BFu16i_BFu16s  {
  signed int v1:16;
  unsigned int v2:16;
  unsigned short v3:16;
};
//SIG(1 BFs16i_BFu16i_BFu16s) C1{ Fi:16 Fi:16 Fs:16}



static void Test_BFs16i_BFu16i_BFu16s()
{
  {
    init_simple_test("BFs16i_BFu16i_BFu16s");
    static STRUCT_IF_C BFs16i_BFu16i_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16i_BFu16s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFu16i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16i_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16i_BFu16s, BFs16i_BFu16i_BFu16s)
//============================================================================


struct  BFs16i_BFu16i_BFu16s_BFs16i  {
  signed int v1:16;
  unsigned int v2:16;
  unsigned short v3:16;
  signed int v4:16;
};
//SIG(1 BFs16i_BFu16i_BFu16s_BFs16i) C1{ Fi:16 Fi:16 Fs:16 Fi:16}



static void Test_BFs16i_BFu16i_BFu16s_BFs16i()
{
  {
    init_simple_test("BFs16i_BFu16i_BFu16s_BFs16i");
    static STRUCT_IF_C BFs16i_BFu16i_BFu16s_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16i_BFu16s_BFs16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFu16i_BFu16s_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16i_BFu16s_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFu16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16i_BFu16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFu16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16i_BFu16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFu16s_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16i_BFu16s_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFu16s_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16i_BFu16s_BFs16i, BFs16i_BFu16i_BFu16s_BFs16i)
//============================================================================


struct  BFs16i_BFu16i_BFu16s_BFs16ll  {
  signed int v1:16;
  unsigned int v2:16;
  unsigned short v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16i_BFu16i_BFu16s_BFs16ll) C1{ Fi:16 Fi:16 Fs:16 FL:16}



static void Test_BFs16i_BFu16i_BFu16s_BFs16ll()
{
  {
    init_simple_test("BFs16i_BFu16i_BFu16s_BFs16ll");
    static STRUCT_IF_C BFs16i_BFu16i_BFu16s_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16i_BFu16s_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16i_BFu16s_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16i_BFu16s_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFu16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16i_BFu16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFu16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16i_BFu16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFu16s_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16i_BFu16s_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFu16s_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16i_BFu16s_BFs16ll, BFs16i_BFu16i_BFu16s_BFs16ll)
//============================================================================


struct  BFs16i_BFu16i_BFu16s_BFs16s  {
  signed int v1:16;
  unsigned int v2:16;
  unsigned short v3:16;
  signed short v4:16;
};
//SIG(1 BFs16i_BFu16i_BFu16s_BFs16s) C1{ Fi:16 Fi:16 Fs:16 Fs:16}



static void Test_BFs16i_BFu16i_BFu16s_BFs16s()
{
  {
    init_simple_test("BFs16i_BFu16i_BFu16s_BFs16s");
    static STRUCT_IF_C BFs16i_BFu16i_BFu16s_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16i_BFu16s_BFs16s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFu16i_BFu16s_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16i_BFu16s_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFu16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16i_BFu16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFu16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16i_BFu16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFu16s_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16i_BFu16s_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFu16s_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16i_BFu16s_BFs16s, BFs16i_BFu16i_BFu16s_BFs16s)
//============================================================================


struct  BFs16i_BFu16i_BFu16s_BFu16i  {
  signed int v1:16;
  unsigned int v2:16;
  unsigned short v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16i_BFu16i_BFu16s_BFu16i) C1{ Fi:16 Fi:16 Fs:16 Fi:16}



static void Test_BFs16i_BFu16i_BFu16s_BFu16i()
{
  {
    init_simple_test("BFs16i_BFu16i_BFu16s_BFu16i");
    static STRUCT_IF_C BFs16i_BFu16i_BFu16s_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16i_BFu16s_BFu16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFu16i_BFu16s_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16i_BFu16s_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFu16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16i_BFu16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFu16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16i_BFu16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFu16s_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16i_BFu16s_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFu16s_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16i_BFu16s_BFu16i, BFs16i_BFu16i_BFu16s_BFu16i)
//============================================================================


struct  BFs16i_BFu16i_BFu16s_BFu16ll  {
  signed int v1:16;
  unsigned int v2:16;
  unsigned short v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16i_BFu16i_BFu16s_BFu16ll) C1{ Fi:16 Fi:16 Fs:16 FL:16}



static void Test_BFs16i_BFu16i_BFu16s_BFu16ll()
{
  {
    init_simple_test("BFs16i_BFu16i_BFu16s_BFu16ll");
    static STRUCT_IF_C BFs16i_BFu16i_BFu16s_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16i_BFu16s_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16i_BFu16s_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16i_BFu16s_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFu16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16i_BFu16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFu16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16i_BFu16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFu16s_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16i_BFu16s_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFu16s_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16i_BFu16s_BFu16ll, BFs16i_BFu16i_BFu16s_BFu16ll)
//============================================================================


struct  BFs16i_BFu16i_BFu16s_BFu16s  {
  signed int v1:16;
  unsigned int v2:16;
  unsigned short v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16i_BFu16i_BFu16s_BFu16s) C1{ Fi:16 Fi:16 Fs:16 Fs:16}



static void Test_BFs16i_BFu16i_BFu16s_BFu16s()
{
  {
    init_simple_test("BFs16i_BFu16i_BFu16s_BFu16s");
    static STRUCT_IF_C BFs16i_BFu16i_BFu16s_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16i_BFu16s_BFu16s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFu16i_BFu16s_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16i_BFu16s_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16i_BFu16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16i_BFu16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFu16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16i_BFu16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFu16s_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16i_BFu16s_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16i_BFu16s_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16i_BFu16s_BFu16s, BFs16i_BFu16i_BFu16s_BFu16s)
//============================================================================


struct  BFs16i_BFu16ll  {
  signed int v1:16;
  __tsu64 v2:16;
};
//SIG(1 BFs16i_BFu16ll) C1{ Fi:16 FL:16}



static void Test_BFs16i_BFu16ll()
{
  {
    init_simple_test("BFs16i_BFu16ll");
    static STRUCT_IF_C BFs16i_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs16i_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16ll, BFs16i_BFu16ll)
//============================================================================


struct  BFs16i_BFu16ll_BFs16i  {
  signed int v1:16;
  __tsu64 v2:16;
  signed int v3:16;
};
//SIG(1 BFs16i_BFu16ll_BFs16i) C1{ Fi:16 FL:16 Fi:16}



static void Test_BFs16i_BFu16ll_BFs16i()
{
  {
    init_simple_test("BFs16i_BFu16ll_BFs16i");
    static STRUCT_IF_C BFs16i_BFu16ll_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16ll_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16ll_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16ll_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16ll_BFs16i, BFs16i_BFu16ll_BFs16i)
//============================================================================


struct  BFs16i_BFu16ll_BFs16i_BFs16i  {
  signed int v1:16;
  __tsu64 v2:16;
  signed int v3:16;
  signed int v4:16;
};
//SIG(1 BFs16i_BFu16ll_BFs16i_BFs16i) C1{ Fi:16 FL:16 Fi:16 Fi:16}



static void Test_BFs16i_BFu16ll_BFs16i_BFs16i()
{
  {
    init_simple_test("BFs16i_BFu16ll_BFs16i_BFs16i");
    static STRUCT_IF_C BFs16i_BFu16ll_BFs16i_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16ll_BFs16i_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16ll_BFs16i_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16ll_BFs16i_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFs16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16ll_BFs16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFs16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16ll_BFs16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFs16i_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16ll_BFs16i_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFs16i_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16ll_BFs16i_BFs16i, BFs16i_BFu16ll_BFs16i_BFs16i)
//============================================================================


struct  BFs16i_BFu16ll_BFs16i_BFs16ll  {
  signed int v1:16;
  __tsu64 v2:16;
  signed int v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16i_BFu16ll_BFs16i_BFs16ll) C1{ Fi:16 FL:16 Fi:16 FL:16}



static void Test_BFs16i_BFu16ll_BFs16i_BFs16ll()
{
  {
    init_simple_test("BFs16i_BFu16ll_BFs16i_BFs16ll");
    static STRUCT_IF_C BFs16i_BFu16ll_BFs16i_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16ll_BFs16i_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16ll_BFs16i_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16ll_BFs16i_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFs16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16ll_BFs16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFs16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16ll_BFs16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFs16i_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16ll_BFs16i_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFs16i_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16ll_BFs16i_BFs16ll, BFs16i_BFu16ll_BFs16i_BFs16ll)
//============================================================================


struct  BFs16i_BFu16ll_BFs16i_BFs16s  {
  signed int v1:16;
  __tsu64 v2:16;
  signed int v3:16;
  signed short v4:16;
};
//SIG(1 BFs16i_BFu16ll_BFs16i_BFs16s) C1{ Fi:16 FL:16 Fi:16 Fs:16}



static void Test_BFs16i_BFu16ll_BFs16i_BFs16s()
{
  {
    init_simple_test("BFs16i_BFu16ll_BFs16i_BFs16s");
    static STRUCT_IF_C BFs16i_BFu16ll_BFs16i_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16ll_BFs16i_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16ll_BFs16i_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16ll_BFs16i_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFs16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16ll_BFs16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFs16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16ll_BFs16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFs16i_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16ll_BFs16i_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFs16i_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16ll_BFs16i_BFs16s, BFs16i_BFu16ll_BFs16i_BFs16s)
//============================================================================


struct  BFs16i_BFu16ll_BFs16i_BFu16i  {
  signed int v1:16;
  __tsu64 v2:16;
  signed int v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16i_BFu16ll_BFs16i_BFu16i) C1{ Fi:16 FL:16 Fi:16 Fi:16}



static void Test_BFs16i_BFu16ll_BFs16i_BFu16i()
{
  {
    init_simple_test("BFs16i_BFu16ll_BFs16i_BFu16i");
    static STRUCT_IF_C BFs16i_BFu16ll_BFs16i_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16ll_BFs16i_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16ll_BFs16i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16ll_BFs16i_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFs16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16ll_BFs16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFs16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16ll_BFs16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFs16i_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16ll_BFs16i_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFs16i_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16ll_BFs16i_BFu16i, BFs16i_BFu16ll_BFs16i_BFu16i)
//============================================================================


struct  BFs16i_BFu16ll_BFs16i_BFu16ll  {
  signed int v1:16;
  __tsu64 v2:16;
  signed int v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16i_BFu16ll_BFs16i_BFu16ll) C1{ Fi:16 FL:16 Fi:16 FL:16}



static void Test_BFs16i_BFu16ll_BFs16i_BFu16ll()
{
  {
    init_simple_test("BFs16i_BFu16ll_BFs16i_BFu16ll");
    static STRUCT_IF_C BFs16i_BFu16ll_BFs16i_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16ll_BFs16i_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16ll_BFs16i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16ll_BFs16i_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFs16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16ll_BFs16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFs16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16ll_BFs16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFs16i_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16ll_BFs16i_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFs16i_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16ll_BFs16i_BFu16ll, BFs16i_BFu16ll_BFs16i_BFu16ll)
//============================================================================


struct  BFs16i_BFu16ll_BFs16i_BFu16s  {
  signed int v1:16;
  __tsu64 v2:16;
  signed int v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16i_BFu16ll_BFs16i_BFu16s) C1{ Fi:16 FL:16 Fi:16 Fs:16}



static void Test_BFs16i_BFu16ll_BFs16i_BFu16s()
{
  {
    init_simple_test("BFs16i_BFu16ll_BFs16i_BFu16s");
    static STRUCT_IF_C BFs16i_BFu16ll_BFs16i_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16ll_BFs16i_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16ll_BFs16i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16ll_BFs16i_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFs16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16ll_BFs16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFs16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16ll_BFs16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFs16i_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16ll_BFs16i_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFs16i_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16ll_BFs16i_BFu16s, BFs16i_BFu16ll_BFs16i_BFu16s)
//============================================================================


struct  BFs16i_BFu16ll_BFs16ll  {
  signed int v1:16;
  __tsu64 v2:16;
  signed __tsi64 v3:16;
};
//SIG(1 BFs16i_BFu16ll_BFs16ll) C1{ Fi:16 FL:16 FL:16}



static void Test_BFs16i_BFu16ll_BFs16ll()
{
  {
    init_simple_test("BFs16i_BFu16ll_BFs16ll");
    static STRUCT_IF_C BFs16i_BFu16ll_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16ll_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16ll_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16ll_BFs16ll, BFs16i_BFu16ll_BFs16ll)
//============================================================================


struct  BFs16i_BFu16ll_BFs16ll_BFs16i  {
  signed int v1:16;
  __tsu64 v2:16;
  signed __tsi64 v3:16;
  signed int v4:16;
};
//SIG(1 BFs16i_BFu16ll_BFs16ll_BFs16i) C1{ Fi:16 FL:16 FL:16 Fi:16}



static void Test_BFs16i_BFu16ll_BFs16ll_BFs16i()
{
  {
    init_simple_test("BFs16i_BFu16ll_BFs16ll_BFs16i");
    static STRUCT_IF_C BFs16i_BFu16ll_BFs16ll_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16ll_BFs16ll_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16ll_BFs16ll_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16ll_BFs16ll_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFs16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16ll_BFs16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFs16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16ll_BFs16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFs16ll_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16ll_BFs16ll_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFs16ll_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16ll_BFs16ll_BFs16i, BFs16i_BFu16ll_BFs16ll_BFs16i)
//============================================================================


struct  BFs16i_BFu16ll_BFs16ll_BFs16ll  {
  signed int v1:16;
  __tsu64 v2:16;
  signed __tsi64 v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16i_BFu16ll_BFs16ll_BFs16ll) C1{ Fi:16 FL:16 FL:16 FL:16}



static void Test_BFs16i_BFu16ll_BFs16ll_BFs16ll()
{
  {
    init_simple_test("BFs16i_BFu16ll_BFs16ll_BFs16ll");
    static STRUCT_IF_C BFs16i_BFu16ll_BFs16ll_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16ll_BFs16ll_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16ll_BFs16ll_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16ll_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16ll_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16ll_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16ll_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFs16ll_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16ll_BFs16ll_BFs16ll, BFs16i_BFu16ll_BFs16ll_BFs16ll)
//============================================================================


struct  BFs16i_BFu16ll_BFs16ll_BFs16s  {
  signed int v1:16;
  __tsu64 v2:16;
  signed __tsi64 v3:16;
  signed short v4:16;
};
//SIG(1 BFs16i_BFu16ll_BFs16ll_BFs16s) C1{ Fi:16 FL:16 FL:16 Fs:16}



static void Test_BFs16i_BFu16ll_BFs16ll_BFs16s()
{
  {
    init_simple_test("BFs16i_BFu16ll_BFs16ll_BFs16s");
    static STRUCT_IF_C BFs16i_BFu16ll_BFs16ll_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16ll_BFs16ll_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16ll_BFs16ll_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16ll_BFs16ll_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFs16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16ll_BFs16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFs16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16ll_BFs16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFs16ll_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16ll_BFs16ll_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFs16ll_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16ll_BFs16ll_BFs16s, BFs16i_BFu16ll_BFs16ll_BFs16s)
//============================================================================


struct  BFs16i_BFu16ll_BFs16ll_BFu16i  {
  signed int v1:16;
  __tsu64 v2:16;
  signed __tsi64 v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16i_BFu16ll_BFs16ll_BFu16i) C1{ Fi:16 FL:16 FL:16 Fi:16}



static void Test_BFs16i_BFu16ll_BFs16ll_BFu16i()
{
  {
    init_simple_test("BFs16i_BFu16ll_BFs16ll_BFu16i");
    static STRUCT_IF_C BFs16i_BFu16ll_BFs16ll_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16ll_BFs16ll_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16ll_BFs16ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16ll_BFs16ll_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFs16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16ll_BFs16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFs16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16ll_BFs16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFs16ll_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16ll_BFs16ll_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFs16ll_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16ll_BFs16ll_BFu16i, BFs16i_BFu16ll_BFs16ll_BFu16i)
//============================================================================


struct  BFs16i_BFu16ll_BFs16ll_BFu16ll  {
  signed int v1:16;
  __tsu64 v2:16;
  signed __tsi64 v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16i_BFu16ll_BFs16ll_BFu16ll) C1{ Fi:16 FL:16 FL:16 FL:16}



static void Test_BFs16i_BFu16ll_BFs16ll_BFu16ll()
{
  {
    init_simple_test("BFs16i_BFu16ll_BFs16ll_BFu16ll");
    static STRUCT_IF_C BFs16i_BFu16ll_BFs16ll_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16ll_BFs16ll_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16ll_BFs16ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16ll_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16ll_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16ll_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16ll_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFs16ll_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16ll_BFs16ll_BFu16ll, BFs16i_BFu16ll_BFs16ll_BFu16ll)
//============================================================================


struct  BFs16i_BFu16ll_BFs16ll_BFu16s  {
  signed int v1:16;
  __tsu64 v2:16;
  signed __tsi64 v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16i_BFu16ll_BFs16ll_BFu16s) C1{ Fi:16 FL:16 FL:16 Fs:16}



static void Test_BFs16i_BFu16ll_BFs16ll_BFu16s()
{
  {
    init_simple_test("BFs16i_BFu16ll_BFs16ll_BFu16s");
    static STRUCT_IF_C BFs16i_BFu16ll_BFs16ll_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16ll_BFs16ll_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16ll_BFs16ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16ll_BFs16ll_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFs16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16ll_BFs16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFs16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16ll_BFs16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFs16ll_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16ll_BFs16ll_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFs16ll_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16ll_BFs16ll_BFu16s, BFs16i_BFu16ll_BFs16ll_BFu16s)
//============================================================================


struct  BFs16i_BFu16ll_BFs16s  {
  signed int v1:16;
  __tsu64 v2:16;
  signed short v3:16;
};
//SIG(1 BFs16i_BFu16ll_BFs16s) C1{ Fi:16 FL:16 Fs:16}



static void Test_BFs16i_BFu16ll_BFs16s()
{
  {
    init_simple_test("BFs16i_BFu16ll_BFs16s");
    static STRUCT_IF_C BFs16i_BFu16ll_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16ll_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16ll_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16ll_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16ll_BFs16s, BFs16i_BFu16ll_BFs16s)
//============================================================================


struct  BFs16i_BFu16ll_BFs16s_BFs16i  {
  signed int v1:16;
  __tsu64 v2:16;
  signed short v3:16;
  signed int v4:16;
};
//SIG(1 BFs16i_BFu16ll_BFs16s_BFs16i) C1{ Fi:16 FL:16 Fs:16 Fi:16}



static void Test_BFs16i_BFu16ll_BFs16s_BFs16i()
{
  {
    init_simple_test("BFs16i_BFu16ll_BFs16s_BFs16i");
    static STRUCT_IF_C BFs16i_BFu16ll_BFs16s_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16ll_BFs16s_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16ll_BFs16s_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16ll_BFs16s_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFs16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16ll_BFs16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFs16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16ll_BFs16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFs16s_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16ll_BFs16s_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFs16s_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16ll_BFs16s_BFs16i, BFs16i_BFu16ll_BFs16s_BFs16i)
//============================================================================


struct  BFs16i_BFu16ll_BFs16s_BFs16ll  {
  signed int v1:16;
  __tsu64 v2:16;
  signed short v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16i_BFu16ll_BFs16s_BFs16ll) C1{ Fi:16 FL:16 Fs:16 FL:16}



static void Test_BFs16i_BFu16ll_BFs16s_BFs16ll()
{
  {
    init_simple_test("BFs16i_BFu16ll_BFs16s_BFs16ll");
    static STRUCT_IF_C BFs16i_BFu16ll_BFs16s_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16ll_BFs16s_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16ll_BFs16s_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16ll_BFs16s_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFs16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16ll_BFs16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFs16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16ll_BFs16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFs16s_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16ll_BFs16s_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFs16s_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16ll_BFs16s_BFs16ll, BFs16i_BFu16ll_BFs16s_BFs16ll)
//============================================================================


struct  BFs16i_BFu16ll_BFs16s_BFs16s  {
  signed int v1:16;
  __tsu64 v2:16;
  signed short v3:16;
  signed short v4:16;
};
//SIG(1 BFs16i_BFu16ll_BFs16s_BFs16s) C1{ Fi:16 FL:16 Fs:16 Fs:16}



static void Test_BFs16i_BFu16ll_BFs16s_BFs16s()
{
  {
    init_simple_test("BFs16i_BFu16ll_BFs16s_BFs16s");
    static STRUCT_IF_C BFs16i_BFu16ll_BFs16s_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16ll_BFs16s_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16ll_BFs16s_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16ll_BFs16s_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFs16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16ll_BFs16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFs16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16ll_BFs16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFs16s_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16ll_BFs16s_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFs16s_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16ll_BFs16s_BFs16s, BFs16i_BFu16ll_BFs16s_BFs16s)
//============================================================================


struct  BFs16i_BFu16ll_BFs16s_BFu16i  {
  signed int v1:16;
  __tsu64 v2:16;
  signed short v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16i_BFu16ll_BFs16s_BFu16i) C1{ Fi:16 FL:16 Fs:16 Fi:16}



static void Test_BFs16i_BFu16ll_BFs16s_BFu16i()
{
  {
    init_simple_test("BFs16i_BFu16ll_BFs16s_BFu16i");
    static STRUCT_IF_C BFs16i_BFu16ll_BFs16s_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16ll_BFs16s_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16ll_BFs16s_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16ll_BFs16s_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFs16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16ll_BFs16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFs16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16ll_BFs16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFs16s_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16ll_BFs16s_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFs16s_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16ll_BFs16s_BFu16i, BFs16i_BFu16ll_BFs16s_BFu16i)
//============================================================================


struct  BFs16i_BFu16ll_BFs16s_BFu16ll  {
  signed int v1:16;
  __tsu64 v2:16;
  signed short v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16i_BFu16ll_BFs16s_BFu16ll) C1{ Fi:16 FL:16 Fs:16 FL:16}



static void Test_BFs16i_BFu16ll_BFs16s_BFu16ll()
{
  {
    init_simple_test("BFs16i_BFu16ll_BFs16s_BFu16ll");
    static STRUCT_IF_C BFs16i_BFu16ll_BFs16s_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16ll_BFs16s_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16ll_BFs16s_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16ll_BFs16s_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFs16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16ll_BFs16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFs16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16ll_BFs16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFs16s_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16ll_BFs16s_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFs16s_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16ll_BFs16s_BFu16ll, BFs16i_BFu16ll_BFs16s_BFu16ll)
//============================================================================


struct  BFs16i_BFu16ll_BFs16s_BFu16s  {
  signed int v1:16;
  __tsu64 v2:16;
  signed short v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16i_BFu16ll_BFs16s_BFu16s) C1{ Fi:16 FL:16 Fs:16 Fs:16}



static void Test_BFs16i_BFu16ll_BFs16s_BFu16s()
{
  {
    init_simple_test("BFs16i_BFu16ll_BFs16s_BFu16s");
    static STRUCT_IF_C BFs16i_BFu16ll_BFs16s_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16ll_BFs16s_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16ll_BFs16s_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16ll_BFs16s_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFs16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16ll_BFs16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFs16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16ll_BFs16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFs16s_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16ll_BFs16s_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFs16s_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16ll_BFs16s_BFu16s, BFs16i_BFu16ll_BFs16s_BFu16s)
//============================================================================


struct  BFs16i_BFu16ll_BFu16i  {
  signed int v1:16;
  __tsu64 v2:16;
  unsigned int v3:16;
};
//SIG(1 BFs16i_BFu16ll_BFu16i) C1{ Fi:16 FL:16 Fi:16}



static void Test_BFs16i_BFu16ll_BFu16i()
{
  {
    init_simple_test("BFs16i_BFu16ll_BFu16i");
    static STRUCT_IF_C BFs16i_BFu16ll_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16ll_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16ll_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16ll_BFu16i, BFs16i_BFu16ll_BFu16i)
//============================================================================


struct  BFs16i_BFu16ll_BFu16i_BFs16i  {
  signed int v1:16;
  __tsu64 v2:16;
  unsigned int v3:16;
  signed int v4:16;
};
//SIG(1 BFs16i_BFu16ll_BFu16i_BFs16i) C1{ Fi:16 FL:16 Fi:16 Fi:16}



static void Test_BFs16i_BFu16ll_BFu16i_BFs16i()
{
  {
    init_simple_test("BFs16i_BFu16ll_BFu16i_BFs16i");
    static STRUCT_IF_C BFs16i_BFu16ll_BFu16i_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16ll_BFu16i_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16ll_BFu16i_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16ll_BFu16i_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFu16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16ll_BFu16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFu16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16ll_BFu16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFu16i_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16ll_BFu16i_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFu16i_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16ll_BFu16i_BFs16i, BFs16i_BFu16ll_BFu16i_BFs16i)
//============================================================================


struct  BFs16i_BFu16ll_BFu16i_BFs16ll  {
  signed int v1:16;
  __tsu64 v2:16;
  unsigned int v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16i_BFu16ll_BFu16i_BFs16ll) C1{ Fi:16 FL:16 Fi:16 FL:16}



static void Test_BFs16i_BFu16ll_BFu16i_BFs16ll()
{
  {
    init_simple_test("BFs16i_BFu16ll_BFu16i_BFs16ll");
    static STRUCT_IF_C BFs16i_BFu16ll_BFu16i_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16ll_BFu16i_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16ll_BFu16i_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16ll_BFu16i_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFu16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16ll_BFu16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFu16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16ll_BFu16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFu16i_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16ll_BFu16i_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFu16i_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16ll_BFu16i_BFs16ll, BFs16i_BFu16ll_BFu16i_BFs16ll)
//============================================================================


struct  BFs16i_BFu16ll_BFu16i_BFs16s  {
  signed int v1:16;
  __tsu64 v2:16;
  unsigned int v3:16;
  signed short v4:16;
};
//SIG(1 BFs16i_BFu16ll_BFu16i_BFs16s) C1{ Fi:16 FL:16 Fi:16 Fs:16}



static void Test_BFs16i_BFu16ll_BFu16i_BFs16s()
{
  {
    init_simple_test("BFs16i_BFu16ll_BFu16i_BFs16s");
    static STRUCT_IF_C BFs16i_BFu16ll_BFu16i_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16ll_BFu16i_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16ll_BFu16i_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16ll_BFu16i_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFu16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16ll_BFu16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFu16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16ll_BFu16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFu16i_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16ll_BFu16i_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFu16i_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16ll_BFu16i_BFs16s, BFs16i_BFu16ll_BFu16i_BFs16s)
//============================================================================


struct  BFs16i_BFu16ll_BFu16i_BFu16i  {
  signed int v1:16;
  __tsu64 v2:16;
  unsigned int v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16i_BFu16ll_BFu16i_BFu16i) C1{ Fi:16 FL:16 Fi:16 Fi:16}



static void Test_BFs16i_BFu16ll_BFu16i_BFu16i()
{
  {
    init_simple_test("BFs16i_BFu16ll_BFu16i_BFu16i");
    static STRUCT_IF_C BFs16i_BFu16ll_BFu16i_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16ll_BFu16i_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16ll_BFu16i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16ll_BFu16i_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFu16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16ll_BFu16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFu16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16ll_BFu16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFu16i_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16ll_BFu16i_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFu16i_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16ll_BFu16i_BFu16i, BFs16i_BFu16ll_BFu16i_BFu16i)
//============================================================================


struct  BFs16i_BFu16ll_BFu16i_BFu16ll  {
  signed int v1:16;
  __tsu64 v2:16;
  unsigned int v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16i_BFu16ll_BFu16i_BFu16ll) C1{ Fi:16 FL:16 Fi:16 FL:16}



static void Test_BFs16i_BFu16ll_BFu16i_BFu16ll()
{
  {
    init_simple_test("BFs16i_BFu16ll_BFu16i_BFu16ll");
    static STRUCT_IF_C BFs16i_BFu16ll_BFu16i_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16ll_BFu16i_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16ll_BFu16i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16ll_BFu16i_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFu16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16ll_BFu16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFu16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16ll_BFu16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFu16i_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16ll_BFu16i_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFu16i_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16ll_BFu16i_BFu16ll, BFs16i_BFu16ll_BFu16i_BFu16ll)
//============================================================================


struct  BFs16i_BFu16ll_BFu16i_BFu16s  {
  signed int v1:16;
  __tsu64 v2:16;
  unsigned int v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16i_BFu16ll_BFu16i_BFu16s) C1{ Fi:16 FL:16 Fi:16 Fs:16}



static void Test_BFs16i_BFu16ll_BFu16i_BFu16s()
{
  {
    init_simple_test("BFs16i_BFu16ll_BFu16i_BFu16s");
    static STRUCT_IF_C BFs16i_BFu16ll_BFu16i_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16ll_BFu16i_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16ll_BFu16i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16ll_BFu16i_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFu16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16ll_BFu16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFu16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16ll_BFu16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFu16i_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16ll_BFu16i_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFu16i_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16ll_BFu16i_BFu16s, BFs16i_BFu16ll_BFu16i_BFu16s)
//============================================================================


struct  BFs16i_BFu16ll_BFu16ll  {
  signed int v1:16;
  __tsu64 v2:16;
  __tsu64 v3:16;
};
//SIG(1 BFs16i_BFu16ll_BFu16ll) C1{ Fi:16 FL:16 FL:16}



static void Test_BFs16i_BFu16ll_BFu16ll()
{
  {
    init_simple_test("BFs16i_BFu16ll_BFu16ll");
    static STRUCT_IF_C BFs16i_BFu16ll_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16ll_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16ll_BFu16ll, BFs16i_BFu16ll_BFu16ll)
//============================================================================


struct  BFs16i_BFu16ll_BFu16ll_BFs16i  {
  signed int v1:16;
  __tsu64 v2:16;
  __tsu64 v3:16;
  signed int v4:16;
};
//SIG(1 BFs16i_BFu16ll_BFu16ll_BFs16i) C1{ Fi:16 FL:16 FL:16 Fi:16}



static void Test_BFs16i_BFu16ll_BFu16ll_BFs16i()
{
  {
    init_simple_test("BFs16i_BFu16ll_BFu16ll_BFs16i");
    static STRUCT_IF_C BFs16i_BFu16ll_BFu16ll_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16ll_BFu16ll_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16ll_BFu16ll_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16ll_BFu16ll_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFu16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16ll_BFu16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFu16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16ll_BFu16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFu16ll_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16ll_BFu16ll_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFu16ll_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16ll_BFu16ll_BFs16i, BFs16i_BFu16ll_BFu16ll_BFs16i)
//============================================================================


struct  BFs16i_BFu16ll_BFu16ll_BFs16ll  {
  signed int v1:16;
  __tsu64 v2:16;
  __tsu64 v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16i_BFu16ll_BFu16ll_BFs16ll) C1{ Fi:16 FL:16 FL:16 FL:16}



static void Test_BFs16i_BFu16ll_BFu16ll_BFs16ll()
{
  {
    init_simple_test("BFs16i_BFu16ll_BFu16ll_BFs16ll");
    static STRUCT_IF_C BFs16i_BFu16ll_BFu16ll_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16ll_BFu16ll_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16ll_BFu16ll_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16ll_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16ll_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16ll_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16ll_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFu16ll_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16ll_BFu16ll_BFs16ll, BFs16i_BFu16ll_BFu16ll_BFs16ll)
//============================================================================


struct  BFs16i_BFu16ll_BFu16ll_BFs16s  {
  signed int v1:16;
  __tsu64 v2:16;
  __tsu64 v3:16;
  signed short v4:16;
};
//SIG(1 BFs16i_BFu16ll_BFu16ll_BFs16s) C1{ Fi:16 FL:16 FL:16 Fs:16}



static void Test_BFs16i_BFu16ll_BFu16ll_BFs16s()
{
  {
    init_simple_test("BFs16i_BFu16ll_BFu16ll_BFs16s");
    static STRUCT_IF_C BFs16i_BFu16ll_BFu16ll_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16ll_BFu16ll_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16ll_BFu16ll_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16ll_BFu16ll_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFu16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16ll_BFu16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFu16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16ll_BFu16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFu16ll_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16ll_BFu16ll_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFu16ll_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16ll_BFu16ll_BFs16s, BFs16i_BFu16ll_BFu16ll_BFs16s)
//============================================================================


struct  BFs16i_BFu16ll_BFu16ll_BFu16i  {
  signed int v1:16;
  __tsu64 v2:16;
  __tsu64 v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16i_BFu16ll_BFu16ll_BFu16i) C1{ Fi:16 FL:16 FL:16 Fi:16}



static void Test_BFs16i_BFu16ll_BFu16ll_BFu16i()
{
  {
    init_simple_test("BFs16i_BFu16ll_BFu16ll_BFu16i");
    static STRUCT_IF_C BFs16i_BFu16ll_BFu16ll_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16ll_BFu16ll_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16ll_BFu16ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16ll_BFu16ll_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFu16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16ll_BFu16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFu16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16ll_BFu16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFu16ll_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16ll_BFu16ll_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFu16ll_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16ll_BFu16ll_BFu16i, BFs16i_BFu16ll_BFu16ll_BFu16i)
//============================================================================


struct  BFs16i_BFu16ll_BFu16ll_BFu16ll  {
  signed int v1:16;
  __tsu64 v2:16;
  __tsu64 v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16i_BFu16ll_BFu16ll_BFu16ll) C1{ Fi:16 FL:16 FL:16 FL:16}



static void Test_BFs16i_BFu16ll_BFu16ll_BFu16ll()
{
  {
    init_simple_test("BFs16i_BFu16ll_BFu16ll_BFu16ll");
    static STRUCT_IF_C BFs16i_BFu16ll_BFu16ll_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16ll_BFu16ll_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16ll_BFu16ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16ll_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16ll_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16ll_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16ll_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFu16ll_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16ll_BFu16ll_BFu16ll, BFs16i_BFu16ll_BFu16ll_BFu16ll)
//============================================================================


struct  BFs16i_BFu16ll_BFu16ll_BFu16s  {
  signed int v1:16;
  __tsu64 v2:16;
  __tsu64 v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16i_BFu16ll_BFu16ll_BFu16s) C1{ Fi:16 FL:16 FL:16 Fs:16}



static void Test_BFs16i_BFu16ll_BFu16ll_BFu16s()
{
  {
    init_simple_test("BFs16i_BFu16ll_BFu16ll_BFu16s");
    static STRUCT_IF_C BFs16i_BFu16ll_BFu16ll_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16ll_BFu16ll_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16ll_BFu16ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16ll_BFu16ll_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFu16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16ll_BFu16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFu16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16ll_BFu16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFu16ll_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16ll_BFu16ll_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFu16ll_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16ll_BFu16ll_BFu16s, BFs16i_BFu16ll_BFu16ll_BFu16s)
//============================================================================


struct  BFs16i_BFu16ll_BFu16s  {
  signed int v1:16;
  __tsu64 v2:16;
  unsigned short v3:16;
};
//SIG(1 BFs16i_BFu16ll_BFu16s) C1{ Fi:16 FL:16 Fs:16}



static void Test_BFs16i_BFu16ll_BFu16s()
{
  {
    init_simple_test("BFs16i_BFu16ll_BFu16s");
    static STRUCT_IF_C BFs16i_BFu16ll_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16ll_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16ll_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16ll_BFu16s, BFs16i_BFu16ll_BFu16s)
//============================================================================


struct  BFs16i_BFu16ll_BFu16s_BFs16i  {
  signed int v1:16;
  __tsu64 v2:16;
  unsigned short v3:16;
  signed int v4:16;
};
//SIG(1 BFs16i_BFu16ll_BFu16s_BFs16i) C1{ Fi:16 FL:16 Fs:16 Fi:16}



static void Test_BFs16i_BFu16ll_BFu16s_BFs16i()
{
  {
    init_simple_test("BFs16i_BFu16ll_BFu16s_BFs16i");
    static STRUCT_IF_C BFs16i_BFu16ll_BFu16s_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16ll_BFu16s_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16ll_BFu16s_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16ll_BFu16s_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFu16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16ll_BFu16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFu16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16ll_BFu16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFu16s_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16ll_BFu16s_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFu16s_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16ll_BFu16s_BFs16i, BFs16i_BFu16ll_BFu16s_BFs16i)
//============================================================================


struct  BFs16i_BFu16ll_BFu16s_BFs16ll  {
  signed int v1:16;
  __tsu64 v2:16;
  unsigned short v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16i_BFu16ll_BFu16s_BFs16ll) C1{ Fi:16 FL:16 Fs:16 FL:16}



static void Test_BFs16i_BFu16ll_BFu16s_BFs16ll()
{
  {
    init_simple_test("BFs16i_BFu16ll_BFu16s_BFs16ll");
    static STRUCT_IF_C BFs16i_BFu16ll_BFu16s_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16ll_BFu16s_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16ll_BFu16s_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16ll_BFu16s_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFu16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16ll_BFu16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFu16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16ll_BFu16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFu16s_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16ll_BFu16s_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFu16s_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16ll_BFu16s_BFs16ll, BFs16i_BFu16ll_BFu16s_BFs16ll)
//============================================================================


struct  BFs16i_BFu16ll_BFu16s_BFs16s  {
  signed int v1:16;
  __tsu64 v2:16;
  unsigned short v3:16;
  signed short v4:16;
};
//SIG(1 BFs16i_BFu16ll_BFu16s_BFs16s) C1{ Fi:16 FL:16 Fs:16 Fs:16}



static void Test_BFs16i_BFu16ll_BFu16s_BFs16s()
{
  {
    init_simple_test("BFs16i_BFu16ll_BFu16s_BFs16s");
    static STRUCT_IF_C BFs16i_BFu16ll_BFu16s_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16ll_BFu16s_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16ll_BFu16s_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16ll_BFu16s_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFu16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16ll_BFu16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFu16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16ll_BFu16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFu16s_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16ll_BFu16s_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFu16s_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16ll_BFu16s_BFs16s, BFs16i_BFu16ll_BFu16s_BFs16s)
//============================================================================


struct  BFs16i_BFu16ll_BFu16s_BFu16i  {
  signed int v1:16;
  __tsu64 v2:16;
  unsigned short v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16i_BFu16ll_BFu16s_BFu16i) C1{ Fi:16 FL:16 Fs:16 Fi:16}



static void Test_BFs16i_BFu16ll_BFu16s_BFu16i()
{
  {
    init_simple_test("BFs16i_BFu16ll_BFu16s_BFu16i");
    static STRUCT_IF_C BFs16i_BFu16ll_BFu16s_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16ll_BFu16s_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16ll_BFu16s_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16ll_BFu16s_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFu16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16ll_BFu16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFu16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16ll_BFu16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFu16s_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16ll_BFu16s_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFu16s_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16ll_BFu16s_BFu16i, BFs16i_BFu16ll_BFu16s_BFu16i)
//============================================================================


struct  BFs16i_BFu16ll_BFu16s_BFu16ll  {
  signed int v1:16;
  __tsu64 v2:16;
  unsigned short v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16i_BFu16ll_BFu16s_BFu16ll) C1{ Fi:16 FL:16 Fs:16 FL:16}



static void Test_BFs16i_BFu16ll_BFu16s_BFu16ll()
{
  {
    init_simple_test("BFs16i_BFu16ll_BFu16s_BFu16ll");
    static STRUCT_IF_C BFs16i_BFu16ll_BFu16s_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16ll_BFu16s_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16ll_BFu16s_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16ll_BFu16s_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFu16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16ll_BFu16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFu16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16ll_BFu16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFu16s_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16ll_BFu16s_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFu16s_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16ll_BFu16s_BFu16ll, BFs16i_BFu16ll_BFu16s_BFu16ll)
//============================================================================


struct  BFs16i_BFu16ll_BFu16s_BFu16s  {
  signed int v1:16;
  __tsu64 v2:16;
  unsigned short v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16i_BFu16ll_BFu16s_BFu16s) C1{ Fi:16 FL:16 Fs:16 Fs:16}



static void Test_BFs16i_BFu16ll_BFu16s_BFu16s()
{
  {
    init_simple_test("BFs16i_BFu16ll_BFu16s_BFu16s");
    static STRUCT_IF_C BFs16i_BFu16ll_BFu16s_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16ll_BFu16s_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16ll_BFu16s_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16ll_BFu16s_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16ll_BFu16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16ll_BFu16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFu16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16ll_BFu16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFu16s_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16ll_BFu16s_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16ll_BFu16s_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16ll_BFu16s_BFu16s, BFs16i_BFu16ll_BFu16s_BFu16s)
//============================================================================


struct  BFs16i_BFu16s  {
  signed int v1:16;
  unsigned short v2:16;
};
//SIG(1 BFs16i_BFu16s) C1{ Fi:16 Fs:16}



static void Test_BFs16i_BFu16s()
{
  {
    init_simple_test("BFs16i_BFu16s");
    static STRUCT_IF_C BFs16i_BFu16s lv;
    check2(sizeof(lv), 4, "sizeof(BFs16i_BFu16s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16s, BFs16i_BFu16s)
//============================================================================


struct  BFs16i_BFu16s_BFs16i  {
  signed int v1:16;
  unsigned short v2:16;
  signed int v3:16;
};
//SIG(1 BFs16i_BFu16s_BFs16i) C1{ Fi:16 Fs:16 Fi:16}



static void Test_BFs16i_BFu16s_BFs16i()
{
  {
    init_simple_test("BFs16i_BFu16s_BFs16i");
    static STRUCT_IF_C BFs16i_BFu16s_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16s_BFs16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFu16s_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16s_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16s_BFs16i, BFs16i_BFu16s_BFs16i)
//============================================================================


struct  BFs16i_BFu16s_BFs16i_BFs16i  {
  signed int v1:16;
  unsigned short v2:16;
  signed int v3:16;
  signed int v4:16;
};
//SIG(1 BFs16i_BFu16s_BFs16i_BFs16i) C1{ Fi:16 Fs:16 Fi:16 Fi:16}



static void Test_BFs16i_BFu16s_BFs16i_BFs16i()
{
  {
    init_simple_test("BFs16i_BFu16s_BFs16i_BFs16i");
    static STRUCT_IF_C BFs16i_BFu16s_BFs16i_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16s_BFs16i_BFs16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFu16s_BFs16i_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16s_BFs16i_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFs16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16s_BFs16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFs16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16s_BFs16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFs16i_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16s_BFs16i_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFs16i_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16s_BFs16i_BFs16i, BFs16i_BFu16s_BFs16i_BFs16i)
//============================================================================


struct  BFs16i_BFu16s_BFs16i_BFs16ll  {
  signed int v1:16;
  unsigned short v2:16;
  signed int v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16i_BFu16s_BFs16i_BFs16ll) C1{ Fi:16 Fs:16 Fi:16 FL:16}



static void Test_BFs16i_BFu16s_BFs16i_BFs16ll()
{
  {
    init_simple_test("BFs16i_BFu16s_BFs16i_BFs16ll");
    static STRUCT_IF_C BFs16i_BFu16s_BFs16i_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16s_BFs16i_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16s_BFs16i_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16s_BFs16i_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFs16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16s_BFs16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFs16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16s_BFs16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFs16i_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16s_BFs16i_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFs16i_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16s_BFs16i_BFs16ll, BFs16i_BFu16s_BFs16i_BFs16ll)
//============================================================================


struct  BFs16i_BFu16s_BFs16i_BFs16s  {
  signed int v1:16;
  unsigned short v2:16;
  signed int v3:16;
  signed short v4:16;
};
//SIG(1 BFs16i_BFu16s_BFs16i_BFs16s) C1{ Fi:16 Fs:16 Fi:16 Fs:16}



static void Test_BFs16i_BFu16s_BFs16i_BFs16s()
{
  {
    init_simple_test("BFs16i_BFu16s_BFs16i_BFs16s");
    static STRUCT_IF_C BFs16i_BFu16s_BFs16i_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16s_BFs16i_BFs16s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFu16s_BFs16i_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16s_BFs16i_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFs16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16s_BFs16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFs16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16s_BFs16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFs16i_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16s_BFs16i_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFs16i_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16s_BFs16i_BFs16s, BFs16i_BFu16s_BFs16i_BFs16s)
//============================================================================


struct  BFs16i_BFu16s_BFs16i_BFu16i  {
  signed int v1:16;
  unsigned short v2:16;
  signed int v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16i_BFu16s_BFs16i_BFu16i) C1{ Fi:16 Fs:16 Fi:16 Fi:16}



static void Test_BFs16i_BFu16s_BFs16i_BFu16i()
{
  {
    init_simple_test("BFs16i_BFu16s_BFs16i_BFu16i");
    static STRUCT_IF_C BFs16i_BFu16s_BFs16i_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16s_BFs16i_BFu16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFu16s_BFs16i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16s_BFs16i_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFs16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16s_BFs16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFs16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16s_BFs16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFs16i_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16s_BFs16i_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFs16i_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16s_BFs16i_BFu16i, BFs16i_BFu16s_BFs16i_BFu16i)
//============================================================================


struct  BFs16i_BFu16s_BFs16i_BFu16ll  {
  signed int v1:16;
  unsigned short v2:16;
  signed int v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16i_BFu16s_BFs16i_BFu16ll) C1{ Fi:16 Fs:16 Fi:16 FL:16}



static void Test_BFs16i_BFu16s_BFs16i_BFu16ll()
{
  {
    init_simple_test("BFs16i_BFu16s_BFs16i_BFu16ll");
    static STRUCT_IF_C BFs16i_BFu16s_BFs16i_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16s_BFs16i_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16s_BFs16i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16s_BFs16i_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFs16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16s_BFs16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFs16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16s_BFs16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFs16i_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16s_BFs16i_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFs16i_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16s_BFs16i_BFu16ll, BFs16i_BFu16s_BFs16i_BFu16ll)
//============================================================================


struct  BFs16i_BFu16s_BFs16i_BFu16s  {
  signed int v1:16;
  unsigned short v2:16;
  signed int v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16i_BFu16s_BFs16i_BFu16s) C1{ Fi:16 Fs:16 Fi:16 Fs:16}



static void Test_BFs16i_BFu16s_BFs16i_BFu16s()
{
  {
    init_simple_test("BFs16i_BFu16s_BFs16i_BFu16s");
    static STRUCT_IF_C BFs16i_BFu16s_BFs16i_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16s_BFs16i_BFu16s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFu16s_BFs16i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16s_BFs16i_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFs16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16s_BFs16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFs16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16s_BFs16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFs16i_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16s_BFs16i_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFs16i_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16s_BFs16i_BFu16s, BFs16i_BFu16s_BFs16i_BFu16s)
//============================================================================


struct  BFs16i_BFu16s_BFs16ll  {
  signed int v1:16;
  unsigned short v2:16;
  signed __tsi64 v3:16;
};
//SIG(1 BFs16i_BFu16s_BFs16ll) C1{ Fi:16 Fs:16 FL:16}



static void Test_BFs16i_BFu16s_BFs16ll()
{
  {
    init_simple_test("BFs16i_BFu16s_BFs16ll");
    static STRUCT_IF_C BFs16i_BFu16s_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16s_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16s_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16s_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16s_BFs16ll, BFs16i_BFu16s_BFs16ll)
//============================================================================


struct  BFs16i_BFu16s_BFs16ll_BFs16i  {
  signed int v1:16;
  unsigned short v2:16;
  signed __tsi64 v3:16;
  signed int v4:16;
};
//SIG(1 BFs16i_BFu16s_BFs16ll_BFs16i) C1{ Fi:16 Fs:16 FL:16 Fi:16}



static void Test_BFs16i_BFu16s_BFs16ll_BFs16i()
{
  {
    init_simple_test("BFs16i_BFu16s_BFs16ll_BFs16i");
    static STRUCT_IF_C BFs16i_BFu16s_BFs16ll_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16s_BFs16ll_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16s_BFs16ll_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16s_BFs16ll_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFs16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16s_BFs16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFs16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16s_BFs16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFs16ll_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16s_BFs16ll_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFs16ll_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16s_BFs16ll_BFs16i, BFs16i_BFu16s_BFs16ll_BFs16i)
//============================================================================


struct  BFs16i_BFu16s_BFs16ll_BFs16ll  {
  signed int v1:16;
  unsigned short v2:16;
  signed __tsi64 v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16i_BFu16s_BFs16ll_BFs16ll) C1{ Fi:16 Fs:16 FL:16 FL:16}



static void Test_BFs16i_BFu16s_BFs16ll_BFs16ll()
{
  {
    init_simple_test("BFs16i_BFu16s_BFs16ll_BFs16ll");
    static STRUCT_IF_C BFs16i_BFu16s_BFs16ll_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16s_BFs16ll_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16s_BFs16ll_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16s_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16s_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16s_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16s_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFs16ll_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16s_BFs16ll_BFs16ll, BFs16i_BFu16s_BFs16ll_BFs16ll)
//============================================================================


struct  BFs16i_BFu16s_BFs16ll_BFs16s  {
  signed int v1:16;
  unsigned short v2:16;
  signed __tsi64 v3:16;
  signed short v4:16;
};
//SIG(1 BFs16i_BFu16s_BFs16ll_BFs16s) C1{ Fi:16 Fs:16 FL:16 Fs:16}



static void Test_BFs16i_BFu16s_BFs16ll_BFs16s()
{
  {
    init_simple_test("BFs16i_BFu16s_BFs16ll_BFs16s");
    static STRUCT_IF_C BFs16i_BFu16s_BFs16ll_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16s_BFs16ll_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16s_BFs16ll_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16s_BFs16ll_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFs16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16s_BFs16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFs16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16s_BFs16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFs16ll_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16s_BFs16ll_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFs16ll_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16s_BFs16ll_BFs16s, BFs16i_BFu16s_BFs16ll_BFs16s)
//============================================================================


struct  BFs16i_BFu16s_BFs16ll_BFu16i  {
  signed int v1:16;
  unsigned short v2:16;
  signed __tsi64 v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16i_BFu16s_BFs16ll_BFu16i) C1{ Fi:16 Fs:16 FL:16 Fi:16}



static void Test_BFs16i_BFu16s_BFs16ll_BFu16i()
{
  {
    init_simple_test("BFs16i_BFu16s_BFs16ll_BFu16i");
    static STRUCT_IF_C BFs16i_BFu16s_BFs16ll_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16s_BFs16ll_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16s_BFs16ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16s_BFs16ll_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFs16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16s_BFs16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFs16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16s_BFs16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFs16ll_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16s_BFs16ll_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFs16ll_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16s_BFs16ll_BFu16i, BFs16i_BFu16s_BFs16ll_BFu16i)
//============================================================================


struct  BFs16i_BFu16s_BFs16ll_BFu16ll  {
  signed int v1:16;
  unsigned short v2:16;
  signed __tsi64 v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16i_BFu16s_BFs16ll_BFu16ll) C1{ Fi:16 Fs:16 FL:16 FL:16}



static void Test_BFs16i_BFu16s_BFs16ll_BFu16ll()
{
  {
    init_simple_test("BFs16i_BFu16s_BFs16ll_BFu16ll");
    static STRUCT_IF_C BFs16i_BFu16s_BFs16ll_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16s_BFs16ll_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16s_BFs16ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16s_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16s_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16s_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16s_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFs16ll_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16s_BFs16ll_BFu16ll, BFs16i_BFu16s_BFs16ll_BFu16ll)
//============================================================================


struct  BFs16i_BFu16s_BFs16ll_BFu16s  {
  signed int v1:16;
  unsigned short v2:16;
  signed __tsi64 v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16i_BFu16s_BFs16ll_BFu16s) C1{ Fi:16 Fs:16 FL:16 Fs:16}



static void Test_BFs16i_BFu16s_BFs16ll_BFu16s()
{
  {
    init_simple_test("BFs16i_BFu16s_BFs16ll_BFu16s");
    static STRUCT_IF_C BFs16i_BFu16s_BFs16ll_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16s_BFs16ll_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16s_BFs16ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16s_BFs16ll_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFs16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16s_BFs16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFs16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16s_BFs16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFs16ll_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16s_BFs16ll_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFs16ll_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16s_BFs16ll_BFu16s, BFs16i_BFu16s_BFs16ll_BFu16s)
//============================================================================


struct  BFs16i_BFu16s_BFs16s  {
  signed int v1:16;
  unsigned short v2:16;
  signed short v3:16;
};
//SIG(1 BFs16i_BFu16s_BFs16s) C1{ Fi:16 Fs:16 Fs:16}



static void Test_BFs16i_BFu16s_BFs16s()
{
  {
    init_simple_test("BFs16i_BFu16s_BFs16s");
    static STRUCT_IF_C BFs16i_BFu16s_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16s_BFs16s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFu16s_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16s_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16s_BFs16s, BFs16i_BFu16s_BFs16s)
//============================================================================


struct  BFs16i_BFu16s_BFs16s_BFs16i  {
  signed int v1:16;
  unsigned short v2:16;
  signed short v3:16;
  signed int v4:16;
};
//SIG(1 BFs16i_BFu16s_BFs16s_BFs16i) C1{ Fi:16 Fs:16 Fs:16 Fi:16}



static void Test_BFs16i_BFu16s_BFs16s_BFs16i()
{
  {
    init_simple_test("BFs16i_BFu16s_BFs16s_BFs16i");
    static STRUCT_IF_C BFs16i_BFu16s_BFs16s_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16s_BFs16s_BFs16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFu16s_BFs16s_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16s_BFs16s_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFs16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16s_BFs16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFs16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16s_BFs16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFs16s_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16s_BFs16s_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFs16s_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16s_BFs16s_BFs16i, BFs16i_BFu16s_BFs16s_BFs16i)
//============================================================================


struct  BFs16i_BFu16s_BFs16s_BFs16ll  {
  signed int v1:16;
  unsigned short v2:16;
  signed short v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16i_BFu16s_BFs16s_BFs16ll) C1{ Fi:16 Fs:16 Fs:16 FL:16}



static void Test_BFs16i_BFu16s_BFs16s_BFs16ll()
{
  {
    init_simple_test("BFs16i_BFu16s_BFs16s_BFs16ll");
    static STRUCT_IF_C BFs16i_BFu16s_BFs16s_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16s_BFs16s_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16s_BFs16s_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16s_BFs16s_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFs16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16s_BFs16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFs16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16s_BFs16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFs16s_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16s_BFs16s_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFs16s_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16s_BFs16s_BFs16ll, BFs16i_BFu16s_BFs16s_BFs16ll)
//============================================================================


struct  BFs16i_BFu16s_BFs16s_BFs16s  {
  signed int v1:16;
  unsigned short v2:16;
  signed short v3:16;
  signed short v4:16;
};
//SIG(1 BFs16i_BFu16s_BFs16s_BFs16s) C1{ Fi:16 Fs:16 Fs:16 Fs:16}



static void Test_BFs16i_BFu16s_BFs16s_BFs16s()
{
  {
    init_simple_test("BFs16i_BFu16s_BFs16s_BFs16s");
    static STRUCT_IF_C BFs16i_BFu16s_BFs16s_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16s_BFs16s_BFs16s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFu16s_BFs16s_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16s_BFs16s_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFs16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16s_BFs16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFs16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16s_BFs16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFs16s_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16s_BFs16s_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFs16s_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16s_BFs16s_BFs16s, BFs16i_BFu16s_BFs16s_BFs16s)
//============================================================================


struct  BFs16i_BFu16s_BFs16s_BFu16i  {
  signed int v1:16;
  unsigned short v2:16;
  signed short v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16i_BFu16s_BFs16s_BFu16i) C1{ Fi:16 Fs:16 Fs:16 Fi:16}



static void Test_BFs16i_BFu16s_BFs16s_BFu16i()
{
  {
    init_simple_test("BFs16i_BFu16s_BFs16s_BFu16i");
    static STRUCT_IF_C BFs16i_BFu16s_BFs16s_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16s_BFs16s_BFu16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFu16s_BFs16s_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16s_BFs16s_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFs16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16s_BFs16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFs16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16s_BFs16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFs16s_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16s_BFs16s_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFs16s_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16s_BFs16s_BFu16i, BFs16i_BFu16s_BFs16s_BFu16i)
//============================================================================


struct  BFs16i_BFu16s_BFs16s_BFu16ll  {
  signed int v1:16;
  unsigned short v2:16;
  signed short v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16i_BFu16s_BFs16s_BFu16ll) C1{ Fi:16 Fs:16 Fs:16 FL:16}



static void Test_BFs16i_BFu16s_BFs16s_BFu16ll()
{
  {
    init_simple_test("BFs16i_BFu16s_BFs16s_BFu16ll");
    static STRUCT_IF_C BFs16i_BFu16s_BFs16s_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16s_BFs16s_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16s_BFs16s_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16s_BFs16s_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFs16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16s_BFs16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFs16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16s_BFs16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFs16s_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16s_BFs16s_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFs16s_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16s_BFs16s_BFu16ll, BFs16i_BFu16s_BFs16s_BFu16ll)
//============================================================================


struct  BFs16i_BFu16s_BFs16s_BFu16s  {
  signed int v1:16;
  unsigned short v2:16;
  signed short v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16i_BFu16s_BFs16s_BFu16s) C1{ Fi:16 Fs:16 Fs:16 Fs:16}



static void Test_BFs16i_BFu16s_BFs16s_BFu16s()
{
  {
    init_simple_test("BFs16i_BFu16s_BFs16s_BFu16s");
    static STRUCT_IF_C BFs16i_BFu16s_BFs16s_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16s_BFs16s_BFu16s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFu16s_BFs16s_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16s_BFs16s_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFs16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16s_BFs16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFs16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16s_BFs16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFs16s_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16s_BFs16s_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFs16s_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16s_BFs16s_BFu16s, BFs16i_BFu16s_BFs16s_BFu16s)
//============================================================================


struct  BFs16i_BFu16s_BFu16i  {
  signed int v1:16;
  unsigned short v2:16;
  unsigned int v3:16;
};
//SIG(1 BFs16i_BFu16s_BFu16i) C1{ Fi:16 Fs:16 Fi:16}



static void Test_BFs16i_BFu16s_BFu16i()
{
  {
    init_simple_test("BFs16i_BFu16s_BFu16i");
    static STRUCT_IF_C BFs16i_BFu16s_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16s_BFu16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFu16s_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16s_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16s_BFu16i, BFs16i_BFu16s_BFu16i)
//============================================================================


struct  BFs16i_BFu16s_BFu16i_BFs16i  {
  signed int v1:16;
  unsigned short v2:16;
  unsigned int v3:16;
  signed int v4:16;
};
//SIG(1 BFs16i_BFu16s_BFu16i_BFs16i) C1{ Fi:16 Fs:16 Fi:16 Fi:16}



static void Test_BFs16i_BFu16s_BFu16i_BFs16i()
{
  {
    init_simple_test("BFs16i_BFu16s_BFu16i_BFs16i");
    static STRUCT_IF_C BFs16i_BFu16s_BFu16i_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16s_BFu16i_BFs16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFu16s_BFu16i_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16s_BFu16i_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFu16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16s_BFu16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFu16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16s_BFu16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFu16i_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16s_BFu16i_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFu16i_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16s_BFu16i_BFs16i, BFs16i_BFu16s_BFu16i_BFs16i)
//============================================================================


struct  BFs16i_BFu16s_BFu16i_BFs16ll  {
  signed int v1:16;
  unsigned short v2:16;
  unsigned int v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16i_BFu16s_BFu16i_BFs16ll) C1{ Fi:16 Fs:16 Fi:16 FL:16}



static void Test_BFs16i_BFu16s_BFu16i_BFs16ll()
{
  {
    init_simple_test("BFs16i_BFu16s_BFu16i_BFs16ll");
    static STRUCT_IF_C BFs16i_BFu16s_BFu16i_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16s_BFu16i_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16s_BFu16i_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16s_BFu16i_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFu16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16s_BFu16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFu16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16s_BFu16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFu16i_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16s_BFu16i_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFu16i_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16s_BFu16i_BFs16ll, BFs16i_BFu16s_BFu16i_BFs16ll)
//============================================================================


struct  BFs16i_BFu16s_BFu16i_BFs16s  {
  signed int v1:16;
  unsigned short v2:16;
  unsigned int v3:16;
  signed short v4:16;
};
//SIG(1 BFs16i_BFu16s_BFu16i_BFs16s) C1{ Fi:16 Fs:16 Fi:16 Fs:16}



static void Test_BFs16i_BFu16s_BFu16i_BFs16s()
{
  {
    init_simple_test("BFs16i_BFu16s_BFu16i_BFs16s");
    static STRUCT_IF_C BFs16i_BFu16s_BFu16i_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16s_BFu16i_BFs16s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFu16s_BFu16i_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16s_BFu16i_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFu16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16s_BFu16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFu16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16s_BFu16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFu16i_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16s_BFu16i_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFu16i_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16s_BFu16i_BFs16s, BFs16i_BFu16s_BFu16i_BFs16s)
//============================================================================


struct  BFs16i_BFu16s_BFu16i_BFu16i  {
  signed int v1:16;
  unsigned short v2:16;
  unsigned int v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16i_BFu16s_BFu16i_BFu16i) C1{ Fi:16 Fs:16 Fi:16 Fi:16}



static void Test_BFs16i_BFu16s_BFu16i_BFu16i()
{
  {
    init_simple_test("BFs16i_BFu16s_BFu16i_BFu16i");
    static STRUCT_IF_C BFs16i_BFu16s_BFu16i_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16s_BFu16i_BFu16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFu16s_BFu16i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16s_BFu16i_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFu16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16s_BFu16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFu16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16s_BFu16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFu16i_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16s_BFu16i_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFu16i_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16s_BFu16i_BFu16i, BFs16i_BFu16s_BFu16i_BFu16i)
//============================================================================


struct  BFs16i_BFu16s_BFu16i_BFu16ll  {
  signed int v1:16;
  unsigned short v2:16;
  unsigned int v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16i_BFu16s_BFu16i_BFu16ll) C1{ Fi:16 Fs:16 Fi:16 FL:16}



static void Test_BFs16i_BFu16s_BFu16i_BFu16ll()
{
  {
    init_simple_test("BFs16i_BFu16s_BFu16i_BFu16ll");
    static STRUCT_IF_C BFs16i_BFu16s_BFu16i_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16s_BFu16i_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16s_BFu16i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16s_BFu16i_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFu16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16s_BFu16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFu16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16s_BFu16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFu16i_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16s_BFu16i_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFu16i_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16s_BFu16i_BFu16ll, BFs16i_BFu16s_BFu16i_BFu16ll)
//============================================================================


struct  BFs16i_BFu16s_BFu16i_BFu16s  {
  signed int v1:16;
  unsigned short v2:16;
  unsigned int v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16i_BFu16s_BFu16i_BFu16s) C1{ Fi:16 Fs:16 Fi:16 Fs:16}



static void Test_BFs16i_BFu16s_BFu16i_BFu16s()
{
  {
    init_simple_test("BFs16i_BFu16s_BFu16i_BFu16s");
    static STRUCT_IF_C BFs16i_BFu16s_BFu16i_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16s_BFu16i_BFu16s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFu16s_BFu16i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16s_BFu16i_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFu16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16s_BFu16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFu16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16s_BFu16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFu16i_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16s_BFu16i_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFu16i_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16s_BFu16i_BFu16s, BFs16i_BFu16s_BFu16i_BFu16s)
//============================================================================


struct  BFs16i_BFu16s_BFu16ll  {
  signed int v1:16;
  unsigned short v2:16;
  __tsu64 v3:16;
};
//SIG(1 BFs16i_BFu16s_BFu16ll) C1{ Fi:16 Fs:16 FL:16}



static void Test_BFs16i_BFu16s_BFu16ll()
{
  {
    init_simple_test("BFs16i_BFu16s_BFu16ll");
    static STRUCT_IF_C BFs16i_BFu16s_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16s_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16s_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16s_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16s_BFu16ll, BFs16i_BFu16s_BFu16ll)
//============================================================================


struct  BFs16i_BFu16s_BFu16ll_BFs16i  {
  signed int v1:16;
  unsigned short v2:16;
  __tsu64 v3:16;
  signed int v4:16;
};
//SIG(1 BFs16i_BFu16s_BFu16ll_BFs16i) C1{ Fi:16 Fs:16 FL:16 Fi:16}



static void Test_BFs16i_BFu16s_BFu16ll_BFs16i()
{
  {
    init_simple_test("BFs16i_BFu16s_BFu16ll_BFs16i");
    static STRUCT_IF_C BFs16i_BFu16s_BFu16ll_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16s_BFu16ll_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16s_BFu16ll_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16s_BFu16ll_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFu16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16s_BFu16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFu16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16s_BFu16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFu16ll_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16s_BFu16ll_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFu16ll_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16s_BFu16ll_BFs16i, BFs16i_BFu16s_BFu16ll_BFs16i)
//============================================================================


struct  BFs16i_BFu16s_BFu16ll_BFs16ll  {
  signed int v1:16;
  unsigned short v2:16;
  __tsu64 v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16i_BFu16s_BFu16ll_BFs16ll) C1{ Fi:16 Fs:16 FL:16 FL:16}



static void Test_BFs16i_BFu16s_BFu16ll_BFs16ll()
{
  {
    init_simple_test("BFs16i_BFu16s_BFu16ll_BFs16ll");
    static STRUCT_IF_C BFs16i_BFu16s_BFu16ll_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16s_BFu16ll_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16s_BFu16ll_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16s_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16s_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16s_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16s_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFu16ll_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16s_BFu16ll_BFs16ll, BFs16i_BFu16s_BFu16ll_BFs16ll)
//============================================================================


struct  BFs16i_BFu16s_BFu16ll_BFs16s  {
  signed int v1:16;
  unsigned short v2:16;
  __tsu64 v3:16;
  signed short v4:16;
};
//SIG(1 BFs16i_BFu16s_BFu16ll_BFs16s) C1{ Fi:16 Fs:16 FL:16 Fs:16}



static void Test_BFs16i_BFu16s_BFu16ll_BFs16s()
{
  {
    init_simple_test("BFs16i_BFu16s_BFu16ll_BFs16s");
    static STRUCT_IF_C BFs16i_BFu16s_BFu16ll_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16s_BFu16ll_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16s_BFu16ll_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16s_BFu16ll_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFu16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16s_BFu16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFu16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16s_BFu16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFu16ll_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16s_BFu16ll_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFu16ll_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16s_BFu16ll_BFs16s, BFs16i_BFu16s_BFu16ll_BFs16s)
//============================================================================


struct  BFs16i_BFu16s_BFu16ll_BFu16i  {
  signed int v1:16;
  unsigned short v2:16;
  __tsu64 v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16i_BFu16s_BFu16ll_BFu16i) C1{ Fi:16 Fs:16 FL:16 Fi:16}



static void Test_BFs16i_BFu16s_BFu16ll_BFu16i()
{
  {
    init_simple_test("BFs16i_BFu16s_BFu16ll_BFu16i");
    static STRUCT_IF_C BFs16i_BFu16s_BFu16ll_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16s_BFu16ll_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16s_BFu16ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16s_BFu16ll_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFu16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16s_BFu16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFu16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16s_BFu16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFu16ll_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16s_BFu16ll_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFu16ll_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16s_BFu16ll_BFu16i, BFs16i_BFu16s_BFu16ll_BFu16i)
//============================================================================


struct  BFs16i_BFu16s_BFu16ll_BFu16ll  {
  signed int v1:16;
  unsigned short v2:16;
  __tsu64 v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16i_BFu16s_BFu16ll_BFu16ll) C1{ Fi:16 Fs:16 FL:16 FL:16}



static void Test_BFs16i_BFu16s_BFu16ll_BFu16ll()
{
  {
    init_simple_test("BFs16i_BFu16s_BFu16ll_BFu16ll");
    static STRUCT_IF_C BFs16i_BFu16s_BFu16ll_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16s_BFu16ll_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16s_BFu16ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16s_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16s_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16s_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16s_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFu16ll_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16s_BFu16ll_BFu16ll, BFs16i_BFu16s_BFu16ll_BFu16ll)
//============================================================================


struct  BFs16i_BFu16s_BFu16ll_BFu16s  {
  signed int v1:16;
  unsigned short v2:16;
  __tsu64 v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16i_BFu16s_BFu16ll_BFu16s) C1{ Fi:16 Fs:16 FL:16 Fs:16}



static void Test_BFs16i_BFu16s_BFu16ll_BFu16s()
{
  {
    init_simple_test("BFs16i_BFu16s_BFu16ll_BFu16s");
    static STRUCT_IF_C BFs16i_BFu16s_BFu16ll_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16s_BFu16ll_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16s_BFu16ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16s_BFu16ll_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFu16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16s_BFu16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFu16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16s_BFu16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFu16ll_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16s_BFu16ll_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFu16ll_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16s_BFu16ll_BFu16s, BFs16i_BFu16s_BFu16ll_BFu16s)
//============================================================================


struct  BFs16i_BFu16s_BFu16s  {
  signed int v1:16;
  unsigned short v2:16;
  unsigned short v3:16;
};
//SIG(1 BFs16i_BFu16s_BFu16s) C1{ Fi:16 Fs:16 Fs:16}



static void Test_BFs16i_BFu16s_BFu16s()
{
  {
    init_simple_test("BFs16i_BFu16s_BFu16s");
    static STRUCT_IF_C BFs16i_BFu16s_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16s_BFu16s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFu16s_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16s_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16s_BFu16s, BFs16i_BFu16s_BFu16s)
//============================================================================


struct  BFs16i_BFu16s_BFu16s_BFs16i  {
  signed int v1:16;
  unsigned short v2:16;
  unsigned short v3:16;
  signed int v4:16;
};
//SIG(1 BFs16i_BFu16s_BFu16s_BFs16i) C1{ Fi:16 Fs:16 Fs:16 Fi:16}



static void Test_BFs16i_BFu16s_BFu16s_BFs16i()
{
  {
    init_simple_test("BFs16i_BFu16s_BFu16s_BFs16i");
    static STRUCT_IF_C BFs16i_BFu16s_BFu16s_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16s_BFu16s_BFs16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFu16s_BFu16s_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16s_BFu16s_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFu16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16s_BFu16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFu16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16s_BFu16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFu16s_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16s_BFu16s_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFu16s_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16s_BFu16s_BFs16i, BFs16i_BFu16s_BFu16s_BFs16i)
//============================================================================


struct  BFs16i_BFu16s_BFu16s_BFs16ll  {
  signed int v1:16;
  unsigned short v2:16;
  unsigned short v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16i_BFu16s_BFu16s_BFs16ll) C1{ Fi:16 Fs:16 Fs:16 FL:16}



static void Test_BFs16i_BFu16s_BFu16s_BFs16ll()
{
  {
    init_simple_test("BFs16i_BFu16s_BFu16s_BFs16ll");
    static STRUCT_IF_C BFs16i_BFu16s_BFu16s_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16s_BFu16s_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16s_BFu16s_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16s_BFu16s_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFu16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16s_BFu16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFu16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16s_BFu16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFu16s_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16s_BFu16s_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFu16s_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16s_BFu16s_BFs16ll, BFs16i_BFu16s_BFu16s_BFs16ll)
//============================================================================


struct  BFs16i_BFu16s_BFu16s_BFs16s  {
  signed int v1:16;
  unsigned short v2:16;
  unsigned short v3:16;
  signed short v4:16;
};
//SIG(1 BFs16i_BFu16s_BFu16s_BFs16s) C1{ Fi:16 Fs:16 Fs:16 Fs:16}



static void Test_BFs16i_BFu16s_BFu16s_BFs16s()
{
  {
    init_simple_test("BFs16i_BFu16s_BFu16s_BFs16s");
    static STRUCT_IF_C BFs16i_BFu16s_BFu16s_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16s_BFu16s_BFs16s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFu16s_BFu16s_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16s_BFu16s_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFu16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16s_BFu16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFu16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16s_BFu16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFu16s_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16s_BFu16s_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFu16s_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16s_BFu16s_BFs16s, BFs16i_BFu16s_BFu16s_BFs16s)
//============================================================================


struct  BFs16i_BFu16s_BFu16s_BFu16i  {
  signed int v1:16;
  unsigned short v2:16;
  unsigned short v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16i_BFu16s_BFu16s_BFu16i) C1{ Fi:16 Fs:16 Fs:16 Fi:16}



static void Test_BFs16i_BFu16s_BFu16s_BFu16i()
{
  {
    init_simple_test("BFs16i_BFu16s_BFu16s_BFu16i");
    static STRUCT_IF_C BFs16i_BFu16s_BFu16s_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16s_BFu16s_BFu16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFu16s_BFu16s_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16s_BFu16s_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFu16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16s_BFu16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFu16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16s_BFu16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFu16s_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16s_BFu16s_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFu16s_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16s_BFu16s_BFu16i, BFs16i_BFu16s_BFu16s_BFu16i)
//============================================================================


struct  BFs16i_BFu16s_BFu16s_BFu16ll  {
  signed int v1:16;
  unsigned short v2:16;
  unsigned short v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16i_BFu16s_BFu16s_BFu16ll) C1{ Fi:16 Fs:16 Fs:16 FL:16}



static void Test_BFs16i_BFu16s_BFu16s_BFu16ll()
{
  {
    init_simple_test("BFs16i_BFu16s_BFu16s_BFu16ll");
    static STRUCT_IF_C BFs16i_BFu16s_BFu16s_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16s_BFu16s_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16i_BFu16s_BFu16s_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16s_BFu16s_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFu16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16s_BFu16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFu16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16s_BFu16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFu16s_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16s_BFu16s_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFu16s_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16s_BFu16s_BFu16ll, BFs16i_BFu16s_BFu16s_BFu16ll)
//============================================================================


struct  BFs16i_BFu16s_BFu16s_BFu16s  {
  signed int v1:16;
  unsigned short v2:16;
  unsigned short v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16i_BFu16s_BFu16s_BFu16s) C1{ Fi:16 Fs:16 Fs:16 Fs:16}



static void Test_BFs16i_BFu16s_BFu16s_BFu16s()
{
  {
    init_simple_test("BFs16i_BFu16s_BFu16s_BFu16s");
    static STRUCT_IF_C BFs16i_BFu16s_BFu16s_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16i_BFu16s_BFu16s_BFu16s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16i_BFu16s_BFu16s_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16i_BFu16s_BFu16s_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16i_BFu16s_BFu16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16i_BFu16s_BFu16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFu16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16i_BFu16s_BFu16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFu16s_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16i_BFu16s_BFu16s_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16i_BFu16s_BFu16s_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16i_BFu16s_BFu16s_BFu16s, BFs16i_BFu16s_BFu16s_BFu16s)
//============================================================================


struct  BFs16ll_BFs16i  {
  signed __tsi64 v1:16;
  signed int v2:16;
};
//SIG(1 BFs16ll_BFs16i) C1{ FL:16 Fi:16}



static void Test_BFs16ll_BFs16i()
{
  {
    init_simple_test("BFs16ll_BFs16i");
    static STRUCT_IF_C BFs16ll_BFs16i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs16ll_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16i, BFs16ll_BFs16i)
//============================================================================


struct  BFs16ll_BFs16i_BFs16i  {
  signed __tsi64 v1:16;
  signed int v2:16;
  signed int v3:16;
};
//SIG(1 BFs16ll_BFs16i_BFs16i) C1{ FL:16 Fi:16 Fi:16}



static void Test_BFs16ll_BFs16i_BFs16i()
{
  {
    init_simple_test("BFs16ll_BFs16i_BFs16i");
    static STRUCT_IF_C BFs16ll_BFs16i_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16i_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16i_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16i_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16i_BFs16i, BFs16ll_BFs16i_BFs16i)
//============================================================================


struct  BFs16ll_BFs16i_BFs16i_BFs16i  {
  signed __tsi64 v1:16;
  signed int v2:16;
  signed int v3:16;
  signed int v4:16;
};
//SIG(1 BFs16ll_BFs16i_BFs16i_BFs16i) C1{ FL:16 Fi:16 Fi:16 Fi:16}



static void Test_BFs16ll_BFs16i_BFs16i_BFs16i()
{
  {
    init_simple_test("BFs16ll_BFs16i_BFs16i_BFs16i");
    static STRUCT_IF_C BFs16ll_BFs16i_BFs16i_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16i_BFs16i_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16i_BFs16i_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16i_BFs16i_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFs16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16i_BFs16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFs16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16i_BFs16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFs16i_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16i_BFs16i_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFs16i_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16i_BFs16i_BFs16i, BFs16ll_BFs16i_BFs16i_BFs16i)
//============================================================================


struct  BFs16ll_BFs16i_BFs16i_BFs16ll  {
  signed __tsi64 v1:16;
  signed int v2:16;
  signed int v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16ll_BFs16i_BFs16i_BFs16ll) C1{ FL:16 Fi:16 Fi:16 FL:16}



static void Test_BFs16ll_BFs16i_BFs16i_BFs16ll()
{
  {
    init_simple_test("BFs16ll_BFs16i_BFs16i_BFs16ll");
    static STRUCT_IF_C BFs16ll_BFs16i_BFs16i_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16i_BFs16i_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16i_BFs16i_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16i_BFs16i_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFs16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16i_BFs16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFs16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16i_BFs16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFs16i_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16i_BFs16i_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFs16i_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16i_BFs16i_BFs16ll, BFs16ll_BFs16i_BFs16i_BFs16ll)
//============================================================================


struct  BFs16ll_BFs16i_BFs16i_BFs16s  {
  signed __tsi64 v1:16;
  signed int v2:16;
  signed int v3:16;
  signed short v4:16;
};
//SIG(1 BFs16ll_BFs16i_BFs16i_BFs16s) C1{ FL:16 Fi:16 Fi:16 Fs:16}



static void Test_BFs16ll_BFs16i_BFs16i_BFs16s()
{
  {
    init_simple_test("BFs16ll_BFs16i_BFs16i_BFs16s");
    static STRUCT_IF_C BFs16ll_BFs16i_BFs16i_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16i_BFs16i_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16i_BFs16i_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16i_BFs16i_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFs16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16i_BFs16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFs16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16i_BFs16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFs16i_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16i_BFs16i_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFs16i_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16i_BFs16i_BFs16s, BFs16ll_BFs16i_BFs16i_BFs16s)
//============================================================================


struct  BFs16ll_BFs16i_BFs16i_BFu16i  {
  signed __tsi64 v1:16;
  signed int v2:16;
  signed int v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16ll_BFs16i_BFs16i_BFu16i) C1{ FL:16 Fi:16 Fi:16 Fi:16}



static void Test_BFs16ll_BFs16i_BFs16i_BFu16i()
{
  {
    init_simple_test("BFs16ll_BFs16i_BFs16i_BFu16i");
    static STRUCT_IF_C BFs16ll_BFs16i_BFs16i_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16i_BFs16i_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16i_BFs16i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16i_BFs16i_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFs16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16i_BFs16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFs16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16i_BFs16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFs16i_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16i_BFs16i_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16i_BFs16i_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16i_BFs16i_BFu16i, BFs16ll_BFs16i_BFs16i_BFu16i)
//============================================================================


struct  BFs16ll_BFs16i_BFs16i_BFu16ll  {
  signed __tsi64 v1:16;
  signed int v2:16;
  signed int v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16ll_BFs16i_BFs16i_BFu16ll) C1{ FL:16 Fi:16 Fi:16 FL:16}



static void Test_BFs16ll_BFs16i_BFs16i_BFu16ll()
{
  {
    init_simple_test("BFs16ll_BFs16i_BFs16i_BFu16ll");
    static STRUCT_IF_C BFs16ll_BFs16i_BFs16i_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16i_BFs16i_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16i_BFs16i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16i_BFs16i_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFs16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16i_BFs16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFs16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16i_BFs16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFs16i_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16i_BFs16i_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16i_BFs16i_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16i_BFs16i_BFu16ll, BFs16ll_BFs16i_BFs16i_BFu16ll)
//============================================================================


struct  BFs16ll_BFs16i_BFs16i_BFu16s  {
  signed __tsi64 v1:16;
  signed int v2:16;
  signed int v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16ll_BFs16i_BFs16i_BFu16s) C1{ FL:16 Fi:16 Fi:16 Fs:16}



static void Test_BFs16ll_BFs16i_BFs16i_BFu16s()
{
  {
    init_simple_test("BFs16ll_BFs16i_BFs16i_BFu16s");
    static STRUCT_IF_C BFs16ll_BFs16i_BFs16i_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16i_BFs16i_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16i_BFs16i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16i_BFs16i_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFs16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16i_BFs16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFs16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16i_BFs16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFs16i_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16i_BFs16i_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16i_BFs16i_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16i_BFs16i_BFu16s, BFs16ll_BFs16i_BFs16i_BFu16s)
//============================================================================


struct  BFs16ll_BFs16i_BFs16ll  {
  signed __tsi64 v1:16;
  signed int v2:16;
  signed __tsi64 v3:16;
};
//SIG(1 BFs16ll_BFs16i_BFs16ll) C1{ FL:16 Fi:16 FL:16}



static void Test_BFs16ll_BFs16i_BFs16ll()
{
  {
    init_simple_test("BFs16ll_BFs16i_BFs16ll");
    static STRUCT_IF_C BFs16ll_BFs16i_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16i_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16i_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16i_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16i_BFs16ll, BFs16ll_BFs16i_BFs16ll)
//============================================================================


struct  BFs16ll_BFs16i_BFs16ll_BFs16i  {
  signed __tsi64 v1:16;
  signed int v2:16;
  signed __tsi64 v3:16;
  signed int v4:16;
};
//SIG(1 BFs16ll_BFs16i_BFs16ll_BFs16i) C1{ FL:16 Fi:16 FL:16 Fi:16}



static void Test_BFs16ll_BFs16i_BFs16ll_BFs16i()
{
  {
    init_simple_test("BFs16ll_BFs16i_BFs16ll_BFs16i");
    static STRUCT_IF_C BFs16ll_BFs16i_BFs16ll_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16i_BFs16ll_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16i_BFs16ll_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16i_BFs16ll_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFs16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16i_BFs16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFs16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16i_BFs16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFs16ll_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16i_BFs16ll_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFs16ll_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16i_BFs16ll_BFs16i, BFs16ll_BFs16i_BFs16ll_BFs16i)
//============================================================================


struct  BFs16ll_BFs16i_BFs16ll_BFs16ll  {
  signed __tsi64 v1:16;
  signed int v2:16;
  signed __tsi64 v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16ll_BFs16i_BFs16ll_BFs16ll) C1{ FL:16 Fi:16 FL:16 FL:16}



static void Test_BFs16ll_BFs16i_BFs16ll_BFs16ll()
{
  {
    init_simple_test("BFs16ll_BFs16i_BFs16ll_BFs16ll");
    static STRUCT_IF_C BFs16ll_BFs16i_BFs16ll_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16i_BFs16ll_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16i_BFs16ll_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16i_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16i_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16i_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16i_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFs16ll_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16i_BFs16ll_BFs16ll, BFs16ll_BFs16i_BFs16ll_BFs16ll)
//============================================================================


struct  BFs16ll_BFs16i_BFs16ll_BFs16s  {
  signed __tsi64 v1:16;
  signed int v2:16;
  signed __tsi64 v3:16;
  signed short v4:16;
};
//SIG(1 BFs16ll_BFs16i_BFs16ll_BFs16s) C1{ FL:16 Fi:16 FL:16 Fs:16}



static void Test_BFs16ll_BFs16i_BFs16ll_BFs16s()
{
  {
    init_simple_test("BFs16ll_BFs16i_BFs16ll_BFs16s");
    static STRUCT_IF_C BFs16ll_BFs16i_BFs16ll_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16i_BFs16ll_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16i_BFs16ll_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16i_BFs16ll_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFs16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16i_BFs16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFs16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16i_BFs16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFs16ll_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16i_BFs16ll_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFs16ll_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16i_BFs16ll_BFs16s, BFs16ll_BFs16i_BFs16ll_BFs16s)
//============================================================================


struct  BFs16ll_BFs16i_BFs16ll_BFu16i  {
  signed __tsi64 v1:16;
  signed int v2:16;
  signed __tsi64 v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16ll_BFs16i_BFs16ll_BFu16i) C1{ FL:16 Fi:16 FL:16 Fi:16}



static void Test_BFs16ll_BFs16i_BFs16ll_BFu16i()
{
  {
    init_simple_test("BFs16ll_BFs16i_BFs16ll_BFu16i");
    static STRUCT_IF_C BFs16ll_BFs16i_BFs16ll_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16i_BFs16ll_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16i_BFs16ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16i_BFs16ll_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFs16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16i_BFs16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFs16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16i_BFs16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFs16ll_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16i_BFs16ll_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16i_BFs16ll_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16i_BFs16ll_BFu16i, BFs16ll_BFs16i_BFs16ll_BFu16i)
//============================================================================


struct  BFs16ll_BFs16i_BFs16ll_BFu16ll  {
  signed __tsi64 v1:16;
  signed int v2:16;
  signed __tsi64 v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16ll_BFs16i_BFs16ll_BFu16ll) C1{ FL:16 Fi:16 FL:16 FL:16}



static void Test_BFs16ll_BFs16i_BFs16ll_BFu16ll()
{
  {
    init_simple_test("BFs16ll_BFs16i_BFs16ll_BFu16ll");
    static STRUCT_IF_C BFs16ll_BFs16i_BFs16ll_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16i_BFs16ll_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16i_BFs16ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16i_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16i_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16i_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16i_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16i_BFs16ll_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16i_BFs16ll_BFu16ll, BFs16ll_BFs16i_BFs16ll_BFu16ll)
//============================================================================


struct  BFs16ll_BFs16i_BFs16ll_BFu16s  {
  signed __tsi64 v1:16;
  signed int v2:16;
  signed __tsi64 v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16ll_BFs16i_BFs16ll_BFu16s) C1{ FL:16 Fi:16 FL:16 Fs:16}



static void Test_BFs16ll_BFs16i_BFs16ll_BFu16s()
{
  {
    init_simple_test("BFs16ll_BFs16i_BFs16ll_BFu16s");
    static STRUCT_IF_C BFs16ll_BFs16i_BFs16ll_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16i_BFs16ll_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16i_BFs16ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16i_BFs16ll_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFs16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16i_BFs16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFs16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16i_BFs16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFs16ll_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16i_BFs16ll_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16i_BFs16ll_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16i_BFs16ll_BFu16s, BFs16ll_BFs16i_BFs16ll_BFu16s)
//============================================================================


struct  BFs16ll_BFs16i_BFs16s  {
  signed __tsi64 v1:16;
  signed int v2:16;
  signed short v3:16;
};
//SIG(1 BFs16ll_BFs16i_BFs16s) C1{ FL:16 Fi:16 Fs:16}



static void Test_BFs16ll_BFs16i_BFs16s()
{
  {
    init_simple_test("BFs16ll_BFs16i_BFs16s");
    static STRUCT_IF_C BFs16ll_BFs16i_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16i_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16i_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16i_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16i_BFs16s, BFs16ll_BFs16i_BFs16s)
//============================================================================


struct  BFs16ll_BFs16i_BFs16s_BFs16i  {
  signed __tsi64 v1:16;
  signed int v2:16;
  signed short v3:16;
  signed int v4:16;
};
//SIG(1 BFs16ll_BFs16i_BFs16s_BFs16i) C1{ FL:16 Fi:16 Fs:16 Fi:16}



static void Test_BFs16ll_BFs16i_BFs16s_BFs16i()
{
  {
    init_simple_test("BFs16ll_BFs16i_BFs16s_BFs16i");
    static STRUCT_IF_C BFs16ll_BFs16i_BFs16s_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16i_BFs16s_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16i_BFs16s_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16i_BFs16s_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFs16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16i_BFs16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFs16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16i_BFs16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFs16s_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16i_BFs16s_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFs16s_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16i_BFs16s_BFs16i, BFs16ll_BFs16i_BFs16s_BFs16i)
//============================================================================


struct  BFs16ll_BFs16i_BFs16s_BFs16ll  {
  signed __tsi64 v1:16;
  signed int v2:16;
  signed short v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16ll_BFs16i_BFs16s_BFs16ll) C1{ FL:16 Fi:16 Fs:16 FL:16}



static void Test_BFs16ll_BFs16i_BFs16s_BFs16ll()
{
  {
    init_simple_test("BFs16ll_BFs16i_BFs16s_BFs16ll");
    static STRUCT_IF_C BFs16ll_BFs16i_BFs16s_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16i_BFs16s_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16i_BFs16s_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16i_BFs16s_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFs16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16i_BFs16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFs16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16i_BFs16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFs16s_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16i_BFs16s_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFs16s_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16i_BFs16s_BFs16ll, BFs16ll_BFs16i_BFs16s_BFs16ll)
//============================================================================


struct  BFs16ll_BFs16i_BFs16s_BFs16s  {
  signed __tsi64 v1:16;
  signed int v2:16;
  signed short v3:16;
  signed short v4:16;
};
//SIG(1 BFs16ll_BFs16i_BFs16s_BFs16s) C1{ FL:16 Fi:16 Fs:16 Fs:16}



static void Test_BFs16ll_BFs16i_BFs16s_BFs16s()
{
  {
    init_simple_test("BFs16ll_BFs16i_BFs16s_BFs16s");
    static STRUCT_IF_C BFs16ll_BFs16i_BFs16s_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16i_BFs16s_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16i_BFs16s_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16i_BFs16s_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFs16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16i_BFs16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFs16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16i_BFs16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFs16s_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16i_BFs16s_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFs16s_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16i_BFs16s_BFs16s, BFs16ll_BFs16i_BFs16s_BFs16s)
//============================================================================


struct  BFs16ll_BFs16i_BFs16s_BFu16i  {
  signed __tsi64 v1:16;
  signed int v2:16;
  signed short v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16ll_BFs16i_BFs16s_BFu16i) C1{ FL:16 Fi:16 Fs:16 Fi:16}



static void Test_BFs16ll_BFs16i_BFs16s_BFu16i()
{
  {
    init_simple_test("BFs16ll_BFs16i_BFs16s_BFu16i");
    static STRUCT_IF_C BFs16ll_BFs16i_BFs16s_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16i_BFs16s_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16i_BFs16s_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16i_BFs16s_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFs16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16i_BFs16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFs16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16i_BFs16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFs16s_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16i_BFs16s_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16i_BFs16s_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16i_BFs16s_BFu16i, BFs16ll_BFs16i_BFs16s_BFu16i)
//============================================================================


struct  BFs16ll_BFs16i_BFs16s_BFu16ll  {
  signed __tsi64 v1:16;
  signed int v2:16;
  signed short v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16ll_BFs16i_BFs16s_BFu16ll) C1{ FL:16 Fi:16 Fs:16 FL:16}



static void Test_BFs16ll_BFs16i_BFs16s_BFu16ll()
{
  {
    init_simple_test("BFs16ll_BFs16i_BFs16s_BFu16ll");
    static STRUCT_IF_C BFs16ll_BFs16i_BFs16s_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16i_BFs16s_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16i_BFs16s_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16i_BFs16s_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFs16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16i_BFs16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFs16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16i_BFs16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFs16s_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16i_BFs16s_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16i_BFs16s_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16i_BFs16s_BFu16ll, BFs16ll_BFs16i_BFs16s_BFu16ll)
//============================================================================


struct  BFs16ll_BFs16i_BFs16s_BFu16s  {
  signed __tsi64 v1:16;
  signed int v2:16;
  signed short v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16ll_BFs16i_BFs16s_BFu16s) C1{ FL:16 Fi:16 Fs:16 Fs:16}



static void Test_BFs16ll_BFs16i_BFs16s_BFu16s()
{
  {
    init_simple_test("BFs16ll_BFs16i_BFs16s_BFu16s");
    static STRUCT_IF_C BFs16ll_BFs16i_BFs16s_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16i_BFs16s_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16i_BFs16s_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16i_BFs16s_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFs16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16i_BFs16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFs16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16i_BFs16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFs16s_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16i_BFs16s_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16i_BFs16s_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16i_BFs16s_BFu16s, BFs16ll_BFs16i_BFs16s_BFu16s)
//============================================================================


struct  BFs16ll_BFs16i_BFu16i  {
  signed __tsi64 v1:16;
  signed int v2:16;
  unsigned int v3:16;
};
//SIG(1 BFs16ll_BFs16i_BFu16i) C1{ FL:16 Fi:16 Fi:16}



static void Test_BFs16ll_BFs16i_BFu16i()
{
  {
    init_simple_test("BFs16ll_BFs16i_BFu16i");
    static STRUCT_IF_C BFs16ll_BFs16i_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16i_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16i_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16i_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16i_BFu16i, BFs16ll_BFs16i_BFu16i)
//============================================================================


struct  BFs16ll_BFs16i_BFu16i_BFs16i  {
  signed __tsi64 v1:16;
  signed int v2:16;
  unsigned int v3:16;
  signed int v4:16;
};
//SIG(1 BFs16ll_BFs16i_BFu16i_BFs16i) C1{ FL:16 Fi:16 Fi:16 Fi:16}



static void Test_BFs16ll_BFs16i_BFu16i_BFs16i()
{
  {
    init_simple_test("BFs16ll_BFs16i_BFu16i_BFs16i");
    static STRUCT_IF_C BFs16ll_BFs16i_BFu16i_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16i_BFu16i_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16i_BFu16i_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16i_BFu16i_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFu16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16i_BFu16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFu16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16i_BFu16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16i_BFu16i_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16i_BFu16i_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFu16i_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16i_BFu16i_BFs16i, BFs16ll_BFs16i_BFu16i_BFs16i)
//============================================================================


struct  BFs16ll_BFs16i_BFu16i_BFs16ll  {
  signed __tsi64 v1:16;
  signed int v2:16;
  unsigned int v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16ll_BFs16i_BFu16i_BFs16ll) C1{ FL:16 Fi:16 Fi:16 FL:16}



static void Test_BFs16ll_BFs16i_BFu16i_BFs16ll()
{
  {
    init_simple_test("BFs16ll_BFs16i_BFu16i_BFs16ll");
    static STRUCT_IF_C BFs16ll_BFs16i_BFu16i_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16i_BFu16i_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16i_BFu16i_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16i_BFu16i_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFu16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16i_BFu16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFu16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16i_BFu16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16i_BFu16i_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16i_BFu16i_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFu16i_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16i_BFu16i_BFs16ll, BFs16ll_BFs16i_BFu16i_BFs16ll)
//============================================================================


struct  BFs16ll_BFs16i_BFu16i_BFs16s  {
  signed __tsi64 v1:16;
  signed int v2:16;
  unsigned int v3:16;
  signed short v4:16;
};
//SIG(1 BFs16ll_BFs16i_BFu16i_BFs16s) C1{ FL:16 Fi:16 Fi:16 Fs:16}



static void Test_BFs16ll_BFs16i_BFu16i_BFs16s()
{
  {
    init_simple_test("BFs16ll_BFs16i_BFu16i_BFs16s");
    static STRUCT_IF_C BFs16ll_BFs16i_BFu16i_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16i_BFu16i_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16i_BFu16i_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16i_BFu16i_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFu16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16i_BFu16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFu16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16i_BFu16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16i_BFu16i_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16i_BFu16i_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFu16i_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16i_BFu16i_BFs16s, BFs16ll_BFs16i_BFu16i_BFs16s)
//============================================================================


struct  BFs16ll_BFs16i_BFu16i_BFu16i  {
  signed __tsi64 v1:16;
  signed int v2:16;
  unsigned int v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16ll_BFs16i_BFu16i_BFu16i) C1{ FL:16 Fi:16 Fi:16 Fi:16}



static void Test_BFs16ll_BFs16i_BFu16i_BFu16i()
{
  {
    init_simple_test("BFs16ll_BFs16i_BFu16i_BFu16i");
    static STRUCT_IF_C BFs16ll_BFs16i_BFu16i_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16i_BFu16i_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16i_BFu16i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16i_BFu16i_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFu16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16i_BFu16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFu16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16i_BFu16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16i_BFu16i_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16i_BFu16i_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16i_BFu16i_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16i_BFu16i_BFu16i, BFs16ll_BFs16i_BFu16i_BFu16i)
//============================================================================


struct  BFs16ll_BFs16i_BFu16i_BFu16ll  {
  signed __tsi64 v1:16;
  signed int v2:16;
  unsigned int v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16ll_BFs16i_BFu16i_BFu16ll) C1{ FL:16 Fi:16 Fi:16 FL:16}



static void Test_BFs16ll_BFs16i_BFu16i_BFu16ll()
{
  {
    init_simple_test("BFs16ll_BFs16i_BFu16i_BFu16ll");
    static STRUCT_IF_C BFs16ll_BFs16i_BFu16i_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16i_BFu16i_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16i_BFu16i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16i_BFu16i_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFu16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16i_BFu16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFu16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16i_BFu16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16i_BFu16i_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16i_BFu16i_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16i_BFu16i_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16i_BFu16i_BFu16ll, BFs16ll_BFs16i_BFu16i_BFu16ll)
//============================================================================


struct  BFs16ll_BFs16i_BFu16i_BFu16s  {
  signed __tsi64 v1:16;
  signed int v2:16;
  unsigned int v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16ll_BFs16i_BFu16i_BFu16s) C1{ FL:16 Fi:16 Fi:16 Fs:16}



static void Test_BFs16ll_BFs16i_BFu16i_BFu16s()
{
  {
    init_simple_test("BFs16ll_BFs16i_BFu16i_BFu16s");
    static STRUCT_IF_C BFs16ll_BFs16i_BFu16i_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16i_BFu16i_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16i_BFu16i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16i_BFu16i_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFu16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16i_BFu16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFu16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16i_BFu16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16i_BFu16i_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16i_BFu16i_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16i_BFu16i_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16i_BFu16i_BFu16s, BFs16ll_BFs16i_BFu16i_BFu16s)
//============================================================================


struct  BFs16ll_BFs16i_BFu16ll  {
  signed __tsi64 v1:16;
  signed int v2:16;
  __tsu64 v3:16;
};
//SIG(1 BFs16ll_BFs16i_BFu16ll) C1{ FL:16 Fi:16 FL:16}



static void Test_BFs16ll_BFs16i_BFu16ll()
{
  {
    init_simple_test("BFs16ll_BFs16i_BFu16ll");
    static STRUCT_IF_C BFs16ll_BFs16i_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16i_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16i_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16i_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16i_BFu16ll, BFs16ll_BFs16i_BFu16ll)
//============================================================================


struct  BFs16ll_BFs16i_BFu16ll_BFs16i  {
  signed __tsi64 v1:16;
  signed int v2:16;
  __tsu64 v3:16;
  signed int v4:16;
};
//SIG(1 BFs16ll_BFs16i_BFu16ll_BFs16i) C1{ FL:16 Fi:16 FL:16 Fi:16}



static void Test_BFs16ll_BFs16i_BFu16ll_BFs16i()
{
  {
    init_simple_test("BFs16ll_BFs16i_BFu16ll_BFs16i");
    static STRUCT_IF_C BFs16ll_BFs16i_BFu16ll_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16i_BFu16ll_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16i_BFu16ll_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16i_BFu16ll_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFu16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16i_BFu16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFu16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16i_BFu16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16i_BFu16ll_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16i_BFu16ll_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFu16ll_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16i_BFu16ll_BFs16i, BFs16ll_BFs16i_BFu16ll_BFs16i)
//============================================================================


struct  BFs16ll_BFs16i_BFu16ll_BFs16ll  {
  signed __tsi64 v1:16;
  signed int v2:16;
  __tsu64 v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16ll_BFs16i_BFu16ll_BFs16ll) C1{ FL:16 Fi:16 FL:16 FL:16}



static void Test_BFs16ll_BFs16i_BFu16ll_BFs16ll()
{
  {
    init_simple_test("BFs16ll_BFs16i_BFu16ll_BFs16ll");
    static STRUCT_IF_C BFs16ll_BFs16i_BFu16ll_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16i_BFu16ll_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16i_BFu16ll_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16i_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16i_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16i_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16i_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16i_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFu16ll_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16i_BFu16ll_BFs16ll, BFs16ll_BFs16i_BFu16ll_BFs16ll)
//============================================================================


struct  BFs16ll_BFs16i_BFu16ll_BFs16s  {
  signed __tsi64 v1:16;
  signed int v2:16;
  __tsu64 v3:16;
  signed short v4:16;
};
//SIG(1 BFs16ll_BFs16i_BFu16ll_BFs16s) C1{ FL:16 Fi:16 FL:16 Fs:16}



static void Test_BFs16ll_BFs16i_BFu16ll_BFs16s()
{
  {
    init_simple_test("BFs16ll_BFs16i_BFu16ll_BFs16s");
    static STRUCT_IF_C BFs16ll_BFs16i_BFu16ll_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16i_BFu16ll_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16i_BFu16ll_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16i_BFu16ll_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFu16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16i_BFu16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFu16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16i_BFu16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16i_BFu16ll_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16i_BFu16ll_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFu16ll_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16i_BFu16ll_BFs16s, BFs16ll_BFs16i_BFu16ll_BFs16s)
//============================================================================


struct  BFs16ll_BFs16i_BFu16ll_BFu16i  {
  signed __tsi64 v1:16;
  signed int v2:16;
  __tsu64 v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16ll_BFs16i_BFu16ll_BFu16i) C1{ FL:16 Fi:16 FL:16 Fi:16}



static void Test_BFs16ll_BFs16i_BFu16ll_BFu16i()
{
  {
    init_simple_test("BFs16ll_BFs16i_BFu16ll_BFu16i");
    static STRUCT_IF_C BFs16ll_BFs16i_BFu16ll_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16i_BFu16ll_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16i_BFu16ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16i_BFu16ll_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFu16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16i_BFu16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFu16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16i_BFu16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16i_BFu16ll_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16i_BFu16ll_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16i_BFu16ll_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16i_BFu16ll_BFu16i, BFs16ll_BFs16i_BFu16ll_BFu16i)
//============================================================================


struct  BFs16ll_BFs16i_BFu16ll_BFu16ll  {
  signed __tsi64 v1:16;
  signed int v2:16;
  __tsu64 v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16ll_BFs16i_BFu16ll_BFu16ll) C1{ FL:16 Fi:16 FL:16 FL:16}



static void Test_BFs16ll_BFs16i_BFu16ll_BFu16ll()
{
  {
    init_simple_test("BFs16ll_BFs16i_BFu16ll_BFu16ll");
    static STRUCT_IF_C BFs16ll_BFs16i_BFu16ll_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16i_BFu16ll_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16i_BFu16ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16i_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16i_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16i_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16i_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16i_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16i_BFu16ll_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16i_BFu16ll_BFu16ll, BFs16ll_BFs16i_BFu16ll_BFu16ll)
//============================================================================


struct  BFs16ll_BFs16i_BFu16ll_BFu16s  {
  signed __tsi64 v1:16;
  signed int v2:16;
  __tsu64 v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16ll_BFs16i_BFu16ll_BFu16s) C1{ FL:16 Fi:16 FL:16 Fs:16}



static void Test_BFs16ll_BFs16i_BFu16ll_BFu16s()
{
  {
    init_simple_test("BFs16ll_BFs16i_BFu16ll_BFu16s");
    static STRUCT_IF_C BFs16ll_BFs16i_BFu16ll_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16i_BFu16ll_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16i_BFu16ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16i_BFu16ll_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFu16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16i_BFu16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFu16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16i_BFu16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16i_BFu16ll_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16i_BFu16ll_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16i_BFu16ll_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16i_BFu16ll_BFu16s, BFs16ll_BFs16i_BFu16ll_BFu16s)
//============================================================================


struct  BFs16ll_BFs16i_BFu16s  {
  signed __tsi64 v1:16;
  signed int v2:16;
  unsigned short v3:16;
};
//SIG(1 BFs16ll_BFs16i_BFu16s) C1{ FL:16 Fi:16 Fs:16}



static void Test_BFs16ll_BFs16i_BFu16s()
{
  {
    init_simple_test("BFs16ll_BFs16i_BFu16s");
    static STRUCT_IF_C BFs16ll_BFs16i_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16i_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16i_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16i_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16i_BFu16s, BFs16ll_BFs16i_BFu16s)
//============================================================================


struct  BFs16ll_BFs16i_BFu16s_BFs16i  {
  signed __tsi64 v1:16;
  signed int v2:16;
  unsigned short v3:16;
  signed int v4:16;
};
//SIG(1 BFs16ll_BFs16i_BFu16s_BFs16i) C1{ FL:16 Fi:16 Fs:16 Fi:16}



static void Test_BFs16ll_BFs16i_BFu16s_BFs16i()
{
  {
    init_simple_test("BFs16ll_BFs16i_BFu16s_BFs16i");
    static STRUCT_IF_C BFs16ll_BFs16i_BFu16s_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16i_BFu16s_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16i_BFu16s_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16i_BFu16s_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFu16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16i_BFu16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFu16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16i_BFu16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16i_BFu16s_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16i_BFu16s_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFu16s_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16i_BFu16s_BFs16i, BFs16ll_BFs16i_BFu16s_BFs16i)
//============================================================================


struct  BFs16ll_BFs16i_BFu16s_BFs16ll  {
  signed __tsi64 v1:16;
  signed int v2:16;
  unsigned short v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16ll_BFs16i_BFu16s_BFs16ll) C1{ FL:16 Fi:16 Fs:16 FL:16}



static void Test_BFs16ll_BFs16i_BFu16s_BFs16ll()
{
  {
    init_simple_test("BFs16ll_BFs16i_BFu16s_BFs16ll");
    static STRUCT_IF_C BFs16ll_BFs16i_BFu16s_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16i_BFu16s_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16i_BFu16s_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16i_BFu16s_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFu16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16i_BFu16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFu16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16i_BFu16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16i_BFu16s_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16i_BFu16s_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFu16s_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16i_BFu16s_BFs16ll, BFs16ll_BFs16i_BFu16s_BFs16ll)
//============================================================================


struct  BFs16ll_BFs16i_BFu16s_BFs16s  {
  signed __tsi64 v1:16;
  signed int v2:16;
  unsigned short v3:16;
  signed short v4:16;
};
//SIG(1 BFs16ll_BFs16i_BFu16s_BFs16s) C1{ FL:16 Fi:16 Fs:16 Fs:16}



static void Test_BFs16ll_BFs16i_BFu16s_BFs16s()
{
  {
    init_simple_test("BFs16ll_BFs16i_BFu16s_BFs16s");
    static STRUCT_IF_C BFs16ll_BFs16i_BFu16s_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16i_BFu16s_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16i_BFu16s_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16i_BFu16s_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFu16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16i_BFu16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFu16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16i_BFu16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16i_BFu16s_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16i_BFu16s_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFu16s_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16i_BFu16s_BFs16s, BFs16ll_BFs16i_BFu16s_BFs16s)
//============================================================================


struct  BFs16ll_BFs16i_BFu16s_BFu16i  {
  signed __tsi64 v1:16;
  signed int v2:16;
  unsigned short v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16ll_BFs16i_BFu16s_BFu16i) C1{ FL:16 Fi:16 Fs:16 Fi:16}



static void Test_BFs16ll_BFs16i_BFu16s_BFu16i()
{
  {
    init_simple_test("BFs16ll_BFs16i_BFu16s_BFu16i");
    static STRUCT_IF_C BFs16ll_BFs16i_BFu16s_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16i_BFu16s_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16i_BFu16s_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16i_BFu16s_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFu16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16i_BFu16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFu16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16i_BFu16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16i_BFu16s_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16i_BFu16s_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16i_BFu16s_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16i_BFu16s_BFu16i, BFs16ll_BFs16i_BFu16s_BFu16i)
//============================================================================


struct  BFs16ll_BFs16i_BFu16s_BFu16ll  {
  signed __tsi64 v1:16;
  signed int v2:16;
  unsigned short v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16ll_BFs16i_BFu16s_BFu16ll) C1{ FL:16 Fi:16 Fs:16 FL:16}



static void Test_BFs16ll_BFs16i_BFu16s_BFu16ll()
{
  {
    init_simple_test("BFs16ll_BFs16i_BFu16s_BFu16ll");
    static STRUCT_IF_C BFs16ll_BFs16i_BFu16s_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16i_BFu16s_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16i_BFu16s_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16i_BFu16s_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFu16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16i_BFu16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFu16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16i_BFu16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16i_BFu16s_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16i_BFu16s_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16i_BFu16s_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16i_BFu16s_BFu16ll, BFs16ll_BFs16i_BFu16s_BFu16ll)
//============================================================================


struct  BFs16ll_BFs16i_BFu16s_BFu16s  {
  signed __tsi64 v1:16;
  signed int v2:16;
  unsigned short v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16ll_BFs16i_BFu16s_BFu16s) C1{ FL:16 Fi:16 Fs:16 Fs:16}



static void Test_BFs16ll_BFs16i_BFu16s_BFu16s()
{
  {
    init_simple_test("BFs16ll_BFs16i_BFu16s_BFu16s");
    static STRUCT_IF_C BFs16ll_BFs16i_BFu16s_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16i_BFu16s_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16i_BFu16s_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16i_BFu16s_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFu16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16i_BFu16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16i_BFu16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16i_BFu16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16i_BFu16s_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16i_BFu16s_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16i_BFu16s_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16i_BFu16s_BFu16s, BFs16ll_BFs16i_BFu16s_BFu16s)
//============================================================================


struct  BFs16ll_BFs16ll  {
  signed __tsi64 v1:16;
  signed __tsi64 v2:16;
};
//SIG(1 BFs16ll_BFs16ll) C1{ FL:16 FL:16}



static void Test_BFs16ll_BFs16ll()
{
  {
    init_simple_test("BFs16ll_BFs16ll");
    static STRUCT_IF_C BFs16ll_BFs16ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs16ll_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16ll, BFs16ll_BFs16ll)
//============================================================================


struct  BFs16ll_BFs16ll_BFs16i  {
  signed __tsi64 v1:16;
  signed __tsi64 v2:16;
  signed int v3:16;
};
//SIG(1 BFs16ll_BFs16ll_BFs16i) C1{ FL:16 FL:16 Fi:16}



static void Test_BFs16ll_BFs16ll_BFs16i()
{
  {
    init_simple_test("BFs16ll_BFs16ll_BFs16i");
    static STRUCT_IF_C BFs16ll_BFs16ll_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16ll_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16ll_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16ll_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16ll_BFs16i, BFs16ll_BFs16ll_BFs16i)
//============================================================================


struct  BFs16ll_BFs16ll_BFs16i_BFs16i  {
  signed __tsi64 v1:16;
  signed __tsi64 v2:16;
  signed int v3:16;
  signed int v4:16;
};
//SIG(1 BFs16ll_BFs16ll_BFs16i_BFs16i) C1{ FL:16 FL:16 Fi:16 Fi:16}



static void Test_BFs16ll_BFs16ll_BFs16i_BFs16i()
{
  {
    init_simple_test("BFs16ll_BFs16ll_BFs16i_BFs16i");
    static STRUCT_IF_C BFs16ll_BFs16ll_BFs16i_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16ll_BFs16i_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16ll_BFs16i_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16ll_BFs16i_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFs16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16ll_BFs16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFs16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16ll_BFs16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFs16i_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16ll_BFs16i_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFs16i_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16ll_BFs16i_BFs16i, BFs16ll_BFs16ll_BFs16i_BFs16i)
//============================================================================


struct  BFs16ll_BFs16ll_BFs16i_BFs16ll  {
  signed __tsi64 v1:16;
  signed __tsi64 v2:16;
  signed int v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16ll_BFs16ll_BFs16i_BFs16ll) C1{ FL:16 FL:16 Fi:16 FL:16}



static void Test_BFs16ll_BFs16ll_BFs16i_BFs16ll()
{
  {
    init_simple_test("BFs16ll_BFs16ll_BFs16i_BFs16ll");
    static STRUCT_IF_C BFs16ll_BFs16ll_BFs16i_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16ll_BFs16i_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16ll_BFs16i_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16ll_BFs16i_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFs16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16ll_BFs16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFs16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16ll_BFs16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFs16i_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16ll_BFs16i_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFs16i_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16ll_BFs16i_BFs16ll, BFs16ll_BFs16ll_BFs16i_BFs16ll)
//============================================================================


struct  BFs16ll_BFs16ll_BFs16i_BFs16s  {
  signed __tsi64 v1:16;
  signed __tsi64 v2:16;
  signed int v3:16;
  signed short v4:16;
};
//SIG(1 BFs16ll_BFs16ll_BFs16i_BFs16s) C1{ FL:16 FL:16 Fi:16 Fs:16}



static void Test_BFs16ll_BFs16ll_BFs16i_BFs16s()
{
  {
    init_simple_test("BFs16ll_BFs16ll_BFs16i_BFs16s");
    static STRUCT_IF_C BFs16ll_BFs16ll_BFs16i_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16ll_BFs16i_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16ll_BFs16i_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16ll_BFs16i_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFs16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16ll_BFs16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFs16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16ll_BFs16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFs16i_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16ll_BFs16i_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFs16i_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16ll_BFs16i_BFs16s, BFs16ll_BFs16ll_BFs16i_BFs16s)
//============================================================================


struct  BFs16ll_BFs16ll_BFs16i_BFu16i  {
  signed __tsi64 v1:16;
  signed __tsi64 v2:16;
  signed int v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16ll_BFs16ll_BFs16i_BFu16i) C1{ FL:16 FL:16 Fi:16 Fi:16}



static void Test_BFs16ll_BFs16ll_BFs16i_BFu16i()
{
  {
    init_simple_test("BFs16ll_BFs16ll_BFs16i_BFu16i");
    static STRUCT_IF_C BFs16ll_BFs16ll_BFs16i_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16ll_BFs16i_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16ll_BFs16i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16ll_BFs16i_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFs16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16ll_BFs16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFs16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16ll_BFs16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFs16i_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16ll_BFs16i_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16ll_BFs16i_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16ll_BFs16i_BFu16i, BFs16ll_BFs16ll_BFs16i_BFu16i)
//============================================================================


struct  BFs16ll_BFs16ll_BFs16i_BFu16ll  {
  signed __tsi64 v1:16;
  signed __tsi64 v2:16;
  signed int v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16ll_BFs16ll_BFs16i_BFu16ll) C1{ FL:16 FL:16 Fi:16 FL:16}



static void Test_BFs16ll_BFs16ll_BFs16i_BFu16ll()
{
  {
    init_simple_test("BFs16ll_BFs16ll_BFs16i_BFu16ll");
    static STRUCT_IF_C BFs16ll_BFs16ll_BFs16i_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16ll_BFs16i_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16ll_BFs16i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16ll_BFs16i_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFs16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16ll_BFs16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFs16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16ll_BFs16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFs16i_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16ll_BFs16i_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16ll_BFs16i_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16ll_BFs16i_BFu16ll, BFs16ll_BFs16ll_BFs16i_BFu16ll)
//============================================================================


struct  BFs16ll_BFs16ll_BFs16i_BFu16s  {
  signed __tsi64 v1:16;
  signed __tsi64 v2:16;
  signed int v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16ll_BFs16ll_BFs16i_BFu16s) C1{ FL:16 FL:16 Fi:16 Fs:16}



static void Test_BFs16ll_BFs16ll_BFs16i_BFu16s()
{
  {
    init_simple_test("BFs16ll_BFs16ll_BFs16i_BFu16s");
    static STRUCT_IF_C BFs16ll_BFs16ll_BFs16i_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16ll_BFs16i_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16ll_BFs16i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16ll_BFs16i_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFs16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16ll_BFs16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFs16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16ll_BFs16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFs16i_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16ll_BFs16i_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16ll_BFs16i_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16ll_BFs16i_BFu16s, BFs16ll_BFs16ll_BFs16i_BFu16s)
//============================================================================


struct  BFs16ll_BFs16ll_BFs16ll  {
  signed __tsi64 v1:16;
  signed __tsi64 v2:16;
  signed __tsi64 v3:16;
};
//SIG(1 BFs16ll_BFs16ll_BFs16ll) C1{ FL:16 FL:16 FL:16}



static void Test_BFs16ll_BFs16ll_BFs16ll()
{
  {
    init_simple_test("BFs16ll_BFs16ll_BFs16ll");
    static STRUCT_IF_C BFs16ll_BFs16ll_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16ll_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16ll_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16ll_BFs16ll, BFs16ll_BFs16ll_BFs16ll)
//============================================================================


struct  BFs16ll_BFs16ll_BFs16ll_BFs16i  {
  signed __tsi64 v1:16;
  signed __tsi64 v2:16;
  signed __tsi64 v3:16;
  signed int v4:16;
};
//SIG(1 BFs16ll_BFs16ll_BFs16ll_BFs16i) C1{ FL:16 FL:16 FL:16 Fi:16}



static void Test_BFs16ll_BFs16ll_BFs16ll_BFs16i()
{
  {
    init_simple_test("BFs16ll_BFs16ll_BFs16ll_BFs16i");
    static STRUCT_IF_C BFs16ll_BFs16ll_BFs16ll_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16ll_BFs16ll_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16ll_BFs16ll_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16ll_BFs16ll_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFs16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16ll_BFs16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFs16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16ll_BFs16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFs16ll_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16ll_BFs16ll_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFs16ll_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16ll_BFs16ll_BFs16i, BFs16ll_BFs16ll_BFs16ll_BFs16i)
//============================================================================


struct  BFs16ll_BFs16ll_BFs16ll_BFs16ll  {
  signed __tsi64 v1:16;
  signed __tsi64 v2:16;
  signed __tsi64 v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16ll_BFs16ll_BFs16ll_BFs16ll) C1{ FL:16 FL:16 FL:16 FL:16}



static void Test_BFs16ll_BFs16ll_BFs16ll_BFs16ll()
{
  {
    init_simple_test("BFs16ll_BFs16ll_BFs16ll_BFs16ll");
    static STRUCT_IF_C BFs16ll_BFs16ll_BFs16ll_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16ll_BFs16ll_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16ll_BFs16ll_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16ll_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16ll_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16ll_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16ll_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFs16ll_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16ll_BFs16ll_BFs16ll, BFs16ll_BFs16ll_BFs16ll_BFs16ll)
//============================================================================


struct  BFs16ll_BFs16ll_BFs16ll_BFs16s  {
  signed __tsi64 v1:16;
  signed __tsi64 v2:16;
  signed __tsi64 v3:16;
  signed short v4:16;
};
//SIG(1 BFs16ll_BFs16ll_BFs16ll_BFs16s) C1{ FL:16 FL:16 FL:16 Fs:16}



static void Test_BFs16ll_BFs16ll_BFs16ll_BFs16s()
{
  {
    init_simple_test("BFs16ll_BFs16ll_BFs16ll_BFs16s");
    static STRUCT_IF_C BFs16ll_BFs16ll_BFs16ll_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16ll_BFs16ll_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16ll_BFs16ll_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16ll_BFs16ll_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFs16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16ll_BFs16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFs16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16ll_BFs16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFs16ll_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16ll_BFs16ll_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFs16ll_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16ll_BFs16ll_BFs16s, BFs16ll_BFs16ll_BFs16ll_BFs16s)
//============================================================================


struct  BFs16ll_BFs16ll_BFs16ll_BFu16i  {
  signed __tsi64 v1:16;
  signed __tsi64 v2:16;
  signed __tsi64 v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16ll_BFs16ll_BFs16ll_BFu16i) C1{ FL:16 FL:16 FL:16 Fi:16}



static void Test_BFs16ll_BFs16ll_BFs16ll_BFu16i()
{
  {
    init_simple_test("BFs16ll_BFs16ll_BFs16ll_BFu16i");
    static STRUCT_IF_C BFs16ll_BFs16ll_BFs16ll_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16ll_BFs16ll_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16ll_BFs16ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16ll_BFs16ll_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFs16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16ll_BFs16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFs16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16ll_BFs16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFs16ll_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16ll_BFs16ll_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16ll_BFs16ll_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16ll_BFs16ll_BFu16i, BFs16ll_BFs16ll_BFs16ll_BFu16i)
//============================================================================


struct  BFs16ll_BFs16ll_BFs16ll_BFu16ll  {
  signed __tsi64 v1:16;
  signed __tsi64 v2:16;
  signed __tsi64 v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16ll_BFs16ll_BFs16ll_BFu16ll) C1{ FL:16 FL:16 FL:16 FL:16}



static void Test_BFs16ll_BFs16ll_BFs16ll_BFu16ll()
{
  {
    init_simple_test("BFs16ll_BFs16ll_BFs16ll_BFu16ll");
    static STRUCT_IF_C BFs16ll_BFs16ll_BFs16ll_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16ll_BFs16ll_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16ll_BFs16ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16ll_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16ll_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16ll_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16ll_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16ll_BFs16ll_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16ll_BFs16ll_BFu16ll, BFs16ll_BFs16ll_BFs16ll_BFu16ll)
//============================================================================


struct  BFs16ll_BFs16ll_BFs16ll_BFu16s  {
  signed __tsi64 v1:16;
  signed __tsi64 v2:16;
  signed __tsi64 v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16ll_BFs16ll_BFs16ll_BFu16s) C1{ FL:16 FL:16 FL:16 Fs:16}



static void Test_BFs16ll_BFs16ll_BFs16ll_BFu16s()
{
  {
    init_simple_test("BFs16ll_BFs16ll_BFs16ll_BFu16s");
    static STRUCT_IF_C BFs16ll_BFs16ll_BFs16ll_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16ll_BFs16ll_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16ll_BFs16ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16ll_BFs16ll_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFs16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16ll_BFs16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFs16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16ll_BFs16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFs16ll_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16ll_BFs16ll_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16ll_BFs16ll_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16ll_BFs16ll_BFu16s, BFs16ll_BFs16ll_BFs16ll_BFu16s)
//============================================================================


struct  BFs16ll_BFs16ll_BFs16s  {
  signed __tsi64 v1:16;
  signed __tsi64 v2:16;
  signed short v3:16;
};
//SIG(1 BFs16ll_BFs16ll_BFs16s) C1{ FL:16 FL:16 Fs:16}



static void Test_BFs16ll_BFs16ll_BFs16s()
{
  {
    init_simple_test("BFs16ll_BFs16ll_BFs16s");
    static STRUCT_IF_C BFs16ll_BFs16ll_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16ll_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16ll_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16ll_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16ll_BFs16s, BFs16ll_BFs16ll_BFs16s)
//============================================================================


struct  BFs16ll_BFs16ll_BFs16s_BFs16i  {
  signed __tsi64 v1:16;
  signed __tsi64 v2:16;
  signed short v3:16;
  signed int v4:16;
};
//SIG(1 BFs16ll_BFs16ll_BFs16s_BFs16i) C1{ FL:16 FL:16 Fs:16 Fi:16}



static void Test_BFs16ll_BFs16ll_BFs16s_BFs16i()
{
  {
    init_simple_test("BFs16ll_BFs16ll_BFs16s_BFs16i");
    static STRUCT_IF_C BFs16ll_BFs16ll_BFs16s_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16ll_BFs16s_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16ll_BFs16s_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16ll_BFs16s_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFs16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16ll_BFs16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFs16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16ll_BFs16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFs16s_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16ll_BFs16s_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFs16s_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16ll_BFs16s_BFs16i, BFs16ll_BFs16ll_BFs16s_BFs16i)
//============================================================================


struct  BFs16ll_BFs16ll_BFs16s_BFs16ll  {
  signed __tsi64 v1:16;
  signed __tsi64 v2:16;
  signed short v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16ll_BFs16ll_BFs16s_BFs16ll) C1{ FL:16 FL:16 Fs:16 FL:16}



static void Test_BFs16ll_BFs16ll_BFs16s_BFs16ll()
{
  {
    init_simple_test("BFs16ll_BFs16ll_BFs16s_BFs16ll");
    static STRUCT_IF_C BFs16ll_BFs16ll_BFs16s_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16ll_BFs16s_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16ll_BFs16s_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16ll_BFs16s_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFs16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16ll_BFs16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFs16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16ll_BFs16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFs16s_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16ll_BFs16s_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFs16s_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16ll_BFs16s_BFs16ll, BFs16ll_BFs16ll_BFs16s_BFs16ll)
//============================================================================


struct  BFs16ll_BFs16ll_BFs16s_BFs16s  {
  signed __tsi64 v1:16;
  signed __tsi64 v2:16;
  signed short v3:16;
  signed short v4:16;
};
//SIG(1 BFs16ll_BFs16ll_BFs16s_BFs16s) C1{ FL:16 FL:16 Fs:16 Fs:16}



static void Test_BFs16ll_BFs16ll_BFs16s_BFs16s()
{
  {
    init_simple_test("BFs16ll_BFs16ll_BFs16s_BFs16s");
    static STRUCT_IF_C BFs16ll_BFs16ll_BFs16s_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16ll_BFs16s_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16ll_BFs16s_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16ll_BFs16s_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFs16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16ll_BFs16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFs16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16ll_BFs16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFs16s_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16ll_BFs16s_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFs16s_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16ll_BFs16s_BFs16s, BFs16ll_BFs16ll_BFs16s_BFs16s)
//============================================================================


struct  BFs16ll_BFs16ll_BFs16s_BFu16i  {
  signed __tsi64 v1:16;
  signed __tsi64 v2:16;
  signed short v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16ll_BFs16ll_BFs16s_BFu16i) C1{ FL:16 FL:16 Fs:16 Fi:16}



static void Test_BFs16ll_BFs16ll_BFs16s_BFu16i()
{
  {
    init_simple_test("BFs16ll_BFs16ll_BFs16s_BFu16i");
    static STRUCT_IF_C BFs16ll_BFs16ll_BFs16s_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16ll_BFs16s_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16ll_BFs16s_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16ll_BFs16s_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFs16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16ll_BFs16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFs16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16ll_BFs16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFs16s_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16ll_BFs16s_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16ll_BFs16s_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16ll_BFs16s_BFu16i, BFs16ll_BFs16ll_BFs16s_BFu16i)
//============================================================================


struct  BFs16ll_BFs16ll_BFs16s_BFu16ll  {
  signed __tsi64 v1:16;
  signed __tsi64 v2:16;
  signed short v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16ll_BFs16ll_BFs16s_BFu16ll) C1{ FL:16 FL:16 Fs:16 FL:16}



static void Test_BFs16ll_BFs16ll_BFs16s_BFu16ll()
{
  {
    init_simple_test("BFs16ll_BFs16ll_BFs16s_BFu16ll");
    static STRUCT_IF_C BFs16ll_BFs16ll_BFs16s_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16ll_BFs16s_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16ll_BFs16s_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16ll_BFs16s_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFs16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16ll_BFs16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFs16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16ll_BFs16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFs16s_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16ll_BFs16s_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16ll_BFs16s_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16ll_BFs16s_BFu16ll, BFs16ll_BFs16ll_BFs16s_BFu16ll)
//============================================================================


struct  BFs16ll_BFs16ll_BFs16s_BFu16s  {
  signed __tsi64 v1:16;
  signed __tsi64 v2:16;
  signed short v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16ll_BFs16ll_BFs16s_BFu16s) C1{ FL:16 FL:16 Fs:16 Fs:16}



static void Test_BFs16ll_BFs16ll_BFs16s_BFu16s()
{
  {
    init_simple_test("BFs16ll_BFs16ll_BFs16s_BFu16s");
    static STRUCT_IF_C BFs16ll_BFs16ll_BFs16s_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16ll_BFs16s_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16ll_BFs16s_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16ll_BFs16s_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFs16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16ll_BFs16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFs16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16ll_BFs16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFs16s_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16ll_BFs16s_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16ll_BFs16s_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16ll_BFs16s_BFu16s, BFs16ll_BFs16ll_BFs16s_BFu16s)
//============================================================================


struct  BFs16ll_BFs16ll_BFu16i  {
  signed __tsi64 v1:16;
  signed __tsi64 v2:16;
  unsigned int v3:16;
};
//SIG(1 BFs16ll_BFs16ll_BFu16i) C1{ FL:16 FL:16 Fi:16}



static void Test_BFs16ll_BFs16ll_BFu16i()
{
  {
    init_simple_test("BFs16ll_BFs16ll_BFu16i");
    static STRUCT_IF_C BFs16ll_BFs16ll_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16ll_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16ll_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16ll_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16ll_BFu16i, BFs16ll_BFs16ll_BFu16i)
//============================================================================


struct  BFs16ll_BFs16ll_BFu16i_BFs16i  {
  signed __tsi64 v1:16;
  signed __tsi64 v2:16;
  unsigned int v3:16;
  signed int v4:16;
};
//SIG(1 BFs16ll_BFs16ll_BFu16i_BFs16i) C1{ FL:16 FL:16 Fi:16 Fi:16}



static void Test_BFs16ll_BFs16ll_BFu16i_BFs16i()
{
  {
    init_simple_test("BFs16ll_BFs16ll_BFu16i_BFs16i");
    static STRUCT_IF_C BFs16ll_BFs16ll_BFu16i_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16ll_BFu16i_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16ll_BFu16i_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16ll_BFu16i_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFu16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16ll_BFu16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFu16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16ll_BFu16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16ll_BFu16i_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16ll_BFu16i_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFu16i_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16ll_BFu16i_BFs16i, BFs16ll_BFs16ll_BFu16i_BFs16i)
//============================================================================


struct  BFs16ll_BFs16ll_BFu16i_BFs16ll  {
  signed __tsi64 v1:16;
  signed __tsi64 v2:16;
  unsigned int v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16ll_BFs16ll_BFu16i_BFs16ll) C1{ FL:16 FL:16 Fi:16 FL:16}



static void Test_BFs16ll_BFs16ll_BFu16i_BFs16ll()
{
  {
    init_simple_test("BFs16ll_BFs16ll_BFu16i_BFs16ll");
    static STRUCT_IF_C BFs16ll_BFs16ll_BFu16i_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16ll_BFu16i_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16ll_BFu16i_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16ll_BFu16i_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFu16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16ll_BFu16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFu16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16ll_BFu16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16ll_BFu16i_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16ll_BFu16i_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFu16i_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16ll_BFu16i_BFs16ll, BFs16ll_BFs16ll_BFu16i_BFs16ll)
//============================================================================


struct  BFs16ll_BFs16ll_BFu16i_BFs16s  {
  signed __tsi64 v1:16;
  signed __tsi64 v2:16;
  unsigned int v3:16;
  signed short v4:16;
};
//SIG(1 BFs16ll_BFs16ll_BFu16i_BFs16s) C1{ FL:16 FL:16 Fi:16 Fs:16}



static void Test_BFs16ll_BFs16ll_BFu16i_BFs16s()
{
  {
    init_simple_test("BFs16ll_BFs16ll_BFu16i_BFs16s");
    static STRUCT_IF_C BFs16ll_BFs16ll_BFu16i_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16ll_BFu16i_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16ll_BFu16i_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16ll_BFu16i_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFu16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16ll_BFu16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFu16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16ll_BFu16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16ll_BFu16i_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16ll_BFu16i_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFu16i_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16ll_BFu16i_BFs16s, BFs16ll_BFs16ll_BFu16i_BFs16s)
//============================================================================


struct  BFs16ll_BFs16ll_BFu16i_BFu16i  {
  signed __tsi64 v1:16;
  signed __tsi64 v2:16;
  unsigned int v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16ll_BFs16ll_BFu16i_BFu16i) C1{ FL:16 FL:16 Fi:16 Fi:16}



static void Test_BFs16ll_BFs16ll_BFu16i_BFu16i()
{
  {
    init_simple_test("BFs16ll_BFs16ll_BFu16i_BFu16i");
    static STRUCT_IF_C BFs16ll_BFs16ll_BFu16i_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16ll_BFu16i_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16ll_BFu16i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16ll_BFu16i_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFu16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16ll_BFu16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFu16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16ll_BFu16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16ll_BFu16i_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16ll_BFu16i_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16ll_BFu16i_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16ll_BFu16i_BFu16i, BFs16ll_BFs16ll_BFu16i_BFu16i)
//============================================================================


struct  BFs16ll_BFs16ll_BFu16i_BFu16ll  {
  signed __tsi64 v1:16;
  signed __tsi64 v2:16;
  unsigned int v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16ll_BFs16ll_BFu16i_BFu16ll) C1{ FL:16 FL:16 Fi:16 FL:16}



static void Test_BFs16ll_BFs16ll_BFu16i_BFu16ll()
{
  {
    init_simple_test("BFs16ll_BFs16ll_BFu16i_BFu16ll");
    static STRUCT_IF_C BFs16ll_BFs16ll_BFu16i_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16ll_BFu16i_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16ll_BFu16i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16ll_BFu16i_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFu16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16ll_BFu16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFu16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16ll_BFu16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16ll_BFu16i_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16ll_BFu16i_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16ll_BFu16i_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16ll_BFu16i_BFu16ll, BFs16ll_BFs16ll_BFu16i_BFu16ll)
//============================================================================


struct  BFs16ll_BFs16ll_BFu16i_BFu16s  {
  signed __tsi64 v1:16;
  signed __tsi64 v2:16;
  unsigned int v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16ll_BFs16ll_BFu16i_BFu16s) C1{ FL:16 FL:16 Fi:16 Fs:16}



static void Test_BFs16ll_BFs16ll_BFu16i_BFu16s()
{
  {
    init_simple_test("BFs16ll_BFs16ll_BFu16i_BFu16s");
    static STRUCT_IF_C BFs16ll_BFs16ll_BFu16i_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16ll_BFu16i_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16ll_BFu16i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16ll_BFu16i_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFu16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16ll_BFu16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFu16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16ll_BFu16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16ll_BFu16i_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16ll_BFu16i_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16ll_BFu16i_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16ll_BFu16i_BFu16s, BFs16ll_BFs16ll_BFu16i_BFu16s)
//============================================================================


struct  BFs16ll_BFs16ll_BFu16ll  {
  signed __tsi64 v1:16;
  signed __tsi64 v2:16;
  __tsu64 v3:16;
};
//SIG(1 BFs16ll_BFs16ll_BFu16ll) C1{ FL:16 FL:16 FL:16}



static void Test_BFs16ll_BFs16ll_BFu16ll()
{
  {
    init_simple_test("BFs16ll_BFs16ll_BFu16ll");
    static STRUCT_IF_C BFs16ll_BFs16ll_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16ll_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16ll_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16ll_BFu16ll, BFs16ll_BFs16ll_BFu16ll)
//============================================================================


struct  BFs16ll_BFs16ll_BFu16ll_BFs16i  {
  signed __tsi64 v1:16;
  signed __tsi64 v2:16;
  __tsu64 v3:16;
  signed int v4:16;
};
//SIG(1 BFs16ll_BFs16ll_BFu16ll_BFs16i) C1{ FL:16 FL:16 FL:16 Fi:16}



static void Test_BFs16ll_BFs16ll_BFu16ll_BFs16i()
{
  {
    init_simple_test("BFs16ll_BFs16ll_BFu16ll_BFs16i");
    static STRUCT_IF_C BFs16ll_BFs16ll_BFu16ll_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16ll_BFu16ll_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16ll_BFu16ll_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16ll_BFu16ll_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFu16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16ll_BFu16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFu16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16ll_BFu16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16ll_BFu16ll_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16ll_BFu16ll_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFu16ll_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16ll_BFu16ll_BFs16i, BFs16ll_BFs16ll_BFu16ll_BFs16i)
//============================================================================


struct  BFs16ll_BFs16ll_BFu16ll_BFs16ll  {
  signed __tsi64 v1:16;
  signed __tsi64 v2:16;
  __tsu64 v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16ll_BFs16ll_BFu16ll_BFs16ll) C1{ FL:16 FL:16 FL:16 FL:16}



static void Test_BFs16ll_BFs16ll_BFu16ll_BFs16ll()
{
  {
    init_simple_test("BFs16ll_BFs16ll_BFu16ll_BFs16ll");
    static STRUCT_IF_C BFs16ll_BFs16ll_BFu16ll_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16ll_BFu16ll_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16ll_BFu16ll_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16ll_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16ll_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16ll_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16ll_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16ll_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFu16ll_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16ll_BFu16ll_BFs16ll, BFs16ll_BFs16ll_BFu16ll_BFs16ll)
//============================================================================


struct  BFs16ll_BFs16ll_BFu16ll_BFs16s  {
  signed __tsi64 v1:16;
  signed __tsi64 v2:16;
  __tsu64 v3:16;
  signed short v4:16;
};
//SIG(1 BFs16ll_BFs16ll_BFu16ll_BFs16s) C1{ FL:16 FL:16 FL:16 Fs:16}



static void Test_BFs16ll_BFs16ll_BFu16ll_BFs16s()
{
  {
    init_simple_test("BFs16ll_BFs16ll_BFu16ll_BFs16s");
    static STRUCT_IF_C BFs16ll_BFs16ll_BFu16ll_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16ll_BFu16ll_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16ll_BFu16ll_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16ll_BFu16ll_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFu16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16ll_BFu16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFu16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16ll_BFu16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16ll_BFu16ll_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16ll_BFu16ll_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFu16ll_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16ll_BFu16ll_BFs16s, BFs16ll_BFs16ll_BFu16ll_BFs16s)
//============================================================================


struct  BFs16ll_BFs16ll_BFu16ll_BFu16i  {
  signed __tsi64 v1:16;
  signed __tsi64 v2:16;
  __tsu64 v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16ll_BFs16ll_BFu16ll_BFu16i) C1{ FL:16 FL:16 FL:16 Fi:16}



static void Test_BFs16ll_BFs16ll_BFu16ll_BFu16i()
{
  {
    init_simple_test("BFs16ll_BFs16ll_BFu16ll_BFu16i");
    static STRUCT_IF_C BFs16ll_BFs16ll_BFu16ll_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16ll_BFu16ll_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16ll_BFu16ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16ll_BFu16ll_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFu16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16ll_BFu16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFu16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16ll_BFu16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16ll_BFu16ll_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16ll_BFu16ll_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16ll_BFu16ll_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16ll_BFu16ll_BFu16i, BFs16ll_BFs16ll_BFu16ll_BFu16i)
//============================================================================


struct  BFs16ll_BFs16ll_BFu16ll_BFu16ll  {
  signed __tsi64 v1:16;
  signed __tsi64 v2:16;
  __tsu64 v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16ll_BFs16ll_BFu16ll_BFu16ll) C1{ FL:16 FL:16 FL:16 FL:16}



static void Test_BFs16ll_BFs16ll_BFu16ll_BFu16ll()
{
  {
    init_simple_test("BFs16ll_BFs16ll_BFu16ll_BFu16ll");
    static STRUCT_IF_C BFs16ll_BFs16ll_BFu16ll_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16ll_BFu16ll_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16ll_BFu16ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16ll_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16ll_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16ll_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16ll_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16ll_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16ll_BFu16ll_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16ll_BFu16ll_BFu16ll, BFs16ll_BFs16ll_BFu16ll_BFu16ll)
//============================================================================


struct  BFs16ll_BFs16ll_BFu16ll_BFu16s  {
  signed __tsi64 v1:16;
  signed __tsi64 v2:16;
  __tsu64 v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16ll_BFs16ll_BFu16ll_BFu16s) C1{ FL:16 FL:16 FL:16 Fs:16}



static void Test_BFs16ll_BFs16ll_BFu16ll_BFu16s()
{
  {
    init_simple_test("BFs16ll_BFs16ll_BFu16ll_BFu16s");
    static STRUCT_IF_C BFs16ll_BFs16ll_BFu16ll_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16ll_BFu16ll_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16ll_BFu16ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16ll_BFu16ll_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFu16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16ll_BFu16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFu16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16ll_BFu16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16ll_BFu16ll_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16ll_BFu16ll_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16ll_BFu16ll_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16ll_BFu16ll_BFu16s, BFs16ll_BFs16ll_BFu16ll_BFu16s)
//============================================================================


struct  BFs16ll_BFs16ll_BFu16s  {
  signed __tsi64 v1:16;
  signed __tsi64 v2:16;
  unsigned short v3:16;
};
//SIG(1 BFs16ll_BFs16ll_BFu16s) C1{ FL:16 FL:16 Fs:16}



static void Test_BFs16ll_BFs16ll_BFu16s()
{
  {
    init_simple_test("BFs16ll_BFs16ll_BFu16s");
    static STRUCT_IF_C BFs16ll_BFs16ll_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16ll_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16ll_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16ll_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16ll_BFu16s, BFs16ll_BFs16ll_BFu16s)
//============================================================================


struct  BFs16ll_BFs16ll_BFu16s_BFs16i  {
  signed __tsi64 v1:16;
  signed __tsi64 v2:16;
  unsigned short v3:16;
  signed int v4:16;
};
//SIG(1 BFs16ll_BFs16ll_BFu16s_BFs16i) C1{ FL:16 FL:16 Fs:16 Fi:16}



static void Test_BFs16ll_BFs16ll_BFu16s_BFs16i()
{
  {
    init_simple_test("BFs16ll_BFs16ll_BFu16s_BFs16i");
    static STRUCT_IF_C BFs16ll_BFs16ll_BFu16s_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16ll_BFu16s_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16ll_BFu16s_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16ll_BFu16s_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFu16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16ll_BFu16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFu16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16ll_BFu16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16ll_BFu16s_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16ll_BFu16s_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFu16s_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16ll_BFu16s_BFs16i, BFs16ll_BFs16ll_BFu16s_BFs16i)
//============================================================================


struct  BFs16ll_BFs16ll_BFu16s_BFs16ll  {
  signed __tsi64 v1:16;
  signed __tsi64 v2:16;
  unsigned short v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16ll_BFs16ll_BFu16s_BFs16ll) C1{ FL:16 FL:16 Fs:16 FL:16}



static void Test_BFs16ll_BFs16ll_BFu16s_BFs16ll()
{
  {
    init_simple_test("BFs16ll_BFs16ll_BFu16s_BFs16ll");
    static STRUCT_IF_C BFs16ll_BFs16ll_BFu16s_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16ll_BFu16s_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16ll_BFu16s_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16ll_BFu16s_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFu16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16ll_BFu16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFu16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16ll_BFu16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16ll_BFu16s_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16ll_BFu16s_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFu16s_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16ll_BFu16s_BFs16ll, BFs16ll_BFs16ll_BFu16s_BFs16ll)
//============================================================================


struct  BFs16ll_BFs16ll_BFu16s_BFs16s  {
  signed __tsi64 v1:16;
  signed __tsi64 v2:16;
  unsigned short v3:16;
  signed short v4:16;
};
//SIG(1 BFs16ll_BFs16ll_BFu16s_BFs16s) C1{ FL:16 FL:16 Fs:16 Fs:16}



static void Test_BFs16ll_BFs16ll_BFu16s_BFs16s()
{
  {
    init_simple_test("BFs16ll_BFs16ll_BFu16s_BFs16s");
    static STRUCT_IF_C BFs16ll_BFs16ll_BFu16s_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16ll_BFu16s_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16ll_BFu16s_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16ll_BFu16s_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFu16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16ll_BFu16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFu16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16ll_BFu16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16ll_BFu16s_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16ll_BFu16s_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFu16s_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16ll_BFu16s_BFs16s, BFs16ll_BFs16ll_BFu16s_BFs16s)
//============================================================================


struct  BFs16ll_BFs16ll_BFu16s_BFu16i  {
  signed __tsi64 v1:16;
  signed __tsi64 v2:16;
  unsigned short v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16ll_BFs16ll_BFu16s_BFu16i) C1{ FL:16 FL:16 Fs:16 Fi:16}



static void Test_BFs16ll_BFs16ll_BFu16s_BFu16i()
{
  {
    init_simple_test("BFs16ll_BFs16ll_BFu16s_BFu16i");
    static STRUCT_IF_C BFs16ll_BFs16ll_BFu16s_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16ll_BFu16s_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16ll_BFu16s_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16ll_BFu16s_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFu16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16ll_BFu16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFu16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16ll_BFu16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16ll_BFu16s_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16ll_BFu16s_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16ll_BFu16s_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16ll_BFu16s_BFu16i, BFs16ll_BFs16ll_BFu16s_BFu16i)
//============================================================================


struct  BFs16ll_BFs16ll_BFu16s_BFu16ll  {
  signed __tsi64 v1:16;
  signed __tsi64 v2:16;
  unsigned short v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16ll_BFs16ll_BFu16s_BFu16ll) C1{ FL:16 FL:16 Fs:16 FL:16}



static void Test_BFs16ll_BFs16ll_BFu16s_BFu16ll()
{
  {
    init_simple_test("BFs16ll_BFs16ll_BFu16s_BFu16ll");
    static STRUCT_IF_C BFs16ll_BFs16ll_BFu16s_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16ll_BFu16s_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16ll_BFu16s_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16ll_BFu16s_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFu16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16ll_BFu16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFu16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16ll_BFu16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16ll_BFu16s_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16ll_BFu16s_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16ll_BFu16s_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16ll_BFu16s_BFu16ll, BFs16ll_BFs16ll_BFu16s_BFu16ll)
//============================================================================


struct  BFs16ll_BFs16ll_BFu16s_BFu16s  {
  signed __tsi64 v1:16;
  signed __tsi64 v2:16;
  unsigned short v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16ll_BFs16ll_BFu16s_BFu16s) C1{ FL:16 FL:16 Fs:16 Fs:16}



static void Test_BFs16ll_BFs16ll_BFu16s_BFu16s()
{
  {
    init_simple_test("BFs16ll_BFs16ll_BFu16s_BFu16s");
    static STRUCT_IF_C BFs16ll_BFs16ll_BFu16s_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16ll_BFu16s_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16ll_BFu16s_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16ll_BFu16s_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFu16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16ll_BFu16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16ll_BFu16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16ll_BFu16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16ll_BFu16s_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16ll_BFu16s_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16ll_BFu16s_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16ll_BFu16s_BFu16s, BFs16ll_BFs16ll_BFu16s_BFu16s)
//============================================================================


struct  BFs16ll_BFs16s  {
  signed __tsi64 v1:16;
  signed short v2:16;
};
//SIG(1 BFs16ll_BFs16s) C1{ FL:16 Fs:16}



static void Test_BFs16ll_BFs16s()
{
  {
    init_simple_test("BFs16ll_BFs16s");
    static STRUCT_IF_C BFs16ll_BFs16s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs16ll_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16s, BFs16ll_BFs16s)
//============================================================================


struct  BFs16ll_BFs16s_BFs16i  {
  signed __tsi64 v1:16;
  signed short v2:16;
  signed int v3:16;
};
//SIG(1 BFs16ll_BFs16s_BFs16i) C1{ FL:16 Fs:16 Fi:16}



static void Test_BFs16ll_BFs16s_BFs16i()
{
  {
    init_simple_test("BFs16ll_BFs16s_BFs16i");
    static STRUCT_IF_C BFs16ll_BFs16s_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16s_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16s_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16s_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16s_BFs16i, BFs16ll_BFs16s_BFs16i)
//============================================================================


struct  BFs16ll_BFs16s_BFs16i_BFs16i  {
  signed __tsi64 v1:16;
  signed short v2:16;
  signed int v3:16;
  signed int v4:16;
};
//SIG(1 BFs16ll_BFs16s_BFs16i_BFs16i) C1{ FL:16 Fs:16 Fi:16 Fi:16}



static void Test_BFs16ll_BFs16s_BFs16i_BFs16i()
{
  {
    init_simple_test("BFs16ll_BFs16s_BFs16i_BFs16i");
    static STRUCT_IF_C BFs16ll_BFs16s_BFs16i_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16s_BFs16i_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16s_BFs16i_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16s_BFs16i_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFs16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16s_BFs16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFs16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16s_BFs16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFs16i_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16s_BFs16i_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFs16i_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16s_BFs16i_BFs16i, BFs16ll_BFs16s_BFs16i_BFs16i)
//============================================================================


struct  BFs16ll_BFs16s_BFs16i_BFs16ll  {
  signed __tsi64 v1:16;
  signed short v2:16;
  signed int v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16ll_BFs16s_BFs16i_BFs16ll) C1{ FL:16 Fs:16 Fi:16 FL:16}



static void Test_BFs16ll_BFs16s_BFs16i_BFs16ll()
{
  {
    init_simple_test("BFs16ll_BFs16s_BFs16i_BFs16ll");
    static STRUCT_IF_C BFs16ll_BFs16s_BFs16i_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16s_BFs16i_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16s_BFs16i_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16s_BFs16i_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFs16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16s_BFs16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFs16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16s_BFs16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFs16i_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16s_BFs16i_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFs16i_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16s_BFs16i_BFs16ll, BFs16ll_BFs16s_BFs16i_BFs16ll)
//============================================================================


struct  BFs16ll_BFs16s_BFs16i_BFs16s  {
  signed __tsi64 v1:16;
  signed short v2:16;
  signed int v3:16;
  signed short v4:16;
};
//SIG(1 BFs16ll_BFs16s_BFs16i_BFs16s) C1{ FL:16 Fs:16 Fi:16 Fs:16}



static void Test_BFs16ll_BFs16s_BFs16i_BFs16s()
{
  {
    init_simple_test("BFs16ll_BFs16s_BFs16i_BFs16s");
    static STRUCT_IF_C BFs16ll_BFs16s_BFs16i_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16s_BFs16i_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16s_BFs16i_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16s_BFs16i_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFs16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16s_BFs16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFs16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16s_BFs16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFs16i_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16s_BFs16i_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFs16i_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16s_BFs16i_BFs16s, BFs16ll_BFs16s_BFs16i_BFs16s)
//============================================================================


struct  BFs16ll_BFs16s_BFs16i_BFu16i  {
  signed __tsi64 v1:16;
  signed short v2:16;
  signed int v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16ll_BFs16s_BFs16i_BFu16i) C1{ FL:16 Fs:16 Fi:16 Fi:16}



static void Test_BFs16ll_BFs16s_BFs16i_BFu16i()
{
  {
    init_simple_test("BFs16ll_BFs16s_BFs16i_BFu16i");
    static STRUCT_IF_C BFs16ll_BFs16s_BFs16i_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16s_BFs16i_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16s_BFs16i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16s_BFs16i_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFs16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16s_BFs16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFs16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16s_BFs16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFs16i_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16s_BFs16i_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16s_BFs16i_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16s_BFs16i_BFu16i, BFs16ll_BFs16s_BFs16i_BFu16i)
//============================================================================


struct  BFs16ll_BFs16s_BFs16i_BFu16ll  {
  signed __tsi64 v1:16;
  signed short v2:16;
  signed int v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16ll_BFs16s_BFs16i_BFu16ll) C1{ FL:16 Fs:16 Fi:16 FL:16}



static void Test_BFs16ll_BFs16s_BFs16i_BFu16ll()
{
  {
    init_simple_test("BFs16ll_BFs16s_BFs16i_BFu16ll");
    static STRUCT_IF_C BFs16ll_BFs16s_BFs16i_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16s_BFs16i_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16s_BFs16i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16s_BFs16i_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFs16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16s_BFs16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFs16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16s_BFs16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFs16i_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16s_BFs16i_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16s_BFs16i_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16s_BFs16i_BFu16ll, BFs16ll_BFs16s_BFs16i_BFu16ll)
//============================================================================


struct  BFs16ll_BFs16s_BFs16i_BFu16s  {
  signed __tsi64 v1:16;
  signed short v2:16;
  signed int v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16ll_BFs16s_BFs16i_BFu16s) C1{ FL:16 Fs:16 Fi:16 Fs:16}



static void Test_BFs16ll_BFs16s_BFs16i_BFu16s()
{
  {
    init_simple_test("BFs16ll_BFs16s_BFs16i_BFu16s");
    static STRUCT_IF_C BFs16ll_BFs16s_BFs16i_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16s_BFs16i_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16s_BFs16i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16s_BFs16i_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFs16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16s_BFs16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFs16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16s_BFs16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFs16i_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16s_BFs16i_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16s_BFs16i_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16s_BFs16i_BFu16s, BFs16ll_BFs16s_BFs16i_BFu16s)
//============================================================================


struct  BFs16ll_BFs16s_BFs16ll  {
  signed __tsi64 v1:16;
  signed short v2:16;
  signed __tsi64 v3:16;
};
//SIG(1 BFs16ll_BFs16s_BFs16ll) C1{ FL:16 Fs:16 FL:16}



static void Test_BFs16ll_BFs16s_BFs16ll()
{
  {
    init_simple_test("BFs16ll_BFs16s_BFs16ll");
    static STRUCT_IF_C BFs16ll_BFs16s_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16s_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16s_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16s_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16s_BFs16ll, BFs16ll_BFs16s_BFs16ll)
//============================================================================


struct  BFs16ll_BFs16s_BFs16ll_BFs16i  {
  signed __tsi64 v1:16;
  signed short v2:16;
  signed __tsi64 v3:16;
  signed int v4:16;
};
//SIG(1 BFs16ll_BFs16s_BFs16ll_BFs16i) C1{ FL:16 Fs:16 FL:16 Fi:16}



static void Test_BFs16ll_BFs16s_BFs16ll_BFs16i()
{
  {
    init_simple_test("BFs16ll_BFs16s_BFs16ll_BFs16i");
    static STRUCT_IF_C BFs16ll_BFs16s_BFs16ll_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16s_BFs16ll_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16s_BFs16ll_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16s_BFs16ll_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFs16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16s_BFs16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFs16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16s_BFs16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFs16ll_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16s_BFs16ll_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFs16ll_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16s_BFs16ll_BFs16i, BFs16ll_BFs16s_BFs16ll_BFs16i)
//============================================================================


struct  BFs16ll_BFs16s_BFs16ll_BFs16ll  {
  signed __tsi64 v1:16;
  signed short v2:16;
  signed __tsi64 v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16ll_BFs16s_BFs16ll_BFs16ll) C1{ FL:16 Fs:16 FL:16 FL:16}



static void Test_BFs16ll_BFs16s_BFs16ll_BFs16ll()
{
  {
    init_simple_test("BFs16ll_BFs16s_BFs16ll_BFs16ll");
    static STRUCT_IF_C BFs16ll_BFs16s_BFs16ll_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16s_BFs16ll_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16s_BFs16ll_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16s_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16s_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16s_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16s_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFs16ll_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16s_BFs16ll_BFs16ll, BFs16ll_BFs16s_BFs16ll_BFs16ll)
//============================================================================


struct  BFs16ll_BFs16s_BFs16ll_BFs16s  {
  signed __tsi64 v1:16;
  signed short v2:16;
  signed __tsi64 v3:16;
  signed short v4:16;
};
//SIG(1 BFs16ll_BFs16s_BFs16ll_BFs16s) C1{ FL:16 Fs:16 FL:16 Fs:16}



static void Test_BFs16ll_BFs16s_BFs16ll_BFs16s()
{
  {
    init_simple_test("BFs16ll_BFs16s_BFs16ll_BFs16s");
    static STRUCT_IF_C BFs16ll_BFs16s_BFs16ll_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16s_BFs16ll_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16s_BFs16ll_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16s_BFs16ll_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFs16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16s_BFs16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFs16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16s_BFs16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFs16ll_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16s_BFs16ll_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFs16ll_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16s_BFs16ll_BFs16s, BFs16ll_BFs16s_BFs16ll_BFs16s)
//============================================================================


struct  BFs16ll_BFs16s_BFs16ll_BFu16i  {
  signed __tsi64 v1:16;
  signed short v2:16;
  signed __tsi64 v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16ll_BFs16s_BFs16ll_BFu16i) C1{ FL:16 Fs:16 FL:16 Fi:16}



static void Test_BFs16ll_BFs16s_BFs16ll_BFu16i()
{
  {
    init_simple_test("BFs16ll_BFs16s_BFs16ll_BFu16i");
    static STRUCT_IF_C BFs16ll_BFs16s_BFs16ll_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16s_BFs16ll_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16s_BFs16ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16s_BFs16ll_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFs16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16s_BFs16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFs16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16s_BFs16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFs16ll_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16s_BFs16ll_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16s_BFs16ll_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16s_BFs16ll_BFu16i, BFs16ll_BFs16s_BFs16ll_BFu16i)
//============================================================================


struct  BFs16ll_BFs16s_BFs16ll_BFu16ll  {
  signed __tsi64 v1:16;
  signed short v2:16;
  signed __tsi64 v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16ll_BFs16s_BFs16ll_BFu16ll) C1{ FL:16 Fs:16 FL:16 FL:16}



static void Test_BFs16ll_BFs16s_BFs16ll_BFu16ll()
{
  {
    init_simple_test("BFs16ll_BFs16s_BFs16ll_BFu16ll");
    static STRUCT_IF_C BFs16ll_BFs16s_BFs16ll_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16s_BFs16ll_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16s_BFs16ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16s_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16s_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16s_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16s_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16s_BFs16ll_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16s_BFs16ll_BFu16ll, BFs16ll_BFs16s_BFs16ll_BFu16ll)
//============================================================================


struct  BFs16ll_BFs16s_BFs16ll_BFu16s  {
  signed __tsi64 v1:16;
  signed short v2:16;
  signed __tsi64 v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16ll_BFs16s_BFs16ll_BFu16s) C1{ FL:16 Fs:16 FL:16 Fs:16}



static void Test_BFs16ll_BFs16s_BFs16ll_BFu16s()
{
  {
    init_simple_test("BFs16ll_BFs16s_BFs16ll_BFu16s");
    static STRUCT_IF_C BFs16ll_BFs16s_BFs16ll_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16s_BFs16ll_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16s_BFs16ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16s_BFs16ll_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFs16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16s_BFs16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFs16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16s_BFs16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFs16ll_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16s_BFs16ll_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16s_BFs16ll_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16s_BFs16ll_BFu16s, BFs16ll_BFs16s_BFs16ll_BFu16s)
//============================================================================


struct  BFs16ll_BFs16s_BFs16s  {
  signed __tsi64 v1:16;
  signed short v2:16;
  signed short v3:16;
};
//SIG(1 BFs16ll_BFs16s_BFs16s) C1{ FL:16 Fs:16 Fs:16}



static void Test_BFs16ll_BFs16s_BFs16s()
{
  {
    init_simple_test("BFs16ll_BFs16s_BFs16s");
    static STRUCT_IF_C BFs16ll_BFs16s_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16s_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16s_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16s_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16s_BFs16s, BFs16ll_BFs16s_BFs16s)
//============================================================================


struct  BFs16ll_BFs16s_BFs16s_BFs16i  {
  signed __tsi64 v1:16;
  signed short v2:16;
  signed short v3:16;
  signed int v4:16;
};
//SIG(1 BFs16ll_BFs16s_BFs16s_BFs16i) C1{ FL:16 Fs:16 Fs:16 Fi:16}



static void Test_BFs16ll_BFs16s_BFs16s_BFs16i()
{
  {
    init_simple_test("BFs16ll_BFs16s_BFs16s_BFs16i");
    static STRUCT_IF_C BFs16ll_BFs16s_BFs16s_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16s_BFs16s_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16s_BFs16s_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16s_BFs16s_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFs16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16s_BFs16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFs16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16s_BFs16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFs16s_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16s_BFs16s_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFs16s_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16s_BFs16s_BFs16i, BFs16ll_BFs16s_BFs16s_BFs16i)
//============================================================================


struct  BFs16ll_BFs16s_BFs16s_BFs16ll  {
  signed __tsi64 v1:16;
  signed short v2:16;
  signed short v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16ll_BFs16s_BFs16s_BFs16ll) C1{ FL:16 Fs:16 Fs:16 FL:16}



static void Test_BFs16ll_BFs16s_BFs16s_BFs16ll()
{
  {
    init_simple_test("BFs16ll_BFs16s_BFs16s_BFs16ll");
    static STRUCT_IF_C BFs16ll_BFs16s_BFs16s_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16s_BFs16s_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16s_BFs16s_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16s_BFs16s_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFs16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16s_BFs16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFs16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16s_BFs16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFs16s_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16s_BFs16s_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFs16s_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16s_BFs16s_BFs16ll, BFs16ll_BFs16s_BFs16s_BFs16ll)
//============================================================================


struct  BFs16ll_BFs16s_BFs16s_BFs16s  {
  signed __tsi64 v1:16;
  signed short v2:16;
  signed short v3:16;
  signed short v4:16;
};
//SIG(1 BFs16ll_BFs16s_BFs16s_BFs16s) C1{ FL:16 Fs:16 Fs:16 Fs:16}



static void Test_BFs16ll_BFs16s_BFs16s_BFs16s()
{
  {
    init_simple_test("BFs16ll_BFs16s_BFs16s_BFs16s");
    static STRUCT_IF_C BFs16ll_BFs16s_BFs16s_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16s_BFs16s_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16s_BFs16s_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16s_BFs16s_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFs16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16s_BFs16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFs16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16s_BFs16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFs16s_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16s_BFs16s_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFs16s_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16s_BFs16s_BFs16s, BFs16ll_BFs16s_BFs16s_BFs16s)
//============================================================================


struct  BFs16ll_BFs16s_BFs16s_BFu16i  {
  signed __tsi64 v1:16;
  signed short v2:16;
  signed short v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16ll_BFs16s_BFs16s_BFu16i) C1{ FL:16 Fs:16 Fs:16 Fi:16}



static void Test_BFs16ll_BFs16s_BFs16s_BFu16i()
{
  {
    init_simple_test("BFs16ll_BFs16s_BFs16s_BFu16i");
    static STRUCT_IF_C BFs16ll_BFs16s_BFs16s_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16s_BFs16s_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16s_BFs16s_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16s_BFs16s_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFs16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16s_BFs16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFs16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16s_BFs16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFs16s_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16s_BFs16s_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16s_BFs16s_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16s_BFs16s_BFu16i, BFs16ll_BFs16s_BFs16s_BFu16i)
//============================================================================


struct  BFs16ll_BFs16s_BFs16s_BFu16ll  {
  signed __tsi64 v1:16;
  signed short v2:16;
  signed short v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16ll_BFs16s_BFs16s_BFu16ll) C1{ FL:16 Fs:16 Fs:16 FL:16}



static void Test_BFs16ll_BFs16s_BFs16s_BFu16ll()
{
  {
    init_simple_test("BFs16ll_BFs16s_BFs16s_BFu16ll");
    static STRUCT_IF_C BFs16ll_BFs16s_BFs16s_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16s_BFs16s_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16s_BFs16s_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16s_BFs16s_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFs16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16s_BFs16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFs16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16s_BFs16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFs16s_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16s_BFs16s_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16s_BFs16s_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16s_BFs16s_BFu16ll, BFs16ll_BFs16s_BFs16s_BFu16ll)
//============================================================================


struct  BFs16ll_BFs16s_BFs16s_BFu16s  {
  signed __tsi64 v1:16;
  signed short v2:16;
  signed short v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16ll_BFs16s_BFs16s_BFu16s) C1{ FL:16 Fs:16 Fs:16 Fs:16}



static void Test_BFs16ll_BFs16s_BFs16s_BFu16s()
{
  {
    init_simple_test("BFs16ll_BFs16s_BFs16s_BFu16s");
    static STRUCT_IF_C BFs16ll_BFs16s_BFs16s_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16s_BFs16s_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16s_BFs16s_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16s_BFs16s_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFs16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16s_BFs16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFs16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16s_BFs16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFs16s_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16s_BFs16s_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16s_BFs16s_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16s_BFs16s_BFu16s, BFs16ll_BFs16s_BFs16s_BFu16s)
//============================================================================


struct  BFs16ll_BFs16s_BFu16i  {
  signed __tsi64 v1:16;
  signed short v2:16;
  unsigned int v3:16;
};
//SIG(1 BFs16ll_BFs16s_BFu16i) C1{ FL:16 Fs:16 Fi:16}



static void Test_BFs16ll_BFs16s_BFu16i()
{
  {
    init_simple_test("BFs16ll_BFs16s_BFu16i");
    static STRUCT_IF_C BFs16ll_BFs16s_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16s_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16s_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16s_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16s_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16s_BFu16i, BFs16ll_BFs16s_BFu16i)
//============================================================================


struct  BFs16ll_BFs16s_BFu16i_BFs16i  {
  signed __tsi64 v1:16;
  signed short v2:16;
  unsigned int v3:16;
  signed int v4:16;
};
//SIG(1 BFs16ll_BFs16s_BFu16i_BFs16i) C1{ FL:16 Fs:16 Fi:16 Fi:16}



static void Test_BFs16ll_BFs16s_BFu16i_BFs16i()
{
  {
    init_simple_test("BFs16ll_BFs16s_BFu16i_BFs16i");
    static STRUCT_IF_C BFs16ll_BFs16s_BFu16i_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16s_BFu16i_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16s_BFu16i_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16s_BFu16i_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFu16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16s_BFu16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFu16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16s_BFu16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16s_BFu16i_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16s_BFu16i_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFu16i_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16s_BFu16i_BFs16i, BFs16ll_BFs16s_BFu16i_BFs16i)
//============================================================================


struct  BFs16ll_BFs16s_BFu16i_BFs16ll  {
  signed __tsi64 v1:16;
  signed short v2:16;
  unsigned int v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16ll_BFs16s_BFu16i_BFs16ll) C1{ FL:16 Fs:16 Fi:16 FL:16}



static void Test_BFs16ll_BFs16s_BFu16i_BFs16ll()
{
  {
    init_simple_test("BFs16ll_BFs16s_BFu16i_BFs16ll");
    static STRUCT_IF_C BFs16ll_BFs16s_BFu16i_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16s_BFu16i_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16s_BFu16i_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16s_BFu16i_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFu16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16s_BFu16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFu16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16s_BFu16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16s_BFu16i_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16s_BFu16i_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFu16i_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16s_BFu16i_BFs16ll, BFs16ll_BFs16s_BFu16i_BFs16ll)
//============================================================================


struct  BFs16ll_BFs16s_BFu16i_BFs16s  {
  signed __tsi64 v1:16;
  signed short v2:16;
  unsigned int v3:16;
  signed short v4:16;
};
//SIG(1 BFs16ll_BFs16s_BFu16i_BFs16s) C1{ FL:16 Fs:16 Fi:16 Fs:16}



static void Test_BFs16ll_BFs16s_BFu16i_BFs16s()
{
  {
    init_simple_test("BFs16ll_BFs16s_BFu16i_BFs16s");
    static STRUCT_IF_C BFs16ll_BFs16s_BFu16i_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16s_BFu16i_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16s_BFu16i_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16s_BFu16i_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFu16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16s_BFu16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFu16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16s_BFu16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16s_BFu16i_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16s_BFu16i_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFu16i_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16s_BFu16i_BFs16s, BFs16ll_BFs16s_BFu16i_BFs16s)
//============================================================================


struct  BFs16ll_BFs16s_BFu16i_BFu16i  {
  signed __tsi64 v1:16;
  signed short v2:16;
  unsigned int v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16ll_BFs16s_BFu16i_BFu16i) C1{ FL:16 Fs:16 Fi:16 Fi:16}



static void Test_BFs16ll_BFs16s_BFu16i_BFu16i()
{
  {
    init_simple_test("BFs16ll_BFs16s_BFu16i_BFu16i");
    static STRUCT_IF_C BFs16ll_BFs16s_BFu16i_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16s_BFu16i_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16s_BFu16i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16s_BFu16i_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFu16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16s_BFu16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFu16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16s_BFu16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16s_BFu16i_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16s_BFu16i_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16s_BFu16i_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16s_BFu16i_BFu16i, BFs16ll_BFs16s_BFu16i_BFu16i)
//============================================================================


struct  BFs16ll_BFs16s_BFu16i_BFu16ll  {
  signed __tsi64 v1:16;
  signed short v2:16;
  unsigned int v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16ll_BFs16s_BFu16i_BFu16ll) C1{ FL:16 Fs:16 Fi:16 FL:16}



static void Test_BFs16ll_BFs16s_BFu16i_BFu16ll()
{
  {
    init_simple_test("BFs16ll_BFs16s_BFu16i_BFu16ll");
    static STRUCT_IF_C BFs16ll_BFs16s_BFu16i_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16s_BFu16i_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16s_BFu16i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16s_BFu16i_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFu16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16s_BFu16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFu16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16s_BFu16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16s_BFu16i_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16s_BFu16i_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16s_BFu16i_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16s_BFu16i_BFu16ll, BFs16ll_BFs16s_BFu16i_BFu16ll)
//============================================================================


struct  BFs16ll_BFs16s_BFu16i_BFu16s  {
  signed __tsi64 v1:16;
  signed short v2:16;
  unsigned int v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16ll_BFs16s_BFu16i_BFu16s) C1{ FL:16 Fs:16 Fi:16 Fs:16}



static void Test_BFs16ll_BFs16s_BFu16i_BFu16s()
{
  {
    init_simple_test("BFs16ll_BFs16s_BFu16i_BFu16s");
    static STRUCT_IF_C BFs16ll_BFs16s_BFu16i_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16s_BFu16i_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16s_BFu16i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16s_BFu16i_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFu16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16s_BFu16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFu16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16s_BFu16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16s_BFu16i_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16s_BFu16i_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16s_BFu16i_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16s_BFu16i_BFu16s, BFs16ll_BFs16s_BFu16i_BFu16s)
//============================================================================


struct  BFs16ll_BFs16s_BFu16ll  {
  signed __tsi64 v1:16;
  signed short v2:16;
  __tsu64 v3:16;
};
//SIG(1 BFs16ll_BFs16s_BFu16ll) C1{ FL:16 Fs:16 FL:16}



static void Test_BFs16ll_BFs16s_BFu16ll()
{
  {
    init_simple_test("BFs16ll_BFs16s_BFu16ll");
    static STRUCT_IF_C BFs16ll_BFs16s_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16s_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16s_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16s_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16s_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16s_BFu16ll, BFs16ll_BFs16s_BFu16ll)
//============================================================================


struct  BFs16ll_BFs16s_BFu16ll_BFs16i  {
  signed __tsi64 v1:16;
  signed short v2:16;
  __tsu64 v3:16;
  signed int v4:16;
};
//SIG(1 BFs16ll_BFs16s_BFu16ll_BFs16i) C1{ FL:16 Fs:16 FL:16 Fi:16}



static void Test_BFs16ll_BFs16s_BFu16ll_BFs16i()
{
  {
    init_simple_test("BFs16ll_BFs16s_BFu16ll_BFs16i");
    static STRUCT_IF_C BFs16ll_BFs16s_BFu16ll_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16s_BFu16ll_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16s_BFu16ll_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16s_BFu16ll_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFu16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16s_BFu16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFu16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16s_BFu16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16s_BFu16ll_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16s_BFu16ll_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFu16ll_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16s_BFu16ll_BFs16i, BFs16ll_BFs16s_BFu16ll_BFs16i)
//============================================================================


struct  BFs16ll_BFs16s_BFu16ll_BFs16ll  {
  signed __tsi64 v1:16;
  signed short v2:16;
  __tsu64 v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16ll_BFs16s_BFu16ll_BFs16ll) C1{ FL:16 Fs:16 FL:16 FL:16}



static void Test_BFs16ll_BFs16s_BFu16ll_BFs16ll()
{
  {
    init_simple_test("BFs16ll_BFs16s_BFu16ll_BFs16ll");
    static STRUCT_IF_C BFs16ll_BFs16s_BFu16ll_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16s_BFu16ll_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16s_BFu16ll_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16s_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16s_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16s_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16s_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16s_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFu16ll_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16s_BFu16ll_BFs16ll, BFs16ll_BFs16s_BFu16ll_BFs16ll)
//============================================================================


struct  BFs16ll_BFs16s_BFu16ll_BFs16s  {
  signed __tsi64 v1:16;
  signed short v2:16;
  __tsu64 v3:16;
  signed short v4:16;
};
//SIG(1 BFs16ll_BFs16s_BFu16ll_BFs16s) C1{ FL:16 Fs:16 FL:16 Fs:16}



static void Test_BFs16ll_BFs16s_BFu16ll_BFs16s()
{
  {
    init_simple_test("BFs16ll_BFs16s_BFu16ll_BFs16s");
    static STRUCT_IF_C BFs16ll_BFs16s_BFu16ll_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16s_BFu16ll_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16s_BFu16ll_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16s_BFu16ll_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFu16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16s_BFu16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFu16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16s_BFu16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16s_BFu16ll_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16s_BFu16ll_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFu16ll_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16s_BFu16ll_BFs16s, BFs16ll_BFs16s_BFu16ll_BFs16s)
//============================================================================


struct  BFs16ll_BFs16s_BFu16ll_BFu16i  {
  signed __tsi64 v1:16;
  signed short v2:16;
  __tsu64 v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16ll_BFs16s_BFu16ll_BFu16i) C1{ FL:16 Fs:16 FL:16 Fi:16}



static void Test_BFs16ll_BFs16s_BFu16ll_BFu16i()
{
  {
    init_simple_test("BFs16ll_BFs16s_BFu16ll_BFu16i");
    static STRUCT_IF_C BFs16ll_BFs16s_BFu16ll_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16s_BFu16ll_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16s_BFu16ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16s_BFu16ll_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFu16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16s_BFu16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFu16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16s_BFu16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16s_BFu16ll_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16s_BFu16ll_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16s_BFu16ll_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16s_BFu16ll_BFu16i, BFs16ll_BFs16s_BFu16ll_BFu16i)
//============================================================================


struct  BFs16ll_BFs16s_BFu16ll_BFu16ll  {
  signed __tsi64 v1:16;
  signed short v2:16;
  __tsu64 v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16ll_BFs16s_BFu16ll_BFu16ll) C1{ FL:16 Fs:16 FL:16 FL:16}



static void Test_BFs16ll_BFs16s_BFu16ll_BFu16ll()
{
  {
    init_simple_test("BFs16ll_BFs16s_BFu16ll_BFu16ll");
    static STRUCT_IF_C BFs16ll_BFs16s_BFu16ll_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16s_BFu16ll_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16s_BFu16ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16s_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16s_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16s_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16s_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16s_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16s_BFu16ll_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16s_BFu16ll_BFu16ll, BFs16ll_BFs16s_BFu16ll_BFu16ll)
//============================================================================


struct  BFs16ll_BFs16s_BFu16ll_BFu16s  {
  signed __tsi64 v1:16;
  signed short v2:16;
  __tsu64 v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16ll_BFs16s_BFu16ll_BFu16s) C1{ FL:16 Fs:16 FL:16 Fs:16}



static void Test_BFs16ll_BFs16s_BFu16ll_BFu16s()
{
  {
    init_simple_test("BFs16ll_BFs16s_BFu16ll_BFu16s");
    static STRUCT_IF_C BFs16ll_BFs16s_BFu16ll_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16s_BFu16ll_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16s_BFu16ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16s_BFu16ll_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFu16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16s_BFu16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFu16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16s_BFu16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16s_BFu16ll_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16s_BFu16ll_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16s_BFu16ll_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16s_BFu16ll_BFu16s, BFs16ll_BFs16s_BFu16ll_BFu16s)
//============================================================================


struct  BFs16ll_BFs16s_BFu16s  {
  signed __tsi64 v1:16;
  signed short v2:16;
  unsigned short v3:16;
};
//SIG(1 BFs16ll_BFs16s_BFu16s) C1{ FL:16 Fs:16 Fs:16}



static void Test_BFs16ll_BFs16s_BFu16s()
{
  {
    init_simple_test("BFs16ll_BFs16s_BFu16s");
    static STRUCT_IF_C BFs16ll_BFs16s_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16s_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16s_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16s_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16s_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16s_BFu16s, BFs16ll_BFs16s_BFu16s)
//============================================================================


struct  BFs16ll_BFs16s_BFu16s_BFs16i  {
  signed __tsi64 v1:16;
  signed short v2:16;
  unsigned short v3:16;
  signed int v4:16;
};
//SIG(1 BFs16ll_BFs16s_BFu16s_BFs16i) C1{ FL:16 Fs:16 Fs:16 Fi:16}



static void Test_BFs16ll_BFs16s_BFu16s_BFs16i()
{
  {
    init_simple_test("BFs16ll_BFs16s_BFu16s_BFs16i");
    static STRUCT_IF_C BFs16ll_BFs16s_BFu16s_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16s_BFu16s_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16s_BFu16s_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16s_BFu16s_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFu16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16s_BFu16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFu16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16s_BFu16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16s_BFu16s_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16s_BFu16s_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFu16s_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16s_BFu16s_BFs16i, BFs16ll_BFs16s_BFu16s_BFs16i)
//============================================================================


struct  BFs16ll_BFs16s_BFu16s_BFs16ll  {
  signed __tsi64 v1:16;
  signed short v2:16;
  unsigned short v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16ll_BFs16s_BFu16s_BFs16ll) C1{ FL:16 Fs:16 Fs:16 FL:16}



static void Test_BFs16ll_BFs16s_BFu16s_BFs16ll()
{
  {
    init_simple_test("BFs16ll_BFs16s_BFu16s_BFs16ll");
    static STRUCT_IF_C BFs16ll_BFs16s_BFu16s_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16s_BFu16s_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16s_BFu16s_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16s_BFu16s_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFu16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16s_BFu16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFu16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16s_BFu16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16s_BFu16s_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16s_BFu16s_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFu16s_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16s_BFu16s_BFs16ll, BFs16ll_BFs16s_BFu16s_BFs16ll)
//============================================================================


struct  BFs16ll_BFs16s_BFu16s_BFs16s  {
  signed __tsi64 v1:16;
  signed short v2:16;
  unsigned short v3:16;
  signed short v4:16;
};
//SIG(1 BFs16ll_BFs16s_BFu16s_BFs16s) C1{ FL:16 Fs:16 Fs:16 Fs:16}



static void Test_BFs16ll_BFs16s_BFu16s_BFs16s()
{
  {
    init_simple_test("BFs16ll_BFs16s_BFu16s_BFs16s");
    static STRUCT_IF_C BFs16ll_BFs16s_BFu16s_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16s_BFu16s_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16s_BFu16s_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16s_BFu16s_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFu16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16s_BFu16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFu16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16s_BFu16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16s_BFu16s_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16s_BFu16s_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFu16s_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16s_BFu16s_BFs16s, BFs16ll_BFs16s_BFu16s_BFs16s)
//============================================================================


struct  BFs16ll_BFs16s_BFu16s_BFu16i  {
  signed __tsi64 v1:16;
  signed short v2:16;
  unsigned short v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16ll_BFs16s_BFu16s_BFu16i) C1{ FL:16 Fs:16 Fs:16 Fi:16}



static void Test_BFs16ll_BFs16s_BFu16s_BFu16i()
{
  {
    init_simple_test("BFs16ll_BFs16s_BFu16s_BFu16i");
    static STRUCT_IF_C BFs16ll_BFs16s_BFu16s_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16s_BFu16s_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16s_BFu16s_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16s_BFu16s_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFu16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16s_BFu16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFu16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16s_BFu16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16s_BFu16s_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16s_BFu16s_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16s_BFu16s_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16s_BFu16s_BFu16i, BFs16ll_BFs16s_BFu16s_BFu16i)
//============================================================================


struct  BFs16ll_BFs16s_BFu16s_BFu16ll  {
  signed __tsi64 v1:16;
  signed short v2:16;
  unsigned short v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16ll_BFs16s_BFu16s_BFu16ll) C1{ FL:16 Fs:16 Fs:16 FL:16}



static void Test_BFs16ll_BFs16s_BFu16s_BFu16ll()
{
  {
    init_simple_test("BFs16ll_BFs16s_BFu16s_BFu16ll");
    static STRUCT_IF_C BFs16ll_BFs16s_BFu16s_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16s_BFu16s_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16s_BFu16s_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16s_BFu16s_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFu16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16s_BFu16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFu16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16s_BFu16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16s_BFu16s_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16s_BFu16s_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16s_BFu16s_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16s_BFu16s_BFu16ll, BFs16ll_BFs16s_BFu16s_BFu16ll)
//============================================================================


struct  BFs16ll_BFs16s_BFu16s_BFu16s  {
  signed __tsi64 v1:16;
  signed short v2:16;
  unsigned short v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16ll_BFs16s_BFu16s_BFu16s) C1{ FL:16 Fs:16 Fs:16 Fs:16}



static void Test_BFs16ll_BFs16s_BFu16s_BFu16s()
{
  {
    init_simple_test("BFs16ll_BFs16s_BFu16s_BFu16s");
    static STRUCT_IF_C BFs16ll_BFs16s_BFu16s_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFs16s_BFu16s_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFs16s_BFu16s_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFs16s_BFu16s_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFu16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFs16s_BFu16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFs16s_BFu16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFs16s_BFu16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16s_BFu16s_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFs16s_BFu16s_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFs16s_BFu16s_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFs16s_BFu16s_BFu16s, BFs16ll_BFs16s_BFu16s_BFu16s)
//============================================================================


struct  BFs16ll_BFu16i  {
  signed __tsi64 v1:16;
  unsigned int v2:16;
};
//SIG(1 BFs16ll_BFu16i) C1{ FL:16 Fi:16}



static void Test_BFs16ll_BFu16i()
{
  {
    init_simple_test("BFs16ll_BFu16i");
    static STRUCT_IF_C BFs16ll_BFu16i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs16ll_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16i, BFs16ll_BFu16i)
//============================================================================


struct  BFs16ll_BFu16i_BFs16i  {
  signed __tsi64 v1:16;
  unsigned int v2:16;
  signed int v3:16;
};
//SIG(1 BFs16ll_BFu16i_BFs16i) C1{ FL:16 Fi:16 Fi:16}



static void Test_BFs16ll_BFu16i_BFs16i()
{
  {
    init_simple_test("BFs16ll_BFu16i_BFs16i");
    static STRUCT_IF_C BFs16ll_BFu16i_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16i_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16i_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16i_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16i_BFs16i, BFs16ll_BFu16i_BFs16i)
//============================================================================


struct  BFs16ll_BFu16i_BFs16i_BFs16i  {
  signed __tsi64 v1:16;
  unsigned int v2:16;
  signed int v3:16;
  signed int v4:16;
};
//SIG(1 BFs16ll_BFu16i_BFs16i_BFs16i) C1{ FL:16 Fi:16 Fi:16 Fi:16}



static void Test_BFs16ll_BFu16i_BFs16i_BFs16i()
{
  {
    init_simple_test("BFs16ll_BFu16i_BFs16i_BFs16i");
    static STRUCT_IF_C BFs16ll_BFu16i_BFs16i_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16i_BFs16i_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16i_BFs16i_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16i_BFs16i_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFs16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16i_BFs16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFs16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16i_BFs16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFs16i_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16i_BFs16i_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFs16i_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16i_BFs16i_BFs16i, BFs16ll_BFu16i_BFs16i_BFs16i)
//============================================================================


struct  BFs16ll_BFu16i_BFs16i_BFs16ll  {
  signed __tsi64 v1:16;
  unsigned int v2:16;
  signed int v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16ll_BFu16i_BFs16i_BFs16ll) C1{ FL:16 Fi:16 Fi:16 FL:16}



static void Test_BFs16ll_BFu16i_BFs16i_BFs16ll()
{
  {
    init_simple_test("BFs16ll_BFu16i_BFs16i_BFs16ll");
    static STRUCT_IF_C BFs16ll_BFu16i_BFs16i_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16i_BFs16i_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16i_BFs16i_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16i_BFs16i_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFs16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16i_BFs16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFs16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16i_BFs16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFs16i_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16i_BFs16i_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFs16i_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16i_BFs16i_BFs16ll, BFs16ll_BFu16i_BFs16i_BFs16ll)
//============================================================================


struct  BFs16ll_BFu16i_BFs16i_BFs16s  {
  signed __tsi64 v1:16;
  unsigned int v2:16;
  signed int v3:16;
  signed short v4:16;
};
//SIG(1 BFs16ll_BFu16i_BFs16i_BFs16s) C1{ FL:16 Fi:16 Fi:16 Fs:16}



static void Test_BFs16ll_BFu16i_BFs16i_BFs16s()
{
  {
    init_simple_test("BFs16ll_BFu16i_BFs16i_BFs16s");
    static STRUCT_IF_C BFs16ll_BFu16i_BFs16i_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16i_BFs16i_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16i_BFs16i_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16i_BFs16i_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFs16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16i_BFs16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFs16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16i_BFs16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFs16i_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16i_BFs16i_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFs16i_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16i_BFs16i_BFs16s, BFs16ll_BFu16i_BFs16i_BFs16s)
//============================================================================


struct  BFs16ll_BFu16i_BFs16i_BFu16i  {
  signed __tsi64 v1:16;
  unsigned int v2:16;
  signed int v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16ll_BFu16i_BFs16i_BFu16i) C1{ FL:16 Fi:16 Fi:16 Fi:16}



static void Test_BFs16ll_BFu16i_BFs16i_BFu16i()
{
  {
    init_simple_test("BFs16ll_BFu16i_BFs16i_BFu16i");
    static STRUCT_IF_C BFs16ll_BFu16i_BFs16i_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16i_BFs16i_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16i_BFs16i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16i_BFs16i_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFs16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16i_BFs16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFs16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16i_BFs16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFs16i_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16i_BFs16i_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFs16i_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16i_BFs16i_BFu16i, BFs16ll_BFu16i_BFs16i_BFu16i)
//============================================================================


struct  BFs16ll_BFu16i_BFs16i_BFu16ll  {
  signed __tsi64 v1:16;
  unsigned int v2:16;
  signed int v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16ll_BFu16i_BFs16i_BFu16ll) C1{ FL:16 Fi:16 Fi:16 FL:16}



static void Test_BFs16ll_BFu16i_BFs16i_BFu16ll()
{
  {
    init_simple_test("BFs16ll_BFu16i_BFs16i_BFu16ll");
    static STRUCT_IF_C BFs16ll_BFu16i_BFs16i_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16i_BFs16i_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16i_BFs16i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16i_BFs16i_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFs16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16i_BFs16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFs16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16i_BFs16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFs16i_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16i_BFs16i_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFs16i_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16i_BFs16i_BFu16ll, BFs16ll_BFu16i_BFs16i_BFu16ll)
//============================================================================


struct  BFs16ll_BFu16i_BFs16i_BFu16s  {
  signed __tsi64 v1:16;
  unsigned int v2:16;
  signed int v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16ll_BFu16i_BFs16i_BFu16s) C1{ FL:16 Fi:16 Fi:16 Fs:16}



static void Test_BFs16ll_BFu16i_BFs16i_BFu16s()
{
  {
    init_simple_test("BFs16ll_BFu16i_BFs16i_BFu16s");
    static STRUCT_IF_C BFs16ll_BFu16i_BFs16i_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16i_BFs16i_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16i_BFs16i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16i_BFs16i_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFs16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16i_BFs16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFs16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16i_BFs16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFs16i_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16i_BFs16i_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFs16i_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16i_BFs16i_BFu16s, BFs16ll_BFu16i_BFs16i_BFu16s)
//============================================================================


struct  BFs16ll_BFu16i_BFs16ll  {
  signed __tsi64 v1:16;
  unsigned int v2:16;
  signed __tsi64 v3:16;
};
//SIG(1 BFs16ll_BFu16i_BFs16ll) C1{ FL:16 Fi:16 FL:16}



static void Test_BFs16ll_BFu16i_BFs16ll()
{
  {
    init_simple_test("BFs16ll_BFu16i_BFs16ll");
    static STRUCT_IF_C BFs16ll_BFu16i_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16i_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16i_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16i_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16i_BFs16ll, BFs16ll_BFu16i_BFs16ll)
//============================================================================


struct  BFs16ll_BFu16i_BFs16ll_BFs16i  {
  signed __tsi64 v1:16;
  unsigned int v2:16;
  signed __tsi64 v3:16;
  signed int v4:16;
};
//SIG(1 BFs16ll_BFu16i_BFs16ll_BFs16i) C1{ FL:16 Fi:16 FL:16 Fi:16}



static void Test_BFs16ll_BFu16i_BFs16ll_BFs16i()
{
  {
    init_simple_test("BFs16ll_BFu16i_BFs16ll_BFs16i");
    static STRUCT_IF_C BFs16ll_BFu16i_BFs16ll_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16i_BFs16ll_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16i_BFs16ll_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16i_BFs16ll_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFs16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16i_BFs16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFs16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16i_BFs16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFs16ll_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16i_BFs16ll_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFs16ll_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16i_BFs16ll_BFs16i, BFs16ll_BFu16i_BFs16ll_BFs16i)
//============================================================================


struct  BFs16ll_BFu16i_BFs16ll_BFs16ll  {
  signed __tsi64 v1:16;
  unsigned int v2:16;
  signed __tsi64 v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16ll_BFu16i_BFs16ll_BFs16ll) C1{ FL:16 Fi:16 FL:16 FL:16}



static void Test_BFs16ll_BFu16i_BFs16ll_BFs16ll()
{
  {
    init_simple_test("BFs16ll_BFu16i_BFs16ll_BFs16ll");
    static STRUCT_IF_C BFs16ll_BFu16i_BFs16ll_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16i_BFs16ll_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16i_BFs16ll_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16i_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16i_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16i_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16i_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFs16ll_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16i_BFs16ll_BFs16ll, BFs16ll_BFu16i_BFs16ll_BFs16ll)
//============================================================================


struct  BFs16ll_BFu16i_BFs16ll_BFs16s  {
  signed __tsi64 v1:16;
  unsigned int v2:16;
  signed __tsi64 v3:16;
  signed short v4:16;
};
//SIG(1 BFs16ll_BFu16i_BFs16ll_BFs16s) C1{ FL:16 Fi:16 FL:16 Fs:16}



static void Test_BFs16ll_BFu16i_BFs16ll_BFs16s()
{
  {
    init_simple_test("BFs16ll_BFu16i_BFs16ll_BFs16s");
    static STRUCT_IF_C BFs16ll_BFu16i_BFs16ll_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16i_BFs16ll_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16i_BFs16ll_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16i_BFs16ll_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFs16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16i_BFs16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFs16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16i_BFs16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFs16ll_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16i_BFs16ll_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFs16ll_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16i_BFs16ll_BFs16s, BFs16ll_BFu16i_BFs16ll_BFs16s)
//============================================================================


struct  BFs16ll_BFu16i_BFs16ll_BFu16i  {
  signed __tsi64 v1:16;
  unsigned int v2:16;
  signed __tsi64 v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16ll_BFu16i_BFs16ll_BFu16i) C1{ FL:16 Fi:16 FL:16 Fi:16}



static void Test_BFs16ll_BFu16i_BFs16ll_BFu16i()
{
  {
    init_simple_test("BFs16ll_BFu16i_BFs16ll_BFu16i");
    static STRUCT_IF_C BFs16ll_BFu16i_BFs16ll_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16i_BFs16ll_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16i_BFs16ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16i_BFs16ll_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFs16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16i_BFs16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFs16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16i_BFs16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFs16ll_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16i_BFs16ll_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFs16ll_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16i_BFs16ll_BFu16i, BFs16ll_BFu16i_BFs16ll_BFu16i)
//============================================================================


struct  BFs16ll_BFu16i_BFs16ll_BFu16ll  {
  signed __tsi64 v1:16;
  unsigned int v2:16;
  signed __tsi64 v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16ll_BFu16i_BFs16ll_BFu16ll) C1{ FL:16 Fi:16 FL:16 FL:16}



static void Test_BFs16ll_BFu16i_BFs16ll_BFu16ll()
{
  {
    init_simple_test("BFs16ll_BFu16i_BFs16ll_BFu16ll");
    static STRUCT_IF_C BFs16ll_BFu16i_BFs16ll_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16i_BFs16ll_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16i_BFs16ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16i_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16i_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16i_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16i_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFs16ll_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16i_BFs16ll_BFu16ll, BFs16ll_BFu16i_BFs16ll_BFu16ll)
//============================================================================


struct  BFs16ll_BFu16i_BFs16ll_BFu16s  {
  signed __tsi64 v1:16;
  unsigned int v2:16;
  signed __tsi64 v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16ll_BFu16i_BFs16ll_BFu16s) C1{ FL:16 Fi:16 FL:16 Fs:16}



static void Test_BFs16ll_BFu16i_BFs16ll_BFu16s()
{
  {
    init_simple_test("BFs16ll_BFu16i_BFs16ll_BFu16s");
    static STRUCT_IF_C BFs16ll_BFu16i_BFs16ll_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16i_BFs16ll_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16i_BFs16ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16i_BFs16ll_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFs16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16i_BFs16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFs16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16i_BFs16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFs16ll_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16i_BFs16ll_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFs16ll_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16i_BFs16ll_BFu16s, BFs16ll_BFu16i_BFs16ll_BFu16s)
//============================================================================


struct  BFs16ll_BFu16i_BFs16s  {
  signed __tsi64 v1:16;
  unsigned int v2:16;
  signed short v3:16;
};
//SIG(1 BFs16ll_BFu16i_BFs16s) C1{ FL:16 Fi:16 Fs:16}



static void Test_BFs16ll_BFu16i_BFs16s()
{
  {
    init_simple_test("BFs16ll_BFu16i_BFs16s");
    static STRUCT_IF_C BFs16ll_BFu16i_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16i_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16i_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16i_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16i_BFs16s, BFs16ll_BFu16i_BFs16s)
//============================================================================


struct  BFs16ll_BFu16i_BFs16s_BFs16i  {
  signed __tsi64 v1:16;
  unsigned int v2:16;
  signed short v3:16;
  signed int v4:16;
};
//SIG(1 BFs16ll_BFu16i_BFs16s_BFs16i) C1{ FL:16 Fi:16 Fs:16 Fi:16}



static void Test_BFs16ll_BFu16i_BFs16s_BFs16i()
{
  {
    init_simple_test("BFs16ll_BFu16i_BFs16s_BFs16i");
    static STRUCT_IF_C BFs16ll_BFu16i_BFs16s_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16i_BFs16s_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16i_BFs16s_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16i_BFs16s_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFs16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16i_BFs16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFs16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16i_BFs16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFs16s_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16i_BFs16s_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFs16s_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16i_BFs16s_BFs16i, BFs16ll_BFu16i_BFs16s_BFs16i)
//============================================================================


struct  BFs16ll_BFu16i_BFs16s_BFs16ll  {
  signed __tsi64 v1:16;
  unsigned int v2:16;
  signed short v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16ll_BFu16i_BFs16s_BFs16ll) C1{ FL:16 Fi:16 Fs:16 FL:16}



static void Test_BFs16ll_BFu16i_BFs16s_BFs16ll()
{
  {
    init_simple_test("BFs16ll_BFu16i_BFs16s_BFs16ll");
    static STRUCT_IF_C BFs16ll_BFu16i_BFs16s_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16i_BFs16s_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16i_BFs16s_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16i_BFs16s_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFs16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16i_BFs16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFs16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16i_BFs16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFs16s_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16i_BFs16s_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFs16s_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16i_BFs16s_BFs16ll, BFs16ll_BFu16i_BFs16s_BFs16ll)
//============================================================================


struct  BFs16ll_BFu16i_BFs16s_BFs16s  {
  signed __tsi64 v1:16;
  unsigned int v2:16;
  signed short v3:16;
  signed short v4:16;
};
//SIG(1 BFs16ll_BFu16i_BFs16s_BFs16s) C1{ FL:16 Fi:16 Fs:16 Fs:16}



static void Test_BFs16ll_BFu16i_BFs16s_BFs16s()
{
  {
    init_simple_test("BFs16ll_BFu16i_BFs16s_BFs16s");
    static STRUCT_IF_C BFs16ll_BFu16i_BFs16s_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16i_BFs16s_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16i_BFs16s_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16i_BFs16s_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFs16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16i_BFs16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFs16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16i_BFs16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFs16s_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16i_BFs16s_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFs16s_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16i_BFs16s_BFs16s, BFs16ll_BFu16i_BFs16s_BFs16s)
//============================================================================


struct  BFs16ll_BFu16i_BFs16s_BFu16i  {
  signed __tsi64 v1:16;
  unsigned int v2:16;
  signed short v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16ll_BFu16i_BFs16s_BFu16i) C1{ FL:16 Fi:16 Fs:16 Fi:16}



static void Test_BFs16ll_BFu16i_BFs16s_BFu16i()
{
  {
    init_simple_test("BFs16ll_BFu16i_BFs16s_BFu16i");
    static STRUCT_IF_C BFs16ll_BFu16i_BFs16s_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16i_BFs16s_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16i_BFs16s_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16i_BFs16s_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFs16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16i_BFs16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFs16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16i_BFs16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFs16s_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16i_BFs16s_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFs16s_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16i_BFs16s_BFu16i, BFs16ll_BFu16i_BFs16s_BFu16i)
//============================================================================


struct  BFs16ll_BFu16i_BFs16s_BFu16ll  {
  signed __tsi64 v1:16;
  unsigned int v2:16;
  signed short v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16ll_BFu16i_BFs16s_BFu16ll) C1{ FL:16 Fi:16 Fs:16 FL:16}



static void Test_BFs16ll_BFu16i_BFs16s_BFu16ll()
{
  {
    init_simple_test("BFs16ll_BFu16i_BFs16s_BFu16ll");
    static STRUCT_IF_C BFs16ll_BFu16i_BFs16s_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16i_BFs16s_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16i_BFs16s_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16i_BFs16s_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFs16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16i_BFs16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFs16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16i_BFs16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFs16s_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16i_BFs16s_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFs16s_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16i_BFs16s_BFu16ll, BFs16ll_BFu16i_BFs16s_BFu16ll)
//============================================================================


struct  BFs16ll_BFu16i_BFs16s_BFu16s  {
  signed __tsi64 v1:16;
  unsigned int v2:16;
  signed short v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16ll_BFu16i_BFs16s_BFu16s) C1{ FL:16 Fi:16 Fs:16 Fs:16}



static void Test_BFs16ll_BFu16i_BFs16s_BFu16s()
{
  {
    init_simple_test("BFs16ll_BFu16i_BFs16s_BFu16s");
    static STRUCT_IF_C BFs16ll_BFu16i_BFs16s_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16i_BFs16s_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16i_BFs16s_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16i_BFs16s_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFs16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16i_BFs16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFs16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16i_BFs16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFs16s_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16i_BFs16s_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFs16s_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16i_BFs16s_BFu16s, BFs16ll_BFu16i_BFs16s_BFu16s)
//============================================================================


struct  BFs16ll_BFu16i_BFu16i  {
  signed __tsi64 v1:16;
  unsigned int v2:16;
  unsigned int v3:16;
};
//SIG(1 BFs16ll_BFu16i_BFu16i) C1{ FL:16 Fi:16 Fi:16}



static void Test_BFs16ll_BFu16i_BFu16i()
{
  {
    init_simple_test("BFs16ll_BFu16i_BFu16i");
    static STRUCT_IF_C BFs16ll_BFu16i_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16i_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16i_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16i_BFu16i, BFs16ll_BFu16i_BFu16i)
//============================================================================


struct  BFs16ll_BFu16i_BFu16i_BFs16i  {
  signed __tsi64 v1:16;
  unsigned int v2:16;
  unsigned int v3:16;
  signed int v4:16;
};
//SIG(1 BFs16ll_BFu16i_BFu16i_BFs16i) C1{ FL:16 Fi:16 Fi:16 Fi:16}



static void Test_BFs16ll_BFu16i_BFu16i_BFs16i()
{
  {
    init_simple_test("BFs16ll_BFu16i_BFu16i_BFs16i");
    static STRUCT_IF_C BFs16ll_BFu16i_BFu16i_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16i_BFu16i_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16i_BFu16i_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16i_BFu16i_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFu16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16i_BFu16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFu16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16i_BFu16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFu16i_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16i_BFu16i_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFu16i_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16i_BFu16i_BFs16i, BFs16ll_BFu16i_BFu16i_BFs16i)
//============================================================================


struct  BFs16ll_BFu16i_BFu16i_BFs16ll  {
  signed __tsi64 v1:16;
  unsigned int v2:16;
  unsigned int v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16ll_BFu16i_BFu16i_BFs16ll) C1{ FL:16 Fi:16 Fi:16 FL:16}



static void Test_BFs16ll_BFu16i_BFu16i_BFs16ll()
{
  {
    init_simple_test("BFs16ll_BFu16i_BFu16i_BFs16ll");
    static STRUCT_IF_C BFs16ll_BFu16i_BFu16i_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16i_BFu16i_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16i_BFu16i_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16i_BFu16i_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFu16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16i_BFu16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFu16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16i_BFu16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFu16i_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16i_BFu16i_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFu16i_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16i_BFu16i_BFs16ll, BFs16ll_BFu16i_BFu16i_BFs16ll)
//============================================================================


struct  BFs16ll_BFu16i_BFu16i_BFs16s  {
  signed __tsi64 v1:16;
  unsigned int v2:16;
  unsigned int v3:16;
  signed short v4:16;
};
//SIG(1 BFs16ll_BFu16i_BFu16i_BFs16s) C1{ FL:16 Fi:16 Fi:16 Fs:16}



static void Test_BFs16ll_BFu16i_BFu16i_BFs16s()
{
  {
    init_simple_test("BFs16ll_BFu16i_BFu16i_BFs16s");
    static STRUCT_IF_C BFs16ll_BFu16i_BFu16i_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16i_BFu16i_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16i_BFu16i_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16i_BFu16i_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFu16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16i_BFu16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFu16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16i_BFu16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFu16i_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16i_BFu16i_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFu16i_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16i_BFu16i_BFs16s, BFs16ll_BFu16i_BFu16i_BFs16s)
//============================================================================


struct  BFs16ll_BFu16i_BFu16i_BFu16i  {
  signed __tsi64 v1:16;
  unsigned int v2:16;
  unsigned int v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16ll_BFu16i_BFu16i_BFu16i) C1{ FL:16 Fi:16 Fi:16 Fi:16}



static void Test_BFs16ll_BFu16i_BFu16i_BFu16i()
{
  {
    init_simple_test("BFs16ll_BFu16i_BFu16i_BFu16i");
    static STRUCT_IF_C BFs16ll_BFu16i_BFu16i_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16i_BFu16i_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16i_BFu16i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16i_BFu16i_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFu16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16i_BFu16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFu16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16i_BFu16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFu16i_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16i_BFu16i_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFu16i_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16i_BFu16i_BFu16i, BFs16ll_BFu16i_BFu16i_BFu16i)
//============================================================================


struct  BFs16ll_BFu16i_BFu16i_BFu16ll  {
  signed __tsi64 v1:16;
  unsigned int v2:16;
  unsigned int v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16ll_BFu16i_BFu16i_BFu16ll) C1{ FL:16 Fi:16 Fi:16 FL:16}



static void Test_BFs16ll_BFu16i_BFu16i_BFu16ll()
{
  {
    init_simple_test("BFs16ll_BFu16i_BFu16i_BFu16ll");
    static STRUCT_IF_C BFs16ll_BFu16i_BFu16i_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16i_BFu16i_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16i_BFu16i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16i_BFu16i_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFu16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16i_BFu16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFu16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16i_BFu16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFu16i_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16i_BFu16i_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFu16i_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16i_BFu16i_BFu16ll, BFs16ll_BFu16i_BFu16i_BFu16ll)
//============================================================================


struct  BFs16ll_BFu16i_BFu16i_BFu16s  {
  signed __tsi64 v1:16;
  unsigned int v2:16;
  unsigned int v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16ll_BFu16i_BFu16i_BFu16s) C1{ FL:16 Fi:16 Fi:16 Fs:16}



static void Test_BFs16ll_BFu16i_BFu16i_BFu16s()
{
  {
    init_simple_test("BFs16ll_BFu16i_BFu16i_BFu16s");
    static STRUCT_IF_C BFs16ll_BFu16i_BFu16i_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16i_BFu16i_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16i_BFu16i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16i_BFu16i_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFu16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16i_BFu16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFu16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16i_BFu16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFu16i_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16i_BFu16i_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFu16i_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16i_BFu16i_BFu16s, BFs16ll_BFu16i_BFu16i_BFu16s)
//============================================================================


struct  BFs16ll_BFu16i_BFu16ll  {
  signed __tsi64 v1:16;
  unsigned int v2:16;
  __tsu64 v3:16;
};
//SIG(1 BFs16ll_BFu16i_BFu16ll) C1{ FL:16 Fi:16 FL:16}



static void Test_BFs16ll_BFu16i_BFu16ll()
{
  {
    init_simple_test("BFs16ll_BFu16i_BFu16ll");
    static STRUCT_IF_C BFs16ll_BFu16i_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16i_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16i_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16i_BFu16ll, BFs16ll_BFu16i_BFu16ll)
//============================================================================


struct  BFs16ll_BFu16i_BFu16ll_BFs16i  {
  signed __tsi64 v1:16;
  unsigned int v2:16;
  __tsu64 v3:16;
  signed int v4:16;
};
//SIG(1 BFs16ll_BFu16i_BFu16ll_BFs16i) C1{ FL:16 Fi:16 FL:16 Fi:16}



static void Test_BFs16ll_BFu16i_BFu16ll_BFs16i()
{
  {
    init_simple_test("BFs16ll_BFu16i_BFu16ll_BFs16i");
    static STRUCT_IF_C BFs16ll_BFu16i_BFu16ll_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16i_BFu16ll_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16i_BFu16ll_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16i_BFu16ll_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFu16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16i_BFu16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFu16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16i_BFu16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFu16ll_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16i_BFu16ll_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFu16ll_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16i_BFu16ll_BFs16i, BFs16ll_BFu16i_BFu16ll_BFs16i)
//============================================================================


struct  BFs16ll_BFu16i_BFu16ll_BFs16ll  {
  signed __tsi64 v1:16;
  unsigned int v2:16;
  __tsu64 v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16ll_BFu16i_BFu16ll_BFs16ll) C1{ FL:16 Fi:16 FL:16 FL:16}



static void Test_BFs16ll_BFu16i_BFu16ll_BFs16ll()
{
  {
    init_simple_test("BFs16ll_BFu16i_BFu16ll_BFs16ll");
    static STRUCT_IF_C BFs16ll_BFu16i_BFu16ll_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16i_BFu16ll_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16i_BFu16ll_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16i_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16i_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16i_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16i_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFu16ll_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16i_BFu16ll_BFs16ll, BFs16ll_BFu16i_BFu16ll_BFs16ll)
//============================================================================


struct  BFs16ll_BFu16i_BFu16ll_BFs16s  {
  signed __tsi64 v1:16;
  unsigned int v2:16;
  __tsu64 v3:16;
  signed short v4:16;
};
//SIG(1 BFs16ll_BFu16i_BFu16ll_BFs16s) C1{ FL:16 Fi:16 FL:16 Fs:16}



static void Test_BFs16ll_BFu16i_BFu16ll_BFs16s()
{
  {
    init_simple_test("BFs16ll_BFu16i_BFu16ll_BFs16s");
    static STRUCT_IF_C BFs16ll_BFu16i_BFu16ll_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16i_BFu16ll_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16i_BFu16ll_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16i_BFu16ll_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFu16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16i_BFu16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFu16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16i_BFu16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFu16ll_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16i_BFu16ll_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFu16ll_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16i_BFu16ll_BFs16s, BFs16ll_BFu16i_BFu16ll_BFs16s)
//============================================================================


struct  BFs16ll_BFu16i_BFu16ll_BFu16i  {
  signed __tsi64 v1:16;
  unsigned int v2:16;
  __tsu64 v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16ll_BFu16i_BFu16ll_BFu16i) C1{ FL:16 Fi:16 FL:16 Fi:16}



static void Test_BFs16ll_BFu16i_BFu16ll_BFu16i()
{
  {
    init_simple_test("BFs16ll_BFu16i_BFu16ll_BFu16i");
    static STRUCT_IF_C BFs16ll_BFu16i_BFu16ll_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16i_BFu16ll_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16i_BFu16ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16i_BFu16ll_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFu16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16i_BFu16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFu16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16i_BFu16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFu16ll_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16i_BFu16ll_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFu16ll_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16i_BFu16ll_BFu16i, BFs16ll_BFu16i_BFu16ll_BFu16i)
//============================================================================


struct  BFs16ll_BFu16i_BFu16ll_BFu16ll  {
  signed __tsi64 v1:16;
  unsigned int v2:16;
  __tsu64 v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16ll_BFu16i_BFu16ll_BFu16ll) C1{ FL:16 Fi:16 FL:16 FL:16}



static void Test_BFs16ll_BFu16i_BFu16ll_BFu16ll()
{
  {
    init_simple_test("BFs16ll_BFu16i_BFu16ll_BFu16ll");
    static STRUCT_IF_C BFs16ll_BFu16i_BFu16ll_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16i_BFu16ll_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16i_BFu16ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16i_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16i_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16i_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16i_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFu16ll_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16i_BFu16ll_BFu16ll, BFs16ll_BFu16i_BFu16ll_BFu16ll)
//============================================================================


struct  BFs16ll_BFu16i_BFu16ll_BFu16s  {
  signed __tsi64 v1:16;
  unsigned int v2:16;
  __tsu64 v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16ll_BFu16i_BFu16ll_BFu16s) C1{ FL:16 Fi:16 FL:16 Fs:16}



static void Test_BFs16ll_BFu16i_BFu16ll_BFu16s()
{
  {
    init_simple_test("BFs16ll_BFu16i_BFu16ll_BFu16s");
    static STRUCT_IF_C BFs16ll_BFu16i_BFu16ll_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16i_BFu16ll_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16i_BFu16ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16i_BFu16ll_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFu16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16i_BFu16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFu16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16i_BFu16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFu16ll_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16i_BFu16ll_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFu16ll_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16i_BFu16ll_BFu16s, BFs16ll_BFu16i_BFu16ll_BFu16s)
//============================================================================


struct  BFs16ll_BFu16i_BFu16s  {
  signed __tsi64 v1:16;
  unsigned int v2:16;
  unsigned short v3:16;
};
//SIG(1 BFs16ll_BFu16i_BFu16s) C1{ FL:16 Fi:16 Fs:16}



static void Test_BFs16ll_BFu16i_BFu16s()
{
  {
    init_simple_test("BFs16ll_BFu16i_BFu16s");
    static STRUCT_IF_C BFs16ll_BFu16i_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16i_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16i_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16i_BFu16s, BFs16ll_BFu16i_BFu16s)
//============================================================================


struct  BFs16ll_BFu16i_BFu16s_BFs16i  {
  signed __tsi64 v1:16;
  unsigned int v2:16;
  unsigned short v3:16;
  signed int v4:16;
};
//SIG(1 BFs16ll_BFu16i_BFu16s_BFs16i) C1{ FL:16 Fi:16 Fs:16 Fi:16}



static void Test_BFs16ll_BFu16i_BFu16s_BFs16i()
{
  {
    init_simple_test("BFs16ll_BFu16i_BFu16s_BFs16i");
    static STRUCT_IF_C BFs16ll_BFu16i_BFu16s_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16i_BFu16s_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16i_BFu16s_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16i_BFu16s_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFu16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16i_BFu16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFu16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16i_BFu16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFu16s_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16i_BFu16s_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFu16s_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16i_BFu16s_BFs16i, BFs16ll_BFu16i_BFu16s_BFs16i)
//============================================================================


struct  BFs16ll_BFu16i_BFu16s_BFs16ll  {
  signed __tsi64 v1:16;
  unsigned int v2:16;
  unsigned short v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16ll_BFu16i_BFu16s_BFs16ll) C1{ FL:16 Fi:16 Fs:16 FL:16}



static void Test_BFs16ll_BFu16i_BFu16s_BFs16ll()
{
  {
    init_simple_test("BFs16ll_BFu16i_BFu16s_BFs16ll");
    static STRUCT_IF_C BFs16ll_BFu16i_BFu16s_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16i_BFu16s_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16i_BFu16s_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16i_BFu16s_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFu16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16i_BFu16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFu16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16i_BFu16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFu16s_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16i_BFu16s_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFu16s_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16i_BFu16s_BFs16ll, BFs16ll_BFu16i_BFu16s_BFs16ll)
//============================================================================


struct  BFs16ll_BFu16i_BFu16s_BFs16s  {
  signed __tsi64 v1:16;
  unsigned int v2:16;
  unsigned short v3:16;
  signed short v4:16;
};
//SIG(1 BFs16ll_BFu16i_BFu16s_BFs16s) C1{ FL:16 Fi:16 Fs:16 Fs:16}



static void Test_BFs16ll_BFu16i_BFu16s_BFs16s()
{
  {
    init_simple_test("BFs16ll_BFu16i_BFu16s_BFs16s");
    static STRUCT_IF_C BFs16ll_BFu16i_BFu16s_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16i_BFu16s_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16i_BFu16s_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16i_BFu16s_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFu16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16i_BFu16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFu16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16i_BFu16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFu16s_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16i_BFu16s_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFu16s_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16i_BFu16s_BFs16s, BFs16ll_BFu16i_BFu16s_BFs16s)
//============================================================================


struct  BFs16ll_BFu16i_BFu16s_BFu16i  {
  signed __tsi64 v1:16;
  unsigned int v2:16;
  unsigned short v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16ll_BFu16i_BFu16s_BFu16i) C1{ FL:16 Fi:16 Fs:16 Fi:16}



static void Test_BFs16ll_BFu16i_BFu16s_BFu16i()
{
  {
    init_simple_test("BFs16ll_BFu16i_BFu16s_BFu16i");
    static STRUCT_IF_C BFs16ll_BFu16i_BFu16s_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16i_BFu16s_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16i_BFu16s_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16i_BFu16s_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFu16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16i_BFu16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFu16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16i_BFu16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFu16s_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16i_BFu16s_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFu16s_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16i_BFu16s_BFu16i, BFs16ll_BFu16i_BFu16s_BFu16i)
//============================================================================


struct  BFs16ll_BFu16i_BFu16s_BFu16ll  {
  signed __tsi64 v1:16;
  unsigned int v2:16;
  unsigned short v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16ll_BFu16i_BFu16s_BFu16ll) C1{ FL:16 Fi:16 Fs:16 FL:16}



static void Test_BFs16ll_BFu16i_BFu16s_BFu16ll()
{
  {
    init_simple_test("BFs16ll_BFu16i_BFu16s_BFu16ll");
    static STRUCT_IF_C BFs16ll_BFu16i_BFu16s_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16i_BFu16s_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16i_BFu16s_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16i_BFu16s_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFu16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16i_BFu16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFu16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16i_BFu16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFu16s_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16i_BFu16s_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFu16s_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16i_BFu16s_BFu16ll, BFs16ll_BFu16i_BFu16s_BFu16ll)
//============================================================================


struct  BFs16ll_BFu16i_BFu16s_BFu16s  {
  signed __tsi64 v1:16;
  unsigned int v2:16;
  unsigned short v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16ll_BFu16i_BFu16s_BFu16s) C1{ FL:16 Fi:16 Fs:16 Fs:16}



static void Test_BFs16ll_BFu16i_BFu16s_BFu16s()
{
  {
    init_simple_test("BFs16ll_BFu16i_BFu16s_BFu16s");
    static STRUCT_IF_C BFs16ll_BFu16i_BFu16s_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16i_BFu16s_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16i_BFu16s_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16i_BFu16s_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16i_BFu16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16i_BFu16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFu16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16i_BFu16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFu16s_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16i_BFu16s_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16i_BFu16s_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16i_BFu16s_BFu16s, BFs16ll_BFu16i_BFu16s_BFu16s)
//============================================================================


struct  BFs16ll_BFu16ll  {
  signed __tsi64 v1:16;
  __tsu64 v2:16;
};
//SIG(1 BFs16ll_BFu16ll) C1{ FL:16 FL:16}



static void Test_BFs16ll_BFu16ll()
{
  {
    init_simple_test("BFs16ll_BFu16ll");
    static STRUCT_IF_C BFs16ll_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs16ll_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16ll, BFs16ll_BFu16ll)
//============================================================================


struct  BFs16ll_BFu16ll_BFs16i  {
  signed __tsi64 v1:16;
  __tsu64 v2:16;
  signed int v3:16;
};
//SIG(1 BFs16ll_BFu16ll_BFs16i) C1{ FL:16 FL:16 Fi:16}



static void Test_BFs16ll_BFu16ll_BFs16i()
{
  {
    init_simple_test("BFs16ll_BFu16ll_BFs16i");
    static STRUCT_IF_C BFs16ll_BFu16ll_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16ll_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16ll_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16ll_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16ll_BFs16i, BFs16ll_BFu16ll_BFs16i)
//============================================================================


struct  BFs16ll_BFu16ll_BFs16i_BFs16i  {
  signed __tsi64 v1:16;
  __tsu64 v2:16;
  signed int v3:16;
  signed int v4:16;
};
//SIG(1 BFs16ll_BFu16ll_BFs16i_BFs16i) C1{ FL:16 FL:16 Fi:16 Fi:16}



static void Test_BFs16ll_BFu16ll_BFs16i_BFs16i()
{
  {
    init_simple_test("BFs16ll_BFu16ll_BFs16i_BFs16i");
    static STRUCT_IF_C BFs16ll_BFu16ll_BFs16i_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16ll_BFs16i_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16ll_BFs16i_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16ll_BFs16i_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFs16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16ll_BFs16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFs16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16ll_BFs16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFs16i_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16ll_BFs16i_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFs16i_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16ll_BFs16i_BFs16i, BFs16ll_BFu16ll_BFs16i_BFs16i)
//============================================================================


struct  BFs16ll_BFu16ll_BFs16i_BFs16ll  {
  signed __tsi64 v1:16;
  __tsu64 v2:16;
  signed int v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16ll_BFu16ll_BFs16i_BFs16ll) C1{ FL:16 FL:16 Fi:16 FL:16}



static void Test_BFs16ll_BFu16ll_BFs16i_BFs16ll()
{
  {
    init_simple_test("BFs16ll_BFu16ll_BFs16i_BFs16ll");
    static STRUCT_IF_C BFs16ll_BFu16ll_BFs16i_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16ll_BFs16i_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16ll_BFs16i_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16ll_BFs16i_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFs16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16ll_BFs16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFs16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16ll_BFs16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFs16i_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16ll_BFs16i_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFs16i_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16ll_BFs16i_BFs16ll, BFs16ll_BFu16ll_BFs16i_BFs16ll)
//============================================================================


struct  BFs16ll_BFu16ll_BFs16i_BFs16s  {
  signed __tsi64 v1:16;
  __tsu64 v2:16;
  signed int v3:16;
  signed short v4:16;
};
//SIG(1 BFs16ll_BFu16ll_BFs16i_BFs16s) C1{ FL:16 FL:16 Fi:16 Fs:16}



static void Test_BFs16ll_BFu16ll_BFs16i_BFs16s()
{
  {
    init_simple_test("BFs16ll_BFu16ll_BFs16i_BFs16s");
    static STRUCT_IF_C BFs16ll_BFu16ll_BFs16i_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16ll_BFs16i_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16ll_BFs16i_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16ll_BFs16i_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFs16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16ll_BFs16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFs16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16ll_BFs16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFs16i_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16ll_BFs16i_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFs16i_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16ll_BFs16i_BFs16s, BFs16ll_BFu16ll_BFs16i_BFs16s)
//============================================================================


struct  BFs16ll_BFu16ll_BFs16i_BFu16i  {
  signed __tsi64 v1:16;
  __tsu64 v2:16;
  signed int v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16ll_BFu16ll_BFs16i_BFu16i) C1{ FL:16 FL:16 Fi:16 Fi:16}



static void Test_BFs16ll_BFu16ll_BFs16i_BFu16i()
{
  {
    init_simple_test("BFs16ll_BFu16ll_BFs16i_BFu16i");
    static STRUCT_IF_C BFs16ll_BFu16ll_BFs16i_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16ll_BFs16i_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16ll_BFs16i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16ll_BFs16i_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFs16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16ll_BFs16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFs16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16ll_BFs16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFs16i_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16ll_BFs16i_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFs16i_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16ll_BFs16i_BFu16i, BFs16ll_BFu16ll_BFs16i_BFu16i)
//============================================================================


struct  BFs16ll_BFu16ll_BFs16i_BFu16ll  {
  signed __tsi64 v1:16;
  __tsu64 v2:16;
  signed int v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16ll_BFu16ll_BFs16i_BFu16ll) C1{ FL:16 FL:16 Fi:16 FL:16}



static void Test_BFs16ll_BFu16ll_BFs16i_BFu16ll()
{
  {
    init_simple_test("BFs16ll_BFu16ll_BFs16i_BFu16ll");
    static STRUCT_IF_C BFs16ll_BFu16ll_BFs16i_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16ll_BFs16i_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16ll_BFs16i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16ll_BFs16i_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFs16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16ll_BFs16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFs16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16ll_BFs16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFs16i_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16ll_BFs16i_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFs16i_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16ll_BFs16i_BFu16ll, BFs16ll_BFu16ll_BFs16i_BFu16ll)
//============================================================================


struct  BFs16ll_BFu16ll_BFs16i_BFu16s  {
  signed __tsi64 v1:16;
  __tsu64 v2:16;
  signed int v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16ll_BFu16ll_BFs16i_BFu16s) C1{ FL:16 FL:16 Fi:16 Fs:16}



static void Test_BFs16ll_BFu16ll_BFs16i_BFu16s()
{
  {
    init_simple_test("BFs16ll_BFu16ll_BFs16i_BFu16s");
    static STRUCT_IF_C BFs16ll_BFu16ll_BFs16i_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16ll_BFs16i_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16ll_BFs16i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16ll_BFs16i_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFs16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16ll_BFs16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFs16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16ll_BFs16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFs16i_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16ll_BFs16i_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFs16i_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16ll_BFs16i_BFu16s, BFs16ll_BFu16ll_BFs16i_BFu16s)
//============================================================================


struct  BFs16ll_BFu16ll_BFs16ll  {
  signed __tsi64 v1:16;
  __tsu64 v2:16;
  signed __tsi64 v3:16;
};
//SIG(1 BFs16ll_BFu16ll_BFs16ll) C1{ FL:16 FL:16 FL:16}



static void Test_BFs16ll_BFu16ll_BFs16ll()
{
  {
    init_simple_test("BFs16ll_BFu16ll_BFs16ll");
    static STRUCT_IF_C BFs16ll_BFu16ll_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16ll_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16ll_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16ll_BFs16ll, BFs16ll_BFu16ll_BFs16ll)
//============================================================================


struct  BFs16ll_BFu16ll_BFs16ll_BFs16i  {
  signed __tsi64 v1:16;
  __tsu64 v2:16;
  signed __tsi64 v3:16;
  signed int v4:16;
};
//SIG(1 BFs16ll_BFu16ll_BFs16ll_BFs16i) C1{ FL:16 FL:16 FL:16 Fi:16}



static void Test_BFs16ll_BFu16ll_BFs16ll_BFs16i()
{
  {
    init_simple_test("BFs16ll_BFu16ll_BFs16ll_BFs16i");
    static STRUCT_IF_C BFs16ll_BFu16ll_BFs16ll_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16ll_BFs16ll_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16ll_BFs16ll_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16ll_BFs16ll_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFs16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16ll_BFs16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFs16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16ll_BFs16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFs16ll_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16ll_BFs16ll_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFs16ll_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16ll_BFs16ll_BFs16i, BFs16ll_BFu16ll_BFs16ll_BFs16i)
//============================================================================


struct  BFs16ll_BFu16ll_BFs16ll_BFs16ll  {
  signed __tsi64 v1:16;
  __tsu64 v2:16;
  signed __tsi64 v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16ll_BFu16ll_BFs16ll_BFs16ll) C1{ FL:16 FL:16 FL:16 FL:16}



static void Test_BFs16ll_BFu16ll_BFs16ll_BFs16ll()
{
  {
    init_simple_test("BFs16ll_BFu16ll_BFs16ll_BFs16ll");
    static STRUCT_IF_C BFs16ll_BFu16ll_BFs16ll_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16ll_BFs16ll_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16ll_BFs16ll_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16ll_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16ll_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16ll_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16ll_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFs16ll_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16ll_BFs16ll_BFs16ll, BFs16ll_BFu16ll_BFs16ll_BFs16ll)
//============================================================================


struct  BFs16ll_BFu16ll_BFs16ll_BFs16s  {
  signed __tsi64 v1:16;
  __tsu64 v2:16;
  signed __tsi64 v3:16;
  signed short v4:16;
};
//SIG(1 BFs16ll_BFu16ll_BFs16ll_BFs16s) C1{ FL:16 FL:16 FL:16 Fs:16}



static void Test_BFs16ll_BFu16ll_BFs16ll_BFs16s()
{
  {
    init_simple_test("BFs16ll_BFu16ll_BFs16ll_BFs16s");
    static STRUCT_IF_C BFs16ll_BFu16ll_BFs16ll_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16ll_BFs16ll_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16ll_BFs16ll_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16ll_BFs16ll_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFs16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16ll_BFs16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFs16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16ll_BFs16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFs16ll_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16ll_BFs16ll_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFs16ll_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16ll_BFs16ll_BFs16s, BFs16ll_BFu16ll_BFs16ll_BFs16s)
//============================================================================


struct  BFs16ll_BFu16ll_BFs16ll_BFu16i  {
  signed __tsi64 v1:16;
  __tsu64 v2:16;
  signed __tsi64 v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16ll_BFu16ll_BFs16ll_BFu16i) C1{ FL:16 FL:16 FL:16 Fi:16}



static void Test_BFs16ll_BFu16ll_BFs16ll_BFu16i()
{
  {
    init_simple_test("BFs16ll_BFu16ll_BFs16ll_BFu16i");
    static STRUCT_IF_C BFs16ll_BFu16ll_BFs16ll_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16ll_BFs16ll_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16ll_BFs16ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16ll_BFs16ll_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFs16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16ll_BFs16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFs16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16ll_BFs16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFs16ll_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16ll_BFs16ll_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFs16ll_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16ll_BFs16ll_BFu16i, BFs16ll_BFu16ll_BFs16ll_BFu16i)
//============================================================================


struct  BFs16ll_BFu16ll_BFs16ll_BFu16ll  {
  signed __tsi64 v1:16;
  __tsu64 v2:16;
  signed __tsi64 v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16ll_BFu16ll_BFs16ll_BFu16ll) C1{ FL:16 FL:16 FL:16 FL:16}



static void Test_BFs16ll_BFu16ll_BFs16ll_BFu16ll()
{
  {
    init_simple_test("BFs16ll_BFu16ll_BFs16ll_BFu16ll");
    static STRUCT_IF_C BFs16ll_BFu16ll_BFs16ll_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16ll_BFs16ll_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16ll_BFs16ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16ll_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16ll_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16ll_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16ll_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFs16ll_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16ll_BFs16ll_BFu16ll, BFs16ll_BFu16ll_BFs16ll_BFu16ll)
//============================================================================


struct  BFs16ll_BFu16ll_BFs16ll_BFu16s  {
  signed __tsi64 v1:16;
  __tsu64 v2:16;
  signed __tsi64 v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16ll_BFu16ll_BFs16ll_BFu16s) C1{ FL:16 FL:16 FL:16 Fs:16}



static void Test_BFs16ll_BFu16ll_BFs16ll_BFu16s()
{
  {
    init_simple_test("BFs16ll_BFu16ll_BFs16ll_BFu16s");
    static STRUCT_IF_C BFs16ll_BFu16ll_BFs16ll_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16ll_BFs16ll_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16ll_BFs16ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16ll_BFs16ll_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFs16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16ll_BFs16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFs16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16ll_BFs16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFs16ll_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16ll_BFs16ll_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFs16ll_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16ll_BFs16ll_BFu16s, BFs16ll_BFu16ll_BFs16ll_BFu16s)
//============================================================================


struct  BFs16ll_BFu16ll_BFs16s  {
  signed __tsi64 v1:16;
  __tsu64 v2:16;
  signed short v3:16;
};
//SIG(1 BFs16ll_BFu16ll_BFs16s) C1{ FL:16 FL:16 Fs:16}



static void Test_BFs16ll_BFu16ll_BFs16s()
{
  {
    init_simple_test("BFs16ll_BFu16ll_BFs16s");
    static STRUCT_IF_C BFs16ll_BFu16ll_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16ll_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16ll_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16ll_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16ll_BFs16s, BFs16ll_BFu16ll_BFs16s)
//============================================================================


struct  BFs16ll_BFu16ll_BFs16s_BFs16i  {
  signed __tsi64 v1:16;
  __tsu64 v2:16;
  signed short v3:16;
  signed int v4:16;
};
//SIG(1 BFs16ll_BFu16ll_BFs16s_BFs16i) C1{ FL:16 FL:16 Fs:16 Fi:16}



static void Test_BFs16ll_BFu16ll_BFs16s_BFs16i()
{
  {
    init_simple_test("BFs16ll_BFu16ll_BFs16s_BFs16i");
    static STRUCT_IF_C BFs16ll_BFu16ll_BFs16s_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16ll_BFs16s_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16ll_BFs16s_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16ll_BFs16s_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFs16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16ll_BFs16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFs16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16ll_BFs16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFs16s_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16ll_BFs16s_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFs16s_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16ll_BFs16s_BFs16i, BFs16ll_BFu16ll_BFs16s_BFs16i)
//============================================================================


struct  BFs16ll_BFu16ll_BFs16s_BFs16ll  {
  signed __tsi64 v1:16;
  __tsu64 v2:16;
  signed short v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16ll_BFu16ll_BFs16s_BFs16ll) C1{ FL:16 FL:16 Fs:16 FL:16}



static void Test_BFs16ll_BFu16ll_BFs16s_BFs16ll()
{
  {
    init_simple_test("BFs16ll_BFu16ll_BFs16s_BFs16ll");
    static STRUCT_IF_C BFs16ll_BFu16ll_BFs16s_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16ll_BFs16s_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16ll_BFs16s_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16ll_BFs16s_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFs16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16ll_BFs16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFs16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16ll_BFs16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFs16s_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16ll_BFs16s_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFs16s_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16ll_BFs16s_BFs16ll, BFs16ll_BFu16ll_BFs16s_BFs16ll)
//============================================================================


struct  BFs16ll_BFu16ll_BFs16s_BFs16s  {
  signed __tsi64 v1:16;
  __tsu64 v2:16;
  signed short v3:16;
  signed short v4:16;
};
//SIG(1 BFs16ll_BFu16ll_BFs16s_BFs16s) C1{ FL:16 FL:16 Fs:16 Fs:16}



static void Test_BFs16ll_BFu16ll_BFs16s_BFs16s()
{
  {
    init_simple_test("BFs16ll_BFu16ll_BFs16s_BFs16s");
    static STRUCT_IF_C BFs16ll_BFu16ll_BFs16s_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16ll_BFs16s_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16ll_BFs16s_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16ll_BFs16s_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFs16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16ll_BFs16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFs16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16ll_BFs16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFs16s_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16ll_BFs16s_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFs16s_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16ll_BFs16s_BFs16s, BFs16ll_BFu16ll_BFs16s_BFs16s)
//============================================================================


struct  BFs16ll_BFu16ll_BFs16s_BFu16i  {
  signed __tsi64 v1:16;
  __tsu64 v2:16;
  signed short v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16ll_BFu16ll_BFs16s_BFu16i) C1{ FL:16 FL:16 Fs:16 Fi:16}



static void Test_BFs16ll_BFu16ll_BFs16s_BFu16i()
{
  {
    init_simple_test("BFs16ll_BFu16ll_BFs16s_BFu16i");
    static STRUCT_IF_C BFs16ll_BFu16ll_BFs16s_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16ll_BFs16s_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16ll_BFs16s_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16ll_BFs16s_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFs16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16ll_BFs16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFs16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16ll_BFs16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFs16s_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16ll_BFs16s_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFs16s_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16ll_BFs16s_BFu16i, BFs16ll_BFu16ll_BFs16s_BFu16i)
//============================================================================


struct  BFs16ll_BFu16ll_BFs16s_BFu16ll  {
  signed __tsi64 v1:16;
  __tsu64 v2:16;
  signed short v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16ll_BFu16ll_BFs16s_BFu16ll) C1{ FL:16 FL:16 Fs:16 FL:16}



static void Test_BFs16ll_BFu16ll_BFs16s_BFu16ll()
{
  {
    init_simple_test("BFs16ll_BFu16ll_BFs16s_BFu16ll");
    static STRUCT_IF_C BFs16ll_BFu16ll_BFs16s_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16ll_BFs16s_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16ll_BFs16s_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16ll_BFs16s_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFs16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16ll_BFs16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFs16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16ll_BFs16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFs16s_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16ll_BFs16s_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFs16s_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16ll_BFs16s_BFu16ll, BFs16ll_BFu16ll_BFs16s_BFu16ll)
//============================================================================


struct  BFs16ll_BFu16ll_BFs16s_BFu16s  {
  signed __tsi64 v1:16;
  __tsu64 v2:16;
  signed short v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16ll_BFu16ll_BFs16s_BFu16s) C1{ FL:16 FL:16 Fs:16 Fs:16}



static void Test_BFs16ll_BFu16ll_BFs16s_BFu16s()
{
  {
    init_simple_test("BFs16ll_BFu16ll_BFs16s_BFu16s");
    static STRUCT_IF_C BFs16ll_BFu16ll_BFs16s_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16ll_BFs16s_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16ll_BFs16s_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16ll_BFs16s_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFs16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16ll_BFs16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFs16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16ll_BFs16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFs16s_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16ll_BFs16s_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFs16s_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16ll_BFs16s_BFu16s, BFs16ll_BFu16ll_BFs16s_BFu16s)
//============================================================================


struct  BFs16ll_BFu16ll_BFu16i  {
  signed __tsi64 v1:16;
  __tsu64 v2:16;
  unsigned int v3:16;
};
//SIG(1 BFs16ll_BFu16ll_BFu16i) C1{ FL:16 FL:16 Fi:16}



static void Test_BFs16ll_BFu16ll_BFu16i()
{
  {
    init_simple_test("BFs16ll_BFu16ll_BFu16i");
    static STRUCT_IF_C BFs16ll_BFu16ll_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16ll_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16ll_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16ll_BFu16i, BFs16ll_BFu16ll_BFu16i)
//============================================================================


struct  BFs16ll_BFu16ll_BFu16i_BFs16i  {
  signed __tsi64 v1:16;
  __tsu64 v2:16;
  unsigned int v3:16;
  signed int v4:16;
};
//SIG(1 BFs16ll_BFu16ll_BFu16i_BFs16i) C1{ FL:16 FL:16 Fi:16 Fi:16}



static void Test_BFs16ll_BFu16ll_BFu16i_BFs16i()
{
  {
    init_simple_test("BFs16ll_BFu16ll_BFu16i_BFs16i");
    static STRUCT_IF_C BFs16ll_BFu16ll_BFu16i_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16ll_BFu16i_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16ll_BFu16i_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16ll_BFu16i_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFu16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16ll_BFu16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFu16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16ll_BFu16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFu16i_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16ll_BFu16i_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFu16i_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16ll_BFu16i_BFs16i, BFs16ll_BFu16ll_BFu16i_BFs16i)
//============================================================================


struct  BFs16ll_BFu16ll_BFu16i_BFs16ll  {
  signed __tsi64 v1:16;
  __tsu64 v2:16;
  unsigned int v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16ll_BFu16ll_BFu16i_BFs16ll) C1{ FL:16 FL:16 Fi:16 FL:16}



static void Test_BFs16ll_BFu16ll_BFu16i_BFs16ll()
{
  {
    init_simple_test("BFs16ll_BFu16ll_BFu16i_BFs16ll");
    static STRUCT_IF_C BFs16ll_BFu16ll_BFu16i_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16ll_BFu16i_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16ll_BFu16i_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16ll_BFu16i_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFu16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16ll_BFu16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFu16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16ll_BFu16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFu16i_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16ll_BFu16i_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFu16i_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16ll_BFu16i_BFs16ll, BFs16ll_BFu16ll_BFu16i_BFs16ll)
//============================================================================


struct  BFs16ll_BFu16ll_BFu16i_BFs16s  {
  signed __tsi64 v1:16;
  __tsu64 v2:16;
  unsigned int v3:16;
  signed short v4:16;
};
//SIG(1 BFs16ll_BFu16ll_BFu16i_BFs16s) C1{ FL:16 FL:16 Fi:16 Fs:16}



static void Test_BFs16ll_BFu16ll_BFu16i_BFs16s()
{
  {
    init_simple_test("BFs16ll_BFu16ll_BFu16i_BFs16s");
    static STRUCT_IF_C BFs16ll_BFu16ll_BFu16i_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16ll_BFu16i_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16ll_BFu16i_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16ll_BFu16i_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFu16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16ll_BFu16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFu16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16ll_BFu16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFu16i_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16ll_BFu16i_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFu16i_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16ll_BFu16i_BFs16s, BFs16ll_BFu16ll_BFu16i_BFs16s)
//============================================================================


struct  BFs16ll_BFu16ll_BFu16i_BFu16i  {
  signed __tsi64 v1:16;
  __tsu64 v2:16;
  unsigned int v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16ll_BFu16ll_BFu16i_BFu16i) C1{ FL:16 FL:16 Fi:16 Fi:16}



static void Test_BFs16ll_BFu16ll_BFu16i_BFu16i()
{
  {
    init_simple_test("BFs16ll_BFu16ll_BFu16i_BFu16i");
    static STRUCT_IF_C BFs16ll_BFu16ll_BFu16i_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16ll_BFu16i_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16ll_BFu16i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16ll_BFu16i_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFu16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16ll_BFu16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFu16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16ll_BFu16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFu16i_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16ll_BFu16i_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFu16i_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16ll_BFu16i_BFu16i, BFs16ll_BFu16ll_BFu16i_BFu16i)
//============================================================================


struct  BFs16ll_BFu16ll_BFu16i_BFu16ll  {
  signed __tsi64 v1:16;
  __tsu64 v2:16;
  unsigned int v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16ll_BFu16ll_BFu16i_BFu16ll) C1{ FL:16 FL:16 Fi:16 FL:16}



static void Test_BFs16ll_BFu16ll_BFu16i_BFu16ll()
{
  {
    init_simple_test("BFs16ll_BFu16ll_BFu16i_BFu16ll");
    static STRUCT_IF_C BFs16ll_BFu16ll_BFu16i_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16ll_BFu16i_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16ll_BFu16i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16ll_BFu16i_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFu16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16ll_BFu16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFu16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16ll_BFu16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFu16i_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16ll_BFu16i_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFu16i_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16ll_BFu16i_BFu16ll, BFs16ll_BFu16ll_BFu16i_BFu16ll)
//============================================================================


struct  BFs16ll_BFu16ll_BFu16i_BFu16s  {
  signed __tsi64 v1:16;
  __tsu64 v2:16;
  unsigned int v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16ll_BFu16ll_BFu16i_BFu16s) C1{ FL:16 FL:16 Fi:16 Fs:16}



static void Test_BFs16ll_BFu16ll_BFu16i_BFu16s()
{
  {
    init_simple_test("BFs16ll_BFu16ll_BFu16i_BFu16s");
    static STRUCT_IF_C BFs16ll_BFu16ll_BFu16i_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16ll_BFu16i_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16ll_BFu16i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16ll_BFu16i_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFu16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16ll_BFu16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFu16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16ll_BFu16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFu16i_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16ll_BFu16i_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFu16i_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16ll_BFu16i_BFu16s, BFs16ll_BFu16ll_BFu16i_BFu16s)
//============================================================================


struct  BFs16ll_BFu16ll_BFu16ll  {
  signed __tsi64 v1:16;
  __tsu64 v2:16;
  __tsu64 v3:16;
};
//SIG(1 BFs16ll_BFu16ll_BFu16ll) C1{ FL:16 FL:16 FL:16}



static void Test_BFs16ll_BFu16ll_BFu16ll()
{
  {
    init_simple_test("BFs16ll_BFu16ll_BFu16ll");
    static STRUCT_IF_C BFs16ll_BFu16ll_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16ll_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16ll_BFu16ll, BFs16ll_BFu16ll_BFu16ll)
//============================================================================


struct  BFs16ll_BFu16ll_BFu16ll_BFs16i  {
  signed __tsi64 v1:16;
  __tsu64 v2:16;
  __tsu64 v3:16;
  signed int v4:16;
};
//SIG(1 BFs16ll_BFu16ll_BFu16ll_BFs16i) C1{ FL:16 FL:16 FL:16 Fi:16}



static void Test_BFs16ll_BFu16ll_BFu16ll_BFs16i()
{
  {
    init_simple_test("BFs16ll_BFu16ll_BFu16ll_BFs16i");
    static STRUCT_IF_C BFs16ll_BFu16ll_BFu16ll_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16ll_BFu16ll_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16ll_BFu16ll_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16ll_BFu16ll_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFu16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16ll_BFu16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFu16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16ll_BFu16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFu16ll_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16ll_BFu16ll_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFu16ll_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16ll_BFu16ll_BFs16i, BFs16ll_BFu16ll_BFu16ll_BFs16i)
//============================================================================


struct  BFs16ll_BFu16ll_BFu16ll_BFs16ll  {
  signed __tsi64 v1:16;
  __tsu64 v2:16;
  __tsu64 v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16ll_BFu16ll_BFu16ll_BFs16ll) C1{ FL:16 FL:16 FL:16 FL:16}



static void Test_BFs16ll_BFu16ll_BFu16ll_BFs16ll()
{
  {
    init_simple_test("BFs16ll_BFu16ll_BFu16ll_BFs16ll");
    static STRUCT_IF_C BFs16ll_BFu16ll_BFu16ll_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16ll_BFu16ll_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16ll_BFu16ll_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16ll_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16ll_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16ll_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16ll_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFu16ll_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16ll_BFu16ll_BFs16ll, BFs16ll_BFu16ll_BFu16ll_BFs16ll)
//============================================================================


struct  BFs16ll_BFu16ll_BFu16ll_BFs16s  {
  signed __tsi64 v1:16;
  __tsu64 v2:16;
  __tsu64 v3:16;
  signed short v4:16;
};
//SIG(1 BFs16ll_BFu16ll_BFu16ll_BFs16s) C1{ FL:16 FL:16 FL:16 Fs:16}



static void Test_BFs16ll_BFu16ll_BFu16ll_BFs16s()
{
  {
    init_simple_test("BFs16ll_BFu16ll_BFu16ll_BFs16s");
    static STRUCT_IF_C BFs16ll_BFu16ll_BFu16ll_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16ll_BFu16ll_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16ll_BFu16ll_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16ll_BFu16ll_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFu16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16ll_BFu16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFu16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16ll_BFu16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFu16ll_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16ll_BFu16ll_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFu16ll_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16ll_BFu16ll_BFs16s, BFs16ll_BFu16ll_BFu16ll_BFs16s)
//============================================================================


struct  BFs16ll_BFu16ll_BFu16ll_BFu16i  {
  signed __tsi64 v1:16;
  __tsu64 v2:16;
  __tsu64 v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16ll_BFu16ll_BFu16ll_BFu16i) C1{ FL:16 FL:16 FL:16 Fi:16}



static void Test_BFs16ll_BFu16ll_BFu16ll_BFu16i()
{
  {
    init_simple_test("BFs16ll_BFu16ll_BFu16ll_BFu16i");
    static STRUCT_IF_C BFs16ll_BFu16ll_BFu16ll_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16ll_BFu16ll_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16ll_BFu16ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16ll_BFu16ll_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFu16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16ll_BFu16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFu16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16ll_BFu16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFu16ll_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16ll_BFu16ll_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFu16ll_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16ll_BFu16ll_BFu16i, BFs16ll_BFu16ll_BFu16ll_BFu16i)
//============================================================================


struct  BFs16ll_BFu16ll_BFu16ll_BFu16ll  {
  signed __tsi64 v1:16;
  __tsu64 v2:16;
  __tsu64 v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16ll_BFu16ll_BFu16ll_BFu16ll) C1{ FL:16 FL:16 FL:16 FL:16}



static void Test_BFs16ll_BFu16ll_BFu16ll_BFu16ll()
{
  {
    init_simple_test("BFs16ll_BFu16ll_BFu16ll_BFu16ll");
    static STRUCT_IF_C BFs16ll_BFu16ll_BFu16ll_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16ll_BFu16ll_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16ll_BFu16ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16ll_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16ll_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16ll_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16ll_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFu16ll_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16ll_BFu16ll_BFu16ll, BFs16ll_BFu16ll_BFu16ll_BFu16ll)
//============================================================================


struct  BFs16ll_BFu16ll_BFu16ll_BFu16s  {
  signed __tsi64 v1:16;
  __tsu64 v2:16;
  __tsu64 v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16ll_BFu16ll_BFu16ll_BFu16s) C1{ FL:16 FL:16 FL:16 Fs:16}



static void Test_BFs16ll_BFu16ll_BFu16ll_BFu16s()
{
  {
    init_simple_test("BFs16ll_BFu16ll_BFu16ll_BFu16s");
    static STRUCT_IF_C BFs16ll_BFu16ll_BFu16ll_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16ll_BFu16ll_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16ll_BFu16ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16ll_BFu16ll_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFu16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16ll_BFu16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFu16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16ll_BFu16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFu16ll_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16ll_BFu16ll_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFu16ll_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16ll_BFu16ll_BFu16s, BFs16ll_BFu16ll_BFu16ll_BFu16s)
//============================================================================


struct  BFs16ll_BFu16ll_BFu16s  {
  signed __tsi64 v1:16;
  __tsu64 v2:16;
  unsigned short v3:16;
};
//SIG(1 BFs16ll_BFu16ll_BFu16s) C1{ FL:16 FL:16 Fs:16}



static void Test_BFs16ll_BFu16ll_BFu16s()
{
  {
    init_simple_test("BFs16ll_BFu16ll_BFu16s");
    static STRUCT_IF_C BFs16ll_BFu16ll_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16ll_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16ll_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16ll_BFu16s, BFs16ll_BFu16ll_BFu16s)
//============================================================================


struct  BFs16ll_BFu16ll_BFu16s_BFs16i  {
  signed __tsi64 v1:16;
  __tsu64 v2:16;
  unsigned short v3:16;
  signed int v4:16;
};
//SIG(1 BFs16ll_BFu16ll_BFu16s_BFs16i) C1{ FL:16 FL:16 Fs:16 Fi:16}



static void Test_BFs16ll_BFu16ll_BFu16s_BFs16i()
{
  {
    init_simple_test("BFs16ll_BFu16ll_BFu16s_BFs16i");
    static STRUCT_IF_C BFs16ll_BFu16ll_BFu16s_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16ll_BFu16s_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16ll_BFu16s_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16ll_BFu16s_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFu16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16ll_BFu16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFu16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16ll_BFu16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFu16s_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16ll_BFu16s_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFu16s_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16ll_BFu16s_BFs16i, BFs16ll_BFu16ll_BFu16s_BFs16i)
//============================================================================


struct  BFs16ll_BFu16ll_BFu16s_BFs16ll  {
  signed __tsi64 v1:16;
  __tsu64 v2:16;
  unsigned short v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16ll_BFu16ll_BFu16s_BFs16ll) C1{ FL:16 FL:16 Fs:16 FL:16}



static void Test_BFs16ll_BFu16ll_BFu16s_BFs16ll()
{
  {
    init_simple_test("BFs16ll_BFu16ll_BFu16s_BFs16ll");
    static STRUCT_IF_C BFs16ll_BFu16ll_BFu16s_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16ll_BFu16s_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16ll_BFu16s_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16ll_BFu16s_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFu16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16ll_BFu16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFu16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16ll_BFu16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFu16s_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16ll_BFu16s_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFu16s_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16ll_BFu16s_BFs16ll, BFs16ll_BFu16ll_BFu16s_BFs16ll)
//============================================================================


struct  BFs16ll_BFu16ll_BFu16s_BFs16s  {
  signed __tsi64 v1:16;
  __tsu64 v2:16;
  unsigned short v3:16;
  signed short v4:16;
};
//SIG(1 BFs16ll_BFu16ll_BFu16s_BFs16s) C1{ FL:16 FL:16 Fs:16 Fs:16}



static void Test_BFs16ll_BFu16ll_BFu16s_BFs16s()
{
  {
    init_simple_test("BFs16ll_BFu16ll_BFu16s_BFs16s");
    static STRUCT_IF_C BFs16ll_BFu16ll_BFu16s_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16ll_BFu16s_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16ll_BFu16s_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16ll_BFu16s_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFu16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16ll_BFu16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFu16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16ll_BFu16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFu16s_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16ll_BFu16s_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFu16s_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16ll_BFu16s_BFs16s, BFs16ll_BFu16ll_BFu16s_BFs16s)
//============================================================================


struct  BFs16ll_BFu16ll_BFu16s_BFu16i  {
  signed __tsi64 v1:16;
  __tsu64 v2:16;
  unsigned short v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16ll_BFu16ll_BFu16s_BFu16i) C1{ FL:16 FL:16 Fs:16 Fi:16}



static void Test_BFs16ll_BFu16ll_BFu16s_BFu16i()
{
  {
    init_simple_test("BFs16ll_BFu16ll_BFu16s_BFu16i");
    static STRUCT_IF_C BFs16ll_BFu16ll_BFu16s_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16ll_BFu16s_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16ll_BFu16s_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16ll_BFu16s_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFu16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16ll_BFu16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFu16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16ll_BFu16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFu16s_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16ll_BFu16s_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFu16s_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16ll_BFu16s_BFu16i, BFs16ll_BFu16ll_BFu16s_BFu16i)
//============================================================================


struct  BFs16ll_BFu16ll_BFu16s_BFu16ll  {
  signed __tsi64 v1:16;
  __tsu64 v2:16;
  unsigned short v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16ll_BFu16ll_BFu16s_BFu16ll) C1{ FL:16 FL:16 Fs:16 FL:16}



static void Test_BFs16ll_BFu16ll_BFu16s_BFu16ll()
{
  {
    init_simple_test("BFs16ll_BFu16ll_BFu16s_BFu16ll");
    static STRUCT_IF_C BFs16ll_BFu16ll_BFu16s_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16ll_BFu16s_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16ll_BFu16s_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16ll_BFu16s_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFu16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16ll_BFu16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFu16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16ll_BFu16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFu16s_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16ll_BFu16s_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFu16s_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16ll_BFu16s_BFu16ll, BFs16ll_BFu16ll_BFu16s_BFu16ll)
//============================================================================


struct  BFs16ll_BFu16ll_BFu16s_BFu16s  {
  signed __tsi64 v1:16;
  __tsu64 v2:16;
  unsigned short v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16ll_BFu16ll_BFu16s_BFu16s) C1{ FL:16 FL:16 Fs:16 Fs:16}



static void Test_BFs16ll_BFu16ll_BFu16s_BFu16s()
{
  {
    init_simple_test("BFs16ll_BFu16ll_BFu16s_BFu16s");
    static STRUCT_IF_C BFs16ll_BFu16ll_BFu16s_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16ll_BFu16s_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16ll_BFu16s_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16ll_BFu16s_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16ll_BFu16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16ll_BFu16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFu16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16ll_BFu16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFu16s_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16ll_BFu16s_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16ll_BFu16s_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16ll_BFu16s_BFu16s, BFs16ll_BFu16ll_BFu16s_BFu16s)
//============================================================================


struct  BFs16ll_BFu16s  {
  signed __tsi64 v1:16;
  unsigned short v2:16;
};
//SIG(1 BFs16ll_BFu16s) C1{ FL:16 Fs:16}



static void Test_BFs16ll_BFu16s()
{
  {
    init_simple_test("BFs16ll_BFu16s");
    static STRUCT_IF_C BFs16ll_BFu16s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs16ll_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16s, BFs16ll_BFu16s)
//============================================================================


struct  BFs16ll_BFu16s_BFs16i  {
  signed __tsi64 v1:16;
  unsigned short v2:16;
  signed int v3:16;
};
//SIG(1 BFs16ll_BFu16s_BFs16i) C1{ FL:16 Fs:16 Fi:16}



static void Test_BFs16ll_BFu16s_BFs16i()
{
  {
    init_simple_test("BFs16ll_BFu16s_BFs16i");
    static STRUCT_IF_C BFs16ll_BFu16s_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16s_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16s_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16s_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16s_BFs16i, BFs16ll_BFu16s_BFs16i)
//============================================================================


struct  BFs16ll_BFu16s_BFs16i_BFs16i  {
  signed __tsi64 v1:16;
  unsigned short v2:16;
  signed int v3:16;
  signed int v4:16;
};
//SIG(1 BFs16ll_BFu16s_BFs16i_BFs16i) C1{ FL:16 Fs:16 Fi:16 Fi:16}



static void Test_BFs16ll_BFu16s_BFs16i_BFs16i()
{
  {
    init_simple_test("BFs16ll_BFu16s_BFs16i_BFs16i");
    static STRUCT_IF_C BFs16ll_BFu16s_BFs16i_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16s_BFs16i_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16s_BFs16i_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16s_BFs16i_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFs16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16s_BFs16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFs16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16s_BFs16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFs16i_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16s_BFs16i_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFs16i_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16s_BFs16i_BFs16i, BFs16ll_BFu16s_BFs16i_BFs16i)
//============================================================================


struct  BFs16ll_BFu16s_BFs16i_BFs16ll  {
  signed __tsi64 v1:16;
  unsigned short v2:16;
  signed int v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16ll_BFu16s_BFs16i_BFs16ll) C1{ FL:16 Fs:16 Fi:16 FL:16}



static void Test_BFs16ll_BFu16s_BFs16i_BFs16ll()
{
  {
    init_simple_test("BFs16ll_BFu16s_BFs16i_BFs16ll");
    static STRUCT_IF_C BFs16ll_BFu16s_BFs16i_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16s_BFs16i_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16s_BFs16i_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16s_BFs16i_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFs16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16s_BFs16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFs16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16s_BFs16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFs16i_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16s_BFs16i_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFs16i_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16s_BFs16i_BFs16ll, BFs16ll_BFu16s_BFs16i_BFs16ll)
//============================================================================


struct  BFs16ll_BFu16s_BFs16i_BFs16s  {
  signed __tsi64 v1:16;
  unsigned short v2:16;
  signed int v3:16;
  signed short v4:16;
};
//SIG(1 BFs16ll_BFu16s_BFs16i_BFs16s) C1{ FL:16 Fs:16 Fi:16 Fs:16}



static void Test_BFs16ll_BFu16s_BFs16i_BFs16s()
{
  {
    init_simple_test("BFs16ll_BFu16s_BFs16i_BFs16s");
    static STRUCT_IF_C BFs16ll_BFu16s_BFs16i_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16s_BFs16i_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16s_BFs16i_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16s_BFs16i_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFs16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16s_BFs16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFs16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16s_BFs16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFs16i_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16s_BFs16i_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFs16i_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16s_BFs16i_BFs16s, BFs16ll_BFu16s_BFs16i_BFs16s)
//============================================================================


struct  BFs16ll_BFu16s_BFs16i_BFu16i  {
  signed __tsi64 v1:16;
  unsigned short v2:16;
  signed int v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16ll_BFu16s_BFs16i_BFu16i) C1{ FL:16 Fs:16 Fi:16 Fi:16}



static void Test_BFs16ll_BFu16s_BFs16i_BFu16i()
{
  {
    init_simple_test("BFs16ll_BFu16s_BFs16i_BFu16i");
    static STRUCT_IF_C BFs16ll_BFu16s_BFs16i_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16s_BFs16i_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16s_BFs16i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16s_BFs16i_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFs16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16s_BFs16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFs16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16s_BFs16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFs16i_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16s_BFs16i_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFs16i_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16s_BFs16i_BFu16i, BFs16ll_BFu16s_BFs16i_BFu16i)
//============================================================================


struct  BFs16ll_BFu16s_BFs16i_BFu16ll  {
  signed __tsi64 v1:16;
  unsigned short v2:16;
  signed int v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16ll_BFu16s_BFs16i_BFu16ll) C1{ FL:16 Fs:16 Fi:16 FL:16}



static void Test_BFs16ll_BFu16s_BFs16i_BFu16ll()
{
  {
    init_simple_test("BFs16ll_BFu16s_BFs16i_BFu16ll");
    static STRUCT_IF_C BFs16ll_BFu16s_BFs16i_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16s_BFs16i_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16s_BFs16i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16s_BFs16i_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFs16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16s_BFs16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFs16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16s_BFs16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFs16i_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16s_BFs16i_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFs16i_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16s_BFs16i_BFu16ll, BFs16ll_BFu16s_BFs16i_BFu16ll)
//============================================================================


struct  BFs16ll_BFu16s_BFs16i_BFu16s  {
  signed __tsi64 v1:16;
  unsigned short v2:16;
  signed int v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16ll_BFu16s_BFs16i_BFu16s) C1{ FL:16 Fs:16 Fi:16 Fs:16}



static void Test_BFs16ll_BFu16s_BFs16i_BFu16s()
{
  {
    init_simple_test("BFs16ll_BFu16s_BFs16i_BFu16s");
    static STRUCT_IF_C BFs16ll_BFu16s_BFs16i_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16s_BFs16i_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16s_BFs16i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16s_BFs16i_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFs16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16s_BFs16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFs16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16s_BFs16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFs16i_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16s_BFs16i_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFs16i_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16s_BFs16i_BFu16s, BFs16ll_BFu16s_BFs16i_BFu16s)
//============================================================================


struct  BFs16ll_BFu16s_BFs16ll  {
  signed __tsi64 v1:16;
  unsigned short v2:16;
  signed __tsi64 v3:16;
};
//SIG(1 BFs16ll_BFu16s_BFs16ll) C1{ FL:16 Fs:16 FL:16}



static void Test_BFs16ll_BFu16s_BFs16ll()
{
  {
    init_simple_test("BFs16ll_BFu16s_BFs16ll");
    static STRUCT_IF_C BFs16ll_BFu16s_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16s_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16s_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16s_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16s_BFs16ll, BFs16ll_BFu16s_BFs16ll)
//============================================================================


struct  BFs16ll_BFu16s_BFs16ll_BFs16i  {
  signed __tsi64 v1:16;
  unsigned short v2:16;
  signed __tsi64 v3:16;
  signed int v4:16;
};
//SIG(1 BFs16ll_BFu16s_BFs16ll_BFs16i) C1{ FL:16 Fs:16 FL:16 Fi:16}



static void Test_BFs16ll_BFu16s_BFs16ll_BFs16i()
{
  {
    init_simple_test("BFs16ll_BFu16s_BFs16ll_BFs16i");
    static STRUCT_IF_C BFs16ll_BFu16s_BFs16ll_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16s_BFs16ll_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16s_BFs16ll_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16s_BFs16ll_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFs16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16s_BFs16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFs16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16s_BFs16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFs16ll_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16s_BFs16ll_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFs16ll_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16s_BFs16ll_BFs16i, BFs16ll_BFu16s_BFs16ll_BFs16i)
//============================================================================


struct  BFs16ll_BFu16s_BFs16ll_BFs16ll  {
  signed __tsi64 v1:16;
  unsigned short v2:16;
  signed __tsi64 v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16ll_BFu16s_BFs16ll_BFs16ll) C1{ FL:16 Fs:16 FL:16 FL:16}



static void Test_BFs16ll_BFu16s_BFs16ll_BFs16ll()
{
  {
    init_simple_test("BFs16ll_BFu16s_BFs16ll_BFs16ll");
    static STRUCT_IF_C BFs16ll_BFu16s_BFs16ll_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16s_BFs16ll_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16s_BFs16ll_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16s_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16s_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16s_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16s_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFs16ll_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16s_BFs16ll_BFs16ll, BFs16ll_BFu16s_BFs16ll_BFs16ll)
//============================================================================


struct  BFs16ll_BFu16s_BFs16ll_BFs16s  {
  signed __tsi64 v1:16;
  unsigned short v2:16;
  signed __tsi64 v3:16;
  signed short v4:16;
};
//SIG(1 BFs16ll_BFu16s_BFs16ll_BFs16s) C1{ FL:16 Fs:16 FL:16 Fs:16}



static void Test_BFs16ll_BFu16s_BFs16ll_BFs16s()
{
  {
    init_simple_test("BFs16ll_BFu16s_BFs16ll_BFs16s");
    static STRUCT_IF_C BFs16ll_BFu16s_BFs16ll_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16s_BFs16ll_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16s_BFs16ll_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16s_BFs16ll_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFs16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16s_BFs16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFs16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16s_BFs16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFs16ll_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16s_BFs16ll_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFs16ll_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16s_BFs16ll_BFs16s, BFs16ll_BFu16s_BFs16ll_BFs16s)
//============================================================================


struct  BFs16ll_BFu16s_BFs16ll_BFu16i  {
  signed __tsi64 v1:16;
  unsigned short v2:16;
  signed __tsi64 v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16ll_BFu16s_BFs16ll_BFu16i) C1{ FL:16 Fs:16 FL:16 Fi:16}



static void Test_BFs16ll_BFu16s_BFs16ll_BFu16i()
{
  {
    init_simple_test("BFs16ll_BFu16s_BFs16ll_BFu16i");
    static STRUCT_IF_C BFs16ll_BFu16s_BFs16ll_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16s_BFs16ll_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16s_BFs16ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16s_BFs16ll_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFs16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16s_BFs16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFs16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16s_BFs16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFs16ll_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16s_BFs16ll_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFs16ll_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16s_BFs16ll_BFu16i, BFs16ll_BFu16s_BFs16ll_BFu16i)
//============================================================================


struct  BFs16ll_BFu16s_BFs16ll_BFu16ll  {
  signed __tsi64 v1:16;
  unsigned short v2:16;
  signed __tsi64 v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16ll_BFu16s_BFs16ll_BFu16ll) C1{ FL:16 Fs:16 FL:16 FL:16}



static void Test_BFs16ll_BFu16s_BFs16ll_BFu16ll()
{
  {
    init_simple_test("BFs16ll_BFu16s_BFs16ll_BFu16ll");
    static STRUCT_IF_C BFs16ll_BFu16s_BFs16ll_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16s_BFs16ll_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16s_BFs16ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16s_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16s_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16s_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16s_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFs16ll_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16s_BFs16ll_BFu16ll, BFs16ll_BFu16s_BFs16ll_BFu16ll)
//============================================================================


struct  BFs16ll_BFu16s_BFs16ll_BFu16s  {
  signed __tsi64 v1:16;
  unsigned short v2:16;
  signed __tsi64 v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16ll_BFu16s_BFs16ll_BFu16s) C1{ FL:16 Fs:16 FL:16 Fs:16}



static void Test_BFs16ll_BFu16s_BFs16ll_BFu16s()
{
  {
    init_simple_test("BFs16ll_BFu16s_BFs16ll_BFu16s");
    static STRUCT_IF_C BFs16ll_BFu16s_BFs16ll_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16s_BFs16ll_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16s_BFs16ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16s_BFs16ll_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFs16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16s_BFs16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFs16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16s_BFs16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFs16ll_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16s_BFs16ll_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFs16ll_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16s_BFs16ll_BFu16s, BFs16ll_BFu16s_BFs16ll_BFu16s)
//============================================================================


struct  BFs16ll_BFu16s_BFs16s  {
  signed __tsi64 v1:16;
  unsigned short v2:16;
  signed short v3:16;
};
//SIG(1 BFs16ll_BFu16s_BFs16s) C1{ FL:16 Fs:16 Fs:16}



static void Test_BFs16ll_BFu16s_BFs16s()
{
  {
    init_simple_test("BFs16ll_BFu16s_BFs16s");
    static STRUCT_IF_C BFs16ll_BFu16s_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16s_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16s_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16s_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16s_BFs16s, BFs16ll_BFu16s_BFs16s)
//============================================================================


struct  BFs16ll_BFu16s_BFs16s_BFs16i  {
  signed __tsi64 v1:16;
  unsigned short v2:16;
  signed short v3:16;
  signed int v4:16;
};
//SIG(1 BFs16ll_BFu16s_BFs16s_BFs16i) C1{ FL:16 Fs:16 Fs:16 Fi:16}



static void Test_BFs16ll_BFu16s_BFs16s_BFs16i()
{
  {
    init_simple_test("BFs16ll_BFu16s_BFs16s_BFs16i");
    static STRUCT_IF_C BFs16ll_BFu16s_BFs16s_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16s_BFs16s_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16s_BFs16s_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16s_BFs16s_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFs16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16s_BFs16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFs16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16s_BFs16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFs16s_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16s_BFs16s_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFs16s_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16s_BFs16s_BFs16i, BFs16ll_BFu16s_BFs16s_BFs16i)
//============================================================================


struct  BFs16ll_BFu16s_BFs16s_BFs16ll  {
  signed __tsi64 v1:16;
  unsigned short v2:16;
  signed short v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16ll_BFu16s_BFs16s_BFs16ll) C1{ FL:16 Fs:16 Fs:16 FL:16}



static void Test_BFs16ll_BFu16s_BFs16s_BFs16ll()
{
  {
    init_simple_test("BFs16ll_BFu16s_BFs16s_BFs16ll");
    static STRUCT_IF_C BFs16ll_BFu16s_BFs16s_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16s_BFs16s_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16s_BFs16s_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16s_BFs16s_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFs16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16s_BFs16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFs16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16s_BFs16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFs16s_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16s_BFs16s_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFs16s_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16s_BFs16s_BFs16ll, BFs16ll_BFu16s_BFs16s_BFs16ll)
//============================================================================


struct  BFs16ll_BFu16s_BFs16s_BFs16s  {
  signed __tsi64 v1:16;
  unsigned short v2:16;
  signed short v3:16;
  signed short v4:16;
};
//SIG(1 BFs16ll_BFu16s_BFs16s_BFs16s) C1{ FL:16 Fs:16 Fs:16 Fs:16}



static void Test_BFs16ll_BFu16s_BFs16s_BFs16s()
{
  {
    init_simple_test("BFs16ll_BFu16s_BFs16s_BFs16s");
    static STRUCT_IF_C BFs16ll_BFu16s_BFs16s_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16s_BFs16s_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16s_BFs16s_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16s_BFs16s_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFs16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16s_BFs16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFs16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16s_BFs16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFs16s_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16s_BFs16s_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFs16s_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16s_BFs16s_BFs16s, BFs16ll_BFu16s_BFs16s_BFs16s)
//============================================================================


struct  BFs16ll_BFu16s_BFs16s_BFu16i  {
  signed __tsi64 v1:16;
  unsigned short v2:16;
  signed short v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16ll_BFu16s_BFs16s_BFu16i) C1{ FL:16 Fs:16 Fs:16 Fi:16}



static void Test_BFs16ll_BFu16s_BFs16s_BFu16i()
{
  {
    init_simple_test("BFs16ll_BFu16s_BFs16s_BFu16i");
    static STRUCT_IF_C BFs16ll_BFu16s_BFs16s_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16s_BFs16s_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16s_BFs16s_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16s_BFs16s_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFs16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16s_BFs16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFs16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16s_BFs16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFs16s_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16s_BFs16s_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFs16s_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16s_BFs16s_BFu16i, BFs16ll_BFu16s_BFs16s_BFu16i)
//============================================================================


struct  BFs16ll_BFu16s_BFs16s_BFu16ll  {
  signed __tsi64 v1:16;
  unsigned short v2:16;
  signed short v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16ll_BFu16s_BFs16s_BFu16ll) C1{ FL:16 Fs:16 Fs:16 FL:16}



static void Test_BFs16ll_BFu16s_BFs16s_BFu16ll()
{
  {
    init_simple_test("BFs16ll_BFu16s_BFs16s_BFu16ll");
    static STRUCT_IF_C BFs16ll_BFu16s_BFs16s_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16s_BFs16s_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16s_BFs16s_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16s_BFs16s_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFs16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16s_BFs16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFs16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16s_BFs16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFs16s_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16s_BFs16s_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFs16s_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16s_BFs16s_BFu16ll, BFs16ll_BFu16s_BFs16s_BFu16ll)
//============================================================================


struct  BFs16ll_BFu16s_BFs16s_BFu16s  {
  signed __tsi64 v1:16;
  unsigned short v2:16;
  signed short v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16ll_BFu16s_BFs16s_BFu16s) C1{ FL:16 Fs:16 Fs:16 Fs:16}



static void Test_BFs16ll_BFu16s_BFs16s_BFu16s()
{
  {
    init_simple_test("BFs16ll_BFu16s_BFs16s_BFu16s");
    static STRUCT_IF_C BFs16ll_BFu16s_BFs16s_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16s_BFs16s_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16s_BFs16s_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16s_BFs16s_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFs16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16s_BFs16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFs16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16s_BFs16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFs16s_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16s_BFs16s_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFs16s_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16s_BFs16s_BFu16s, BFs16ll_BFu16s_BFs16s_BFu16s)
//============================================================================


struct  BFs16ll_BFu16s_BFu16i  {
  signed __tsi64 v1:16;
  unsigned short v2:16;
  unsigned int v3:16;
};
//SIG(1 BFs16ll_BFu16s_BFu16i) C1{ FL:16 Fs:16 Fi:16}



static void Test_BFs16ll_BFu16s_BFu16i()
{
  {
    init_simple_test("BFs16ll_BFu16s_BFu16i");
    static STRUCT_IF_C BFs16ll_BFu16s_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16s_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16s_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16s_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16s_BFu16i, BFs16ll_BFu16s_BFu16i)
//============================================================================


struct  BFs16ll_BFu16s_BFu16i_BFs16i  {
  signed __tsi64 v1:16;
  unsigned short v2:16;
  unsigned int v3:16;
  signed int v4:16;
};
//SIG(1 BFs16ll_BFu16s_BFu16i_BFs16i) C1{ FL:16 Fs:16 Fi:16 Fi:16}



static void Test_BFs16ll_BFu16s_BFu16i_BFs16i()
{
  {
    init_simple_test("BFs16ll_BFu16s_BFu16i_BFs16i");
    static STRUCT_IF_C BFs16ll_BFu16s_BFu16i_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16s_BFu16i_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16s_BFu16i_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16s_BFu16i_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFu16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16s_BFu16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFu16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16s_BFu16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFu16i_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16s_BFu16i_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFu16i_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16s_BFu16i_BFs16i, BFs16ll_BFu16s_BFu16i_BFs16i)
//============================================================================


struct  BFs16ll_BFu16s_BFu16i_BFs16ll  {
  signed __tsi64 v1:16;
  unsigned short v2:16;
  unsigned int v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16ll_BFu16s_BFu16i_BFs16ll) C1{ FL:16 Fs:16 Fi:16 FL:16}



static void Test_BFs16ll_BFu16s_BFu16i_BFs16ll()
{
  {
    init_simple_test("BFs16ll_BFu16s_BFu16i_BFs16ll");
    static STRUCT_IF_C BFs16ll_BFu16s_BFu16i_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16s_BFu16i_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16s_BFu16i_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16s_BFu16i_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFu16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16s_BFu16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFu16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16s_BFu16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFu16i_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16s_BFu16i_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFu16i_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16s_BFu16i_BFs16ll, BFs16ll_BFu16s_BFu16i_BFs16ll)
//============================================================================


struct  BFs16ll_BFu16s_BFu16i_BFs16s  {
  signed __tsi64 v1:16;
  unsigned short v2:16;
  unsigned int v3:16;
  signed short v4:16;
};
//SIG(1 BFs16ll_BFu16s_BFu16i_BFs16s) C1{ FL:16 Fs:16 Fi:16 Fs:16}



static void Test_BFs16ll_BFu16s_BFu16i_BFs16s()
{
  {
    init_simple_test("BFs16ll_BFu16s_BFu16i_BFs16s");
    static STRUCT_IF_C BFs16ll_BFu16s_BFu16i_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16s_BFu16i_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16s_BFu16i_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16s_BFu16i_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFu16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16s_BFu16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFu16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16s_BFu16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFu16i_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16s_BFu16i_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFu16i_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16s_BFu16i_BFs16s, BFs16ll_BFu16s_BFu16i_BFs16s)
//============================================================================


struct  BFs16ll_BFu16s_BFu16i_BFu16i  {
  signed __tsi64 v1:16;
  unsigned short v2:16;
  unsigned int v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16ll_BFu16s_BFu16i_BFu16i) C1{ FL:16 Fs:16 Fi:16 Fi:16}



static void Test_BFs16ll_BFu16s_BFu16i_BFu16i()
{
  {
    init_simple_test("BFs16ll_BFu16s_BFu16i_BFu16i");
    static STRUCT_IF_C BFs16ll_BFu16s_BFu16i_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16s_BFu16i_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16s_BFu16i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16s_BFu16i_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFu16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16s_BFu16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFu16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16s_BFu16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFu16i_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16s_BFu16i_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFu16i_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16s_BFu16i_BFu16i, BFs16ll_BFu16s_BFu16i_BFu16i)
//============================================================================


struct  BFs16ll_BFu16s_BFu16i_BFu16ll  {
  signed __tsi64 v1:16;
  unsigned short v2:16;
  unsigned int v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16ll_BFu16s_BFu16i_BFu16ll) C1{ FL:16 Fs:16 Fi:16 FL:16}



static void Test_BFs16ll_BFu16s_BFu16i_BFu16ll()
{
  {
    init_simple_test("BFs16ll_BFu16s_BFu16i_BFu16ll");
    static STRUCT_IF_C BFs16ll_BFu16s_BFu16i_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16s_BFu16i_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16s_BFu16i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16s_BFu16i_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFu16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16s_BFu16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFu16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16s_BFu16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFu16i_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16s_BFu16i_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFu16i_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16s_BFu16i_BFu16ll, BFs16ll_BFu16s_BFu16i_BFu16ll)
//============================================================================


struct  BFs16ll_BFu16s_BFu16i_BFu16s  {
  signed __tsi64 v1:16;
  unsigned short v2:16;
  unsigned int v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16ll_BFu16s_BFu16i_BFu16s) C1{ FL:16 Fs:16 Fi:16 Fs:16}



static void Test_BFs16ll_BFu16s_BFu16i_BFu16s()
{
  {
    init_simple_test("BFs16ll_BFu16s_BFu16i_BFu16s");
    static STRUCT_IF_C BFs16ll_BFu16s_BFu16i_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16s_BFu16i_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16s_BFu16i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16s_BFu16i_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFu16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16s_BFu16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFu16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16s_BFu16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFu16i_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16s_BFu16i_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFu16i_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16s_BFu16i_BFu16s, BFs16ll_BFu16s_BFu16i_BFu16s)
//============================================================================


struct  BFs16ll_BFu16s_BFu16ll  {
  signed __tsi64 v1:16;
  unsigned short v2:16;
  __tsu64 v3:16;
};
//SIG(1 BFs16ll_BFu16s_BFu16ll) C1{ FL:16 Fs:16 FL:16}



static void Test_BFs16ll_BFu16s_BFu16ll()
{
  {
    init_simple_test("BFs16ll_BFu16s_BFu16ll");
    static STRUCT_IF_C BFs16ll_BFu16s_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16s_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16s_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16s_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16s_BFu16ll, BFs16ll_BFu16s_BFu16ll)
//============================================================================


struct  BFs16ll_BFu16s_BFu16ll_BFs16i  {
  signed __tsi64 v1:16;
  unsigned short v2:16;
  __tsu64 v3:16;
  signed int v4:16;
};
//SIG(1 BFs16ll_BFu16s_BFu16ll_BFs16i) C1{ FL:16 Fs:16 FL:16 Fi:16}



static void Test_BFs16ll_BFu16s_BFu16ll_BFs16i()
{
  {
    init_simple_test("BFs16ll_BFu16s_BFu16ll_BFs16i");
    static STRUCT_IF_C BFs16ll_BFu16s_BFu16ll_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16s_BFu16ll_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16s_BFu16ll_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16s_BFu16ll_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFu16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16s_BFu16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFu16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16s_BFu16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFu16ll_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16s_BFu16ll_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFu16ll_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16s_BFu16ll_BFs16i, BFs16ll_BFu16s_BFu16ll_BFs16i)
//============================================================================


struct  BFs16ll_BFu16s_BFu16ll_BFs16ll  {
  signed __tsi64 v1:16;
  unsigned short v2:16;
  __tsu64 v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16ll_BFu16s_BFu16ll_BFs16ll) C1{ FL:16 Fs:16 FL:16 FL:16}



static void Test_BFs16ll_BFu16s_BFu16ll_BFs16ll()
{
  {
    init_simple_test("BFs16ll_BFu16s_BFu16ll_BFs16ll");
    static STRUCT_IF_C BFs16ll_BFu16s_BFu16ll_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16s_BFu16ll_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16s_BFu16ll_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16s_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16s_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16s_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16s_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFu16ll_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16s_BFu16ll_BFs16ll, BFs16ll_BFu16s_BFu16ll_BFs16ll)
//============================================================================


struct  BFs16ll_BFu16s_BFu16ll_BFs16s  {
  signed __tsi64 v1:16;
  unsigned short v2:16;
  __tsu64 v3:16;
  signed short v4:16;
};
//SIG(1 BFs16ll_BFu16s_BFu16ll_BFs16s) C1{ FL:16 Fs:16 FL:16 Fs:16}



static void Test_BFs16ll_BFu16s_BFu16ll_BFs16s()
{
  {
    init_simple_test("BFs16ll_BFu16s_BFu16ll_BFs16s");
    static STRUCT_IF_C BFs16ll_BFu16s_BFu16ll_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16s_BFu16ll_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16s_BFu16ll_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16s_BFu16ll_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFu16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16s_BFu16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFu16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16s_BFu16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFu16ll_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16s_BFu16ll_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFu16ll_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16s_BFu16ll_BFs16s, BFs16ll_BFu16s_BFu16ll_BFs16s)
//============================================================================


struct  BFs16ll_BFu16s_BFu16ll_BFu16i  {
  signed __tsi64 v1:16;
  unsigned short v2:16;
  __tsu64 v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16ll_BFu16s_BFu16ll_BFu16i) C1{ FL:16 Fs:16 FL:16 Fi:16}



static void Test_BFs16ll_BFu16s_BFu16ll_BFu16i()
{
  {
    init_simple_test("BFs16ll_BFu16s_BFu16ll_BFu16i");
    static STRUCT_IF_C BFs16ll_BFu16s_BFu16ll_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16s_BFu16ll_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16s_BFu16ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16s_BFu16ll_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFu16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16s_BFu16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFu16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16s_BFu16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFu16ll_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16s_BFu16ll_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFu16ll_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16s_BFu16ll_BFu16i, BFs16ll_BFu16s_BFu16ll_BFu16i)
//============================================================================


struct  BFs16ll_BFu16s_BFu16ll_BFu16ll  {
  signed __tsi64 v1:16;
  unsigned short v2:16;
  __tsu64 v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16ll_BFu16s_BFu16ll_BFu16ll) C1{ FL:16 Fs:16 FL:16 FL:16}



static void Test_BFs16ll_BFu16s_BFu16ll_BFu16ll()
{
  {
    init_simple_test("BFs16ll_BFu16s_BFu16ll_BFu16ll");
    static STRUCT_IF_C BFs16ll_BFu16s_BFu16ll_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16s_BFu16ll_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16s_BFu16ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16s_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16s_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16s_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16s_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFu16ll_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16s_BFu16ll_BFu16ll, BFs16ll_BFu16s_BFu16ll_BFu16ll)
//============================================================================


struct  BFs16ll_BFu16s_BFu16ll_BFu16s  {
  signed __tsi64 v1:16;
  unsigned short v2:16;
  __tsu64 v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16ll_BFu16s_BFu16ll_BFu16s) C1{ FL:16 Fs:16 FL:16 Fs:16}



static void Test_BFs16ll_BFu16s_BFu16ll_BFu16s()
{
  {
    init_simple_test("BFs16ll_BFu16s_BFu16ll_BFu16s");
    static STRUCT_IF_C BFs16ll_BFu16s_BFu16ll_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16s_BFu16ll_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16s_BFu16ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16s_BFu16ll_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFu16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16s_BFu16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFu16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16s_BFu16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFu16ll_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16s_BFu16ll_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFu16ll_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16s_BFu16ll_BFu16s, BFs16ll_BFu16s_BFu16ll_BFu16s)
//============================================================================


struct  BFs16ll_BFu16s_BFu16s  {
  signed __tsi64 v1:16;
  unsigned short v2:16;
  unsigned short v3:16;
};
//SIG(1 BFs16ll_BFu16s_BFu16s) C1{ FL:16 Fs:16 Fs:16}



static void Test_BFs16ll_BFu16s_BFu16s()
{
  {
    init_simple_test("BFs16ll_BFu16s_BFu16s");
    static STRUCT_IF_C BFs16ll_BFu16s_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16s_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16s_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16s_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16s_BFu16s, BFs16ll_BFu16s_BFu16s)
//============================================================================


struct  BFs16ll_BFu16s_BFu16s_BFs16i  {
  signed __tsi64 v1:16;
  unsigned short v2:16;
  unsigned short v3:16;
  signed int v4:16;
};
//SIG(1 BFs16ll_BFu16s_BFu16s_BFs16i) C1{ FL:16 Fs:16 Fs:16 Fi:16}



static void Test_BFs16ll_BFu16s_BFu16s_BFs16i()
{
  {
    init_simple_test("BFs16ll_BFu16s_BFu16s_BFs16i");
    static STRUCT_IF_C BFs16ll_BFu16s_BFu16s_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16s_BFu16s_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16s_BFu16s_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16s_BFu16s_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFu16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16s_BFu16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFu16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16s_BFu16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFu16s_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16s_BFu16s_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFu16s_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16s_BFu16s_BFs16i, BFs16ll_BFu16s_BFu16s_BFs16i)
//============================================================================


struct  BFs16ll_BFu16s_BFu16s_BFs16ll  {
  signed __tsi64 v1:16;
  unsigned short v2:16;
  unsigned short v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16ll_BFu16s_BFu16s_BFs16ll) C1{ FL:16 Fs:16 Fs:16 FL:16}



static void Test_BFs16ll_BFu16s_BFu16s_BFs16ll()
{
  {
    init_simple_test("BFs16ll_BFu16s_BFu16s_BFs16ll");
    static STRUCT_IF_C BFs16ll_BFu16s_BFu16s_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16s_BFu16s_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16s_BFu16s_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16s_BFu16s_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFu16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16s_BFu16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFu16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16s_BFu16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFu16s_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16s_BFu16s_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFu16s_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16s_BFu16s_BFs16ll, BFs16ll_BFu16s_BFu16s_BFs16ll)
//============================================================================


struct  BFs16ll_BFu16s_BFu16s_BFs16s  {
  signed __tsi64 v1:16;
  unsigned short v2:16;
  unsigned short v3:16;
  signed short v4:16;
};
//SIG(1 BFs16ll_BFu16s_BFu16s_BFs16s) C1{ FL:16 Fs:16 Fs:16 Fs:16}



static void Test_BFs16ll_BFu16s_BFu16s_BFs16s()
{
  {
    init_simple_test("BFs16ll_BFu16s_BFu16s_BFs16s");
    static STRUCT_IF_C BFs16ll_BFu16s_BFu16s_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16s_BFu16s_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16s_BFu16s_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16s_BFu16s_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFu16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16s_BFu16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFu16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16s_BFu16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFu16s_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16s_BFu16s_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFu16s_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16s_BFu16s_BFs16s, BFs16ll_BFu16s_BFu16s_BFs16s)
//============================================================================


struct  BFs16ll_BFu16s_BFu16s_BFu16i  {
  signed __tsi64 v1:16;
  unsigned short v2:16;
  unsigned short v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16ll_BFu16s_BFu16s_BFu16i) C1{ FL:16 Fs:16 Fs:16 Fi:16}



static void Test_BFs16ll_BFu16s_BFu16s_BFu16i()
{
  {
    init_simple_test("BFs16ll_BFu16s_BFu16s_BFu16i");
    static STRUCT_IF_C BFs16ll_BFu16s_BFu16s_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16s_BFu16s_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16s_BFu16s_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16s_BFu16s_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFu16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16s_BFu16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFu16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16s_BFu16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFu16s_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16s_BFu16s_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFu16s_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16s_BFu16s_BFu16i, BFs16ll_BFu16s_BFu16s_BFu16i)
//============================================================================


struct  BFs16ll_BFu16s_BFu16s_BFu16ll  {
  signed __tsi64 v1:16;
  unsigned short v2:16;
  unsigned short v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16ll_BFu16s_BFu16s_BFu16ll) C1{ FL:16 Fs:16 Fs:16 FL:16}



static void Test_BFs16ll_BFu16s_BFu16s_BFu16ll()
{
  {
    init_simple_test("BFs16ll_BFu16s_BFu16s_BFu16ll");
    static STRUCT_IF_C BFs16ll_BFu16s_BFu16s_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16s_BFu16s_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16s_BFu16s_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16s_BFu16s_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFu16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16s_BFu16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFu16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16s_BFu16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFu16s_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16s_BFu16s_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFu16s_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16s_BFu16s_BFu16ll, BFs16ll_BFu16s_BFu16s_BFu16ll)
//============================================================================


struct  BFs16ll_BFu16s_BFu16s_BFu16s  {
  signed __tsi64 v1:16;
  unsigned short v2:16;
  unsigned short v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16ll_BFu16s_BFu16s_BFu16s) C1{ FL:16 Fs:16 Fs:16 Fs:16}



static void Test_BFs16ll_BFu16s_BFu16s_BFu16s()
{
  {
    init_simple_test("BFs16ll_BFu16s_BFu16s_BFu16s");
    static STRUCT_IF_C BFs16ll_BFu16s_BFu16s_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16ll_BFu16s_BFu16s_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16ll_BFu16s_BFu16s_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16ll_BFu16s_BFu16s_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16ll_BFu16s_BFu16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16ll_BFu16s_BFu16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFu16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16ll_BFu16s_BFu16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFu16s_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16ll_BFu16s_BFu16s_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16ll_BFu16s_BFu16s_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16ll_BFu16s_BFu16s_BFu16s, BFs16ll_BFu16s_BFu16s_BFu16s)
//============================================================================


struct  BFs16s_BFs16i  {
  signed short v1:16;
  signed int v2:16;
};
//SIG(1 BFs16s_BFs16i) C1{ Fs:16 Fi:16}



static void Test_BFs16s_BFs16i()
{
  {
    init_simple_test("BFs16s_BFs16i");
    static STRUCT_IF_C BFs16s_BFs16i lv;
    check2(sizeof(lv), 4, "sizeof(BFs16s_BFs16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16s_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16i, BFs16s_BFs16i)
//============================================================================


struct  BFs16s_BFs16i_BFs16i  {
  signed short v1:16;
  signed int v2:16;
  signed int v3:16;
};
//SIG(1 BFs16s_BFs16i_BFs16i) C1{ Fs:16 Fi:16 Fi:16}



static void Test_BFs16s_BFs16i_BFs16i()
{
  {
    init_simple_test("BFs16s_BFs16i_BFs16i");
    static STRUCT_IF_C BFs16s_BFs16i_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16i_BFs16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16s_BFs16i_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16i_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16i_BFs16i, BFs16s_BFs16i_BFs16i)
//============================================================================


struct  BFs16s_BFs16i_BFs16i_BFs16i  {
  signed short v1:16;
  signed int v2:16;
  signed int v3:16;
  signed int v4:16;
};
//SIG(1 BFs16s_BFs16i_BFs16i_BFs16i) C1{ Fs:16 Fi:16 Fi:16 Fi:16}



static void Test_BFs16s_BFs16i_BFs16i_BFs16i()
{
  {
    init_simple_test("BFs16s_BFs16i_BFs16i_BFs16i");
    static STRUCT_IF_C BFs16s_BFs16i_BFs16i_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16i_BFs16i_BFs16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16s_BFs16i_BFs16i_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16i_BFs16i_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFs16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16i_BFs16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFs16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16i_BFs16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFs16i_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16i_BFs16i_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFs16i_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16i_BFs16i_BFs16i, BFs16s_BFs16i_BFs16i_BFs16i)
//============================================================================


struct  BFs16s_BFs16i_BFs16i_BFs16ll  {
  signed short v1:16;
  signed int v2:16;
  signed int v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16s_BFs16i_BFs16i_BFs16ll) C1{ Fs:16 Fi:16 Fi:16 FL:16}



static void Test_BFs16s_BFs16i_BFs16i_BFs16ll()
{
  {
    init_simple_test("BFs16s_BFs16i_BFs16i_BFs16ll");
    static STRUCT_IF_C BFs16s_BFs16i_BFs16i_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16i_BFs16i_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16i_BFs16i_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16i_BFs16i_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFs16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16i_BFs16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFs16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16i_BFs16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFs16i_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16i_BFs16i_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFs16i_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16i_BFs16i_BFs16ll, BFs16s_BFs16i_BFs16i_BFs16ll)
//============================================================================


struct  BFs16s_BFs16i_BFs16i_BFs16s  {
  signed short v1:16;
  signed int v2:16;
  signed int v3:16;
  signed short v4:16;
};
//SIG(1 BFs16s_BFs16i_BFs16i_BFs16s) C1{ Fs:16 Fi:16 Fi:16 Fs:16}



static void Test_BFs16s_BFs16i_BFs16i_BFs16s()
{
  {
    init_simple_test("BFs16s_BFs16i_BFs16i_BFs16s");
    static STRUCT_IF_C BFs16s_BFs16i_BFs16i_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16i_BFs16i_BFs16s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16s_BFs16i_BFs16i_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16i_BFs16i_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFs16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16i_BFs16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFs16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16i_BFs16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFs16i_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16i_BFs16i_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFs16i_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16i_BFs16i_BFs16s, BFs16s_BFs16i_BFs16i_BFs16s)
//============================================================================


struct  BFs16s_BFs16i_BFs16i_BFu16i  {
  signed short v1:16;
  signed int v2:16;
  signed int v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16s_BFs16i_BFs16i_BFu16i) C1{ Fs:16 Fi:16 Fi:16 Fi:16}



static void Test_BFs16s_BFs16i_BFs16i_BFu16i()
{
  {
    init_simple_test("BFs16s_BFs16i_BFs16i_BFu16i");
    static STRUCT_IF_C BFs16s_BFs16i_BFs16i_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16i_BFs16i_BFu16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16s_BFs16i_BFs16i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16i_BFs16i_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFs16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16i_BFs16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFs16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16i_BFs16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFs16i_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16i_BFs16i_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16i_BFs16i_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16i_BFs16i_BFu16i, BFs16s_BFs16i_BFs16i_BFu16i)
//============================================================================


struct  BFs16s_BFs16i_BFs16i_BFu16ll  {
  signed short v1:16;
  signed int v2:16;
  signed int v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16s_BFs16i_BFs16i_BFu16ll) C1{ Fs:16 Fi:16 Fi:16 FL:16}



static void Test_BFs16s_BFs16i_BFs16i_BFu16ll()
{
  {
    init_simple_test("BFs16s_BFs16i_BFs16i_BFu16ll");
    static STRUCT_IF_C BFs16s_BFs16i_BFs16i_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16i_BFs16i_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16i_BFs16i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16i_BFs16i_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFs16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16i_BFs16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFs16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16i_BFs16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFs16i_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16i_BFs16i_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16i_BFs16i_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16i_BFs16i_BFu16ll, BFs16s_BFs16i_BFs16i_BFu16ll)
//============================================================================


struct  BFs16s_BFs16i_BFs16i_BFu16s  {
  signed short v1:16;
  signed int v2:16;
  signed int v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16s_BFs16i_BFs16i_BFu16s) C1{ Fs:16 Fi:16 Fi:16 Fs:16}



static void Test_BFs16s_BFs16i_BFs16i_BFu16s()
{
  {
    init_simple_test("BFs16s_BFs16i_BFs16i_BFu16s");
    static STRUCT_IF_C BFs16s_BFs16i_BFs16i_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16i_BFs16i_BFu16s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16s_BFs16i_BFs16i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16i_BFs16i_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFs16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16i_BFs16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFs16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16i_BFs16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFs16i_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16i_BFs16i_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16i_BFs16i_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16i_BFs16i_BFu16s, BFs16s_BFs16i_BFs16i_BFu16s)
//============================================================================


struct  BFs16s_BFs16i_BFs16ll  {
  signed short v1:16;
  signed int v2:16;
  signed __tsi64 v3:16;
};
//SIG(1 BFs16s_BFs16i_BFs16ll) C1{ Fs:16 Fi:16 FL:16}



static void Test_BFs16s_BFs16i_BFs16ll()
{
  {
    init_simple_test("BFs16s_BFs16i_BFs16ll");
    static STRUCT_IF_C BFs16s_BFs16i_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16i_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16i_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16i_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16i_BFs16ll, BFs16s_BFs16i_BFs16ll)
//============================================================================


struct  BFs16s_BFs16i_BFs16ll_BFs16i  {
  signed short v1:16;
  signed int v2:16;
  signed __tsi64 v3:16;
  signed int v4:16;
};
//SIG(1 BFs16s_BFs16i_BFs16ll_BFs16i) C1{ Fs:16 Fi:16 FL:16 Fi:16}



static void Test_BFs16s_BFs16i_BFs16ll_BFs16i()
{
  {
    init_simple_test("BFs16s_BFs16i_BFs16ll_BFs16i");
    static STRUCT_IF_C BFs16s_BFs16i_BFs16ll_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16i_BFs16ll_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16i_BFs16ll_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16i_BFs16ll_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFs16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16i_BFs16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFs16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16i_BFs16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFs16ll_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16i_BFs16ll_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFs16ll_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16i_BFs16ll_BFs16i, BFs16s_BFs16i_BFs16ll_BFs16i)
//============================================================================


struct  BFs16s_BFs16i_BFs16ll_BFs16ll  {
  signed short v1:16;
  signed int v2:16;
  signed __tsi64 v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16s_BFs16i_BFs16ll_BFs16ll) C1{ Fs:16 Fi:16 FL:16 FL:16}



static void Test_BFs16s_BFs16i_BFs16ll_BFs16ll()
{
  {
    init_simple_test("BFs16s_BFs16i_BFs16ll_BFs16ll");
    static STRUCT_IF_C BFs16s_BFs16i_BFs16ll_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16i_BFs16ll_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16i_BFs16ll_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16i_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16i_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16i_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16i_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFs16ll_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16i_BFs16ll_BFs16ll, BFs16s_BFs16i_BFs16ll_BFs16ll)
//============================================================================


struct  BFs16s_BFs16i_BFs16ll_BFs16s  {
  signed short v1:16;
  signed int v2:16;
  signed __tsi64 v3:16;
  signed short v4:16;
};
//SIG(1 BFs16s_BFs16i_BFs16ll_BFs16s) C1{ Fs:16 Fi:16 FL:16 Fs:16}



static void Test_BFs16s_BFs16i_BFs16ll_BFs16s()
{
  {
    init_simple_test("BFs16s_BFs16i_BFs16ll_BFs16s");
    static STRUCT_IF_C BFs16s_BFs16i_BFs16ll_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16i_BFs16ll_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16i_BFs16ll_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16i_BFs16ll_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFs16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16i_BFs16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFs16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16i_BFs16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFs16ll_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16i_BFs16ll_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFs16ll_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16i_BFs16ll_BFs16s, BFs16s_BFs16i_BFs16ll_BFs16s)
//============================================================================


struct  BFs16s_BFs16i_BFs16ll_BFu16i  {
  signed short v1:16;
  signed int v2:16;
  signed __tsi64 v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16s_BFs16i_BFs16ll_BFu16i) C1{ Fs:16 Fi:16 FL:16 Fi:16}



static void Test_BFs16s_BFs16i_BFs16ll_BFu16i()
{
  {
    init_simple_test("BFs16s_BFs16i_BFs16ll_BFu16i");
    static STRUCT_IF_C BFs16s_BFs16i_BFs16ll_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16i_BFs16ll_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16i_BFs16ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16i_BFs16ll_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFs16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16i_BFs16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFs16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16i_BFs16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFs16ll_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16i_BFs16ll_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16i_BFs16ll_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16i_BFs16ll_BFu16i, BFs16s_BFs16i_BFs16ll_BFu16i)
//============================================================================


struct  BFs16s_BFs16i_BFs16ll_BFu16ll  {
  signed short v1:16;
  signed int v2:16;
  signed __tsi64 v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16s_BFs16i_BFs16ll_BFu16ll) C1{ Fs:16 Fi:16 FL:16 FL:16}



static void Test_BFs16s_BFs16i_BFs16ll_BFu16ll()
{
  {
    init_simple_test("BFs16s_BFs16i_BFs16ll_BFu16ll");
    static STRUCT_IF_C BFs16s_BFs16i_BFs16ll_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16i_BFs16ll_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16i_BFs16ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16i_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16i_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16i_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16i_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16i_BFs16ll_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16i_BFs16ll_BFu16ll, BFs16s_BFs16i_BFs16ll_BFu16ll)
//============================================================================


struct  BFs16s_BFs16i_BFs16ll_BFu16s  {
  signed short v1:16;
  signed int v2:16;
  signed __tsi64 v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16s_BFs16i_BFs16ll_BFu16s) C1{ Fs:16 Fi:16 FL:16 Fs:16}



static void Test_BFs16s_BFs16i_BFs16ll_BFu16s()
{
  {
    init_simple_test("BFs16s_BFs16i_BFs16ll_BFu16s");
    static STRUCT_IF_C BFs16s_BFs16i_BFs16ll_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16i_BFs16ll_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16i_BFs16ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16i_BFs16ll_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFs16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16i_BFs16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFs16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16i_BFs16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFs16ll_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16i_BFs16ll_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16i_BFs16ll_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16i_BFs16ll_BFu16s, BFs16s_BFs16i_BFs16ll_BFu16s)
//============================================================================


struct  BFs16s_BFs16i_BFs16s  {
  signed short v1:16;
  signed int v2:16;
  signed short v3:16;
};
//SIG(1 BFs16s_BFs16i_BFs16s) C1{ Fs:16 Fi:16 Fs:16}



static void Test_BFs16s_BFs16i_BFs16s()
{
  {
    init_simple_test("BFs16s_BFs16i_BFs16s");
    static STRUCT_IF_C BFs16s_BFs16i_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16i_BFs16s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16s_BFs16i_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16i_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16i_BFs16s, BFs16s_BFs16i_BFs16s)
//============================================================================


struct  BFs16s_BFs16i_BFs16s_BFs16i  {
  signed short v1:16;
  signed int v2:16;
  signed short v3:16;
  signed int v4:16;
};
//SIG(1 BFs16s_BFs16i_BFs16s_BFs16i) C1{ Fs:16 Fi:16 Fs:16 Fi:16}



static void Test_BFs16s_BFs16i_BFs16s_BFs16i()
{
  {
    init_simple_test("BFs16s_BFs16i_BFs16s_BFs16i");
    static STRUCT_IF_C BFs16s_BFs16i_BFs16s_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16i_BFs16s_BFs16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16s_BFs16i_BFs16s_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16i_BFs16s_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFs16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16i_BFs16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFs16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16i_BFs16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFs16s_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16i_BFs16s_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFs16s_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16i_BFs16s_BFs16i, BFs16s_BFs16i_BFs16s_BFs16i)
//============================================================================


struct  BFs16s_BFs16i_BFs16s_BFs16ll  {
  signed short v1:16;
  signed int v2:16;
  signed short v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16s_BFs16i_BFs16s_BFs16ll) C1{ Fs:16 Fi:16 Fs:16 FL:16}



static void Test_BFs16s_BFs16i_BFs16s_BFs16ll()
{
  {
    init_simple_test("BFs16s_BFs16i_BFs16s_BFs16ll");
    static STRUCT_IF_C BFs16s_BFs16i_BFs16s_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16i_BFs16s_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16i_BFs16s_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16i_BFs16s_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFs16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16i_BFs16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFs16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16i_BFs16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFs16s_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16i_BFs16s_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFs16s_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16i_BFs16s_BFs16ll, BFs16s_BFs16i_BFs16s_BFs16ll)
//============================================================================


struct  BFs16s_BFs16i_BFs16s_BFs16s  {
  signed short v1:16;
  signed int v2:16;
  signed short v3:16;
  signed short v4:16;
};
//SIG(1 BFs16s_BFs16i_BFs16s_BFs16s) C1{ Fs:16 Fi:16 Fs:16 Fs:16}



static void Test_BFs16s_BFs16i_BFs16s_BFs16s()
{
  {
    init_simple_test("BFs16s_BFs16i_BFs16s_BFs16s");
    static STRUCT_IF_C BFs16s_BFs16i_BFs16s_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16i_BFs16s_BFs16s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16s_BFs16i_BFs16s_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16i_BFs16s_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFs16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16i_BFs16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFs16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16i_BFs16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFs16s_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16i_BFs16s_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFs16s_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16i_BFs16s_BFs16s, BFs16s_BFs16i_BFs16s_BFs16s)
//============================================================================


struct  BFs16s_BFs16i_BFs16s_BFu16i  {
  signed short v1:16;
  signed int v2:16;
  signed short v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16s_BFs16i_BFs16s_BFu16i) C1{ Fs:16 Fi:16 Fs:16 Fi:16}



static void Test_BFs16s_BFs16i_BFs16s_BFu16i()
{
  {
    init_simple_test("BFs16s_BFs16i_BFs16s_BFu16i");
    static STRUCT_IF_C BFs16s_BFs16i_BFs16s_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16i_BFs16s_BFu16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16s_BFs16i_BFs16s_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16i_BFs16s_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFs16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16i_BFs16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFs16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16i_BFs16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFs16s_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16i_BFs16s_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16i_BFs16s_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16i_BFs16s_BFu16i, BFs16s_BFs16i_BFs16s_BFu16i)
//============================================================================


struct  BFs16s_BFs16i_BFs16s_BFu16ll  {
  signed short v1:16;
  signed int v2:16;
  signed short v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16s_BFs16i_BFs16s_BFu16ll) C1{ Fs:16 Fi:16 Fs:16 FL:16}



static void Test_BFs16s_BFs16i_BFs16s_BFu16ll()
{
  {
    init_simple_test("BFs16s_BFs16i_BFs16s_BFu16ll");
    static STRUCT_IF_C BFs16s_BFs16i_BFs16s_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16i_BFs16s_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16i_BFs16s_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16i_BFs16s_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFs16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16i_BFs16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFs16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16i_BFs16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFs16s_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16i_BFs16s_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16i_BFs16s_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16i_BFs16s_BFu16ll, BFs16s_BFs16i_BFs16s_BFu16ll)
//============================================================================


struct  BFs16s_BFs16i_BFs16s_BFu16s  {
  signed short v1:16;
  signed int v2:16;
  signed short v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16s_BFs16i_BFs16s_BFu16s) C1{ Fs:16 Fi:16 Fs:16 Fs:16}



static void Test_BFs16s_BFs16i_BFs16s_BFu16s()
{
  {
    init_simple_test("BFs16s_BFs16i_BFs16s_BFu16s");
    static STRUCT_IF_C BFs16s_BFs16i_BFs16s_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16i_BFs16s_BFu16s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16s_BFs16i_BFs16s_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16i_BFs16s_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFs16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16i_BFs16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFs16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16i_BFs16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFs16s_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16i_BFs16s_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16i_BFs16s_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16i_BFs16s_BFu16s, BFs16s_BFs16i_BFs16s_BFu16s)
//============================================================================


struct  BFs16s_BFs16i_BFu16i  {
  signed short v1:16;
  signed int v2:16;
  unsigned int v3:16;
};
//SIG(1 BFs16s_BFs16i_BFu16i) C1{ Fs:16 Fi:16 Fi:16}



static void Test_BFs16s_BFs16i_BFu16i()
{
  {
    init_simple_test("BFs16s_BFs16i_BFu16i");
    static STRUCT_IF_C BFs16s_BFs16i_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16i_BFu16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16s_BFs16i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16i_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16i_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16i_BFu16i, BFs16s_BFs16i_BFu16i)
//============================================================================


struct  BFs16s_BFs16i_BFu16i_BFs16i  {
  signed short v1:16;
  signed int v2:16;
  unsigned int v3:16;
  signed int v4:16;
};
//SIG(1 BFs16s_BFs16i_BFu16i_BFs16i) C1{ Fs:16 Fi:16 Fi:16 Fi:16}



static void Test_BFs16s_BFs16i_BFu16i_BFs16i()
{
  {
    init_simple_test("BFs16s_BFs16i_BFu16i_BFs16i");
    static STRUCT_IF_C BFs16s_BFs16i_BFu16i_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16i_BFu16i_BFs16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16s_BFs16i_BFu16i_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16i_BFu16i_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFu16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16i_BFu16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFu16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16i_BFu16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16i_BFu16i_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16i_BFu16i_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFu16i_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16i_BFu16i_BFs16i, BFs16s_BFs16i_BFu16i_BFs16i)
//============================================================================


struct  BFs16s_BFs16i_BFu16i_BFs16ll  {
  signed short v1:16;
  signed int v2:16;
  unsigned int v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16s_BFs16i_BFu16i_BFs16ll) C1{ Fs:16 Fi:16 Fi:16 FL:16}



static void Test_BFs16s_BFs16i_BFu16i_BFs16ll()
{
  {
    init_simple_test("BFs16s_BFs16i_BFu16i_BFs16ll");
    static STRUCT_IF_C BFs16s_BFs16i_BFu16i_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16i_BFu16i_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16i_BFu16i_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16i_BFu16i_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFu16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16i_BFu16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFu16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16i_BFu16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16i_BFu16i_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16i_BFu16i_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFu16i_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16i_BFu16i_BFs16ll, BFs16s_BFs16i_BFu16i_BFs16ll)
//============================================================================


struct  BFs16s_BFs16i_BFu16i_BFs16s  {
  signed short v1:16;
  signed int v2:16;
  unsigned int v3:16;
  signed short v4:16;
};
//SIG(1 BFs16s_BFs16i_BFu16i_BFs16s) C1{ Fs:16 Fi:16 Fi:16 Fs:16}



static void Test_BFs16s_BFs16i_BFu16i_BFs16s()
{
  {
    init_simple_test("BFs16s_BFs16i_BFu16i_BFs16s");
    static STRUCT_IF_C BFs16s_BFs16i_BFu16i_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16i_BFu16i_BFs16s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16s_BFs16i_BFu16i_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16i_BFu16i_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFu16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16i_BFu16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFu16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16i_BFu16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16i_BFu16i_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16i_BFu16i_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFu16i_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16i_BFu16i_BFs16s, BFs16s_BFs16i_BFu16i_BFs16s)
//============================================================================


struct  BFs16s_BFs16i_BFu16i_BFu16i  {
  signed short v1:16;
  signed int v2:16;
  unsigned int v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16s_BFs16i_BFu16i_BFu16i) C1{ Fs:16 Fi:16 Fi:16 Fi:16}



static void Test_BFs16s_BFs16i_BFu16i_BFu16i()
{
  {
    init_simple_test("BFs16s_BFs16i_BFu16i_BFu16i");
    static STRUCT_IF_C BFs16s_BFs16i_BFu16i_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16i_BFu16i_BFu16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16s_BFs16i_BFu16i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16i_BFu16i_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFu16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16i_BFu16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFu16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16i_BFu16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16i_BFu16i_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16i_BFu16i_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16i_BFu16i_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16i_BFu16i_BFu16i, BFs16s_BFs16i_BFu16i_BFu16i)
//============================================================================


struct  BFs16s_BFs16i_BFu16i_BFu16ll  {
  signed short v1:16;
  signed int v2:16;
  unsigned int v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16s_BFs16i_BFu16i_BFu16ll) C1{ Fs:16 Fi:16 Fi:16 FL:16}



static void Test_BFs16s_BFs16i_BFu16i_BFu16ll()
{
  {
    init_simple_test("BFs16s_BFs16i_BFu16i_BFu16ll");
    static STRUCT_IF_C BFs16s_BFs16i_BFu16i_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16i_BFu16i_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16i_BFu16i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16i_BFu16i_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFu16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16i_BFu16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFu16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16i_BFu16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16i_BFu16i_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16i_BFu16i_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16i_BFu16i_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16i_BFu16i_BFu16ll, BFs16s_BFs16i_BFu16i_BFu16ll)
//============================================================================


struct  BFs16s_BFs16i_BFu16i_BFu16s  {
  signed short v1:16;
  signed int v2:16;
  unsigned int v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16s_BFs16i_BFu16i_BFu16s) C1{ Fs:16 Fi:16 Fi:16 Fs:16}



static void Test_BFs16s_BFs16i_BFu16i_BFu16s()
{
  {
    init_simple_test("BFs16s_BFs16i_BFu16i_BFu16s");
    static STRUCT_IF_C BFs16s_BFs16i_BFu16i_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16i_BFu16i_BFu16s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16s_BFs16i_BFu16i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16i_BFu16i_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFu16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16i_BFu16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFu16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16i_BFu16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16i_BFu16i_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16i_BFu16i_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16i_BFu16i_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16i_BFu16i_BFu16s, BFs16s_BFs16i_BFu16i_BFu16s)
//============================================================================


struct  BFs16s_BFs16i_BFu16ll  {
  signed short v1:16;
  signed int v2:16;
  __tsu64 v3:16;
};
//SIG(1 BFs16s_BFs16i_BFu16ll) C1{ Fs:16 Fi:16 FL:16}



static void Test_BFs16s_BFs16i_BFu16ll()
{
  {
    init_simple_test("BFs16s_BFs16i_BFu16ll");
    static STRUCT_IF_C BFs16s_BFs16i_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16i_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16i_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16i_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16i_BFu16ll, BFs16s_BFs16i_BFu16ll)
//============================================================================


struct  BFs16s_BFs16i_BFu16ll_BFs16i  {
  signed short v1:16;
  signed int v2:16;
  __tsu64 v3:16;
  signed int v4:16;
};
//SIG(1 BFs16s_BFs16i_BFu16ll_BFs16i) C1{ Fs:16 Fi:16 FL:16 Fi:16}



static void Test_BFs16s_BFs16i_BFu16ll_BFs16i()
{
  {
    init_simple_test("BFs16s_BFs16i_BFu16ll_BFs16i");
    static STRUCT_IF_C BFs16s_BFs16i_BFu16ll_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16i_BFu16ll_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16i_BFu16ll_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16i_BFu16ll_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFu16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16i_BFu16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFu16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16i_BFu16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16i_BFu16ll_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16i_BFu16ll_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFu16ll_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16i_BFu16ll_BFs16i, BFs16s_BFs16i_BFu16ll_BFs16i)
//============================================================================


struct  BFs16s_BFs16i_BFu16ll_BFs16ll  {
  signed short v1:16;
  signed int v2:16;
  __tsu64 v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16s_BFs16i_BFu16ll_BFs16ll) C1{ Fs:16 Fi:16 FL:16 FL:16}



static void Test_BFs16s_BFs16i_BFu16ll_BFs16ll()
{
  {
    init_simple_test("BFs16s_BFs16i_BFu16ll_BFs16ll");
    static STRUCT_IF_C BFs16s_BFs16i_BFu16ll_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16i_BFu16ll_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16i_BFu16ll_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16i_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16i_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16i_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16i_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16i_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFu16ll_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16i_BFu16ll_BFs16ll, BFs16s_BFs16i_BFu16ll_BFs16ll)
//============================================================================


struct  BFs16s_BFs16i_BFu16ll_BFs16s  {
  signed short v1:16;
  signed int v2:16;
  __tsu64 v3:16;
  signed short v4:16;
};
//SIG(1 BFs16s_BFs16i_BFu16ll_BFs16s) C1{ Fs:16 Fi:16 FL:16 Fs:16}



static void Test_BFs16s_BFs16i_BFu16ll_BFs16s()
{
  {
    init_simple_test("BFs16s_BFs16i_BFu16ll_BFs16s");
    static STRUCT_IF_C BFs16s_BFs16i_BFu16ll_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16i_BFu16ll_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16i_BFu16ll_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16i_BFu16ll_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFu16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16i_BFu16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFu16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16i_BFu16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16i_BFu16ll_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16i_BFu16ll_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFu16ll_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16i_BFu16ll_BFs16s, BFs16s_BFs16i_BFu16ll_BFs16s)
//============================================================================


struct  BFs16s_BFs16i_BFu16ll_BFu16i  {
  signed short v1:16;
  signed int v2:16;
  __tsu64 v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16s_BFs16i_BFu16ll_BFu16i) C1{ Fs:16 Fi:16 FL:16 Fi:16}



static void Test_BFs16s_BFs16i_BFu16ll_BFu16i()
{
  {
    init_simple_test("BFs16s_BFs16i_BFu16ll_BFu16i");
    static STRUCT_IF_C BFs16s_BFs16i_BFu16ll_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16i_BFu16ll_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16i_BFu16ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16i_BFu16ll_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFu16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16i_BFu16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFu16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16i_BFu16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16i_BFu16ll_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16i_BFu16ll_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16i_BFu16ll_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16i_BFu16ll_BFu16i, BFs16s_BFs16i_BFu16ll_BFu16i)
//============================================================================


struct  BFs16s_BFs16i_BFu16ll_BFu16ll  {
  signed short v1:16;
  signed int v2:16;
  __tsu64 v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16s_BFs16i_BFu16ll_BFu16ll) C1{ Fs:16 Fi:16 FL:16 FL:16}



static void Test_BFs16s_BFs16i_BFu16ll_BFu16ll()
{
  {
    init_simple_test("BFs16s_BFs16i_BFu16ll_BFu16ll");
    static STRUCT_IF_C BFs16s_BFs16i_BFu16ll_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16i_BFu16ll_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16i_BFu16ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16i_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16i_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16i_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16i_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16i_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16i_BFu16ll_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16i_BFu16ll_BFu16ll, BFs16s_BFs16i_BFu16ll_BFu16ll)
//============================================================================


struct  BFs16s_BFs16i_BFu16ll_BFu16s  {
  signed short v1:16;
  signed int v2:16;
  __tsu64 v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16s_BFs16i_BFu16ll_BFu16s) C1{ Fs:16 Fi:16 FL:16 Fs:16}



static void Test_BFs16s_BFs16i_BFu16ll_BFu16s()
{
  {
    init_simple_test("BFs16s_BFs16i_BFu16ll_BFu16s");
    static STRUCT_IF_C BFs16s_BFs16i_BFu16ll_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16i_BFu16ll_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16i_BFu16ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16i_BFu16ll_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFu16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16i_BFu16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFu16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16i_BFu16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16i_BFu16ll_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16i_BFu16ll_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16i_BFu16ll_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16i_BFu16ll_BFu16s, BFs16s_BFs16i_BFu16ll_BFu16s)
//============================================================================


struct  BFs16s_BFs16i_BFu16s  {
  signed short v1:16;
  signed int v2:16;
  unsigned short v3:16;
};
//SIG(1 BFs16s_BFs16i_BFu16s) C1{ Fs:16 Fi:16 Fs:16}



static void Test_BFs16s_BFs16i_BFu16s()
{
  {
    init_simple_test("BFs16s_BFs16i_BFu16s");
    static STRUCT_IF_C BFs16s_BFs16i_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16i_BFu16s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16s_BFs16i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16i_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16i_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16i_BFu16s, BFs16s_BFs16i_BFu16s)
//============================================================================


struct  BFs16s_BFs16i_BFu16s_BFs16i  {
  signed short v1:16;
  signed int v2:16;
  unsigned short v3:16;
  signed int v4:16;
};
//SIG(1 BFs16s_BFs16i_BFu16s_BFs16i) C1{ Fs:16 Fi:16 Fs:16 Fi:16}



static void Test_BFs16s_BFs16i_BFu16s_BFs16i()
{
  {
    init_simple_test("BFs16s_BFs16i_BFu16s_BFs16i");
    static STRUCT_IF_C BFs16s_BFs16i_BFu16s_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16i_BFu16s_BFs16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16s_BFs16i_BFu16s_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16i_BFu16s_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFu16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16i_BFu16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFu16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16i_BFu16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16i_BFu16s_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16i_BFu16s_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFu16s_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16i_BFu16s_BFs16i, BFs16s_BFs16i_BFu16s_BFs16i)
//============================================================================


struct  BFs16s_BFs16i_BFu16s_BFs16ll  {
  signed short v1:16;
  signed int v2:16;
  unsigned short v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16s_BFs16i_BFu16s_BFs16ll) C1{ Fs:16 Fi:16 Fs:16 FL:16}



static void Test_BFs16s_BFs16i_BFu16s_BFs16ll()
{
  {
    init_simple_test("BFs16s_BFs16i_BFu16s_BFs16ll");
    static STRUCT_IF_C BFs16s_BFs16i_BFu16s_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16i_BFu16s_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16i_BFu16s_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16i_BFu16s_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFu16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16i_BFu16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFu16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16i_BFu16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16i_BFu16s_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16i_BFu16s_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFu16s_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16i_BFu16s_BFs16ll, BFs16s_BFs16i_BFu16s_BFs16ll)
//============================================================================


struct  BFs16s_BFs16i_BFu16s_BFs16s  {
  signed short v1:16;
  signed int v2:16;
  unsigned short v3:16;
  signed short v4:16;
};
//SIG(1 BFs16s_BFs16i_BFu16s_BFs16s) C1{ Fs:16 Fi:16 Fs:16 Fs:16}



static void Test_BFs16s_BFs16i_BFu16s_BFs16s()
{
  {
    init_simple_test("BFs16s_BFs16i_BFu16s_BFs16s");
    static STRUCT_IF_C BFs16s_BFs16i_BFu16s_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16i_BFu16s_BFs16s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16s_BFs16i_BFu16s_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16i_BFu16s_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFu16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16i_BFu16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFu16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16i_BFu16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16i_BFu16s_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16i_BFu16s_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFu16s_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16i_BFu16s_BFs16s, BFs16s_BFs16i_BFu16s_BFs16s)
//============================================================================


struct  BFs16s_BFs16i_BFu16s_BFu16i  {
  signed short v1:16;
  signed int v2:16;
  unsigned short v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16s_BFs16i_BFu16s_BFu16i) C1{ Fs:16 Fi:16 Fs:16 Fi:16}



static void Test_BFs16s_BFs16i_BFu16s_BFu16i()
{
  {
    init_simple_test("BFs16s_BFs16i_BFu16s_BFu16i");
    static STRUCT_IF_C BFs16s_BFs16i_BFu16s_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16i_BFu16s_BFu16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16s_BFs16i_BFu16s_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16i_BFu16s_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFu16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16i_BFu16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFu16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16i_BFu16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16i_BFu16s_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16i_BFu16s_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16i_BFu16s_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16i_BFu16s_BFu16i, BFs16s_BFs16i_BFu16s_BFu16i)
//============================================================================


struct  BFs16s_BFs16i_BFu16s_BFu16ll  {
  signed short v1:16;
  signed int v2:16;
  unsigned short v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16s_BFs16i_BFu16s_BFu16ll) C1{ Fs:16 Fi:16 Fs:16 FL:16}



static void Test_BFs16s_BFs16i_BFu16s_BFu16ll()
{
  {
    init_simple_test("BFs16s_BFs16i_BFu16s_BFu16ll");
    static STRUCT_IF_C BFs16s_BFs16i_BFu16s_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16i_BFu16s_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16i_BFu16s_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16i_BFu16s_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFu16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16i_BFu16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFu16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16i_BFu16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16i_BFu16s_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16i_BFu16s_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16i_BFu16s_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16i_BFu16s_BFu16ll, BFs16s_BFs16i_BFu16s_BFu16ll)
//============================================================================


struct  BFs16s_BFs16i_BFu16s_BFu16s  {
  signed short v1:16;
  signed int v2:16;
  unsigned short v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16s_BFs16i_BFu16s_BFu16s) C1{ Fs:16 Fi:16 Fs:16 Fs:16}



static void Test_BFs16s_BFs16i_BFu16s_BFu16s()
{
  {
    init_simple_test("BFs16s_BFs16i_BFu16s_BFu16s");
    static STRUCT_IF_C BFs16s_BFs16i_BFu16s_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16i_BFu16s_BFu16s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16s_BFs16i_BFu16s_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16i_BFu16s_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFu16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16i_BFu16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16i_BFu16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16i_BFu16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16i_BFu16s_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16i_BFu16s_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16i_BFu16s_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16i_BFu16s_BFu16s, BFs16s_BFs16i_BFu16s_BFu16s)
//============================================================================


struct  BFs16s_BFs16ll  {
  signed short v1:16;
  signed __tsi64 v2:16;
};
//SIG(1 BFs16s_BFs16ll) C1{ Fs:16 FL:16}



static void Test_BFs16s_BFs16ll()
{
  {
    init_simple_test("BFs16s_BFs16ll");
    static STRUCT_IF_C BFs16s_BFs16ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs16s_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16ll, BFs16s_BFs16ll)
//============================================================================


struct  BFs16s_BFs16ll_BFs16i  {
  signed short v1:16;
  signed __tsi64 v2:16;
  signed int v3:16;
};
//SIG(1 BFs16s_BFs16ll_BFs16i) C1{ Fs:16 FL:16 Fi:16}



static void Test_BFs16s_BFs16ll_BFs16i()
{
  {
    init_simple_test("BFs16s_BFs16ll_BFs16i");
    static STRUCT_IF_C BFs16s_BFs16ll_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16ll_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16ll_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16ll_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16ll_BFs16i, BFs16s_BFs16ll_BFs16i)
//============================================================================


struct  BFs16s_BFs16ll_BFs16i_BFs16i  {
  signed short v1:16;
  signed __tsi64 v2:16;
  signed int v3:16;
  signed int v4:16;
};
//SIG(1 BFs16s_BFs16ll_BFs16i_BFs16i) C1{ Fs:16 FL:16 Fi:16 Fi:16}



static void Test_BFs16s_BFs16ll_BFs16i_BFs16i()
{
  {
    init_simple_test("BFs16s_BFs16ll_BFs16i_BFs16i");
    static STRUCT_IF_C BFs16s_BFs16ll_BFs16i_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16ll_BFs16i_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16ll_BFs16i_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16ll_BFs16i_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFs16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16ll_BFs16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFs16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16ll_BFs16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFs16i_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16ll_BFs16i_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFs16i_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16ll_BFs16i_BFs16i, BFs16s_BFs16ll_BFs16i_BFs16i)
//============================================================================


struct  BFs16s_BFs16ll_BFs16i_BFs16ll  {
  signed short v1:16;
  signed __tsi64 v2:16;
  signed int v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16s_BFs16ll_BFs16i_BFs16ll) C1{ Fs:16 FL:16 Fi:16 FL:16}



static void Test_BFs16s_BFs16ll_BFs16i_BFs16ll()
{
  {
    init_simple_test("BFs16s_BFs16ll_BFs16i_BFs16ll");
    static STRUCT_IF_C BFs16s_BFs16ll_BFs16i_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16ll_BFs16i_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16ll_BFs16i_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16ll_BFs16i_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFs16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16ll_BFs16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFs16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16ll_BFs16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFs16i_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16ll_BFs16i_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFs16i_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16ll_BFs16i_BFs16ll, BFs16s_BFs16ll_BFs16i_BFs16ll)
//============================================================================


struct  BFs16s_BFs16ll_BFs16i_BFs16s  {
  signed short v1:16;
  signed __tsi64 v2:16;
  signed int v3:16;
  signed short v4:16;
};
//SIG(1 BFs16s_BFs16ll_BFs16i_BFs16s) C1{ Fs:16 FL:16 Fi:16 Fs:16}



static void Test_BFs16s_BFs16ll_BFs16i_BFs16s()
{
  {
    init_simple_test("BFs16s_BFs16ll_BFs16i_BFs16s");
    static STRUCT_IF_C BFs16s_BFs16ll_BFs16i_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16ll_BFs16i_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16ll_BFs16i_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16ll_BFs16i_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFs16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16ll_BFs16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFs16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16ll_BFs16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFs16i_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16ll_BFs16i_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFs16i_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16ll_BFs16i_BFs16s, BFs16s_BFs16ll_BFs16i_BFs16s)
//============================================================================


struct  BFs16s_BFs16ll_BFs16i_BFu16i  {
  signed short v1:16;
  signed __tsi64 v2:16;
  signed int v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16s_BFs16ll_BFs16i_BFu16i) C1{ Fs:16 FL:16 Fi:16 Fi:16}



static void Test_BFs16s_BFs16ll_BFs16i_BFu16i()
{
  {
    init_simple_test("BFs16s_BFs16ll_BFs16i_BFu16i");
    static STRUCT_IF_C BFs16s_BFs16ll_BFs16i_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16ll_BFs16i_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16ll_BFs16i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16ll_BFs16i_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFs16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16ll_BFs16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFs16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16ll_BFs16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFs16i_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16ll_BFs16i_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16ll_BFs16i_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16ll_BFs16i_BFu16i, BFs16s_BFs16ll_BFs16i_BFu16i)
//============================================================================


struct  BFs16s_BFs16ll_BFs16i_BFu16ll  {
  signed short v1:16;
  signed __tsi64 v2:16;
  signed int v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16s_BFs16ll_BFs16i_BFu16ll) C1{ Fs:16 FL:16 Fi:16 FL:16}



static void Test_BFs16s_BFs16ll_BFs16i_BFu16ll()
{
  {
    init_simple_test("BFs16s_BFs16ll_BFs16i_BFu16ll");
    static STRUCT_IF_C BFs16s_BFs16ll_BFs16i_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16ll_BFs16i_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16ll_BFs16i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16ll_BFs16i_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFs16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16ll_BFs16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFs16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16ll_BFs16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFs16i_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16ll_BFs16i_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16ll_BFs16i_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16ll_BFs16i_BFu16ll, BFs16s_BFs16ll_BFs16i_BFu16ll)
//============================================================================


struct  BFs16s_BFs16ll_BFs16i_BFu16s  {
  signed short v1:16;
  signed __tsi64 v2:16;
  signed int v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16s_BFs16ll_BFs16i_BFu16s) C1{ Fs:16 FL:16 Fi:16 Fs:16}



static void Test_BFs16s_BFs16ll_BFs16i_BFu16s()
{
  {
    init_simple_test("BFs16s_BFs16ll_BFs16i_BFu16s");
    static STRUCT_IF_C BFs16s_BFs16ll_BFs16i_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16ll_BFs16i_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16ll_BFs16i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16ll_BFs16i_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFs16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16ll_BFs16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFs16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16ll_BFs16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFs16i_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16ll_BFs16i_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16ll_BFs16i_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16ll_BFs16i_BFu16s, BFs16s_BFs16ll_BFs16i_BFu16s)
//============================================================================


struct  BFs16s_BFs16ll_BFs16ll  {
  signed short v1:16;
  signed __tsi64 v2:16;
  signed __tsi64 v3:16;
};
//SIG(1 BFs16s_BFs16ll_BFs16ll) C1{ Fs:16 FL:16 FL:16}



static void Test_BFs16s_BFs16ll_BFs16ll()
{
  {
    init_simple_test("BFs16s_BFs16ll_BFs16ll");
    static STRUCT_IF_C BFs16s_BFs16ll_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16ll_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16ll_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16ll_BFs16ll, BFs16s_BFs16ll_BFs16ll)
//============================================================================


struct  BFs16s_BFs16ll_BFs16ll_BFs16i  {
  signed short v1:16;
  signed __tsi64 v2:16;
  signed __tsi64 v3:16;
  signed int v4:16;
};
//SIG(1 BFs16s_BFs16ll_BFs16ll_BFs16i) C1{ Fs:16 FL:16 FL:16 Fi:16}



static void Test_BFs16s_BFs16ll_BFs16ll_BFs16i()
{
  {
    init_simple_test("BFs16s_BFs16ll_BFs16ll_BFs16i");
    static STRUCT_IF_C BFs16s_BFs16ll_BFs16ll_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16ll_BFs16ll_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16ll_BFs16ll_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16ll_BFs16ll_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFs16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16ll_BFs16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFs16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16ll_BFs16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFs16ll_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16ll_BFs16ll_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFs16ll_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16ll_BFs16ll_BFs16i, BFs16s_BFs16ll_BFs16ll_BFs16i)
//============================================================================


struct  BFs16s_BFs16ll_BFs16ll_BFs16ll  {
  signed short v1:16;
  signed __tsi64 v2:16;
  signed __tsi64 v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16s_BFs16ll_BFs16ll_BFs16ll) C1{ Fs:16 FL:16 FL:16 FL:16}



static void Test_BFs16s_BFs16ll_BFs16ll_BFs16ll()
{
  {
    init_simple_test("BFs16s_BFs16ll_BFs16ll_BFs16ll");
    static STRUCT_IF_C BFs16s_BFs16ll_BFs16ll_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16ll_BFs16ll_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16ll_BFs16ll_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16ll_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16ll_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16ll_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16ll_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFs16ll_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16ll_BFs16ll_BFs16ll, BFs16s_BFs16ll_BFs16ll_BFs16ll)
//============================================================================


struct  BFs16s_BFs16ll_BFs16ll_BFs16s  {
  signed short v1:16;
  signed __tsi64 v2:16;
  signed __tsi64 v3:16;
  signed short v4:16;
};
//SIG(1 BFs16s_BFs16ll_BFs16ll_BFs16s) C1{ Fs:16 FL:16 FL:16 Fs:16}



static void Test_BFs16s_BFs16ll_BFs16ll_BFs16s()
{
  {
    init_simple_test("BFs16s_BFs16ll_BFs16ll_BFs16s");
    static STRUCT_IF_C BFs16s_BFs16ll_BFs16ll_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16ll_BFs16ll_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16ll_BFs16ll_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16ll_BFs16ll_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFs16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16ll_BFs16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFs16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16ll_BFs16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFs16ll_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16ll_BFs16ll_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFs16ll_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16ll_BFs16ll_BFs16s, BFs16s_BFs16ll_BFs16ll_BFs16s)
//============================================================================


struct  BFs16s_BFs16ll_BFs16ll_BFu16i  {
  signed short v1:16;
  signed __tsi64 v2:16;
  signed __tsi64 v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16s_BFs16ll_BFs16ll_BFu16i) C1{ Fs:16 FL:16 FL:16 Fi:16}



static void Test_BFs16s_BFs16ll_BFs16ll_BFu16i()
{
  {
    init_simple_test("BFs16s_BFs16ll_BFs16ll_BFu16i");
    static STRUCT_IF_C BFs16s_BFs16ll_BFs16ll_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16ll_BFs16ll_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16ll_BFs16ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16ll_BFs16ll_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFs16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16ll_BFs16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFs16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16ll_BFs16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFs16ll_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16ll_BFs16ll_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16ll_BFs16ll_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16ll_BFs16ll_BFu16i, BFs16s_BFs16ll_BFs16ll_BFu16i)
//============================================================================


struct  BFs16s_BFs16ll_BFs16ll_BFu16ll  {
  signed short v1:16;
  signed __tsi64 v2:16;
  signed __tsi64 v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16s_BFs16ll_BFs16ll_BFu16ll) C1{ Fs:16 FL:16 FL:16 FL:16}



static void Test_BFs16s_BFs16ll_BFs16ll_BFu16ll()
{
  {
    init_simple_test("BFs16s_BFs16ll_BFs16ll_BFu16ll");
    static STRUCT_IF_C BFs16s_BFs16ll_BFs16ll_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16ll_BFs16ll_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16ll_BFs16ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16ll_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16ll_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16ll_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16ll_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16ll_BFs16ll_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16ll_BFs16ll_BFu16ll, BFs16s_BFs16ll_BFs16ll_BFu16ll)
//============================================================================


struct  BFs16s_BFs16ll_BFs16ll_BFu16s  {
  signed short v1:16;
  signed __tsi64 v2:16;
  signed __tsi64 v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16s_BFs16ll_BFs16ll_BFu16s) C1{ Fs:16 FL:16 FL:16 Fs:16}



static void Test_BFs16s_BFs16ll_BFs16ll_BFu16s()
{
  {
    init_simple_test("BFs16s_BFs16ll_BFs16ll_BFu16s");
    static STRUCT_IF_C BFs16s_BFs16ll_BFs16ll_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16ll_BFs16ll_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16ll_BFs16ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16ll_BFs16ll_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFs16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16ll_BFs16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFs16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16ll_BFs16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFs16ll_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16ll_BFs16ll_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16ll_BFs16ll_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16ll_BFs16ll_BFu16s, BFs16s_BFs16ll_BFs16ll_BFu16s)
//============================================================================


struct  BFs16s_BFs16ll_BFs16s  {
  signed short v1:16;
  signed __tsi64 v2:16;
  signed short v3:16;
};
//SIG(1 BFs16s_BFs16ll_BFs16s) C1{ Fs:16 FL:16 Fs:16}



static void Test_BFs16s_BFs16ll_BFs16s()
{
  {
    init_simple_test("BFs16s_BFs16ll_BFs16s");
    static STRUCT_IF_C BFs16s_BFs16ll_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16ll_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16ll_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16ll_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16ll_BFs16s, BFs16s_BFs16ll_BFs16s)
//============================================================================


struct  BFs16s_BFs16ll_BFs16s_BFs16i  {
  signed short v1:16;
  signed __tsi64 v2:16;
  signed short v3:16;
  signed int v4:16;
};
//SIG(1 BFs16s_BFs16ll_BFs16s_BFs16i) C1{ Fs:16 FL:16 Fs:16 Fi:16}



static void Test_BFs16s_BFs16ll_BFs16s_BFs16i()
{
  {
    init_simple_test("BFs16s_BFs16ll_BFs16s_BFs16i");
    static STRUCT_IF_C BFs16s_BFs16ll_BFs16s_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16ll_BFs16s_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16ll_BFs16s_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16ll_BFs16s_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFs16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16ll_BFs16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFs16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16ll_BFs16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFs16s_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16ll_BFs16s_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFs16s_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16ll_BFs16s_BFs16i, BFs16s_BFs16ll_BFs16s_BFs16i)
//============================================================================


struct  BFs16s_BFs16ll_BFs16s_BFs16ll  {
  signed short v1:16;
  signed __tsi64 v2:16;
  signed short v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16s_BFs16ll_BFs16s_BFs16ll) C1{ Fs:16 FL:16 Fs:16 FL:16}



static void Test_BFs16s_BFs16ll_BFs16s_BFs16ll()
{
  {
    init_simple_test("BFs16s_BFs16ll_BFs16s_BFs16ll");
    static STRUCT_IF_C BFs16s_BFs16ll_BFs16s_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16ll_BFs16s_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16ll_BFs16s_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16ll_BFs16s_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFs16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16ll_BFs16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFs16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16ll_BFs16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFs16s_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16ll_BFs16s_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFs16s_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16ll_BFs16s_BFs16ll, BFs16s_BFs16ll_BFs16s_BFs16ll)
//============================================================================


struct  BFs16s_BFs16ll_BFs16s_BFs16s  {
  signed short v1:16;
  signed __tsi64 v2:16;
  signed short v3:16;
  signed short v4:16;
};
//SIG(1 BFs16s_BFs16ll_BFs16s_BFs16s) C1{ Fs:16 FL:16 Fs:16 Fs:16}



static void Test_BFs16s_BFs16ll_BFs16s_BFs16s()
{
  {
    init_simple_test("BFs16s_BFs16ll_BFs16s_BFs16s");
    static STRUCT_IF_C BFs16s_BFs16ll_BFs16s_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16ll_BFs16s_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16ll_BFs16s_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16ll_BFs16s_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFs16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16ll_BFs16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFs16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16ll_BFs16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFs16s_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16ll_BFs16s_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFs16s_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16ll_BFs16s_BFs16s, BFs16s_BFs16ll_BFs16s_BFs16s)
//============================================================================


struct  BFs16s_BFs16ll_BFs16s_BFu16i  {
  signed short v1:16;
  signed __tsi64 v2:16;
  signed short v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16s_BFs16ll_BFs16s_BFu16i) C1{ Fs:16 FL:16 Fs:16 Fi:16}



static void Test_BFs16s_BFs16ll_BFs16s_BFu16i()
{
  {
    init_simple_test("BFs16s_BFs16ll_BFs16s_BFu16i");
    static STRUCT_IF_C BFs16s_BFs16ll_BFs16s_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16ll_BFs16s_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16ll_BFs16s_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16ll_BFs16s_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFs16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16ll_BFs16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFs16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16ll_BFs16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFs16s_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16ll_BFs16s_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16ll_BFs16s_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16ll_BFs16s_BFu16i, BFs16s_BFs16ll_BFs16s_BFu16i)
//============================================================================


struct  BFs16s_BFs16ll_BFs16s_BFu16ll  {
  signed short v1:16;
  signed __tsi64 v2:16;
  signed short v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16s_BFs16ll_BFs16s_BFu16ll) C1{ Fs:16 FL:16 Fs:16 FL:16}



static void Test_BFs16s_BFs16ll_BFs16s_BFu16ll()
{
  {
    init_simple_test("BFs16s_BFs16ll_BFs16s_BFu16ll");
    static STRUCT_IF_C BFs16s_BFs16ll_BFs16s_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16ll_BFs16s_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16ll_BFs16s_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16ll_BFs16s_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFs16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16ll_BFs16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFs16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16ll_BFs16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFs16s_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16ll_BFs16s_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16ll_BFs16s_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16ll_BFs16s_BFu16ll, BFs16s_BFs16ll_BFs16s_BFu16ll)
//============================================================================


struct  BFs16s_BFs16ll_BFs16s_BFu16s  {
  signed short v1:16;
  signed __tsi64 v2:16;
  signed short v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16s_BFs16ll_BFs16s_BFu16s) C1{ Fs:16 FL:16 Fs:16 Fs:16}



static void Test_BFs16s_BFs16ll_BFs16s_BFu16s()
{
  {
    init_simple_test("BFs16s_BFs16ll_BFs16s_BFu16s");
    static STRUCT_IF_C BFs16s_BFs16ll_BFs16s_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16ll_BFs16s_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16ll_BFs16s_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16ll_BFs16s_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFs16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16ll_BFs16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFs16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16ll_BFs16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFs16s_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16ll_BFs16s_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16ll_BFs16s_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16ll_BFs16s_BFu16s, BFs16s_BFs16ll_BFs16s_BFu16s)
//============================================================================


struct  BFs16s_BFs16ll_BFu16i  {
  signed short v1:16;
  signed __tsi64 v2:16;
  unsigned int v3:16;
};
//SIG(1 BFs16s_BFs16ll_BFu16i) C1{ Fs:16 FL:16 Fi:16}



static void Test_BFs16s_BFs16ll_BFu16i()
{
  {
    init_simple_test("BFs16s_BFs16ll_BFu16i");
    static STRUCT_IF_C BFs16s_BFs16ll_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16ll_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16ll_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16ll_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16ll_BFu16i, BFs16s_BFs16ll_BFu16i)
//============================================================================


struct  BFs16s_BFs16ll_BFu16i_BFs16i  {
  signed short v1:16;
  signed __tsi64 v2:16;
  unsigned int v3:16;
  signed int v4:16;
};
//SIG(1 BFs16s_BFs16ll_BFu16i_BFs16i) C1{ Fs:16 FL:16 Fi:16 Fi:16}



static void Test_BFs16s_BFs16ll_BFu16i_BFs16i()
{
  {
    init_simple_test("BFs16s_BFs16ll_BFu16i_BFs16i");
    static STRUCT_IF_C BFs16s_BFs16ll_BFu16i_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16ll_BFu16i_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16ll_BFu16i_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16ll_BFu16i_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFu16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16ll_BFu16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFu16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16ll_BFu16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16ll_BFu16i_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16ll_BFu16i_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFu16i_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16ll_BFu16i_BFs16i, BFs16s_BFs16ll_BFu16i_BFs16i)
//============================================================================


struct  BFs16s_BFs16ll_BFu16i_BFs16ll  {
  signed short v1:16;
  signed __tsi64 v2:16;
  unsigned int v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16s_BFs16ll_BFu16i_BFs16ll) C1{ Fs:16 FL:16 Fi:16 FL:16}



static void Test_BFs16s_BFs16ll_BFu16i_BFs16ll()
{
  {
    init_simple_test("BFs16s_BFs16ll_BFu16i_BFs16ll");
    static STRUCT_IF_C BFs16s_BFs16ll_BFu16i_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16ll_BFu16i_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16ll_BFu16i_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16ll_BFu16i_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFu16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16ll_BFu16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFu16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16ll_BFu16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16ll_BFu16i_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16ll_BFu16i_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFu16i_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16ll_BFu16i_BFs16ll, BFs16s_BFs16ll_BFu16i_BFs16ll)
//============================================================================


struct  BFs16s_BFs16ll_BFu16i_BFs16s  {
  signed short v1:16;
  signed __tsi64 v2:16;
  unsigned int v3:16;
  signed short v4:16;
};
//SIG(1 BFs16s_BFs16ll_BFu16i_BFs16s) C1{ Fs:16 FL:16 Fi:16 Fs:16}



static void Test_BFs16s_BFs16ll_BFu16i_BFs16s()
{
  {
    init_simple_test("BFs16s_BFs16ll_BFu16i_BFs16s");
    static STRUCT_IF_C BFs16s_BFs16ll_BFu16i_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16ll_BFu16i_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16ll_BFu16i_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16ll_BFu16i_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFu16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16ll_BFu16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFu16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16ll_BFu16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16ll_BFu16i_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16ll_BFu16i_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFu16i_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16ll_BFu16i_BFs16s, BFs16s_BFs16ll_BFu16i_BFs16s)
//============================================================================


struct  BFs16s_BFs16ll_BFu16i_BFu16i  {
  signed short v1:16;
  signed __tsi64 v2:16;
  unsigned int v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16s_BFs16ll_BFu16i_BFu16i) C1{ Fs:16 FL:16 Fi:16 Fi:16}



static void Test_BFs16s_BFs16ll_BFu16i_BFu16i()
{
  {
    init_simple_test("BFs16s_BFs16ll_BFu16i_BFu16i");
    static STRUCT_IF_C BFs16s_BFs16ll_BFu16i_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16ll_BFu16i_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16ll_BFu16i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16ll_BFu16i_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFu16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16ll_BFu16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFu16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16ll_BFu16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16ll_BFu16i_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16ll_BFu16i_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16ll_BFu16i_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16ll_BFu16i_BFu16i, BFs16s_BFs16ll_BFu16i_BFu16i)
//============================================================================


struct  BFs16s_BFs16ll_BFu16i_BFu16ll  {
  signed short v1:16;
  signed __tsi64 v2:16;
  unsigned int v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16s_BFs16ll_BFu16i_BFu16ll) C1{ Fs:16 FL:16 Fi:16 FL:16}



static void Test_BFs16s_BFs16ll_BFu16i_BFu16ll()
{
  {
    init_simple_test("BFs16s_BFs16ll_BFu16i_BFu16ll");
    static STRUCT_IF_C BFs16s_BFs16ll_BFu16i_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16ll_BFu16i_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16ll_BFu16i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16ll_BFu16i_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFu16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16ll_BFu16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFu16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16ll_BFu16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16ll_BFu16i_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16ll_BFu16i_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16ll_BFu16i_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16ll_BFu16i_BFu16ll, BFs16s_BFs16ll_BFu16i_BFu16ll)
//============================================================================


struct  BFs16s_BFs16ll_BFu16i_BFu16s  {
  signed short v1:16;
  signed __tsi64 v2:16;
  unsigned int v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16s_BFs16ll_BFu16i_BFu16s) C1{ Fs:16 FL:16 Fi:16 Fs:16}



static void Test_BFs16s_BFs16ll_BFu16i_BFu16s()
{
  {
    init_simple_test("BFs16s_BFs16ll_BFu16i_BFu16s");
    static STRUCT_IF_C BFs16s_BFs16ll_BFu16i_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16ll_BFu16i_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16ll_BFu16i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16ll_BFu16i_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFu16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16ll_BFu16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFu16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16ll_BFu16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16ll_BFu16i_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16ll_BFu16i_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16ll_BFu16i_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16ll_BFu16i_BFu16s, BFs16s_BFs16ll_BFu16i_BFu16s)
//============================================================================


struct  BFs16s_BFs16ll_BFu16ll  {
  signed short v1:16;
  signed __tsi64 v2:16;
  __tsu64 v3:16;
};
//SIG(1 BFs16s_BFs16ll_BFu16ll) C1{ Fs:16 FL:16 FL:16}



static void Test_BFs16s_BFs16ll_BFu16ll()
{
  {
    init_simple_test("BFs16s_BFs16ll_BFu16ll");
    static STRUCT_IF_C BFs16s_BFs16ll_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16ll_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16ll_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16ll_BFu16ll, BFs16s_BFs16ll_BFu16ll)
//============================================================================


struct  BFs16s_BFs16ll_BFu16ll_BFs16i  {
  signed short v1:16;
  signed __tsi64 v2:16;
  __tsu64 v3:16;
  signed int v4:16;
};
//SIG(1 BFs16s_BFs16ll_BFu16ll_BFs16i) C1{ Fs:16 FL:16 FL:16 Fi:16}



static void Test_BFs16s_BFs16ll_BFu16ll_BFs16i()
{
  {
    init_simple_test("BFs16s_BFs16ll_BFu16ll_BFs16i");
    static STRUCT_IF_C BFs16s_BFs16ll_BFu16ll_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16ll_BFu16ll_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16ll_BFu16ll_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16ll_BFu16ll_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFu16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16ll_BFu16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFu16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16ll_BFu16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16ll_BFu16ll_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16ll_BFu16ll_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFu16ll_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16ll_BFu16ll_BFs16i, BFs16s_BFs16ll_BFu16ll_BFs16i)
//============================================================================


struct  BFs16s_BFs16ll_BFu16ll_BFs16ll  {
  signed short v1:16;
  signed __tsi64 v2:16;
  __tsu64 v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16s_BFs16ll_BFu16ll_BFs16ll) C1{ Fs:16 FL:16 FL:16 FL:16}



static void Test_BFs16s_BFs16ll_BFu16ll_BFs16ll()
{
  {
    init_simple_test("BFs16s_BFs16ll_BFu16ll_BFs16ll");
    static STRUCT_IF_C BFs16s_BFs16ll_BFu16ll_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16ll_BFu16ll_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16ll_BFu16ll_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16ll_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16ll_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16ll_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16ll_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16ll_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFu16ll_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16ll_BFu16ll_BFs16ll, BFs16s_BFs16ll_BFu16ll_BFs16ll)
//============================================================================


struct  BFs16s_BFs16ll_BFu16ll_BFs16s  {
  signed short v1:16;
  signed __tsi64 v2:16;
  __tsu64 v3:16;
  signed short v4:16;
};
//SIG(1 BFs16s_BFs16ll_BFu16ll_BFs16s) C1{ Fs:16 FL:16 FL:16 Fs:16}



static void Test_BFs16s_BFs16ll_BFu16ll_BFs16s()
{
  {
    init_simple_test("BFs16s_BFs16ll_BFu16ll_BFs16s");
    static STRUCT_IF_C BFs16s_BFs16ll_BFu16ll_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16ll_BFu16ll_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16ll_BFu16ll_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16ll_BFu16ll_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFu16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16ll_BFu16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFu16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16ll_BFu16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16ll_BFu16ll_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16ll_BFu16ll_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFu16ll_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16ll_BFu16ll_BFs16s, BFs16s_BFs16ll_BFu16ll_BFs16s)
//============================================================================


struct  BFs16s_BFs16ll_BFu16ll_BFu16i  {
  signed short v1:16;
  signed __tsi64 v2:16;
  __tsu64 v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16s_BFs16ll_BFu16ll_BFu16i) C1{ Fs:16 FL:16 FL:16 Fi:16}



static void Test_BFs16s_BFs16ll_BFu16ll_BFu16i()
{
  {
    init_simple_test("BFs16s_BFs16ll_BFu16ll_BFu16i");
    static STRUCT_IF_C BFs16s_BFs16ll_BFu16ll_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16ll_BFu16ll_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16ll_BFu16ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16ll_BFu16ll_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFu16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16ll_BFu16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFu16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16ll_BFu16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16ll_BFu16ll_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16ll_BFu16ll_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16ll_BFu16ll_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16ll_BFu16ll_BFu16i, BFs16s_BFs16ll_BFu16ll_BFu16i)
//============================================================================


struct  BFs16s_BFs16ll_BFu16ll_BFu16ll  {
  signed short v1:16;
  signed __tsi64 v2:16;
  __tsu64 v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16s_BFs16ll_BFu16ll_BFu16ll) C1{ Fs:16 FL:16 FL:16 FL:16}



static void Test_BFs16s_BFs16ll_BFu16ll_BFu16ll()
{
  {
    init_simple_test("BFs16s_BFs16ll_BFu16ll_BFu16ll");
    static STRUCT_IF_C BFs16s_BFs16ll_BFu16ll_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16ll_BFu16ll_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16ll_BFu16ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16ll_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16ll_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16ll_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16ll_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16ll_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16ll_BFu16ll_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16ll_BFu16ll_BFu16ll, BFs16s_BFs16ll_BFu16ll_BFu16ll)
//============================================================================


struct  BFs16s_BFs16ll_BFu16ll_BFu16s  {
  signed short v1:16;
  signed __tsi64 v2:16;
  __tsu64 v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16s_BFs16ll_BFu16ll_BFu16s) C1{ Fs:16 FL:16 FL:16 Fs:16}



static void Test_BFs16s_BFs16ll_BFu16ll_BFu16s()
{
  {
    init_simple_test("BFs16s_BFs16ll_BFu16ll_BFu16s");
    static STRUCT_IF_C BFs16s_BFs16ll_BFu16ll_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16ll_BFu16ll_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16ll_BFu16ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16ll_BFu16ll_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFu16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16ll_BFu16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFu16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16ll_BFu16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16ll_BFu16ll_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16ll_BFu16ll_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16ll_BFu16ll_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16ll_BFu16ll_BFu16s, BFs16s_BFs16ll_BFu16ll_BFu16s)
//============================================================================


struct  BFs16s_BFs16ll_BFu16s  {
  signed short v1:16;
  signed __tsi64 v2:16;
  unsigned short v3:16;
};
//SIG(1 BFs16s_BFs16ll_BFu16s) C1{ Fs:16 FL:16 Fs:16}



static void Test_BFs16s_BFs16ll_BFu16s()
{
  {
    init_simple_test("BFs16s_BFs16ll_BFu16s");
    static STRUCT_IF_C BFs16s_BFs16ll_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16ll_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16ll_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16ll_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16ll_BFu16s, BFs16s_BFs16ll_BFu16s)
//============================================================================


struct  BFs16s_BFs16ll_BFu16s_BFs16i  {
  signed short v1:16;
  signed __tsi64 v2:16;
  unsigned short v3:16;
  signed int v4:16;
};
//SIG(1 BFs16s_BFs16ll_BFu16s_BFs16i) C1{ Fs:16 FL:16 Fs:16 Fi:16}



static void Test_BFs16s_BFs16ll_BFu16s_BFs16i()
{
  {
    init_simple_test("BFs16s_BFs16ll_BFu16s_BFs16i");
    static STRUCT_IF_C BFs16s_BFs16ll_BFu16s_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16ll_BFu16s_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16ll_BFu16s_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16ll_BFu16s_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFu16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16ll_BFu16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFu16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16ll_BFu16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16ll_BFu16s_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16ll_BFu16s_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFu16s_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16ll_BFu16s_BFs16i, BFs16s_BFs16ll_BFu16s_BFs16i)
//============================================================================


struct  BFs16s_BFs16ll_BFu16s_BFs16ll  {
  signed short v1:16;
  signed __tsi64 v2:16;
  unsigned short v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16s_BFs16ll_BFu16s_BFs16ll) C1{ Fs:16 FL:16 Fs:16 FL:16}



static void Test_BFs16s_BFs16ll_BFu16s_BFs16ll()
{
  {
    init_simple_test("BFs16s_BFs16ll_BFu16s_BFs16ll");
    static STRUCT_IF_C BFs16s_BFs16ll_BFu16s_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16ll_BFu16s_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16ll_BFu16s_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16ll_BFu16s_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFu16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16ll_BFu16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFu16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16ll_BFu16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16ll_BFu16s_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16ll_BFu16s_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFu16s_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16ll_BFu16s_BFs16ll, BFs16s_BFs16ll_BFu16s_BFs16ll)
//============================================================================


struct  BFs16s_BFs16ll_BFu16s_BFs16s  {
  signed short v1:16;
  signed __tsi64 v2:16;
  unsigned short v3:16;
  signed short v4:16;
};
//SIG(1 BFs16s_BFs16ll_BFu16s_BFs16s) C1{ Fs:16 FL:16 Fs:16 Fs:16}



static void Test_BFs16s_BFs16ll_BFu16s_BFs16s()
{
  {
    init_simple_test("BFs16s_BFs16ll_BFu16s_BFs16s");
    static STRUCT_IF_C BFs16s_BFs16ll_BFu16s_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16ll_BFu16s_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16ll_BFu16s_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16ll_BFu16s_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFu16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16ll_BFu16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFu16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16ll_BFu16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16ll_BFu16s_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16ll_BFu16s_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFu16s_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16ll_BFu16s_BFs16s, BFs16s_BFs16ll_BFu16s_BFs16s)
//============================================================================


struct  BFs16s_BFs16ll_BFu16s_BFu16i  {
  signed short v1:16;
  signed __tsi64 v2:16;
  unsigned short v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16s_BFs16ll_BFu16s_BFu16i) C1{ Fs:16 FL:16 Fs:16 Fi:16}



static void Test_BFs16s_BFs16ll_BFu16s_BFu16i()
{
  {
    init_simple_test("BFs16s_BFs16ll_BFu16s_BFu16i");
    static STRUCT_IF_C BFs16s_BFs16ll_BFu16s_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16ll_BFu16s_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16ll_BFu16s_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16ll_BFu16s_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFu16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16ll_BFu16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFu16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16ll_BFu16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16ll_BFu16s_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16ll_BFu16s_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16ll_BFu16s_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16ll_BFu16s_BFu16i, BFs16s_BFs16ll_BFu16s_BFu16i)
//============================================================================


struct  BFs16s_BFs16ll_BFu16s_BFu16ll  {
  signed short v1:16;
  signed __tsi64 v2:16;
  unsigned short v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16s_BFs16ll_BFu16s_BFu16ll) C1{ Fs:16 FL:16 Fs:16 FL:16}



static void Test_BFs16s_BFs16ll_BFu16s_BFu16ll()
{
  {
    init_simple_test("BFs16s_BFs16ll_BFu16s_BFu16ll");
    static STRUCT_IF_C BFs16s_BFs16ll_BFu16s_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16ll_BFu16s_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16ll_BFu16s_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16ll_BFu16s_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFu16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16ll_BFu16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFu16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16ll_BFu16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16ll_BFu16s_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16ll_BFu16s_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16ll_BFu16s_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16ll_BFu16s_BFu16ll, BFs16s_BFs16ll_BFu16s_BFu16ll)
//============================================================================


struct  BFs16s_BFs16ll_BFu16s_BFu16s  {
  signed short v1:16;
  signed __tsi64 v2:16;
  unsigned short v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16s_BFs16ll_BFu16s_BFu16s) C1{ Fs:16 FL:16 Fs:16 Fs:16}



static void Test_BFs16s_BFs16ll_BFu16s_BFu16s()
{
  {
    init_simple_test("BFs16s_BFs16ll_BFu16s_BFu16s");
    static STRUCT_IF_C BFs16s_BFs16ll_BFu16s_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16ll_BFu16s_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16ll_BFu16s_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16ll_BFu16s_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFu16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16ll_BFu16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16ll_BFu16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16ll_BFu16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16ll_BFu16s_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16ll_BFu16s_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16ll_BFu16s_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16ll_BFu16s_BFu16s, BFs16s_BFs16ll_BFu16s_BFu16s)
//============================================================================


struct  BFs16s_BFs16s  {
  signed short v1:16;
  signed short v2:16;
};
//SIG(1 BFs16s_BFs16s) C1{ Fs:16 Fs:16}



static void Test_BFs16s_BFs16s()
{
  {
    init_simple_test("BFs16s_BFs16s");
    static STRUCT_IF_C BFs16s_BFs16s lv;
    check2(sizeof(lv), 4, "sizeof(BFs16s_BFs16s)");
    check2(__alignof__(lv), 2, "__alignof__(BFs16s_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16s, BFs16s_BFs16s)
//============================================================================


struct  BFs16s_BFs16s_BFs16i  {
  signed short v1:16;
  signed short v2:16;
  signed int v3:16;
};
//SIG(1 BFs16s_BFs16s_BFs16i) C1{ Fs:16 Fs:16 Fi:16}



static void Test_BFs16s_BFs16s_BFs16i()
{
  {
    init_simple_test("BFs16s_BFs16s_BFs16i");
    static STRUCT_IF_C BFs16s_BFs16s_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16s_BFs16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16s_BFs16s_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16s_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16s_BFs16i, BFs16s_BFs16s_BFs16i)
//============================================================================


struct  BFs16s_BFs16s_BFs16i_BFs16i  {
  signed short v1:16;
  signed short v2:16;
  signed int v3:16;
  signed int v4:16;
};
//SIG(1 BFs16s_BFs16s_BFs16i_BFs16i) C1{ Fs:16 Fs:16 Fi:16 Fi:16}



static void Test_BFs16s_BFs16s_BFs16i_BFs16i()
{
  {
    init_simple_test("BFs16s_BFs16s_BFs16i_BFs16i");
    static STRUCT_IF_C BFs16s_BFs16s_BFs16i_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16s_BFs16i_BFs16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16s_BFs16s_BFs16i_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16s_BFs16i_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFs16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16s_BFs16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFs16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16s_BFs16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFs16i_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16s_BFs16i_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFs16i_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16s_BFs16i_BFs16i, BFs16s_BFs16s_BFs16i_BFs16i)
//============================================================================


struct  BFs16s_BFs16s_BFs16i_BFs16ll  {
  signed short v1:16;
  signed short v2:16;
  signed int v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16s_BFs16s_BFs16i_BFs16ll) C1{ Fs:16 Fs:16 Fi:16 FL:16}



static void Test_BFs16s_BFs16s_BFs16i_BFs16ll()
{
  {
    init_simple_test("BFs16s_BFs16s_BFs16i_BFs16ll");
    static STRUCT_IF_C BFs16s_BFs16s_BFs16i_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16s_BFs16i_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16s_BFs16i_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16s_BFs16i_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFs16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16s_BFs16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFs16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16s_BFs16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFs16i_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16s_BFs16i_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFs16i_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16s_BFs16i_BFs16ll, BFs16s_BFs16s_BFs16i_BFs16ll)
//============================================================================


struct  BFs16s_BFs16s_BFs16i_BFs16s  {
  signed short v1:16;
  signed short v2:16;
  signed int v3:16;
  signed short v4:16;
};
//SIG(1 BFs16s_BFs16s_BFs16i_BFs16s) C1{ Fs:16 Fs:16 Fi:16 Fs:16}



static void Test_BFs16s_BFs16s_BFs16i_BFs16s()
{
  {
    init_simple_test("BFs16s_BFs16s_BFs16i_BFs16s");
    static STRUCT_IF_C BFs16s_BFs16s_BFs16i_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16s_BFs16i_BFs16s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16s_BFs16s_BFs16i_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16s_BFs16i_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFs16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16s_BFs16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFs16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16s_BFs16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFs16i_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16s_BFs16i_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFs16i_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16s_BFs16i_BFs16s, BFs16s_BFs16s_BFs16i_BFs16s)
//============================================================================


struct  BFs16s_BFs16s_BFs16i_BFu16i  {
  signed short v1:16;
  signed short v2:16;
  signed int v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16s_BFs16s_BFs16i_BFu16i) C1{ Fs:16 Fs:16 Fi:16 Fi:16}



static void Test_BFs16s_BFs16s_BFs16i_BFu16i()
{
  {
    init_simple_test("BFs16s_BFs16s_BFs16i_BFu16i");
    static STRUCT_IF_C BFs16s_BFs16s_BFs16i_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16s_BFs16i_BFu16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16s_BFs16s_BFs16i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16s_BFs16i_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFs16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16s_BFs16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFs16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16s_BFs16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFs16i_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16s_BFs16i_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16s_BFs16i_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16s_BFs16i_BFu16i, BFs16s_BFs16s_BFs16i_BFu16i)
//============================================================================


struct  BFs16s_BFs16s_BFs16i_BFu16ll  {
  signed short v1:16;
  signed short v2:16;
  signed int v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16s_BFs16s_BFs16i_BFu16ll) C1{ Fs:16 Fs:16 Fi:16 FL:16}



static void Test_BFs16s_BFs16s_BFs16i_BFu16ll()
{
  {
    init_simple_test("BFs16s_BFs16s_BFs16i_BFu16ll");
    static STRUCT_IF_C BFs16s_BFs16s_BFs16i_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16s_BFs16i_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16s_BFs16i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16s_BFs16i_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFs16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16s_BFs16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFs16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16s_BFs16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFs16i_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16s_BFs16i_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16s_BFs16i_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16s_BFs16i_BFu16ll, BFs16s_BFs16s_BFs16i_BFu16ll)
//============================================================================


struct  BFs16s_BFs16s_BFs16i_BFu16s  {
  signed short v1:16;
  signed short v2:16;
  signed int v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16s_BFs16s_BFs16i_BFu16s) C1{ Fs:16 Fs:16 Fi:16 Fs:16}



static void Test_BFs16s_BFs16s_BFs16i_BFu16s()
{
  {
    init_simple_test("BFs16s_BFs16s_BFs16i_BFu16s");
    static STRUCT_IF_C BFs16s_BFs16s_BFs16i_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16s_BFs16i_BFu16s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16s_BFs16s_BFs16i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16s_BFs16i_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFs16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16s_BFs16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFs16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16s_BFs16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFs16i_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16s_BFs16i_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16s_BFs16i_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16s_BFs16i_BFu16s, BFs16s_BFs16s_BFs16i_BFu16s)
//============================================================================


struct  BFs16s_BFs16s_BFs16ll  {
  signed short v1:16;
  signed short v2:16;
  signed __tsi64 v3:16;
};
//SIG(1 BFs16s_BFs16s_BFs16ll) C1{ Fs:16 Fs:16 FL:16}



static void Test_BFs16s_BFs16s_BFs16ll()
{
  {
    init_simple_test("BFs16s_BFs16s_BFs16ll");
    static STRUCT_IF_C BFs16s_BFs16s_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16s_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16s_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16s_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16s_BFs16ll, BFs16s_BFs16s_BFs16ll)
//============================================================================


struct  BFs16s_BFs16s_BFs16ll_BFs16i  {
  signed short v1:16;
  signed short v2:16;
  signed __tsi64 v3:16;
  signed int v4:16;
};
//SIG(1 BFs16s_BFs16s_BFs16ll_BFs16i) C1{ Fs:16 Fs:16 FL:16 Fi:16}



static void Test_BFs16s_BFs16s_BFs16ll_BFs16i()
{
  {
    init_simple_test("BFs16s_BFs16s_BFs16ll_BFs16i");
    static STRUCT_IF_C BFs16s_BFs16s_BFs16ll_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16s_BFs16ll_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16s_BFs16ll_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16s_BFs16ll_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFs16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16s_BFs16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFs16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16s_BFs16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFs16ll_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16s_BFs16ll_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFs16ll_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16s_BFs16ll_BFs16i, BFs16s_BFs16s_BFs16ll_BFs16i)
//============================================================================


struct  BFs16s_BFs16s_BFs16ll_BFs16ll  {
  signed short v1:16;
  signed short v2:16;
  signed __tsi64 v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16s_BFs16s_BFs16ll_BFs16ll) C1{ Fs:16 Fs:16 FL:16 FL:16}



static void Test_BFs16s_BFs16s_BFs16ll_BFs16ll()
{
  {
    init_simple_test("BFs16s_BFs16s_BFs16ll_BFs16ll");
    static STRUCT_IF_C BFs16s_BFs16s_BFs16ll_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16s_BFs16ll_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16s_BFs16ll_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16s_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16s_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16s_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16s_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFs16ll_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16s_BFs16ll_BFs16ll, BFs16s_BFs16s_BFs16ll_BFs16ll)
//============================================================================


struct  BFs16s_BFs16s_BFs16ll_BFs16s  {
  signed short v1:16;
  signed short v2:16;
  signed __tsi64 v3:16;
  signed short v4:16;
};
//SIG(1 BFs16s_BFs16s_BFs16ll_BFs16s) C1{ Fs:16 Fs:16 FL:16 Fs:16}



static void Test_BFs16s_BFs16s_BFs16ll_BFs16s()
{
  {
    init_simple_test("BFs16s_BFs16s_BFs16ll_BFs16s");
    static STRUCT_IF_C BFs16s_BFs16s_BFs16ll_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16s_BFs16ll_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16s_BFs16ll_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16s_BFs16ll_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFs16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16s_BFs16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFs16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16s_BFs16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFs16ll_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16s_BFs16ll_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFs16ll_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16s_BFs16ll_BFs16s, BFs16s_BFs16s_BFs16ll_BFs16s)
//============================================================================


struct  BFs16s_BFs16s_BFs16ll_BFu16i  {
  signed short v1:16;
  signed short v2:16;
  signed __tsi64 v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16s_BFs16s_BFs16ll_BFu16i) C1{ Fs:16 Fs:16 FL:16 Fi:16}



static void Test_BFs16s_BFs16s_BFs16ll_BFu16i()
{
  {
    init_simple_test("BFs16s_BFs16s_BFs16ll_BFu16i");
    static STRUCT_IF_C BFs16s_BFs16s_BFs16ll_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16s_BFs16ll_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16s_BFs16ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16s_BFs16ll_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFs16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16s_BFs16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFs16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16s_BFs16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFs16ll_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16s_BFs16ll_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16s_BFs16ll_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16s_BFs16ll_BFu16i, BFs16s_BFs16s_BFs16ll_BFu16i)
//============================================================================


struct  BFs16s_BFs16s_BFs16ll_BFu16ll  {
  signed short v1:16;
  signed short v2:16;
  signed __tsi64 v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16s_BFs16s_BFs16ll_BFu16ll) C1{ Fs:16 Fs:16 FL:16 FL:16}



static void Test_BFs16s_BFs16s_BFs16ll_BFu16ll()
{
  {
    init_simple_test("BFs16s_BFs16s_BFs16ll_BFu16ll");
    static STRUCT_IF_C BFs16s_BFs16s_BFs16ll_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16s_BFs16ll_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16s_BFs16ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16s_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16s_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16s_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16s_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16s_BFs16ll_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16s_BFs16ll_BFu16ll, BFs16s_BFs16s_BFs16ll_BFu16ll)
//============================================================================


struct  BFs16s_BFs16s_BFs16ll_BFu16s  {
  signed short v1:16;
  signed short v2:16;
  signed __tsi64 v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16s_BFs16s_BFs16ll_BFu16s) C1{ Fs:16 Fs:16 FL:16 Fs:16}



static void Test_BFs16s_BFs16s_BFs16ll_BFu16s()
{
  {
    init_simple_test("BFs16s_BFs16s_BFs16ll_BFu16s");
    static STRUCT_IF_C BFs16s_BFs16s_BFs16ll_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16s_BFs16ll_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16s_BFs16ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16s_BFs16ll_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFs16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16s_BFs16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFs16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16s_BFs16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFs16ll_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16s_BFs16ll_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16s_BFs16ll_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16s_BFs16ll_BFu16s, BFs16s_BFs16s_BFs16ll_BFu16s)
//============================================================================


struct  BFs16s_BFs16s_BFs16s  {
  signed short v1:16;
  signed short v2:16;
  signed short v3:16;
};
//SIG(1 BFs16s_BFs16s_BFs16s) C1{ Fs:16 Fs:16 Fs:16}



static void Test_BFs16s_BFs16s_BFs16s()
{
  {
    init_simple_test("BFs16s_BFs16s_BFs16s");
    static STRUCT_IF_C BFs16s_BFs16s_BFs16s lv;
    check2(sizeof(lv), 6, "sizeof(BFs16s_BFs16s_BFs16s)");
    check2(__alignof__(lv), 2, "__alignof__(BFs16s_BFs16s_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16s_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16s_BFs16s, BFs16s_BFs16s_BFs16s)
//============================================================================


struct  BFs16s_BFs16s_BFs16s_BFs16i  {
  signed short v1:16;
  signed short v2:16;
  signed short v3:16;
  signed int v4:16;
};
//SIG(1 BFs16s_BFs16s_BFs16s_BFs16i) C1{ Fs:16 Fs:16 Fs:16 Fi:16}



static void Test_BFs16s_BFs16s_BFs16s_BFs16i()
{
  {
    init_simple_test("BFs16s_BFs16s_BFs16s_BFs16i");
    static STRUCT_IF_C BFs16s_BFs16s_BFs16s_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16s_BFs16s_BFs16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16s_BFs16s_BFs16s_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16s_BFs16s_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFs16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16s_BFs16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFs16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16s_BFs16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFs16s_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16s_BFs16s_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFs16s_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16s_BFs16s_BFs16i, BFs16s_BFs16s_BFs16s_BFs16i)
//============================================================================


struct  BFs16s_BFs16s_BFs16s_BFs16ll  {
  signed short v1:16;
  signed short v2:16;
  signed short v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16s_BFs16s_BFs16s_BFs16ll) C1{ Fs:16 Fs:16 Fs:16 FL:16}



static void Test_BFs16s_BFs16s_BFs16s_BFs16ll()
{
  {
    init_simple_test("BFs16s_BFs16s_BFs16s_BFs16ll");
    static STRUCT_IF_C BFs16s_BFs16s_BFs16s_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16s_BFs16s_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16s_BFs16s_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16s_BFs16s_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFs16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16s_BFs16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFs16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16s_BFs16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFs16s_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16s_BFs16s_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFs16s_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16s_BFs16s_BFs16ll, BFs16s_BFs16s_BFs16s_BFs16ll)
//============================================================================


struct  BFs16s_BFs16s_BFs16s_BFs16s  {
  signed short v1:16;
  signed short v2:16;
  signed short v3:16;
  signed short v4:16;
};
//SIG(1 BFs16s_BFs16s_BFs16s_BFs16s) C1{ Fs:16 Fs:16 Fs:16 Fs:16}



static void Test_BFs16s_BFs16s_BFs16s_BFs16s()
{
  {
    init_simple_test("BFs16s_BFs16s_BFs16s_BFs16s");
    static STRUCT_IF_C BFs16s_BFs16s_BFs16s_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16s_BFs16s_BFs16s)");
    check2(__alignof__(lv), 2, "__alignof__(BFs16s_BFs16s_BFs16s_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16s_BFs16s_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFs16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16s_BFs16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFs16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16s_BFs16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFs16s_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16s_BFs16s_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFs16s_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16s_BFs16s_BFs16s, BFs16s_BFs16s_BFs16s_BFs16s)
//============================================================================


struct  BFs16s_BFs16s_BFs16s_BFu16i  {
  signed short v1:16;
  signed short v2:16;
  signed short v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16s_BFs16s_BFs16s_BFu16i) C1{ Fs:16 Fs:16 Fs:16 Fi:16}



static void Test_BFs16s_BFs16s_BFs16s_BFu16i()
{
  {
    init_simple_test("BFs16s_BFs16s_BFs16s_BFu16i");
    static STRUCT_IF_C BFs16s_BFs16s_BFs16s_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16s_BFs16s_BFu16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16s_BFs16s_BFs16s_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16s_BFs16s_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFs16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16s_BFs16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFs16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16s_BFs16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFs16s_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16s_BFs16s_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16s_BFs16s_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16s_BFs16s_BFu16i, BFs16s_BFs16s_BFs16s_BFu16i)
//============================================================================


struct  BFs16s_BFs16s_BFs16s_BFu16ll  {
  signed short v1:16;
  signed short v2:16;
  signed short v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16s_BFs16s_BFs16s_BFu16ll) C1{ Fs:16 Fs:16 Fs:16 FL:16}



static void Test_BFs16s_BFs16s_BFs16s_BFu16ll()
{
  {
    init_simple_test("BFs16s_BFs16s_BFs16s_BFu16ll");
    static STRUCT_IF_C BFs16s_BFs16s_BFs16s_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16s_BFs16s_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16s_BFs16s_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16s_BFs16s_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFs16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16s_BFs16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFs16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16s_BFs16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFs16s_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16s_BFs16s_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16s_BFs16s_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16s_BFs16s_BFu16ll, BFs16s_BFs16s_BFs16s_BFu16ll)
//============================================================================


struct  BFs16s_BFs16s_BFs16s_BFu16s  {
  signed short v1:16;
  signed short v2:16;
  signed short v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16s_BFs16s_BFs16s_BFu16s) C1{ Fs:16 Fs:16 Fs:16 Fs:16}



static void Test_BFs16s_BFs16s_BFs16s_BFu16s()
{
  {
    init_simple_test("BFs16s_BFs16s_BFs16s_BFu16s");
    static STRUCT_IF_C BFs16s_BFs16s_BFs16s_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16s_BFs16s_BFu16s)");
    check2(__alignof__(lv), 2, "__alignof__(BFs16s_BFs16s_BFs16s_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16s_BFs16s_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFs16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16s_BFs16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFs16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16s_BFs16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFs16s_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16s_BFs16s_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16s_BFs16s_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16s_BFs16s_BFu16s, BFs16s_BFs16s_BFs16s_BFu16s)
//============================================================================


struct  BFs16s_BFs16s_BFu16i  {
  signed short v1:16;
  signed short v2:16;
  unsigned int v3:16;
};
//SIG(1 BFs16s_BFs16s_BFu16i) C1{ Fs:16 Fs:16 Fi:16}



static void Test_BFs16s_BFs16s_BFu16i()
{
  {
    init_simple_test("BFs16s_BFs16s_BFu16i");
    static STRUCT_IF_C BFs16s_BFs16s_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16s_BFu16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16s_BFs16s_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16s_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16s_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16s_BFu16i, BFs16s_BFs16s_BFu16i)
//============================================================================


struct  BFs16s_BFs16s_BFu16i_BFs16i  {
  signed short v1:16;
  signed short v2:16;
  unsigned int v3:16;
  signed int v4:16;
};
//SIG(1 BFs16s_BFs16s_BFu16i_BFs16i) C1{ Fs:16 Fs:16 Fi:16 Fi:16}



static void Test_BFs16s_BFs16s_BFu16i_BFs16i()
{
  {
    init_simple_test("BFs16s_BFs16s_BFu16i_BFs16i");
    static STRUCT_IF_C BFs16s_BFs16s_BFu16i_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16s_BFu16i_BFs16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16s_BFs16s_BFu16i_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16s_BFu16i_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFu16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16s_BFu16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFu16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16s_BFu16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16s_BFu16i_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16s_BFu16i_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFu16i_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16s_BFu16i_BFs16i, BFs16s_BFs16s_BFu16i_BFs16i)
//============================================================================


struct  BFs16s_BFs16s_BFu16i_BFs16ll  {
  signed short v1:16;
  signed short v2:16;
  unsigned int v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16s_BFs16s_BFu16i_BFs16ll) C1{ Fs:16 Fs:16 Fi:16 FL:16}



static void Test_BFs16s_BFs16s_BFu16i_BFs16ll()
{
  {
    init_simple_test("BFs16s_BFs16s_BFu16i_BFs16ll");
    static STRUCT_IF_C BFs16s_BFs16s_BFu16i_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16s_BFu16i_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16s_BFu16i_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16s_BFu16i_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFu16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16s_BFu16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFu16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16s_BFu16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16s_BFu16i_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16s_BFu16i_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFu16i_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16s_BFu16i_BFs16ll, BFs16s_BFs16s_BFu16i_BFs16ll)
//============================================================================


struct  BFs16s_BFs16s_BFu16i_BFs16s  {
  signed short v1:16;
  signed short v2:16;
  unsigned int v3:16;
  signed short v4:16;
};
//SIG(1 BFs16s_BFs16s_BFu16i_BFs16s) C1{ Fs:16 Fs:16 Fi:16 Fs:16}



static void Test_BFs16s_BFs16s_BFu16i_BFs16s()
{
  {
    init_simple_test("BFs16s_BFs16s_BFu16i_BFs16s");
    static STRUCT_IF_C BFs16s_BFs16s_BFu16i_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16s_BFu16i_BFs16s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16s_BFs16s_BFu16i_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16s_BFu16i_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFu16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16s_BFu16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFu16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16s_BFu16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16s_BFu16i_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16s_BFu16i_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFu16i_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16s_BFu16i_BFs16s, BFs16s_BFs16s_BFu16i_BFs16s)
//============================================================================


struct  BFs16s_BFs16s_BFu16i_BFu16i  {
  signed short v1:16;
  signed short v2:16;
  unsigned int v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16s_BFs16s_BFu16i_BFu16i) C1{ Fs:16 Fs:16 Fi:16 Fi:16}



static void Test_BFs16s_BFs16s_BFu16i_BFu16i()
{
  {
    init_simple_test("BFs16s_BFs16s_BFu16i_BFu16i");
    static STRUCT_IF_C BFs16s_BFs16s_BFu16i_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16s_BFu16i_BFu16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16s_BFs16s_BFu16i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16s_BFu16i_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFu16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16s_BFu16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFu16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16s_BFu16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16s_BFu16i_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16s_BFu16i_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16s_BFu16i_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16s_BFu16i_BFu16i, BFs16s_BFs16s_BFu16i_BFu16i)
//============================================================================


struct  BFs16s_BFs16s_BFu16i_BFu16ll  {
  signed short v1:16;
  signed short v2:16;
  unsigned int v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16s_BFs16s_BFu16i_BFu16ll) C1{ Fs:16 Fs:16 Fi:16 FL:16}



static void Test_BFs16s_BFs16s_BFu16i_BFu16ll()
{
  {
    init_simple_test("BFs16s_BFs16s_BFu16i_BFu16ll");
    static STRUCT_IF_C BFs16s_BFs16s_BFu16i_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16s_BFu16i_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16s_BFu16i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16s_BFu16i_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFu16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16s_BFu16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFu16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16s_BFu16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16s_BFu16i_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16s_BFu16i_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16s_BFu16i_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16s_BFu16i_BFu16ll, BFs16s_BFs16s_BFu16i_BFu16ll)
//============================================================================


struct  BFs16s_BFs16s_BFu16i_BFu16s  {
  signed short v1:16;
  signed short v2:16;
  unsigned int v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16s_BFs16s_BFu16i_BFu16s) C1{ Fs:16 Fs:16 Fi:16 Fs:16}



static void Test_BFs16s_BFs16s_BFu16i_BFu16s()
{
  {
    init_simple_test("BFs16s_BFs16s_BFu16i_BFu16s");
    static STRUCT_IF_C BFs16s_BFs16s_BFu16i_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16s_BFu16i_BFu16s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16s_BFs16s_BFu16i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16s_BFu16i_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFu16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16s_BFu16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFu16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16s_BFu16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16s_BFu16i_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16s_BFu16i_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16s_BFu16i_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16s_BFu16i_BFu16s, BFs16s_BFs16s_BFu16i_BFu16s)
//============================================================================


struct  BFs16s_BFs16s_BFu16ll  {
  signed short v1:16;
  signed short v2:16;
  __tsu64 v3:16;
};
//SIG(1 BFs16s_BFs16s_BFu16ll) C1{ Fs:16 Fs:16 FL:16}



static void Test_BFs16s_BFs16s_BFu16ll()
{
  {
    init_simple_test("BFs16s_BFs16s_BFu16ll");
    static STRUCT_IF_C BFs16s_BFs16s_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16s_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16s_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16s_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16s_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16s_BFu16ll, BFs16s_BFs16s_BFu16ll)
//============================================================================


struct  BFs16s_BFs16s_BFu16ll_BFs16i  {
  signed short v1:16;
  signed short v2:16;
  __tsu64 v3:16;
  signed int v4:16;
};
//SIG(1 BFs16s_BFs16s_BFu16ll_BFs16i) C1{ Fs:16 Fs:16 FL:16 Fi:16}



static void Test_BFs16s_BFs16s_BFu16ll_BFs16i()
{
  {
    init_simple_test("BFs16s_BFs16s_BFu16ll_BFs16i");
    static STRUCT_IF_C BFs16s_BFs16s_BFu16ll_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16s_BFu16ll_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16s_BFu16ll_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16s_BFu16ll_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFu16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16s_BFu16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFu16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16s_BFu16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16s_BFu16ll_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16s_BFu16ll_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFu16ll_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16s_BFu16ll_BFs16i, BFs16s_BFs16s_BFu16ll_BFs16i)
//============================================================================


struct  BFs16s_BFs16s_BFu16ll_BFs16ll  {
  signed short v1:16;
  signed short v2:16;
  __tsu64 v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16s_BFs16s_BFu16ll_BFs16ll) C1{ Fs:16 Fs:16 FL:16 FL:16}



static void Test_BFs16s_BFs16s_BFu16ll_BFs16ll()
{
  {
    init_simple_test("BFs16s_BFs16s_BFu16ll_BFs16ll");
    static STRUCT_IF_C BFs16s_BFs16s_BFu16ll_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16s_BFu16ll_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16s_BFu16ll_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16s_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16s_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16s_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16s_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16s_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFu16ll_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16s_BFu16ll_BFs16ll, BFs16s_BFs16s_BFu16ll_BFs16ll)
//============================================================================


struct  BFs16s_BFs16s_BFu16ll_BFs16s  {
  signed short v1:16;
  signed short v2:16;
  __tsu64 v3:16;
  signed short v4:16;
};
//SIG(1 BFs16s_BFs16s_BFu16ll_BFs16s) C1{ Fs:16 Fs:16 FL:16 Fs:16}



static void Test_BFs16s_BFs16s_BFu16ll_BFs16s()
{
  {
    init_simple_test("BFs16s_BFs16s_BFu16ll_BFs16s");
    static STRUCT_IF_C BFs16s_BFs16s_BFu16ll_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16s_BFu16ll_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16s_BFu16ll_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16s_BFu16ll_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFu16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16s_BFu16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFu16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16s_BFu16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16s_BFu16ll_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16s_BFu16ll_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFu16ll_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16s_BFu16ll_BFs16s, BFs16s_BFs16s_BFu16ll_BFs16s)
//============================================================================


struct  BFs16s_BFs16s_BFu16ll_BFu16i  {
  signed short v1:16;
  signed short v2:16;
  __tsu64 v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16s_BFs16s_BFu16ll_BFu16i) C1{ Fs:16 Fs:16 FL:16 Fi:16}



static void Test_BFs16s_BFs16s_BFu16ll_BFu16i()
{
  {
    init_simple_test("BFs16s_BFs16s_BFu16ll_BFu16i");
    static STRUCT_IF_C BFs16s_BFs16s_BFu16ll_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16s_BFu16ll_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16s_BFu16ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16s_BFu16ll_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFu16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16s_BFu16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFu16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16s_BFu16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16s_BFu16ll_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16s_BFu16ll_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16s_BFu16ll_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16s_BFu16ll_BFu16i, BFs16s_BFs16s_BFu16ll_BFu16i)
//============================================================================


struct  BFs16s_BFs16s_BFu16ll_BFu16ll  {
  signed short v1:16;
  signed short v2:16;
  __tsu64 v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16s_BFs16s_BFu16ll_BFu16ll) C1{ Fs:16 Fs:16 FL:16 FL:16}



static void Test_BFs16s_BFs16s_BFu16ll_BFu16ll()
{
  {
    init_simple_test("BFs16s_BFs16s_BFu16ll_BFu16ll");
    static STRUCT_IF_C BFs16s_BFs16s_BFu16ll_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16s_BFu16ll_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16s_BFu16ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16s_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16s_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16s_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16s_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16s_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16s_BFu16ll_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16s_BFu16ll_BFu16ll, BFs16s_BFs16s_BFu16ll_BFu16ll)
//============================================================================


struct  BFs16s_BFs16s_BFu16ll_BFu16s  {
  signed short v1:16;
  signed short v2:16;
  __tsu64 v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16s_BFs16s_BFu16ll_BFu16s) C1{ Fs:16 Fs:16 FL:16 Fs:16}



static void Test_BFs16s_BFs16s_BFu16ll_BFu16s()
{
  {
    init_simple_test("BFs16s_BFs16s_BFu16ll_BFu16s");
    static STRUCT_IF_C BFs16s_BFs16s_BFu16ll_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16s_BFu16ll_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16s_BFu16ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16s_BFu16ll_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFu16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16s_BFu16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFu16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16s_BFu16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16s_BFu16ll_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16s_BFu16ll_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16s_BFu16ll_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16s_BFu16ll_BFu16s, BFs16s_BFs16s_BFu16ll_BFu16s)
//============================================================================


struct  BFs16s_BFs16s_BFu16s  {
  signed short v1:16;
  signed short v2:16;
  unsigned short v3:16;
};
//SIG(1 BFs16s_BFs16s_BFu16s) C1{ Fs:16 Fs:16 Fs:16}



static void Test_BFs16s_BFs16s_BFu16s()
{
  {
    init_simple_test("BFs16s_BFs16s_BFu16s");
    static STRUCT_IF_C BFs16s_BFs16s_BFu16s lv;
    check2(sizeof(lv), 6, "sizeof(BFs16s_BFs16s_BFu16s)");
    check2(__alignof__(lv), 2, "__alignof__(BFs16s_BFs16s_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16s_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16s_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16s_BFu16s, BFs16s_BFs16s_BFu16s)
//============================================================================


struct  BFs16s_BFs16s_BFu16s_BFs16i  {
  signed short v1:16;
  signed short v2:16;
  unsigned short v3:16;
  signed int v4:16;
};
//SIG(1 BFs16s_BFs16s_BFu16s_BFs16i) C1{ Fs:16 Fs:16 Fs:16 Fi:16}



static void Test_BFs16s_BFs16s_BFu16s_BFs16i()
{
  {
    init_simple_test("BFs16s_BFs16s_BFu16s_BFs16i");
    static STRUCT_IF_C BFs16s_BFs16s_BFu16s_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16s_BFu16s_BFs16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16s_BFs16s_BFu16s_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16s_BFu16s_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFu16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16s_BFu16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFu16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16s_BFu16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16s_BFu16s_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16s_BFu16s_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFu16s_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16s_BFu16s_BFs16i, BFs16s_BFs16s_BFu16s_BFs16i)
//============================================================================


struct  BFs16s_BFs16s_BFu16s_BFs16ll  {
  signed short v1:16;
  signed short v2:16;
  unsigned short v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16s_BFs16s_BFu16s_BFs16ll) C1{ Fs:16 Fs:16 Fs:16 FL:16}



static void Test_BFs16s_BFs16s_BFu16s_BFs16ll()
{
  {
    init_simple_test("BFs16s_BFs16s_BFu16s_BFs16ll");
    static STRUCT_IF_C BFs16s_BFs16s_BFu16s_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16s_BFu16s_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16s_BFu16s_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16s_BFu16s_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFu16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16s_BFu16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFu16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16s_BFu16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16s_BFu16s_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16s_BFu16s_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFu16s_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16s_BFu16s_BFs16ll, BFs16s_BFs16s_BFu16s_BFs16ll)
//============================================================================


struct  BFs16s_BFs16s_BFu16s_BFs16s  {
  signed short v1:16;
  signed short v2:16;
  unsigned short v3:16;
  signed short v4:16;
};
//SIG(1 BFs16s_BFs16s_BFu16s_BFs16s) C1{ Fs:16 Fs:16 Fs:16 Fs:16}



static void Test_BFs16s_BFs16s_BFu16s_BFs16s()
{
  {
    init_simple_test("BFs16s_BFs16s_BFu16s_BFs16s");
    static STRUCT_IF_C BFs16s_BFs16s_BFu16s_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16s_BFu16s_BFs16s)");
    check2(__alignof__(lv), 2, "__alignof__(BFs16s_BFs16s_BFu16s_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16s_BFu16s_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFu16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16s_BFu16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFu16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16s_BFu16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16s_BFu16s_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16s_BFu16s_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFu16s_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16s_BFu16s_BFs16s, BFs16s_BFs16s_BFu16s_BFs16s)
//============================================================================


struct  BFs16s_BFs16s_BFu16s_BFu16i  {
  signed short v1:16;
  signed short v2:16;
  unsigned short v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16s_BFs16s_BFu16s_BFu16i) C1{ Fs:16 Fs:16 Fs:16 Fi:16}



static void Test_BFs16s_BFs16s_BFu16s_BFu16i()
{
  {
    init_simple_test("BFs16s_BFs16s_BFu16s_BFu16i");
    static STRUCT_IF_C BFs16s_BFs16s_BFu16s_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16s_BFu16s_BFu16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16s_BFs16s_BFu16s_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16s_BFu16s_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFu16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16s_BFu16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFu16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16s_BFu16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16s_BFu16s_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16s_BFu16s_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16s_BFu16s_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16s_BFu16s_BFu16i, BFs16s_BFs16s_BFu16s_BFu16i)
//============================================================================


struct  BFs16s_BFs16s_BFu16s_BFu16ll  {
  signed short v1:16;
  signed short v2:16;
  unsigned short v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16s_BFs16s_BFu16s_BFu16ll) C1{ Fs:16 Fs:16 Fs:16 FL:16}



static void Test_BFs16s_BFs16s_BFu16s_BFu16ll()
{
  {
    init_simple_test("BFs16s_BFs16s_BFu16s_BFu16ll");
    static STRUCT_IF_C BFs16s_BFs16s_BFu16s_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16s_BFu16s_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFs16s_BFu16s_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16s_BFu16s_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFu16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16s_BFu16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFu16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16s_BFu16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16s_BFu16s_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16s_BFu16s_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16s_BFu16s_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16s_BFu16s_BFu16ll, BFs16s_BFs16s_BFu16s_BFu16ll)
//============================================================================


struct  BFs16s_BFs16s_BFu16s_BFu16s  {
  signed short v1:16;
  signed short v2:16;
  unsigned short v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16s_BFs16s_BFu16s_BFu16s) C1{ Fs:16 Fs:16 Fs:16 Fs:16}



static void Test_BFs16s_BFs16s_BFu16s_BFu16s()
{
  {
    init_simple_test("BFs16s_BFs16s_BFu16s_BFu16s");
    static STRUCT_IF_C BFs16s_BFs16s_BFu16s_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFs16s_BFu16s_BFu16s)");
    check2(__alignof__(lv), 2, "__alignof__(BFs16s_BFs16s_BFu16s_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFs16s_BFu16s_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFu16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFs16s_BFu16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_sll(1LL<<15), "BFs16s_BFs16s_BFu16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFs16s_BFu16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16s_BFu16s_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFs16s_BFu16s_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFs16s_BFu16s_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFs16s_BFu16s_BFu16s, BFs16s_BFs16s_BFu16s_BFu16s)
//============================================================================


struct  BFs16s_BFu16i  {
  signed short v1:16;
  unsigned int v2:16;
};
//SIG(1 BFs16s_BFu16i) C1{ Fs:16 Fi:16}



static void Test_BFs16s_BFu16i()
{
  {
    init_simple_test("BFs16s_BFu16i");
    static STRUCT_IF_C BFs16s_BFu16i lv;
    check2(sizeof(lv), 4, "sizeof(BFs16s_BFu16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16s_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16i, BFs16s_BFu16i)
//============================================================================


struct  BFs16s_BFu16i_BFs16i  {
  signed short v1:16;
  unsigned int v2:16;
  signed int v3:16;
};
//SIG(1 BFs16s_BFu16i_BFs16i) C1{ Fs:16 Fi:16 Fi:16}



static void Test_BFs16s_BFu16i_BFs16i()
{
  {
    init_simple_test("BFs16s_BFu16i_BFs16i");
    static STRUCT_IF_C BFs16s_BFu16i_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16i_BFs16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16s_BFu16i_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16i_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16i_BFs16i, BFs16s_BFu16i_BFs16i)
//============================================================================


struct  BFs16s_BFu16i_BFs16i_BFs16i  {
  signed short v1:16;
  unsigned int v2:16;
  signed int v3:16;
  signed int v4:16;
};
//SIG(1 BFs16s_BFu16i_BFs16i_BFs16i) C1{ Fs:16 Fi:16 Fi:16 Fi:16}



static void Test_BFs16s_BFu16i_BFs16i_BFs16i()
{
  {
    init_simple_test("BFs16s_BFu16i_BFs16i_BFs16i");
    static STRUCT_IF_C BFs16s_BFu16i_BFs16i_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16i_BFs16i_BFs16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16s_BFu16i_BFs16i_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16i_BFs16i_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFs16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16i_BFs16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFs16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16i_BFs16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFs16i_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16i_BFs16i_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFs16i_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16i_BFs16i_BFs16i, BFs16s_BFu16i_BFs16i_BFs16i)
//============================================================================


struct  BFs16s_BFu16i_BFs16i_BFs16ll  {
  signed short v1:16;
  unsigned int v2:16;
  signed int v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16s_BFu16i_BFs16i_BFs16ll) C1{ Fs:16 Fi:16 Fi:16 FL:16}



static void Test_BFs16s_BFu16i_BFs16i_BFs16ll()
{
  {
    init_simple_test("BFs16s_BFu16i_BFs16i_BFs16ll");
    static STRUCT_IF_C BFs16s_BFu16i_BFs16i_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16i_BFs16i_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16i_BFs16i_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16i_BFs16i_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFs16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16i_BFs16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFs16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16i_BFs16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFs16i_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16i_BFs16i_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFs16i_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16i_BFs16i_BFs16ll, BFs16s_BFu16i_BFs16i_BFs16ll)
//============================================================================


struct  BFs16s_BFu16i_BFs16i_BFs16s  {
  signed short v1:16;
  unsigned int v2:16;
  signed int v3:16;
  signed short v4:16;
};
//SIG(1 BFs16s_BFu16i_BFs16i_BFs16s) C1{ Fs:16 Fi:16 Fi:16 Fs:16}



static void Test_BFs16s_BFu16i_BFs16i_BFs16s()
{
  {
    init_simple_test("BFs16s_BFu16i_BFs16i_BFs16s");
    static STRUCT_IF_C BFs16s_BFu16i_BFs16i_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16i_BFs16i_BFs16s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16s_BFu16i_BFs16i_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16i_BFs16i_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFs16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16i_BFs16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFs16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16i_BFs16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFs16i_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16i_BFs16i_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFs16i_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16i_BFs16i_BFs16s, BFs16s_BFu16i_BFs16i_BFs16s)
//============================================================================


struct  BFs16s_BFu16i_BFs16i_BFu16i  {
  signed short v1:16;
  unsigned int v2:16;
  signed int v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16s_BFu16i_BFs16i_BFu16i) C1{ Fs:16 Fi:16 Fi:16 Fi:16}



static void Test_BFs16s_BFu16i_BFs16i_BFu16i()
{
  {
    init_simple_test("BFs16s_BFu16i_BFs16i_BFu16i");
    static STRUCT_IF_C BFs16s_BFu16i_BFs16i_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16i_BFs16i_BFu16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16s_BFu16i_BFs16i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16i_BFs16i_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFs16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16i_BFs16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFs16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16i_BFs16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFs16i_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16i_BFs16i_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFs16i_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16i_BFs16i_BFu16i, BFs16s_BFu16i_BFs16i_BFu16i)
//============================================================================


struct  BFs16s_BFu16i_BFs16i_BFu16ll  {
  signed short v1:16;
  unsigned int v2:16;
  signed int v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16s_BFu16i_BFs16i_BFu16ll) C1{ Fs:16 Fi:16 Fi:16 FL:16}



static void Test_BFs16s_BFu16i_BFs16i_BFu16ll()
{
  {
    init_simple_test("BFs16s_BFu16i_BFs16i_BFu16ll");
    static STRUCT_IF_C BFs16s_BFu16i_BFs16i_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16i_BFs16i_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16i_BFs16i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16i_BFs16i_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFs16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16i_BFs16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFs16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16i_BFs16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFs16i_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16i_BFs16i_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFs16i_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16i_BFs16i_BFu16ll, BFs16s_BFu16i_BFs16i_BFu16ll)
//============================================================================


struct  BFs16s_BFu16i_BFs16i_BFu16s  {
  signed short v1:16;
  unsigned int v2:16;
  signed int v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16s_BFu16i_BFs16i_BFu16s) C1{ Fs:16 Fi:16 Fi:16 Fs:16}



static void Test_BFs16s_BFu16i_BFs16i_BFu16s()
{
  {
    init_simple_test("BFs16s_BFu16i_BFs16i_BFu16s");
    static STRUCT_IF_C BFs16s_BFu16i_BFs16i_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16i_BFs16i_BFu16s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16s_BFu16i_BFs16i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16i_BFs16i_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFs16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16i_BFs16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFs16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16i_BFs16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFs16i_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16i_BFs16i_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFs16i_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16i_BFs16i_BFu16s, BFs16s_BFu16i_BFs16i_BFu16s)
//============================================================================


struct  BFs16s_BFu16i_BFs16ll  {
  signed short v1:16;
  unsigned int v2:16;
  signed __tsi64 v3:16;
};
//SIG(1 BFs16s_BFu16i_BFs16ll) C1{ Fs:16 Fi:16 FL:16}



static void Test_BFs16s_BFu16i_BFs16ll()
{
  {
    init_simple_test("BFs16s_BFu16i_BFs16ll");
    static STRUCT_IF_C BFs16s_BFu16i_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16i_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16i_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16i_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16i_BFs16ll, BFs16s_BFu16i_BFs16ll)
//============================================================================


struct  BFs16s_BFu16i_BFs16ll_BFs16i  {
  signed short v1:16;
  unsigned int v2:16;
  signed __tsi64 v3:16;
  signed int v4:16;
};
//SIG(1 BFs16s_BFu16i_BFs16ll_BFs16i) C1{ Fs:16 Fi:16 FL:16 Fi:16}



static void Test_BFs16s_BFu16i_BFs16ll_BFs16i()
{
  {
    init_simple_test("BFs16s_BFu16i_BFs16ll_BFs16i");
    static STRUCT_IF_C BFs16s_BFu16i_BFs16ll_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16i_BFs16ll_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16i_BFs16ll_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16i_BFs16ll_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFs16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16i_BFs16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFs16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16i_BFs16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFs16ll_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16i_BFs16ll_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFs16ll_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16i_BFs16ll_BFs16i, BFs16s_BFu16i_BFs16ll_BFs16i)
//============================================================================


struct  BFs16s_BFu16i_BFs16ll_BFs16ll  {
  signed short v1:16;
  unsigned int v2:16;
  signed __tsi64 v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16s_BFu16i_BFs16ll_BFs16ll) C1{ Fs:16 Fi:16 FL:16 FL:16}



static void Test_BFs16s_BFu16i_BFs16ll_BFs16ll()
{
  {
    init_simple_test("BFs16s_BFu16i_BFs16ll_BFs16ll");
    static STRUCT_IF_C BFs16s_BFu16i_BFs16ll_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16i_BFs16ll_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16i_BFs16ll_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16i_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16i_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16i_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16i_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFs16ll_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16i_BFs16ll_BFs16ll, BFs16s_BFu16i_BFs16ll_BFs16ll)
//============================================================================


struct  BFs16s_BFu16i_BFs16ll_BFs16s  {
  signed short v1:16;
  unsigned int v2:16;
  signed __tsi64 v3:16;
  signed short v4:16;
};
//SIG(1 BFs16s_BFu16i_BFs16ll_BFs16s) C1{ Fs:16 Fi:16 FL:16 Fs:16}



static void Test_BFs16s_BFu16i_BFs16ll_BFs16s()
{
  {
    init_simple_test("BFs16s_BFu16i_BFs16ll_BFs16s");
    static STRUCT_IF_C BFs16s_BFu16i_BFs16ll_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16i_BFs16ll_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16i_BFs16ll_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16i_BFs16ll_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFs16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16i_BFs16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFs16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16i_BFs16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFs16ll_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16i_BFs16ll_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFs16ll_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16i_BFs16ll_BFs16s, BFs16s_BFu16i_BFs16ll_BFs16s)
//============================================================================


struct  BFs16s_BFu16i_BFs16ll_BFu16i  {
  signed short v1:16;
  unsigned int v2:16;
  signed __tsi64 v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16s_BFu16i_BFs16ll_BFu16i) C1{ Fs:16 Fi:16 FL:16 Fi:16}



static void Test_BFs16s_BFu16i_BFs16ll_BFu16i()
{
  {
    init_simple_test("BFs16s_BFu16i_BFs16ll_BFu16i");
    static STRUCT_IF_C BFs16s_BFu16i_BFs16ll_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16i_BFs16ll_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16i_BFs16ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16i_BFs16ll_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFs16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16i_BFs16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFs16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16i_BFs16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFs16ll_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16i_BFs16ll_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFs16ll_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16i_BFs16ll_BFu16i, BFs16s_BFu16i_BFs16ll_BFu16i)
//============================================================================


struct  BFs16s_BFu16i_BFs16ll_BFu16ll  {
  signed short v1:16;
  unsigned int v2:16;
  signed __tsi64 v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16s_BFu16i_BFs16ll_BFu16ll) C1{ Fs:16 Fi:16 FL:16 FL:16}



static void Test_BFs16s_BFu16i_BFs16ll_BFu16ll()
{
  {
    init_simple_test("BFs16s_BFu16i_BFs16ll_BFu16ll");
    static STRUCT_IF_C BFs16s_BFu16i_BFs16ll_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16i_BFs16ll_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16i_BFs16ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16i_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16i_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16i_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16i_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFs16ll_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16i_BFs16ll_BFu16ll, BFs16s_BFu16i_BFs16ll_BFu16ll)
//============================================================================


struct  BFs16s_BFu16i_BFs16ll_BFu16s  {
  signed short v1:16;
  unsigned int v2:16;
  signed __tsi64 v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16s_BFu16i_BFs16ll_BFu16s) C1{ Fs:16 Fi:16 FL:16 Fs:16}



static void Test_BFs16s_BFu16i_BFs16ll_BFu16s()
{
  {
    init_simple_test("BFs16s_BFu16i_BFs16ll_BFu16s");
    static STRUCT_IF_C BFs16s_BFu16i_BFs16ll_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16i_BFs16ll_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16i_BFs16ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16i_BFs16ll_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFs16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16i_BFs16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFs16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16i_BFs16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFs16ll_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16i_BFs16ll_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFs16ll_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16i_BFs16ll_BFu16s, BFs16s_BFu16i_BFs16ll_BFu16s)
//============================================================================


struct  BFs16s_BFu16i_BFs16s  {
  signed short v1:16;
  unsigned int v2:16;
  signed short v3:16;
};
//SIG(1 BFs16s_BFu16i_BFs16s) C1{ Fs:16 Fi:16 Fs:16}



static void Test_BFs16s_BFu16i_BFs16s()
{
  {
    init_simple_test("BFs16s_BFu16i_BFs16s");
    static STRUCT_IF_C BFs16s_BFu16i_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16i_BFs16s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16s_BFu16i_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16i_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16i_BFs16s, BFs16s_BFu16i_BFs16s)
//============================================================================


struct  BFs16s_BFu16i_BFs16s_BFs16i  {
  signed short v1:16;
  unsigned int v2:16;
  signed short v3:16;
  signed int v4:16;
};
//SIG(1 BFs16s_BFu16i_BFs16s_BFs16i) C1{ Fs:16 Fi:16 Fs:16 Fi:16}



static void Test_BFs16s_BFu16i_BFs16s_BFs16i()
{
  {
    init_simple_test("BFs16s_BFu16i_BFs16s_BFs16i");
    static STRUCT_IF_C BFs16s_BFu16i_BFs16s_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16i_BFs16s_BFs16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16s_BFu16i_BFs16s_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16i_BFs16s_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFs16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16i_BFs16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFs16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16i_BFs16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFs16s_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16i_BFs16s_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFs16s_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16i_BFs16s_BFs16i, BFs16s_BFu16i_BFs16s_BFs16i)
//============================================================================


struct  BFs16s_BFu16i_BFs16s_BFs16ll  {
  signed short v1:16;
  unsigned int v2:16;
  signed short v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16s_BFu16i_BFs16s_BFs16ll) C1{ Fs:16 Fi:16 Fs:16 FL:16}



static void Test_BFs16s_BFu16i_BFs16s_BFs16ll()
{
  {
    init_simple_test("BFs16s_BFu16i_BFs16s_BFs16ll");
    static STRUCT_IF_C BFs16s_BFu16i_BFs16s_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16i_BFs16s_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16i_BFs16s_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16i_BFs16s_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFs16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16i_BFs16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFs16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16i_BFs16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFs16s_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16i_BFs16s_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFs16s_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16i_BFs16s_BFs16ll, BFs16s_BFu16i_BFs16s_BFs16ll)
//============================================================================


struct  BFs16s_BFu16i_BFs16s_BFs16s  {
  signed short v1:16;
  unsigned int v2:16;
  signed short v3:16;
  signed short v4:16;
};
//SIG(1 BFs16s_BFu16i_BFs16s_BFs16s) C1{ Fs:16 Fi:16 Fs:16 Fs:16}



static void Test_BFs16s_BFu16i_BFs16s_BFs16s()
{
  {
    init_simple_test("BFs16s_BFu16i_BFs16s_BFs16s");
    static STRUCT_IF_C BFs16s_BFu16i_BFs16s_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16i_BFs16s_BFs16s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16s_BFu16i_BFs16s_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16i_BFs16s_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFs16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16i_BFs16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFs16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16i_BFs16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFs16s_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16i_BFs16s_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFs16s_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16i_BFs16s_BFs16s, BFs16s_BFu16i_BFs16s_BFs16s)
//============================================================================


struct  BFs16s_BFu16i_BFs16s_BFu16i  {
  signed short v1:16;
  unsigned int v2:16;
  signed short v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16s_BFu16i_BFs16s_BFu16i) C1{ Fs:16 Fi:16 Fs:16 Fi:16}



static void Test_BFs16s_BFu16i_BFs16s_BFu16i()
{
  {
    init_simple_test("BFs16s_BFu16i_BFs16s_BFu16i");
    static STRUCT_IF_C BFs16s_BFu16i_BFs16s_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16i_BFs16s_BFu16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16s_BFu16i_BFs16s_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16i_BFs16s_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFs16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16i_BFs16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFs16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16i_BFs16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFs16s_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16i_BFs16s_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFs16s_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16i_BFs16s_BFu16i, BFs16s_BFu16i_BFs16s_BFu16i)
//============================================================================


struct  BFs16s_BFu16i_BFs16s_BFu16ll  {
  signed short v1:16;
  unsigned int v2:16;
  signed short v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16s_BFu16i_BFs16s_BFu16ll) C1{ Fs:16 Fi:16 Fs:16 FL:16}



static void Test_BFs16s_BFu16i_BFs16s_BFu16ll()
{
  {
    init_simple_test("BFs16s_BFu16i_BFs16s_BFu16ll");
    static STRUCT_IF_C BFs16s_BFu16i_BFs16s_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16i_BFs16s_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16i_BFs16s_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16i_BFs16s_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFs16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16i_BFs16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFs16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16i_BFs16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFs16s_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16i_BFs16s_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFs16s_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16i_BFs16s_BFu16ll, BFs16s_BFu16i_BFs16s_BFu16ll)
//============================================================================


struct  BFs16s_BFu16i_BFs16s_BFu16s  {
  signed short v1:16;
  unsigned int v2:16;
  signed short v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16s_BFu16i_BFs16s_BFu16s) C1{ Fs:16 Fi:16 Fs:16 Fs:16}



static void Test_BFs16s_BFu16i_BFs16s_BFu16s()
{
  {
    init_simple_test("BFs16s_BFu16i_BFs16s_BFu16s");
    static STRUCT_IF_C BFs16s_BFu16i_BFs16s_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16i_BFs16s_BFu16s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16s_BFu16i_BFs16s_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16i_BFs16s_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFs16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16i_BFs16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFs16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16i_BFs16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFs16s_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16i_BFs16s_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFs16s_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16i_BFs16s_BFu16s, BFs16s_BFu16i_BFs16s_BFu16s)
//============================================================================


struct  BFs16s_BFu16i_BFu16i  {
  signed short v1:16;
  unsigned int v2:16;
  unsigned int v3:16;
};
//SIG(1 BFs16s_BFu16i_BFu16i) C1{ Fs:16 Fi:16 Fi:16}



static void Test_BFs16s_BFu16i_BFu16i()
{
  {
    init_simple_test("BFs16s_BFu16i_BFu16i");
    static STRUCT_IF_C BFs16s_BFu16i_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16i_BFu16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16s_BFu16i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16i_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16i_BFu16i, BFs16s_BFu16i_BFu16i)
//============================================================================


struct  BFs16s_BFu16i_BFu16i_BFs16i  {
  signed short v1:16;
  unsigned int v2:16;
  unsigned int v3:16;
  signed int v4:16;
};
//SIG(1 BFs16s_BFu16i_BFu16i_BFs16i) C1{ Fs:16 Fi:16 Fi:16 Fi:16}



static void Test_BFs16s_BFu16i_BFu16i_BFs16i()
{
  {
    init_simple_test("BFs16s_BFu16i_BFu16i_BFs16i");
    static STRUCT_IF_C BFs16s_BFu16i_BFu16i_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16i_BFu16i_BFs16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16s_BFu16i_BFu16i_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16i_BFu16i_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFu16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16i_BFu16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFu16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16i_BFu16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFu16i_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16i_BFu16i_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFu16i_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16i_BFu16i_BFs16i, BFs16s_BFu16i_BFu16i_BFs16i)
//============================================================================


struct  BFs16s_BFu16i_BFu16i_BFs16ll  {
  signed short v1:16;
  unsigned int v2:16;
  unsigned int v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16s_BFu16i_BFu16i_BFs16ll) C1{ Fs:16 Fi:16 Fi:16 FL:16}



static void Test_BFs16s_BFu16i_BFu16i_BFs16ll()
{
  {
    init_simple_test("BFs16s_BFu16i_BFu16i_BFs16ll");
    static STRUCT_IF_C BFs16s_BFu16i_BFu16i_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16i_BFu16i_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16i_BFu16i_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16i_BFu16i_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFu16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16i_BFu16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFu16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16i_BFu16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFu16i_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16i_BFu16i_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFu16i_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16i_BFu16i_BFs16ll, BFs16s_BFu16i_BFu16i_BFs16ll)
//============================================================================


struct  BFs16s_BFu16i_BFu16i_BFs16s  {
  signed short v1:16;
  unsigned int v2:16;
  unsigned int v3:16;
  signed short v4:16;
};
//SIG(1 BFs16s_BFu16i_BFu16i_BFs16s) C1{ Fs:16 Fi:16 Fi:16 Fs:16}



static void Test_BFs16s_BFu16i_BFu16i_BFs16s()
{
  {
    init_simple_test("BFs16s_BFu16i_BFu16i_BFs16s");
    static STRUCT_IF_C BFs16s_BFu16i_BFu16i_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16i_BFu16i_BFs16s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16s_BFu16i_BFu16i_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16i_BFu16i_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFu16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16i_BFu16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFu16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16i_BFu16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFu16i_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16i_BFu16i_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFu16i_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16i_BFu16i_BFs16s, BFs16s_BFu16i_BFu16i_BFs16s)
//============================================================================


struct  BFs16s_BFu16i_BFu16i_BFu16i  {
  signed short v1:16;
  unsigned int v2:16;
  unsigned int v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16s_BFu16i_BFu16i_BFu16i) C1{ Fs:16 Fi:16 Fi:16 Fi:16}



static void Test_BFs16s_BFu16i_BFu16i_BFu16i()
{
  {
    init_simple_test("BFs16s_BFu16i_BFu16i_BFu16i");
    static STRUCT_IF_C BFs16s_BFu16i_BFu16i_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16i_BFu16i_BFu16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16s_BFu16i_BFu16i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16i_BFu16i_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFu16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16i_BFu16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFu16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16i_BFu16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFu16i_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16i_BFu16i_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFu16i_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16i_BFu16i_BFu16i, BFs16s_BFu16i_BFu16i_BFu16i)
//============================================================================


struct  BFs16s_BFu16i_BFu16i_BFu16ll  {
  signed short v1:16;
  unsigned int v2:16;
  unsigned int v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16s_BFu16i_BFu16i_BFu16ll) C1{ Fs:16 Fi:16 Fi:16 FL:16}



static void Test_BFs16s_BFu16i_BFu16i_BFu16ll()
{
  {
    init_simple_test("BFs16s_BFu16i_BFu16i_BFu16ll");
    static STRUCT_IF_C BFs16s_BFu16i_BFu16i_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16i_BFu16i_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16i_BFu16i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16i_BFu16i_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFu16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16i_BFu16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFu16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16i_BFu16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFu16i_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16i_BFu16i_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFu16i_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16i_BFu16i_BFu16ll, BFs16s_BFu16i_BFu16i_BFu16ll)
//============================================================================


struct  BFs16s_BFu16i_BFu16i_BFu16s  {
  signed short v1:16;
  unsigned int v2:16;
  unsigned int v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16s_BFu16i_BFu16i_BFu16s) C1{ Fs:16 Fi:16 Fi:16 Fs:16}



static void Test_BFs16s_BFu16i_BFu16i_BFu16s()
{
  {
    init_simple_test("BFs16s_BFu16i_BFu16i_BFu16s");
    static STRUCT_IF_C BFs16s_BFu16i_BFu16i_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16i_BFu16i_BFu16s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16s_BFu16i_BFu16i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16i_BFu16i_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFu16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16i_BFu16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFu16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16i_BFu16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFu16i_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16i_BFu16i_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFu16i_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16i_BFu16i_BFu16s, BFs16s_BFu16i_BFu16i_BFu16s)
//============================================================================


struct  BFs16s_BFu16i_BFu16ll  {
  signed short v1:16;
  unsigned int v2:16;
  __tsu64 v3:16;
};
//SIG(1 BFs16s_BFu16i_BFu16ll) C1{ Fs:16 Fi:16 FL:16}



static void Test_BFs16s_BFu16i_BFu16ll()
{
  {
    init_simple_test("BFs16s_BFu16i_BFu16ll");
    static STRUCT_IF_C BFs16s_BFu16i_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16i_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16i_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16i_BFu16ll, BFs16s_BFu16i_BFu16ll)
//============================================================================


struct  BFs16s_BFu16i_BFu16ll_BFs16i  {
  signed short v1:16;
  unsigned int v2:16;
  __tsu64 v3:16;
  signed int v4:16;
};
//SIG(1 BFs16s_BFu16i_BFu16ll_BFs16i) C1{ Fs:16 Fi:16 FL:16 Fi:16}



static void Test_BFs16s_BFu16i_BFu16ll_BFs16i()
{
  {
    init_simple_test("BFs16s_BFu16i_BFu16ll_BFs16i");
    static STRUCT_IF_C BFs16s_BFu16i_BFu16ll_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16i_BFu16ll_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16i_BFu16ll_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16i_BFu16ll_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFu16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16i_BFu16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFu16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16i_BFu16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFu16ll_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16i_BFu16ll_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFu16ll_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16i_BFu16ll_BFs16i, BFs16s_BFu16i_BFu16ll_BFs16i)
//============================================================================


struct  BFs16s_BFu16i_BFu16ll_BFs16ll  {
  signed short v1:16;
  unsigned int v2:16;
  __tsu64 v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16s_BFu16i_BFu16ll_BFs16ll) C1{ Fs:16 Fi:16 FL:16 FL:16}



static void Test_BFs16s_BFu16i_BFu16ll_BFs16ll()
{
  {
    init_simple_test("BFs16s_BFu16i_BFu16ll_BFs16ll");
    static STRUCT_IF_C BFs16s_BFu16i_BFu16ll_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16i_BFu16ll_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16i_BFu16ll_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16i_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16i_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16i_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16i_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFu16ll_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16i_BFu16ll_BFs16ll, BFs16s_BFu16i_BFu16ll_BFs16ll)
//============================================================================


struct  BFs16s_BFu16i_BFu16ll_BFs16s  {
  signed short v1:16;
  unsigned int v2:16;
  __tsu64 v3:16;
  signed short v4:16;
};
//SIG(1 BFs16s_BFu16i_BFu16ll_BFs16s) C1{ Fs:16 Fi:16 FL:16 Fs:16}



static void Test_BFs16s_BFu16i_BFu16ll_BFs16s()
{
  {
    init_simple_test("BFs16s_BFu16i_BFu16ll_BFs16s");
    static STRUCT_IF_C BFs16s_BFu16i_BFu16ll_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16i_BFu16ll_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16i_BFu16ll_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16i_BFu16ll_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFu16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16i_BFu16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFu16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16i_BFu16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFu16ll_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16i_BFu16ll_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFu16ll_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16i_BFu16ll_BFs16s, BFs16s_BFu16i_BFu16ll_BFs16s)
//============================================================================


struct  BFs16s_BFu16i_BFu16ll_BFu16i  {
  signed short v1:16;
  unsigned int v2:16;
  __tsu64 v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16s_BFu16i_BFu16ll_BFu16i) C1{ Fs:16 Fi:16 FL:16 Fi:16}



static void Test_BFs16s_BFu16i_BFu16ll_BFu16i()
{
  {
    init_simple_test("BFs16s_BFu16i_BFu16ll_BFu16i");
    static STRUCT_IF_C BFs16s_BFu16i_BFu16ll_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16i_BFu16ll_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16i_BFu16ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16i_BFu16ll_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFu16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16i_BFu16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFu16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16i_BFu16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFu16ll_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16i_BFu16ll_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFu16ll_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16i_BFu16ll_BFu16i, BFs16s_BFu16i_BFu16ll_BFu16i)
//============================================================================


struct  BFs16s_BFu16i_BFu16ll_BFu16ll  {
  signed short v1:16;
  unsigned int v2:16;
  __tsu64 v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16s_BFu16i_BFu16ll_BFu16ll) C1{ Fs:16 Fi:16 FL:16 FL:16}



static void Test_BFs16s_BFu16i_BFu16ll_BFu16ll()
{
  {
    init_simple_test("BFs16s_BFu16i_BFu16ll_BFu16ll");
    static STRUCT_IF_C BFs16s_BFu16i_BFu16ll_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16i_BFu16ll_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16i_BFu16ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16i_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16i_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16i_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16i_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFu16ll_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16i_BFu16ll_BFu16ll, BFs16s_BFu16i_BFu16ll_BFu16ll)
//============================================================================


struct  BFs16s_BFu16i_BFu16ll_BFu16s  {
  signed short v1:16;
  unsigned int v2:16;
  __tsu64 v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16s_BFu16i_BFu16ll_BFu16s) C1{ Fs:16 Fi:16 FL:16 Fs:16}



static void Test_BFs16s_BFu16i_BFu16ll_BFu16s()
{
  {
    init_simple_test("BFs16s_BFu16i_BFu16ll_BFu16s");
    static STRUCT_IF_C BFs16s_BFu16i_BFu16ll_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16i_BFu16ll_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16i_BFu16ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16i_BFu16ll_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFu16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16i_BFu16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFu16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16i_BFu16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFu16ll_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16i_BFu16ll_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFu16ll_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16i_BFu16ll_BFu16s, BFs16s_BFu16i_BFu16ll_BFu16s)
//============================================================================


struct  BFs16s_BFu16i_BFu16s  {
  signed short v1:16;
  unsigned int v2:16;
  unsigned short v3:16;
};
//SIG(1 BFs16s_BFu16i_BFu16s) C1{ Fs:16 Fi:16 Fs:16}



static void Test_BFs16s_BFu16i_BFu16s()
{
  {
    init_simple_test("BFs16s_BFu16i_BFu16s");
    static STRUCT_IF_C BFs16s_BFu16i_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16i_BFu16s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16s_BFu16i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16i_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16i_BFu16s, BFs16s_BFu16i_BFu16s)
//============================================================================


struct  BFs16s_BFu16i_BFu16s_BFs16i  {
  signed short v1:16;
  unsigned int v2:16;
  unsigned short v3:16;
  signed int v4:16;
};
//SIG(1 BFs16s_BFu16i_BFu16s_BFs16i) C1{ Fs:16 Fi:16 Fs:16 Fi:16}



static void Test_BFs16s_BFu16i_BFu16s_BFs16i()
{
  {
    init_simple_test("BFs16s_BFu16i_BFu16s_BFs16i");
    static STRUCT_IF_C BFs16s_BFu16i_BFu16s_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16i_BFu16s_BFs16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16s_BFu16i_BFu16s_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16i_BFu16s_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFu16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16i_BFu16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFu16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16i_BFu16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFu16s_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16i_BFu16s_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFu16s_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16i_BFu16s_BFs16i, BFs16s_BFu16i_BFu16s_BFs16i)
//============================================================================


struct  BFs16s_BFu16i_BFu16s_BFs16ll  {
  signed short v1:16;
  unsigned int v2:16;
  unsigned short v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16s_BFu16i_BFu16s_BFs16ll) C1{ Fs:16 Fi:16 Fs:16 FL:16}



static void Test_BFs16s_BFu16i_BFu16s_BFs16ll()
{
  {
    init_simple_test("BFs16s_BFu16i_BFu16s_BFs16ll");
    static STRUCT_IF_C BFs16s_BFu16i_BFu16s_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16i_BFu16s_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16i_BFu16s_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16i_BFu16s_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFu16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16i_BFu16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFu16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16i_BFu16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFu16s_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16i_BFu16s_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFu16s_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16i_BFu16s_BFs16ll, BFs16s_BFu16i_BFu16s_BFs16ll)
//============================================================================


struct  BFs16s_BFu16i_BFu16s_BFs16s  {
  signed short v1:16;
  unsigned int v2:16;
  unsigned short v3:16;
  signed short v4:16;
};
//SIG(1 BFs16s_BFu16i_BFu16s_BFs16s) C1{ Fs:16 Fi:16 Fs:16 Fs:16}



static void Test_BFs16s_BFu16i_BFu16s_BFs16s()
{
  {
    init_simple_test("BFs16s_BFu16i_BFu16s_BFs16s");
    static STRUCT_IF_C BFs16s_BFu16i_BFu16s_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16i_BFu16s_BFs16s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16s_BFu16i_BFu16s_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16i_BFu16s_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFu16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16i_BFu16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFu16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16i_BFu16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFu16s_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16i_BFu16s_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFu16s_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16i_BFu16s_BFs16s, BFs16s_BFu16i_BFu16s_BFs16s)
//============================================================================


struct  BFs16s_BFu16i_BFu16s_BFu16i  {
  signed short v1:16;
  unsigned int v2:16;
  unsigned short v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16s_BFu16i_BFu16s_BFu16i) C1{ Fs:16 Fi:16 Fs:16 Fi:16}



static void Test_BFs16s_BFu16i_BFu16s_BFu16i()
{
  {
    init_simple_test("BFs16s_BFu16i_BFu16s_BFu16i");
    static STRUCT_IF_C BFs16s_BFu16i_BFu16s_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16i_BFu16s_BFu16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16s_BFu16i_BFu16s_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16i_BFu16s_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFu16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16i_BFu16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFu16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16i_BFu16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFu16s_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16i_BFu16s_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFu16s_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16i_BFu16s_BFu16i, BFs16s_BFu16i_BFu16s_BFu16i)
//============================================================================


struct  BFs16s_BFu16i_BFu16s_BFu16ll  {
  signed short v1:16;
  unsigned int v2:16;
  unsigned short v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16s_BFu16i_BFu16s_BFu16ll) C1{ Fs:16 Fi:16 Fs:16 FL:16}



static void Test_BFs16s_BFu16i_BFu16s_BFu16ll()
{
  {
    init_simple_test("BFs16s_BFu16i_BFu16s_BFu16ll");
    static STRUCT_IF_C BFs16s_BFu16i_BFu16s_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16i_BFu16s_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16i_BFu16s_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16i_BFu16s_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFu16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16i_BFu16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFu16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16i_BFu16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFu16s_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16i_BFu16s_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFu16s_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16i_BFu16s_BFu16ll, BFs16s_BFu16i_BFu16s_BFu16ll)
//============================================================================


struct  BFs16s_BFu16i_BFu16s_BFu16s  {
  signed short v1:16;
  unsigned int v2:16;
  unsigned short v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16s_BFu16i_BFu16s_BFu16s) C1{ Fs:16 Fi:16 Fs:16 Fs:16}



static void Test_BFs16s_BFu16i_BFu16s_BFu16s()
{
  {
    init_simple_test("BFs16s_BFu16i_BFu16s_BFu16s");
    static STRUCT_IF_C BFs16s_BFu16i_BFu16s_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16i_BFu16s_BFu16s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16s_BFu16i_BFu16s_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16i_BFu16s_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16i_BFu16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16i_BFu16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFu16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16i_BFu16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFu16s_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16i_BFu16s_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16i_BFu16s_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16i_BFu16s_BFu16s, BFs16s_BFu16i_BFu16s_BFu16s)
//============================================================================


struct  BFs16s_BFu16ll  {
  signed short v1:16;
  __tsu64 v2:16;
};
//SIG(1 BFs16s_BFu16ll) C1{ Fs:16 FL:16}



static void Test_BFs16s_BFu16ll()
{
  {
    init_simple_test("BFs16s_BFu16ll");
    static STRUCT_IF_C BFs16s_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs16s_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16ll, BFs16s_BFu16ll)
//============================================================================


struct  BFs16s_BFu16ll_BFs16i  {
  signed short v1:16;
  __tsu64 v2:16;
  signed int v3:16;
};
//SIG(1 BFs16s_BFu16ll_BFs16i) C1{ Fs:16 FL:16 Fi:16}



static void Test_BFs16s_BFu16ll_BFs16i()
{
  {
    init_simple_test("BFs16s_BFu16ll_BFs16i");
    static STRUCT_IF_C BFs16s_BFu16ll_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16ll_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16ll_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16ll_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16ll_BFs16i, BFs16s_BFu16ll_BFs16i)
//============================================================================


struct  BFs16s_BFu16ll_BFs16i_BFs16i  {
  signed short v1:16;
  __tsu64 v2:16;
  signed int v3:16;
  signed int v4:16;
};
//SIG(1 BFs16s_BFu16ll_BFs16i_BFs16i) C1{ Fs:16 FL:16 Fi:16 Fi:16}



static void Test_BFs16s_BFu16ll_BFs16i_BFs16i()
{
  {
    init_simple_test("BFs16s_BFu16ll_BFs16i_BFs16i");
    static STRUCT_IF_C BFs16s_BFu16ll_BFs16i_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16ll_BFs16i_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16ll_BFs16i_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16ll_BFs16i_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFs16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16ll_BFs16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFs16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16ll_BFs16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFs16i_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16ll_BFs16i_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFs16i_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16ll_BFs16i_BFs16i, BFs16s_BFu16ll_BFs16i_BFs16i)
//============================================================================


struct  BFs16s_BFu16ll_BFs16i_BFs16ll  {
  signed short v1:16;
  __tsu64 v2:16;
  signed int v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16s_BFu16ll_BFs16i_BFs16ll) C1{ Fs:16 FL:16 Fi:16 FL:16}



static void Test_BFs16s_BFu16ll_BFs16i_BFs16ll()
{
  {
    init_simple_test("BFs16s_BFu16ll_BFs16i_BFs16ll");
    static STRUCT_IF_C BFs16s_BFu16ll_BFs16i_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16ll_BFs16i_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16ll_BFs16i_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16ll_BFs16i_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFs16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16ll_BFs16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFs16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16ll_BFs16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFs16i_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16ll_BFs16i_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFs16i_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16ll_BFs16i_BFs16ll, BFs16s_BFu16ll_BFs16i_BFs16ll)
//============================================================================


struct  BFs16s_BFu16ll_BFs16i_BFs16s  {
  signed short v1:16;
  __tsu64 v2:16;
  signed int v3:16;
  signed short v4:16;
};
//SIG(1 BFs16s_BFu16ll_BFs16i_BFs16s) C1{ Fs:16 FL:16 Fi:16 Fs:16}



static void Test_BFs16s_BFu16ll_BFs16i_BFs16s()
{
  {
    init_simple_test("BFs16s_BFu16ll_BFs16i_BFs16s");
    static STRUCT_IF_C BFs16s_BFu16ll_BFs16i_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16ll_BFs16i_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16ll_BFs16i_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16ll_BFs16i_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFs16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16ll_BFs16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFs16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16ll_BFs16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFs16i_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16ll_BFs16i_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFs16i_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16ll_BFs16i_BFs16s, BFs16s_BFu16ll_BFs16i_BFs16s)
//============================================================================


struct  BFs16s_BFu16ll_BFs16i_BFu16i  {
  signed short v1:16;
  __tsu64 v2:16;
  signed int v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16s_BFu16ll_BFs16i_BFu16i) C1{ Fs:16 FL:16 Fi:16 Fi:16}



static void Test_BFs16s_BFu16ll_BFs16i_BFu16i()
{
  {
    init_simple_test("BFs16s_BFu16ll_BFs16i_BFu16i");
    static STRUCT_IF_C BFs16s_BFu16ll_BFs16i_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16ll_BFs16i_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16ll_BFs16i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16ll_BFs16i_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFs16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16ll_BFs16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFs16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16ll_BFs16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFs16i_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16ll_BFs16i_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFs16i_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16ll_BFs16i_BFu16i, BFs16s_BFu16ll_BFs16i_BFu16i)
//============================================================================


struct  BFs16s_BFu16ll_BFs16i_BFu16ll  {
  signed short v1:16;
  __tsu64 v2:16;
  signed int v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16s_BFu16ll_BFs16i_BFu16ll) C1{ Fs:16 FL:16 Fi:16 FL:16}



static void Test_BFs16s_BFu16ll_BFs16i_BFu16ll()
{
  {
    init_simple_test("BFs16s_BFu16ll_BFs16i_BFu16ll");
    static STRUCT_IF_C BFs16s_BFu16ll_BFs16i_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16ll_BFs16i_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16ll_BFs16i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16ll_BFs16i_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFs16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16ll_BFs16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFs16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16ll_BFs16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFs16i_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16ll_BFs16i_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFs16i_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16ll_BFs16i_BFu16ll, BFs16s_BFu16ll_BFs16i_BFu16ll)
//============================================================================


struct  BFs16s_BFu16ll_BFs16i_BFu16s  {
  signed short v1:16;
  __tsu64 v2:16;
  signed int v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16s_BFu16ll_BFs16i_BFu16s) C1{ Fs:16 FL:16 Fi:16 Fs:16}



static void Test_BFs16s_BFu16ll_BFs16i_BFu16s()
{
  {
    init_simple_test("BFs16s_BFu16ll_BFs16i_BFu16s");
    static STRUCT_IF_C BFs16s_BFu16ll_BFs16i_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16ll_BFs16i_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16ll_BFs16i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16ll_BFs16i_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFs16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16ll_BFs16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFs16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16ll_BFs16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFs16i_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16ll_BFs16i_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFs16i_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16ll_BFs16i_BFu16s, BFs16s_BFu16ll_BFs16i_BFu16s)
//============================================================================


struct  BFs16s_BFu16ll_BFs16ll  {
  signed short v1:16;
  __tsu64 v2:16;
  signed __tsi64 v3:16;
};
//SIG(1 BFs16s_BFu16ll_BFs16ll) C1{ Fs:16 FL:16 FL:16}



static void Test_BFs16s_BFu16ll_BFs16ll()
{
  {
    init_simple_test("BFs16s_BFu16ll_BFs16ll");
    static STRUCT_IF_C BFs16s_BFu16ll_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16ll_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16ll_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16ll_BFs16ll, BFs16s_BFu16ll_BFs16ll)
//============================================================================


struct  BFs16s_BFu16ll_BFs16ll_BFs16i  {
  signed short v1:16;
  __tsu64 v2:16;
  signed __tsi64 v3:16;
  signed int v4:16;
};
//SIG(1 BFs16s_BFu16ll_BFs16ll_BFs16i) C1{ Fs:16 FL:16 FL:16 Fi:16}



static void Test_BFs16s_BFu16ll_BFs16ll_BFs16i()
{
  {
    init_simple_test("BFs16s_BFu16ll_BFs16ll_BFs16i");
    static STRUCT_IF_C BFs16s_BFu16ll_BFs16ll_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16ll_BFs16ll_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16ll_BFs16ll_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16ll_BFs16ll_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFs16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16ll_BFs16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFs16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16ll_BFs16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFs16ll_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16ll_BFs16ll_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFs16ll_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16ll_BFs16ll_BFs16i, BFs16s_BFu16ll_BFs16ll_BFs16i)
//============================================================================


struct  BFs16s_BFu16ll_BFs16ll_BFs16ll  {
  signed short v1:16;
  __tsu64 v2:16;
  signed __tsi64 v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16s_BFu16ll_BFs16ll_BFs16ll) C1{ Fs:16 FL:16 FL:16 FL:16}



static void Test_BFs16s_BFu16ll_BFs16ll_BFs16ll()
{
  {
    init_simple_test("BFs16s_BFu16ll_BFs16ll_BFs16ll");
    static STRUCT_IF_C BFs16s_BFu16ll_BFs16ll_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16ll_BFs16ll_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16ll_BFs16ll_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16ll_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16ll_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16ll_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16ll_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFs16ll_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16ll_BFs16ll_BFs16ll, BFs16s_BFu16ll_BFs16ll_BFs16ll)
//============================================================================


struct  BFs16s_BFu16ll_BFs16ll_BFs16s  {
  signed short v1:16;
  __tsu64 v2:16;
  signed __tsi64 v3:16;
  signed short v4:16;
};
//SIG(1 BFs16s_BFu16ll_BFs16ll_BFs16s) C1{ Fs:16 FL:16 FL:16 Fs:16}



static void Test_BFs16s_BFu16ll_BFs16ll_BFs16s()
{
  {
    init_simple_test("BFs16s_BFu16ll_BFs16ll_BFs16s");
    static STRUCT_IF_C BFs16s_BFu16ll_BFs16ll_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16ll_BFs16ll_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16ll_BFs16ll_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16ll_BFs16ll_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFs16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16ll_BFs16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFs16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16ll_BFs16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFs16ll_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16ll_BFs16ll_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFs16ll_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16ll_BFs16ll_BFs16s, BFs16s_BFu16ll_BFs16ll_BFs16s)
//============================================================================


struct  BFs16s_BFu16ll_BFs16ll_BFu16i  {
  signed short v1:16;
  __tsu64 v2:16;
  signed __tsi64 v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16s_BFu16ll_BFs16ll_BFu16i) C1{ Fs:16 FL:16 FL:16 Fi:16}



static void Test_BFs16s_BFu16ll_BFs16ll_BFu16i()
{
  {
    init_simple_test("BFs16s_BFu16ll_BFs16ll_BFu16i");
    static STRUCT_IF_C BFs16s_BFu16ll_BFs16ll_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16ll_BFs16ll_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16ll_BFs16ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16ll_BFs16ll_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFs16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16ll_BFs16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFs16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16ll_BFs16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFs16ll_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16ll_BFs16ll_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFs16ll_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16ll_BFs16ll_BFu16i, BFs16s_BFu16ll_BFs16ll_BFu16i)
//============================================================================


struct  BFs16s_BFu16ll_BFs16ll_BFu16ll  {
  signed short v1:16;
  __tsu64 v2:16;
  signed __tsi64 v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16s_BFu16ll_BFs16ll_BFu16ll) C1{ Fs:16 FL:16 FL:16 FL:16}



static void Test_BFs16s_BFu16ll_BFs16ll_BFu16ll()
{
  {
    init_simple_test("BFs16s_BFu16ll_BFs16ll_BFu16ll");
    static STRUCT_IF_C BFs16s_BFu16ll_BFs16ll_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16ll_BFs16ll_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16ll_BFs16ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16ll_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16ll_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16ll_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16ll_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFs16ll_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16ll_BFs16ll_BFu16ll, BFs16s_BFu16ll_BFs16ll_BFu16ll)
//============================================================================


struct  BFs16s_BFu16ll_BFs16ll_BFu16s  {
  signed short v1:16;
  __tsu64 v2:16;
  signed __tsi64 v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16s_BFu16ll_BFs16ll_BFu16s) C1{ Fs:16 FL:16 FL:16 Fs:16}



static void Test_BFs16s_BFu16ll_BFs16ll_BFu16s()
{
  {
    init_simple_test("BFs16s_BFu16ll_BFs16ll_BFu16s");
    static STRUCT_IF_C BFs16s_BFu16ll_BFs16ll_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16ll_BFs16ll_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16ll_BFs16ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16ll_BFs16ll_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFs16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16ll_BFs16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFs16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16ll_BFs16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFs16ll_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16ll_BFs16ll_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFs16ll_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16ll_BFs16ll_BFu16s, BFs16s_BFu16ll_BFs16ll_BFu16s)
//============================================================================


struct  BFs16s_BFu16ll_BFs16s  {
  signed short v1:16;
  __tsu64 v2:16;
  signed short v3:16;
};
//SIG(1 BFs16s_BFu16ll_BFs16s) C1{ Fs:16 FL:16 Fs:16}



static void Test_BFs16s_BFu16ll_BFs16s()
{
  {
    init_simple_test("BFs16s_BFu16ll_BFs16s");
    static STRUCT_IF_C BFs16s_BFu16ll_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16ll_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16ll_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16ll_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16ll_BFs16s, BFs16s_BFu16ll_BFs16s)
//============================================================================


struct  BFs16s_BFu16ll_BFs16s_BFs16i  {
  signed short v1:16;
  __tsu64 v2:16;
  signed short v3:16;
  signed int v4:16;
};
//SIG(1 BFs16s_BFu16ll_BFs16s_BFs16i) C1{ Fs:16 FL:16 Fs:16 Fi:16}



static void Test_BFs16s_BFu16ll_BFs16s_BFs16i()
{
  {
    init_simple_test("BFs16s_BFu16ll_BFs16s_BFs16i");
    static STRUCT_IF_C BFs16s_BFu16ll_BFs16s_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16ll_BFs16s_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16ll_BFs16s_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16ll_BFs16s_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFs16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16ll_BFs16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFs16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16ll_BFs16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFs16s_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16ll_BFs16s_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFs16s_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16ll_BFs16s_BFs16i, BFs16s_BFu16ll_BFs16s_BFs16i)
//============================================================================


struct  BFs16s_BFu16ll_BFs16s_BFs16ll  {
  signed short v1:16;
  __tsu64 v2:16;
  signed short v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16s_BFu16ll_BFs16s_BFs16ll) C1{ Fs:16 FL:16 Fs:16 FL:16}



static void Test_BFs16s_BFu16ll_BFs16s_BFs16ll()
{
  {
    init_simple_test("BFs16s_BFu16ll_BFs16s_BFs16ll");
    static STRUCT_IF_C BFs16s_BFu16ll_BFs16s_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16ll_BFs16s_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16ll_BFs16s_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16ll_BFs16s_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFs16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16ll_BFs16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFs16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16ll_BFs16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFs16s_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16ll_BFs16s_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFs16s_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16ll_BFs16s_BFs16ll, BFs16s_BFu16ll_BFs16s_BFs16ll)
//============================================================================


struct  BFs16s_BFu16ll_BFs16s_BFs16s  {
  signed short v1:16;
  __tsu64 v2:16;
  signed short v3:16;
  signed short v4:16;
};
//SIG(1 BFs16s_BFu16ll_BFs16s_BFs16s) C1{ Fs:16 FL:16 Fs:16 Fs:16}



static void Test_BFs16s_BFu16ll_BFs16s_BFs16s()
{
  {
    init_simple_test("BFs16s_BFu16ll_BFs16s_BFs16s");
    static STRUCT_IF_C BFs16s_BFu16ll_BFs16s_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16ll_BFs16s_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16ll_BFs16s_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16ll_BFs16s_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFs16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16ll_BFs16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFs16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16ll_BFs16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFs16s_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16ll_BFs16s_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFs16s_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16ll_BFs16s_BFs16s, BFs16s_BFu16ll_BFs16s_BFs16s)
//============================================================================


struct  BFs16s_BFu16ll_BFs16s_BFu16i  {
  signed short v1:16;
  __tsu64 v2:16;
  signed short v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16s_BFu16ll_BFs16s_BFu16i) C1{ Fs:16 FL:16 Fs:16 Fi:16}



static void Test_BFs16s_BFu16ll_BFs16s_BFu16i()
{
  {
    init_simple_test("BFs16s_BFu16ll_BFs16s_BFu16i");
    static STRUCT_IF_C BFs16s_BFu16ll_BFs16s_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16ll_BFs16s_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16ll_BFs16s_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16ll_BFs16s_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFs16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16ll_BFs16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFs16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16ll_BFs16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFs16s_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16ll_BFs16s_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFs16s_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16ll_BFs16s_BFu16i, BFs16s_BFu16ll_BFs16s_BFu16i)
//============================================================================


struct  BFs16s_BFu16ll_BFs16s_BFu16ll  {
  signed short v1:16;
  __tsu64 v2:16;
  signed short v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16s_BFu16ll_BFs16s_BFu16ll) C1{ Fs:16 FL:16 Fs:16 FL:16}



static void Test_BFs16s_BFu16ll_BFs16s_BFu16ll()
{
  {
    init_simple_test("BFs16s_BFu16ll_BFs16s_BFu16ll");
    static STRUCT_IF_C BFs16s_BFu16ll_BFs16s_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16ll_BFs16s_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16ll_BFs16s_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16ll_BFs16s_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFs16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16ll_BFs16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFs16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16ll_BFs16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFs16s_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16ll_BFs16s_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFs16s_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16ll_BFs16s_BFu16ll, BFs16s_BFu16ll_BFs16s_BFu16ll)
//============================================================================


struct  BFs16s_BFu16ll_BFs16s_BFu16s  {
  signed short v1:16;
  __tsu64 v2:16;
  signed short v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16s_BFu16ll_BFs16s_BFu16s) C1{ Fs:16 FL:16 Fs:16 Fs:16}



static void Test_BFs16s_BFu16ll_BFs16s_BFu16s()
{
  {
    init_simple_test("BFs16s_BFu16ll_BFs16s_BFu16s");
    static STRUCT_IF_C BFs16s_BFu16ll_BFs16s_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16ll_BFs16s_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16ll_BFs16s_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16ll_BFs16s_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFs16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16ll_BFs16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFs16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16ll_BFs16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFs16s_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16ll_BFs16s_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFs16s_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16ll_BFs16s_BFu16s, BFs16s_BFu16ll_BFs16s_BFu16s)
//============================================================================


struct  BFs16s_BFu16ll_BFu16i  {
  signed short v1:16;
  __tsu64 v2:16;
  unsigned int v3:16;
};
//SIG(1 BFs16s_BFu16ll_BFu16i) C1{ Fs:16 FL:16 Fi:16}



static void Test_BFs16s_BFu16ll_BFu16i()
{
  {
    init_simple_test("BFs16s_BFu16ll_BFu16i");
    static STRUCT_IF_C BFs16s_BFu16ll_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16ll_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16ll_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16ll_BFu16i, BFs16s_BFu16ll_BFu16i)
//============================================================================


struct  BFs16s_BFu16ll_BFu16i_BFs16i  {
  signed short v1:16;
  __tsu64 v2:16;
  unsigned int v3:16;
  signed int v4:16;
};
//SIG(1 BFs16s_BFu16ll_BFu16i_BFs16i) C1{ Fs:16 FL:16 Fi:16 Fi:16}



static void Test_BFs16s_BFu16ll_BFu16i_BFs16i()
{
  {
    init_simple_test("BFs16s_BFu16ll_BFu16i_BFs16i");
    static STRUCT_IF_C BFs16s_BFu16ll_BFu16i_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16ll_BFu16i_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16ll_BFu16i_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16ll_BFu16i_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFu16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16ll_BFu16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFu16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16ll_BFu16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFu16i_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16ll_BFu16i_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFu16i_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16ll_BFu16i_BFs16i, BFs16s_BFu16ll_BFu16i_BFs16i)
//============================================================================


struct  BFs16s_BFu16ll_BFu16i_BFs16ll  {
  signed short v1:16;
  __tsu64 v2:16;
  unsigned int v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16s_BFu16ll_BFu16i_BFs16ll) C1{ Fs:16 FL:16 Fi:16 FL:16}



static void Test_BFs16s_BFu16ll_BFu16i_BFs16ll()
{
  {
    init_simple_test("BFs16s_BFu16ll_BFu16i_BFs16ll");
    static STRUCT_IF_C BFs16s_BFu16ll_BFu16i_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16ll_BFu16i_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16ll_BFu16i_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16ll_BFu16i_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFu16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16ll_BFu16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFu16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16ll_BFu16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFu16i_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16ll_BFu16i_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFu16i_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16ll_BFu16i_BFs16ll, BFs16s_BFu16ll_BFu16i_BFs16ll)
//============================================================================


struct  BFs16s_BFu16ll_BFu16i_BFs16s  {
  signed short v1:16;
  __tsu64 v2:16;
  unsigned int v3:16;
  signed short v4:16;
};
//SIG(1 BFs16s_BFu16ll_BFu16i_BFs16s) C1{ Fs:16 FL:16 Fi:16 Fs:16}



static void Test_BFs16s_BFu16ll_BFu16i_BFs16s()
{
  {
    init_simple_test("BFs16s_BFu16ll_BFu16i_BFs16s");
    static STRUCT_IF_C BFs16s_BFu16ll_BFu16i_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16ll_BFu16i_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16ll_BFu16i_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16ll_BFu16i_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFu16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16ll_BFu16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFu16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16ll_BFu16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFu16i_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16ll_BFu16i_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFu16i_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16ll_BFu16i_BFs16s, BFs16s_BFu16ll_BFu16i_BFs16s)
//============================================================================


struct  BFs16s_BFu16ll_BFu16i_BFu16i  {
  signed short v1:16;
  __tsu64 v2:16;
  unsigned int v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16s_BFu16ll_BFu16i_BFu16i) C1{ Fs:16 FL:16 Fi:16 Fi:16}



static void Test_BFs16s_BFu16ll_BFu16i_BFu16i()
{
  {
    init_simple_test("BFs16s_BFu16ll_BFu16i_BFu16i");
    static STRUCT_IF_C BFs16s_BFu16ll_BFu16i_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16ll_BFu16i_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16ll_BFu16i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16ll_BFu16i_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFu16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16ll_BFu16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFu16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16ll_BFu16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFu16i_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16ll_BFu16i_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFu16i_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16ll_BFu16i_BFu16i, BFs16s_BFu16ll_BFu16i_BFu16i)
//============================================================================


struct  BFs16s_BFu16ll_BFu16i_BFu16ll  {
  signed short v1:16;
  __tsu64 v2:16;
  unsigned int v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16s_BFu16ll_BFu16i_BFu16ll) C1{ Fs:16 FL:16 Fi:16 FL:16}



static void Test_BFs16s_BFu16ll_BFu16i_BFu16ll()
{
  {
    init_simple_test("BFs16s_BFu16ll_BFu16i_BFu16ll");
    static STRUCT_IF_C BFs16s_BFu16ll_BFu16i_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16ll_BFu16i_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16ll_BFu16i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16ll_BFu16i_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFu16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16ll_BFu16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFu16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16ll_BFu16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFu16i_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16ll_BFu16i_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFu16i_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16ll_BFu16i_BFu16ll, BFs16s_BFu16ll_BFu16i_BFu16ll)
//============================================================================


struct  BFs16s_BFu16ll_BFu16i_BFu16s  {
  signed short v1:16;
  __tsu64 v2:16;
  unsigned int v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16s_BFu16ll_BFu16i_BFu16s) C1{ Fs:16 FL:16 Fi:16 Fs:16}



static void Test_BFs16s_BFu16ll_BFu16i_BFu16s()
{
  {
    init_simple_test("BFs16s_BFu16ll_BFu16i_BFu16s");
    static STRUCT_IF_C BFs16s_BFu16ll_BFu16i_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16ll_BFu16i_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16ll_BFu16i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16ll_BFu16i_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFu16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16ll_BFu16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFu16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16ll_BFu16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFu16i_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16ll_BFu16i_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFu16i_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16ll_BFu16i_BFu16s, BFs16s_BFu16ll_BFu16i_BFu16s)
//============================================================================


struct  BFs16s_BFu16ll_BFu16ll  {
  signed short v1:16;
  __tsu64 v2:16;
  __tsu64 v3:16;
};
//SIG(1 BFs16s_BFu16ll_BFu16ll) C1{ Fs:16 FL:16 FL:16}



static void Test_BFs16s_BFu16ll_BFu16ll()
{
  {
    init_simple_test("BFs16s_BFu16ll_BFu16ll");
    static STRUCT_IF_C BFs16s_BFu16ll_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16ll_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16ll_BFu16ll, BFs16s_BFu16ll_BFu16ll)
//============================================================================


struct  BFs16s_BFu16ll_BFu16ll_BFs16i  {
  signed short v1:16;
  __tsu64 v2:16;
  __tsu64 v3:16;
  signed int v4:16;
};
//SIG(1 BFs16s_BFu16ll_BFu16ll_BFs16i) C1{ Fs:16 FL:16 FL:16 Fi:16}



static void Test_BFs16s_BFu16ll_BFu16ll_BFs16i()
{
  {
    init_simple_test("BFs16s_BFu16ll_BFu16ll_BFs16i");
    static STRUCT_IF_C BFs16s_BFu16ll_BFu16ll_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16ll_BFu16ll_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16ll_BFu16ll_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16ll_BFu16ll_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFu16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16ll_BFu16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFu16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16ll_BFu16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFu16ll_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16ll_BFu16ll_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFu16ll_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16ll_BFu16ll_BFs16i, BFs16s_BFu16ll_BFu16ll_BFs16i)
//============================================================================


struct  BFs16s_BFu16ll_BFu16ll_BFs16ll  {
  signed short v1:16;
  __tsu64 v2:16;
  __tsu64 v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16s_BFu16ll_BFu16ll_BFs16ll) C1{ Fs:16 FL:16 FL:16 FL:16}



static void Test_BFs16s_BFu16ll_BFu16ll_BFs16ll()
{
  {
    init_simple_test("BFs16s_BFu16ll_BFu16ll_BFs16ll");
    static STRUCT_IF_C BFs16s_BFu16ll_BFu16ll_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16ll_BFu16ll_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16ll_BFu16ll_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16ll_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16ll_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16ll_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16ll_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFu16ll_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16ll_BFu16ll_BFs16ll, BFs16s_BFu16ll_BFu16ll_BFs16ll)
//============================================================================


struct  BFs16s_BFu16ll_BFu16ll_BFs16s  {
  signed short v1:16;
  __tsu64 v2:16;
  __tsu64 v3:16;
  signed short v4:16;
};
//SIG(1 BFs16s_BFu16ll_BFu16ll_BFs16s) C1{ Fs:16 FL:16 FL:16 Fs:16}



static void Test_BFs16s_BFu16ll_BFu16ll_BFs16s()
{
  {
    init_simple_test("BFs16s_BFu16ll_BFu16ll_BFs16s");
    static STRUCT_IF_C BFs16s_BFu16ll_BFu16ll_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16ll_BFu16ll_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16ll_BFu16ll_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16ll_BFu16ll_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFu16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16ll_BFu16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFu16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16ll_BFu16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFu16ll_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16ll_BFu16ll_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFu16ll_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16ll_BFu16ll_BFs16s, BFs16s_BFu16ll_BFu16ll_BFs16s)
//============================================================================


struct  BFs16s_BFu16ll_BFu16ll_BFu16i  {
  signed short v1:16;
  __tsu64 v2:16;
  __tsu64 v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16s_BFu16ll_BFu16ll_BFu16i) C1{ Fs:16 FL:16 FL:16 Fi:16}



static void Test_BFs16s_BFu16ll_BFu16ll_BFu16i()
{
  {
    init_simple_test("BFs16s_BFu16ll_BFu16ll_BFu16i");
    static STRUCT_IF_C BFs16s_BFu16ll_BFu16ll_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16ll_BFu16ll_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16ll_BFu16ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16ll_BFu16ll_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFu16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16ll_BFu16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFu16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16ll_BFu16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFu16ll_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16ll_BFu16ll_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFu16ll_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16ll_BFu16ll_BFu16i, BFs16s_BFu16ll_BFu16ll_BFu16i)
//============================================================================


struct  BFs16s_BFu16ll_BFu16ll_BFu16ll  {
  signed short v1:16;
  __tsu64 v2:16;
  __tsu64 v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16s_BFu16ll_BFu16ll_BFu16ll) C1{ Fs:16 FL:16 FL:16 FL:16}



static void Test_BFs16s_BFu16ll_BFu16ll_BFu16ll()
{
  {
    init_simple_test("BFs16s_BFu16ll_BFu16ll_BFu16ll");
    static STRUCT_IF_C BFs16s_BFu16ll_BFu16ll_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16ll_BFu16ll_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16ll_BFu16ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16ll_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16ll_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16ll_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16ll_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFu16ll_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16ll_BFu16ll_BFu16ll, BFs16s_BFu16ll_BFu16ll_BFu16ll)
//============================================================================


struct  BFs16s_BFu16ll_BFu16ll_BFu16s  {
  signed short v1:16;
  __tsu64 v2:16;
  __tsu64 v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16s_BFu16ll_BFu16ll_BFu16s) C1{ Fs:16 FL:16 FL:16 Fs:16}



static void Test_BFs16s_BFu16ll_BFu16ll_BFu16s()
{
  {
    init_simple_test("BFs16s_BFu16ll_BFu16ll_BFu16s");
    static STRUCT_IF_C BFs16s_BFu16ll_BFu16ll_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16ll_BFu16ll_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16ll_BFu16ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16ll_BFu16ll_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFu16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16ll_BFu16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFu16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16ll_BFu16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFu16ll_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16ll_BFu16ll_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFu16ll_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16ll_BFu16ll_BFu16s, BFs16s_BFu16ll_BFu16ll_BFu16s)
//============================================================================


struct  BFs16s_BFu16ll_BFu16s  {
  signed short v1:16;
  __tsu64 v2:16;
  unsigned short v3:16;
};
//SIG(1 BFs16s_BFu16ll_BFu16s) C1{ Fs:16 FL:16 Fs:16}



static void Test_BFs16s_BFu16ll_BFu16s()
{
  {
    init_simple_test("BFs16s_BFu16ll_BFu16s");
    static STRUCT_IF_C BFs16s_BFu16ll_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16ll_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16ll_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16ll_BFu16s, BFs16s_BFu16ll_BFu16s)
//============================================================================


struct  BFs16s_BFu16ll_BFu16s_BFs16i  {
  signed short v1:16;
  __tsu64 v2:16;
  unsigned short v3:16;
  signed int v4:16;
};
//SIG(1 BFs16s_BFu16ll_BFu16s_BFs16i) C1{ Fs:16 FL:16 Fs:16 Fi:16}



static void Test_BFs16s_BFu16ll_BFu16s_BFs16i()
{
  {
    init_simple_test("BFs16s_BFu16ll_BFu16s_BFs16i");
    static STRUCT_IF_C BFs16s_BFu16ll_BFu16s_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16ll_BFu16s_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16ll_BFu16s_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16ll_BFu16s_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFu16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16ll_BFu16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFu16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16ll_BFu16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFu16s_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16ll_BFu16s_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFu16s_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16ll_BFu16s_BFs16i, BFs16s_BFu16ll_BFu16s_BFs16i)
//============================================================================


struct  BFs16s_BFu16ll_BFu16s_BFs16ll  {
  signed short v1:16;
  __tsu64 v2:16;
  unsigned short v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16s_BFu16ll_BFu16s_BFs16ll) C1{ Fs:16 FL:16 Fs:16 FL:16}



static void Test_BFs16s_BFu16ll_BFu16s_BFs16ll()
{
  {
    init_simple_test("BFs16s_BFu16ll_BFu16s_BFs16ll");
    static STRUCT_IF_C BFs16s_BFu16ll_BFu16s_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16ll_BFu16s_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16ll_BFu16s_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16ll_BFu16s_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFu16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16ll_BFu16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFu16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16ll_BFu16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFu16s_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16ll_BFu16s_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFu16s_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16ll_BFu16s_BFs16ll, BFs16s_BFu16ll_BFu16s_BFs16ll)
//============================================================================


struct  BFs16s_BFu16ll_BFu16s_BFs16s  {
  signed short v1:16;
  __tsu64 v2:16;
  unsigned short v3:16;
  signed short v4:16;
};
//SIG(1 BFs16s_BFu16ll_BFu16s_BFs16s) C1{ Fs:16 FL:16 Fs:16 Fs:16}



static void Test_BFs16s_BFu16ll_BFu16s_BFs16s()
{
  {
    init_simple_test("BFs16s_BFu16ll_BFu16s_BFs16s");
    static STRUCT_IF_C BFs16s_BFu16ll_BFu16s_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16ll_BFu16s_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16ll_BFu16s_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16ll_BFu16s_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFu16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16ll_BFu16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFu16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16ll_BFu16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFu16s_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16ll_BFu16s_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFu16s_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16ll_BFu16s_BFs16s, BFs16s_BFu16ll_BFu16s_BFs16s)
//============================================================================


struct  BFs16s_BFu16ll_BFu16s_BFu16i  {
  signed short v1:16;
  __tsu64 v2:16;
  unsigned short v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16s_BFu16ll_BFu16s_BFu16i) C1{ Fs:16 FL:16 Fs:16 Fi:16}



static void Test_BFs16s_BFu16ll_BFu16s_BFu16i()
{
  {
    init_simple_test("BFs16s_BFu16ll_BFu16s_BFu16i");
    static STRUCT_IF_C BFs16s_BFu16ll_BFu16s_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16ll_BFu16s_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16ll_BFu16s_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16ll_BFu16s_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFu16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16ll_BFu16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFu16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16ll_BFu16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFu16s_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16ll_BFu16s_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFu16s_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16ll_BFu16s_BFu16i, BFs16s_BFu16ll_BFu16s_BFu16i)
//============================================================================


struct  BFs16s_BFu16ll_BFu16s_BFu16ll  {
  signed short v1:16;
  __tsu64 v2:16;
  unsigned short v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16s_BFu16ll_BFu16s_BFu16ll) C1{ Fs:16 FL:16 Fs:16 FL:16}



static void Test_BFs16s_BFu16ll_BFu16s_BFu16ll()
{
  {
    init_simple_test("BFs16s_BFu16ll_BFu16s_BFu16ll");
    static STRUCT_IF_C BFs16s_BFu16ll_BFu16s_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16ll_BFu16s_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16ll_BFu16s_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16ll_BFu16s_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFu16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16ll_BFu16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFu16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16ll_BFu16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFu16s_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16ll_BFu16s_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFu16s_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16ll_BFu16s_BFu16ll, BFs16s_BFu16ll_BFu16s_BFu16ll)
//============================================================================


struct  BFs16s_BFu16ll_BFu16s_BFu16s  {
  signed short v1:16;
  __tsu64 v2:16;
  unsigned short v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16s_BFu16ll_BFu16s_BFu16s) C1{ Fs:16 FL:16 Fs:16 Fs:16}



static void Test_BFs16s_BFu16ll_BFu16s_BFu16s()
{
  {
    init_simple_test("BFs16s_BFu16ll_BFu16s_BFu16s");
    static STRUCT_IF_C BFs16s_BFu16ll_BFu16s_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16ll_BFu16s_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16ll_BFu16s_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16ll_BFu16s_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16ll_BFu16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16ll_BFu16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFu16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16ll_BFu16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFu16s_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16ll_BFu16s_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16ll_BFu16s_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16ll_BFu16s_BFu16s, BFs16s_BFu16ll_BFu16s_BFu16s)
//============================================================================


struct  BFs16s_BFu16s  {
  signed short v1:16;
  unsigned short v2:16;
};
//SIG(1 BFs16s_BFu16s) C1{ Fs:16 Fs:16}



static void Test_BFs16s_BFu16s()
{
  {
    init_simple_test("BFs16s_BFu16s");
    static STRUCT_IF_C BFs16s_BFu16s lv;
    check2(sizeof(lv), 4, "sizeof(BFs16s_BFu16s)");
    check2(__alignof__(lv), 2, "__alignof__(BFs16s_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16s, BFs16s_BFu16s)
//============================================================================


struct  BFs16s_BFu16s_BFs16i  {
  signed short v1:16;
  unsigned short v2:16;
  signed int v3:16;
};
//SIG(1 BFs16s_BFu16s_BFs16i) C1{ Fs:16 Fs:16 Fi:16}



static void Test_BFs16s_BFu16s_BFs16i()
{
  {
    init_simple_test("BFs16s_BFu16s_BFs16i");
    static STRUCT_IF_C BFs16s_BFu16s_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16s_BFs16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16s_BFu16s_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16s_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16s_BFs16i, BFs16s_BFu16s_BFs16i)
//============================================================================


struct  BFs16s_BFu16s_BFs16i_BFs16i  {
  signed short v1:16;
  unsigned short v2:16;
  signed int v3:16;
  signed int v4:16;
};
//SIG(1 BFs16s_BFu16s_BFs16i_BFs16i) C1{ Fs:16 Fs:16 Fi:16 Fi:16}



static void Test_BFs16s_BFu16s_BFs16i_BFs16i()
{
  {
    init_simple_test("BFs16s_BFu16s_BFs16i_BFs16i");
    static STRUCT_IF_C BFs16s_BFu16s_BFs16i_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16s_BFs16i_BFs16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16s_BFu16s_BFs16i_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16s_BFs16i_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFs16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16s_BFs16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFs16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16s_BFs16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFs16i_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16s_BFs16i_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFs16i_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16s_BFs16i_BFs16i, BFs16s_BFu16s_BFs16i_BFs16i)
//============================================================================


struct  BFs16s_BFu16s_BFs16i_BFs16ll  {
  signed short v1:16;
  unsigned short v2:16;
  signed int v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16s_BFu16s_BFs16i_BFs16ll) C1{ Fs:16 Fs:16 Fi:16 FL:16}



static void Test_BFs16s_BFu16s_BFs16i_BFs16ll()
{
  {
    init_simple_test("BFs16s_BFu16s_BFs16i_BFs16ll");
    static STRUCT_IF_C BFs16s_BFu16s_BFs16i_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16s_BFs16i_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16s_BFs16i_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16s_BFs16i_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFs16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16s_BFs16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFs16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16s_BFs16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFs16i_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16s_BFs16i_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFs16i_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16s_BFs16i_BFs16ll, BFs16s_BFu16s_BFs16i_BFs16ll)
//============================================================================


struct  BFs16s_BFu16s_BFs16i_BFs16s  {
  signed short v1:16;
  unsigned short v2:16;
  signed int v3:16;
  signed short v4:16;
};
//SIG(1 BFs16s_BFu16s_BFs16i_BFs16s) C1{ Fs:16 Fs:16 Fi:16 Fs:16}



static void Test_BFs16s_BFu16s_BFs16i_BFs16s()
{
  {
    init_simple_test("BFs16s_BFu16s_BFs16i_BFs16s");
    static STRUCT_IF_C BFs16s_BFu16s_BFs16i_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16s_BFs16i_BFs16s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16s_BFu16s_BFs16i_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16s_BFs16i_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFs16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16s_BFs16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFs16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16s_BFs16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFs16i_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16s_BFs16i_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFs16i_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16s_BFs16i_BFs16s, BFs16s_BFu16s_BFs16i_BFs16s)
//============================================================================


struct  BFs16s_BFu16s_BFs16i_BFu16i  {
  signed short v1:16;
  unsigned short v2:16;
  signed int v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16s_BFu16s_BFs16i_BFu16i) C1{ Fs:16 Fs:16 Fi:16 Fi:16}



static void Test_BFs16s_BFu16s_BFs16i_BFu16i()
{
  {
    init_simple_test("BFs16s_BFu16s_BFs16i_BFu16i");
    static STRUCT_IF_C BFs16s_BFu16s_BFs16i_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16s_BFs16i_BFu16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16s_BFu16s_BFs16i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16s_BFs16i_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFs16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16s_BFs16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFs16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16s_BFs16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFs16i_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16s_BFs16i_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFs16i_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16s_BFs16i_BFu16i, BFs16s_BFu16s_BFs16i_BFu16i)
//============================================================================


struct  BFs16s_BFu16s_BFs16i_BFu16ll  {
  signed short v1:16;
  unsigned short v2:16;
  signed int v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16s_BFu16s_BFs16i_BFu16ll) C1{ Fs:16 Fs:16 Fi:16 FL:16}



static void Test_BFs16s_BFu16s_BFs16i_BFu16ll()
{
  {
    init_simple_test("BFs16s_BFu16s_BFs16i_BFu16ll");
    static STRUCT_IF_C BFs16s_BFu16s_BFs16i_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16s_BFs16i_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16s_BFs16i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16s_BFs16i_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFs16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16s_BFs16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFs16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16s_BFs16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFs16i_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16s_BFs16i_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFs16i_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16s_BFs16i_BFu16ll, BFs16s_BFu16s_BFs16i_BFu16ll)
//============================================================================


struct  BFs16s_BFu16s_BFs16i_BFu16s  {
  signed short v1:16;
  unsigned short v2:16;
  signed int v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16s_BFu16s_BFs16i_BFu16s) C1{ Fs:16 Fs:16 Fi:16 Fs:16}



static void Test_BFs16s_BFu16s_BFs16i_BFu16s()
{
  {
    init_simple_test("BFs16s_BFu16s_BFs16i_BFu16s");
    static STRUCT_IF_C BFs16s_BFu16s_BFs16i_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16s_BFs16i_BFu16s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16s_BFu16s_BFs16i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16s_BFs16i_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFs16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16s_BFs16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFs16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16s_BFs16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFs16i_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16s_BFs16i_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFs16i_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16s_BFs16i_BFu16s, BFs16s_BFu16s_BFs16i_BFu16s)
//============================================================================


struct  BFs16s_BFu16s_BFs16ll  {
  signed short v1:16;
  unsigned short v2:16;
  signed __tsi64 v3:16;
};
//SIG(1 BFs16s_BFu16s_BFs16ll) C1{ Fs:16 Fs:16 FL:16}



static void Test_BFs16s_BFu16s_BFs16ll()
{
  {
    init_simple_test("BFs16s_BFu16s_BFs16ll");
    static STRUCT_IF_C BFs16s_BFu16s_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16s_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16s_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16s_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16s_BFs16ll, BFs16s_BFu16s_BFs16ll)
//============================================================================


struct  BFs16s_BFu16s_BFs16ll_BFs16i  {
  signed short v1:16;
  unsigned short v2:16;
  signed __tsi64 v3:16;
  signed int v4:16;
};
//SIG(1 BFs16s_BFu16s_BFs16ll_BFs16i) C1{ Fs:16 Fs:16 FL:16 Fi:16}



static void Test_BFs16s_BFu16s_BFs16ll_BFs16i()
{
  {
    init_simple_test("BFs16s_BFu16s_BFs16ll_BFs16i");
    static STRUCT_IF_C BFs16s_BFu16s_BFs16ll_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16s_BFs16ll_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16s_BFs16ll_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16s_BFs16ll_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFs16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16s_BFs16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFs16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16s_BFs16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFs16ll_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16s_BFs16ll_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFs16ll_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16s_BFs16ll_BFs16i, BFs16s_BFu16s_BFs16ll_BFs16i)
//============================================================================


struct  BFs16s_BFu16s_BFs16ll_BFs16ll  {
  signed short v1:16;
  unsigned short v2:16;
  signed __tsi64 v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16s_BFu16s_BFs16ll_BFs16ll) C1{ Fs:16 Fs:16 FL:16 FL:16}



static void Test_BFs16s_BFu16s_BFs16ll_BFs16ll()
{
  {
    init_simple_test("BFs16s_BFu16s_BFs16ll_BFs16ll");
    static STRUCT_IF_C BFs16s_BFu16s_BFs16ll_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16s_BFs16ll_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16s_BFs16ll_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16s_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16s_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16s_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16s_BFs16ll_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFs16ll_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16s_BFs16ll_BFs16ll, BFs16s_BFu16s_BFs16ll_BFs16ll)
//============================================================================


struct  BFs16s_BFu16s_BFs16ll_BFs16s  {
  signed short v1:16;
  unsigned short v2:16;
  signed __tsi64 v3:16;
  signed short v4:16;
};
//SIG(1 BFs16s_BFu16s_BFs16ll_BFs16s) C1{ Fs:16 Fs:16 FL:16 Fs:16}



static void Test_BFs16s_BFu16s_BFs16ll_BFs16s()
{
  {
    init_simple_test("BFs16s_BFu16s_BFs16ll_BFs16s");
    static STRUCT_IF_C BFs16s_BFu16s_BFs16ll_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16s_BFs16ll_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16s_BFs16ll_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16s_BFs16ll_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFs16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16s_BFs16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFs16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16s_BFs16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFs16ll_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16s_BFs16ll_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFs16ll_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16s_BFs16ll_BFs16s, BFs16s_BFu16s_BFs16ll_BFs16s)
//============================================================================


struct  BFs16s_BFu16s_BFs16ll_BFu16i  {
  signed short v1:16;
  unsigned short v2:16;
  signed __tsi64 v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16s_BFu16s_BFs16ll_BFu16i) C1{ Fs:16 Fs:16 FL:16 Fi:16}



static void Test_BFs16s_BFu16s_BFs16ll_BFu16i()
{
  {
    init_simple_test("BFs16s_BFu16s_BFs16ll_BFu16i");
    static STRUCT_IF_C BFs16s_BFu16s_BFs16ll_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16s_BFs16ll_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16s_BFs16ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16s_BFs16ll_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFs16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16s_BFs16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFs16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16s_BFs16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFs16ll_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16s_BFs16ll_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFs16ll_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16s_BFs16ll_BFu16i, BFs16s_BFu16s_BFs16ll_BFu16i)
//============================================================================


struct  BFs16s_BFu16s_BFs16ll_BFu16ll  {
  signed short v1:16;
  unsigned short v2:16;
  signed __tsi64 v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16s_BFu16s_BFs16ll_BFu16ll) C1{ Fs:16 Fs:16 FL:16 FL:16}



static void Test_BFs16s_BFu16s_BFs16ll_BFu16ll()
{
  {
    init_simple_test("BFs16s_BFu16s_BFs16ll_BFu16ll");
    static STRUCT_IF_C BFs16s_BFu16s_BFs16ll_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16s_BFs16ll_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16s_BFs16ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16s_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16s_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16s_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16s_BFs16ll_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFs16ll_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16s_BFs16ll_BFu16ll, BFs16s_BFu16s_BFs16ll_BFu16ll)
//============================================================================


struct  BFs16s_BFu16s_BFs16ll_BFu16s  {
  signed short v1:16;
  unsigned short v2:16;
  signed __tsi64 v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16s_BFu16s_BFs16ll_BFu16s) C1{ Fs:16 Fs:16 FL:16 Fs:16}



static void Test_BFs16s_BFu16s_BFs16ll_BFu16s()
{
  {
    init_simple_test("BFs16s_BFu16s_BFs16ll_BFu16s");
    static STRUCT_IF_C BFs16s_BFu16s_BFs16ll_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16s_BFs16ll_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16s_BFs16ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16s_BFs16ll_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFs16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16s_BFs16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFs16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16s_BFs16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFs16ll_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16s_BFs16ll_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFs16ll_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16s_BFs16ll_BFu16s, BFs16s_BFu16s_BFs16ll_BFu16s)
//============================================================================


struct  BFs16s_BFu16s_BFs16s  {
  signed short v1:16;
  unsigned short v2:16;
  signed short v3:16;
};
//SIG(1 BFs16s_BFu16s_BFs16s) C1{ Fs:16 Fs:16 Fs:16}



static void Test_BFs16s_BFu16s_BFs16s()
{
  {
    init_simple_test("BFs16s_BFu16s_BFs16s");
    static STRUCT_IF_C BFs16s_BFu16s_BFs16s lv;
    check2(sizeof(lv), 6, "sizeof(BFs16s_BFu16s_BFs16s)");
    check2(__alignof__(lv), 2, "__alignof__(BFs16s_BFu16s_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16s_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16s_BFs16s, BFs16s_BFu16s_BFs16s)
//============================================================================


struct  BFs16s_BFu16s_BFs16s_BFs16i  {
  signed short v1:16;
  unsigned short v2:16;
  signed short v3:16;
  signed int v4:16;
};
//SIG(1 BFs16s_BFu16s_BFs16s_BFs16i) C1{ Fs:16 Fs:16 Fs:16 Fi:16}



static void Test_BFs16s_BFu16s_BFs16s_BFs16i()
{
  {
    init_simple_test("BFs16s_BFu16s_BFs16s_BFs16i");
    static STRUCT_IF_C BFs16s_BFu16s_BFs16s_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16s_BFs16s_BFs16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16s_BFu16s_BFs16s_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16s_BFs16s_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFs16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16s_BFs16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFs16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16s_BFs16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFs16s_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16s_BFs16s_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFs16s_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16s_BFs16s_BFs16i, BFs16s_BFu16s_BFs16s_BFs16i)
//============================================================================


struct  BFs16s_BFu16s_BFs16s_BFs16ll  {
  signed short v1:16;
  unsigned short v2:16;
  signed short v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16s_BFu16s_BFs16s_BFs16ll) C1{ Fs:16 Fs:16 Fs:16 FL:16}



static void Test_BFs16s_BFu16s_BFs16s_BFs16ll()
{
  {
    init_simple_test("BFs16s_BFu16s_BFs16s_BFs16ll");
    static STRUCT_IF_C BFs16s_BFu16s_BFs16s_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16s_BFs16s_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16s_BFs16s_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16s_BFs16s_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFs16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16s_BFs16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFs16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16s_BFs16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFs16s_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16s_BFs16s_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFs16s_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16s_BFs16s_BFs16ll, BFs16s_BFu16s_BFs16s_BFs16ll)
//============================================================================


struct  BFs16s_BFu16s_BFs16s_BFs16s  {
  signed short v1:16;
  unsigned short v2:16;
  signed short v3:16;
  signed short v4:16;
};
//SIG(1 BFs16s_BFu16s_BFs16s_BFs16s) C1{ Fs:16 Fs:16 Fs:16 Fs:16}



static void Test_BFs16s_BFu16s_BFs16s_BFs16s()
{
  {
    init_simple_test("BFs16s_BFu16s_BFs16s_BFs16s");
    static STRUCT_IF_C BFs16s_BFu16s_BFs16s_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16s_BFs16s_BFs16s)");
    check2(__alignof__(lv), 2, "__alignof__(BFs16s_BFu16s_BFs16s_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16s_BFs16s_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFs16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16s_BFs16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFs16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16s_BFs16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFs16s_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16s_BFs16s_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFs16s_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16s_BFs16s_BFs16s, BFs16s_BFu16s_BFs16s_BFs16s)
//============================================================================


struct  BFs16s_BFu16s_BFs16s_BFu16i  {
  signed short v1:16;
  unsigned short v2:16;
  signed short v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16s_BFu16s_BFs16s_BFu16i) C1{ Fs:16 Fs:16 Fs:16 Fi:16}



static void Test_BFs16s_BFu16s_BFs16s_BFu16i()
{
  {
    init_simple_test("BFs16s_BFu16s_BFs16s_BFu16i");
    static STRUCT_IF_C BFs16s_BFu16s_BFs16s_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16s_BFs16s_BFu16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16s_BFu16s_BFs16s_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16s_BFs16s_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFs16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16s_BFs16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFs16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16s_BFs16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFs16s_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16s_BFs16s_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFs16s_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16s_BFs16s_BFu16i, BFs16s_BFu16s_BFs16s_BFu16i)
//============================================================================


struct  BFs16s_BFu16s_BFs16s_BFu16ll  {
  signed short v1:16;
  unsigned short v2:16;
  signed short v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16s_BFu16s_BFs16s_BFu16ll) C1{ Fs:16 Fs:16 Fs:16 FL:16}



static void Test_BFs16s_BFu16s_BFs16s_BFu16ll()
{
  {
    init_simple_test("BFs16s_BFu16s_BFs16s_BFu16ll");
    static STRUCT_IF_C BFs16s_BFu16s_BFs16s_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16s_BFs16s_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16s_BFs16s_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16s_BFs16s_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFs16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16s_BFs16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFs16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16s_BFs16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFs16s_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16s_BFs16s_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFs16s_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16s_BFs16s_BFu16ll, BFs16s_BFu16s_BFs16s_BFu16ll)
//============================================================================


struct  BFs16s_BFu16s_BFs16s_BFu16s  {
  signed short v1:16;
  unsigned short v2:16;
  signed short v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16s_BFu16s_BFs16s_BFu16s) C1{ Fs:16 Fs:16 Fs:16 Fs:16}



static void Test_BFs16s_BFu16s_BFs16s_BFu16s()
{
  {
    init_simple_test("BFs16s_BFu16s_BFs16s_BFu16s");
    static STRUCT_IF_C BFs16s_BFu16s_BFs16s_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16s_BFs16s_BFu16s)");
    check2(__alignof__(lv), 2, "__alignof__(BFs16s_BFu16s_BFs16s_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16s_BFs16s_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFs16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16s_BFs16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFs16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16s_BFs16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFs16s_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16s_BFs16s_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFs16s_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16s_BFs16s_BFu16s, BFs16s_BFu16s_BFs16s_BFu16s)
//============================================================================


struct  BFs16s_BFu16s_BFu16i  {
  signed short v1:16;
  unsigned short v2:16;
  unsigned int v3:16;
};
//SIG(1 BFs16s_BFu16s_BFu16i) C1{ Fs:16 Fs:16 Fi:16}



static void Test_BFs16s_BFu16s_BFu16i()
{
  {
    init_simple_test("BFs16s_BFu16s_BFu16i");
    static STRUCT_IF_C BFs16s_BFu16s_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16s_BFu16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16s_BFu16s_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16s_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16s_BFu16i, BFs16s_BFu16s_BFu16i)
//============================================================================


struct  BFs16s_BFu16s_BFu16i_BFs16i  {
  signed short v1:16;
  unsigned short v2:16;
  unsigned int v3:16;
  signed int v4:16;
};
//SIG(1 BFs16s_BFu16s_BFu16i_BFs16i) C1{ Fs:16 Fs:16 Fi:16 Fi:16}



static void Test_BFs16s_BFu16s_BFu16i_BFs16i()
{
  {
    init_simple_test("BFs16s_BFu16s_BFu16i_BFs16i");
    static STRUCT_IF_C BFs16s_BFu16s_BFu16i_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16s_BFu16i_BFs16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16s_BFu16s_BFu16i_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16s_BFu16i_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFu16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16s_BFu16i_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFu16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16s_BFu16i_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFu16i_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16s_BFu16i_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFu16i_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16s_BFu16i_BFs16i, BFs16s_BFu16s_BFu16i_BFs16i)
//============================================================================


struct  BFs16s_BFu16s_BFu16i_BFs16ll  {
  signed short v1:16;
  unsigned short v2:16;
  unsigned int v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16s_BFu16s_BFu16i_BFs16ll) C1{ Fs:16 Fs:16 Fi:16 FL:16}



static void Test_BFs16s_BFu16s_BFu16i_BFs16ll()
{
  {
    init_simple_test("BFs16s_BFu16s_BFu16i_BFs16ll");
    static STRUCT_IF_C BFs16s_BFu16s_BFu16i_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16s_BFu16i_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16s_BFu16i_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16s_BFu16i_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFu16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16s_BFu16i_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFu16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16s_BFu16i_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFu16i_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16s_BFu16i_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFu16i_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16s_BFu16i_BFs16ll, BFs16s_BFu16s_BFu16i_BFs16ll)
//============================================================================


struct  BFs16s_BFu16s_BFu16i_BFs16s  {
  signed short v1:16;
  unsigned short v2:16;
  unsigned int v3:16;
  signed short v4:16;
};
//SIG(1 BFs16s_BFu16s_BFu16i_BFs16s) C1{ Fs:16 Fs:16 Fi:16 Fs:16}



static void Test_BFs16s_BFu16s_BFu16i_BFs16s()
{
  {
    init_simple_test("BFs16s_BFu16s_BFu16i_BFs16s");
    static STRUCT_IF_C BFs16s_BFu16s_BFu16i_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16s_BFu16i_BFs16s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16s_BFu16s_BFu16i_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16s_BFu16i_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFu16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16s_BFu16i_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFu16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16s_BFu16i_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFu16i_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16s_BFu16i_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFu16i_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16s_BFu16i_BFs16s, BFs16s_BFu16s_BFu16i_BFs16s)
//============================================================================


struct  BFs16s_BFu16s_BFu16i_BFu16i  {
  signed short v1:16;
  unsigned short v2:16;
  unsigned int v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16s_BFu16s_BFu16i_BFu16i) C1{ Fs:16 Fs:16 Fi:16 Fi:16}



static void Test_BFs16s_BFu16s_BFu16i_BFu16i()
{
  {
    init_simple_test("BFs16s_BFu16s_BFu16i_BFu16i");
    static STRUCT_IF_C BFs16s_BFu16s_BFu16i_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16s_BFu16i_BFu16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16s_BFu16s_BFu16i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16s_BFu16i_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFu16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16s_BFu16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFu16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16s_BFu16i_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFu16i_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16s_BFu16i_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFu16i_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16s_BFu16i_BFu16i, BFs16s_BFu16s_BFu16i_BFu16i)
//============================================================================


struct  BFs16s_BFu16s_BFu16i_BFu16ll  {
  signed short v1:16;
  unsigned short v2:16;
  unsigned int v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16s_BFu16s_BFu16i_BFu16ll) C1{ Fs:16 Fs:16 Fi:16 FL:16}



static void Test_BFs16s_BFu16s_BFu16i_BFu16ll()
{
  {
    init_simple_test("BFs16s_BFu16s_BFu16i_BFu16ll");
    static STRUCT_IF_C BFs16s_BFu16s_BFu16i_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16s_BFu16i_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16s_BFu16i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16s_BFu16i_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFu16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16s_BFu16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFu16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16s_BFu16i_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFu16i_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16s_BFu16i_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFu16i_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16s_BFu16i_BFu16ll, BFs16s_BFu16s_BFu16i_BFu16ll)
//============================================================================


struct  BFs16s_BFu16s_BFu16i_BFu16s  {
  signed short v1:16;
  unsigned short v2:16;
  unsigned int v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16s_BFu16s_BFu16i_BFu16s) C1{ Fs:16 Fs:16 Fi:16 Fs:16}



static void Test_BFs16s_BFu16s_BFu16i_BFu16s()
{
  {
    init_simple_test("BFs16s_BFu16s_BFu16i_BFu16s");
    static STRUCT_IF_C BFs16s_BFu16s_BFu16i_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16s_BFu16i_BFu16s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16s_BFu16s_BFu16i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16s_BFu16i_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFu16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16s_BFu16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFu16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16s_BFu16i_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFu16i_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16s_BFu16i_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFu16i_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16s_BFu16i_BFu16s, BFs16s_BFu16s_BFu16i_BFu16s)
//============================================================================


struct  BFs16s_BFu16s_BFu16ll  {
  signed short v1:16;
  unsigned short v2:16;
  __tsu64 v3:16;
};
//SIG(1 BFs16s_BFu16s_BFu16ll) C1{ Fs:16 Fs:16 FL:16}



static void Test_BFs16s_BFu16s_BFu16ll()
{
  {
    init_simple_test("BFs16s_BFu16s_BFu16ll");
    static STRUCT_IF_C BFs16s_BFu16s_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16s_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16s_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16s_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16s_BFu16ll, BFs16s_BFu16s_BFu16ll)
//============================================================================


struct  BFs16s_BFu16s_BFu16ll_BFs16i  {
  signed short v1:16;
  unsigned short v2:16;
  __tsu64 v3:16;
  signed int v4:16;
};
//SIG(1 BFs16s_BFu16s_BFu16ll_BFs16i) C1{ Fs:16 Fs:16 FL:16 Fi:16}



static void Test_BFs16s_BFu16s_BFu16ll_BFs16i()
{
  {
    init_simple_test("BFs16s_BFu16s_BFu16ll_BFs16i");
    static STRUCT_IF_C BFs16s_BFu16s_BFu16ll_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16s_BFu16ll_BFs16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16s_BFu16ll_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16s_BFu16ll_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFu16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16s_BFu16ll_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFu16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16s_BFu16ll_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFu16ll_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16s_BFu16ll_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFu16ll_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16s_BFu16ll_BFs16i, BFs16s_BFu16s_BFu16ll_BFs16i)
//============================================================================


struct  BFs16s_BFu16s_BFu16ll_BFs16ll  {
  signed short v1:16;
  unsigned short v2:16;
  __tsu64 v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16s_BFu16s_BFu16ll_BFs16ll) C1{ Fs:16 Fs:16 FL:16 FL:16}



static void Test_BFs16s_BFu16s_BFu16ll_BFs16ll()
{
  {
    init_simple_test("BFs16s_BFu16s_BFu16ll_BFs16ll");
    static STRUCT_IF_C BFs16s_BFu16s_BFu16ll_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16s_BFu16ll_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16s_BFu16ll_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16s_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16s_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16s_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16s_BFu16ll_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFu16ll_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16s_BFu16ll_BFs16ll, BFs16s_BFu16s_BFu16ll_BFs16ll)
//============================================================================


struct  BFs16s_BFu16s_BFu16ll_BFs16s  {
  signed short v1:16;
  unsigned short v2:16;
  __tsu64 v3:16;
  signed short v4:16;
};
//SIG(1 BFs16s_BFu16s_BFu16ll_BFs16s) C1{ Fs:16 Fs:16 FL:16 Fs:16}



static void Test_BFs16s_BFu16s_BFu16ll_BFs16s()
{
  {
    init_simple_test("BFs16s_BFu16s_BFu16ll_BFs16s");
    static STRUCT_IF_C BFs16s_BFu16s_BFu16ll_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16s_BFu16ll_BFs16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16s_BFu16ll_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16s_BFu16ll_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFu16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16s_BFu16ll_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFu16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16s_BFu16ll_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFu16ll_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16s_BFu16ll_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFu16ll_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16s_BFu16ll_BFs16s, BFs16s_BFu16s_BFu16ll_BFs16s)
//============================================================================


struct  BFs16s_BFu16s_BFu16ll_BFu16i  {
  signed short v1:16;
  unsigned short v2:16;
  __tsu64 v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16s_BFu16s_BFu16ll_BFu16i) C1{ Fs:16 Fs:16 FL:16 Fi:16}



static void Test_BFs16s_BFu16s_BFu16ll_BFu16i()
{
  {
    init_simple_test("BFs16s_BFu16s_BFu16ll_BFu16i");
    static STRUCT_IF_C BFs16s_BFu16s_BFu16ll_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16s_BFu16ll_BFu16i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16s_BFu16ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16s_BFu16ll_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFu16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16s_BFu16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFu16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16s_BFu16ll_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFu16ll_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16s_BFu16ll_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFu16ll_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16s_BFu16ll_BFu16i, BFs16s_BFu16s_BFu16ll_BFu16i)
//============================================================================


struct  BFs16s_BFu16s_BFu16ll_BFu16ll  {
  signed short v1:16;
  unsigned short v2:16;
  __tsu64 v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16s_BFu16s_BFu16ll_BFu16ll) C1{ Fs:16 Fs:16 FL:16 FL:16}



static void Test_BFs16s_BFu16s_BFu16ll_BFu16ll()
{
  {
    init_simple_test("BFs16s_BFu16s_BFu16ll_BFu16ll");
    static STRUCT_IF_C BFs16s_BFu16s_BFu16ll_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16s_BFu16ll_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16s_BFu16ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16s_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16s_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16s_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16s_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFu16ll_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16s_BFu16ll_BFu16ll, BFs16s_BFu16s_BFu16ll_BFu16ll)
//============================================================================


struct  BFs16s_BFu16s_BFu16ll_BFu16s  {
  signed short v1:16;
  unsigned short v2:16;
  __tsu64 v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16s_BFu16s_BFu16ll_BFu16s) C1{ Fs:16 Fs:16 FL:16 Fs:16}



static void Test_BFs16s_BFu16s_BFu16ll_BFu16s()
{
  {
    init_simple_test("BFs16s_BFu16s_BFu16ll_BFu16s");
    static STRUCT_IF_C BFs16s_BFu16s_BFu16ll_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16s_BFu16ll_BFu16s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16s_BFu16ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16s_BFu16ll_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFu16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16s_BFu16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFu16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16s_BFu16ll_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFu16ll_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16s_BFu16ll_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFu16ll_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16s_BFu16ll_BFu16s, BFs16s_BFu16s_BFu16ll_BFu16s)
//============================================================================


struct  BFs16s_BFu16s_BFu16s  {
  signed short v1:16;
  unsigned short v2:16;
  unsigned short v3:16;
};
//SIG(1 BFs16s_BFu16s_BFu16s) C1{ Fs:16 Fs:16 Fs:16}



static void Test_BFs16s_BFu16s_BFu16s()
{
  {
    init_simple_test("BFs16s_BFu16s_BFu16s");
    static STRUCT_IF_C BFs16s_BFu16s_BFu16s lv;
    check2(sizeof(lv), 6, "sizeof(BFs16s_BFu16s_BFu16s)");
    check2(__alignof__(lv), 2, "__alignof__(BFs16s_BFu16s_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16s_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16s_BFu16s, BFs16s_BFu16s_BFu16s)
//============================================================================


struct  BFs16s_BFu16s_BFu16s_BFs16i  {
  signed short v1:16;
  unsigned short v2:16;
  unsigned short v3:16;
  signed int v4:16;
};
//SIG(1 BFs16s_BFu16s_BFu16s_BFs16i) C1{ Fs:16 Fs:16 Fs:16 Fi:16}



static void Test_BFs16s_BFu16s_BFu16s_BFs16i()
{
  {
    init_simple_test("BFs16s_BFu16s_BFu16s_BFs16i");
    static STRUCT_IF_C BFs16s_BFu16s_BFu16s_BFs16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16s_BFu16s_BFs16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16s_BFu16s_BFu16s_BFs16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16s_BFu16s_BFs16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFu16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16s_BFu16s_BFs16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFu16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16s_BFu16s_BFs16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFu16s_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16s_BFu16s_BFs16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFu16s_BFs16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16s_BFu16s_BFs16i, BFs16s_BFu16s_BFu16s_BFs16i)
//============================================================================


struct  BFs16s_BFu16s_BFu16s_BFs16ll  {
  signed short v1:16;
  unsigned short v2:16;
  unsigned short v3:16;
  signed __tsi64 v4:16;
};
//SIG(1 BFs16s_BFu16s_BFu16s_BFs16ll) C1{ Fs:16 Fs:16 Fs:16 FL:16}



static void Test_BFs16s_BFu16s_BFu16s_BFs16ll()
{
  {
    init_simple_test("BFs16s_BFu16s_BFu16s_BFs16ll");
    static STRUCT_IF_C BFs16s_BFu16s_BFu16s_BFs16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16s_BFu16s_BFs16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16s_BFu16s_BFs16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16s_BFu16s_BFs16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFu16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16s_BFu16s_BFs16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFu16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16s_BFu16s_BFs16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFu16s_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16s_BFu16s_BFs16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFu16s_BFs16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16s_BFu16s_BFs16ll, BFs16s_BFu16s_BFu16s_BFs16ll)
//============================================================================


struct  BFs16s_BFu16s_BFu16s_BFs16s  {
  signed short v1:16;
  unsigned short v2:16;
  unsigned short v3:16;
  signed short v4:16;
};
//SIG(1 BFs16s_BFu16s_BFu16s_BFs16s) C1{ Fs:16 Fs:16 Fs:16 Fs:16}



static void Test_BFs16s_BFu16s_BFu16s_BFs16s()
{
  {
    init_simple_test("BFs16s_BFu16s_BFu16s_BFs16s");
    static STRUCT_IF_C BFs16s_BFu16s_BFu16s_BFs16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16s_BFu16s_BFs16s)");
    check2(__alignof__(lv), 2, "__alignof__(BFs16s_BFu16s_BFu16s_BFs16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16s_BFu16s_BFs16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFu16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16s_BFu16s_BFs16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFu16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16s_BFu16s_BFs16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFu16s_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16s_BFu16s_BFs16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFu16s_BFs16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16s_BFu16s_BFs16s, BFs16s_BFu16s_BFu16s_BFs16s)
//============================================================================


struct  BFs16s_BFu16s_BFu16s_BFu16i  {
  signed short v1:16;
  unsigned short v2:16;
  unsigned short v3:16;
  unsigned int v4:16;
};
//SIG(1 BFs16s_BFu16s_BFu16s_BFu16i) C1{ Fs:16 Fs:16 Fs:16 Fi:16}



static void Test_BFs16s_BFu16s_BFu16s_BFu16i()
{
  {
    init_simple_test("BFs16s_BFu16s_BFu16s_BFu16i");
    static STRUCT_IF_C BFs16s_BFu16s_BFu16s_BFu16i lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16s_BFu16s_BFu16i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs16s_BFu16s_BFu16s_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16s_BFu16s_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFu16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16s_BFu16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFu16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16s_BFu16s_BFu16i");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFu16s_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16s_BFu16s_BFu16i");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFu16s_BFu16i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16s_BFu16s_BFu16i, BFs16s_BFu16s_BFu16s_BFu16i)
//============================================================================


struct  BFs16s_BFu16s_BFu16s_BFu16ll  {
  signed short v1:16;
  unsigned short v2:16;
  unsigned short v3:16;
  __tsu64 v4:16;
};
//SIG(1 BFs16s_BFu16s_BFu16s_BFu16ll) C1{ Fs:16 Fs:16 Fs:16 FL:16}



static void Test_BFs16s_BFu16s_BFu16s_BFu16ll()
{
  {
    init_simple_test("BFs16s_BFu16s_BFu16s_BFu16ll");
    static STRUCT_IF_C BFs16s_BFu16s_BFu16s_BFu16ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16s_BFu16s_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs16s_BFu16s_BFu16s_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16s_BFu16s_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFu16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16s_BFu16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFu16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16s_BFu16s_BFu16ll");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFu16s_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16s_BFu16s_BFu16ll");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFu16s_BFu16ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16s_BFu16s_BFu16ll, BFs16s_BFu16s_BFu16s_BFu16ll)
//============================================================================


struct  BFs16s_BFu16s_BFu16s_BFu16s  {
  signed short v1:16;
  unsigned short v2:16;
  unsigned short v3:16;
  unsigned short v4:16;
};
//SIG(1 BFs16s_BFu16s_BFu16s_BFu16s) C1{ Fs:16 Fs:16 Fs:16 Fs:16}



static void Test_BFs16s_BFu16s_BFu16s_BFu16s()
{
  {
    init_simple_test("BFs16s_BFu16s_BFu16s_BFu16s");
    static STRUCT_IF_C BFs16s_BFu16s_BFu16s_BFu16s lv;
    check2(sizeof(lv), 8, "sizeof(BFs16s_BFu16s_BFu16s_BFu16s)");
    check2(__alignof__(lv), 2, "__alignof__(BFs16s_BFu16s_BFu16s_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFs16s_BFu16s_BFu16s_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_sll(1LL<<15), "BFs16s_BFu16s_BFu16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFs16s_BFu16s_BFu16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFu16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, 1, "BFs16s_BFu16s_BFu16s_BFu16s");
    set_bf_and_test(lv, v3, 4, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFu16s_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, 1, "BFs16s_BFu16s_BFu16s_BFu16s");
    set_bf_and_test(lv, v4, 6, 0, 16, hide_ull(1LL<<15), "BFs16s_BFu16s_BFu16s_BFu16s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs16s_BFu16s_BFu16s_BFu16s, BFs16s_BFu16s_BFu16s_BFu16s)
//============================================================================


struct  BFs17i_BFs17i  {
  signed int v1:17;
  signed int v2:17;
};
//SIG(1 BFs17i_BFs17i) C1{ Fi:17 Fi:17}



static void Test_BFs17i_BFs17i()
{
  {
    init_simple_test("BFs17i_BFs17i");
    static STRUCT_IF_C BFs17i_BFs17i lv;
    check2(sizeof(lv), 8, "sizeof(BFs17i_BFs17i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs17i_BFs17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFs17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFs17i");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17i_BFs17i");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_sll(1LL<<16), "BFs17i_BFs17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFs17i, BFs17i_BFs17i)
//============================================================================


struct  BFs17i_BFs17i_BFs17i  {
  signed int v1:17;
  signed int v2:17;
  signed int v3:17;
};
//SIG(1 BFs17i_BFs17i_BFs17i) C1{ Fi:17 Fi:17 Fi:17}



static void Test_BFs17i_BFs17i_BFs17i()
{
  {
    init_simple_test("BFs17i_BFs17i_BFs17i");
    static STRUCT_IF_C BFs17i_BFs17i_BFs17i lv;
    check2(sizeof(lv), 12, "sizeof(BFs17i_BFs17i_BFs17i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs17i_BFs17i_BFs17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFs17i_BFs17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFs17i_BFs17i");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17i_BFs17i_BFs17i");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_sll(1LL<<16), "BFs17i_BFs17i_BFs17i");
    set_bf_and_test(lv, v3, 8, 0, 17, 1, "BFs17i_BFs17i_BFs17i");
    set_bf_and_test(lv, v3, 8, 0, 17, hide_sll(1LL<<16), "BFs17i_BFs17i_BFs17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFs17i_BFs17i, BFs17i_BFs17i_BFs17i)
//============================================================================


struct  BFs17i_BFs17i_BFs17i_BFs17i  {
  signed int v1:17;
  signed int v2:17;
  signed int v3:17;
  signed int v4:17;
};
//SIG(1 BFs17i_BFs17i_BFs17i_BFs17i) C1{ Fi:17 Fi:17 Fi:17 Fi:17}



static void Test_BFs17i_BFs17i_BFs17i_BFs17i()
{
  {
    init_simple_test("BFs17i_BFs17i_BFs17i_BFs17i");
    static STRUCT_IF_C BFs17i_BFs17i_BFs17i_BFs17i lv;
    check2(sizeof(lv), 16, "sizeof(BFs17i_BFs17i_BFs17i_BFs17i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs17i_BFs17i_BFs17i_BFs17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFs17i_BFs17i_BFs17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFs17i_BFs17i_BFs17i");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17i_BFs17i_BFs17i_BFs17i");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_sll(1LL<<16), "BFs17i_BFs17i_BFs17i_BFs17i");
    set_bf_and_test(lv, v3, 8, 0, 17, 1, "BFs17i_BFs17i_BFs17i_BFs17i");
    set_bf_and_test(lv, v3, 8, 0, 17, hide_sll(1LL<<16), "BFs17i_BFs17i_BFs17i_BFs17i");
    set_bf_and_test(lv, v4, 12, 0, 17, 1, "BFs17i_BFs17i_BFs17i_BFs17i");
    set_bf_and_test(lv, v4, 12, 0, 17, hide_sll(1LL<<16), "BFs17i_BFs17i_BFs17i_BFs17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFs17i_BFs17i_BFs17i, BFs17i_BFs17i_BFs17i_BFs17i)
//============================================================================


struct  BFs17i_BFs17i_BFs17i_BFs17ll  {
  signed int v1:17;
  signed int v2:17;
  signed int v3:17;
  signed __tsi64 v4:17;
};
//SIG(1 BFs17i_BFs17i_BFs17i_BFs17ll) C1{ Fi:17 Fi:17 Fi:17 FL:17}



static void Test_BFs17i_BFs17i_BFs17i_BFs17ll()
{
  {
    init_simple_test("BFs17i_BFs17i_BFs17i_BFs17ll");
    static STRUCT_IF_C BFs17i_BFs17i_BFs17i_BFs17ll lv;
    check2(sizeof(lv), 16, "sizeof(BFs17i_BFs17i_BFs17i_BFs17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17i_BFs17i_BFs17i_BFs17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFs17i_BFs17i_BFs17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFs17i_BFs17i_BFs17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17i_BFs17i_BFs17i_BFs17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_sll(1LL<<16), "BFs17i_BFs17i_BFs17i_BFs17ll");
    set_bf_and_test(lv, v3, 8, 0, 17, 1, "BFs17i_BFs17i_BFs17i_BFs17ll");
    set_bf_and_test(lv, v3, 8, 0, 17, hide_sll(1LL<<16), "BFs17i_BFs17i_BFs17i_BFs17ll");
    set_bf_and_test(lv, v4, 10, 1, 17, 1, "BFs17i_BFs17i_BFs17i_BFs17ll");
    set_bf_and_test(lv, v4, 10, 1, 17, hide_sll(1LL<<16), "BFs17i_BFs17i_BFs17i_BFs17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFs17i_BFs17i_BFs17ll, BFs17i_BFs17i_BFs17i_BFs17ll)
//============================================================================


struct  BFs17i_BFs17i_BFs17i_BFu17i  {
  signed int v1:17;
  signed int v2:17;
  signed int v3:17;
  unsigned int v4:17;
};
//SIG(1 BFs17i_BFs17i_BFs17i_BFu17i) C1{ Fi:17 Fi:17 Fi:17 Fi:17}



static void Test_BFs17i_BFs17i_BFs17i_BFu17i()
{
  {
    init_simple_test("BFs17i_BFs17i_BFs17i_BFu17i");
    static STRUCT_IF_C BFs17i_BFs17i_BFs17i_BFu17i lv;
    check2(sizeof(lv), 16, "sizeof(BFs17i_BFs17i_BFs17i_BFu17i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs17i_BFs17i_BFs17i_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFs17i_BFs17i_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFs17i_BFs17i_BFu17i");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17i_BFs17i_BFs17i_BFu17i");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_sll(1LL<<16), "BFs17i_BFs17i_BFs17i_BFu17i");
    set_bf_and_test(lv, v3, 8, 0, 17, 1, "BFs17i_BFs17i_BFs17i_BFu17i");
    set_bf_and_test(lv, v3, 8, 0, 17, hide_sll(1LL<<16), "BFs17i_BFs17i_BFs17i_BFu17i");
    set_bf_and_test(lv, v4, 12, 0, 17, 1, "BFs17i_BFs17i_BFs17i_BFu17i");
    set_bf_and_test(lv, v4, 12, 0, 17, hide_ull(1LL<<16), "BFs17i_BFs17i_BFs17i_BFu17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFs17i_BFs17i_BFu17i, BFs17i_BFs17i_BFs17i_BFu17i)
//============================================================================


struct  BFs17i_BFs17i_BFs17i_BFu17ll  {
  signed int v1:17;
  signed int v2:17;
  signed int v3:17;
  __tsu64 v4:17;
};
//SIG(1 BFs17i_BFs17i_BFs17i_BFu17ll) C1{ Fi:17 Fi:17 Fi:17 FL:17}



static void Test_BFs17i_BFs17i_BFs17i_BFu17ll()
{
  {
    init_simple_test("BFs17i_BFs17i_BFs17i_BFu17ll");
    static STRUCT_IF_C BFs17i_BFs17i_BFs17i_BFu17ll lv;
    check2(sizeof(lv), 16, "sizeof(BFs17i_BFs17i_BFs17i_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17i_BFs17i_BFs17i_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFs17i_BFs17i_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFs17i_BFs17i_BFu17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17i_BFs17i_BFs17i_BFu17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_sll(1LL<<16), "BFs17i_BFs17i_BFs17i_BFu17ll");
    set_bf_and_test(lv, v3, 8, 0, 17, 1, "BFs17i_BFs17i_BFs17i_BFu17ll");
    set_bf_and_test(lv, v3, 8, 0, 17, hide_sll(1LL<<16), "BFs17i_BFs17i_BFs17i_BFu17ll");
    set_bf_and_test(lv, v4, 10, 1, 17, 1, "BFs17i_BFs17i_BFs17i_BFu17ll");
    set_bf_and_test(lv, v4, 10, 1, 17, hide_ull(1LL<<16), "BFs17i_BFs17i_BFs17i_BFu17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFs17i_BFs17i_BFu17ll, BFs17i_BFs17i_BFs17i_BFu17ll)
//============================================================================


struct  BFs17i_BFs17i_BFs17ll  {
  signed int v1:17;
  signed int v2:17;
  signed __tsi64 v3:17;
};
//SIG(1 BFs17i_BFs17i_BFs17ll) C1{ Fi:17 Fi:17 FL:17}



static void Test_BFs17i_BFs17i_BFs17ll()
{
  {
    init_simple_test("BFs17i_BFs17i_BFs17ll");
    static STRUCT_IF_C BFs17i_BFs17i_BFs17ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17i_BFs17i_BFs17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17i_BFs17i_BFs17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFs17i_BFs17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFs17i_BFs17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17i_BFs17i_BFs17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_sll(1LL<<16), "BFs17i_BFs17i_BFs17ll");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, 1, "BFs17i_BFs17i_BFs17ll");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, hide_sll(1LL<<16), "BFs17i_BFs17i_BFs17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFs17i_BFs17ll, BFs17i_BFs17i_BFs17ll)
//============================================================================


struct  BFs17i_BFs17i_BFs17ll_BFs17i  {
  signed int v1:17;
  signed int v2:17;
  signed __tsi64 v3:17;
  signed int v4:17;
};
//SIG(1 BFs17i_BFs17i_BFs17ll_BFs17i) C1{ Fi:17 Fi:17 FL:17 Fi:17}



static void Test_BFs17i_BFs17i_BFs17ll_BFs17i()
{
  {
    init_simple_test("BFs17i_BFs17i_BFs17ll_BFs17i");
    static STRUCT_IF_C BFs17i_BFs17i_BFs17ll_BFs17i lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17i_BFs17i_BFs17ll_BFs17i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17i_BFs17i_BFs17ll_BFs17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFs17i_BFs17ll_BFs17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFs17i_BFs17ll_BFs17i");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17i_BFs17i_BFs17ll_BFs17i");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_sll(1LL<<16), "BFs17i_BFs17i_BFs17ll_BFs17i");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, 1, "BFs17i_BFs17i_BFs17ll_BFs17i");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, hide_sll(1LL<<16), "BFs17i_BFs17i_BFs17ll_BFs17i");
    set_bf_and_test(lv, v4, ABISELECT(12,8), ABISELECT(0,2), 17, 1, "BFs17i_BFs17i_BFs17ll_BFs17i");
    set_bf_and_test(lv, v4, ABISELECT(12,8), ABISELECT(0,2), 17, hide_sll(1LL<<16), "BFs17i_BFs17i_BFs17ll_BFs17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFs17i_BFs17ll_BFs17i, BFs17i_BFs17i_BFs17ll_BFs17i)
//============================================================================


struct  BFs17i_BFs17i_BFs17ll_BFs17ll  {
  signed int v1:17;
  signed int v2:17;
  signed __tsi64 v3:17;
  signed __tsi64 v4:17;
};
//SIG(1 BFs17i_BFs17i_BFs17ll_BFs17ll) C1{ Fi:17 Fi:17 FL:17 FL:17}



static void Test_BFs17i_BFs17i_BFs17ll_BFs17ll()
{
  {
    init_simple_test("BFs17i_BFs17i_BFs17ll_BFs17ll");
    static STRUCT_IF_C BFs17i_BFs17i_BFs17ll_BFs17ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17i_BFs17i_BFs17ll_BFs17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17i_BFs17i_BFs17ll_BFs17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFs17i_BFs17ll_BFs17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFs17i_BFs17ll_BFs17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17i_BFs17i_BFs17ll_BFs17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_sll(1LL<<16), "BFs17i_BFs17i_BFs17ll_BFs17ll");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, 1, "BFs17i_BFs17i_BFs17ll_BFs17ll");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, hide_sll(1LL<<16), "BFs17i_BFs17i_BFs17ll_BFs17ll");
    set_bf_and_test(lv, v4, ABISELECT(10,8), ABISELECT(1,2), 17, 1, "BFs17i_BFs17i_BFs17ll_BFs17ll");
    set_bf_and_test(lv, v4, ABISELECT(10,8), ABISELECT(1,2), 17, hide_sll(1LL<<16), "BFs17i_BFs17i_BFs17ll_BFs17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFs17i_BFs17ll_BFs17ll, BFs17i_BFs17i_BFs17ll_BFs17ll)
//============================================================================


struct  BFs17i_BFs17i_BFs17ll_BFu17i  {
  signed int v1:17;
  signed int v2:17;
  signed __tsi64 v3:17;
  unsigned int v4:17;
};
//SIG(1 BFs17i_BFs17i_BFs17ll_BFu17i) C1{ Fi:17 Fi:17 FL:17 Fi:17}



static void Test_BFs17i_BFs17i_BFs17ll_BFu17i()
{
  {
    init_simple_test("BFs17i_BFs17i_BFs17ll_BFu17i");
    static STRUCT_IF_C BFs17i_BFs17i_BFs17ll_BFu17i lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17i_BFs17i_BFs17ll_BFu17i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17i_BFs17i_BFs17ll_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFs17i_BFs17ll_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFs17i_BFs17ll_BFu17i");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17i_BFs17i_BFs17ll_BFu17i");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_sll(1LL<<16), "BFs17i_BFs17i_BFs17ll_BFu17i");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, 1, "BFs17i_BFs17i_BFs17ll_BFu17i");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, hide_sll(1LL<<16), "BFs17i_BFs17i_BFs17ll_BFu17i");
    set_bf_and_test(lv, v4, ABISELECT(12,8), ABISELECT(0,2), 17, 1, "BFs17i_BFs17i_BFs17ll_BFu17i");
    set_bf_and_test(lv, v4, ABISELECT(12,8), ABISELECT(0,2), 17, hide_ull(1LL<<16), "BFs17i_BFs17i_BFs17ll_BFu17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFs17i_BFs17ll_BFu17i, BFs17i_BFs17i_BFs17ll_BFu17i)
//============================================================================


struct  BFs17i_BFs17i_BFs17ll_BFu17ll  {
  signed int v1:17;
  signed int v2:17;
  signed __tsi64 v3:17;
  __tsu64 v4:17;
};
//SIG(1 BFs17i_BFs17i_BFs17ll_BFu17ll) C1{ Fi:17 Fi:17 FL:17 FL:17}



static void Test_BFs17i_BFs17i_BFs17ll_BFu17ll()
{
  {
    init_simple_test("BFs17i_BFs17i_BFs17ll_BFu17ll");
    static STRUCT_IF_C BFs17i_BFs17i_BFs17ll_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17i_BFs17i_BFs17ll_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17i_BFs17i_BFs17ll_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFs17i_BFs17ll_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFs17i_BFs17ll_BFu17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17i_BFs17i_BFs17ll_BFu17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_sll(1LL<<16), "BFs17i_BFs17i_BFs17ll_BFu17ll");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, 1, "BFs17i_BFs17i_BFs17ll_BFu17ll");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, hide_sll(1LL<<16), "BFs17i_BFs17i_BFs17ll_BFu17ll");
    set_bf_and_test(lv, v4, ABISELECT(10,8), ABISELECT(1,2), 17, 1, "BFs17i_BFs17i_BFs17ll_BFu17ll");
    set_bf_and_test(lv, v4, ABISELECT(10,8), ABISELECT(1,2), 17, hide_ull(1LL<<16), "BFs17i_BFs17i_BFs17ll_BFu17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFs17i_BFs17ll_BFu17ll, BFs17i_BFs17i_BFs17ll_BFu17ll)
//============================================================================


struct  BFs17i_BFs17i_BFu17i  {
  signed int v1:17;
  signed int v2:17;
  unsigned int v3:17;
};
//SIG(1 BFs17i_BFs17i_BFu17i) C1{ Fi:17 Fi:17 Fi:17}



static void Test_BFs17i_BFs17i_BFu17i()
{
  {
    init_simple_test("BFs17i_BFs17i_BFu17i");
    static STRUCT_IF_C BFs17i_BFs17i_BFu17i lv;
    check2(sizeof(lv), 12, "sizeof(BFs17i_BFs17i_BFu17i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs17i_BFs17i_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFs17i_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFs17i_BFu17i");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17i_BFs17i_BFu17i");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_sll(1LL<<16), "BFs17i_BFs17i_BFu17i");
    set_bf_and_test(lv, v3, 8, 0, 17, 1, "BFs17i_BFs17i_BFu17i");
    set_bf_and_test(lv, v3, 8, 0, 17, hide_ull(1LL<<16), "BFs17i_BFs17i_BFu17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFs17i_BFu17i, BFs17i_BFs17i_BFu17i)
//============================================================================


struct  BFs17i_BFs17i_BFu17i_BFs17i  {
  signed int v1:17;
  signed int v2:17;
  unsigned int v3:17;
  signed int v4:17;
};
//SIG(1 BFs17i_BFs17i_BFu17i_BFs17i) C1{ Fi:17 Fi:17 Fi:17 Fi:17}



static void Test_BFs17i_BFs17i_BFu17i_BFs17i()
{
  {
    init_simple_test("BFs17i_BFs17i_BFu17i_BFs17i");
    static STRUCT_IF_C BFs17i_BFs17i_BFu17i_BFs17i lv;
    check2(sizeof(lv), 16, "sizeof(BFs17i_BFs17i_BFu17i_BFs17i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs17i_BFs17i_BFu17i_BFs17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFs17i_BFu17i_BFs17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFs17i_BFu17i_BFs17i");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17i_BFs17i_BFu17i_BFs17i");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_sll(1LL<<16), "BFs17i_BFs17i_BFu17i_BFs17i");
    set_bf_and_test(lv, v3, 8, 0, 17, 1, "BFs17i_BFs17i_BFu17i_BFs17i");
    set_bf_and_test(lv, v3, 8, 0, 17, hide_ull(1LL<<16), "BFs17i_BFs17i_BFu17i_BFs17i");
    set_bf_and_test(lv, v4, 12, 0, 17, 1, "BFs17i_BFs17i_BFu17i_BFs17i");
    set_bf_and_test(lv, v4, 12, 0, 17, hide_sll(1LL<<16), "BFs17i_BFs17i_BFu17i_BFs17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFs17i_BFu17i_BFs17i, BFs17i_BFs17i_BFu17i_BFs17i)
//============================================================================


struct  BFs17i_BFs17i_BFu17i_BFs17ll  {
  signed int v1:17;
  signed int v2:17;
  unsigned int v3:17;
  signed __tsi64 v4:17;
};
//SIG(1 BFs17i_BFs17i_BFu17i_BFs17ll) C1{ Fi:17 Fi:17 Fi:17 FL:17}



static void Test_BFs17i_BFs17i_BFu17i_BFs17ll()
{
  {
    init_simple_test("BFs17i_BFs17i_BFu17i_BFs17ll");
    static STRUCT_IF_C BFs17i_BFs17i_BFu17i_BFs17ll lv;
    check2(sizeof(lv), 16, "sizeof(BFs17i_BFs17i_BFu17i_BFs17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17i_BFs17i_BFu17i_BFs17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFs17i_BFu17i_BFs17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFs17i_BFu17i_BFs17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17i_BFs17i_BFu17i_BFs17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_sll(1LL<<16), "BFs17i_BFs17i_BFu17i_BFs17ll");
    set_bf_and_test(lv, v3, 8, 0, 17, 1, "BFs17i_BFs17i_BFu17i_BFs17ll");
    set_bf_and_test(lv, v3, 8, 0, 17, hide_ull(1LL<<16), "BFs17i_BFs17i_BFu17i_BFs17ll");
    set_bf_and_test(lv, v4, 10, 1, 17, 1, "BFs17i_BFs17i_BFu17i_BFs17ll");
    set_bf_and_test(lv, v4, 10, 1, 17, hide_sll(1LL<<16), "BFs17i_BFs17i_BFu17i_BFs17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFs17i_BFu17i_BFs17ll, BFs17i_BFs17i_BFu17i_BFs17ll)
//============================================================================


struct  BFs17i_BFs17i_BFu17i_BFu17i  {
  signed int v1:17;
  signed int v2:17;
  unsigned int v3:17;
  unsigned int v4:17;
};
//SIG(1 BFs17i_BFs17i_BFu17i_BFu17i) C1{ Fi:17 Fi:17 Fi:17 Fi:17}



static void Test_BFs17i_BFs17i_BFu17i_BFu17i()
{
  {
    init_simple_test("BFs17i_BFs17i_BFu17i_BFu17i");
    static STRUCT_IF_C BFs17i_BFs17i_BFu17i_BFu17i lv;
    check2(sizeof(lv), 16, "sizeof(BFs17i_BFs17i_BFu17i_BFu17i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs17i_BFs17i_BFu17i_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFs17i_BFu17i_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFs17i_BFu17i_BFu17i");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17i_BFs17i_BFu17i_BFu17i");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_sll(1LL<<16), "BFs17i_BFs17i_BFu17i_BFu17i");
    set_bf_and_test(lv, v3, 8, 0, 17, 1, "BFs17i_BFs17i_BFu17i_BFu17i");
    set_bf_and_test(lv, v3, 8, 0, 17, hide_ull(1LL<<16), "BFs17i_BFs17i_BFu17i_BFu17i");
    set_bf_and_test(lv, v4, 12, 0, 17, 1, "BFs17i_BFs17i_BFu17i_BFu17i");
    set_bf_and_test(lv, v4, 12, 0, 17, hide_ull(1LL<<16), "BFs17i_BFs17i_BFu17i_BFu17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFs17i_BFu17i_BFu17i, BFs17i_BFs17i_BFu17i_BFu17i)
//============================================================================


struct  BFs17i_BFs17i_BFu17i_BFu17ll  {
  signed int v1:17;
  signed int v2:17;
  unsigned int v3:17;
  __tsu64 v4:17;
};
//SIG(1 BFs17i_BFs17i_BFu17i_BFu17ll) C1{ Fi:17 Fi:17 Fi:17 FL:17}



static void Test_BFs17i_BFs17i_BFu17i_BFu17ll()
{
  {
    init_simple_test("BFs17i_BFs17i_BFu17i_BFu17ll");
    static STRUCT_IF_C BFs17i_BFs17i_BFu17i_BFu17ll lv;
    check2(sizeof(lv), 16, "sizeof(BFs17i_BFs17i_BFu17i_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17i_BFs17i_BFu17i_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFs17i_BFu17i_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFs17i_BFu17i_BFu17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17i_BFs17i_BFu17i_BFu17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_sll(1LL<<16), "BFs17i_BFs17i_BFu17i_BFu17ll");
    set_bf_and_test(lv, v3, 8, 0, 17, 1, "BFs17i_BFs17i_BFu17i_BFu17ll");
    set_bf_and_test(lv, v3, 8, 0, 17, hide_ull(1LL<<16), "BFs17i_BFs17i_BFu17i_BFu17ll");
    set_bf_and_test(lv, v4, 10, 1, 17, 1, "BFs17i_BFs17i_BFu17i_BFu17ll");
    set_bf_and_test(lv, v4, 10, 1, 17, hide_ull(1LL<<16), "BFs17i_BFs17i_BFu17i_BFu17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFs17i_BFu17i_BFu17ll, BFs17i_BFs17i_BFu17i_BFu17ll)
//============================================================================


struct  BFs17i_BFs17i_BFu17ll  {
  signed int v1:17;
  signed int v2:17;
  __tsu64 v3:17;
};
//SIG(1 BFs17i_BFs17i_BFu17ll) C1{ Fi:17 Fi:17 FL:17}



static void Test_BFs17i_BFs17i_BFu17ll()
{
  {
    init_simple_test("BFs17i_BFs17i_BFu17ll");
    static STRUCT_IF_C BFs17i_BFs17i_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17i_BFs17i_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17i_BFs17i_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFs17i_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFs17i_BFu17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17i_BFs17i_BFu17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_sll(1LL<<16), "BFs17i_BFs17i_BFu17ll");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, 1, "BFs17i_BFs17i_BFu17ll");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, hide_ull(1LL<<16), "BFs17i_BFs17i_BFu17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFs17i_BFu17ll, BFs17i_BFs17i_BFu17ll)
//============================================================================


struct  BFs17i_BFs17i_BFu17ll_BFs17i  {
  signed int v1:17;
  signed int v2:17;
  __tsu64 v3:17;
  signed int v4:17;
};
//SIG(1 BFs17i_BFs17i_BFu17ll_BFs17i) C1{ Fi:17 Fi:17 FL:17 Fi:17}



static void Test_BFs17i_BFs17i_BFu17ll_BFs17i()
{
  {
    init_simple_test("BFs17i_BFs17i_BFu17ll_BFs17i");
    static STRUCT_IF_C BFs17i_BFs17i_BFu17ll_BFs17i lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17i_BFs17i_BFu17ll_BFs17i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17i_BFs17i_BFu17ll_BFs17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFs17i_BFu17ll_BFs17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFs17i_BFu17ll_BFs17i");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17i_BFs17i_BFu17ll_BFs17i");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_sll(1LL<<16), "BFs17i_BFs17i_BFu17ll_BFs17i");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, 1, "BFs17i_BFs17i_BFu17ll_BFs17i");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, hide_ull(1LL<<16), "BFs17i_BFs17i_BFu17ll_BFs17i");
    set_bf_and_test(lv, v4, ABISELECT(12,8), ABISELECT(0,2), 17, 1, "BFs17i_BFs17i_BFu17ll_BFs17i");
    set_bf_and_test(lv, v4, ABISELECT(12,8), ABISELECT(0,2), 17, hide_sll(1LL<<16), "BFs17i_BFs17i_BFu17ll_BFs17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFs17i_BFu17ll_BFs17i, BFs17i_BFs17i_BFu17ll_BFs17i)
//============================================================================


struct  BFs17i_BFs17i_BFu17ll_BFs17ll  {
  signed int v1:17;
  signed int v2:17;
  __tsu64 v3:17;
  signed __tsi64 v4:17;
};
//SIG(1 BFs17i_BFs17i_BFu17ll_BFs17ll) C1{ Fi:17 Fi:17 FL:17 FL:17}



static void Test_BFs17i_BFs17i_BFu17ll_BFs17ll()
{
  {
    init_simple_test("BFs17i_BFs17i_BFu17ll_BFs17ll");
    static STRUCT_IF_C BFs17i_BFs17i_BFu17ll_BFs17ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17i_BFs17i_BFu17ll_BFs17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17i_BFs17i_BFu17ll_BFs17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFs17i_BFu17ll_BFs17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFs17i_BFu17ll_BFs17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17i_BFs17i_BFu17ll_BFs17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_sll(1LL<<16), "BFs17i_BFs17i_BFu17ll_BFs17ll");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, 1, "BFs17i_BFs17i_BFu17ll_BFs17ll");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, hide_ull(1LL<<16), "BFs17i_BFs17i_BFu17ll_BFs17ll");
    set_bf_and_test(lv, v4, ABISELECT(10,8), ABISELECT(1,2), 17, 1, "BFs17i_BFs17i_BFu17ll_BFs17ll");
    set_bf_and_test(lv, v4, ABISELECT(10,8), ABISELECT(1,2), 17, hide_sll(1LL<<16), "BFs17i_BFs17i_BFu17ll_BFs17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFs17i_BFu17ll_BFs17ll, BFs17i_BFs17i_BFu17ll_BFs17ll)
//============================================================================


struct  BFs17i_BFs17i_BFu17ll_BFu17i  {
  signed int v1:17;
  signed int v2:17;
  __tsu64 v3:17;
  unsigned int v4:17;
};
//SIG(1 BFs17i_BFs17i_BFu17ll_BFu17i) C1{ Fi:17 Fi:17 FL:17 Fi:17}



static void Test_BFs17i_BFs17i_BFu17ll_BFu17i()
{
  {
    init_simple_test("BFs17i_BFs17i_BFu17ll_BFu17i");
    static STRUCT_IF_C BFs17i_BFs17i_BFu17ll_BFu17i lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17i_BFs17i_BFu17ll_BFu17i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17i_BFs17i_BFu17ll_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFs17i_BFu17ll_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFs17i_BFu17ll_BFu17i");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17i_BFs17i_BFu17ll_BFu17i");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_sll(1LL<<16), "BFs17i_BFs17i_BFu17ll_BFu17i");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, 1, "BFs17i_BFs17i_BFu17ll_BFu17i");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, hide_ull(1LL<<16), "BFs17i_BFs17i_BFu17ll_BFu17i");
    set_bf_and_test(lv, v4, ABISELECT(12,8), ABISELECT(0,2), 17, 1, "BFs17i_BFs17i_BFu17ll_BFu17i");
    set_bf_and_test(lv, v4, ABISELECT(12,8), ABISELECT(0,2), 17, hide_ull(1LL<<16), "BFs17i_BFs17i_BFu17ll_BFu17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFs17i_BFu17ll_BFu17i, BFs17i_BFs17i_BFu17ll_BFu17i)
//============================================================================


struct  BFs17i_BFs17i_BFu17ll_BFu17ll  {
  signed int v1:17;
  signed int v2:17;
  __tsu64 v3:17;
  __tsu64 v4:17;
};
//SIG(1 BFs17i_BFs17i_BFu17ll_BFu17ll) C1{ Fi:17 Fi:17 FL:17 FL:17}



static void Test_BFs17i_BFs17i_BFu17ll_BFu17ll()
{
  {
    init_simple_test("BFs17i_BFs17i_BFu17ll_BFu17ll");
    static STRUCT_IF_C BFs17i_BFs17i_BFu17ll_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17i_BFs17i_BFu17ll_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17i_BFs17i_BFu17ll_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFs17i_BFu17ll_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFs17i_BFu17ll_BFu17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17i_BFs17i_BFu17ll_BFu17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_sll(1LL<<16), "BFs17i_BFs17i_BFu17ll_BFu17ll");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, 1, "BFs17i_BFs17i_BFu17ll_BFu17ll");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, hide_ull(1LL<<16), "BFs17i_BFs17i_BFu17ll_BFu17ll");
    set_bf_and_test(lv, v4, ABISELECT(10,8), ABISELECT(1,2), 17, 1, "BFs17i_BFs17i_BFu17ll_BFu17ll");
    set_bf_and_test(lv, v4, ABISELECT(10,8), ABISELECT(1,2), 17, hide_ull(1LL<<16), "BFs17i_BFs17i_BFu17ll_BFu17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFs17i_BFu17ll_BFu17ll, BFs17i_BFs17i_BFu17ll_BFu17ll)
//============================================================================


struct  BFs17i_BFs17ll  {
  signed int v1:17;
  signed __tsi64 v2:17;
};
//SIG(1 BFs17i_BFs17ll) C1{ Fi:17 FL:17}



static void Test_BFs17i_BFs17ll()
{
  {
    init_simple_test("BFs17i_BFs17ll");
    static STRUCT_IF_C BFs17i_BFs17ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs17i_BFs17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17i_BFs17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFs17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFs17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17i_BFs17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_sll(1LL<<16), "BFs17i_BFs17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFs17ll, BFs17i_BFs17ll)
//============================================================================


struct  BFs17i_BFs17ll_BFs17i  {
  signed int v1:17;
  signed __tsi64 v2:17;
  signed int v3:17;
};
//SIG(1 BFs17i_BFs17ll_BFs17i) C1{ Fi:17 FL:17 Fi:17}



static void Test_BFs17i_BFs17ll_BFs17i()
{
  {
    init_simple_test("BFs17i_BFs17ll_BFs17i");
    static STRUCT_IF_C BFs17i_BFs17ll_BFs17i lv;
    check2(sizeof(lv), 8, "sizeof(BFs17i_BFs17ll_BFs17i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17i_BFs17ll_BFs17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFs17ll_BFs17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFs17ll_BFs17i");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17i_BFs17ll_BFs17i");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_sll(1LL<<16), "BFs17i_BFs17ll_BFs17i");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17i_BFs17ll_BFs17i");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_sll(1LL<<16), "BFs17i_BFs17ll_BFs17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFs17ll_BFs17i, BFs17i_BFs17ll_BFs17i)
//============================================================================


struct  BFs17i_BFs17ll_BFs17i_BFs17i  {
  signed int v1:17;
  signed __tsi64 v2:17;
  signed int v3:17;
  signed int v4:17;
};
//SIG(1 BFs17i_BFs17ll_BFs17i_BFs17i) C1{ Fi:17 FL:17 Fi:17 Fi:17}



static void Test_BFs17i_BFs17ll_BFs17i_BFs17i()
{
  {
    init_simple_test("BFs17i_BFs17ll_BFs17i_BFs17i");
    static STRUCT_IF_C BFs17i_BFs17ll_BFs17i_BFs17i lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17i_BFs17ll_BFs17i_BFs17i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17i_BFs17ll_BFs17i_BFs17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFs17ll_BFs17i_BFs17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFs17ll_BFs17i_BFs17i");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17i_BFs17ll_BFs17i_BFs17i");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_sll(1LL<<16), "BFs17i_BFs17ll_BFs17i_BFs17i");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17i_BFs17ll_BFs17i_BFs17i");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_sll(1LL<<16), "BFs17i_BFs17ll_BFs17i_BFs17i");
    set_bf_and_test(lv, v4, 8, 0, 17, 1, "BFs17i_BFs17ll_BFs17i_BFs17i");
    set_bf_and_test(lv, v4, 8, 0, 17, hide_sll(1LL<<16), "BFs17i_BFs17ll_BFs17i_BFs17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFs17ll_BFs17i_BFs17i, BFs17i_BFs17ll_BFs17i_BFs17i)
//============================================================================


struct  BFs17i_BFs17ll_BFs17i_BFs17ll  {
  signed int v1:17;
  signed __tsi64 v2:17;
  signed int v3:17;
  signed __tsi64 v4:17;
};
//SIG(1 BFs17i_BFs17ll_BFs17i_BFs17ll) C1{ Fi:17 FL:17 Fi:17 FL:17}



static void Test_BFs17i_BFs17ll_BFs17i_BFs17ll()
{
  {
    init_simple_test("BFs17i_BFs17ll_BFs17i_BFs17ll");
    static STRUCT_IF_C BFs17i_BFs17ll_BFs17i_BFs17ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17i_BFs17ll_BFs17i_BFs17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17i_BFs17ll_BFs17i_BFs17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFs17ll_BFs17i_BFs17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFs17ll_BFs17i_BFs17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17i_BFs17ll_BFs17i_BFs17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_sll(1LL<<16), "BFs17i_BFs17ll_BFs17i_BFs17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17i_BFs17ll_BFs17i_BFs17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_sll(1LL<<16), "BFs17i_BFs17ll_BFs17i_BFs17ll");
    set_bf_and_test(lv, v4, ABISELECT(8,6), ABISELECT(0,3), 17, 1, "BFs17i_BFs17ll_BFs17i_BFs17ll");
    set_bf_and_test(lv, v4, ABISELECT(8,6), ABISELECT(0,3), 17, hide_sll(1LL<<16), "BFs17i_BFs17ll_BFs17i_BFs17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFs17ll_BFs17i_BFs17ll, BFs17i_BFs17ll_BFs17i_BFs17ll)
//============================================================================


struct  BFs17i_BFs17ll_BFs17i_BFu17i  {
  signed int v1:17;
  signed __tsi64 v2:17;
  signed int v3:17;
  unsigned int v4:17;
};
//SIG(1 BFs17i_BFs17ll_BFs17i_BFu17i) C1{ Fi:17 FL:17 Fi:17 Fi:17}



static void Test_BFs17i_BFs17ll_BFs17i_BFu17i()
{
  {
    init_simple_test("BFs17i_BFs17ll_BFs17i_BFu17i");
    static STRUCT_IF_C BFs17i_BFs17ll_BFs17i_BFu17i lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17i_BFs17ll_BFs17i_BFu17i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17i_BFs17ll_BFs17i_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFs17ll_BFs17i_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFs17ll_BFs17i_BFu17i");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17i_BFs17ll_BFs17i_BFu17i");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_sll(1LL<<16), "BFs17i_BFs17ll_BFs17i_BFu17i");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17i_BFs17ll_BFs17i_BFu17i");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_sll(1LL<<16), "BFs17i_BFs17ll_BFs17i_BFu17i");
    set_bf_and_test(lv, v4, 8, 0, 17, 1, "BFs17i_BFs17ll_BFs17i_BFu17i");
    set_bf_and_test(lv, v4, 8, 0, 17, hide_ull(1LL<<16), "BFs17i_BFs17ll_BFs17i_BFu17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFs17ll_BFs17i_BFu17i, BFs17i_BFs17ll_BFs17i_BFu17i)
//============================================================================


struct  BFs17i_BFs17ll_BFs17i_BFu17ll  {
  signed int v1:17;
  signed __tsi64 v2:17;
  signed int v3:17;
  __tsu64 v4:17;
};
//SIG(1 BFs17i_BFs17ll_BFs17i_BFu17ll) C1{ Fi:17 FL:17 Fi:17 FL:17}



static void Test_BFs17i_BFs17ll_BFs17i_BFu17ll()
{
  {
    init_simple_test("BFs17i_BFs17ll_BFs17i_BFu17ll");
    static STRUCT_IF_C BFs17i_BFs17ll_BFs17i_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17i_BFs17ll_BFs17i_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17i_BFs17ll_BFs17i_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFs17ll_BFs17i_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFs17ll_BFs17i_BFu17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17i_BFs17ll_BFs17i_BFu17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_sll(1LL<<16), "BFs17i_BFs17ll_BFs17i_BFu17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17i_BFs17ll_BFs17i_BFu17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_sll(1LL<<16), "BFs17i_BFs17ll_BFs17i_BFu17ll");
    set_bf_and_test(lv, v4, ABISELECT(8,6), ABISELECT(0,3), 17, 1, "BFs17i_BFs17ll_BFs17i_BFu17ll");
    set_bf_and_test(lv, v4, ABISELECT(8,6), ABISELECT(0,3), 17, hide_ull(1LL<<16), "BFs17i_BFs17ll_BFs17i_BFu17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFs17ll_BFs17i_BFu17ll, BFs17i_BFs17ll_BFs17i_BFu17ll)
//============================================================================


struct  BFs17i_BFs17ll_BFs17ll  {
  signed int v1:17;
  signed __tsi64 v2:17;
  signed __tsi64 v3:17;
};
//SIG(1 BFs17i_BFs17ll_BFs17ll) C1{ Fi:17 FL:17 FL:17}



static void Test_BFs17i_BFs17ll_BFs17ll()
{
  {
    init_simple_test("BFs17i_BFs17ll_BFs17ll");
    static STRUCT_IF_C BFs17i_BFs17ll_BFs17ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs17i_BFs17ll_BFs17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17i_BFs17ll_BFs17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFs17ll_BFs17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFs17ll_BFs17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17i_BFs17ll_BFs17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_sll(1LL<<16), "BFs17i_BFs17ll_BFs17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17i_BFs17ll_BFs17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_sll(1LL<<16), "BFs17i_BFs17ll_BFs17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFs17ll_BFs17ll, BFs17i_BFs17ll_BFs17ll)
//============================================================================


struct  BFs17i_BFs17ll_BFs17ll_BFs17i  {
  signed int v1:17;
  signed __tsi64 v2:17;
  signed __tsi64 v3:17;
  signed int v4:17;
};
//SIG(1 BFs17i_BFs17ll_BFs17ll_BFs17i) C1{ Fi:17 FL:17 FL:17 Fi:17}



static void Test_BFs17i_BFs17ll_BFs17ll_BFs17i()
{
  {
    init_simple_test("BFs17i_BFs17ll_BFs17ll_BFs17i");
    static STRUCT_IF_C BFs17i_BFs17ll_BFs17ll_BFs17i lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17i_BFs17ll_BFs17ll_BFs17i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17i_BFs17ll_BFs17ll_BFs17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFs17ll_BFs17ll_BFs17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFs17ll_BFs17ll_BFs17i");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17i_BFs17ll_BFs17ll_BFs17i");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_sll(1LL<<16), "BFs17i_BFs17ll_BFs17ll_BFs17i");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17i_BFs17ll_BFs17ll_BFs17i");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_sll(1LL<<16), "BFs17i_BFs17ll_BFs17ll_BFs17i");
    set_bf_and_test(lv, v4, 8, 0, 17, 1, "BFs17i_BFs17ll_BFs17ll_BFs17i");
    set_bf_and_test(lv, v4, 8, 0, 17, hide_sll(1LL<<16), "BFs17i_BFs17ll_BFs17ll_BFs17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFs17ll_BFs17ll_BFs17i, BFs17i_BFs17ll_BFs17ll_BFs17i)
//============================================================================


struct  BFs17i_BFs17ll_BFs17ll_BFs17ll  {
  signed int v1:17;
  signed __tsi64 v2:17;
  signed __tsi64 v3:17;
  signed __tsi64 v4:17;
};
//SIG(1 BFs17i_BFs17ll_BFs17ll_BFs17ll) C1{ Fi:17 FL:17 FL:17 FL:17}



static void Test_BFs17i_BFs17ll_BFs17ll_BFs17ll()
{
  {
    init_simple_test("BFs17i_BFs17ll_BFs17ll_BFs17ll");
    static STRUCT_IF_C BFs17i_BFs17ll_BFs17ll_BFs17ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17i_BFs17ll_BFs17ll_BFs17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17i_BFs17ll_BFs17ll_BFs17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFs17ll_BFs17ll_BFs17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFs17ll_BFs17ll_BFs17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17i_BFs17ll_BFs17ll_BFs17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_sll(1LL<<16), "BFs17i_BFs17ll_BFs17ll_BFs17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17i_BFs17ll_BFs17ll_BFs17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_sll(1LL<<16), "BFs17i_BFs17ll_BFs17ll_BFs17ll");
    set_bf_and_test(lv, v4, ABISELECT(8,6), ABISELECT(0,3), 17, 1, "BFs17i_BFs17ll_BFs17ll_BFs17ll");
    set_bf_and_test(lv, v4, ABISELECT(8,6), ABISELECT(0,3), 17, hide_sll(1LL<<16), "BFs17i_BFs17ll_BFs17ll_BFs17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFs17ll_BFs17ll_BFs17ll, BFs17i_BFs17ll_BFs17ll_BFs17ll)
//============================================================================


struct  BFs17i_BFs17ll_BFs17ll_BFu17i  {
  signed int v1:17;
  signed __tsi64 v2:17;
  signed __tsi64 v3:17;
  unsigned int v4:17;
};
//SIG(1 BFs17i_BFs17ll_BFs17ll_BFu17i) C1{ Fi:17 FL:17 FL:17 Fi:17}



static void Test_BFs17i_BFs17ll_BFs17ll_BFu17i()
{
  {
    init_simple_test("BFs17i_BFs17ll_BFs17ll_BFu17i");
    static STRUCT_IF_C BFs17i_BFs17ll_BFs17ll_BFu17i lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17i_BFs17ll_BFs17ll_BFu17i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17i_BFs17ll_BFs17ll_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFs17ll_BFs17ll_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFs17ll_BFs17ll_BFu17i");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17i_BFs17ll_BFs17ll_BFu17i");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_sll(1LL<<16), "BFs17i_BFs17ll_BFs17ll_BFu17i");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17i_BFs17ll_BFs17ll_BFu17i");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_sll(1LL<<16), "BFs17i_BFs17ll_BFs17ll_BFu17i");
    set_bf_and_test(lv, v4, 8, 0, 17, 1, "BFs17i_BFs17ll_BFs17ll_BFu17i");
    set_bf_and_test(lv, v4, 8, 0, 17, hide_ull(1LL<<16), "BFs17i_BFs17ll_BFs17ll_BFu17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFs17ll_BFs17ll_BFu17i, BFs17i_BFs17ll_BFs17ll_BFu17i)
//============================================================================


struct  BFs17i_BFs17ll_BFs17ll_BFu17ll  {
  signed int v1:17;
  signed __tsi64 v2:17;
  signed __tsi64 v3:17;
  __tsu64 v4:17;
};
//SIG(1 BFs17i_BFs17ll_BFs17ll_BFu17ll) C1{ Fi:17 FL:17 FL:17 FL:17}



static void Test_BFs17i_BFs17ll_BFs17ll_BFu17ll()
{
  {
    init_simple_test("BFs17i_BFs17ll_BFs17ll_BFu17ll");
    static STRUCT_IF_C BFs17i_BFs17ll_BFs17ll_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17i_BFs17ll_BFs17ll_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17i_BFs17ll_BFs17ll_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFs17ll_BFs17ll_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFs17ll_BFs17ll_BFu17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17i_BFs17ll_BFs17ll_BFu17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_sll(1LL<<16), "BFs17i_BFs17ll_BFs17ll_BFu17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17i_BFs17ll_BFs17ll_BFu17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_sll(1LL<<16), "BFs17i_BFs17ll_BFs17ll_BFu17ll");
    set_bf_and_test(lv, v4, ABISELECT(8,6), ABISELECT(0,3), 17, 1, "BFs17i_BFs17ll_BFs17ll_BFu17ll");
    set_bf_and_test(lv, v4, ABISELECT(8,6), ABISELECT(0,3), 17, hide_ull(1LL<<16), "BFs17i_BFs17ll_BFs17ll_BFu17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFs17ll_BFs17ll_BFu17ll, BFs17i_BFs17ll_BFs17ll_BFu17ll)
//============================================================================


struct  BFs17i_BFs17ll_BFu17i  {
  signed int v1:17;
  signed __tsi64 v2:17;
  unsigned int v3:17;
};
//SIG(1 BFs17i_BFs17ll_BFu17i) C1{ Fi:17 FL:17 Fi:17}



static void Test_BFs17i_BFs17ll_BFu17i()
{
  {
    init_simple_test("BFs17i_BFs17ll_BFu17i");
    static STRUCT_IF_C BFs17i_BFs17ll_BFu17i lv;
    check2(sizeof(lv), 8, "sizeof(BFs17i_BFs17ll_BFu17i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17i_BFs17ll_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFs17ll_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFs17ll_BFu17i");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17i_BFs17ll_BFu17i");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_sll(1LL<<16), "BFs17i_BFs17ll_BFu17i");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17i_BFs17ll_BFu17i");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_ull(1LL<<16), "BFs17i_BFs17ll_BFu17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFs17ll_BFu17i, BFs17i_BFs17ll_BFu17i)
//============================================================================


struct  BFs17i_BFs17ll_BFu17i_BFs17i  {
  signed int v1:17;
  signed __tsi64 v2:17;
  unsigned int v3:17;
  signed int v4:17;
};
//SIG(1 BFs17i_BFs17ll_BFu17i_BFs17i) C1{ Fi:17 FL:17 Fi:17 Fi:17}



static void Test_BFs17i_BFs17ll_BFu17i_BFs17i()
{
  {
    init_simple_test("BFs17i_BFs17ll_BFu17i_BFs17i");
    static STRUCT_IF_C BFs17i_BFs17ll_BFu17i_BFs17i lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17i_BFs17ll_BFu17i_BFs17i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17i_BFs17ll_BFu17i_BFs17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFs17ll_BFu17i_BFs17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFs17ll_BFu17i_BFs17i");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17i_BFs17ll_BFu17i_BFs17i");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_sll(1LL<<16), "BFs17i_BFs17ll_BFu17i_BFs17i");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17i_BFs17ll_BFu17i_BFs17i");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_ull(1LL<<16), "BFs17i_BFs17ll_BFu17i_BFs17i");
    set_bf_and_test(lv, v4, 8, 0, 17, 1, "BFs17i_BFs17ll_BFu17i_BFs17i");
    set_bf_and_test(lv, v4, 8, 0, 17, hide_sll(1LL<<16), "BFs17i_BFs17ll_BFu17i_BFs17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFs17ll_BFu17i_BFs17i, BFs17i_BFs17ll_BFu17i_BFs17i)
//============================================================================


struct  BFs17i_BFs17ll_BFu17i_BFs17ll  {
  signed int v1:17;
  signed __tsi64 v2:17;
  unsigned int v3:17;
  signed __tsi64 v4:17;
};
//SIG(1 BFs17i_BFs17ll_BFu17i_BFs17ll) C1{ Fi:17 FL:17 Fi:17 FL:17}



static void Test_BFs17i_BFs17ll_BFu17i_BFs17ll()
{
  {
    init_simple_test("BFs17i_BFs17ll_BFu17i_BFs17ll");
    static STRUCT_IF_C BFs17i_BFs17ll_BFu17i_BFs17ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17i_BFs17ll_BFu17i_BFs17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17i_BFs17ll_BFu17i_BFs17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFs17ll_BFu17i_BFs17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFs17ll_BFu17i_BFs17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17i_BFs17ll_BFu17i_BFs17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_sll(1LL<<16), "BFs17i_BFs17ll_BFu17i_BFs17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17i_BFs17ll_BFu17i_BFs17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_ull(1LL<<16), "BFs17i_BFs17ll_BFu17i_BFs17ll");
    set_bf_and_test(lv, v4, ABISELECT(8,6), ABISELECT(0,3), 17, 1, "BFs17i_BFs17ll_BFu17i_BFs17ll");
    set_bf_and_test(lv, v4, ABISELECT(8,6), ABISELECT(0,3), 17, hide_sll(1LL<<16), "BFs17i_BFs17ll_BFu17i_BFs17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFs17ll_BFu17i_BFs17ll, BFs17i_BFs17ll_BFu17i_BFs17ll)
//============================================================================


struct  BFs17i_BFs17ll_BFu17i_BFu17i  {
  signed int v1:17;
  signed __tsi64 v2:17;
  unsigned int v3:17;
  unsigned int v4:17;
};
//SIG(1 BFs17i_BFs17ll_BFu17i_BFu17i) C1{ Fi:17 FL:17 Fi:17 Fi:17}



static void Test_BFs17i_BFs17ll_BFu17i_BFu17i()
{
  {
    init_simple_test("BFs17i_BFs17ll_BFu17i_BFu17i");
    static STRUCT_IF_C BFs17i_BFs17ll_BFu17i_BFu17i lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17i_BFs17ll_BFu17i_BFu17i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17i_BFs17ll_BFu17i_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFs17ll_BFu17i_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFs17ll_BFu17i_BFu17i");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17i_BFs17ll_BFu17i_BFu17i");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_sll(1LL<<16), "BFs17i_BFs17ll_BFu17i_BFu17i");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17i_BFs17ll_BFu17i_BFu17i");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_ull(1LL<<16), "BFs17i_BFs17ll_BFu17i_BFu17i");
    set_bf_and_test(lv, v4, 8, 0, 17, 1, "BFs17i_BFs17ll_BFu17i_BFu17i");
    set_bf_and_test(lv, v4, 8, 0, 17, hide_ull(1LL<<16), "BFs17i_BFs17ll_BFu17i_BFu17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFs17ll_BFu17i_BFu17i, BFs17i_BFs17ll_BFu17i_BFu17i)
//============================================================================


struct  BFs17i_BFs17ll_BFu17i_BFu17ll  {
  signed int v1:17;
  signed __tsi64 v2:17;
  unsigned int v3:17;
  __tsu64 v4:17;
};
//SIG(1 BFs17i_BFs17ll_BFu17i_BFu17ll) C1{ Fi:17 FL:17 Fi:17 FL:17}



static void Test_BFs17i_BFs17ll_BFu17i_BFu17ll()
{
  {
    init_simple_test("BFs17i_BFs17ll_BFu17i_BFu17ll");
    static STRUCT_IF_C BFs17i_BFs17ll_BFu17i_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17i_BFs17ll_BFu17i_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17i_BFs17ll_BFu17i_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFs17ll_BFu17i_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFs17ll_BFu17i_BFu17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17i_BFs17ll_BFu17i_BFu17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_sll(1LL<<16), "BFs17i_BFs17ll_BFu17i_BFu17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17i_BFs17ll_BFu17i_BFu17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_ull(1LL<<16), "BFs17i_BFs17ll_BFu17i_BFu17ll");
    set_bf_and_test(lv, v4, ABISELECT(8,6), ABISELECT(0,3), 17, 1, "BFs17i_BFs17ll_BFu17i_BFu17ll");
    set_bf_and_test(lv, v4, ABISELECT(8,6), ABISELECT(0,3), 17, hide_ull(1LL<<16), "BFs17i_BFs17ll_BFu17i_BFu17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFs17ll_BFu17i_BFu17ll, BFs17i_BFs17ll_BFu17i_BFu17ll)
//============================================================================


struct  BFs17i_BFs17ll_BFu17ll  {
  signed int v1:17;
  signed __tsi64 v2:17;
  __tsu64 v3:17;
};
//SIG(1 BFs17i_BFs17ll_BFu17ll) C1{ Fi:17 FL:17 FL:17}



static void Test_BFs17i_BFs17ll_BFu17ll()
{
  {
    init_simple_test("BFs17i_BFs17ll_BFu17ll");
    static STRUCT_IF_C BFs17i_BFs17ll_BFu17ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs17i_BFs17ll_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17i_BFs17ll_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFs17ll_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFs17ll_BFu17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17i_BFs17ll_BFu17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_sll(1LL<<16), "BFs17i_BFs17ll_BFu17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17i_BFs17ll_BFu17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_ull(1LL<<16), "BFs17i_BFs17ll_BFu17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFs17ll_BFu17ll, BFs17i_BFs17ll_BFu17ll)
//============================================================================


struct  BFs17i_BFs17ll_BFu17ll_BFs17i  {
  signed int v1:17;
  signed __tsi64 v2:17;
  __tsu64 v3:17;
  signed int v4:17;
};
//SIG(1 BFs17i_BFs17ll_BFu17ll_BFs17i) C1{ Fi:17 FL:17 FL:17 Fi:17}



static void Test_BFs17i_BFs17ll_BFu17ll_BFs17i()
{
  {
    init_simple_test("BFs17i_BFs17ll_BFu17ll_BFs17i");
    static STRUCT_IF_C BFs17i_BFs17ll_BFu17ll_BFs17i lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17i_BFs17ll_BFu17ll_BFs17i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17i_BFs17ll_BFu17ll_BFs17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFs17ll_BFu17ll_BFs17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFs17ll_BFu17ll_BFs17i");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17i_BFs17ll_BFu17ll_BFs17i");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_sll(1LL<<16), "BFs17i_BFs17ll_BFu17ll_BFs17i");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17i_BFs17ll_BFu17ll_BFs17i");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_ull(1LL<<16), "BFs17i_BFs17ll_BFu17ll_BFs17i");
    set_bf_and_test(lv, v4, 8, 0, 17, 1, "BFs17i_BFs17ll_BFu17ll_BFs17i");
    set_bf_and_test(lv, v4, 8, 0, 17, hide_sll(1LL<<16), "BFs17i_BFs17ll_BFu17ll_BFs17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFs17ll_BFu17ll_BFs17i, BFs17i_BFs17ll_BFu17ll_BFs17i)
//============================================================================


struct  BFs17i_BFs17ll_BFu17ll_BFs17ll  {
  signed int v1:17;
  signed __tsi64 v2:17;
  __tsu64 v3:17;
  signed __tsi64 v4:17;
};
//SIG(1 BFs17i_BFs17ll_BFu17ll_BFs17ll) C1{ Fi:17 FL:17 FL:17 FL:17}



static void Test_BFs17i_BFs17ll_BFu17ll_BFs17ll()
{
  {
    init_simple_test("BFs17i_BFs17ll_BFu17ll_BFs17ll");
    static STRUCT_IF_C BFs17i_BFs17ll_BFu17ll_BFs17ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17i_BFs17ll_BFu17ll_BFs17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17i_BFs17ll_BFu17ll_BFs17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFs17ll_BFu17ll_BFs17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFs17ll_BFu17ll_BFs17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17i_BFs17ll_BFu17ll_BFs17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_sll(1LL<<16), "BFs17i_BFs17ll_BFu17ll_BFs17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17i_BFs17ll_BFu17ll_BFs17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_ull(1LL<<16), "BFs17i_BFs17ll_BFu17ll_BFs17ll");
    set_bf_and_test(lv, v4, ABISELECT(8,6), ABISELECT(0,3), 17, 1, "BFs17i_BFs17ll_BFu17ll_BFs17ll");
    set_bf_and_test(lv, v4, ABISELECT(8,6), ABISELECT(0,3), 17, hide_sll(1LL<<16), "BFs17i_BFs17ll_BFu17ll_BFs17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFs17ll_BFu17ll_BFs17ll, BFs17i_BFs17ll_BFu17ll_BFs17ll)
//============================================================================


struct  BFs17i_BFs17ll_BFu17ll_BFu17i  {
  signed int v1:17;
  signed __tsi64 v2:17;
  __tsu64 v3:17;
  unsigned int v4:17;
};
//SIG(1 BFs17i_BFs17ll_BFu17ll_BFu17i) C1{ Fi:17 FL:17 FL:17 Fi:17}



static void Test_BFs17i_BFs17ll_BFu17ll_BFu17i()
{
  {
    init_simple_test("BFs17i_BFs17ll_BFu17ll_BFu17i");
    static STRUCT_IF_C BFs17i_BFs17ll_BFu17ll_BFu17i lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17i_BFs17ll_BFu17ll_BFu17i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17i_BFs17ll_BFu17ll_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFs17ll_BFu17ll_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFs17ll_BFu17ll_BFu17i");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17i_BFs17ll_BFu17ll_BFu17i");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_sll(1LL<<16), "BFs17i_BFs17ll_BFu17ll_BFu17i");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17i_BFs17ll_BFu17ll_BFu17i");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_ull(1LL<<16), "BFs17i_BFs17ll_BFu17ll_BFu17i");
    set_bf_and_test(lv, v4, 8, 0, 17, 1, "BFs17i_BFs17ll_BFu17ll_BFu17i");
    set_bf_and_test(lv, v4, 8, 0, 17, hide_ull(1LL<<16), "BFs17i_BFs17ll_BFu17ll_BFu17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFs17ll_BFu17ll_BFu17i, BFs17i_BFs17ll_BFu17ll_BFu17i)
//============================================================================


struct  BFs17i_BFs17ll_BFu17ll_BFu17ll  {
  signed int v1:17;
  signed __tsi64 v2:17;
  __tsu64 v3:17;
  __tsu64 v4:17;
};
//SIG(1 BFs17i_BFs17ll_BFu17ll_BFu17ll) C1{ Fi:17 FL:17 FL:17 FL:17}



static void Test_BFs17i_BFs17ll_BFu17ll_BFu17ll()
{
  {
    init_simple_test("BFs17i_BFs17ll_BFu17ll_BFu17ll");
    static STRUCT_IF_C BFs17i_BFs17ll_BFu17ll_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17i_BFs17ll_BFu17ll_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17i_BFs17ll_BFu17ll_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFs17ll_BFu17ll_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFs17ll_BFu17ll_BFu17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17i_BFs17ll_BFu17ll_BFu17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_sll(1LL<<16), "BFs17i_BFs17ll_BFu17ll_BFu17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17i_BFs17ll_BFu17ll_BFu17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_ull(1LL<<16), "BFs17i_BFs17ll_BFu17ll_BFu17ll");
    set_bf_and_test(lv, v4, ABISELECT(8,6), ABISELECT(0,3), 17, 1, "BFs17i_BFs17ll_BFu17ll_BFu17ll");
    set_bf_and_test(lv, v4, ABISELECT(8,6), ABISELECT(0,3), 17, hide_ull(1LL<<16), "BFs17i_BFs17ll_BFu17ll_BFu17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFs17ll_BFu17ll_BFu17ll, BFs17i_BFs17ll_BFu17ll_BFu17ll)
//============================================================================


struct  BFs17i_BFu17i  {
  signed int v1:17;
  unsigned int v2:17;
};
//SIG(1 BFs17i_BFu17i) C1{ Fi:17 Fi:17}



static void Test_BFs17i_BFu17i()
{
  {
    init_simple_test("BFs17i_BFu17i");
    static STRUCT_IF_C BFs17i_BFu17i lv;
    check2(sizeof(lv), 8, "sizeof(BFs17i_BFu17i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs17i_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFu17i");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17i_BFu17i");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "BFs17i_BFu17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFu17i, BFs17i_BFu17i)
//============================================================================


struct  BFs17i_BFu17i_BFs17i  {
  signed int v1:17;
  unsigned int v2:17;
  signed int v3:17;
};
//SIG(1 BFs17i_BFu17i_BFs17i) C1{ Fi:17 Fi:17 Fi:17}



static void Test_BFs17i_BFu17i_BFs17i()
{
  {
    init_simple_test("BFs17i_BFu17i_BFs17i");
    static STRUCT_IF_C BFs17i_BFu17i_BFs17i lv;
    check2(sizeof(lv), 12, "sizeof(BFs17i_BFu17i_BFs17i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs17i_BFu17i_BFs17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFu17i_BFs17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFu17i_BFs17i");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17i_BFu17i_BFs17i");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "BFs17i_BFu17i_BFs17i");
    set_bf_and_test(lv, v3, 8, 0, 17, 1, "BFs17i_BFu17i_BFs17i");
    set_bf_and_test(lv, v3, 8, 0, 17, hide_sll(1LL<<16), "BFs17i_BFu17i_BFs17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFu17i_BFs17i, BFs17i_BFu17i_BFs17i)
//============================================================================


struct  BFs17i_BFu17i_BFs17i_BFs17i  {
  signed int v1:17;
  unsigned int v2:17;
  signed int v3:17;
  signed int v4:17;
};
//SIG(1 BFs17i_BFu17i_BFs17i_BFs17i) C1{ Fi:17 Fi:17 Fi:17 Fi:17}



static void Test_BFs17i_BFu17i_BFs17i_BFs17i()
{
  {
    init_simple_test("BFs17i_BFu17i_BFs17i_BFs17i");
    static STRUCT_IF_C BFs17i_BFu17i_BFs17i_BFs17i lv;
    check2(sizeof(lv), 16, "sizeof(BFs17i_BFu17i_BFs17i_BFs17i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs17i_BFu17i_BFs17i_BFs17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFu17i_BFs17i_BFs17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFu17i_BFs17i_BFs17i");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17i_BFu17i_BFs17i_BFs17i");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "BFs17i_BFu17i_BFs17i_BFs17i");
    set_bf_and_test(lv, v3, 8, 0, 17, 1, "BFs17i_BFu17i_BFs17i_BFs17i");
    set_bf_and_test(lv, v3, 8, 0, 17, hide_sll(1LL<<16), "BFs17i_BFu17i_BFs17i_BFs17i");
    set_bf_and_test(lv, v4, 12, 0, 17, 1, "BFs17i_BFu17i_BFs17i_BFs17i");
    set_bf_and_test(lv, v4, 12, 0, 17, hide_sll(1LL<<16), "BFs17i_BFu17i_BFs17i_BFs17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFu17i_BFs17i_BFs17i, BFs17i_BFu17i_BFs17i_BFs17i)
//============================================================================


struct  BFs17i_BFu17i_BFs17i_BFs17ll  {
  signed int v1:17;
  unsigned int v2:17;
  signed int v3:17;
  signed __tsi64 v4:17;
};
//SIG(1 BFs17i_BFu17i_BFs17i_BFs17ll) C1{ Fi:17 Fi:17 Fi:17 FL:17}



static void Test_BFs17i_BFu17i_BFs17i_BFs17ll()
{
  {
    init_simple_test("BFs17i_BFu17i_BFs17i_BFs17ll");
    static STRUCT_IF_C BFs17i_BFu17i_BFs17i_BFs17ll lv;
    check2(sizeof(lv), 16, "sizeof(BFs17i_BFu17i_BFs17i_BFs17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17i_BFu17i_BFs17i_BFs17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFu17i_BFs17i_BFs17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFu17i_BFs17i_BFs17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17i_BFu17i_BFs17i_BFs17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "BFs17i_BFu17i_BFs17i_BFs17ll");
    set_bf_and_test(lv, v3, 8, 0, 17, 1, "BFs17i_BFu17i_BFs17i_BFs17ll");
    set_bf_and_test(lv, v3, 8, 0, 17, hide_sll(1LL<<16), "BFs17i_BFu17i_BFs17i_BFs17ll");
    set_bf_and_test(lv, v4, 10, 1, 17, 1, "BFs17i_BFu17i_BFs17i_BFs17ll");
    set_bf_and_test(lv, v4, 10, 1, 17, hide_sll(1LL<<16), "BFs17i_BFu17i_BFs17i_BFs17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFu17i_BFs17i_BFs17ll, BFs17i_BFu17i_BFs17i_BFs17ll)
//============================================================================


struct  BFs17i_BFu17i_BFs17i_BFu17i  {
  signed int v1:17;
  unsigned int v2:17;
  signed int v3:17;
  unsigned int v4:17;
};
//SIG(1 BFs17i_BFu17i_BFs17i_BFu17i) C1{ Fi:17 Fi:17 Fi:17 Fi:17}



static void Test_BFs17i_BFu17i_BFs17i_BFu17i()
{
  {
    init_simple_test("BFs17i_BFu17i_BFs17i_BFu17i");
    static STRUCT_IF_C BFs17i_BFu17i_BFs17i_BFu17i lv;
    check2(sizeof(lv), 16, "sizeof(BFs17i_BFu17i_BFs17i_BFu17i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs17i_BFu17i_BFs17i_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFu17i_BFs17i_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFu17i_BFs17i_BFu17i");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17i_BFu17i_BFs17i_BFu17i");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "BFs17i_BFu17i_BFs17i_BFu17i");
    set_bf_and_test(lv, v3, 8, 0, 17, 1, "BFs17i_BFu17i_BFs17i_BFu17i");
    set_bf_and_test(lv, v3, 8, 0, 17, hide_sll(1LL<<16), "BFs17i_BFu17i_BFs17i_BFu17i");
    set_bf_and_test(lv, v4, 12, 0, 17, 1, "BFs17i_BFu17i_BFs17i_BFu17i");
    set_bf_and_test(lv, v4, 12, 0, 17, hide_ull(1LL<<16), "BFs17i_BFu17i_BFs17i_BFu17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFu17i_BFs17i_BFu17i, BFs17i_BFu17i_BFs17i_BFu17i)
//============================================================================


struct  BFs17i_BFu17i_BFs17i_BFu17ll  {
  signed int v1:17;
  unsigned int v2:17;
  signed int v3:17;
  __tsu64 v4:17;
};
//SIG(1 BFs17i_BFu17i_BFs17i_BFu17ll) C1{ Fi:17 Fi:17 Fi:17 FL:17}



static void Test_BFs17i_BFu17i_BFs17i_BFu17ll()
{
  {
    init_simple_test("BFs17i_BFu17i_BFs17i_BFu17ll");
    static STRUCT_IF_C BFs17i_BFu17i_BFs17i_BFu17ll lv;
    check2(sizeof(lv), 16, "sizeof(BFs17i_BFu17i_BFs17i_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17i_BFu17i_BFs17i_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFu17i_BFs17i_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFu17i_BFs17i_BFu17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17i_BFu17i_BFs17i_BFu17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "BFs17i_BFu17i_BFs17i_BFu17ll");
    set_bf_and_test(lv, v3, 8, 0, 17, 1, "BFs17i_BFu17i_BFs17i_BFu17ll");
    set_bf_and_test(lv, v3, 8, 0, 17, hide_sll(1LL<<16), "BFs17i_BFu17i_BFs17i_BFu17ll");
    set_bf_and_test(lv, v4, 10, 1, 17, 1, "BFs17i_BFu17i_BFs17i_BFu17ll");
    set_bf_and_test(lv, v4, 10, 1, 17, hide_ull(1LL<<16), "BFs17i_BFu17i_BFs17i_BFu17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFu17i_BFs17i_BFu17ll, BFs17i_BFu17i_BFs17i_BFu17ll)
//============================================================================


struct  BFs17i_BFu17i_BFs17ll  {
  signed int v1:17;
  unsigned int v2:17;
  signed __tsi64 v3:17;
};
//SIG(1 BFs17i_BFu17i_BFs17ll) C1{ Fi:17 Fi:17 FL:17}



static void Test_BFs17i_BFu17i_BFs17ll()
{
  {
    init_simple_test("BFs17i_BFu17i_BFs17ll");
    static STRUCT_IF_C BFs17i_BFu17i_BFs17ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17i_BFu17i_BFs17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17i_BFu17i_BFs17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFu17i_BFs17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFu17i_BFs17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17i_BFu17i_BFs17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "BFs17i_BFu17i_BFs17ll");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, 1, "BFs17i_BFu17i_BFs17ll");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, hide_sll(1LL<<16), "BFs17i_BFu17i_BFs17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFu17i_BFs17ll, BFs17i_BFu17i_BFs17ll)
//============================================================================


struct  BFs17i_BFu17i_BFs17ll_BFs17i  {
  signed int v1:17;
  unsigned int v2:17;
  signed __tsi64 v3:17;
  signed int v4:17;
};
//SIG(1 BFs17i_BFu17i_BFs17ll_BFs17i) C1{ Fi:17 Fi:17 FL:17 Fi:17}



static void Test_BFs17i_BFu17i_BFs17ll_BFs17i()
{
  {
    init_simple_test("BFs17i_BFu17i_BFs17ll_BFs17i");
    static STRUCT_IF_C BFs17i_BFu17i_BFs17ll_BFs17i lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17i_BFu17i_BFs17ll_BFs17i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17i_BFu17i_BFs17ll_BFs17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFu17i_BFs17ll_BFs17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFu17i_BFs17ll_BFs17i");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17i_BFu17i_BFs17ll_BFs17i");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "BFs17i_BFu17i_BFs17ll_BFs17i");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, 1, "BFs17i_BFu17i_BFs17ll_BFs17i");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, hide_sll(1LL<<16), "BFs17i_BFu17i_BFs17ll_BFs17i");
    set_bf_and_test(lv, v4, ABISELECT(12,8), ABISELECT(0,2), 17, 1, "BFs17i_BFu17i_BFs17ll_BFs17i");
    set_bf_and_test(lv, v4, ABISELECT(12,8), ABISELECT(0,2), 17, hide_sll(1LL<<16), "BFs17i_BFu17i_BFs17ll_BFs17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFu17i_BFs17ll_BFs17i, BFs17i_BFu17i_BFs17ll_BFs17i)
//============================================================================


struct  BFs17i_BFu17i_BFs17ll_BFs17ll  {
  signed int v1:17;
  unsigned int v2:17;
  signed __tsi64 v3:17;
  signed __tsi64 v4:17;
};
//SIG(1 BFs17i_BFu17i_BFs17ll_BFs17ll) C1{ Fi:17 Fi:17 FL:17 FL:17}



static void Test_BFs17i_BFu17i_BFs17ll_BFs17ll()
{
  {
    init_simple_test("BFs17i_BFu17i_BFs17ll_BFs17ll");
    static STRUCT_IF_C BFs17i_BFu17i_BFs17ll_BFs17ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17i_BFu17i_BFs17ll_BFs17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17i_BFu17i_BFs17ll_BFs17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFu17i_BFs17ll_BFs17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFu17i_BFs17ll_BFs17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17i_BFu17i_BFs17ll_BFs17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "BFs17i_BFu17i_BFs17ll_BFs17ll");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, 1, "BFs17i_BFu17i_BFs17ll_BFs17ll");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, hide_sll(1LL<<16), "BFs17i_BFu17i_BFs17ll_BFs17ll");
    set_bf_and_test(lv, v4, ABISELECT(10,8), ABISELECT(1,2), 17, 1, "BFs17i_BFu17i_BFs17ll_BFs17ll");
    set_bf_and_test(lv, v4, ABISELECT(10,8), ABISELECT(1,2), 17, hide_sll(1LL<<16), "BFs17i_BFu17i_BFs17ll_BFs17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFu17i_BFs17ll_BFs17ll, BFs17i_BFu17i_BFs17ll_BFs17ll)
//============================================================================


struct  BFs17i_BFu17i_BFs17ll_BFu17i  {
  signed int v1:17;
  unsigned int v2:17;
  signed __tsi64 v3:17;
  unsigned int v4:17;
};
//SIG(1 BFs17i_BFu17i_BFs17ll_BFu17i) C1{ Fi:17 Fi:17 FL:17 Fi:17}



static void Test_BFs17i_BFu17i_BFs17ll_BFu17i()
{
  {
    init_simple_test("BFs17i_BFu17i_BFs17ll_BFu17i");
    static STRUCT_IF_C BFs17i_BFu17i_BFs17ll_BFu17i lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17i_BFu17i_BFs17ll_BFu17i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17i_BFu17i_BFs17ll_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFu17i_BFs17ll_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFu17i_BFs17ll_BFu17i");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17i_BFu17i_BFs17ll_BFu17i");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "BFs17i_BFu17i_BFs17ll_BFu17i");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, 1, "BFs17i_BFu17i_BFs17ll_BFu17i");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, hide_sll(1LL<<16), "BFs17i_BFu17i_BFs17ll_BFu17i");
    set_bf_and_test(lv, v4, ABISELECT(12,8), ABISELECT(0,2), 17, 1, "BFs17i_BFu17i_BFs17ll_BFu17i");
    set_bf_and_test(lv, v4, ABISELECT(12,8), ABISELECT(0,2), 17, hide_ull(1LL<<16), "BFs17i_BFu17i_BFs17ll_BFu17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFu17i_BFs17ll_BFu17i, BFs17i_BFu17i_BFs17ll_BFu17i)
//============================================================================


struct  BFs17i_BFu17i_BFs17ll_BFu17ll  {
  signed int v1:17;
  unsigned int v2:17;
  signed __tsi64 v3:17;
  __tsu64 v4:17;
};
//SIG(1 BFs17i_BFu17i_BFs17ll_BFu17ll) C1{ Fi:17 Fi:17 FL:17 FL:17}



static void Test_BFs17i_BFu17i_BFs17ll_BFu17ll()
{
  {
    init_simple_test("BFs17i_BFu17i_BFs17ll_BFu17ll");
    static STRUCT_IF_C BFs17i_BFu17i_BFs17ll_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17i_BFu17i_BFs17ll_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17i_BFu17i_BFs17ll_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFu17i_BFs17ll_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFu17i_BFs17ll_BFu17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17i_BFu17i_BFs17ll_BFu17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "BFs17i_BFu17i_BFs17ll_BFu17ll");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, 1, "BFs17i_BFu17i_BFs17ll_BFu17ll");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, hide_sll(1LL<<16), "BFs17i_BFu17i_BFs17ll_BFu17ll");
    set_bf_and_test(lv, v4, ABISELECT(10,8), ABISELECT(1,2), 17, 1, "BFs17i_BFu17i_BFs17ll_BFu17ll");
    set_bf_and_test(lv, v4, ABISELECT(10,8), ABISELECT(1,2), 17, hide_ull(1LL<<16), "BFs17i_BFu17i_BFs17ll_BFu17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFu17i_BFs17ll_BFu17ll, BFs17i_BFu17i_BFs17ll_BFu17ll)
//============================================================================


struct  BFs17i_BFu17i_BFu17i  {
  signed int v1:17;
  unsigned int v2:17;
  unsigned int v3:17;
};
//SIG(1 BFs17i_BFu17i_BFu17i) C1{ Fi:17 Fi:17 Fi:17}



static void Test_BFs17i_BFu17i_BFu17i()
{
  {
    init_simple_test("BFs17i_BFu17i_BFu17i");
    static STRUCT_IF_C BFs17i_BFu17i_BFu17i lv;
    check2(sizeof(lv), 12, "sizeof(BFs17i_BFu17i_BFu17i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs17i_BFu17i_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFu17i_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFu17i_BFu17i");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17i_BFu17i_BFu17i");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "BFs17i_BFu17i_BFu17i");
    set_bf_and_test(lv, v3, 8, 0, 17, 1, "BFs17i_BFu17i_BFu17i");
    set_bf_and_test(lv, v3, 8, 0, 17, hide_ull(1LL<<16), "BFs17i_BFu17i_BFu17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFu17i_BFu17i, BFs17i_BFu17i_BFu17i)
//============================================================================


struct  BFs17i_BFu17i_BFu17i_BFs17i  {
  signed int v1:17;
  unsigned int v2:17;
  unsigned int v3:17;
  signed int v4:17;
};
//SIG(1 BFs17i_BFu17i_BFu17i_BFs17i) C1{ Fi:17 Fi:17 Fi:17 Fi:17}



static void Test_BFs17i_BFu17i_BFu17i_BFs17i()
{
  {
    init_simple_test("BFs17i_BFu17i_BFu17i_BFs17i");
    static STRUCT_IF_C BFs17i_BFu17i_BFu17i_BFs17i lv;
    check2(sizeof(lv), 16, "sizeof(BFs17i_BFu17i_BFu17i_BFs17i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs17i_BFu17i_BFu17i_BFs17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFu17i_BFu17i_BFs17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFu17i_BFu17i_BFs17i");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17i_BFu17i_BFu17i_BFs17i");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "BFs17i_BFu17i_BFu17i_BFs17i");
    set_bf_and_test(lv, v3, 8, 0, 17, 1, "BFs17i_BFu17i_BFu17i_BFs17i");
    set_bf_and_test(lv, v3, 8, 0, 17, hide_ull(1LL<<16), "BFs17i_BFu17i_BFu17i_BFs17i");
    set_bf_and_test(lv, v4, 12, 0, 17, 1, "BFs17i_BFu17i_BFu17i_BFs17i");
    set_bf_and_test(lv, v4, 12, 0, 17, hide_sll(1LL<<16), "BFs17i_BFu17i_BFu17i_BFs17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFu17i_BFu17i_BFs17i, BFs17i_BFu17i_BFu17i_BFs17i)
//============================================================================


struct  BFs17i_BFu17i_BFu17i_BFs17ll  {
  signed int v1:17;
  unsigned int v2:17;
  unsigned int v3:17;
  signed __tsi64 v4:17;
};
//SIG(1 BFs17i_BFu17i_BFu17i_BFs17ll) C1{ Fi:17 Fi:17 Fi:17 FL:17}



static void Test_BFs17i_BFu17i_BFu17i_BFs17ll()
{
  {
    init_simple_test("BFs17i_BFu17i_BFu17i_BFs17ll");
    static STRUCT_IF_C BFs17i_BFu17i_BFu17i_BFs17ll lv;
    check2(sizeof(lv), 16, "sizeof(BFs17i_BFu17i_BFu17i_BFs17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17i_BFu17i_BFu17i_BFs17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFu17i_BFu17i_BFs17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFu17i_BFu17i_BFs17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17i_BFu17i_BFu17i_BFs17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "BFs17i_BFu17i_BFu17i_BFs17ll");
    set_bf_and_test(lv, v3, 8, 0, 17, 1, "BFs17i_BFu17i_BFu17i_BFs17ll");
    set_bf_and_test(lv, v3, 8, 0, 17, hide_ull(1LL<<16), "BFs17i_BFu17i_BFu17i_BFs17ll");
    set_bf_and_test(lv, v4, 10, 1, 17, 1, "BFs17i_BFu17i_BFu17i_BFs17ll");
    set_bf_and_test(lv, v4, 10, 1, 17, hide_sll(1LL<<16), "BFs17i_BFu17i_BFu17i_BFs17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFu17i_BFu17i_BFs17ll, BFs17i_BFu17i_BFu17i_BFs17ll)
//============================================================================


struct  BFs17i_BFu17i_BFu17i_BFu17i  {
  signed int v1:17;
  unsigned int v2:17;
  unsigned int v3:17;
  unsigned int v4:17;
};
//SIG(1 BFs17i_BFu17i_BFu17i_BFu17i) C1{ Fi:17 Fi:17 Fi:17 Fi:17}



static void Test_BFs17i_BFu17i_BFu17i_BFu17i()
{
  {
    init_simple_test("BFs17i_BFu17i_BFu17i_BFu17i");
    static STRUCT_IF_C BFs17i_BFu17i_BFu17i_BFu17i lv;
    check2(sizeof(lv), 16, "sizeof(BFs17i_BFu17i_BFu17i_BFu17i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs17i_BFu17i_BFu17i_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFu17i_BFu17i_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFu17i_BFu17i_BFu17i");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17i_BFu17i_BFu17i_BFu17i");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "BFs17i_BFu17i_BFu17i_BFu17i");
    set_bf_and_test(lv, v3, 8, 0, 17, 1, "BFs17i_BFu17i_BFu17i_BFu17i");
    set_bf_and_test(lv, v3, 8, 0, 17, hide_ull(1LL<<16), "BFs17i_BFu17i_BFu17i_BFu17i");
    set_bf_and_test(lv, v4, 12, 0, 17, 1, "BFs17i_BFu17i_BFu17i_BFu17i");
    set_bf_and_test(lv, v4, 12, 0, 17, hide_ull(1LL<<16), "BFs17i_BFu17i_BFu17i_BFu17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFu17i_BFu17i_BFu17i, BFs17i_BFu17i_BFu17i_BFu17i)
//============================================================================


struct  BFs17i_BFu17i_BFu17i_BFu17ll  {
  signed int v1:17;
  unsigned int v2:17;
  unsigned int v3:17;
  __tsu64 v4:17;
};
//SIG(1 BFs17i_BFu17i_BFu17i_BFu17ll) C1{ Fi:17 Fi:17 Fi:17 FL:17}



static void Test_BFs17i_BFu17i_BFu17i_BFu17ll()
{
  {
    init_simple_test("BFs17i_BFu17i_BFu17i_BFu17ll");
    static STRUCT_IF_C BFs17i_BFu17i_BFu17i_BFu17ll lv;
    check2(sizeof(lv), 16, "sizeof(BFs17i_BFu17i_BFu17i_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17i_BFu17i_BFu17i_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFu17i_BFu17i_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFu17i_BFu17i_BFu17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17i_BFu17i_BFu17i_BFu17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "BFs17i_BFu17i_BFu17i_BFu17ll");
    set_bf_and_test(lv, v3, 8, 0, 17, 1, "BFs17i_BFu17i_BFu17i_BFu17ll");
    set_bf_and_test(lv, v3, 8, 0, 17, hide_ull(1LL<<16), "BFs17i_BFu17i_BFu17i_BFu17ll");
    set_bf_and_test(lv, v4, 10, 1, 17, 1, "BFs17i_BFu17i_BFu17i_BFu17ll");
    set_bf_and_test(lv, v4, 10, 1, 17, hide_ull(1LL<<16), "BFs17i_BFu17i_BFu17i_BFu17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFu17i_BFu17i_BFu17ll, BFs17i_BFu17i_BFu17i_BFu17ll)
//============================================================================


struct  BFs17i_BFu17i_BFu17ll  {
  signed int v1:17;
  unsigned int v2:17;
  __tsu64 v3:17;
};
//SIG(1 BFs17i_BFu17i_BFu17ll) C1{ Fi:17 Fi:17 FL:17}



static void Test_BFs17i_BFu17i_BFu17ll()
{
  {
    init_simple_test("BFs17i_BFu17i_BFu17ll");
    static STRUCT_IF_C BFs17i_BFu17i_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17i_BFu17i_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17i_BFu17i_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFu17i_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFu17i_BFu17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17i_BFu17i_BFu17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "BFs17i_BFu17i_BFu17ll");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, 1, "BFs17i_BFu17i_BFu17ll");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, hide_ull(1LL<<16), "BFs17i_BFu17i_BFu17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFu17i_BFu17ll, BFs17i_BFu17i_BFu17ll)
//============================================================================


struct  BFs17i_BFu17i_BFu17ll_BFs17i  {
  signed int v1:17;
  unsigned int v2:17;
  __tsu64 v3:17;
  signed int v4:17;
};
//SIG(1 BFs17i_BFu17i_BFu17ll_BFs17i) C1{ Fi:17 Fi:17 FL:17 Fi:17}



static void Test_BFs17i_BFu17i_BFu17ll_BFs17i()
{
  {
    init_simple_test("BFs17i_BFu17i_BFu17ll_BFs17i");
    static STRUCT_IF_C BFs17i_BFu17i_BFu17ll_BFs17i lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17i_BFu17i_BFu17ll_BFs17i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17i_BFu17i_BFu17ll_BFs17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFu17i_BFu17ll_BFs17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFu17i_BFu17ll_BFs17i");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17i_BFu17i_BFu17ll_BFs17i");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "BFs17i_BFu17i_BFu17ll_BFs17i");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, 1, "BFs17i_BFu17i_BFu17ll_BFs17i");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, hide_ull(1LL<<16), "BFs17i_BFu17i_BFu17ll_BFs17i");
    set_bf_and_test(lv, v4, ABISELECT(12,8), ABISELECT(0,2), 17, 1, "BFs17i_BFu17i_BFu17ll_BFs17i");
    set_bf_and_test(lv, v4, ABISELECT(12,8), ABISELECT(0,2), 17, hide_sll(1LL<<16), "BFs17i_BFu17i_BFu17ll_BFs17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFu17i_BFu17ll_BFs17i, BFs17i_BFu17i_BFu17ll_BFs17i)
//============================================================================


struct  BFs17i_BFu17i_BFu17ll_BFs17ll  {
  signed int v1:17;
  unsigned int v2:17;
  __tsu64 v3:17;
  signed __tsi64 v4:17;
};
//SIG(1 BFs17i_BFu17i_BFu17ll_BFs17ll) C1{ Fi:17 Fi:17 FL:17 FL:17}



static void Test_BFs17i_BFu17i_BFu17ll_BFs17ll()
{
  {
    init_simple_test("BFs17i_BFu17i_BFu17ll_BFs17ll");
    static STRUCT_IF_C BFs17i_BFu17i_BFu17ll_BFs17ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17i_BFu17i_BFu17ll_BFs17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17i_BFu17i_BFu17ll_BFs17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFu17i_BFu17ll_BFs17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFu17i_BFu17ll_BFs17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17i_BFu17i_BFu17ll_BFs17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "BFs17i_BFu17i_BFu17ll_BFs17ll");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, 1, "BFs17i_BFu17i_BFu17ll_BFs17ll");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, hide_ull(1LL<<16), "BFs17i_BFu17i_BFu17ll_BFs17ll");
    set_bf_and_test(lv, v4, ABISELECT(10,8), ABISELECT(1,2), 17, 1, "BFs17i_BFu17i_BFu17ll_BFs17ll");
    set_bf_and_test(lv, v4, ABISELECT(10,8), ABISELECT(1,2), 17, hide_sll(1LL<<16), "BFs17i_BFu17i_BFu17ll_BFs17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFu17i_BFu17ll_BFs17ll, BFs17i_BFu17i_BFu17ll_BFs17ll)
//============================================================================


struct  BFs17i_BFu17i_BFu17ll_BFu17i  {
  signed int v1:17;
  unsigned int v2:17;
  __tsu64 v3:17;
  unsigned int v4:17;
};
//SIG(1 BFs17i_BFu17i_BFu17ll_BFu17i) C1{ Fi:17 Fi:17 FL:17 Fi:17}



static void Test_BFs17i_BFu17i_BFu17ll_BFu17i()
{
  {
    init_simple_test("BFs17i_BFu17i_BFu17ll_BFu17i");
    static STRUCT_IF_C BFs17i_BFu17i_BFu17ll_BFu17i lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17i_BFu17i_BFu17ll_BFu17i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17i_BFu17i_BFu17ll_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFu17i_BFu17ll_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFu17i_BFu17ll_BFu17i");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17i_BFu17i_BFu17ll_BFu17i");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "BFs17i_BFu17i_BFu17ll_BFu17i");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, 1, "BFs17i_BFu17i_BFu17ll_BFu17i");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, hide_ull(1LL<<16), "BFs17i_BFu17i_BFu17ll_BFu17i");
    set_bf_and_test(lv, v4, ABISELECT(12,8), ABISELECT(0,2), 17, 1, "BFs17i_BFu17i_BFu17ll_BFu17i");
    set_bf_and_test(lv, v4, ABISELECT(12,8), ABISELECT(0,2), 17, hide_ull(1LL<<16), "BFs17i_BFu17i_BFu17ll_BFu17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFu17i_BFu17ll_BFu17i, BFs17i_BFu17i_BFu17ll_BFu17i)
//============================================================================


struct  BFs17i_BFu17i_BFu17ll_BFu17ll  {
  signed int v1:17;
  unsigned int v2:17;
  __tsu64 v3:17;
  __tsu64 v4:17;
};
//SIG(1 BFs17i_BFu17i_BFu17ll_BFu17ll) C1{ Fi:17 Fi:17 FL:17 FL:17}



static void Test_BFs17i_BFu17i_BFu17ll_BFu17ll()
{
  {
    init_simple_test("BFs17i_BFu17i_BFu17ll_BFu17ll");
    static STRUCT_IF_C BFs17i_BFu17i_BFu17ll_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17i_BFu17i_BFu17ll_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17i_BFu17i_BFu17ll_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFu17i_BFu17ll_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFu17i_BFu17ll_BFu17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17i_BFu17i_BFu17ll_BFu17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "BFs17i_BFu17i_BFu17ll_BFu17ll");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, 1, "BFs17i_BFu17i_BFu17ll_BFu17ll");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, hide_ull(1LL<<16), "BFs17i_BFu17i_BFu17ll_BFu17ll");
    set_bf_and_test(lv, v4, ABISELECT(10,8), ABISELECT(1,2), 17, 1, "BFs17i_BFu17i_BFu17ll_BFu17ll");
    set_bf_and_test(lv, v4, ABISELECT(10,8), ABISELECT(1,2), 17, hide_ull(1LL<<16), "BFs17i_BFu17i_BFu17ll_BFu17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFu17i_BFu17ll_BFu17ll, BFs17i_BFu17i_BFu17ll_BFu17ll)
//============================================================================


struct  BFs17i_BFu17ll  {
  signed int v1:17;
  __tsu64 v2:17;
};
//SIG(1 BFs17i_BFu17ll) C1{ Fi:17 FL:17}



static void Test_BFs17i_BFu17ll()
{
  {
    init_simple_test("BFs17i_BFu17ll");
    static STRUCT_IF_C BFs17i_BFu17ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs17i_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17i_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFu17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17i_BFu17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_ull(1LL<<16), "BFs17i_BFu17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFu17ll, BFs17i_BFu17ll)
//============================================================================


struct  BFs17i_BFu17ll_BFs17i  {
  signed int v1:17;
  __tsu64 v2:17;
  signed int v3:17;
};
//SIG(1 BFs17i_BFu17ll_BFs17i) C1{ Fi:17 FL:17 Fi:17}



static void Test_BFs17i_BFu17ll_BFs17i()
{
  {
    init_simple_test("BFs17i_BFu17ll_BFs17i");
    static STRUCT_IF_C BFs17i_BFu17ll_BFs17i lv;
    check2(sizeof(lv), 8, "sizeof(BFs17i_BFu17ll_BFs17i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17i_BFu17ll_BFs17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFu17ll_BFs17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFu17ll_BFs17i");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17i_BFu17ll_BFs17i");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_ull(1LL<<16), "BFs17i_BFu17ll_BFs17i");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17i_BFu17ll_BFs17i");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_sll(1LL<<16), "BFs17i_BFu17ll_BFs17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFu17ll_BFs17i, BFs17i_BFu17ll_BFs17i)
//============================================================================


struct  BFs17i_BFu17ll_BFs17i_BFs17i  {
  signed int v1:17;
  __tsu64 v2:17;
  signed int v3:17;
  signed int v4:17;
};
//SIG(1 BFs17i_BFu17ll_BFs17i_BFs17i) C1{ Fi:17 FL:17 Fi:17 Fi:17}



static void Test_BFs17i_BFu17ll_BFs17i_BFs17i()
{
  {
    init_simple_test("BFs17i_BFu17ll_BFs17i_BFs17i");
    static STRUCT_IF_C BFs17i_BFu17ll_BFs17i_BFs17i lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17i_BFu17ll_BFs17i_BFs17i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17i_BFu17ll_BFs17i_BFs17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFu17ll_BFs17i_BFs17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFu17ll_BFs17i_BFs17i");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17i_BFu17ll_BFs17i_BFs17i");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_ull(1LL<<16), "BFs17i_BFu17ll_BFs17i_BFs17i");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17i_BFu17ll_BFs17i_BFs17i");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_sll(1LL<<16), "BFs17i_BFu17ll_BFs17i_BFs17i");
    set_bf_and_test(lv, v4, 8, 0, 17, 1, "BFs17i_BFu17ll_BFs17i_BFs17i");
    set_bf_and_test(lv, v4, 8, 0, 17, hide_sll(1LL<<16), "BFs17i_BFu17ll_BFs17i_BFs17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFu17ll_BFs17i_BFs17i, BFs17i_BFu17ll_BFs17i_BFs17i)
//============================================================================


struct  BFs17i_BFu17ll_BFs17i_BFs17ll  {
  signed int v1:17;
  __tsu64 v2:17;
  signed int v3:17;
  signed __tsi64 v4:17;
};
//SIG(1 BFs17i_BFu17ll_BFs17i_BFs17ll) C1{ Fi:17 FL:17 Fi:17 FL:17}



static void Test_BFs17i_BFu17ll_BFs17i_BFs17ll()
{
  {
    init_simple_test("BFs17i_BFu17ll_BFs17i_BFs17ll");
    static STRUCT_IF_C BFs17i_BFu17ll_BFs17i_BFs17ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17i_BFu17ll_BFs17i_BFs17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17i_BFu17ll_BFs17i_BFs17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFu17ll_BFs17i_BFs17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFu17ll_BFs17i_BFs17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17i_BFu17ll_BFs17i_BFs17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_ull(1LL<<16), "BFs17i_BFu17ll_BFs17i_BFs17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17i_BFu17ll_BFs17i_BFs17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_sll(1LL<<16), "BFs17i_BFu17ll_BFs17i_BFs17ll");
    set_bf_and_test(lv, v4, ABISELECT(8,6), ABISELECT(0,3), 17, 1, "BFs17i_BFu17ll_BFs17i_BFs17ll");
    set_bf_and_test(lv, v4, ABISELECT(8,6), ABISELECT(0,3), 17, hide_sll(1LL<<16), "BFs17i_BFu17ll_BFs17i_BFs17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFu17ll_BFs17i_BFs17ll, BFs17i_BFu17ll_BFs17i_BFs17ll)
//============================================================================


struct  BFs17i_BFu17ll_BFs17i_BFu17i  {
  signed int v1:17;
  __tsu64 v2:17;
  signed int v3:17;
  unsigned int v4:17;
};
//SIG(1 BFs17i_BFu17ll_BFs17i_BFu17i) C1{ Fi:17 FL:17 Fi:17 Fi:17}



static void Test_BFs17i_BFu17ll_BFs17i_BFu17i()
{
  {
    init_simple_test("BFs17i_BFu17ll_BFs17i_BFu17i");
    static STRUCT_IF_C BFs17i_BFu17ll_BFs17i_BFu17i lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17i_BFu17ll_BFs17i_BFu17i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17i_BFu17ll_BFs17i_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFu17ll_BFs17i_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFu17ll_BFs17i_BFu17i");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17i_BFu17ll_BFs17i_BFu17i");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_ull(1LL<<16), "BFs17i_BFu17ll_BFs17i_BFu17i");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17i_BFu17ll_BFs17i_BFu17i");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_sll(1LL<<16), "BFs17i_BFu17ll_BFs17i_BFu17i");
    set_bf_and_test(lv, v4, 8, 0, 17, 1, "BFs17i_BFu17ll_BFs17i_BFu17i");
    set_bf_and_test(lv, v4, 8, 0, 17, hide_ull(1LL<<16), "BFs17i_BFu17ll_BFs17i_BFu17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFu17ll_BFs17i_BFu17i, BFs17i_BFu17ll_BFs17i_BFu17i)
//============================================================================


struct  BFs17i_BFu17ll_BFs17i_BFu17ll  {
  signed int v1:17;
  __tsu64 v2:17;
  signed int v3:17;
  __tsu64 v4:17;
};
//SIG(1 BFs17i_BFu17ll_BFs17i_BFu17ll) C1{ Fi:17 FL:17 Fi:17 FL:17}



static void Test_BFs17i_BFu17ll_BFs17i_BFu17ll()
{
  {
    init_simple_test("BFs17i_BFu17ll_BFs17i_BFu17ll");
    static STRUCT_IF_C BFs17i_BFu17ll_BFs17i_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17i_BFu17ll_BFs17i_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17i_BFu17ll_BFs17i_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFu17ll_BFs17i_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFu17ll_BFs17i_BFu17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17i_BFu17ll_BFs17i_BFu17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_ull(1LL<<16), "BFs17i_BFu17ll_BFs17i_BFu17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17i_BFu17ll_BFs17i_BFu17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_sll(1LL<<16), "BFs17i_BFu17ll_BFs17i_BFu17ll");
    set_bf_and_test(lv, v4, ABISELECT(8,6), ABISELECT(0,3), 17, 1, "BFs17i_BFu17ll_BFs17i_BFu17ll");
    set_bf_and_test(lv, v4, ABISELECT(8,6), ABISELECT(0,3), 17, hide_ull(1LL<<16), "BFs17i_BFu17ll_BFs17i_BFu17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFu17ll_BFs17i_BFu17ll, BFs17i_BFu17ll_BFs17i_BFu17ll)
//============================================================================


struct  BFs17i_BFu17ll_BFs17ll  {
  signed int v1:17;
  __tsu64 v2:17;
  signed __tsi64 v3:17;
};
//SIG(1 BFs17i_BFu17ll_BFs17ll) C1{ Fi:17 FL:17 FL:17}



static void Test_BFs17i_BFu17ll_BFs17ll()
{
  {
    init_simple_test("BFs17i_BFu17ll_BFs17ll");
    static STRUCT_IF_C BFs17i_BFu17ll_BFs17ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs17i_BFu17ll_BFs17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17i_BFu17ll_BFs17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFu17ll_BFs17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFu17ll_BFs17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17i_BFu17ll_BFs17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_ull(1LL<<16), "BFs17i_BFu17ll_BFs17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17i_BFu17ll_BFs17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_sll(1LL<<16), "BFs17i_BFu17ll_BFs17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFu17ll_BFs17ll, BFs17i_BFu17ll_BFs17ll)
//============================================================================


struct  BFs17i_BFu17ll_BFs17ll_BFs17i  {
  signed int v1:17;
  __tsu64 v2:17;
  signed __tsi64 v3:17;
  signed int v4:17;
};
//SIG(1 BFs17i_BFu17ll_BFs17ll_BFs17i) C1{ Fi:17 FL:17 FL:17 Fi:17}



static void Test_BFs17i_BFu17ll_BFs17ll_BFs17i()
{
  {
    init_simple_test("BFs17i_BFu17ll_BFs17ll_BFs17i");
    static STRUCT_IF_C BFs17i_BFu17ll_BFs17ll_BFs17i lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17i_BFu17ll_BFs17ll_BFs17i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17i_BFu17ll_BFs17ll_BFs17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFu17ll_BFs17ll_BFs17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFu17ll_BFs17ll_BFs17i");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17i_BFu17ll_BFs17ll_BFs17i");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_ull(1LL<<16), "BFs17i_BFu17ll_BFs17ll_BFs17i");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17i_BFu17ll_BFs17ll_BFs17i");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_sll(1LL<<16), "BFs17i_BFu17ll_BFs17ll_BFs17i");
    set_bf_and_test(lv, v4, 8, 0, 17, 1, "BFs17i_BFu17ll_BFs17ll_BFs17i");
    set_bf_and_test(lv, v4, 8, 0, 17, hide_sll(1LL<<16), "BFs17i_BFu17ll_BFs17ll_BFs17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFu17ll_BFs17ll_BFs17i, BFs17i_BFu17ll_BFs17ll_BFs17i)
//============================================================================


struct  BFs17i_BFu17ll_BFs17ll_BFs17ll  {
  signed int v1:17;
  __tsu64 v2:17;
  signed __tsi64 v3:17;
  signed __tsi64 v4:17;
};
//SIG(1 BFs17i_BFu17ll_BFs17ll_BFs17ll) C1{ Fi:17 FL:17 FL:17 FL:17}



static void Test_BFs17i_BFu17ll_BFs17ll_BFs17ll()
{
  {
    init_simple_test("BFs17i_BFu17ll_BFs17ll_BFs17ll");
    static STRUCT_IF_C BFs17i_BFu17ll_BFs17ll_BFs17ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17i_BFu17ll_BFs17ll_BFs17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17i_BFu17ll_BFs17ll_BFs17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFu17ll_BFs17ll_BFs17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFu17ll_BFs17ll_BFs17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17i_BFu17ll_BFs17ll_BFs17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_ull(1LL<<16), "BFs17i_BFu17ll_BFs17ll_BFs17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17i_BFu17ll_BFs17ll_BFs17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_sll(1LL<<16), "BFs17i_BFu17ll_BFs17ll_BFs17ll");
    set_bf_and_test(lv, v4, ABISELECT(8,6), ABISELECT(0,3), 17, 1, "BFs17i_BFu17ll_BFs17ll_BFs17ll");
    set_bf_and_test(lv, v4, ABISELECT(8,6), ABISELECT(0,3), 17, hide_sll(1LL<<16), "BFs17i_BFu17ll_BFs17ll_BFs17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFu17ll_BFs17ll_BFs17ll, BFs17i_BFu17ll_BFs17ll_BFs17ll)
//============================================================================


struct  BFs17i_BFu17ll_BFs17ll_BFu17i  {
  signed int v1:17;
  __tsu64 v2:17;
  signed __tsi64 v3:17;
  unsigned int v4:17;
};
//SIG(1 BFs17i_BFu17ll_BFs17ll_BFu17i) C1{ Fi:17 FL:17 FL:17 Fi:17}



static void Test_BFs17i_BFu17ll_BFs17ll_BFu17i()
{
  {
    init_simple_test("BFs17i_BFu17ll_BFs17ll_BFu17i");
    static STRUCT_IF_C BFs17i_BFu17ll_BFs17ll_BFu17i lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17i_BFu17ll_BFs17ll_BFu17i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17i_BFu17ll_BFs17ll_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFu17ll_BFs17ll_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFu17ll_BFs17ll_BFu17i");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17i_BFu17ll_BFs17ll_BFu17i");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_ull(1LL<<16), "BFs17i_BFu17ll_BFs17ll_BFu17i");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17i_BFu17ll_BFs17ll_BFu17i");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_sll(1LL<<16), "BFs17i_BFu17ll_BFs17ll_BFu17i");
    set_bf_and_test(lv, v4, 8, 0, 17, 1, "BFs17i_BFu17ll_BFs17ll_BFu17i");
    set_bf_and_test(lv, v4, 8, 0, 17, hide_ull(1LL<<16), "BFs17i_BFu17ll_BFs17ll_BFu17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFu17ll_BFs17ll_BFu17i, BFs17i_BFu17ll_BFs17ll_BFu17i)
//============================================================================


struct  BFs17i_BFu17ll_BFs17ll_BFu17ll  {
  signed int v1:17;
  __tsu64 v2:17;
  signed __tsi64 v3:17;
  __tsu64 v4:17;
};
//SIG(1 BFs17i_BFu17ll_BFs17ll_BFu17ll) C1{ Fi:17 FL:17 FL:17 FL:17}



static void Test_BFs17i_BFu17ll_BFs17ll_BFu17ll()
{
  {
    init_simple_test("BFs17i_BFu17ll_BFs17ll_BFu17ll");
    static STRUCT_IF_C BFs17i_BFu17ll_BFs17ll_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17i_BFu17ll_BFs17ll_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17i_BFu17ll_BFs17ll_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFu17ll_BFs17ll_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFu17ll_BFs17ll_BFu17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17i_BFu17ll_BFs17ll_BFu17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_ull(1LL<<16), "BFs17i_BFu17ll_BFs17ll_BFu17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17i_BFu17ll_BFs17ll_BFu17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_sll(1LL<<16), "BFs17i_BFu17ll_BFs17ll_BFu17ll");
    set_bf_and_test(lv, v4, ABISELECT(8,6), ABISELECT(0,3), 17, 1, "BFs17i_BFu17ll_BFs17ll_BFu17ll");
    set_bf_and_test(lv, v4, ABISELECT(8,6), ABISELECT(0,3), 17, hide_ull(1LL<<16), "BFs17i_BFu17ll_BFs17ll_BFu17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFu17ll_BFs17ll_BFu17ll, BFs17i_BFu17ll_BFs17ll_BFu17ll)
//============================================================================


struct  BFs17i_BFu17ll_BFu17i  {
  signed int v1:17;
  __tsu64 v2:17;
  unsigned int v3:17;
};
//SIG(1 BFs17i_BFu17ll_BFu17i) C1{ Fi:17 FL:17 Fi:17}



static void Test_BFs17i_BFu17ll_BFu17i()
{
  {
    init_simple_test("BFs17i_BFu17ll_BFu17i");
    static STRUCT_IF_C BFs17i_BFu17ll_BFu17i lv;
    check2(sizeof(lv), 8, "sizeof(BFs17i_BFu17ll_BFu17i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17i_BFu17ll_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFu17ll_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFu17ll_BFu17i");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17i_BFu17ll_BFu17i");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_ull(1LL<<16), "BFs17i_BFu17ll_BFu17i");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17i_BFu17ll_BFu17i");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_ull(1LL<<16), "BFs17i_BFu17ll_BFu17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFu17ll_BFu17i, BFs17i_BFu17ll_BFu17i)
//============================================================================


struct  BFs17i_BFu17ll_BFu17i_BFs17i  {
  signed int v1:17;
  __tsu64 v2:17;
  unsigned int v3:17;
  signed int v4:17;
};
//SIG(1 BFs17i_BFu17ll_BFu17i_BFs17i) C1{ Fi:17 FL:17 Fi:17 Fi:17}



static void Test_BFs17i_BFu17ll_BFu17i_BFs17i()
{
  {
    init_simple_test("BFs17i_BFu17ll_BFu17i_BFs17i");
    static STRUCT_IF_C BFs17i_BFu17ll_BFu17i_BFs17i lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17i_BFu17ll_BFu17i_BFs17i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17i_BFu17ll_BFu17i_BFs17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFu17ll_BFu17i_BFs17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFu17ll_BFu17i_BFs17i");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17i_BFu17ll_BFu17i_BFs17i");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_ull(1LL<<16), "BFs17i_BFu17ll_BFu17i_BFs17i");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17i_BFu17ll_BFu17i_BFs17i");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_ull(1LL<<16), "BFs17i_BFu17ll_BFu17i_BFs17i");
    set_bf_and_test(lv, v4, 8, 0, 17, 1, "BFs17i_BFu17ll_BFu17i_BFs17i");
    set_bf_and_test(lv, v4, 8, 0, 17, hide_sll(1LL<<16), "BFs17i_BFu17ll_BFu17i_BFs17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFu17ll_BFu17i_BFs17i, BFs17i_BFu17ll_BFu17i_BFs17i)
//============================================================================


struct  BFs17i_BFu17ll_BFu17i_BFs17ll  {
  signed int v1:17;
  __tsu64 v2:17;
  unsigned int v3:17;
  signed __tsi64 v4:17;
};
//SIG(1 BFs17i_BFu17ll_BFu17i_BFs17ll) C1{ Fi:17 FL:17 Fi:17 FL:17}



static void Test_BFs17i_BFu17ll_BFu17i_BFs17ll()
{
  {
    init_simple_test("BFs17i_BFu17ll_BFu17i_BFs17ll");
    static STRUCT_IF_C BFs17i_BFu17ll_BFu17i_BFs17ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17i_BFu17ll_BFu17i_BFs17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17i_BFu17ll_BFu17i_BFs17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFu17ll_BFu17i_BFs17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFu17ll_BFu17i_BFs17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17i_BFu17ll_BFu17i_BFs17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_ull(1LL<<16), "BFs17i_BFu17ll_BFu17i_BFs17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17i_BFu17ll_BFu17i_BFs17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_ull(1LL<<16), "BFs17i_BFu17ll_BFu17i_BFs17ll");
    set_bf_and_test(lv, v4, ABISELECT(8,6), ABISELECT(0,3), 17, 1, "BFs17i_BFu17ll_BFu17i_BFs17ll");
    set_bf_and_test(lv, v4, ABISELECT(8,6), ABISELECT(0,3), 17, hide_sll(1LL<<16), "BFs17i_BFu17ll_BFu17i_BFs17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFu17ll_BFu17i_BFs17ll, BFs17i_BFu17ll_BFu17i_BFs17ll)
//============================================================================


struct  BFs17i_BFu17ll_BFu17i_BFu17i  {
  signed int v1:17;
  __tsu64 v2:17;
  unsigned int v3:17;
  unsigned int v4:17;
};
//SIG(1 BFs17i_BFu17ll_BFu17i_BFu17i) C1{ Fi:17 FL:17 Fi:17 Fi:17}



static void Test_BFs17i_BFu17ll_BFu17i_BFu17i()
{
  {
    init_simple_test("BFs17i_BFu17ll_BFu17i_BFu17i");
    static STRUCT_IF_C BFs17i_BFu17ll_BFu17i_BFu17i lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17i_BFu17ll_BFu17i_BFu17i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17i_BFu17ll_BFu17i_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFu17ll_BFu17i_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFu17ll_BFu17i_BFu17i");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17i_BFu17ll_BFu17i_BFu17i");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_ull(1LL<<16), "BFs17i_BFu17ll_BFu17i_BFu17i");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17i_BFu17ll_BFu17i_BFu17i");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_ull(1LL<<16), "BFs17i_BFu17ll_BFu17i_BFu17i");
    set_bf_and_test(lv, v4, 8, 0, 17, 1, "BFs17i_BFu17ll_BFu17i_BFu17i");
    set_bf_and_test(lv, v4, 8, 0, 17, hide_ull(1LL<<16), "BFs17i_BFu17ll_BFu17i_BFu17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFu17ll_BFu17i_BFu17i, BFs17i_BFu17ll_BFu17i_BFu17i)
//============================================================================


struct  BFs17i_BFu17ll_BFu17i_BFu17ll  {
  signed int v1:17;
  __tsu64 v2:17;
  unsigned int v3:17;
  __tsu64 v4:17;
};
//SIG(1 BFs17i_BFu17ll_BFu17i_BFu17ll) C1{ Fi:17 FL:17 Fi:17 FL:17}



static void Test_BFs17i_BFu17ll_BFu17i_BFu17ll()
{
  {
    init_simple_test("BFs17i_BFu17ll_BFu17i_BFu17ll");
    static STRUCT_IF_C BFs17i_BFu17ll_BFu17i_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17i_BFu17ll_BFu17i_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17i_BFu17ll_BFu17i_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFu17ll_BFu17i_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFu17ll_BFu17i_BFu17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17i_BFu17ll_BFu17i_BFu17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_ull(1LL<<16), "BFs17i_BFu17ll_BFu17i_BFu17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17i_BFu17ll_BFu17i_BFu17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_ull(1LL<<16), "BFs17i_BFu17ll_BFu17i_BFu17ll");
    set_bf_and_test(lv, v4, ABISELECT(8,6), ABISELECT(0,3), 17, 1, "BFs17i_BFu17ll_BFu17i_BFu17ll");
    set_bf_and_test(lv, v4, ABISELECT(8,6), ABISELECT(0,3), 17, hide_ull(1LL<<16), "BFs17i_BFu17ll_BFu17i_BFu17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFu17ll_BFu17i_BFu17ll, BFs17i_BFu17ll_BFu17i_BFu17ll)
//============================================================================


struct  BFs17i_BFu17ll_BFu17ll  {
  signed int v1:17;
  __tsu64 v2:17;
  __tsu64 v3:17;
};
//SIG(1 BFs17i_BFu17ll_BFu17ll) C1{ Fi:17 FL:17 FL:17}



static void Test_BFs17i_BFu17ll_BFu17ll()
{
  {
    init_simple_test("BFs17i_BFu17ll_BFu17ll");
    static STRUCT_IF_C BFs17i_BFu17ll_BFu17ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs17i_BFu17ll_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17i_BFu17ll_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFu17ll_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFu17ll_BFu17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17i_BFu17ll_BFu17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_ull(1LL<<16), "BFs17i_BFu17ll_BFu17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17i_BFu17ll_BFu17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_ull(1LL<<16), "BFs17i_BFu17ll_BFu17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFu17ll_BFu17ll, BFs17i_BFu17ll_BFu17ll)
//============================================================================


struct  BFs17i_BFu17ll_BFu17ll_BFs17i  {
  signed int v1:17;
  __tsu64 v2:17;
  __tsu64 v3:17;
  signed int v4:17;
};
//SIG(1 BFs17i_BFu17ll_BFu17ll_BFs17i) C1{ Fi:17 FL:17 FL:17 Fi:17}



static void Test_BFs17i_BFu17ll_BFu17ll_BFs17i()
{
  {
    init_simple_test("BFs17i_BFu17ll_BFu17ll_BFs17i");
    static STRUCT_IF_C BFs17i_BFu17ll_BFu17ll_BFs17i lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17i_BFu17ll_BFu17ll_BFs17i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17i_BFu17ll_BFu17ll_BFs17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFu17ll_BFu17ll_BFs17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFu17ll_BFu17ll_BFs17i");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17i_BFu17ll_BFu17ll_BFs17i");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_ull(1LL<<16), "BFs17i_BFu17ll_BFu17ll_BFs17i");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17i_BFu17ll_BFu17ll_BFs17i");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_ull(1LL<<16), "BFs17i_BFu17ll_BFu17ll_BFs17i");
    set_bf_and_test(lv, v4, 8, 0, 17, 1, "BFs17i_BFu17ll_BFu17ll_BFs17i");
    set_bf_and_test(lv, v4, 8, 0, 17, hide_sll(1LL<<16), "BFs17i_BFu17ll_BFu17ll_BFs17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFu17ll_BFu17ll_BFs17i, BFs17i_BFu17ll_BFu17ll_BFs17i)
//============================================================================


struct  BFs17i_BFu17ll_BFu17ll_BFs17ll  {
  signed int v1:17;
  __tsu64 v2:17;
  __tsu64 v3:17;
  signed __tsi64 v4:17;
};
//SIG(1 BFs17i_BFu17ll_BFu17ll_BFs17ll) C1{ Fi:17 FL:17 FL:17 FL:17}



static void Test_BFs17i_BFu17ll_BFu17ll_BFs17ll()
{
  {
    init_simple_test("BFs17i_BFu17ll_BFu17ll_BFs17ll");
    static STRUCT_IF_C BFs17i_BFu17ll_BFu17ll_BFs17ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17i_BFu17ll_BFu17ll_BFs17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17i_BFu17ll_BFu17ll_BFs17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFu17ll_BFu17ll_BFs17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFu17ll_BFu17ll_BFs17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17i_BFu17ll_BFu17ll_BFs17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_ull(1LL<<16), "BFs17i_BFu17ll_BFu17ll_BFs17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17i_BFu17ll_BFu17ll_BFs17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_ull(1LL<<16), "BFs17i_BFu17ll_BFu17ll_BFs17ll");
    set_bf_and_test(lv, v4, ABISELECT(8,6), ABISELECT(0,3), 17, 1, "BFs17i_BFu17ll_BFu17ll_BFs17ll");
    set_bf_and_test(lv, v4, ABISELECT(8,6), ABISELECT(0,3), 17, hide_sll(1LL<<16), "BFs17i_BFu17ll_BFu17ll_BFs17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFu17ll_BFu17ll_BFs17ll, BFs17i_BFu17ll_BFu17ll_BFs17ll)
//============================================================================


struct  BFs17i_BFu17ll_BFu17ll_BFu17i  {
  signed int v1:17;
  __tsu64 v2:17;
  __tsu64 v3:17;
  unsigned int v4:17;
};
//SIG(1 BFs17i_BFu17ll_BFu17ll_BFu17i) C1{ Fi:17 FL:17 FL:17 Fi:17}



static void Test_BFs17i_BFu17ll_BFu17ll_BFu17i()
{
  {
    init_simple_test("BFs17i_BFu17ll_BFu17ll_BFu17i");
    static STRUCT_IF_C BFs17i_BFu17ll_BFu17ll_BFu17i lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17i_BFu17ll_BFu17ll_BFu17i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17i_BFu17ll_BFu17ll_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFu17ll_BFu17ll_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFu17ll_BFu17ll_BFu17i");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17i_BFu17ll_BFu17ll_BFu17i");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_ull(1LL<<16), "BFs17i_BFu17ll_BFu17ll_BFu17i");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17i_BFu17ll_BFu17ll_BFu17i");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_ull(1LL<<16), "BFs17i_BFu17ll_BFu17ll_BFu17i");
    set_bf_and_test(lv, v4, 8, 0, 17, 1, "BFs17i_BFu17ll_BFu17ll_BFu17i");
    set_bf_and_test(lv, v4, 8, 0, 17, hide_ull(1LL<<16), "BFs17i_BFu17ll_BFu17ll_BFu17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFu17ll_BFu17ll_BFu17i, BFs17i_BFu17ll_BFu17ll_BFu17i)
//============================================================================


struct  BFs17i_BFu17ll_BFu17ll_BFu17ll  {
  signed int v1:17;
  __tsu64 v2:17;
  __tsu64 v3:17;
  __tsu64 v4:17;
};
//SIG(1 BFs17i_BFu17ll_BFu17ll_BFu17ll) C1{ Fi:17 FL:17 FL:17 FL:17}



static void Test_BFs17i_BFu17ll_BFu17ll_BFu17ll()
{
  {
    init_simple_test("BFs17i_BFu17ll_BFu17ll_BFu17ll");
    static STRUCT_IF_C BFs17i_BFu17ll_BFu17ll_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17i_BFu17ll_BFu17ll_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17i_BFu17ll_BFu17ll_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17i_BFu17ll_BFu17ll_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17i_BFu17ll_BFu17ll_BFu17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17i_BFu17ll_BFu17ll_BFu17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_ull(1LL<<16), "BFs17i_BFu17ll_BFu17ll_BFu17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17i_BFu17ll_BFu17ll_BFu17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_ull(1LL<<16), "BFs17i_BFu17ll_BFu17ll_BFu17ll");
    set_bf_and_test(lv, v4, ABISELECT(8,6), ABISELECT(0,3), 17, 1, "BFs17i_BFu17ll_BFu17ll_BFu17ll");
    set_bf_and_test(lv, v4, ABISELECT(8,6), ABISELECT(0,3), 17, hide_ull(1LL<<16), "BFs17i_BFu17ll_BFu17ll_BFu17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17i_BFu17ll_BFu17ll_BFu17ll, BFs17i_BFu17ll_BFu17ll_BFu17ll)
//============================================================================


struct  BFs17ll_BFs17i  {
  signed __tsi64 v1:17;
  signed int v2:17;
};
//SIG(1 BFs17ll_BFs17i) C1{ FL:17 Fi:17}



static void Test_BFs17ll_BFs17i()
{
  {
    init_simple_test("BFs17ll_BFs17i");
    static STRUCT_IF_C BFs17ll_BFs17i lv;
    check2(sizeof(lv), 8, "sizeof(BFs17ll_BFs17i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFs17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFs17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFs17i");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17ll_BFs17i");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFs17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFs17i, BFs17ll_BFs17i)
//============================================================================


struct  BFs17ll_BFs17i_BFs17i  {
  signed __tsi64 v1:17;
  signed int v2:17;
  signed int v3:17;
};
//SIG(1 BFs17ll_BFs17i_BFs17i) C1{ FL:17 Fi:17 Fi:17}



static void Test_BFs17ll_BFs17i_BFs17i()
{
  {
    init_simple_test("BFs17ll_BFs17i_BFs17i");
    static STRUCT_IF_C BFs17ll_BFs17i_BFs17i lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17ll_BFs17i_BFs17i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFs17i_BFs17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFs17i_BFs17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFs17i_BFs17i");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17ll_BFs17i_BFs17i");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFs17i_BFs17i");
    set_bf_and_test(lv, v3, 8, 0, 17, 1, "BFs17ll_BFs17i_BFs17i");
    set_bf_and_test(lv, v3, 8, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFs17i_BFs17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFs17i_BFs17i, BFs17ll_BFs17i_BFs17i)
//============================================================================


struct  BFs17ll_BFs17i_BFs17i_BFs17i  {
  signed __tsi64 v1:17;
  signed int v2:17;
  signed int v3:17;
  signed int v4:17;
};
//SIG(1 BFs17ll_BFs17i_BFs17i_BFs17i) C1{ FL:17 Fi:17 Fi:17 Fi:17}



static void Test_BFs17ll_BFs17i_BFs17i_BFs17i()
{
  {
    init_simple_test("BFs17ll_BFs17i_BFs17i_BFs17i");
    static STRUCT_IF_C BFs17ll_BFs17i_BFs17i_BFs17i lv;
    check2(sizeof(lv), 16, "sizeof(BFs17ll_BFs17i_BFs17i_BFs17i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFs17i_BFs17i_BFs17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFs17i_BFs17i_BFs17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFs17i_BFs17i_BFs17i");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17ll_BFs17i_BFs17i_BFs17i");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFs17i_BFs17i_BFs17i");
    set_bf_and_test(lv, v3, 8, 0, 17, 1, "BFs17ll_BFs17i_BFs17i_BFs17i");
    set_bf_and_test(lv, v3, 8, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFs17i_BFs17i_BFs17i");
    set_bf_and_test(lv, v4, 12, 0, 17, 1, "BFs17ll_BFs17i_BFs17i_BFs17i");
    set_bf_and_test(lv, v4, 12, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFs17i_BFs17i_BFs17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFs17i_BFs17i_BFs17i, BFs17ll_BFs17i_BFs17i_BFs17i)
//============================================================================


struct  BFs17ll_BFs17i_BFs17i_BFs17ll  {
  signed __tsi64 v1:17;
  signed int v2:17;
  signed int v3:17;
  signed __tsi64 v4:17;
};
//SIG(1 BFs17ll_BFs17i_BFs17i_BFs17ll) C1{ FL:17 Fi:17 Fi:17 FL:17}



static void Test_BFs17ll_BFs17i_BFs17i_BFs17ll()
{
  {
    init_simple_test("BFs17ll_BFs17i_BFs17i_BFs17ll");
    static STRUCT_IF_C BFs17ll_BFs17i_BFs17i_BFs17ll lv;
    check2(sizeof(lv), 16, "sizeof(BFs17ll_BFs17i_BFs17i_BFs17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFs17i_BFs17i_BFs17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFs17i_BFs17i_BFs17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFs17i_BFs17i_BFs17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17ll_BFs17i_BFs17i_BFs17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFs17i_BFs17i_BFs17ll");
    set_bf_and_test(lv, v3, 8, 0, 17, 1, "BFs17ll_BFs17i_BFs17i_BFs17ll");
    set_bf_and_test(lv, v3, 8, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFs17i_BFs17i_BFs17ll");
    set_bf_and_test(lv, v4, 10, 1, 17, 1, "BFs17ll_BFs17i_BFs17i_BFs17ll");
    set_bf_and_test(lv, v4, 10, 1, 17, hide_sll(1LL<<16), "BFs17ll_BFs17i_BFs17i_BFs17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFs17i_BFs17i_BFs17ll, BFs17ll_BFs17i_BFs17i_BFs17ll)
//============================================================================


struct  BFs17ll_BFs17i_BFs17i_BFu17i  {
  signed __tsi64 v1:17;
  signed int v2:17;
  signed int v3:17;
  unsigned int v4:17;
};
//SIG(1 BFs17ll_BFs17i_BFs17i_BFu17i) C1{ FL:17 Fi:17 Fi:17 Fi:17}



static void Test_BFs17ll_BFs17i_BFs17i_BFu17i()
{
  {
    init_simple_test("BFs17ll_BFs17i_BFs17i_BFu17i");
    static STRUCT_IF_C BFs17ll_BFs17i_BFs17i_BFu17i lv;
    check2(sizeof(lv), 16, "sizeof(BFs17ll_BFs17i_BFs17i_BFu17i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFs17i_BFs17i_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFs17i_BFs17i_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFs17i_BFs17i_BFu17i");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17ll_BFs17i_BFs17i_BFu17i");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFs17i_BFs17i_BFu17i");
    set_bf_and_test(lv, v3, 8, 0, 17, 1, "BFs17ll_BFs17i_BFs17i_BFu17i");
    set_bf_and_test(lv, v3, 8, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFs17i_BFs17i_BFu17i");
    set_bf_and_test(lv, v4, 12, 0, 17, 1, "BFs17ll_BFs17i_BFs17i_BFu17i");
    set_bf_and_test(lv, v4, 12, 0, 17, hide_ull(1LL<<16), "BFs17ll_BFs17i_BFs17i_BFu17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFs17i_BFs17i_BFu17i, BFs17ll_BFs17i_BFs17i_BFu17i)
//============================================================================


struct  BFs17ll_BFs17i_BFs17i_BFu17ll  {
  signed __tsi64 v1:17;
  signed int v2:17;
  signed int v3:17;
  __tsu64 v4:17;
};
//SIG(1 BFs17ll_BFs17i_BFs17i_BFu17ll) C1{ FL:17 Fi:17 Fi:17 FL:17}



static void Test_BFs17ll_BFs17i_BFs17i_BFu17ll()
{
  {
    init_simple_test("BFs17ll_BFs17i_BFs17i_BFu17ll");
    static STRUCT_IF_C BFs17ll_BFs17i_BFs17i_BFu17ll lv;
    check2(sizeof(lv), 16, "sizeof(BFs17ll_BFs17i_BFs17i_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFs17i_BFs17i_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFs17i_BFs17i_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFs17i_BFs17i_BFu17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17ll_BFs17i_BFs17i_BFu17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFs17i_BFs17i_BFu17ll");
    set_bf_and_test(lv, v3, 8, 0, 17, 1, "BFs17ll_BFs17i_BFs17i_BFu17ll");
    set_bf_and_test(lv, v3, 8, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFs17i_BFs17i_BFu17ll");
    set_bf_and_test(lv, v4, 10, 1, 17, 1, "BFs17ll_BFs17i_BFs17i_BFu17ll");
    set_bf_and_test(lv, v4, 10, 1, 17, hide_ull(1LL<<16), "BFs17ll_BFs17i_BFs17i_BFu17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFs17i_BFs17i_BFu17ll, BFs17ll_BFs17i_BFs17i_BFu17ll)
//============================================================================


struct  BFs17ll_BFs17i_BFs17ll  {
  signed __tsi64 v1:17;
  signed int v2:17;
  signed __tsi64 v3:17;
};
//SIG(1 BFs17ll_BFs17i_BFs17ll) C1{ FL:17 Fi:17 FL:17}



static void Test_BFs17ll_BFs17i_BFs17ll()
{
  {
    init_simple_test("BFs17ll_BFs17i_BFs17ll");
    static STRUCT_IF_C BFs17ll_BFs17i_BFs17ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17ll_BFs17i_BFs17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFs17i_BFs17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFs17i_BFs17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFs17i_BFs17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17ll_BFs17i_BFs17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFs17i_BFs17ll");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, 1, "BFs17ll_BFs17i_BFs17ll");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, hide_sll(1LL<<16), "BFs17ll_BFs17i_BFs17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFs17i_BFs17ll, BFs17ll_BFs17i_BFs17ll)
//============================================================================


struct  BFs17ll_BFs17i_BFs17ll_BFs17i  {
  signed __tsi64 v1:17;
  signed int v2:17;
  signed __tsi64 v3:17;
  signed int v4:17;
};
//SIG(1 BFs17ll_BFs17i_BFs17ll_BFs17i) C1{ FL:17 Fi:17 FL:17 Fi:17}



static void Test_BFs17ll_BFs17i_BFs17ll_BFs17i()
{
  {
    init_simple_test("BFs17ll_BFs17i_BFs17ll_BFs17i");
    static STRUCT_IF_C BFs17ll_BFs17i_BFs17ll_BFs17i lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17ll_BFs17i_BFs17ll_BFs17i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFs17i_BFs17ll_BFs17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFs17i_BFs17ll_BFs17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFs17i_BFs17ll_BFs17i");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17ll_BFs17i_BFs17ll_BFs17i");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFs17i_BFs17ll_BFs17i");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, 1, "BFs17ll_BFs17i_BFs17ll_BFs17i");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, hide_sll(1LL<<16), "BFs17ll_BFs17i_BFs17ll_BFs17i");
    set_bf_and_test(lv, v4, ABISELECT(12,8), ABISELECT(0,2), 17, 1, "BFs17ll_BFs17i_BFs17ll_BFs17i");
    set_bf_and_test(lv, v4, ABISELECT(12,8), ABISELECT(0,2), 17, hide_sll(1LL<<16), "BFs17ll_BFs17i_BFs17ll_BFs17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFs17i_BFs17ll_BFs17i, BFs17ll_BFs17i_BFs17ll_BFs17i)
//============================================================================


struct  BFs17ll_BFs17i_BFs17ll_BFs17ll  {
  signed __tsi64 v1:17;
  signed int v2:17;
  signed __tsi64 v3:17;
  signed __tsi64 v4:17;
};
//SIG(1 BFs17ll_BFs17i_BFs17ll_BFs17ll) C1{ FL:17 Fi:17 FL:17 FL:17}



static void Test_BFs17ll_BFs17i_BFs17ll_BFs17ll()
{
  {
    init_simple_test("BFs17ll_BFs17i_BFs17ll_BFs17ll");
    static STRUCT_IF_C BFs17ll_BFs17i_BFs17ll_BFs17ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17ll_BFs17i_BFs17ll_BFs17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFs17i_BFs17ll_BFs17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFs17i_BFs17ll_BFs17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFs17i_BFs17ll_BFs17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17ll_BFs17i_BFs17ll_BFs17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFs17i_BFs17ll_BFs17ll");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, 1, "BFs17ll_BFs17i_BFs17ll_BFs17ll");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, hide_sll(1LL<<16), "BFs17ll_BFs17i_BFs17ll_BFs17ll");
    set_bf_and_test(lv, v4, ABISELECT(10,8), ABISELECT(1,2), 17, 1, "BFs17ll_BFs17i_BFs17ll_BFs17ll");
    set_bf_and_test(lv, v4, ABISELECT(10,8), ABISELECT(1,2), 17, hide_sll(1LL<<16), "BFs17ll_BFs17i_BFs17ll_BFs17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFs17i_BFs17ll_BFs17ll, BFs17ll_BFs17i_BFs17ll_BFs17ll)
//============================================================================


struct  BFs17ll_BFs17i_BFs17ll_BFu17i  {
  signed __tsi64 v1:17;
  signed int v2:17;
  signed __tsi64 v3:17;
  unsigned int v4:17;
};
//SIG(1 BFs17ll_BFs17i_BFs17ll_BFu17i) C1{ FL:17 Fi:17 FL:17 Fi:17}



static void Test_BFs17ll_BFs17i_BFs17ll_BFu17i()
{
  {
    init_simple_test("BFs17ll_BFs17i_BFs17ll_BFu17i");
    static STRUCT_IF_C BFs17ll_BFs17i_BFs17ll_BFu17i lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17ll_BFs17i_BFs17ll_BFu17i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFs17i_BFs17ll_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFs17i_BFs17ll_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFs17i_BFs17ll_BFu17i");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17ll_BFs17i_BFs17ll_BFu17i");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFs17i_BFs17ll_BFu17i");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, 1, "BFs17ll_BFs17i_BFs17ll_BFu17i");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, hide_sll(1LL<<16), "BFs17ll_BFs17i_BFs17ll_BFu17i");
    set_bf_and_test(lv, v4, ABISELECT(12,8), ABISELECT(0,2), 17, 1, "BFs17ll_BFs17i_BFs17ll_BFu17i");
    set_bf_and_test(lv, v4, ABISELECT(12,8), ABISELECT(0,2), 17, hide_ull(1LL<<16), "BFs17ll_BFs17i_BFs17ll_BFu17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFs17i_BFs17ll_BFu17i, BFs17ll_BFs17i_BFs17ll_BFu17i)
//============================================================================


struct  BFs17ll_BFs17i_BFs17ll_BFu17ll  {
  signed __tsi64 v1:17;
  signed int v2:17;
  signed __tsi64 v3:17;
  __tsu64 v4:17;
};
//SIG(1 BFs17ll_BFs17i_BFs17ll_BFu17ll) C1{ FL:17 Fi:17 FL:17 FL:17}



static void Test_BFs17ll_BFs17i_BFs17ll_BFu17ll()
{
  {
    init_simple_test("BFs17ll_BFs17i_BFs17ll_BFu17ll");
    static STRUCT_IF_C BFs17ll_BFs17i_BFs17ll_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17ll_BFs17i_BFs17ll_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFs17i_BFs17ll_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFs17i_BFs17ll_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFs17i_BFs17ll_BFu17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17ll_BFs17i_BFs17ll_BFu17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFs17i_BFs17ll_BFu17ll");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, 1, "BFs17ll_BFs17i_BFs17ll_BFu17ll");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, hide_sll(1LL<<16), "BFs17ll_BFs17i_BFs17ll_BFu17ll");
    set_bf_and_test(lv, v4, ABISELECT(10,8), ABISELECT(1,2), 17, 1, "BFs17ll_BFs17i_BFs17ll_BFu17ll");
    set_bf_and_test(lv, v4, ABISELECT(10,8), ABISELECT(1,2), 17, hide_ull(1LL<<16), "BFs17ll_BFs17i_BFs17ll_BFu17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFs17i_BFs17ll_BFu17ll, BFs17ll_BFs17i_BFs17ll_BFu17ll)
//============================================================================


struct  BFs17ll_BFs17i_BFu17i  {
  signed __tsi64 v1:17;
  signed int v2:17;
  unsigned int v3:17;
};
//SIG(1 BFs17ll_BFs17i_BFu17i) C1{ FL:17 Fi:17 Fi:17}



static void Test_BFs17ll_BFs17i_BFu17i()
{
  {
    init_simple_test("BFs17ll_BFs17i_BFu17i");
    static STRUCT_IF_C BFs17ll_BFs17i_BFu17i lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17ll_BFs17i_BFu17i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFs17i_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFs17i_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFs17i_BFu17i");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17ll_BFs17i_BFu17i");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFs17i_BFu17i");
    set_bf_and_test(lv, v3, 8, 0, 17, 1, "BFs17ll_BFs17i_BFu17i");
    set_bf_and_test(lv, v3, 8, 0, 17, hide_ull(1LL<<16), "BFs17ll_BFs17i_BFu17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFs17i_BFu17i, BFs17ll_BFs17i_BFu17i)
//============================================================================


struct  BFs17ll_BFs17i_BFu17i_BFs17i  {
  signed __tsi64 v1:17;
  signed int v2:17;
  unsigned int v3:17;
  signed int v4:17;
};
//SIG(1 BFs17ll_BFs17i_BFu17i_BFs17i) C1{ FL:17 Fi:17 Fi:17 Fi:17}



static void Test_BFs17ll_BFs17i_BFu17i_BFs17i()
{
  {
    init_simple_test("BFs17ll_BFs17i_BFu17i_BFs17i");
    static STRUCT_IF_C BFs17ll_BFs17i_BFu17i_BFs17i lv;
    check2(sizeof(lv), 16, "sizeof(BFs17ll_BFs17i_BFu17i_BFs17i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFs17i_BFu17i_BFs17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFs17i_BFu17i_BFs17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFs17i_BFu17i_BFs17i");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17ll_BFs17i_BFu17i_BFs17i");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFs17i_BFu17i_BFs17i");
    set_bf_and_test(lv, v3, 8, 0, 17, 1, "BFs17ll_BFs17i_BFu17i_BFs17i");
    set_bf_and_test(lv, v3, 8, 0, 17, hide_ull(1LL<<16), "BFs17ll_BFs17i_BFu17i_BFs17i");
    set_bf_and_test(lv, v4, 12, 0, 17, 1, "BFs17ll_BFs17i_BFu17i_BFs17i");
    set_bf_and_test(lv, v4, 12, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFs17i_BFu17i_BFs17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFs17i_BFu17i_BFs17i, BFs17ll_BFs17i_BFu17i_BFs17i)
//============================================================================


struct  BFs17ll_BFs17i_BFu17i_BFs17ll  {
  signed __tsi64 v1:17;
  signed int v2:17;
  unsigned int v3:17;
  signed __tsi64 v4:17;
};
//SIG(1 BFs17ll_BFs17i_BFu17i_BFs17ll) C1{ FL:17 Fi:17 Fi:17 FL:17}



static void Test_BFs17ll_BFs17i_BFu17i_BFs17ll()
{
  {
    init_simple_test("BFs17ll_BFs17i_BFu17i_BFs17ll");
    static STRUCT_IF_C BFs17ll_BFs17i_BFu17i_BFs17ll lv;
    check2(sizeof(lv), 16, "sizeof(BFs17ll_BFs17i_BFu17i_BFs17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFs17i_BFu17i_BFs17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFs17i_BFu17i_BFs17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFs17i_BFu17i_BFs17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17ll_BFs17i_BFu17i_BFs17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFs17i_BFu17i_BFs17ll");
    set_bf_and_test(lv, v3, 8, 0, 17, 1, "BFs17ll_BFs17i_BFu17i_BFs17ll");
    set_bf_and_test(lv, v3, 8, 0, 17, hide_ull(1LL<<16), "BFs17ll_BFs17i_BFu17i_BFs17ll");
    set_bf_and_test(lv, v4, 10, 1, 17, 1, "BFs17ll_BFs17i_BFu17i_BFs17ll");
    set_bf_and_test(lv, v4, 10, 1, 17, hide_sll(1LL<<16), "BFs17ll_BFs17i_BFu17i_BFs17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFs17i_BFu17i_BFs17ll, BFs17ll_BFs17i_BFu17i_BFs17ll)
//============================================================================


struct  BFs17ll_BFs17i_BFu17i_BFu17i  {
  signed __tsi64 v1:17;
  signed int v2:17;
  unsigned int v3:17;
  unsigned int v4:17;
};
//SIG(1 BFs17ll_BFs17i_BFu17i_BFu17i) C1{ FL:17 Fi:17 Fi:17 Fi:17}



static void Test_BFs17ll_BFs17i_BFu17i_BFu17i()
{
  {
    init_simple_test("BFs17ll_BFs17i_BFu17i_BFu17i");
    static STRUCT_IF_C BFs17ll_BFs17i_BFu17i_BFu17i lv;
    check2(sizeof(lv), 16, "sizeof(BFs17ll_BFs17i_BFu17i_BFu17i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFs17i_BFu17i_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFs17i_BFu17i_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFs17i_BFu17i_BFu17i");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17ll_BFs17i_BFu17i_BFu17i");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFs17i_BFu17i_BFu17i");
    set_bf_and_test(lv, v3, 8, 0, 17, 1, "BFs17ll_BFs17i_BFu17i_BFu17i");
    set_bf_and_test(lv, v3, 8, 0, 17, hide_ull(1LL<<16), "BFs17ll_BFs17i_BFu17i_BFu17i");
    set_bf_and_test(lv, v4, 12, 0, 17, 1, "BFs17ll_BFs17i_BFu17i_BFu17i");
    set_bf_and_test(lv, v4, 12, 0, 17, hide_ull(1LL<<16), "BFs17ll_BFs17i_BFu17i_BFu17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFs17i_BFu17i_BFu17i, BFs17ll_BFs17i_BFu17i_BFu17i)
//============================================================================


struct  BFs17ll_BFs17i_BFu17i_BFu17ll  {
  signed __tsi64 v1:17;
  signed int v2:17;
  unsigned int v3:17;
  __tsu64 v4:17;
};
//SIG(1 BFs17ll_BFs17i_BFu17i_BFu17ll) C1{ FL:17 Fi:17 Fi:17 FL:17}



static void Test_BFs17ll_BFs17i_BFu17i_BFu17ll()
{
  {
    init_simple_test("BFs17ll_BFs17i_BFu17i_BFu17ll");
    static STRUCT_IF_C BFs17ll_BFs17i_BFu17i_BFu17ll lv;
    check2(sizeof(lv), 16, "sizeof(BFs17ll_BFs17i_BFu17i_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFs17i_BFu17i_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFs17i_BFu17i_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFs17i_BFu17i_BFu17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17ll_BFs17i_BFu17i_BFu17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFs17i_BFu17i_BFu17ll");
    set_bf_and_test(lv, v3, 8, 0, 17, 1, "BFs17ll_BFs17i_BFu17i_BFu17ll");
    set_bf_and_test(lv, v3, 8, 0, 17, hide_ull(1LL<<16), "BFs17ll_BFs17i_BFu17i_BFu17ll");
    set_bf_and_test(lv, v4, 10, 1, 17, 1, "BFs17ll_BFs17i_BFu17i_BFu17ll");
    set_bf_and_test(lv, v4, 10, 1, 17, hide_ull(1LL<<16), "BFs17ll_BFs17i_BFu17i_BFu17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFs17i_BFu17i_BFu17ll, BFs17ll_BFs17i_BFu17i_BFu17ll)
//============================================================================


struct  BFs17ll_BFs17i_BFu17ll  {
  signed __tsi64 v1:17;
  signed int v2:17;
  __tsu64 v3:17;
};
//SIG(1 BFs17ll_BFs17i_BFu17ll) C1{ FL:17 Fi:17 FL:17}



static void Test_BFs17ll_BFs17i_BFu17ll()
{
  {
    init_simple_test("BFs17ll_BFs17i_BFu17ll");
    static STRUCT_IF_C BFs17ll_BFs17i_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17ll_BFs17i_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFs17i_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFs17i_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFs17i_BFu17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17ll_BFs17i_BFu17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFs17i_BFu17ll");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, 1, "BFs17ll_BFs17i_BFu17ll");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, hide_ull(1LL<<16), "BFs17ll_BFs17i_BFu17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFs17i_BFu17ll, BFs17ll_BFs17i_BFu17ll)
//============================================================================


struct  BFs17ll_BFs17i_BFu17ll_BFs17i  {
  signed __tsi64 v1:17;
  signed int v2:17;
  __tsu64 v3:17;
  signed int v4:17;
};
//SIG(1 BFs17ll_BFs17i_BFu17ll_BFs17i) C1{ FL:17 Fi:17 FL:17 Fi:17}



static void Test_BFs17ll_BFs17i_BFu17ll_BFs17i()
{
  {
    init_simple_test("BFs17ll_BFs17i_BFu17ll_BFs17i");
    static STRUCT_IF_C BFs17ll_BFs17i_BFu17ll_BFs17i lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17ll_BFs17i_BFu17ll_BFs17i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFs17i_BFu17ll_BFs17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFs17i_BFu17ll_BFs17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFs17i_BFu17ll_BFs17i");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17ll_BFs17i_BFu17ll_BFs17i");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFs17i_BFu17ll_BFs17i");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, 1, "BFs17ll_BFs17i_BFu17ll_BFs17i");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, hide_ull(1LL<<16), "BFs17ll_BFs17i_BFu17ll_BFs17i");
    set_bf_and_test(lv, v4, ABISELECT(12,8), ABISELECT(0,2), 17, 1, "BFs17ll_BFs17i_BFu17ll_BFs17i");
    set_bf_and_test(lv, v4, ABISELECT(12,8), ABISELECT(0,2), 17, hide_sll(1LL<<16), "BFs17ll_BFs17i_BFu17ll_BFs17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFs17i_BFu17ll_BFs17i, BFs17ll_BFs17i_BFu17ll_BFs17i)
//============================================================================


struct  BFs17ll_BFs17i_BFu17ll_BFs17ll  {
  signed __tsi64 v1:17;
  signed int v2:17;
  __tsu64 v3:17;
  signed __tsi64 v4:17;
};
//SIG(1 BFs17ll_BFs17i_BFu17ll_BFs17ll) C1{ FL:17 Fi:17 FL:17 FL:17}



static void Test_BFs17ll_BFs17i_BFu17ll_BFs17ll()
{
  {
    init_simple_test("BFs17ll_BFs17i_BFu17ll_BFs17ll");
    static STRUCT_IF_C BFs17ll_BFs17i_BFu17ll_BFs17ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17ll_BFs17i_BFu17ll_BFs17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFs17i_BFu17ll_BFs17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFs17i_BFu17ll_BFs17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFs17i_BFu17ll_BFs17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17ll_BFs17i_BFu17ll_BFs17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFs17i_BFu17ll_BFs17ll");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, 1, "BFs17ll_BFs17i_BFu17ll_BFs17ll");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, hide_ull(1LL<<16), "BFs17ll_BFs17i_BFu17ll_BFs17ll");
    set_bf_and_test(lv, v4, ABISELECT(10,8), ABISELECT(1,2), 17, 1, "BFs17ll_BFs17i_BFu17ll_BFs17ll");
    set_bf_and_test(lv, v4, ABISELECT(10,8), ABISELECT(1,2), 17, hide_sll(1LL<<16), "BFs17ll_BFs17i_BFu17ll_BFs17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFs17i_BFu17ll_BFs17ll, BFs17ll_BFs17i_BFu17ll_BFs17ll)
//============================================================================


struct  BFs17ll_BFs17i_BFu17ll_BFu17i  {
  signed __tsi64 v1:17;
  signed int v2:17;
  __tsu64 v3:17;
  unsigned int v4:17;
};
//SIG(1 BFs17ll_BFs17i_BFu17ll_BFu17i) C1{ FL:17 Fi:17 FL:17 Fi:17}



static void Test_BFs17ll_BFs17i_BFu17ll_BFu17i()
{
  {
    init_simple_test("BFs17ll_BFs17i_BFu17ll_BFu17i");
    static STRUCT_IF_C BFs17ll_BFs17i_BFu17ll_BFu17i lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17ll_BFs17i_BFu17ll_BFu17i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFs17i_BFu17ll_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFs17i_BFu17ll_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFs17i_BFu17ll_BFu17i");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17ll_BFs17i_BFu17ll_BFu17i");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFs17i_BFu17ll_BFu17i");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, 1, "BFs17ll_BFs17i_BFu17ll_BFu17i");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, hide_ull(1LL<<16), "BFs17ll_BFs17i_BFu17ll_BFu17i");
    set_bf_and_test(lv, v4, ABISELECT(12,8), ABISELECT(0,2), 17, 1, "BFs17ll_BFs17i_BFu17ll_BFu17i");
    set_bf_and_test(lv, v4, ABISELECT(12,8), ABISELECT(0,2), 17, hide_ull(1LL<<16), "BFs17ll_BFs17i_BFu17ll_BFu17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFs17i_BFu17ll_BFu17i, BFs17ll_BFs17i_BFu17ll_BFu17i)
//============================================================================


struct  BFs17ll_BFs17i_BFu17ll_BFu17ll  {
  signed __tsi64 v1:17;
  signed int v2:17;
  __tsu64 v3:17;
  __tsu64 v4:17;
};
//SIG(1 BFs17ll_BFs17i_BFu17ll_BFu17ll) C1{ FL:17 Fi:17 FL:17 FL:17}



static void Test_BFs17ll_BFs17i_BFu17ll_BFu17ll()
{
  {
    init_simple_test("BFs17ll_BFs17i_BFu17ll_BFu17ll");
    static STRUCT_IF_C BFs17ll_BFs17i_BFu17ll_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17ll_BFs17i_BFu17ll_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFs17i_BFu17ll_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFs17i_BFu17ll_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFs17i_BFu17ll_BFu17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17ll_BFs17i_BFu17ll_BFu17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFs17i_BFu17ll_BFu17ll");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, 1, "BFs17ll_BFs17i_BFu17ll_BFu17ll");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, hide_ull(1LL<<16), "BFs17ll_BFs17i_BFu17ll_BFu17ll");
    set_bf_and_test(lv, v4, ABISELECT(10,8), ABISELECT(1,2), 17, 1, "BFs17ll_BFs17i_BFu17ll_BFu17ll");
    set_bf_and_test(lv, v4, ABISELECT(10,8), ABISELECT(1,2), 17, hide_ull(1LL<<16), "BFs17ll_BFs17i_BFu17ll_BFu17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFs17i_BFu17ll_BFu17ll, BFs17ll_BFs17i_BFu17ll_BFu17ll)
//============================================================================


struct  BFs17ll_BFs17ll  {
  signed __tsi64 v1:17;
  signed __tsi64 v2:17;
};
//SIG(1 BFs17ll_BFs17ll) C1{ FL:17 FL:17}



static void Test_BFs17ll_BFs17ll()
{
  {
    init_simple_test("BFs17ll_BFs17ll");
    static STRUCT_IF_C BFs17ll_BFs17ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs17ll_BFs17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFs17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFs17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFs17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17ll_BFs17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_sll(1LL<<16), "BFs17ll_BFs17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFs17ll, BFs17ll_BFs17ll)
//============================================================================


struct  BFs17ll_BFs17ll_BFs17i  {
  signed __tsi64 v1:17;
  signed __tsi64 v2:17;
  signed int v3:17;
};
//SIG(1 BFs17ll_BFs17ll_BFs17i) C1{ FL:17 FL:17 Fi:17}



static void Test_BFs17ll_BFs17ll_BFs17i()
{
  {
    init_simple_test("BFs17ll_BFs17ll_BFs17i");
    static STRUCT_IF_C BFs17ll_BFs17ll_BFs17i lv;
    check2(sizeof(lv), 8, "sizeof(BFs17ll_BFs17ll_BFs17i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFs17ll_BFs17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFs17ll_BFs17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFs17ll_BFs17i");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17ll_BFs17ll_BFs17i");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_sll(1LL<<16), "BFs17ll_BFs17ll_BFs17i");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17ll_BFs17ll_BFs17i");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_sll(1LL<<16), "BFs17ll_BFs17ll_BFs17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFs17ll_BFs17i, BFs17ll_BFs17ll_BFs17i)
//============================================================================


struct  BFs17ll_BFs17ll_BFs17i_BFs17i  {
  signed __tsi64 v1:17;
  signed __tsi64 v2:17;
  signed int v3:17;
  signed int v4:17;
};
//SIG(1 BFs17ll_BFs17ll_BFs17i_BFs17i) C1{ FL:17 FL:17 Fi:17 Fi:17}



static void Test_BFs17ll_BFs17ll_BFs17i_BFs17i()
{
  {
    init_simple_test("BFs17ll_BFs17ll_BFs17i_BFs17i");
    static STRUCT_IF_C BFs17ll_BFs17ll_BFs17i_BFs17i lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17ll_BFs17ll_BFs17i_BFs17i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFs17ll_BFs17i_BFs17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFs17ll_BFs17i_BFs17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFs17ll_BFs17i_BFs17i");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17ll_BFs17ll_BFs17i_BFs17i");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_sll(1LL<<16), "BFs17ll_BFs17ll_BFs17i_BFs17i");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17ll_BFs17ll_BFs17i_BFs17i");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_sll(1LL<<16), "BFs17ll_BFs17ll_BFs17i_BFs17i");
    set_bf_and_test(lv, v4, 8, 0, 17, 1, "BFs17ll_BFs17ll_BFs17i_BFs17i");
    set_bf_and_test(lv, v4, 8, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFs17ll_BFs17i_BFs17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFs17ll_BFs17i_BFs17i, BFs17ll_BFs17ll_BFs17i_BFs17i)
//============================================================================


struct  BFs17ll_BFs17ll_BFs17i_BFs17ll  {
  signed __tsi64 v1:17;
  signed __tsi64 v2:17;
  signed int v3:17;
  signed __tsi64 v4:17;
};
//SIG(1 BFs17ll_BFs17ll_BFs17i_BFs17ll) C1{ FL:17 FL:17 Fi:17 FL:17}



static void Test_BFs17ll_BFs17ll_BFs17i_BFs17ll()
{
  {
    init_simple_test("BFs17ll_BFs17ll_BFs17i_BFs17ll");
    static STRUCT_IF_C BFs17ll_BFs17ll_BFs17i_BFs17ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17ll_BFs17ll_BFs17i_BFs17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFs17ll_BFs17i_BFs17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFs17ll_BFs17i_BFs17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFs17ll_BFs17i_BFs17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17ll_BFs17ll_BFs17i_BFs17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_sll(1LL<<16), "BFs17ll_BFs17ll_BFs17i_BFs17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17ll_BFs17ll_BFs17i_BFs17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_sll(1LL<<16), "BFs17ll_BFs17ll_BFs17i_BFs17ll");
    set_bf_and_test(lv, v4, ABISELECT(8,6), ABISELECT(0,3), 17, 1, "BFs17ll_BFs17ll_BFs17i_BFs17ll");
    set_bf_and_test(lv, v4, ABISELECT(8,6), ABISELECT(0,3), 17, hide_sll(1LL<<16), "BFs17ll_BFs17ll_BFs17i_BFs17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFs17ll_BFs17i_BFs17ll, BFs17ll_BFs17ll_BFs17i_BFs17ll)
//============================================================================


struct  BFs17ll_BFs17ll_BFs17i_BFu17i  {
  signed __tsi64 v1:17;
  signed __tsi64 v2:17;
  signed int v3:17;
  unsigned int v4:17;
};
//SIG(1 BFs17ll_BFs17ll_BFs17i_BFu17i) C1{ FL:17 FL:17 Fi:17 Fi:17}



static void Test_BFs17ll_BFs17ll_BFs17i_BFu17i()
{
  {
    init_simple_test("BFs17ll_BFs17ll_BFs17i_BFu17i");
    static STRUCT_IF_C BFs17ll_BFs17ll_BFs17i_BFu17i lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17ll_BFs17ll_BFs17i_BFu17i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFs17ll_BFs17i_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFs17ll_BFs17i_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFs17ll_BFs17i_BFu17i");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17ll_BFs17ll_BFs17i_BFu17i");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_sll(1LL<<16), "BFs17ll_BFs17ll_BFs17i_BFu17i");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17ll_BFs17ll_BFs17i_BFu17i");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_sll(1LL<<16), "BFs17ll_BFs17ll_BFs17i_BFu17i");
    set_bf_and_test(lv, v4, 8, 0, 17, 1, "BFs17ll_BFs17ll_BFs17i_BFu17i");
    set_bf_and_test(lv, v4, 8, 0, 17, hide_ull(1LL<<16), "BFs17ll_BFs17ll_BFs17i_BFu17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFs17ll_BFs17i_BFu17i, BFs17ll_BFs17ll_BFs17i_BFu17i)
//============================================================================


struct  BFs17ll_BFs17ll_BFs17i_BFu17ll  {
  signed __tsi64 v1:17;
  signed __tsi64 v2:17;
  signed int v3:17;
  __tsu64 v4:17;
};
//SIG(1 BFs17ll_BFs17ll_BFs17i_BFu17ll) C1{ FL:17 FL:17 Fi:17 FL:17}



static void Test_BFs17ll_BFs17ll_BFs17i_BFu17ll()
{
  {
    init_simple_test("BFs17ll_BFs17ll_BFs17i_BFu17ll");
    static STRUCT_IF_C BFs17ll_BFs17ll_BFs17i_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17ll_BFs17ll_BFs17i_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFs17ll_BFs17i_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFs17ll_BFs17i_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFs17ll_BFs17i_BFu17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17ll_BFs17ll_BFs17i_BFu17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_sll(1LL<<16), "BFs17ll_BFs17ll_BFs17i_BFu17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17ll_BFs17ll_BFs17i_BFu17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_sll(1LL<<16), "BFs17ll_BFs17ll_BFs17i_BFu17ll");
    set_bf_and_test(lv, v4, ABISELECT(8,6), ABISELECT(0,3), 17, 1, "BFs17ll_BFs17ll_BFs17i_BFu17ll");
    set_bf_and_test(lv, v4, ABISELECT(8,6), ABISELECT(0,3), 17, hide_ull(1LL<<16), "BFs17ll_BFs17ll_BFs17i_BFu17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFs17ll_BFs17i_BFu17ll, BFs17ll_BFs17ll_BFs17i_BFu17ll)
//============================================================================


struct  BFs17ll_BFs17ll_BFs17ll  {
  signed __tsi64 v1:17;
  signed __tsi64 v2:17;
  signed __tsi64 v3:17;
};
//SIG(1 BFs17ll_BFs17ll_BFs17ll) C1{ FL:17 FL:17 FL:17}



static void Test_BFs17ll_BFs17ll_BFs17ll()
{
  {
    init_simple_test("BFs17ll_BFs17ll_BFs17ll");
    static STRUCT_IF_C BFs17ll_BFs17ll_BFs17ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs17ll_BFs17ll_BFs17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFs17ll_BFs17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFs17ll_BFs17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFs17ll_BFs17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17ll_BFs17ll_BFs17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_sll(1LL<<16), "BFs17ll_BFs17ll_BFs17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17ll_BFs17ll_BFs17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_sll(1LL<<16), "BFs17ll_BFs17ll_BFs17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFs17ll_BFs17ll, BFs17ll_BFs17ll_BFs17ll)
//============================================================================


struct  BFs17ll_BFs17ll_BFs17ll_BFs17i  {
  signed __tsi64 v1:17;
  signed __tsi64 v2:17;
  signed __tsi64 v3:17;
  signed int v4:17;
};
//SIG(1 BFs17ll_BFs17ll_BFs17ll_BFs17i) C1{ FL:17 FL:17 FL:17 Fi:17}



static void Test_BFs17ll_BFs17ll_BFs17ll_BFs17i()
{
  {
    init_simple_test("BFs17ll_BFs17ll_BFs17ll_BFs17i");
    static STRUCT_IF_C BFs17ll_BFs17ll_BFs17ll_BFs17i lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17ll_BFs17ll_BFs17ll_BFs17i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFs17ll_BFs17ll_BFs17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFs17ll_BFs17ll_BFs17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFs17ll_BFs17ll_BFs17i");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17ll_BFs17ll_BFs17ll_BFs17i");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_sll(1LL<<16), "BFs17ll_BFs17ll_BFs17ll_BFs17i");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17ll_BFs17ll_BFs17ll_BFs17i");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_sll(1LL<<16), "BFs17ll_BFs17ll_BFs17ll_BFs17i");
    set_bf_and_test(lv, v4, 8, 0, 17, 1, "BFs17ll_BFs17ll_BFs17ll_BFs17i");
    set_bf_and_test(lv, v4, 8, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFs17ll_BFs17ll_BFs17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFs17ll_BFs17ll_BFs17i, BFs17ll_BFs17ll_BFs17ll_BFs17i)
//============================================================================


struct  BFs17ll_BFs17ll_BFs17ll_BFs17ll  {
  signed __tsi64 v1:17;
  signed __tsi64 v2:17;
  signed __tsi64 v3:17;
  signed __tsi64 v4:17;
};
//SIG(1 BFs17ll_BFs17ll_BFs17ll_BFs17ll) C1{ FL:17 FL:17 FL:17 FL:17}



static void Test_BFs17ll_BFs17ll_BFs17ll_BFs17ll()
{
  {
    init_simple_test("BFs17ll_BFs17ll_BFs17ll_BFs17ll");
    static STRUCT_IF_C BFs17ll_BFs17ll_BFs17ll_BFs17ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17ll_BFs17ll_BFs17ll_BFs17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFs17ll_BFs17ll_BFs17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFs17ll_BFs17ll_BFs17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFs17ll_BFs17ll_BFs17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17ll_BFs17ll_BFs17ll_BFs17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_sll(1LL<<16), "BFs17ll_BFs17ll_BFs17ll_BFs17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17ll_BFs17ll_BFs17ll_BFs17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_sll(1LL<<16), "BFs17ll_BFs17ll_BFs17ll_BFs17ll");
    set_bf_and_test(lv, v4, ABISELECT(8,6), ABISELECT(0,3), 17, 1, "BFs17ll_BFs17ll_BFs17ll_BFs17ll");
    set_bf_and_test(lv, v4, ABISELECT(8,6), ABISELECT(0,3), 17, hide_sll(1LL<<16), "BFs17ll_BFs17ll_BFs17ll_BFs17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFs17ll_BFs17ll_BFs17ll, BFs17ll_BFs17ll_BFs17ll_BFs17ll)
//============================================================================


struct  BFs17ll_BFs17ll_BFs17ll_BFu17i  {
  signed __tsi64 v1:17;
  signed __tsi64 v2:17;
  signed __tsi64 v3:17;
  unsigned int v4:17;
};
//SIG(1 BFs17ll_BFs17ll_BFs17ll_BFu17i) C1{ FL:17 FL:17 FL:17 Fi:17}



static void Test_BFs17ll_BFs17ll_BFs17ll_BFu17i()
{
  {
    init_simple_test("BFs17ll_BFs17ll_BFs17ll_BFu17i");
    static STRUCT_IF_C BFs17ll_BFs17ll_BFs17ll_BFu17i lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17ll_BFs17ll_BFs17ll_BFu17i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFs17ll_BFs17ll_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFs17ll_BFs17ll_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFs17ll_BFs17ll_BFu17i");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17ll_BFs17ll_BFs17ll_BFu17i");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_sll(1LL<<16), "BFs17ll_BFs17ll_BFs17ll_BFu17i");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17ll_BFs17ll_BFs17ll_BFu17i");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_sll(1LL<<16), "BFs17ll_BFs17ll_BFs17ll_BFu17i");
    set_bf_and_test(lv, v4, 8, 0, 17, 1, "BFs17ll_BFs17ll_BFs17ll_BFu17i");
    set_bf_and_test(lv, v4, 8, 0, 17, hide_ull(1LL<<16), "BFs17ll_BFs17ll_BFs17ll_BFu17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFs17ll_BFs17ll_BFu17i, BFs17ll_BFs17ll_BFs17ll_BFu17i)
//============================================================================


struct  BFs17ll_BFs17ll_BFs17ll_BFu17ll  {
  signed __tsi64 v1:17;
  signed __tsi64 v2:17;
  signed __tsi64 v3:17;
  __tsu64 v4:17;
};
//SIG(1 BFs17ll_BFs17ll_BFs17ll_BFu17ll) C1{ FL:17 FL:17 FL:17 FL:17}



static void Test_BFs17ll_BFs17ll_BFs17ll_BFu17ll()
{
  {
    init_simple_test("BFs17ll_BFs17ll_BFs17ll_BFu17ll");
    static STRUCT_IF_C BFs17ll_BFs17ll_BFs17ll_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17ll_BFs17ll_BFs17ll_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFs17ll_BFs17ll_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFs17ll_BFs17ll_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFs17ll_BFs17ll_BFu17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17ll_BFs17ll_BFs17ll_BFu17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_sll(1LL<<16), "BFs17ll_BFs17ll_BFs17ll_BFu17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17ll_BFs17ll_BFs17ll_BFu17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_sll(1LL<<16), "BFs17ll_BFs17ll_BFs17ll_BFu17ll");
    set_bf_and_test(lv, v4, ABISELECT(8,6), ABISELECT(0,3), 17, 1, "BFs17ll_BFs17ll_BFs17ll_BFu17ll");
    set_bf_and_test(lv, v4, ABISELECT(8,6), ABISELECT(0,3), 17, hide_ull(1LL<<16), "BFs17ll_BFs17ll_BFs17ll_BFu17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFs17ll_BFs17ll_BFu17ll, BFs17ll_BFs17ll_BFs17ll_BFu17ll)
//============================================================================


struct  BFs17ll_BFs17ll_BFu17i  {
  signed __tsi64 v1:17;
  signed __tsi64 v2:17;
  unsigned int v3:17;
};
//SIG(1 BFs17ll_BFs17ll_BFu17i) C1{ FL:17 FL:17 Fi:17}



static void Test_BFs17ll_BFs17ll_BFu17i()
{
  {
    init_simple_test("BFs17ll_BFs17ll_BFu17i");
    static STRUCT_IF_C BFs17ll_BFs17ll_BFu17i lv;
    check2(sizeof(lv), 8, "sizeof(BFs17ll_BFs17ll_BFu17i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFs17ll_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFs17ll_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFs17ll_BFu17i");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17ll_BFs17ll_BFu17i");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_sll(1LL<<16), "BFs17ll_BFs17ll_BFu17i");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17ll_BFs17ll_BFu17i");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_ull(1LL<<16), "BFs17ll_BFs17ll_BFu17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFs17ll_BFu17i, BFs17ll_BFs17ll_BFu17i)
//============================================================================


struct  BFs17ll_BFs17ll_BFu17i_BFs17i  {
  signed __tsi64 v1:17;
  signed __tsi64 v2:17;
  unsigned int v3:17;
  signed int v4:17;
};
//SIG(1 BFs17ll_BFs17ll_BFu17i_BFs17i) C1{ FL:17 FL:17 Fi:17 Fi:17}



static void Test_BFs17ll_BFs17ll_BFu17i_BFs17i()
{
  {
    init_simple_test("BFs17ll_BFs17ll_BFu17i_BFs17i");
    static STRUCT_IF_C BFs17ll_BFs17ll_BFu17i_BFs17i lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17ll_BFs17ll_BFu17i_BFs17i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFs17ll_BFu17i_BFs17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFs17ll_BFu17i_BFs17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFs17ll_BFu17i_BFs17i");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17ll_BFs17ll_BFu17i_BFs17i");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_sll(1LL<<16), "BFs17ll_BFs17ll_BFu17i_BFs17i");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17ll_BFs17ll_BFu17i_BFs17i");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_ull(1LL<<16), "BFs17ll_BFs17ll_BFu17i_BFs17i");
    set_bf_and_test(lv, v4, 8, 0, 17, 1, "BFs17ll_BFs17ll_BFu17i_BFs17i");
    set_bf_and_test(lv, v4, 8, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFs17ll_BFu17i_BFs17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFs17ll_BFu17i_BFs17i, BFs17ll_BFs17ll_BFu17i_BFs17i)
//============================================================================


struct  BFs17ll_BFs17ll_BFu17i_BFs17ll  {
  signed __tsi64 v1:17;
  signed __tsi64 v2:17;
  unsigned int v3:17;
  signed __tsi64 v4:17;
};
//SIG(1 BFs17ll_BFs17ll_BFu17i_BFs17ll) C1{ FL:17 FL:17 Fi:17 FL:17}



static void Test_BFs17ll_BFs17ll_BFu17i_BFs17ll()
{
  {
    init_simple_test("BFs17ll_BFs17ll_BFu17i_BFs17ll");
    static STRUCT_IF_C BFs17ll_BFs17ll_BFu17i_BFs17ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17ll_BFs17ll_BFu17i_BFs17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFs17ll_BFu17i_BFs17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFs17ll_BFu17i_BFs17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFs17ll_BFu17i_BFs17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17ll_BFs17ll_BFu17i_BFs17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_sll(1LL<<16), "BFs17ll_BFs17ll_BFu17i_BFs17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17ll_BFs17ll_BFu17i_BFs17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_ull(1LL<<16), "BFs17ll_BFs17ll_BFu17i_BFs17ll");
    set_bf_and_test(lv, v4, ABISELECT(8,6), ABISELECT(0,3), 17, 1, "BFs17ll_BFs17ll_BFu17i_BFs17ll");
    set_bf_and_test(lv, v4, ABISELECT(8,6), ABISELECT(0,3), 17, hide_sll(1LL<<16), "BFs17ll_BFs17ll_BFu17i_BFs17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFs17ll_BFu17i_BFs17ll, BFs17ll_BFs17ll_BFu17i_BFs17ll)
//============================================================================


struct  BFs17ll_BFs17ll_BFu17i_BFu17i  {
  signed __tsi64 v1:17;
  signed __tsi64 v2:17;
  unsigned int v3:17;
  unsigned int v4:17;
};
//SIG(1 BFs17ll_BFs17ll_BFu17i_BFu17i) C1{ FL:17 FL:17 Fi:17 Fi:17}



static void Test_BFs17ll_BFs17ll_BFu17i_BFu17i()
{
  {
    init_simple_test("BFs17ll_BFs17ll_BFu17i_BFu17i");
    static STRUCT_IF_C BFs17ll_BFs17ll_BFu17i_BFu17i lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17ll_BFs17ll_BFu17i_BFu17i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFs17ll_BFu17i_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFs17ll_BFu17i_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFs17ll_BFu17i_BFu17i");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17ll_BFs17ll_BFu17i_BFu17i");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_sll(1LL<<16), "BFs17ll_BFs17ll_BFu17i_BFu17i");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17ll_BFs17ll_BFu17i_BFu17i");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_ull(1LL<<16), "BFs17ll_BFs17ll_BFu17i_BFu17i");
    set_bf_and_test(lv, v4, 8, 0, 17, 1, "BFs17ll_BFs17ll_BFu17i_BFu17i");
    set_bf_and_test(lv, v4, 8, 0, 17, hide_ull(1LL<<16), "BFs17ll_BFs17ll_BFu17i_BFu17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFs17ll_BFu17i_BFu17i, BFs17ll_BFs17ll_BFu17i_BFu17i)
//============================================================================


struct  BFs17ll_BFs17ll_BFu17i_BFu17ll  {
  signed __tsi64 v1:17;
  signed __tsi64 v2:17;
  unsigned int v3:17;
  __tsu64 v4:17;
};
//SIG(1 BFs17ll_BFs17ll_BFu17i_BFu17ll) C1{ FL:17 FL:17 Fi:17 FL:17}



static void Test_BFs17ll_BFs17ll_BFu17i_BFu17ll()
{
  {
    init_simple_test("BFs17ll_BFs17ll_BFu17i_BFu17ll");
    static STRUCT_IF_C BFs17ll_BFs17ll_BFu17i_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17ll_BFs17ll_BFu17i_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFs17ll_BFu17i_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFs17ll_BFu17i_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFs17ll_BFu17i_BFu17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17ll_BFs17ll_BFu17i_BFu17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_sll(1LL<<16), "BFs17ll_BFs17ll_BFu17i_BFu17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17ll_BFs17ll_BFu17i_BFu17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_ull(1LL<<16), "BFs17ll_BFs17ll_BFu17i_BFu17ll");
    set_bf_and_test(lv, v4, ABISELECT(8,6), ABISELECT(0,3), 17, 1, "BFs17ll_BFs17ll_BFu17i_BFu17ll");
    set_bf_and_test(lv, v4, ABISELECT(8,6), ABISELECT(0,3), 17, hide_ull(1LL<<16), "BFs17ll_BFs17ll_BFu17i_BFu17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFs17ll_BFu17i_BFu17ll, BFs17ll_BFs17ll_BFu17i_BFu17ll)
//============================================================================


struct  BFs17ll_BFs17ll_BFu17ll  {
  signed __tsi64 v1:17;
  signed __tsi64 v2:17;
  __tsu64 v3:17;
};
//SIG(1 BFs17ll_BFs17ll_BFu17ll) C1{ FL:17 FL:17 FL:17}



static void Test_BFs17ll_BFs17ll_BFu17ll()
{
  {
    init_simple_test("BFs17ll_BFs17ll_BFu17ll");
    static STRUCT_IF_C BFs17ll_BFs17ll_BFu17ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs17ll_BFs17ll_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFs17ll_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFs17ll_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFs17ll_BFu17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17ll_BFs17ll_BFu17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_sll(1LL<<16), "BFs17ll_BFs17ll_BFu17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17ll_BFs17ll_BFu17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_ull(1LL<<16), "BFs17ll_BFs17ll_BFu17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFs17ll_BFu17ll, BFs17ll_BFs17ll_BFu17ll)
//============================================================================


struct  BFs17ll_BFs17ll_BFu17ll_BFs17i  {
  signed __tsi64 v1:17;
  signed __tsi64 v2:17;
  __tsu64 v3:17;
  signed int v4:17;
};
//SIG(1 BFs17ll_BFs17ll_BFu17ll_BFs17i) C1{ FL:17 FL:17 FL:17 Fi:17}



static void Test_BFs17ll_BFs17ll_BFu17ll_BFs17i()
{
  {
    init_simple_test("BFs17ll_BFs17ll_BFu17ll_BFs17i");
    static STRUCT_IF_C BFs17ll_BFs17ll_BFu17ll_BFs17i lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17ll_BFs17ll_BFu17ll_BFs17i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFs17ll_BFu17ll_BFs17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFs17ll_BFu17ll_BFs17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFs17ll_BFu17ll_BFs17i");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17ll_BFs17ll_BFu17ll_BFs17i");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_sll(1LL<<16), "BFs17ll_BFs17ll_BFu17ll_BFs17i");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17ll_BFs17ll_BFu17ll_BFs17i");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_ull(1LL<<16), "BFs17ll_BFs17ll_BFu17ll_BFs17i");
    set_bf_and_test(lv, v4, 8, 0, 17, 1, "BFs17ll_BFs17ll_BFu17ll_BFs17i");
    set_bf_and_test(lv, v4, 8, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFs17ll_BFu17ll_BFs17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFs17ll_BFu17ll_BFs17i, BFs17ll_BFs17ll_BFu17ll_BFs17i)
//============================================================================


struct  BFs17ll_BFs17ll_BFu17ll_BFs17ll  {
  signed __tsi64 v1:17;
  signed __tsi64 v2:17;
  __tsu64 v3:17;
  signed __tsi64 v4:17;
};
//SIG(1 BFs17ll_BFs17ll_BFu17ll_BFs17ll) C1{ FL:17 FL:17 FL:17 FL:17}



static void Test_BFs17ll_BFs17ll_BFu17ll_BFs17ll()
{
  {
    init_simple_test("BFs17ll_BFs17ll_BFu17ll_BFs17ll");
    static STRUCT_IF_C BFs17ll_BFs17ll_BFu17ll_BFs17ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17ll_BFs17ll_BFu17ll_BFs17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFs17ll_BFu17ll_BFs17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFs17ll_BFu17ll_BFs17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFs17ll_BFu17ll_BFs17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17ll_BFs17ll_BFu17ll_BFs17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_sll(1LL<<16), "BFs17ll_BFs17ll_BFu17ll_BFs17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17ll_BFs17ll_BFu17ll_BFs17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_ull(1LL<<16), "BFs17ll_BFs17ll_BFu17ll_BFs17ll");
    set_bf_and_test(lv, v4, ABISELECT(8,6), ABISELECT(0,3), 17, 1, "BFs17ll_BFs17ll_BFu17ll_BFs17ll");
    set_bf_and_test(lv, v4, ABISELECT(8,6), ABISELECT(0,3), 17, hide_sll(1LL<<16), "BFs17ll_BFs17ll_BFu17ll_BFs17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFs17ll_BFu17ll_BFs17ll, BFs17ll_BFs17ll_BFu17ll_BFs17ll)
//============================================================================


struct  BFs17ll_BFs17ll_BFu17ll_BFu17i  {
  signed __tsi64 v1:17;
  signed __tsi64 v2:17;
  __tsu64 v3:17;
  unsigned int v4:17;
};
//SIG(1 BFs17ll_BFs17ll_BFu17ll_BFu17i) C1{ FL:17 FL:17 FL:17 Fi:17}



static void Test_BFs17ll_BFs17ll_BFu17ll_BFu17i()
{
  {
    init_simple_test("BFs17ll_BFs17ll_BFu17ll_BFu17i");
    static STRUCT_IF_C BFs17ll_BFs17ll_BFu17ll_BFu17i lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17ll_BFs17ll_BFu17ll_BFu17i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFs17ll_BFu17ll_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFs17ll_BFu17ll_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFs17ll_BFu17ll_BFu17i");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17ll_BFs17ll_BFu17ll_BFu17i");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_sll(1LL<<16), "BFs17ll_BFs17ll_BFu17ll_BFu17i");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17ll_BFs17ll_BFu17ll_BFu17i");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_ull(1LL<<16), "BFs17ll_BFs17ll_BFu17ll_BFu17i");
    set_bf_and_test(lv, v4, 8, 0, 17, 1, "BFs17ll_BFs17ll_BFu17ll_BFu17i");
    set_bf_and_test(lv, v4, 8, 0, 17, hide_ull(1LL<<16), "BFs17ll_BFs17ll_BFu17ll_BFu17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFs17ll_BFu17ll_BFu17i, BFs17ll_BFs17ll_BFu17ll_BFu17i)
//============================================================================


struct  BFs17ll_BFs17ll_BFu17ll_BFu17ll  {
  signed __tsi64 v1:17;
  signed __tsi64 v2:17;
  __tsu64 v3:17;
  __tsu64 v4:17;
};
//SIG(1 BFs17ll_BFs17ll_BFu17ll_BFu17ll) C1{ FL:17 FL:17 FL:17 FL:17}



static void Test_BFs17ll_BFs17ll_BFu17ll_BFu17ll()
{
  {
    init_simple_test("BFs17ll_BFs17ll_BFu17ll_BFu17ll");
    static STRUCT_IF_C BFs17ll_BFs17ll_BFu17ll_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17ll_BFs17ll_BFu17ll_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFs17ll_BFu17ll_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFs17ll_BFu17ll_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFs17ll_BFu17ll_BFu17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17ll_BFs17ll_BFu17ll_BFu17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_sll(1LL<<16), "BFs17ll_BFs17ll_BFu17ll_BFu17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17ll_BFs17ll_BFu17ll_BFu17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_ull(1LL<<16), "BFs17ll_BFs17ll_BFu17ll_BFu17ll");
    set_bf_and_test(lv, v4, ABISELECT(8,6), ABISELECT(0,3), 17, 1, "BFs17ll_BFs17ll_BFu17ll_BFu17ll");
    set_bf_and_test(lv, v4, ABISELECT(8,6), ABISELECT(0,3), 17, hide_ull(1LL<<16), "BFs17ll_BFs17ll_BFu17ll_BFu17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFs17ll_BFu17ll_BFu17ll, BFs17ll_BFs17ll_BFu17ll_BFu17ll)
//============================================================================


struct  BFs17ll_BFu17i  {
  signed __tsi64 v1:17;
  unsigned int v2:17;
};
//SIG(1 BFs17ll_BFu17i) C1{ FL:17 Fi:17}



static void Test_BFs17ll_BFu17i()
{
  {
    init_simple_test("BFs17ll_BFu17i");
    static STRUCT_IF_C BFs17ll_BFu17i lv;
    check2(sizeof(lv), 8, "sizeof(BFs17ll_BFu17i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFu17i");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17ll_BFu17i");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "BFs17ll_BFu17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFu17i, BFs17ll_BFu17i)
//============================================================================


struct  BFs17ll_BFu17i_BFs17i  {
  signed __tsi64 v1:17;
  unsigned int v2:17;
  signed int v3:17;
};
//SIG(1 BFs17ll_BFu17i_BFs17i) C1{ FL:17 Fi:17 Fi:17}



static void Test_BFs17ll_BFu17i_BFs17i()
{
  {
    init_simple_test("BFs17ll_BFu17i_BFs17i");
    static STRUCT_IF_C BFs17ll_BFu17i_BFs17i lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17ll_BFu17i_BFs17i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFu17i_BFs17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFu17i_BFs17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFu17i_BFs17i");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17ll_BFu17i_BFs17i");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "BFs17ll_BFu17i_BFs17i");
    set_bf_and_test(lv, v3, 8, 0, 17, 1, "BFs17ll_BFu17i_BFs17i");
    set_bf_and_test(lv, v3, 8, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFu17i_BFs17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFu17i_BFs17i, BFs17ll_BFu17i_BFs17i)
//============================================================================


struct  BFs17ll_BFu17i_BFs17i_BFs17i  {
  signed __tsi64 v1:17;
  unsigned int v2:17;
  signed int v3:17;
  signed int v4:17;
};
//SIG(1 BFs17ll_BFu17i_BFs17i_BFs17i) C1{ FL:17 Fi:17 Fi:17 Fi:17}



static void Test_BFs17ll_BFu17i_BFs17i_BFs17i()
{
  {
    init_simple_test("BFs17ll_BFu17i_BFs17i_BFs17i");
    static STRUCT_IF_C BFs17ll_BFu17i_BFs17i_BFs17i lv;
    check2(sizeof(lv), 16, "sizeof(BFs17ll_BFu17i_BFs17i_BFs17i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFu17i_BFs17i_BFs17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFu17i_BFs17i_BFs17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFu17i_BFs17i_BFs17i");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17ll_BFu17i_BFs17i_BFs17i");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "BFs17ll_BFu17i_BFs17i_BFs17i");
    set_bf_and_test(lv, v3, 8, 0, 17, 1, "BFs17ll_BFu17i_BFs17i_BFs17i");
    set_bf_and_test(lv, v3, 8, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFu17i_BFs17i_BFs17i");
    set_bf_and_test(lv, v4, 12, 0, 17, 1, "BFs17ll_BFu17i_BFs17i_BFs17i");
    set_bf_and_test(lv, v4, 12, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFu17i_BFs17i_BFs17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFu17i_BFs17i_BFs17i, BFs17ll_BFu17i_BFs17i_BFs17i)
//============================================================================


struct  BFs17ll_BFu17i_BFs17i_BFs17ll  {
  signed __tsi64 v1:17;
  unsigned int v2:17;
  signed int v3:17;
  signed __tsi64 v4:17;
};
//SIG(1 BFs17ll_BFu17i_BFs17i_BFs17ll) C1{ FL:17 Fi:17 Fi:17 FL:17}



static void Test_BFs17ll_BFu17i_BFs17i_BFs17ll()
{
  {
    init_simple_test("BFs17ll_BFu17i_BFs17i_BFs17ll");
    static STRUCT_IF_C BFs17ll_BFu17i_BFs17i_BFs17ll lv;
    check2(sizeof(lv), 16, "sizeof(BFs17ll_BFu17i_BFs17i_BFs17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFu17i_BFs17i_BFs17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFu17i_BFs17i_BFs17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFu17i_BFs17i_BFs17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17ll_BFu17i_BFs17i_BFs17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "BFs17ll_BFu17i_BFs17i_BFs17ll");
    set_bf_and_test(lv, v3, 8, 0, 17, 1, "BFs17ll_BFu17i_BFs17i_BFs17ll");
    set_bf_and_test(lv, v3, 8, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFu17i_BFs17i_BFs17ll");
    set_bf_and_test(lv, v4, 10, 1, 17, 1, "BFs17ll_BFu17i_BFs17i_BFs17ll");
    set_bf_and_test(lv, v4, 10, 1, 17, hide_sll(1LL<<16), "BFs17ll_BFu17i_BFs17i_BFs17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFu17i_BFs17i_BFs17ll, BFs17ll_BFu17i_BFs17i_BFs17ll)
//============================================================================


struct  BFs17ll_BFu17i_BFs17i_BFu17i  {
  signed __tsi64 v1:17;
  unsigned int v2:17;
  signed int v3:17;
  unsigned int v4:17;
};
//SIG(1 BFs17ll_BFu17i_BFs17i_BFu17i) C1{ FL:17 Fi:17 Fi:17 Fi:17}



static void Test_BFs17ll_BFu17i_BFs17i_BFu17i()
{
  {
    init_simple_test("BFs17ll_BFu17i_BFs17i_BFu17i");
    static STRUCT_IF_C BFs17ll_BFu17i_BFs17i_BFu17i lv;
    check2(sizeof(lv), 16, "sizeof(BFs17ll_BFu17i_BFs17i_BFu17i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFu17i_BFs17i_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFu17i_BFs17i_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFu17i_BFs17i_BFu17i");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17ll_BFu17i_BFs17i_BFu17i");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "BFs17ll_BFu17i_BFs17i_BFu17i");
    set_bf_and_test(lv, v3, 8, 0, 17, 1, "BFs17ll_BFu17i_BFs17i_BFu17i");
    set_bf_and_test(lv, v3, 8, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFu17i_BFs17i_BFu17i");
    set_bf_and_test(lv, v4, 12, 0, 17, 1, "BFs17ll_BFu17i_BFs17i_BFu17i");
    set_bf_and_test(lv, v4, 12, 0, 17, hide_ull(1LL<<16), "BFs17ll_BFu17i_BFs17i_BFu17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFu17i_BFs17i_BFu17i, BFs17ll_BFu17i_BFs17i_BFu17i)
//============================================================================


struct  BFs17ll_BFu17i_BFs17i_BFu17ll  {
  signed __tsi64 v1:17;
  unsigned int v2:17;
  signed int v3:17;
  __tsu64 v4:17;
};
//SIG(1 BFs17ll_BFu17i_BFs17i_BFu17ll) C1{ FL:17 Fi:17 Fi:17 FL:17}



static void Test_BFs17ll_BFu17i_BFs17i_BFu17ll()
{
  {
    init_simple_test("BFs17ll_BFu17i_BFs17i_BFu17ll");
    static STRUCT_IF_C BFs17ll_BFu17i_BFs17i_BFu17ll lv;
    check2(sizeof(lv), 16, "sizeof(BFs17ll_BFu17i_BFs17i_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFu17i_BFs17i_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFu17i_BFs17i_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFu17i_BFs17i_BFu17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17ll_BFu17i_BFs17i_BFu17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "BFs17ll_BFu17i_BFs17i_BFu17ll");
    set_bf_and_test(lv, v3, 8, 0, 17, 1, "BFs17ll_BFu17i_BFs17i_BFu17ll");
    set_bf_and_test(lv, v3, 8, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFu17i_BFs17i_BFu17ll");
    set_bf_and_test(lv, v4, 10, 1, 17, 1, "BFs17ll_BFu17i_BFs17i_BFu17ll");
    set_bf_and_test(lv, v4, 10, 1, 17, hide_ull(1LL<<16), "BFs17ll_BFu17i_BFs17i_BFu17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFu17i_BFs17i_BFu17ll, BFs17ll_BFu17i_BFs17i_BFu17ll)
//============================================================================


struct  BFs17ll_BFu17i_BFs17ll  {
  signed __tsi64 v1:17;
  unsigned int v2:17;
  signed __tsi64 v3:17;
};
//SIG(1 BFs17ll_BFu17i_BFs17ll) C1{ FL:17 Fi:17 FL:17}



static void Test_BFs17ll_BFu17i_BFs17ll()
{
  {
    init_simple_test("BFs17ll_BFu17i_BFs17ll");
    static STRUCT_IF_C BFs17ll_BFu17i_BFs17ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17ll_BFu17i_BFs17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFu17i_BFs17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFu17i_BFs17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFu17i_BFs17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17ll_BFu17i_BFs17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "BFs17ll_BFu17i_BFs17ll");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, 1, "BFs17ll_BFu17i_BFs17ll");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, hide_sll(1LL<<16), "BFs17ll_BFu17i_BFs17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFu17i_BFs17ll, BFs17ll_BFu17i_BFs17ll)
//============================================================================


struct  BFs17ll_BFu17i_BFs17ll_BFs17i  {
  signed __tsi64 v1:17;
  unsigned int v2:17;
  signed __tsi64 v3:17;
  signed int v4:17;
};
//SIG(1 BFs17ll_BFu17i_BFs17ll_BFs17i) C1{ FL:17 Fi:17 FL:17 Fi:17}



static void Test_BFs17ll_BFu17i_BFs17ll_BFs17i()
{
  {
    init_simple_test("BFs17ll_BFu17i_BFs17ll_BFs17i");
    static STRUCT_IF_C BFs17ll_BFu17i_BFs17ll_BFs17i lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17ll_BFu17i_BFs17ll_BFs17i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFu17i_BFs17ll_BFs17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFu17i_BFs17ll_BFs17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFu17i_BFs17ll_BFs17i");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17ll_BFu17i_BFs17ll_BFs17i");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "BFs17ll_BFu17i_BFs17ll_BFs17i");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, 1, "BFs17ll_BFu17i_BFs17ll_BFs17i");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, hide_sll(1LL<<16), "BFs17ll_BFu17i_BFs17ll_BFs17i");
    set_bf_and_test(lv, v4, ABISELECT(12,8), ABISELECT(0,2), 17, 1, "BFs17ll_BFu17i_BFs17ll_BFs17i");
    set_bf_and_test(lv, v4, ABISELECT(12,8), ABISELECT(0,2), 17, hide_sll(1LL<<16), "BFs17ll_BFu17i_BFs17ll_BFs17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFu17i_BFs17ll_BFs17i, BFs17ll_BFu17i_BFs17ll_BFs17i)
//============================================================================


struct  BFs17ll_BFu17i_BFs17ll_BFs17ll  {
  signed __tsi64 v1:17;
  unsigned int v2:17;
  signed __tsi64 v3:17;
  signed __tsi64 v4:17;
};
//SIG(1 BFs17ll_BFu17i_BFs17ll_BFs17ll) C1{ FL:17 Fi:17 FL:17 FL:17}



static void Test_BFs17ll_BFu17i_BFs17ll_BFs17ll()
{
  {
    init_simple_test("BFs17ll_BFu17i_BFs17ll_BFs17ll");
    static STRUCT_IF_C BFs17ll_BFu17i_BFs17ll_BFs17ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17ll_BFu17i_BFs17ll_BFs17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFu17i_BFs17ll_BFs17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFu17i_BFs17ll_BFs17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFu17i_BFs17ll_BFs17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17ll_BFu17i_BFs17ll_BFs17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "BFs17ll_BFu17i_BFs17ll_BFs17ll");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, 1, "BFs17ll_BFu17i_BFs17ll_BFs17ll");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, hide_sll(1LL<<16), "BFs17ll_BFu17i_BFs17ll_BFs17ll");
    set_bf_and_test(lv, v4, ABISELECT(10,8), ABISELECT(1,2), 17, 1, "BFs17ll_BFu17i_BFs17ll_BFs17ll");
    set_bf_and_test(lv, v4, ABISELECT(10,8), ABISELECT(1,2), 17, hide_sll(1LL<<16), "BFs17ll_BFu17i_BFs17ll_BFs17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFu17i_BFs17ll_BFs17ll, BFs17ll_BFu17i_BFs17ll_BFs17ll)
//============================================================================


struct  BFs17ll_BFu17i_BFs17ll_BFu17i  {
  signed __tsi64 v1:17;
  unsigned int v2:17;
  signed __tsi64 v3:17;
  unsigned int v4:17;
};
//SIG(1 BFs17ll_BFu17i_BFs17ll_BFu17i) C1{ FL:17 Fi:17 FL:17 Fi:17}



static void Test_BFs17ll_BFu17i_BFs17ll_BFu17i()
{
  {
    init_simple_test("BFs17ll_BFu17i_BFs17ll_BFu17i");
    static STRUCT_IF_C BFs17ll_BFu17i_BFs17ll_BFu17i lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17ll_BFu17i_BFs17ll_BFu17i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFu17i_BFs17ll_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFu17i_BFs17ll_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFu17i_BFs17ll_BFu17i");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17ll_BFu17i_BFs17ll_BFu17i");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "BFs17ll_BFu17i_BFs17ll_BFu17i");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, 1, "BFs17ll_BFu17i_BFs17ll_BFu17i");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, hide_sll(1LL<<16), "BFs17ll_BFu17i_BFs17ll_BFu17i");
    set_bf_and_test(lv, v4, ABISELECT(12,8), ABISELECT(0,2), 17, 1, "BFs17ll_BFu17i_BFs17ll_BFu17i");
    set_bf_and_test(lv, v4, ABISELECT(12,8), ABISELECT(0,2), 17, hide_ull(1LL<<16), "BFs17ll_BFu17i_BFs17ll_BFu17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFu17i_BFs17ll_BFu17i, BFs17ll_BFu17i_BFs17ll_BFu17i)
//============================================================================


struct  BFs17ll_BFu17i_BFs17ll_BFu17ll  {
  signed __tsi64 v1:17;
  unsigned int v2:17;
  signed __tsi64 v3:17;
  __tsu64 v4:17;
};
//SIG(1 BFs17ll_BFu17i_BFs17ll_BFu17ll) C1{ FL:17 Fi:17 FL:17 FL:17}



static void Test_BFs17ll_BFu17i_BFs17ll_BFu17ll()
{
  {
    init_simple_test("BFs17ll_BFu17i_BFs17ll_BFu17ll");
    static STRUCT_IF_C BFs17ll_BFu17i_BFs17ll_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17ll_BFu17i_BFs17ll_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFu17i_BFs17ll_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFu17i_BFs17ll_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFu17i_BFs17ll_BFu17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17ll_BFu17i_BFs17ll_BFu17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "BFs17ll_BFu17i_BFs17ll_BFu17ll");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, 1, "BFs17ll_BFu17i_BFs17ll_BFu17ll");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, hide_sll(1LL<<16), "BFs17ll_BFu17i_BFs17ll_BFu17ll");
    set_bf_and_test(lv, v4, ABISELECT(10,8), ABISELECT(1,2), 17, 1, "BFs17ll_BFu17i_BFs17ll_BFu17ll");
    set_bf_and_test(lv, v4, ABISELECT(10,8), ABISELECT(1,2), 17, hide_ull(1LL<<16), "BFs17ll_BFu17i_BFs17ll_BFu17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFu17i_BFs17ll_BFu17ll, BFs17ll_BFu17i_BFs17ll_BFu17ll)
//============================================================================


struct  BFs17ll_BFu17i_BFu17i  {
  signed __tsi64 v1:17;
  unsigned int v2:17;
  unsigned int v3:17;
};
//SIG(1 BFs17ll_BFu17i_BFu17i) C1{ FL:17 Fi:17 Fi:17}



static void Test_BFs17ll_BFu17i_BFu17i()
{
  {
    init_simple_test("BFs17ll_BFu17i_BFu17i");
    static STRUCT_IF_C BFs17ll_BFu17i_BFu17i lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17ll_BFu17i_BFu17i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFu17i_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFu17i_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFu17i_BFu17i");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17ll_BFu17i_BFu17i");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "BFs17ll_BFu17i_BFu17i");
    set_bf_and_test(lv, v3, 8, 0, 17, 1, "BFs17ll_BFu17i_BFu17i");
    set_bf_and_test(lv, v3, 8, 0, 17, hide_ull(1LL<<16), "BFs17ll_BFu17i_BFu17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFu17i_BFu17i, BFs17ll_BFu17i_BFu17i)
//============================================================================


struct  BFs17ll_BFu17i_BFu17i_BFs17i  {
  signed __tsi64 v1:17;
  unsigned int v2:17;
  unsigned int v3:17;
  signed int v4:17;
};
//SIG(1 BFs17ll_BFu17i_BFu17i_BFs17i) C1{ FL:17 Fi:17 Fi:17 Fi:17}



static void Test_BFs17ll_BFu17i_BFu17i_BFs17i()
{
  {
    init_simple_test("BFs17ll_BFu17i_BFu17i_BFs17i");
    static STRUCT_IF_C BFs17ll_BFu17i_BFu17i_BFs17i lv;
    check2(sizeof(lv), 16, "sizeof(BFs17ll_BFu17i_BFu17i_BFs17i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFu17i_BFu17i_BFs17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFu17i_BFu17i_BFs17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFu17i_BFu17i_BFs17i");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17ll_BFu17i_BFu17i_BFs17i");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "BFs17ll_BFu17i_BFu17i_BFs17i");
    set_bf_and_test(lv, v3, 8, 0, 17, 1, "BFs17ll_BFu17i_BFu17i_BFs17i");
    set_bf_and_test(lv, v3, 8, 0, 17, hide_ull(1LL<<16), "BFs17ll_BFu17i_BFu17i_BFs17i");
    set_bf_and_test(lv, v4, 12, 0, 17, 1, "BFs17ll_BFu17i_BFu17i_BFs17i");
    set_bf_and_test(lv, v4, 12, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFu17i_BFu17i_BFs17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFu17i_BFu17i_BFs17i, BFs17ll_BFu17i_BFu17i_BFs17i)
//============================================================================


struct  BFs17ll_BFu17i_BFu17i_BFs17ll  {
  signed __tsi64 v1:17;
  unsigned int v2:17;
  unsigned int v3:17;
  signed __tsi64 v4:17;
};
//SIG(1 BFs17ll_BFu17i_BFu17i_BFs17ll) C1{ FL:17 Fi:17 Fi:17 FL:17}



static void Test_BFs17ll_BFu17i_BFu17i_BFs17ll()
{
  {
    init_simple_test("BFs17ll_BFu17i_BFu17i_BFs17ll");
    static STRUCT_IF_C BFs17ll_BFu17i_BFu17i_BFs17ll lv;
    check2(sizeof(lv), 16, "sizeof(BFs17ll_BFu17i_BFu17i_BFs17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFu17i_BFu17i_BFs17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFu17i_BFu17i_BFs17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFu17i_BFu17i_BFs17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17ll_BFu17i_BFu17i_BFs17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "BFs17ll_BFu17i_BFu17i_BFs17ll");
    set_bf_and_test(lv, v3, 8, 0, 17, 1, "BFs17ll_BFu17i_BFu17i_BFs17ll");
    set_bf_and_test(lv, v3, 8, 0, 17, hide_ull(1LL<<16), "BFs17ll_BFu17i_BFu17i_BFs17ll");
    set_bf_and_test(lv, v4, 10, 1, 17, 1, "BFs17ll_BFu17i_BFu17i_BFs17ll");
    set_bf_and_test(lv, v4, 10, 1, 17, hide_sll(1LL<<16), "BFs17ll_BFu17i_BFu17i_BFs17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFu17i_BFu17i_BFs17ll, BFs17ll_BFu17i_BFu17i_BFs17ll)
//============================================================================


struct  BFs17ll_BFu17i_BFu17i_BFu17i  {
  signed __tsi64 v1:17;
  unsigned int v2:17;
  unsigned int v3:17;
  unsigned int v4:17;
};
//SIG(1 BFs17ll_BFu17i_BFu17i_BFu17i) C1{ FL:17 Fi:17 Fi:17 Fi:17}



static void Test_BFs17ll_BFu17i_BFu17i_BFu17i()
{
  {
    init_simple_test("BFs17ll_BFu17i_BFu17i_BFu17i");
    static STRUCT_IF_C BFs17ll_BFu17i_BFu17i_BFu17i lv;
    check2(sizeof(lv), 16, "sizeof(BFs17ll_BFu17i_BFu17i_BFu17i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFu17i_BFu17i_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFu17i_BFu17i_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFu17i_BFu17i_BFu17i");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17ll_BFu17i_BFu17i_BFu17i");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "BFs17ll_BFu17i_BFu17i_BFu17i");
    set_bf_and_test(lv, v3, 8, 0, 17, 1, "BFs17ll_BFu17i_BFu17i_BFu17i");
    set_bf_and_test(lv, v3, 8, 0, 17, hide_ull(1LL<<16), "BFs17ll_BFu17i_BFu17i_BFu17i");
    set_bf_and_test(lv, v4, 12, 0, 17, 1, "BFs17ll_BFu17i_BFu17i_BFu17i");
    set_bf_and_test(lv, v4, 12, 0, 17, hide_ull(1LL<<16), "BFs17ll_BFu17i_BFu17i_BFu17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFu17i_BFu17i_BFu17i, BFs17ll_BFu17i_BFu17i_BFu17i)
//============================================================================


struct  BFs17ll_BFu17i_BFu17i_BFu17ll  {
  signed __tsi64 v1:17;
  unsigned int v2:17;
  unsigned int v3:17;
  __tsu64 v4:17;
};
//SIG(1 BFs17ll_BFu17i_BFu17i_BFu17ll) C1{ FL:17 Fi:17 Fi:17 FL:17}



static void Test_BFs17ll_BFu17i_BFu17i_BFu17ll()
{
  {
    init_simple_test("BFs17ll_BFu17i_BFu17i_BFu17ll");
    static STRUCT_IF_C BFs17ll_BFu17i_BFu17i_BFu17ll lv;
    check2(sizeof(lv), 16, "sizeof(BFs17ll_BFu17i_BFu17i_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFu17i_BFu17i_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFu17i_BFu17i_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFu17i_BFu17i_BFu17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17ll_BFu17i_BFu17i_BFu17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "BFs17ll_BFu17i_BFu17i_BFu17ll");
    set_bf_and_test(lv, v3, 8, 0, 17, 1, "BFs17ll_BFu17i_BFu17i_BFu17ll");
    set_bf_and_test(lv, v3, 8, 0, 17, hide_ull(1LL<<16), "BFs17ll_BFu17i_BFu17i_BFu17ll");
    set_bf_and_test(lv, v4, 10, 1, 17, 1, "BFs17ll_BFu17i_BFu17i_BFu17ll");
    set_bf_and_test(lv, v4, 10, 1, 17, hide_ull(1LL<<16), "BFs17ll_BFu17i_BFu17i_BFu17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFu17i_BFu17i_BFu17ll, BFs17ll_BFu17i_BFu17i_BFu17ll)
//============================================================================


struct  BFs17ll_BFu17i_BFu17ll  {
  signed __tsi64 v1:17;
  unsigned int v2:17;
  __tsu64 v3:17;
};
//SIG(1 BFs17ll_BFu17i_BFu17ll) C1{ FL:17 Fi:17 FL:17}



static void Test_BFs17ll_BFu17i_BFu17ll()
{
  {
    init_simple_test("BFs17ll_BFu17i_BFu17ll");
    static STRUCT_IF_C BFs17ll_BFu17i_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17ll_BFu17i_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFu17i_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFu17i_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFu17i_BFu17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17ll_BFu17i_BFu17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "BFs17ll_BFu17i_BFu17ll");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, 1, "BFs17ll_BFu17i_BFu17ll");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, hide_ull(1LL<<16), "BFs17ll_BFu17i_BFu17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFu17i_BFu17ll, BFs17ll_BFu17i_BFu17ll)
//============================================================================


struct  BFs17ll_BFu17i_BFu17ll_BFs17i  {
  signed __tsi64 v1:17;
  unsigned int v2:17;
  __tsu64 v3:17;
  signed int v4:17;
};
//SIG(1 BFs17ll_BFu17i_BFu17ll_BFs17i) C1{ FL:17 Fi:17 FL:17 Fi:17}



static void Test_BFs17ll_BFu17i_BFu17ll_BFs17i()
{
  {
    init_simple_test("BFs17ll_BFu17i_BFu17ll_BFs17i");
    static STRUCT_IF_C BFs17ll_BFu17i_BFu17ll_BFs17i lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17ll_BFu17i_BFu17ll_BFs17i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFu17i_BFu17ll_BFs17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFu17i_BFu17ll_BFs17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFu17i_BFu17ll_BFs17i");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17ll_BFu17i_BFu17ll_BFs17i");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "BFs17ll_BFu17i_BFu17ll_BFs17i");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, 1, "BFs17ll_BFu17i_BFu17ll_BFs17i");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, hide_ull(1LL<<16), "BFs17ll_BFu17i_BFu17ll_BFs17i");
    set_bf_and_test(lv, v4, ABISELECT(12,8), ABISELECT(0,2), 17, 1, "BFs17ll_BFu17i_BFu17ll_BFs17i");
    set_bf_and_test(lv, v4, ABISELECT(12,8), ABISELECT(0,2), 17, hide_sll(1LL<<16), "BFs17ll_BFu17i_BFu17ll_BFs17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFu17i_BFu17ll_BFs17i, BFs17ll_BFu17i_BFu17ll_BFs17i)
//============================================================================


struct  BFs17ll_BFu17i_BFu17ll_BFs17ll  {
  signed __tsi64 v1:17;
  unsigned int v2:17;
  __tsu64 v3:17;
  signed __tsi64 v4:17;
};
//SIG(1 BFs17ll_BFu17i_BFu17ll_BFs17ll) C1{ FL:17 Fi:17 FL:17 FL:17}



static void Test_BFs17ll_BFu17i_BFu17ll_BFs17ll()
{
  {
    init_simple_test("BFs17ll_BFu17i_BFu17ll_BFs17ll");
    static STRUCT_IF_C BFs17ll_BFu17i_BFu17ll_BFs17ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17ll_BFu17i_BFu17ll_BFs17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFu17i_BFu17ll_BFs17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFu17i_BFu17ll_BFs17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFu17i_BFu17ll_BFs17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17ll_BFu17i_BFu17ll_BFs17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "BFs17ll_BFu17i_BFu17ll_BFs17ll");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, 1, "BFs17ll_BFu17i_BFu17ll_BFs17ll");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, hide_ull(1LL<<16), "BFs17ll_BFu17i_BFu17ll_BFs17ll");
    set_bf_and_test(lv, v4, ABISELECT(10,8), ABISELECT(1,2), 17, 1, "BFs17ll_BFu17i_BFu17ll_BFs17ll");
    set_bf_and_test(lv, v4, ABISELECT(10,8), ABISELECT(1,2), 17, hide_sll(1LL<<16), "BFs17ll_BFu17i_BFu17ll_BFs17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFu17i_BFu17ll_BFs17ll, BFs17ll_BFu17i_BFu17ll_BFs17ll)
//============================================================================


struct  BFs17ll_BFu17i_BFu17ll_BFu17i  {
  signed __tsi64 v1:17;
  unsigned int v2:17;
  __tsu64 v3:17;
  unsigned int v4:17;
};
//SIG(1 BFs17ll_BFu17i_BFu17ll_BFu17i) C1{ FL:17 Fi:17 FL:17 Fi:17}



static void Test_BFs17ll_BFu17i_BFu17ll_BFu17i()
{
  {
    init_simple_test("BFs17ll_BFu17i_BFu17ll_BFu17i");
    static STRUCT_IF_C BFs17ll_BFu17i_BFu17ll_BFu17i lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17ll_BFu17i_BFu17ll_BFu17i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFu17i_BFu17ll_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFu17i_BFu17ll_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFu17i_BFu17ll_BFu17i");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17ll_BFu17i_BFu17ll_BFu17i");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "BFs17ll_BFu17i_BFu17ll_BFu17i");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, 1, "BFs17ll_BFu17i_BFu17ll_BFu17i");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, hide_ull(1LL<<16), "BFs17ll_BFu17i_BFu17ll_BFu17i");
    set_bf_and_test(lv, v4, ABISELECT(12,8), ABISELECT(0,2), 17, 1, "BFs17ll_BFu17i_BFu17ll_BFu17i");
    set_bf_and_test(lv, v4, ABISELECT(12,8), ABISELECT(0,2), 17, hide_ull(1LL<<16), "BFs17ll_BFu17i_BFu17ll_BFu17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFu17i_BFu17ll_BFu17i, BFs17ll_BFu17i_BFu17ll_BFu17i)
//============================================================================


struct  BFs17ll_BFu17i_BFu17ll_BFu17ll  {
  signed __tsi64 v1:17;
  unsigned int v2:17;
  __tsu64 v3:17;
  __tsu64 v4:17;
};
//SIG(1 BFs17ll_BFu17i_BFu17ll_BFu17ll) C1{ FL:17 Fi:17 FL:17 FL:17}



static void Test_BFs17ll_BFu17i_BFu17ll_BFu17ll()
{
  {
    init_simple_test("BFs17ll_BFu17i_BFu17ll_BFu17ll");
    static STRUCT_IF_C BFs17ll_BFu17i_BFu17ll_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17ll_BFu17i_BFu17ll_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFu17i_BFu17ll_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFu17i_BFu17ll_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFu17i_BFu17ll_BFu17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFs17ll_BFu17i_BFu17ll_BFu17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "BFs17ll_BFu17i_BFu17ll_BFu17ll");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, 1, "BFs17ll_BFu17i_BFu17ll_BFu17ll");
    set_bf_and_test(lv, v3, ABISELECT(8,6), ABISELECT(0,1), 17, hide_ull(1LL<<16), "BFs17ll_BFu17i_BFu17ll_BFu17ll");
    set_bf_and_test(lv, v4, ABISELECT(10,8), ABISELECT(1,2), 17, 1, "BFs17ll_BFu17i_BFu17ll_BFu17ll");
    set_bf_and_test(lv, v4, ABISELECT(10,8), ABISELECT(1,2), 17, hide_ull(1LL<<16), "BFs17ll_BFu17i_BFu17ll_BFu17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFu17i_BFu17ll_BFu17ll, BFs17ll_BFu17i_BFu17ll_BFu17ll)
//============================================================================


struct  BFs17ll_BFu17ll  {
  signed __tsi64 v1:17;
  __tsu64 v2:17;
};
//SIG(1 BFs17ll_BFu17ll) C1{ FL:17 FL:17}



static void Test_BFs17ll_BFu17ll()
{
  {
    init_simple_test("BFs17ll_BFu17ll");
    static STRUCT_IF_C BFs17ll_BFu17ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs17ll_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFu17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17ll_BFu17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_ull(1LL<<16), "BFs17ll_BFu17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFu17ll, BFs17ll_BFu17ll)
//============================================================================


struct  BFs17ll_BFu17ll_BFs17i  {
  signed __tsi64 v1:17;
  __tsu64 v2:17;
  signed int v3:17;
};
//SIG(1 BFs17ll_BFu17ll_BFs17i) C1{ FL:17 FL:17 Fi:17}



static void Test_BFs17ll_BFu17ll_BFs17i()
{
  {
    init_simple_test("BFs17ll_BFu17ll_BFs17i");
    static STRUCT_IF_C BFs17ll_BFu17ll_BFs17i lv;
    check2(sizeof(lv), 8, "sizeof(BFs17ll_BFu17ll_BFs17i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFu17ll_BFs17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFu17ll_BFs17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFu17ll_BFs17i");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17ll_BFu17ll_BFs17i");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_ull(1LL<<16), "BFs17ll_BFu17ll_BFs17i");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17ll_BFu17ll_BFs17i");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_sll(1LL<<16), "BFs17ll_BFu17ll_BFs17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFu17ll_BFs17i, BFs17ll_BFu17ll_BFs17i)
//============================================================================


struct  BFs17ll_BFu17ll_BFs17i_BFs17i  {
  signed __tsi64 v1:17;
  __tsu64 v2:17;
  signed int v3:17;
  signed int v4:17;
};
//SIG(1 BFs17ll_BFu17ll_BFs17i_BFs17i) C1{ FL:17 FL:17 Fi:17 Fi:17}



static void Test_BFs17ll_BFu17ll_BFs17i_BFs17i()
{
  {
    init_simple_test("BFs17ll_BFu17ll_BFs17i_BFs17i");
    static STRUCT_IF_C BFs17ll_BFu17ll_BFs17i_BFs17i lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17ll_BFu17ll_BFs17i_BFs17i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFu17ll_BFs17i_BFs17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFu17ll_BFs17i_BFs17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFu17ll_BFs17i_BFs17i");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17ll_BFu17ll_BFs17i_BFs17i");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_ull(1LL<<16), "BFs17ll_BFu17ll_BFs17i_BFs17i");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17ll_BFu17ll_BFs17i_BFs17i");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_sll(1LL<<16), "BFs17ll_BFu17ll_BFs17i_BFs17i");
    set_bf_and_test(lv, v4, 8, 0, 17, 1, "BFs17ll_BFu17ll_BFs17i_BFs17i");
    set_bf_and_test(lv, v4, 8, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFu17ll_BFs17i_BFs17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFu17ll_BFs17i_BFs17i, BFs17ll_BFu17ll_BFs17i_BFs17i)
//============================================================================


struct  BFs17ll_BFu17ll_BFs17i_BFs17ll  {
  signed __tsi64 v1:17;
  __tsu64 v2:17;
  signed int v3:17;
  signed __tsi64 v4:17;
};
//SIG(1 BFs17ll_BFu17ll_BFs17i_BFs17ll) C1{ FL:17 FL:17 Fi:17 FL:17}



static void Test_BFs17ll_BFu17ll_BFs17i_BFs17ll()
{
  {
    init_simple_test("BFs17ll_BFu17ll_BFs17i_BFs17ll");
    static STRUCT_IF_C BFs17ll_BFu17ll_BFs17i_BFs17ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17ll_BFu17ll_BFs17i_BFs17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFu17ll_BFs17i_BFs17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFu17ll_BFs17i_BFs17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFu17ll_BFs17i_BFs17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17ll_BFu17ll_BFs17i_BFs17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_ull(1LL<<16), "BFs17ll_BFu17ll_BFs17i_BFs17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17ll_BFu17ll_BFs17i_BFs17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_sll(1LL<<16), "BFs17ll_BFu17ll_BFs17i_BFs17ll");
    set_bf_and_test(lv, v4, ABISELECT(8,6), ABISELECT(0,3), 17, 1, "BFs17ll_BFu17ll_BFs17i_BFs17ll");
    set_bf_and_test(lv, v4, ABISELECT(8,6), ABISELECT(0,3), 17, hide_sll(1LL<<16), "BFs17ll_BFu17ll_BFs17i_BFs17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFu17ll_BFs17i_BFs17ll, BFs17ll_BFu17ll_BFs17i_BFs17ll)
//============================================================================


struct  BFs17ll_BFu17ll_BFs17i_BFu17i  {
  signed __tsi64 v1:17;
  __tsu64 v2:17;
  signed int v3:17;
  unsigned int v4:17;
};
//SIG(1 BFs17ll_BFu17ll_BFs17i_BFu17i) C1{ FL:17 FL:17 Fi:17 Fi:17}



static void Test_BFs17ll_BFu17ll_BFs17i_BFu17i()
{
  {
    init_simple_test("BFs17ll_BFu17ll_BFs17i_BFu17i");
    static STRUCT_IF_C BFs17ll_BFu17ll_BFs17i_BFu17i lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17ll_BFu17ll_BFs17i_BFu17i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFu17ll_BFs17i_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFu17ll_BFs17i_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFu17ll_BFs17i_BFu17i");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17ll_BFu17ll_BFs17i_BFu17i");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_ull(1LL<<16), "BFs17ll_BFu17ll_BFs17i_BFu17i");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17ll_BFu17ll_BFs17i_BFu17i");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_sll(1LL<<16), "BFs17ll_BFu17ll_BFs17i_BFu17i");
    set_bf_and_test(lv, v4, 8, 0, 17, 1, "BFs17ll_BFu17ll_BFs17i_BFu17i");
    set_bf_and_test(lv, v4, 8, 0, 17, hide_ull(1LL<<16), "BFs17ll_BFu17ll_BFs17i_BFu17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFu17ll_BFs17i_BFu17i, BFs17ll_BFu17ll_BFs17i_BFu17i)
//============================================================================


struct  BFs17ll_BFu17ll_BFs17i_BFu17ll  {
  signed __tsi64 v1:17;
  __tsu64 v2:17;
  signed int v3:17;
  __tsu64 v4:17;
};
//SIG(1 BFs17ll_BFu17ll_BFs17i_BFu17ll) C1{ FL:17 FL:17 Fi:17 FL:17}



static void Test_BFs17ll_BFu17ll_BFs17i_BFu17ll()
{
  {
    init_simple_test("BFs17ll_BFu17ll_BFs17i_BFu17ll");
    static STRUCT_IF_C BFs17ll_BFu17ll_BFs17i_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17ll_BFu17ll_BFs17i_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFu17ll_BFs17i_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFu17ll_BFs17i_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFu17ll_BFs17i_BFu17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17ll_BFu17ll_BFs17i_BFu17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_ull(1LL<<16), "BFs17ll_BFu17ll_BFs17i_BFu17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17ll_BFu17ll_BFs17i_BFu17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_sll(1LL<<16), "BFs17ll_BFu17ll_BFs17i_BFu17ll");
    set_bf_and_test(lv, v4, ABISELECT(8,6), ABISELECT(0,3), 17, 1, "BFs17ll_BFu17ll_BFs17i_BFu17ll");
    set_bf_and_test(lv, v4, ABISELECT(8,6), ABISELECT(0,3), 17, hide_ull(1LL<<16), "BFs17ll_BFu17ll_BFs17i_BFu17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFu17ll_BFs17i_BFu17ll, BFs17ll_BFu17ll_BFs17i_BFu17ll)
//============================================================================


struct  BFs17ll_BFu17ll_BFs17ll  {
  signed __tsi64 v1:17;
  __tsu64 v2:17;
  signed __tsi64 v3:17;
};
//SIG(1 BFs17ll_BFu17ll_BFs17ll) C1{ FL:17 FL:17 FL:17}



static void Test_BFs17ll_BFu17ll_BFs17ll()
{
  {
    init_simple_test("BFs17ll_BFu17ll_BFs17ll");
    static STRUCT_IF_C BFs17ll_BFu17ll_BFs17ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs17ll_BFu17ll_BFs17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFu17ll_BFs17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFu17ll_BFs17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFu17ll_BFs17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17ll_BFu17ll_BFs17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_ull(1LL<<16), "BFs17ll_BFu17ll_BFs17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17ll_BFu17ll_BFs17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_sll(1LL<<16), "BFs17ll_BFu17ll_BFs17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFu17ll_BFs17ll, BFs17ll_BFu17ll_BFs17ll)
//============================================================================


struct  BFs17ll_BFu17ll_BFs17ll_BFs17i  {
  signed __tsi64 v1:17;
  __tsu64 v2:17;
  signed __tsi64 v3:17;
  signed int v4:17;
};
//SIG(1 BFs17ll_BFu17ll_BFs17ll_BFs17i) C1{ FL:17 FL:17 FL:17 Fi:17}



static void Test_BFs17ll_BFu17ll_BFs17ll_BFs17i()
{
  {
    init_simple_test("BFs17ll_BFu17ll_BFs17ll_BFs17i");
    static STRUCT_IF_C BFs17ll_BFu17ll_BFs17ll_BFs17i lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17ll_BFu17ll_BFs17ll_BFs17i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFu17ll_BFs17ll_BFs17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFu17ll_BFs17ll_BFs17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFu17ll_BFs17ll_BFs17i");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17ll_BFu17ll_BFs17ll_BFs17i");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_ull(1LL<<16), "BFs17ll_BFu17ll_BFs17ll_BFs17i");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17ll_BFu17ll_BFs17ll_BFs17i");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_sll(1LL<<16), "BFs17ll_BFu17ll_BFs17ll_BFs17i");
    set_bf_and_test(lv, v4, 8, 0, 17, 1, "BFs17ll_BFu17ll_BFs17ll_BFs17i");
    set_bf_and_test(lv, v4, 8, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFu17ll_BFs17ll_BFs17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFu17ll_BFs17ll_BFs17i, BFs17ll_BFu17ll_BFs17ll_BFs17i)
//============================================================================


struct  BFs17ll_BFu17ll_BFs17ll_BFs17ll  {
  signed __tsi64 v1:17;
  __tsu64 v2:17;
  signed __tsi64 v3:17;
  signed __tsi64 v4:17;
};
//SIG(1 BFs17ll_BFu17ll_BFs17ll_BFs17ll) C1{ FL:17 FL:17 FL:17 FL:17}



static void Test_BFs17ll_BFu17ll_BFs17ll_BFs17ll()
{
  {
    init_simple_test("BFs17ll_BFu17ll_BFs17ll_BFs17ll");
    static STRUCT_IF_C BFs17ll_BFu17ll_BFs17ll_BFs17ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17ll_BFu17ll_BFs17ll_BFs17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFu17ll_BFs17ll_BFs17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFu17ll_BFs17ll_BFs17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFu17ll_BFs17ll_BFs17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17ll_BFu17ll_BFs17ll_BFs17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_ull(1LL<<16), "BFs17ll_BFu17ll_BFs17ll_BFs17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17ll_BFu17ll_BFs17ll_BFs17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_sll(1LL<<16), "BFs17ll_BFu17ll_BFs17ll_BFs17ll");
    set_bf_and_test(lv, v4, ABISELECT(8,6), ABISELECT(0,3), 17, 1, "BFs17ll_BFu17ll_BFs17ll_BFs17ll");
    set_bf_and_test(lv, v4, ABISELECT(8,6), ABISELECT(0,3), 17, hide_sll(1LL<<16), "BFs17ll_BFu17ll_BFs17ll_BFs17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFu17ll_BFs17ll_BFs17ll, BFs17ll_BFu17ll_BFs17ll_BFs17ll)
//============================================================================


struct  BFs17ll_BFu17ll_BFs17ll_BFu17i  {
  signed __tsi64 v1:17;
  __tsu64 v2:17;
  signed __tsi64 v3:17;
  unsigned int v4:17;
};
//SIG(1 BFs17ll_BFu17ll_BFs17ll_BFu17i) C1{ FL:17 FL:17 FL:17 Fi:17}



static void Test_BFs17ll_BFu17ll_BFs17ll_BFu17i()
{
  {
    init_simple_test("BFs17ll_BFu17ll_BFs17ll_BFu17i");
    static STRUCT_IF_C BFs17ll_BFu17ll_BFs17ll_BFu17i lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17ll_BFu17ll_BFs17ll_BFu17i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFu17ll_BFs17ll_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFu17ll_BFs17ll_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFu17ll_BFs17ll_BFu17i");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17ll_BFu17ll_BFs17ll_BFu17i");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_ull(1LL<<16), "BFs17ll_BFu17ll_BFs17ll_BFu17i");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17ll_BFu17ll_BFs17ll_BFu17i");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_sll(1LL<<16), "BFs17ll_BFu17ll_BFs17ll_BFu17i");
    set_bf_and_test(lv, v4, 8, 0, 17, 1, "BFs17ll_BFu17ll_BFs17ll_BFu17i");
    set_bf_and_test(lv, v4, 8, 0, 17, hide_ull(1LL<<16), "BFs17ll_BFu17ll_BFs17ll_BFu17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFu17ll_BFs17ll_BFu17i, BFs17ll_BFu17ll_BFs17ll_BFu17i)
//============================================================================


struct  BFs17ll_BFu17ll_BFs17ll_BFu17ll  {
  signed __tsi64 v1:17;
  __tsu64 v2:17;
  signed __tsi64 v3:17;
  __tsu64 v4:17;
};
//SIG(1 BFs17ll_BFu17ll_BFs17ll_BFu17ll) C1{ FL:17 FL:17 FL:17 FL:17}



static void Test_BFs17ll_BFu17ll_BFs17ll_BFu17ll()
{
  {
    init_simple_test("BFs17ll_BFu17ll_BFs17ll_BFu17ll");
    static STRUCT_IF_C BFs17ll_BFu17ll_BFs17ll_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17ll_BFu17ll_BFs17ll_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFu17ll_BFs17ll_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFu17ll_BFs17ll_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFu17ll_BFs17ll_BFu17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17ll_BFu17ll_BFs17ll_BFu17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_ull(1LL<<16), "BFs17ll_BFu17ll_BFs17ll_BFu17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17ll_BFu17ll_BFs17ll_BFu17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_sll(1LL<<16), "BFs17ll_BFu17ll_BFs17ll_BFu17ll");
    set_bf_and_test(lv, v4, ABISELECT(8,6), ABISELECT(0,3), 17, 1, "BFs17ll_BFu17ll_BFs17ll_BFu17ll");
    set_bf_and_test(lv, v4, ABISELECT(8,6), ABISELECT(0,3), 17, hide_ull(1LL<<16), "BFs17ll_BFu17ll_BFs17ll_BFu17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFu17ll_BFs17ll_BFu17ll, BFs17ll_BFu17ll_BFs17ll_BFu17ll)
//============================================================================


struct  BFs17ll_BFu17ll_BFu17i  {
  signed __tsi64 v1:17;
  __tsu64 v2:17;
  unsigned int v3:17;
};
//SIG(1 BFs17ll_BFu17ll_BFu17i) C1{ FL:17 FL:17 Fi:17}



static void Test_BFs17ll_BFu17ll_BFu17i()
{
  {
    init_simple_test("BFs17ll_BFu17ll_BFu17i");
    static STRUCT_IF_C BFs17ll_BFu17ll_BFu17i lv;
    check2(sizeof(lv), 8, "sizeof(BFs17ll_BFu17ll_BFu17i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFu17ll_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFu17ll_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFu17ll_BFu17i");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17ll_BFu17ll_BFu17i");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_ull(1LL<<16), "BFs17ll_BFu17ll_BFu17i");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17ll_BFu17ll_BFu17i");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_ull(1LL<<16), "BFs17ll_BFu17ll_BFu17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFu17ll_BFu17i, BFs17ll_BFu17ll_BFu17i)
//============================================================================


struct  BFs17ll_BFu17ll_BFu17i_BFs17i  {
  signed __tsi64 v1:17;
  __tsu64 v2:17;
  unsigned int v3:17;
  signed int v4:17;
};
//SIG(1 BFs17ll_BFu17ll_BFu17i_BFs17i) C1{ FL:17 FL:17 Fi:17 Fi:17}



static void Test_BFs17ll_BFu17ll_BFu17i_BFs17i()
{
  {
    init_simple_test("BFs17ll_BFu17ll_BFu17i_BFs17i");
    static STRUCT_IF_C BFs17ll_BFu17ll_BFu17i_BFs17i lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17ll_BFu17ll_BFu17i_BFs17i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFu17ll_BFu17i_BFs17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFu17ll_BFu17i_BFs17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFu17ll_BFu17i_BFs17i");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17ll_BFu17ll_BFu17i_BFs17i");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_ull(1LL<<16), "BFs17ll_BFu17ll_BFu17i_BFs17i");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17ll_BFu17ll_BFu17i_BFs17i");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_ull(1LL<<16), "BFs17ll_BFu17ll_BFu17i_BFs17i");
    set_bf_and_test(lv, v4, 8, 0, 17, 1, "BFs17ll_BFu17ll_BFu17i_BFs17i");
    set_bf_and_test(lv, v4, 8, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFu17ll_BFu17i_BFs17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFu17ll_BFu17i_BFs17i, BFs17ll_BFu17ll_BFu17i_BFs17i)
//============================================================================


struct  BFs17ll_BFu17ll_BFu17i_BFs17ll  {
  signed __tsi64 v1:17;
  __tsu64 v2:17;
  unsigned int v3:17;
  signed __tsi64 v4:17;
};
//SIG(1 BFs17ll_BFu17ll_BFu17i_BFs17ll) C1{ FL:17 FL:17 Fi:17 FL:17}



static void Test_BFs17ll_BFu17ll_BFu17i_BFs17ll()
{
  {
    init_simple_test("BFs17ll_BFu17ll_BFu17i_BFs17ll");
    static STRUCT_IF_C BFs17ll_BFu17ll_BFu17i_BFs17ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17ll_BFu17ll_BFu17i_BFs17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFu17ll_BFu17i_BFs17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFu17ll_BFu17i_BFs17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFu17ll_BFu17i_BFs17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17ll_BFu17ll_BFu17i_BFs17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_ull(1LL<<16), "BFs17ll_BFu17ll_BFu17i_BFs17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17ll_BFu17ll_BFu17i_BFs17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_ull(1LL<<16), "BFs17ll_BFu17ll_BFu17i_BFs17ll");
    set_bf_and_test(lv, v4, ABISELECT(8,6), ABISELECT(0,3), 17, 1, "BFs17ll_BFu17ll_BFu17i_BFs17ll");
    set_bf_and_test(lv, v4, ABISELECT(8,6), ABISELECT(0,3), 17, hide_sll(1LL<<16), "BFs17ll_BFu17ll_BFu17i_BFs17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFu17ll_BFu17i_BFs17ll, BFs17ll_BFu17ll_BFu17i_BFs17ll)
//============================================================================


struct  BFs17ll_BFu17ll_BFu17i_BFu17i  {
  signed __tsi64 v1:17;
  __tsu64 v2:17;
  unsigned int v3:17;
  unsigned int v4:17;
};
//SIG(1 BFs17ll_BFu17ll_BFu17i_BFu17i) C1{ FL:17 FL:17 Fi:17 Fi:17}



static void Test_BFs17ll_BFu17ll_BFu17i_BFu17i()
{
  {
    init_simple_test("BFs17ll_BFu17ll_BFu17i_BFu17i");
    static STRUCT_IF_C BFs17ll_BFu17ll_BFu17i_BFu17i lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17ll_BFu17ll_BFu17i_BFu17i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFu17ll_BFu17i_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFu17ll_BFu17i_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFu17ll_BFu17i_BFu17i");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17ll_BFu17ll_BFu17i_BFu17i");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_ull(1LL<<16), "BFs17ll_BFu17ll_BFu17i_BFu17i");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17ll_BFu17ll_BFu17i_BFu17i");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_ull(1LL<<16), "BFs17ll_BFu17ll_BFu17i_BFu17i");
    set_bf_and_test(lv, v4, 8, 0, 17, 1, "BFs17ll_BFu17ll_BFu17i_BFu17i");
    set_bf_and_test(lv, v4, 8, 0, 17, hide_ull(1LL<<16), "BFs17ll_BFu17ll_BFu17i_BFu17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFu17ll_BFu17i_BFu17i, BFs17ll_BFu17ll_BFu17i_BFu17i)
//============================================================================


struct  BFs17ll_BFu17ll_BFu17i_BFu17ll  {
  signed __tsi64 v1:17;
  __tsu64 v2:17;
  unsigned int v3:17;
  __tsu64 v4:17;
};
//SIG(1 BFs17ll_BFu17ll_BFu17i_BFu17ll) C1{ FL:17 FL:17 Fi:17 FL:17}



static void Test_BFs17ll_BFu17ll_BFu17i_BFu17ll()
{
  {
    init_simple_test("BFs17ll_BFu17ll_BFu17i_BFu17ll");
    static STRUCT_IF_C BFs17ll_BFu17ll_BFu17i_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17ll_BFu17ll_BFu17i_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFu17ll_BFu17i_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFu17ll_BFu17i_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFu17ll_BFu17i_BFu17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17ll_BFu17ll_BFu17i_BFu17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_ull(1LL<<16), "BFs17ll_BFu17ll_BFu17i_BFu17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17ll_BFu17ll_BFu17i_BFu17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_ull(1LL<<16), "BFs17ll_BFu17ll_BFu17i_BFu17ll");
    set_bf_and_test(lv, v4, ABISELECT(8,6), ABISELECT(0,3), 17, 1, "BFs17ll_BFu17ll_BFu17i_BFu17ll");
    set_bf_and_test(lv, v4, ABISELECT(8,6), ABISELECT(0,3), 17, hide_ull(1LL<<16), "BFs17ll_BFu17ll_BFu17i_BFu17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFu17ll_BFu17i_BFu17ll, BFs17ll_BFu17ll_BFu17i_BFu17ll)
//============================================================================


struct  BFs17ll_BFu17ll_BFu17ll  {
  signed __tsi64 v1:17;
  __tsu64 v2:17;
  __tsu64 v3:17;
};
//SIG(1 BFs17ll_BFu17ll_BFu17ll) C1{ FL:17 FL:17 FL:17}



static void Test_BFs17ll_BFu17ll_BFu17ll()
{
  {
    init_simple_test("BFs17ll_BFu17ll_BFu17ll");
    static STRUCT_IF_C BFs17ll_BFu17ll_BFu17ll lv;
    check2(sizeof(lv), 8, "sizeof(BFs17ll_BFu17ll_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFu17ll_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFu17ll_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFu17ll_BFu17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17ll_BFu17ll_BFu17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_ull(1LL<<16), "BFs17ll_BFu17ll_BFu17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17ll_BFu17ll_BFu17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_ull(1LL<<16), "BFs17ll_BFu17ll_BFu17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFu17ll_BFu17ll, BFs17ll_BFu17ll_BFu17ll)
//============================================================================


struct  BFs17ll_BFu17ll_BFu17ll_BFs17i  {
  signed __tsi64 v1:17;
  __tsu64 v2:17;
  __tsu64 v3:17;
  signed int v4:17;
};
//SIG(1 BFs17ll_BFu17ll_BFu17ll_BFs17i) C1{ FL:17 FL:17 FL:17 Fi:17}



static void Test_BFs17ll_BFu17ll_BFu17ll_BFs17i()
{
  {
    init_simple_test("BFs17ll_BFu17ll_BFu17ll_BFs17i");
    static STRUCT_IF_C BFs17ll_BFu17ll_BFu17ll_BFs17i lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17ll_BFu17ll_BFu17ll_BFs17i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFu17ll_BFu17ll_BFs17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFu17ll_BFu17ll_BFs17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFu17ll_BFu17ll_BFs17i");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17ll_BFu17ll_BFu17ll_BFs17i");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_ull(1LL<<16), "BFs17ll_BFu17ll_BFu17ll_BFs17i");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17ll_BFu17ll_BFu17ll_BFs17i");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_ull(1LL<<16), "BFs17ll_BFu17ll_BFu17ll_BFs17i");
    set_bf_and_test(lv, v4, 8, 0, 17, 1, "BFs17ll_BFu17ll_BFu17ll_BFs17i");
    set_bf_and_test(lv, v4, 8, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFu17ll_BFu17ll_BFs17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFu17ll_BFu17ll_BFs17i, BFs17ll_BFu17ll_BFu17ll_BFs17i)
//============================================================================


struct  BFs17ll_BFu17ll_BFu17ll_BFs17ll  {
  signed __tsi64 v1:17;
  __tsu64 v2:17;
  __tsu64 v3:17;
  signed __tsi64 v4:17;
};
//SIG(1 BFs17ll_BFu17ll_BFu17ll_BFs17ll) C1{ FL:17 FL:17 FL:17 FL:17}



static void Test_BFs17ll_BFu17ll_BFu17ll_BFs17ll()
{
  {
    init_simple_test("BFs17ll_BFu17ll_BFu17ll_BFs17ll");
    static STRUCT_IF_C BFs17ll_BFu17ll_BFu17ll_BFs17ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17ll_BFu17ll_BFu17ll_BFs17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFu17ll_BFu17ll_BFs17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFu17ll_BFu17ll_BFs17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFu17ll_BFu17ll_BFs17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17ll_BFu17ll_BFu17ll_BFs17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_ull(1LL<<16), "BFs17ll_BFu17ll_BFu17ll_BFs17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17ll_BFu17ll_BFu17ll_BFs17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_ull(1LL<<16), "BFs17ll_BFu17ll_BFu17ll_BFs17ll");
    set_bf_and_test(lv, v4, ABISELECT(8,6), ABISELECT(0,3), 17, 1, "BFs17ll_BFu17ll_BFu17ll_BFs17ll");
    set_bf_and_test(lv, v4, ABISELECT(8,6), ABISELECT(0,3), 17, hide_sll(1LL<<16), "BFs17ll_BFu17ll_BFu17ll_BFs17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFu17ll_BFu17ll_BFs17ll, BFs17ll_BFu17ll_BFu17ll_BFs17ll)
//============================================================================


struct  BFs17ll_BFu17ll_BFu17ll_BFu17i  {
  signed __tsi64 v1:17;
  __tsu64 v2:17;
  __tsu64 v3:17;
  unsigned int v4:17;
};
//SIG(1 BFs17ll_BFu17ll_BFu17ll_BFu17i) C1{ FL:17 FL:17 FL:17 Fi:17}



static void Test_BFs17ll_BFu17ll_BFu17ll_BFu17i()
{
  {
    init_simple_test("BFs17ll_BFu17ll_BFu17ll_BFu17i");
    static STRUCT_IF_C BFs17ll_BFu17ll_BFu17ll_BFu17i lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17ll_BFu17ll_BFu17ll_BFu17i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFu17ll_BFu17ll_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFu17ll_BFu17ll_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFu17ll_BFu17ll_BFu17i");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17ll_BFu17ll_BFu17ll_BFu17i");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_ull(1LL<<16), "BFs17ll_BFu17ll_BFu17ll_BFu17i");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17ll_BFu17ll_BFu17ll_BFu17i");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_ull(1LL<<16), "BFs17ll_BFu17ll_BFu17ll_BFu17i");
    set_bf_and_test(lv, v4, 8, 0, 17, 1, "BFs17ll_BFu17ll_BFu17ll_BFu17i");
    set_bf_and_test(lv, v4, 8, 0, 17, hide_ull(1LL<<16), "BFs17ll_BFu17ll_BFu17ll_BFu17i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFu17ll_BFu17ll_BFu17i, BFs17ll_BFu17ll_BFu17ll_BFu17i)
//============================================================================


struct  BFs17ll_BFu17ll_BFu17ll_BFu17ll  {
  signed __tsi64 v1:17;
  __tsu64 v2:17;
  __tsu64 v3:17;
  __tsu64 v4:17;
};
//SIG(1 BFs17ll_BFu17ll_BFu17ll_BFu17ll) C1{ FL:17 FL:17 FL:17 FL:17}



static void Test_BFs17ll_BFu17ll_BFu17ll_BFu17ll()
{
  {
    init_simple_test("BFs17ll_BFu17ll_BFu17ll_BFu17ll");
    static STRUCT_IF_C BFs17ll_BFu17ll_BFu17ll_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFs17ll_BFu17ll_BFu17ll_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs17ll_BFu17ll_BFu17ll_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFs17ll_BFu17ll_BFu17ll_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_sll(1LL<<16), "BFs17ll_BFu17ll_BFu17ll_BFu17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFs17ll_BFu17ll_BFu17ll_BFu17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_ull(1LL<<16), "BFs17ll_BFu17ll_BFu17ll_BFu17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, 1, "BFs17ll_BFu17ll_BFu17ll_BFu17ll");
    set_bf_and_test(lv, v3, 4, 2, 17, hide_ull(1LL<<16), "BFs17ll_BFu17ll_BFu17ll_BFu17ll");
    set_bf_and_test(lv, v4, ABISELECT(8,6), ABISELECT(0,3), 17, 1, "BFs17ll_BFu17ll_BFu17ll_BFu17ll");
    set_bf_and_test(lv, v4, ABISELECT(8,6), ABISELECT(0,3), 17, hide_ull(1LL<<16), "BFs17ll_BFu17ll_BFu17ll_BFu17ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs17ll_BFu17ll_BFu17ll_BFu17ll, BFs17ll_BFu17ll_BFu17ll_BFu17ll)
//============================================================================


struct  BFs1c_BFs1c  {
  signed char v1:1;
  signed char v2:1;
};
//SIG(1 BFs1c_BFs1c) C1{ Fc:1 Fc:1}



static void Test_BFs1c_BFs1c()
{
  {
    init_simple_test("BFs1c_BFs1c");
    static STRUCT_IF_C BFs1c_BFs1c lv;
    check2(sizeof(lv), 1, "sizeof(BFs1c_BFs1c)");
    check2(__alignof__(lv), 1, "__alignof__(BFs1c_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1c, BFs1c_BFs1c)
//============================================================================


struct  BFs1c_BFs1c_BFs1c  {
  signed char v1:1;
  signed char v2:1;
  signed char v3:1;
};
//SIG(1 BFs1c_BFs1c_BFs1c) C1{ Fc:1 Fc:1 Fc:1}



static void Test_BFs1c_BFs1c_BFs1c()
{
  {
    init_simple_test("BFs1c_BFs1c_BFs1c");
    static STRUCT_IF_C BFs1c_BFs1c_BFs1c lv;
    check2(sizeof(lv), 1, "sizeof(BFs1c_BFs1c_BFs1c)");
    check2(__alignof__(lv), 1, "__alignof__(BFs1c_BFs1c_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1c_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1c_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1c_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1c_BFs1c, BFs1c_BFs1c_BFs1c)
//============================================================================


struct  BFs1c_BFs1c_BFs1c_BFs1c  {
  signed char v1:1;
  signed char v2:1;
  signed char v3:1;
  signed char v4:1;
};
//SIG(1 BFs1c_BFs1c_BFs1c_BFs1c) C1{ Fc:1 Fc:1 Fc:1 Fc:1}



static void Test_BFs1c_BFs1c_BFs1c_BFs1c()
{
  {
    init_simple_test("BFs1c_BFs1c_BFs1c_BFs1c");
    static STRUCT_IF_C BFs1c_BFs1c_BFs1c_BFs1c lv;
    check2(sizeof(lv), 1, "sizeof(BFs1c_BFs1c_BFs1c_BFs1c)");
    check2(__alignof__(lv), 1, "__alignof__(BFs1c_BFs1c_BFs1c_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1c_BFs1c_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1c_BFs1c_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1c_BFs1c_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1c_BFs1c_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1c_BFs1c_BFs1c, BFs1c_BFs1c_BFs1c_BFs1c)
//============================================================================


struct  BFs1c_BFs1c_BFs1c_BFs1i  {
  signed char v1:1;
  signed char v2:1;
  signed char v3:1;
  signed int v4:1;
};
//SIG(1 BFs1c_BFs1c_BFs1c_BFs1i) C1{ Fc:1 Fc:1 Fc:1 Fi:1}



static void Test_BFs1c_BFs1c_BFs1c_BFs1i()
{
  {
    init_simple_test("BFs1c_BFs1c_BFs1c_BFs1i");
    static STRUCT_IF_C BFs1c_BFs1c_BFs1c_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1c_BFs1c_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1c_BFs1c_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1c_BFs1c_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1c_BFs1c_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1c_BFs1c_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1c_BFs1c_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1c_BFs1c_BFs1i, BFs1c_BFs1c_BFs1c_BFs1i)
//============================================================================


struct  BFs1c_BFs1c_BFs1c_BFs1ll  {
  signed char v1:1;
  signed char v2:1;
  signed char v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1c_BFs1c_BFs1c_BFs1ll) C1{ Fc:1 Fc:1 Fc:1 FL:1}



static void Test_BFs1c_BFs1c_BFs1c_BFs1ll()
{
  {
    init_simple_test("BFs1c_BFs1c_BFs1c_BFs1ll");
    static STRUCT_IF_C BFs1c_BFs1c_BFs1c_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1c_BFs1c_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1c_BFs1c_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1c_BFs1c_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1c_BFs1c_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1c_BFs1c_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1c_BFs1c_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1c_BFs1c_BFs1ll, BFs1c_BFs1c_BFs1c_BFs1ll)
//============================================================================


struct  BFs1c_BFs1c_BFs1c_BFs1s  {
  signed char v1:1;
  signed char v2:1;
  signed char v3:1;
  signed short v4:1;
};
//SIG(1 BFs1c_BFs1c_BFs1c_BFs1s) C1{ Fc:1 Fc:1 Fc:1 Fs:1}



static void Test_BFs1c_BFs1c_BFs1c_BFs1s()
{
  {
    init_simple_test("BFs1c_BFs1c_BFs1c_BFs1s");
    static STRUCT_IF_C BFs1c_BFs1c_BFs1c_BFs1s lv;
    check2(sizeof(lv), 2, "sizeof(BFs1c_BFs1c_BFs1c_BFs1s)");
    check2(__alignof__(lv), 2, "__alignof__(BFs1c_BFs1c_BFs1c_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1c_BFs1c_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1c_BFs1c_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1c_BFs1c_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1c_BFs1c_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1c_BFs1c_BFs1s, BFs1c_BFs1c_BFs1c_BFs1s)
//============================================================================


struct  BFs1c_BFs1c_BFs1c_BFu1c  {
  signed char v1:1;
  signed char v2:1;
  signed char v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1c_BFs1c_BFs1c_BFu1c) C1{ Fc:1 Fc:1 Fc:1 Fc:1}



static void Test_BFs1c_BFs1c_BFs1c_BFu1c()
{
  {
    init_simple_test("BFs1c_BFs1c_BFs1c_BFu1c");
    static STRUCT_IF_C BFs1c_BFs1c_BFs1c_BFu1c lv;
    check2(sizeof(lv), 1, "sizeof(BFs1c_BFs1c_BFs1c_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(BFs1c_BFs1c_BFs1c_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1c_BFs1c_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1c_BFs1c_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1c_BFs1c_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1c_BFs1c_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1c_BFs1c_BFu1c, BFs1c_BFs1c_BFs1c_BFu1c)
//============================================================================


struct  BFs1c_BFs1c_BFs1c_BFu1i  {
  signed char v1:1;
  signed char v2:1;
  signed char v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1c_BFs1c_BFs1c_BFu1i) C1{ Fc:1 Fc:1 Fc:1 Fi:1}



static void Test_BFs1c_BFs1c_BFs1c_BFu1i()
{
  {
    init_simple_test("BFs1c_BFs1c_BFs1c_BFu1i");
    static STRUCT_IF_C BFs1c_BFs1c_BFs1c_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1c_BFs1c_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1c_BFs1c_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1c_BFs1c_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1c_BFs1c_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1c_BFs1c_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1c_BFs1c_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1c_BFs1c_BFu1i, BFs1c_BFs1c_BFs1c_BFu1i)
//============================================================================


struct  BFs1c_BFs1c_BFs1c_BFu1ll  {
  signed char v1:1;
  signed char v2:1;
  signed char v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1c_BFs1c_BFs1c_BFu1ll) C1{ Fc:1 Fc:1 Fc:1 FL:1}



static void Test_BFs1c_BFs1c_BFs1c_BFu1ll()
{
  {
    init_simple_test("BFs1c_BFs1c_BFs1c_BFu1ll");
    static STRUCT_IF_C BFs1c_BFs1c_BFs1c_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1c_BFs1c_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1c_BFs1c_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1c_BFs1c_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1c_BFs1c_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1c_BFs1c_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1c_BFs1c_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1c_BFs1c_BFu1ll, BFs1c_BFs1c_BFs1c_BFu1ll)
//============================================================================


struct  BFs1c_BFs1c_BFs1c_BFu1s  {
  signed char v1:1;
  signed char v2:1;
  signed char v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1c_BFs1c_BFs1c_BFu1s) C1{ Fc:1 Fc:1 Fc:1 Fs:1}



static void Test_BFs1c_BFs1c_BFs1c_BFu1s()
{
  {
    init_simple_test("BFs1c_BFs1c_BFs1c_BFu1s");
    static STRUCT_IF_C BFs1c_BFs1c_BFs1c_BFu1s lv;
    check2(sizeof(lv), 2, "sizeof(BFs1c_BFs1c_BFs1c_BFu1s)");
    check2(__alignof__(lv), 2, "__alignof__(BFs1c_BFs1c_BFs1c_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1c_BFs1c_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1c_BFs1c_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1c_BFs1c_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1c_BFs1c_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1c_BFs1c_BFu1s, BFs1c_BFs1c_BFs1c_BFu1s)
//============================================================================


struct  BFs1c_BFs1c_BFs1i  {
  signed char v1:1;
  signed char v2:1;
  signed int v3:1;
};
//SIG(1 BFs1c_BFs1c_BFs1i) C1{ Fc:1 Fc:1 Fi:1}



static void Test_BFs1c_BFs1c_BFs1i()
{
  {
    init_simple_test("BFs1c_BFs1c_BFs1i");
    static STRUCT_IF_C BFs1c_BFs1c_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1c_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1c_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1c_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1c_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1c_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1c_BFs1i, BFs1c_BFs1c_BFs1i)
//============================================================================


struct  BFs1c_BFs1c_BFs1i_BFs1c  {
  signed char v1:1;
  signed char v2:1;
  signed int v3:1;
  signed char v4:1;
};
//SIG(1 BFs1c_BFs1c_BFs1i_BFs1c) C1{ Fc:1 Fc:1 Fi:1 Fc:1}



static void Test_BFs1c_BFs1c_BFs1i_BFs1c()
{
  {
    init_simple_test("BFs1c_BFs1c_BFs1i_BFs1c");
    static STRUCT_IF_C BFs1c_BFs1c_BFs1i_BFs1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1c_BFs1i_BFs1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1c_BFs1i_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1c_BFs1i_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1c_BFs1i_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1c_BFs1i_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1c_BFs1i_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1c_BFs1i_BFs1c, BFs1c_BFs1c_BFs1i_BFs1c)
//============================================================================


struct  BFs1c_BFs1c_BFs1i_BFs1i  {
  signed char v1:1;
  signed char v2:1;
  signed int v3:1;
  signed int v4:1;
};
//SIG(1 BFs1c_BFs1c_BFs1i_BFs1i) C1{ Fc:1 Fc:1 Fi:1 Fi:1}



static void Test_BFs1c_BFs1c_BFs1i_BFs1i()
{
  {
    init_simple_test("BFs1c_BFs1c_BFs1i_BFs1i");
    static STRUCT_IF_C BFs1c_BFs1c_BFs1i_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1c_BFs1i_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1c_BFs1i_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1c_BFs1i_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1c_BFs1i_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1c_BFs1i_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1c_BFs1i_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1c_BFs1i_BFs1i, BFs1c_BFs1c_BFs1i_BFs1i)
//============================================================================


struct  BFs1c_BFs1c_BFs1i_BFs1ll  {
  signed char v1:1;
  signed char v2:1;
  signed int v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1c_BFs1c_BFs1i_BFs1ll) C1{ Fc:1 Fc:1 Fi:1 FL:1}



static void Test_BFs1c_BFs1c_BFs1i_BFs1ll()
{
  {
    init_simple_test("BFs1c_BFs1c_BFs1i_BFs1ll");
    static STRUCT_IF_C BFs1c_BFs1c_BFs1i_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1c_BFs1i_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1c_BFs1i_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1c_BFs1i_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1c_BFs1i_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1c_BFs1i_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1c_BFs1i_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1c_BFs1i_BFs1ll, BFs1c_BFs1c_BFs1i_BFs1ll)
//============================================================================


struct  BFs1c_BFs1c_BFs1i_BFs1s  {
  signed char v1:1;
  signed char v2:1;
  signed int v3:1;
  signed short v4:1;
};
//SIG(1 BFs1c_BFs1c_BFs1i_BFs1s) C1{ Fc:1 Fc:1 Fi:1 Fs:1}



static void Test_BFs1c_BFs1c_BFs1i_BFs1s()
{
  {
    init_simple_test("BFs1c_BFs1c_BFs1i_BFs1s");
    static STRUCT_IF_C BFs1c_BFs1c_BFs1i_BFs1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1c_BFs1i_BFs1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1c_BFs1i_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1c_BFs1i_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1c_BFs1i_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1c_BFs1i_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1c_BFs1i_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1c_BFs1i_BFs1s, BFs1c_BFs1c_BFs1i_BFs1s)
//============================================================================


struct  BFs1c_BFs1c_BFs1i_BFu1c  {
  signed char v1:1;
  signed char v2:1;
  signed int v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1c_BFs1c_BFs1i_BFu1c) C1{ Fc:1 Fc:1 Fi:1 Fc:1}



static void Test_BFs1c_BFs1c_BFs1i_BFu1c()
{
  {
    init_simple_test("BFs1c_BFs1c_BFs1i_BFu1c");
    static STRUCT_IF_C BFs1c_BFs1c_BFs1i_BFu1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1c_BFs1i_BFu1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1c_BFs1i_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1c_BFs1i_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1c_BFs1i_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1c_BFs1i_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1c_BFs1i_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1c_BFs1i_BFu1c, BFs1c_BFs1c_BFs1i_BFu1c)
//============================================================================


struct  BFs1c_BFs1c_BFs1i_BFu1i  {
  signed char v1:1;
  signed char v2:1;
  signed int v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1c_BFs1c_BFs1i_BFu1i) C1{ Fc:1 Fc:1 Fi:1 Fi:1}



static void Test_BFs1c_BFs1c_BFs1i_BFu1i()
{
  {
    init_simple_test("BFs1c_BFs1c_BFs1i_BFu1i");
    static STRUCT_IF_C BFs1c_BFs1c_BFs1i_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1c_BFs1i_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1c_BFs1i_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1c_BFs1i_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1c_BFs1i_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1c_BFs1i_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1c_BFs1i_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1c_BFs1i_BFu1i, BFs1c_BFs1c_BFs1i_BFu1i)
//============================================================================


struct  BFs1c_BFs1c_BFs1i_BFu1ll  {
  signed char v1:1;
  signed char v2:1;
  signed int v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1c_BFs1c_BFs1i_BFu1ll) C1{ Fc:1 Fc:1 Fi:1 FL:1}



static void Test_BFs1c_BFs1c_BFs1i_BFu1ll()
{
  {
    init_simple_test("BFs1c_BFs1c_BFs1i_BFu1ll");
    static STRUCT_IF_C BFs1c_BFs1c_BFs1i_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1c_BFs1i_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1c_BFs1i_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1c_BFs1i_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1c_BFs1i_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1c_BFs1i_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1c_BFs1i_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1c_BFs1i_BFu1ll, BFs1c_BFs1c_BFs1i_BFu1ll)
//============================================================================


struct  BFs1c_BFs1c_BFs1i_BFu1s  {
  signed char v1:1;
  signed char v2:1;
  signed int v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1c_BFs1c_BFs1i_BFu1s) C1{ Fc:1 Fc:1 Fi:1 Fs:1}



static void Test_BFs1c_BFs1c_BFs1i_BFu1s()
{
  {
    init_simple_test("BFs1c_BFs1c_BFs1i_BFu1s");
    static STRUCT_IF_C BFs1c_BFs1c_BFs1i_BFu1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1c_BFs1i_BFu1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1c_BFs1i_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1c_BFs1i_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1c_BFs1i_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1c_BFs1i_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1c_BFs1i_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1c_BFs1i_BFu1s, BFs1c_BFs1c_BFs1i_BFu1s)
//============================================================================


struct  BFs1c_BFs1c_BFs1ll  {
  signed char v1:1;
  signed char v2:1;
  signed __tsi64 v3:1;
};
//SIG(1 BFs1c_BFs1c_BFs1ll) C1{ Fc:1 Fc:1 FL:1}



static void Test_BFs1c_BFs1c_BFs1ll()
{
  {
    init_simple_test("BFs1c_BFs1c_BFs1ll");
    static STRUCT_IF_C BFs1c_BFs1c_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1c_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1c_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1c_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1c_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1c_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1c_BFs1ll, BFs1c_BFs1c_BFs1ll)
//============================================================================


struct  BFs1c_BFs1c_BFs1ll_BFs1c  {
  signed char v1:1;
  signed char v2:1;
  signed __tsi64 v3:1;
  signed char v4:1;
};
//SIG(1 BFs1c_BFs1c_BFs1ll_BFs1c) C1{ Fc:1 Fc:1 FL:1 Fc:1}



static void Test_BFs1c_BFs1c_BFs1ll_BFs1c()
{
  {
    init_simple_test("BFs1c_BFs1c_BFs1ll_BFs1c");
    static STRUCT_IF_C BFs1c_BFs1c_BFs1ll_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1c_BFs1ll_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1c_BFs1ll_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1c_BFs1ll_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1c_BFs1ll_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1c_BFs1ll_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1c_BFs1ll_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1c_BFs1ll_BFs1c, BFs1c_BFs1c_BFs1ll_BFs1c)
//============================================================================


struct  BFs1c_BFs1c_BFs1ll_BFs1i  {
  signed char v1:1;
  signed char v2:1;
  signed __tsi64 v3:1;
  signed int v4:1;
};
//SIG(1 BFs1c_BFs1c_BFs1ll_BFs1i) C1{ Fc:1 Fc:1 FL:1 Fi:1}



static void Test_BFs1c_BFs1c_BFs1ll_BFs1i()
{
  {
    init_simple_test("BFs1c_BFs1c_BFs1ll_BFs1i");
    static STRUCT_IF_C BFs1c_BFs1c_BFs1ll_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1c_BFs1ll_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1c_BFs1ll_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1c_BFs1ll_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1c_BFs1ll_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1c_BFs1ll_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1c_BFs1ll_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1c_BFs1ll_BFs1i, BFs1c_BFs1c_BFs1ll_BFs1i)
//============================================================================


struct  BFs1c_BFs1c_BFs1ll_BFs1ll  {
  signed char v1:1;
  signed char v2:1;
  signed __tsi64 v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1c_BFs1c_BFs1ll_BFs1ll) C1{ Fc:1 Fc:1 FL:1 FL:1}



static void Test_BFs1c_BFs1c_BFs1ll_BFs1ll()
{
  {
    init_simple_test("BFs1c_BFs1c_BFs1ll_BFs1ll");
    static STRUCT_IF_C BFs1c_BFs1c_BFs1ll_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1c_BFs1ll_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1c_BFs1ll_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1c_BFs1ll_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1c_BFs1ll_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1c_BFs1ll_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1c_BFs1ll_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1c_BFs1ll_BFs1ll, BFs1c_BFs1c_BFs1ll_BFs1ll)
//============================================================================


struct  BFs1c_BFs1c_BFs1ll_BFs1s  {
  signed char v1:1;
  signed char v2:1;
  signed __tsi64 v3:1;
  signed short v4:1;
};
//SIG(1 BFs1c_BFs1c_BFs1ll_BFs1s) C1{ Fc:1 Fc:1 FL:1 Fs:1}



static void Test_BFs1c_BFs1c_BFs1ll_BFs1s()
{
  {
    init_simple_test("BFs1c_BFs1c_BFs1ll_BFs1s");
    static STRUCT_IF_C BFs1c_BFs1c_BFs1ll_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1c_BFs1ll_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1c_BFs1ll_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1c_BFs1ll_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1c_BFs1ll_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1c_BFs1ll_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1c_BFs1ll_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1c_BFs1ll_BFs1s, BFs1c_BFs1c_BFs1ll_BFs1s)
//============================================================================


struct  BFs1c_BFs1c_BFs1ll_BFu1c  {
  signed char v1:1;
  signed char v2:1;
  signed __tsi64 v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1c_BFs1c_BFs1ll_BFu1c) C1{ Fc:1 Fc:1 FL:1 Fc:1}



static void Test_BFs1c_BFs1c_BFs1ll_BFu1c()
{
  {
    init_simple_test("BFs1c_BFs1c_BFs1ll_BFu1c");
    static STRUCT_IF_C BFs1c_BFs1c_BFs1ll_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1c_BFs1ll_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1c_BFs1ll_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1c_BFs1ll_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1c_BFs1ll_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1c_BFs1ll_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1c_BFs1ll_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1c_BFs1ll_BFu1c, BFs1c_BFs1c_BFs1ll_BFu1c)
//============================================================================


struct  BFs1c_BFs1c_BFs1ll_BFu1i  {
  signed char v1:1;
  signed char v2:1;
  signed __tsi64 v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1c_BFs1c_BFs1ll_BFu1i) C1{ Fc:1 Fc:1 FL:1 Fi:1}



static void Test_BFs1c_BFs1c_BFs1ll_BFu1i()
{
  {
    init_simple_test("BFs1c_BFs1c_BFs1ll_BFu1i");
    static STRUCT_IF_C BFs1c_BFs1c_BFs1ll_BFu1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1c_BFs1ll_BFu1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1c_BFs1ll_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1c_BFs1ll_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1c_BFs1ll_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1c_BFs1ll_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1c_BFs1ll_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1c_BFs1ll_BFu1i, BFs1c_BFs1c_BFs1ll_BFu1i)
//============================================================================


struct  BFs1c_BFs1c_BFs1ll_BFu1ll  {
  signed char v1:1;
  signed char v2:1;
  signed __tsi64 v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1c_BFs1c_BFs1ll_BFu1ll) C1{ Fc:1 Fc:1 FL:1 FL:1}



static void Test_BFs1c_BFs1c_BFs1ll_BFu1ll()
{
  {
    init_simple_test("BFs1c_BFs1c_BFs1ll_BFu1ll");
    static STRUCT_IF_C BFs1c_BFs1c_BFs1ll_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1c_BFs1ll_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1c_BFs1ll_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1c_BFs1ll_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1c_BFs1ll_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1c_BFs1ll_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1c_BFs1ll_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1c_BFs1ll_BFu1ll, BFs1c_BFs1c_BFs1ll_BFu1ll)
//============================================================================


struct  BFs1c_BFs1c_BFs1ll_BFu1s  {
  signed char v1:1;
  signed char v2:1;
  signed __tsi64 v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1c_BFs1c_BFs1ll_BFu1s) C1{ Fc:1 Fc:1 FL:1 Fs:1}



static void Test_BFs1c_BFs1c_BFs1ll_BFu1s()
{
  {
    init_simple_test("BFs1c_BFs1c_BFs1ll_BFu1s");
    static STRUCT_IF_C BFs1c_BFs1c_BFs1ll_BFu1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1c_BFs1ll_BFu1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1c_BFs1ll_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1c_BFs1ll_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1c_BFs1ll_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1c_BFs1ll_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1c_BFs1ll_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1c_BFs1ll_BFu1s, BFs1c_BFs1c_BFs1ll_BFu1s)
//============================================================================


struct  BFs1c_BFs1c_BFs1s  {
  signed char v1:1;
  signed char v2:1;
  signed short v3:1;
};
//SIG(1 BFs1c_BFs1c_BFs1s) C1{ Fc:1 Fc:1 Fs:1}



static void Test_BFs1c_BFs1c_BFs1s()
{
  {
    init_simple_test("BFs1c_BFs1c_BFs1s");
    static STRUCT_IF_C BFs1c_BFs1c_BFs1s lv;
    check2(sizeof(lv), 2, "sizeof(BFs1c_BFs1c_BFs1s)");
    check2(__alignof__(lv), 2, "__alignof__(BFs1c_BFs1c_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1c_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1c_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1c_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1c_BFs1s, BFs1c_BFs1c_BFs1s)
//============================================================================


struct  BFs1c_BFs1c_BFs1s_BFs1c  {
  signed char v1:1;
  signed char v2:1;
  signed short v3:1;
  signed char v4:1;
};
//SIG(1 BFs1c_BFs1c_BFs1s_BFs1c) C1{ Fc:1 Fc:1 Fs:1 Fc:1}



static void Test_BFs1c_BFs1c_BFs1s_BFs1c()
{
  {
    init_simple_test("BFs1c_BFs1c_BFs1s_BFs1c");
    static STRUCT_IF_C BFs1c_BFs1c_BFs1s_BFs1c lv;
    check2(sizeof(lv), 2, "sizeof(BFs1c_BFs1c_BFs1s_BFs1c)");
    check2(__alignof__(lv), 2, "__alignof__(BFs1c_BFs1c_BFs1s_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1c_BFs1s_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1c_BFs1s_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1c_BFs1s_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1c_BFs1s_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1c_BFs1s_BFs1c, BFs1c_BFs1c_BFs1s_BFs1c)
//============================================================================


struct  BFs1c_BFs1c_BFs1s_BFs1i  {
  signed char v1:1;
  signed char v2:1;
  signed short v3:1;
  signed int v4:1;
};
//SIG(1 BFs1c_BFs1c_BFs1s_BFs1i) C1{ Fc:1 Fc:1 Fs:1 Fi:1}



static void Test_BFs1c_BFs1c_BFs1s_BFs1i()
{
  {
    init_simple_test("BFs1c_BFs1c_BFs1s_BFs1i");
    static STRUCT_IF_C BFs1c_BFs1c_BFs1s_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1c_BFs1s_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1c_BFs1s_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1c_BFs1s_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1c_BFs1s_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1c_BFs1s_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1c_BFs1s_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1c_BFs1s_BFs1i, BFs1c_BFs1c_BFs1s_BFs1i)
//============================================================================


struct  BFs1c_BFs1c_BFs1s_BFs1ll  {
  signed char v1:1;
  signed char v2:1;
  signed short v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1c_BFs1c_BFs1s_BFs1ll) C1{ Fc:1 Fc:1 Fs:1 FL:1}



static void Test_BFs1c_BFs1c_BFs1s_BFs1ll()
{
  {
    init_simple_test("BFs1c_BFs1c_BFs1s_BFs1ll");
    static STRUCT_IF_C BFs1c_BFs1c_BFs1s_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1c_BFs1s_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1c_BFs1s_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1c_BFs1s_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1c_BFs1s_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1c_BFs1s_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1c_BFs1s_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1c_BFs1s_BFs1ll, BFs1c_BFs1c_BFs1s_BFs1ll)
//============================================================================


struct  BFs1c_BFs1c_BFs1s_BFs1s  {
  signed char v1:1;
  signed char v2:1;
  signed short v3:1;
  signed short v4:1;
};
//SIG(1 BFs1c_BFs1c_BFs1s_BFs1s) C1{ Fc:1 Fc:1 Fs:1 Fs:1}



static void Test_BFs1c_BFs1c_BFs1s_BFs1s()
{
  {
    init_simple_test("BFs1c_BFs1c_BFs1s_BFs1s");
    static STRUCT_IF_C BFs1c_BFs1c_BFs1s_BFs1s lv;
    check2(sizeof(lv), 2, "sizeof(BFs1c_BFs1c_BFs1s_BFs1s)");
    check2(__alignof__(lv), 2, "__alignof__(BFs1c_BFs1c_BFs1s_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1c_BFs1s_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1c_BFs1s_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1c_BFs1s_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1c_BFs1s_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1c_BFs1s_BFs1s, BFs1c_BFs1c_BFs1s_BFs1s)
//============================================================================


struct  BFs1c_BFs1c_BFs1s_BFu1c  {
  signed char v1:1;
  signed char v2:1;
  signed short v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1c_BFs1c_BFs1s_BFu1c) C1{ Fc:1 Fc:1 Fs:1 Fc:1}



static void Test_BFs1c_BFs1c_BFs1s_BFu1c()
{
  {
    init_simple_test("BFs1c_BFs1c_BFs1s_BFu1c");
    static STRUCT_IF_C BFs1c_BFs1c_BFs1s_BFu1c lv;
    check2(sizeof(lv), 2, "sizeof(BFs1c_BFs1c_BFs1s_BFu1c)");
    check2(__alignof__(lv), 2, "__alignof__(BFs1c_BFs1c_BFs1s_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1c_BFs1s_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1c_BFs1s_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1c_BFs1s_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1c_BFs1s_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1c_BFs1s_BFu1c, BFs1c_BFs1c_BFs1s_BFu1c)
//============================================================================


struct  BFs1c_BFs1c_BFs1s_BFu1i  {
  signed char v1:1;
  signed char v2:1;
  signed short v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1c_BFs1c_BFs1s_BFu1i) C1{ Fc:1 Fc:1 Fs:1 Fi:1}



static void Test_BFs1c_BFs1c_BFs1s_BFu1i()
{
  {
    init_simple_test("BFs1c_BFs1c_BFs1s_BFu1i");
    static STRUCT_IF_C BFs1c_BFs1c_BFs1s_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1c_BFs1s_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1c_BFs1s_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1c_BFs1s_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1c_BFs1s_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1c_BFs1s_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1c_BFs1s_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1c_BFs1s_BFu1i, BFs1c_BFs1c_BFs1s_BFu1i)
//============================================================================


struct  BFs1c_BFs1c_BFs1s_BFu1ll  {
  signed char v1:1;
  signed char v2:1;
  signed short v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1c_BFs1c_BFs1s_BFu1ll) C1{ Fc:1 Fc:1 Fs:1 FL:1}



static void Test_BFs1c_BFs1c_BFs1s_BFu1ll()
{
  {
    init_simple_test("BFs1c_BFs1c_BFs1s_BFu1ll");
    static STRUCT_IF_C BFs1c_BFs1c_BFs1s_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1c_BFs1s_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1c_BFs1s_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1c_BFs1s_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1c_BFs1s_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1c_BFs1s_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1c_BFs1s_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1c_BFs1s_BFu1ll, BFs1c_BFs1c_BFs1s_BFu1ll)
//============================================================================


struct  BFs1c_BFs1c_BFs1s_BFu1s  {
  signed char v1:1;
  signed char v2:1;
  signed short v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1c_BFs1c_BFs1s_BFu1s) C1{ Fc:1 Fc:1 Fs:1 Fs:1}



static void Test_BFs1c_BFs1c_BFs1s_BFu1s()
{
  {
    init_simple_test("BFs1c_BFs1c_BFs1s_BFu1s");
    static STRUCT_IF_C BFs1c_BFs1c_BFs1s_BFu1s lv;
    check2(sizeof(lv), 2, "sizeof(BFs1c_BFs1c_BFs1s_BFu1s)");
    check2(__alignof__(lv), 2, "__alignof__(BFs1c_BFs1c_BFs1s_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1c_BFs1s_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1c_BFs1s_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1c_BFs1s_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1c_BFs1s_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1c_BFs1s_BFu1s, BFs1c_BFs1c_BFs1s_BFu1s)
//============================================================================


struct  BFs1c_BFs1c_BFu1c  {
  signed char v1:1;
  signed char v2:1;
  unsigned char v3:1;
};
//SIG(1 BFs1c_BFs1c_BFu1c) C1{ Fc:1 Fc:1 Fc:1}



static void Test_BFs1c_BFs1c_BFu1c()
{
  {
    init_simple_test("BFs1c_BFs1c_BFu1c");
    static STRUCT_IF_C BFs1c_BFs1c_BFu1c lv;
    check2(sizeof(lv), 1, "sizeof(BFs1c_BFs1c_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(BFs1c_BFs1c_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1c_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1c_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1c_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1c_BFu1c, BFs1c_BFs1c_BFu1c)
//============================================================================


struct  BFs1c_BFs1c_BFu1c_BFs1c  {
  signed char v1:1;
  signed char v2:1;
  unsigned char v3:1;
  signed char v4:1;
};
//SIG(1 BFs1c_BFs1c_BFu1c_BFs1c) C1{ Fc:1 Fc:1 Fc:1 Fc:1}



static void Test_BFs1c_BFs1c_BFu1c_BFs1c()
{
  {
    init_simple_test("BFs1c_BFs1c_BFu1c_BFs1c");
    static STRUCT_IF_C BFs1c_BFs1c_BFu1c_BFs1c lv;
    check2(sizeof(lv), 1, "sizeof(BFs1c_BFs1c_BFu1c_BFs1c)");
    check2(__alignof__(lv), 1, "__alignof__(BFs1c_BFs1c_BFu1c_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1c_BFu1c_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1c_BFu1c_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1c_BFu1c_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1c_BFu1c_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1c_BFu1c_BFs1c, BFs1c_BFs1c_BFu1c_BFs1c)
//============================================================================


struct  BFs1c_BFs1c_BFu1c_BFs1i  {
  signed char v1:1;
  signed char v2:1;
  unsigned char v3:1;
  signed int v4:1;
};
//SIG(1 BFs1c_BFs1c_BFu1c_BFs1i) C1{ Fc:1 Fc:1 Fc:1 Fi:1}



static void Test_BFs1c_BFs1c_BFu1c_BFs1i()
{
  {
    init_simple_test("BFs1c_BFs1c_BFu1c_BFs1i");
    static STRUCT_IF_C BFs1c_BFs1c_BFu1c_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1c_BFu1c_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1c_BFu1c_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1c_BFu1c_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1c_BFu1c_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1c_BFu1c_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1c_BFu1c_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1c_BFu1c_BFs1i, BFs1c_BFs1c_BFu1c_BFs1i)
//============================================================================


struct  BFs1c_BFs1c_BFu1c_BFs1ll  {
  signed char v1:1;
  signed char v2:1;
  unsigned char v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1c_BFs1c_BFu1c_BFs1ll) C1{ Fc:1 Fc:1 Fc:1 FL:1}



static void Test_BFs1c_BFs1c_BFu1c_BFs1ll()
{
  {
    init_simple_test("BFs1c_BFs1c_BFu1c_BFs1ll");
    static STRUCT_IF_C BFs1c_BFs1c_BFu1c_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1c_BFu1c_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1c_BFu1c_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1c_BFu1c_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1c_BFu1c_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1c_BFu1c_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1c_BFu1c_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1c_BFu1c_BFs1ll, BFs1c_BFs1c_BFu1c_BFs1ll)
//============================================================================


struct  BFs1c_BFs1c_BFu1c_BFs1s  {
  signed char v1:1;
  signed char v2:1;
  unsigned char v3:1;
  signed short v4:1;
};
//SIG(1 BFs1c_BFs1c_BFu1c_BFs1s) C1{ Fc:1 Fc:1 Fc:1 Fs:1}



static void Test_BFs1c_BFs1c_BFu1c_BFs1s()
{
  {
    init_simple_test("BFs1c_BFs1c_BFu1c_BFs1s");
    static STRUCT_IF_C BFs1c_BFs1c_BFu1c_BFs1s lv;
    check2(sizeof(lv), 2, "sizeof(BFs1c_BFs1c_BFu1c_BFs1s)");
    check2(__alignof__(lv), 2, "__alignof__(BFs1c_BFs1c_BFu1c_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1c_BFu1c_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1c_BFu1c_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1c_BFu1c_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1c_BFu1c_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1c_BFu1c_BFs1s, BFs1c_BFs1c_BFu1c_BFs1s)
//============================================================================


struct  BFs1c_BFs1c_BFu1c_BFu1c  {
  signed char v1:1;
  signed char v2:1;
  unsigned char v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1c_BFs1c_BFu1c_BFu1c) C1{ Fc:1 Fc:1 Fc:1 Fc:1}



static void Test_BFs1c_BFs1c_BFu1c_BFu1c()
{
  {
    init_simple_test("BFs1c_BFs1c_BFu1c_BFu1c");
    static STRUCT_IF_C BFs1c_BFs1c_BFu1c_BFu1c lv;
    check2(sizeof(lv), 1, "sizeof(BFs1c_BFs1c_BFu1c_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(BFs1c_BFs1c_BFu1c_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1c_BFu1c_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1c_BFu1c_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1c_BFu1c_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1c_BFu1c_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1c_BFu1c_BFu1c, BFs1c_BFs1c_BFu1c_BFu1c)
//============================================================================


struct  BFs1c_BFs1c_BFu1c_BFu1i  {
  signed char v1:1;
  signed char v2:1;
  unsigned char v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1c_BFs1c_BFu1c_BFu1i) C1{ Fc:1 Fc:1 Fc:1 Fi:1}



static void Test_BFs1c_BFs1c_BFu1c_BFu1i()
{
  {
    init_simple_test("BFs1c_BFs1c_BFu1c_BFu1i");
    static STRUCT_IF_C BFs1c_BFs1c_BFu1c_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1c_BFu1c_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1c_BFu1c_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1c_BFu1c_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1c_BFu1c_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1c_BFu1c_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1c_BFu1c_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1c_BFu1c_BFu1i, BFs1c_BFs1c_BFu1c_BFu1i)
//============================================================================


struct  BFs1c_BFs1c_BFu1c_BFu1ll  {
  signed char v1:1;
  signed char v2:1;
  unsigned char v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1c_BFs1c_BFu1c_BFu1ll) C1{ Fc:1 Fc:1 Fc:1 FL:1}



static void Test_BFs1c_BFs1c_BFu1c_BFu1ll()
{
  {
    init_simple_test("BFs1c_BFs1c_BFu1c_BFu1ll");
    static STRUCT_IF_C BFs1c_BFs1c_BFu1c_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1c_BFu1c_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1c_BFu1c_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1c_BFu1c_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1c_BFu1c_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1c_BFu1c_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1c_BFu1c_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1c_BFu1c_BFu1ll, BFs1c_BFs1c_BFu1c_BFu1ll)
//============================================================================


struct  BFs1c_BFs1c_BFu1c_BFu1s  {
  signed char v1:1;
  signed char v2:1;
  unsigned char v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1c_BFs1c_BFu1c_BFu1s) C1{ Fc:1 Fc:1 Fc:1 Fs:1}



static void Test_BFs1c_BFs1c_BFu1c_BFu1s()
{
  {
    init_simple_test("BFs1c_BFs1c_BFu1c_BFu1s");
    static STRUCT_IF_C BFs1c_BFs1c_BFu1c_BFu1s lv;
    check2(sizeof(lv), 2, "sizeof(BFs1c_BFs1c_BFu1c_BFu1s)");
    check2(__alignof__(lv), 2, "__alignof__(BFs1c_BFs1c_BFu1c_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1c_BFu1c_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1c_BFu1c_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1c_BFu1c_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1c_BFu1c_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1c_BFu1c_BFu1s, BFs1c_BFs1c_BFu1c_BFu1s)
//============================================================================


struct  BFs1c_BFs1c_BFu1i  {
  signed char v1:1;
  signed char v2:1;
  unsigned int v3:1;
};
//SIG(1 BFs1c_BFs1c_BFu1i) C1{ Fc:1 Fc:1 Fi:1}



static void Test_BFs1c_BFs1c_BFu1i()
{
  {
    init_simple_test("BFs1c_BFs1c_BFu1i");
    static STRUCT_IF_C BFs1c_BFs1c_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1c_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1c_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1c_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1c_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1c_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1c_BFu1i, BFs1c_BFs1c_BFu1i)
//============================================================================


struct  BFs1c_BFs1c_BFu1i_BFs1c  {
  signed char v1:1;
  signed char v2:1;
  unsigned int v3:1;
  signed char v4:1;
};
//SIG(1 BFs1c_BFs1c_BFu1i_BFs1c) C1{ Fc:1 Fc:1 Fi:1 Fc:1}



static void Test_BFs1c_BFs1c_BFu1i_BFs1c()
{
  {
    init_simple_test("BFs1c_BFs1c_BFu1i_BFs1c");
    static STRUCT_IF_C BFs1c_BFs1c_BFu1i_BFs1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1c_BFu1i_BFs1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1c_BFu1i_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1c_BFu1i_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1c_BFu1i_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1c_BFu1i_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1c_BFu1i_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1c_BFu1i_BFs1c, BFs1c_BFs1c_BFu1i_BFs1c)
//============================================================================


struct  BFs1c_BFs1c_BFu1i_BFs1i  {
  signed char v1:1;
  signed char v2:1;
  unsigned int v3:1;
  signed int v4:1;
};
//SIG(1 BFs1c_BFs1c_BFu1i_BFs1i) C1{ Fc:1 Fc:1 Fi:1 Fi:1}



static void Test_BFs1c_BFs1c_BFu1i_BFs1i()
{
  {
    init_simple_test("BFs1c_BFs1c_BFu1i_BFs1i");
    static STRUCT_IF_C BFs1c_BFs1c_BFu1i_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1c_BFu1i_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1c_BFu1i_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1c_BFu1i_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1c_BFu1i_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1c_BFu1i_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1c_BFu1i_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1c_BFu1i_BFs1i, BFs1c_BFs1c_BFu1i_BFs1i)
//============================================================================


struct  BFs1c_BFs1c_BFu1i_BFs1ll  {
  signed char v1:1;
  signed char v2:1;
  unsigned int v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1c_BFs1c_BFu1i_BFs1ll) C1{ Fc:1 Fc:1 Fi:1 FL:1}



static void Test_BFs1c_BFs1c_BFu1i_BFs1ll()
{
  {
    init_simple_test("BFs1c_BFs1c_BFu1i_BFs1ll");
    static STRUCT_IF_C BFs1c_BFs1c_BFu1i_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1c_BFu1i_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1c_BFu1i_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1c_BFu1i_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1c_BFu1i_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1c_BFu1i_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1c_BFu1i_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1c_BFu1i_BFs1ll, BFs1c_BFs1c_BFu1i_BFs1ll)
//============================================================================


struct  BFs1c_BFs1c_BFu1i_BFs1s  {
  signed char v1:1;
  signed char v2:1;
  unsigned int v3:1;
  signed short v4:1;
};
//SIG(1 BFs1c_BFs1c_BFu1i_BFs1s) C1{ Fc:1 Fc:1 Fi:1 Fs:1}



static void Test_BFs1c_BFs1c_BFu1i_BFs1s()
{
  {
    init_simple_test("BFs1c_BFs1c_BFu1i_BFs1s");
    static STRUCT_IF_C BFs1c_BFs1c_BFu1i_BFs1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1c_BFu1i_BFs1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1c_BFu1i_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1c_BFu1i_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1c_BFu1i_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1c_BFu1i_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1c_BFu1i_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1c_BFu1i_BFs1s, BFs1c_BFs1c_BFu1i_BFs1s)
//============================================================================


struct  BFs1c_BFs1c_BFu1i_BFu1c  {
  signed char v1:1;
  signed char v2:1;
  unsigned int v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1c_BFs1c_BFu1i_BFu1c) C1{ Fc:1 Fc:1 Fi:1 Fc:1}



static void Test_BFs1c_BFs1c_BFu1i_BFu1c()
{
  {
    init_simple_test("BFs1c_BFs1c_BFu1i_BFu1c");
    static STRUCT_IF_C BFs1c_BFs1c_BFu1i_BFu1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1c_BFu1i_BFu1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1c_BFu1i_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1c_BFu1i_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1c_BFu1i_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1c_BFu1i_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1c_BFu1i_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1c_BFu1i_BFu1c, BFs1c_BFs1c_BFu1i_BFu1c)
//============================================================================


struct  BFs1c_BFs1c_BFu1i_BFu1i  {
  signed char v1:1;
  signed char v2:1;
  unsigned int v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1c_BFs1c_BFu1i_BFu1i) C1{ Fc:1 Fc:1 Fi:1 Fi:1}



static void Test_BFs1c_BFs1c_BFu1i_BFu1i()
{
  {
    init_simple_test("BFs1c_BFs1c_BFu1i_BFu1i");
    static STRUCT_IF_C BFs1c_BFs1c_BFu1i_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1c_BFu1i_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1c_BFu1i_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1c_BFu1i_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1c_BFu1i_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1c_BFu1i_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1c_BFu1i_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1c_BFu1i_BFu1i, BFs1c_BFs1c_BFu1i_BFu1i)
//============================================================================


struct  BFs1c_BFs1c_BFu1i_BFu1ll  {
  signed char v1:1;
  signed char v2:1;
  unsigned int v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1c_BFs1c_BFu1i_BFu1ll) C1{ Fc:1 Fc:1 Fi:1 FL:1}



static void Test_BFs1c_BFs1c_BFu1i_BFu1ll()
{
  {
    init_simple_test("BFs1c_BFs1c_BFu1i_BFu1ll");
    static STRUCT_IF_C BFs1c_BFs1c_BFu1i_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1c_BFu1i_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1c_BFu1i_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1c_BFu1i_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1c_BFu1i_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1c_BFu1i_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1c_BFu1i_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1c_BFu1i_BFu1ll, BFs1c_BFs1c_BFu1i_BFu1ll)
//============================================================================


struct  BFs1c_BFs1c_BFu1i_BFu1s  {
  signed char v1:1;
  signed char v2:1;
  unsigned int v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1c_BFs1c_BFu1i_BFu1s) C1{ Fc:1 Fc:1 Fi:1 Fs:1}



static void Test_BFs1c_BFs1c_BFu1i_BFu1s()
{
  {
    init_simple_test("BFs1c_BFs1c_BFu1i_BFu1s");
    static STRUCT_IF_C BFs1c_BFs1c_BFu1i_BFu1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1c_BFu1i_BFu1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1c_BFu1i_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1c_BFu1i_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1c_BFu1i_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1c_BFu1i_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1c_BFu1i_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1c_BFu1i_BFu1s, BFs1c_BFs1c_BFu1i_BFu1s)
//============================================================================


struct  BFs1c_BFs1c_BFu1ll  {
  signed char v1:1;
  signed char v2:1;
  __tsu64 v3:1;
};
//SIG(1 BFs1c_BFs1c_BFu1ll) C1{ Fc:1 Fc:1 FL:1}



static void Test_BFs1c_BFs1c_BFu1ll()
{
  {
    init_simple_test("BFs1c_BFs1c_BFu1ll");
    static STRUCT_IF_C BFs1c_BFs1c_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1c_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1c_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1c_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1c_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1c_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1c_BFu1ll, BFs1c_BFs1c_BFu1ll)
//============================================================================


struct  BFs1c_BFs1c_BFu1ll_BFs1c  {
  signed char v1:1;
  signed char v2:1;
  __tsu64 v3:1;
  signed char v4:1;
};
//SIG(1 BFs1c_BFs1c_BFu1ll_BFs1c) C1{ Fc:1 Fc:1 FL:1 Fc:1}



static void Test_BFs1c_BFs1c_BFu1ll_BFs1c()
{
  {
    init_simple_test("BFs1c_BFs1c_BFu1ll_BFs1c");
    static STRUCT_IF_C BFs1c_BFs1c_BFu1ll_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1c_BFu1ll_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1c_BFu1ll_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1c_BFu1ll_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1c_BFu1ll_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1c_BFu1ll_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1c_BFu1ll_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1c_BFu1ll_BFs1c, BFs1c_BFs1c_BFu1ll_BFs1c)
//============================================================================


struct  BFs1c_BFs1c_BFu1ll_BFs1i  {
  signed char v1:1;
  signed char v2:1;
  __tsu64 v3:1;
  signed int v4:1;
};
//SIG(1 BFs1c_BFs1c_BFu1ll_BFs1i) C1{ Fc:1 Fc:1 FL:1 Fi:1}



static void Test_BFs1c_BFs1c_BFu1ll_BFs1i()
{
  {
    init_simple_test("BFs1c_BFs1c_BFu1ll_BFs1i");
    static STRUCT_IF_C BFs1c_BFs1c_BFu1ll_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1c_BFu1ll_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1c_BFu1ll_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1c_BFu1ll_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1c_BFu1ll_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1c_BFu1ll_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1c_BFu1ll_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1c_BFu1ll_BFs1i, BFs1c_BFs1c_BFu1ll_BFs1i)
//============================================================================


struct  BFs1c_BFs1c_BFu1ll_BFs1ll  {
  signed char v1:1;
  signed char v2:1;
  __tsu64 v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1c_BFs1c_BFu1ll_BFs1ll) C1{ Fc:1 Fc:1 FL:1 FL:1}



static void Test_BFs1c_BFs1c_BFu1ll_BFs1ll()
{
  {
    init_simple_test("BFs1c_BFs1c_BFu1ll_BFs1ll");
    static STRUCT_IF_C BFs1c_BFs1c_BFu1ll_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1c_BFu1ll_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1c_BFu1ll_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1c_BFu1ll_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1c_BFu1ll_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1c_BFu1ll_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1c_BFu1ll_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1c_BFu1ll_BFs1ll, BFs1c_BFs1c_BFu1ll_BFs1ll)
//============================================================================


struct  BFs1c_BFs1c_BFu1ll_BFs1s  {
  signed char v1:1;
  signed char v2:1;
  __tsu64 v3:1;
  signed short v4:1;
};
//SIG(1 BFs1c_BFs1c_BFu1ll_BFs1s) C1{ Fc:1 Fc:1 FL:1 Fs:1}



static void Test_BFs1c_BFs1c_BFu1ll_BFs1s()
{
  {
    init_simple_test("BFs1c_BFs1c_BFu1ll_BFs1s");
    static STRUCT_IF_C BFs1c_BFs1c_BFu1ll_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1c_BFu1ll_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1c_BFu1ll_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1c_BFu1ll_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1c_BFu1ll_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1c_BFu1ll_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1c_BFu1ll_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1c_BFu1ll_BFs1s, BFs1c_BFs1c_BFu1ll_BFs1s)
//============================================================================


struct  BFs1c_BFs1c_BFu1ll_BFu1c  {
  signed char v1:1;
  signed char v2:1;
  __tsu64 v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1c_BFs1c_BFu1ll_BFu1c) C1{ Fc:1 Fc:1 FL:1 Fc:1}



static void Test_BFs1c_BFs1c_BFu1ll_BFu1c()
{
  {
    init_simple_test("BFs1c_BFs1c_BFu1ll_BFu1c");
    static STRUCT_IF_C BFs1c_BFs1c_BFu1ll_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1c_BFu1ll_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1c_BFu1ll_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1c_BFu1ll_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1c_BFu1ll_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1c_BFu1ll_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1c_BFu1ll_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1c_BFu1ll_BFu1c, BFs1c_BFs1c_BFu1ll_BFu1c)
//============================================================================


struct  BFs1c_BFs1c_BFu1ll_BFu1i  {
  signed char v1:1;
  signed char v2:1;
  __tsu64 v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1c_BFs1c_BFu1ll_BFu1i) C1{ Fc:1 Fc:1 FL:1 Fi:1}



static void Test_BFs1c_BFs1c_BFu1ll_BFu1i()
{
  {
    init_simple_test("BFs1c_BFs1c_BFu1ll_BFu1i");
    static STRUCT_IF_C BFs1c_BFs1c_BFu1ll_BFu1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1c_BFu1ll_BFu1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1c_BFu1ll_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1c_BFu1ll_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1c_BFu1ll_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1c_BFu1ll_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1c_BFu1ll_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1c_BFu1ll_BFu1i, BFs1c_BFs1c_BFu1ll_BFu1i)
//============================================================================


struct  BFs1c_BFs1c_BFu1ll_BFu1ll  {
  signed char v1:1;
  signed char v2:1;
  __tsu64 v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1c_BFs1c_BFu1ll_BFu1ll) C1{ Fc:1 Fc:1 FL:1 FL:1}



static void Test_BFs1c_BFs1c_BFu1ll_BFu1ll()
{
  {
    init_simple_test("BFs1c_BFs1c_BFu1ll_BFu1ll");
    static STRUCT_IF_C BFs1c_BFs1c_BFu1ll_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1c_BFu1ll_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1c_BFu1ll_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1c_BFu1ll_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1c_BFu1ll_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1c_BFu1ll_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1c_BFu1ll_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1c_BFu1ll_BFu1ll, BFs1c_BFs1c_BFu1ll_BFu1ll)
//============================================================================


struct  BFs1c_BFs1c_BFu1ll_BFu1s  {
  signed char v1:1;
  signed char v2:1;
  __tsu64 v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1c_BFs1c_BFu1ll_BFu1s) C1{ Fc:1 Fc:1 FL:1 Fs:1}



static void Test_BFs1c_BFs1c_BFu1ll_BFu1s()
{
  {
    init_simple_test("BFs1c_BFs1c_BFu1ll_BFu1s");
    static STRUCT_IF_C BFs1c_BFs1c_BFu1ll_BFu1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1c_BFu1ll_BFu1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1c_BFu1ll_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1c_BFu1ll_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1c_BFu1ll_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1c_BFu1ll_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1c_BFu1ll_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1c_BFu1ll_BFu1s, BFs1c_BFs1c_BFu1ll_BFu1s)
//============================================================================


struct  BFs1c_BFs1c_BFu1s  {
  signed char v1:1;
  signed char v2:1;
  unsigned short v3:1;
};
//SIG(1 BFs1c_BFs1c_BFu1s) C1{ Fc:1 Fc:1 Fs:1}



static void Test_BFs1c_BFs1c_BFu1s()
{
  {
    init_simple_test("BFs1c_BFs1c_BFu1s");
    static STRUCT_IF_C BFs1c_BFs1c_BFu1s lv;
    check2(sizeof(lv), 2, "sizeof(BFs1c_BFs1c_BFu1s)");
    check2(__alignof__(lv), 2, "__alignof__(BFs1c_BFs1c_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1c_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1c_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1c_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1c_BFu1s, BFs1c_BFs1c_BFu1s)
//============================================================================


struct  BFs1c_BFs1c_BFu1s_BFs1c  {
  signed char v1:1;
  signed char v2:1;
  unsigned short v3:1;
  signed char v4:1;
};
//SIG(1 BFs1c_BFs1c_BFu1s_BFs1c) C1{ Fc:1 Fc:1 Fs:1 Fc:1}



static void Test_BFs1c_BFs1c_BFu1s_BFs1c()
{
  {
    init_simple_test("BFs1c_BFs1c_BFu1s_BFs1c");
    static STRUCT_IF_C BFs1c_BFs1c_BFu1s_BFs1c lv;
    check2(sizeof(lv), 2, "sizeof(BFs1c_BFs1c_BFu1s_BFs1c)");
    check2(__alignof__(lv), 2, "__alignof__(BFs1c_BFs1c_BFu1s_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1c_BFu1s_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1c_BFu1s_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1c_BFu1s_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1c_BFu1s_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1c_BFu1s_BFs1c, BFs1c_BFs1c_BFu1s_BFs1c)
//============================================================================


struct  BFs1c_BFs1c_BFu1s_BFs1i  {
  signed char v1:1;
  signed char v2:1;
  unsigned short v3:1;
  signed int v4:1;
};
//SIG(1 BFs1c_BFs1c_BFu1s_BFs1i) C1{ Fc:1 Fc:1 Fs:1 Fi:1}



static void Test_BFs1c_BFs1c_BFu1s_BFs1i()
{
  {
    init_simple_test("BFs1c_BFs1c_BFu1s_BFs1i");
    static STRUCT_IF_C BFs1c_BFs1c_BFu1s_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1c_BFu1s_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1c_BFu1s_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1c_BFu1s_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1c_BFu1s_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1c_BFu1s_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1c_BFu1s_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1c_BFu1s_BFs1i, BFs1c_BFs1c_BFu1s_BFs1i)
//============================================================================


struct  BFs1c_BFs1c_BFu1s_BFs1ll  {
  signed char v1:1;
  signed char v2:1;
  unsigned short v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1c_BFs1c_BFu1s_BFs1ll) C1{ Fc:1 Fc:1 Fs:1 FL:1}



static void Test_BFs1c_BFs1c_BFu1s_BFs1ll()
{
  {
    init_simple_test("BFs1c_BFs1c_BFu1s_BFs1ll");
    static STRUCT_IF_C BFs1c_BFs1c_BFu1s_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1c_BFu1s_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1c_BFu1s_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1c_BFu1s_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1c_BFu1s_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1c_BFu1s_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1c_BFu1s_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1c_BFu1s_BFs1ll, BFs1c_BFs1c_BFu1s_BFs1ll)
//============================================================================


struct  BFs1c_BFs1c_BFu1s_BFs1s  {
  signed char v1:1;
  signed char v2:1;
  unsigned short v3:1;
  signed short v4:1;
};
//SIG(1 BFs1c_BFs1c_BFu1s_BFs1s) C1{ Fc:1 Fc:1 Fs:1 Fs:1}



static void Test_BFs1c_BFs1c_BFu1s_BFs1s()
{
  {
    init_simple_test("BFs1c_BFs1c_BFu1s_BFs1s");
    static STRUCT_IF_C BFs1c_BFs1c_BFu1s_BFs1s lv;
    check2(sizeof(lv), 2, "sizeof(BFs1c_BFs1c_BFu1s_BFs1s)");
    check2(__alignof__(lv), 2, "__alignof__(BFs1c_BFs1c_BFu1s_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1c_BFu1s_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1c_BFu1s_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1c_BFu1s_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1c_BFu1s_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1c_BFu1s_BFs1s, BFs1c_BFs1c_BFu1s_BFs1s)
//============================================================================


struct  BFs1c_BFs1c_BFu1s_BFu1c  {
  signed char v1:1;
  signed char v2:1;
  unsigned short v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1c_BFs1c_BFu1s_BFu1c) C1{ Fc:1 Fc:1 Fs:1 Fc:1}



static void Test_BFs1c_BFs1c_BFu1s_BFu1c()
{
  {
    init_simple_test("BFs1c_BFs1c_BFu1s_BFu1c");
    static STRUCT_IF_C BFs1c_BFs1c_BFu1s_BFu1c lv;
    check2(sizeof(lv), 2, "sizeof(BFs1c_BFs1c_BFu1s_BFu1c)");
    check2(__alignof__(lv), 2, "__alignof__(BFs1c_BFs1c_BFu1s_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1c_BFu1s_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1c_BFu1s_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1c_BFu1s_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1c_BFu1s_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1c_BFu1s_BFu1c, BFs1c_BFs1c_BFu1s_BFu1c)
//============================================================================


struct  BFs1c_BFs1c_BFu1s_BFu1i  {
  signed char v1:1;
  signed char v2:1;
  unsigned short v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1c_BFs1c_BFu1s_BFu1i) C1{ Fc:1 Fc:1 Fs:1 Fi:1}



static void Test_BFs1c_BFs1c_BFu1s_BFu1i()
{
  {
    init_simple_test("BFs1c_BFs1c_BFu1s_BFu1i");
    static STRUCT_IF_C BFs1c_BFs1c_BFu1s_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1c_BFu1s_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1c_BFu1s_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1c_BFu1s_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1c_BFu1s_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1c_BFu1s_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1c_BFu1s_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1c_BFu1s_BFu1i, BFs1c_BFs1c_BFu1s_BFu1i)
//============================================================================


struct  BFs1c_BFs1c_BFu1s_BFu1ll  {
  signed char v1:1;
  signed char v2:1;
  unsigned short v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1c_BFs1c_BFu1s_BFu1ll) C1{ Fc:1 Fc:1 Fs:1 FL:1}



static void Test_BFs1c_BFs1c_BFu1s_BFu1ll()
{
  {
    init_simple_test("BFs1c_BFs1c_BFu1s_BFu1ll");
    static STRUCT_IF_C BFs1c_BFs1c_BFu1s_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1c_BFu1s_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1c_BFu1s_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1c_BFu1s_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1c_BFu1s_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1c_BFu1s_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1c_BFu1s_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1c_BFu1s_BFu1ll, BFs1c_BFs1c_BFu1s_BFu1ll)
//============================================================================


struct  BFs1c_BFs1c_BFu1s_BFu1s  {
  signed char v1:1;
  signed char v2:1;
  unsigned short v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1c_BFs1c_BFu1s_BFu1s) C1{ Fc:1 Fc:1 Fs:1 Fs:1}



static void Test_BFs1c_BFs1c_BFu1s_BFu1s()
{
  {
    init_simple_test("BFs1c_BFs1c_BFu1s_BFu1s");
    static STRUCT_IF_C BFs1c_BFs1c_BFu1s_BFu1s lv;
    check2(sizeof(lv), 2, "sizeof(BFs1c_BFs1c_BFu1s_BFu1s)");
    check2(__alignof__(lv), 2, "__alignof__(BFs1c_BFs1c_BFu1s_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1c_BFu1s_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1c_BFu1s_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1c_BFu1s_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1c_BFu1s_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1c_BFu1s_BFu1s, BFs1c_BFs1c_BFu1s_BFu1s)
//============================================================================


struct  BFs1c_BFs1i  {
  signed char v1:1;
  signed int v2:1;
};
//SIG(1 BFs1c_BFs1i) C1{ Fc:1 Fi:1}



static void Test_BFs1c_BFs1i()
{
  {
    init_simple_test("BFs1c_BFs1i");
    static STRUCT_IF_C BFs1c_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1i, BFs1c_BFs1i)
//============================================================================


struct  BFs1c_BFs1i_BFs1c  {
  signed char v1:1;
  signed int v2:1;
  signed char v3:1;
};
//SIG(1 BFs1c_BFs1i_BFs1c) C1{ Fc:1 Fi:1 Fc:1}



static void Test_BFs1c_BFs1i_BFs1c()
{
  {
    init_simple_test("BFs1c_BFs1i_BFs1c");
    static STRUCT_IF_C BFs1c_BFs1i_BFs1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1i_BFs1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1i_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1i_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1i_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1i_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1i_BFs1c, BFs1c_BFs1i_BFs1c)
//============================================================================


struct  BFs1c_BFs1i_BFs1c_BFs1c  {
  signed char v1:1;
  signed int v2:1;
  signed char v3:1;
  signed char v4:1;
};
//SIG(1 BFs1c_BFs1i_BFs1c_BFs1c) C1{ Fc:1 Fi:1 Fc:1 Fc:1}



static void Test_BFs1c_BFs1i_BFs1c_BFs1c()
{
  {
    init_simple_test("BFs1c_BFs1i_BFs1c_BFs1c");
    static STRUCT_IF_C BFs1c_BFs1i_BFs1c_BFs1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1i_BFs1c_BFs1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1i_BFs1c_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1i_BFs1c_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1i_BFs1c_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1i_BFs1c_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1i_BFs1c_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1i_BFs1c_BFs1c, BFs1c_BFs1i_BFs1c_BFs1c)
//============================================================================


struct  BFs1c_BFs1i_BFs1c_BFs1i  {
  signed char v1:1;
  signed int v2:1;
  signed char v3:1;
  signed int v4:1;
};
//SIG(1 BFs1c_BFs1i_BFs1c_BFs1i) C1{ Fc:1 Fi:1 Fc:1 Fi:1}



static void Test_BFs1c_BFs1i_BFs1c_BFs1i()
{
  {
    init_simple_test("BFs1c_BFs1i_BFs1c_BFs1i");
    static STRUCT_IF_C BFs1c_BFs1i_BFs1c_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1i_BFs1c_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1i_BFs1c_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1i_BFs1c_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1i_BFs1c_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1i_BFs1c_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1i_BFs1c_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1i_BFs1c_BFs1i, BFs1c_BFs1i_BFs1c_BFs1i)
//============================================================================


struct  BFs1c_BFs1i_BFs1c_BFs1ll  {
  signed char v1:1;
  signed int v2:1;
  signed char v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1c_BFs1i_BFs1c_BFs1ll) C1{ Fc:1 Fi:1 Fc:1 FL:1}



static void Test_BFs1c_BFs1i_BFs1c_BFs1ll()
{
  {
    init_simple_test("BFs1c_BFs1i_BFs1c_BFs1ll");
    static STRUCT_IF_C BFs1c_BFs1i_BFs1c_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1i_BFs1c_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1i_BFs1c_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1i_BFs1c_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1i_BFs1c_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1i_BFs1c_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1i_BFs1c_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1i_BFs1c_BFs1ll, BFs1c_BFs1i_BFs1c_BFs1ll)
//============================================================================


struct  BFs1c_BFs1i_BFs1c_BFs1s  {
  signed char v1:1;
  signed int v2:1;
  signed char v3:1;
  signed short v4:1;
};
//SIG(1 BFs1c_BFs1i_BFs1c_BFs1s) C1{ Fc:1 Fi:1 Fc:1 Fs:1}



static void Test_BFs1c_BFs1i_BFs1c_BFs1s()
{
  {
    init_simple_test("BFs1c_BFs1i_BFs1c_BFs1s");
    static STRUCT_IF_C BFs1c_BFs1i_BFs1c_BFs1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1i_BFs1c_BFs1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1i_BFs1c_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1i_BFs1c_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1i_BFs1c_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1i_BFs1c_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1i_BFs1c_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1i_BFs1c_BFs1s, BFs1c_BFs1i_BFs1c_BFs1s)
//============================================================================


struct  BFs1c_BFs1i_BFs1c_BFu1c  {
  signed char v1:1;
  signed int v2:1;
  signed char v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1c_BFs1i_BFs1c_BFu1c) C1{ Fc:1 Fi:1 Fc:1 Fc:1}



static void Test_BFs1c_BFs1i_BFs1c_BFu1c()
{
  {
    init_simple_test("BFs1c_BFs1i_BFs1c_BFu1c");
    static STRUCT_IF_C BFs1c_BFs1i_BFs1c_BFu1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1i_BFs1c_BFu1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1i_BFs1c_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1i_BFs1c_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1i_BFs1c_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1i_BFs1c_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1i_BFs1c_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1i_BFs1c_BFu1c, BFs1c_BFs1i_BFs1c_BFu1c)
//============================================================================


struct  BFs1c_BFs1i_BFs1c_BFu1i  {
  signed char v1:1;
  signed int v2:1;
  signed char v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1c_BFs1i_BFs1c_BFu1i) C1{ Fc:1 Fi:1 Fc:1 Fi:1}



static void Test_BFs1c_BFs1i_BFs1c_BFu1i()
{
  {
    init_simple_test("BFs1c_BFs1i_BFs1c_BFu1i");
    static STRUCT_IF_C BFs1c_BFs1i_BFs1c_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1i_BFs1c_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1i_BFs1c_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1i_BFs1c_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1i_BFs1c_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1i_BFs1c_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1i_BFs1c_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1i_BFs1c_BFu1i, BFs1c_BFs1i_BFs1c_BFu1i)
//============================================================================


struct  BFs1c_BFs1i_BFs1c_BFu1ll  {
  signed char v1:1;
  signed int v2:1;
  signed char v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1c_BFs1i_BFs1c_BFu1ll) C1{ Fc:1 Fi:1 Fc:1 FL:1}



static void Test_BFs1c_BFs1i_BFs1c_BFu1ll()
{
  {
    init_simple_test("BFs1c_BFs1i_BFs1c_BFu1ll");
    static STRUCT_IF_C BFs1c_BFs1i_BFs1c_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1i_BFs1c_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1i_BFs1c_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1i_BFs1c_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1i_BFs1c_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1i_BFs1c_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1i_BFs1c_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1i_BFs1c_BFu1ll, BFs1c_BFs1i_BFs1c_BFu1ll)
//============================================================================


struct  BFs1c_BFs1i_BFs1c_BFu1s  {
  signed char v1:1;
  signed int v2:1;
  signed char v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1c_BFs1i_BFs1c_BFu1s) C1{ Fc:1 Fi:1 Fc:1 Fs:1}



static void Test_BFs1c_BFs1i_BFs1c_BFu1s()
{
  {
    init_simple_test("BFs1c_BFs1i_BFs1c_BFu1s");
    static STRUCT_IF_C BFs1c_BFs1i_BFs1c_BFu1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1i_BFs1c_BFu1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1i_BFs1c_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1i_BFs1c_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1i_BFs1c_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1i_BFs1c_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1i_BFs1c_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1i_BFs1c_BFu1s, BFs1c_BFs1i_BFs1c_BFu1s)
//============================================================================


struct  BFs1c_BFs1i_BFs1i  {
  signed char v1:1;
  signed int v2:1;
  signed int v3:1;
};
//SIG(1 BFs1c_BFs1i_BFs1i) C1{ Fc:1 Fi:1 Fi:1}



static void Test_BFs1c_BFs1i_BFs1i()
{
  {
    init_simple_test("BFs1c_BFs1i_BFs1i");
    static STRUCT_IF_C BFs1c_BFs1i_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1i_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1i_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1i_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1i_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1i_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1i_BFs1i, BFs1c_BFs1i_BFs1i)
//============================================================================


struct  BFs1c_BFs1i_BFs1i_BFs1c  {
  signed char v1:1;
  signed int v2:1;
  signed int v3:1;
  signed char v4:1;
};
//SIG(1 BFs1c_BFs1i_BFs1i_BFs1c) C1{ Fc:1 Fi:1 Fi:1 Fc:1}



static void Test_BFs1c_BFs1i_BFs1i_BFs1c()
{
  {
    init_simple_test("BFs1c_BFs1i_BFs1i_BFs1c");
    static STRUCT_IF_C BFs1c_BFs1i_BFs1i_BFs1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1i_BFs1i_BFs1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1i_BFs1i_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1i_BFs1i_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1i_BFs1i_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1i_BFs1i_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1i_BFs1i_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1i_BFs1i_BFs1c, BFs1c_BFs1i_BFs1i_BFs1c)
//============================================================================


struct  BFs1c_BFs1i_BFs1i_BFs1i  {
  signed char v1:1;
  signed int v2:1;
  signed int v3:1;
  signed int v4:1;
};
//SIG(1 BFs1c_BFs1i_BFs1i_BFs1i) C1{ Fc:1 Fi:1 Fi:1 Fi:1}



static void Test_BFs1c_BFs1i_BFs1i_BFs1i()
{
  {
    init_simple_test("BFs1c_BFs1i_BFs1i_BFs1i");
    static STRUCT_IF_C BFs1c_BFs1i_BFs1i_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1i_BFs1i_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1i_BFs1i_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1i_BFs1i_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1i_BFs1i_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1i_BFs1i_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1i_BFs1i_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1i_BFs1i_BFs1i, BFs1c_BFs1i_BFs1i_BFs1i)
//============================================================================


struct  BFs1c_BFs1i_BFs1i_BFs1ll  {
  signed char v1:1;
  signed int v2:1;
  signed int v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1c_BFs1i_BFs1i_BFs1ll) C1{ Fc:1 Fi:1 Fi:1 FL:1}



static void Test_BFs1c_BFs1i_BFs1i_BFs1ll()
{
  {
    init_simple_test("BFs1c_BFs1i_BFs1i_BFs1ll");
    static STRUCT_IF_C BFs1c_BFs1i_BFs1i_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1i_BFs1i_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1i_BFs1i_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1i_BFs1i_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1i_BFs1i_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1i_BFs1i_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1i_BFs1i_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1i_BFs1i_BFs1ll, BFs1c_BFs1i_BFs1i_BFs1ll)
//============================================================================


struct  BFs1c_BFs1i_BFs1i_BFs1s  {
  signed char v1:1;
  signed int v2:1;
  signed int v3:1;
  signed short v4:1;
};
//SIG(1 BFs1c_BFs1i_BFs1i_BFs1s) C1{ Fc:1 Fi:1 Fi:1 Fs:1}



static void Test_BFs1c_BFs1i_BFs1i_BFs1s()
{
  {
    init_simple_test("BFs1c_BFs1i_BFs1i_BFs1s");
    static STRUCT_IF_C BFs1c_BFs1i_BFs1i_BFs1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1i_BFs1i_BFs1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1i_BFs1i_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1i_BFs1i_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1i_BFs1i_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1i_BFs1i_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1i_BFs1i_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1i_BFs1i_BFs1s, BFs1c_BFs1i_BFs1i_BFs1s)
//============================================================================


struct  BFs1c_BFs1i_BFs1i_BFu1c  {
  signed char v1:1;
  signed int v2:1;
  signed int v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1c_BFs1i_BFs1i_BFu1c) C1{ Fc:1 Fi:1 Fi:1 Fc:1}



static void Test_BFs1c_BFs1i_BFs1i_BFu1c()
{
  {
    init_simple_test("BFs1c_BFs1i_BFs1i_BFu1c");
    static STRUCT_IF_C BFs1c_BFs1i_BFs1i_BFu1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1i_BFs1i_BFu1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1i_BFs1i_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1i_BFs1i_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1i_BFs1i_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1i_BFs1i_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1i_BFs1i_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1i_BFs1i_BFu1c, BFs1c_BFs1i_BFs1i_BFu1c)
//============================================================================


struct  BFs1c_BFs1i_BFs1i_BFu1i  {
  signed char v1:1;
  signed int v2:1;
  signed int v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1c_BFs1i_BFs1i_BFu1i) C1{ Fc:1 Fi:1 Fi:1 Fi:1}



static void Test_BFs1c_BFs1i_BFs1i_BFu1i()
{
  {
    init_simple_test("BFs1c_BFs1i_BFs1i_BFu1i");
    static STRUCT_IF_C BFs1c_BFs1i_BFs1i_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1i_BFs1i_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1i_BFs1i_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1i_BFs1i_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1i_BFs1i_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1i_BFs1i_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1i_BFs1i_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1i_BFs1i_BFu1i, BFs1c_BFs1i_BFs1i_BFu1i)
//============================================================================


struct  BFs1c_BFs1i_BFs1i_BFu1ll  {
  signed char v1:1;
  signed int v2:1;
  signed int v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1c_BFs1i_BFs1i_BFu1ll) C1{ Fc:1 Fi:1 Fi:1 FL:1}



static void Test_BFs1c_BFs1i_BFs1i_BFu1ll()
{
  {
    init_simple_test("BFs1c_BFs1i_BFs1i_BFu1ll");
    static STRUCT_IF_C BFs1c_BFs1i_BFs1i_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1i_BFs1i_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1i_BFs1i_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1i_BFs1i_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1i_BFs1i_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1i_BFs1i_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1i_BFs1i_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1i_BFs1i_BFu1ll, BFs1c_BFs1i_BFs1i_BFu1ll)
//============================================================================


struct  BFs1c_BFs1i_BFs1i_BFu1s  {
  signed char v1:1;
  signed int v2:1;
  signed int v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1c_BFs1i_BFs1i_BFu1s) C1{ Fc:1 Fi:1 Fi:1 Fs:1}



static void Test_BFs1c_BFs1i_BFs1i_BFu1s()
{
  {
    init_simple_test("BFs1c_BFs1i_BFs1i_BFu1s");
    static STRUCT_IF_C BFs1c_BFs1i_BFs1i_BFu1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1i_BFs1i_BFu1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1i_BFs1i_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1i_BFs1i_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1i_BFs1i_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1i_BFs1i_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1i_BFs1i_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1i_BFs1i_BFu1s, BFs1c_BFs1i_BFs1i_BFu1s)
//============================================================================


struct  BFs1c_BFs1i_BFs1ll  {
  signed char v1:1;
  signed int v2:1;
  signed __tsi64 v3:1;
};
//SIG(1 BFs1c_BFs1i_BFs1ll) C1{ Fc:1 Fi:1 FL:1}



static void Test_BFs1c_BFs1i_BFs1ll()
{
  {
    init_simple_test("BFs1c_BFs1i_BFs1ll");
    static STRUCT_IF_C BFs1c_BFs1i_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1i_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1i_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1i_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1i_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1i_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1i_BFs1ll, BFs1c_BFs1i_BFs1ll)
//============================================================================


struct  BFs1c_BFs1i_BFs1ll_BFs1c  {
  signed char v1:1;
  signed int v2:1;
  signed __tsi64 v3:1;
  signed char v4:1;
};
//SIG(1 BFs1c_BFs1i_BFs1ll_BFs1c) C1{ Fc:1 Fi:1 FL:1 Fc:1}



static void Test_BFs1c_BFs1i_BFs1ll_BFs1c()
{
  {
    init_simple_test("BFs1c_BFs1i_BFs1ll_BFs1c");
    static STRUCT_IF_C BFs1c_BFs1i_BFs1ll_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1i_BFs1ll_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1i_BFs1ll_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1i_BFs1ll_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1i_BFs1ll_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1i_BFs1ll_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1i_BFs1ll_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1i_BFs1ll_BFs1c, BFs1c_BFs1i_BFs1ll_BFs1c)
//============================================================================


struct  BFs1c_BFs1i_BFs1ll_BFs1i  {
  signed char v1:1;
  signed int v2:1;
  signed __tsi64 v3:1;
  signed int v4:1;
};
//SIG(1 BFs1c_BFs1i_BFs1ll_BFs1i) C1{ Fc:1 Fi:1 FL:1 Fi:1}



static void Test_BFs1c_BFs1i_BFs1ll_BFs1i()
{
  {
    init_simple_test("BFs1c_BFs1i_BFs1ll_BFs1i");
    static STRUCT_IF_C BFs1c_BFs1i_BFs1ll_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1i_BFs1ll_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1i_BFs1ll_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1i_BFs1ll_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1i_BFs1ll_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1i_BFs1ll_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1i_BFs1ll_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1i_BFs1ll_BFs1i, BFs1c_BFs1i_BFs1ll_BFs1i)
//============================================================================


struct  BFs1c_BFs1i_BFs1ll_BFs1ll  {
  signed char v1:1;
  signed int v2:1;
  signed __tsi64 v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1c_BFs1i_BFs1ll_BFs1ll) C1{ Fc:1 Fi:1 FL:1 FL:1}



static void Test_BFs1c_BFs1i_BFs1ll_BFs1ll()
{
  {
    init_simple_test("BFs1c_BFs1i_BFs1ll_BFs1ll");
    static STRUCT_IF_C BFs1c_BFs1i_BFs1ll_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1i_BFs1ll_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1i_BFs1ll_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1i_BFs1ll_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1i_BFs1ll_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1i_BFs1ll_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1i_BFs1ll_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1i_BFs1ll_BFs1ll, BFs1c_BFs1i_BFs1ll_BFs1ll)
//============================================================================


struct  BFs1c_BFs1i_BFs1ll_BFs1s  {
  signed char v1:1;
  signed int v2:1;
  signed __tsi64 v3:1;
  signed short v4:1;
};
//SIG(1 BFs1c_BFs1i_BFs1ll_BFs1s) C1{ Fc:1 Fi:1 FL:1 Fs:1}



static void Test_BFs1c_BFs1i_BFs1ll_BFs1s()
{
  {
    init_simple_test("BFs1c_BFs1i_BFs1ll_BFs1s");
    static STRUCT_IF_C BFs1c_BFs1i_BFs1ll_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1i_BFs1ll_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1i_BFs1ll_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1i_BFs1ll_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1i_BFs1ll_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1i_BFs1ll_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1i_BFs1ll_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1i_BFs1ll_BFs1s, BFs1c_BFs1i_BFs1ll_BFs1s)
//============================================================================


struct  BFs1c_BFs1i_BFs1ll_BFu1c  {
  signed char v1:1;
  signed int v2:1;
  signed __tsi64 v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1c_BFs1i_BFs1ll_BFu1c) C1{ Fc:1 Fi:1 FL:1 Fc:1}



static void Test_BFs1c_BFs1i_BFs1ll_BFu1c()
{
  {
    init_simple_test("BFs1c_BFs1i_BFs1ll_BFu1c");
    static STRUCT_IF_C BFs1c_BFs1i_BFs1ll_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1i_BFs1ll_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1i_BFs1ll_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1i_BFs1ll_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1i_BFs1ll_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1i_BFs1ll_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1i_BFs1ll_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1i_BFs1ll_BFu1c, BFs1c_BFs1i_BFs1ll_BFu1c)
//============================================================================


struct  BFs1c_BFs1i_BFs1ll_BFu1i  {
  signed char v1:1;
  signed int v2:1;
  signed __tsi64 v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1c_BFs1i_BFs1ll_BFu1i) C1{ Fc:1 Fi:1 FL:1 Fi:1}



static void Test_BFs1c_BFs1i_BFs1ll_BFu1i()
{
  {
    init_simple_test("BFs1c_BFs1i_BFs1ll_BFu1i");
    static STRUCT_IF_C BFs1c_BFs1i_BFs1ll_BFu1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1i_BFs1ll_BFu1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1i_BFs1ll_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1i_BFs1ll_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1i_BFs1ll_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1i_BFs1ll_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1i_BFs1ll_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1i_BFs1ll_BFu1i, BFs1c_BFs1i_BFs1ll_BFu1i)
//============================================================================


struct  BFs1c_BFs1i_BFs1ll_BFu1ll  {
  signed char v1:1;
  signed int v2:1;
  signed __tsi64 v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1c_BFs1i_BFs1ll_BFu1ll) C1{ Fc:1 Fi:1 FL:1 FL:1}



static void Test_BFs1c_BFs1i_BFs1ll_BFu1ll()
{
  {
    init_simple_test("BFs1c_BFs1i_BFs1ll_BFu1ll");
    static STRUCT_IF_C BFs1c_BFs1i_BFs1ll_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1i_BFs1ll_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1i_BFs1ll_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1i_BFs1ll_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1i_BFs1ll_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1i_BFs1ll_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1i_BFs1ll_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1i_BFs1ll_BFu1ll, BFs1c_BFs1i_BFs1ll_BFu1ll)
//============================================================================


struct  BFs1c_BFs1i_BFs1ll_BFu1s  {
  signed char v1:1;
  signed int v2:1;
  signed __tsi64 v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1c_BFs1i_BFs1ll_BFu1s) C1{ Fc:1 Fi:1 FL:1 Fs:1}



static void Test_BFs1c_BFs1i_BFs1ll_BFu1s()
{
  {
    init_simple_test("BFs1c_BFs1i_BFs1ll_BFu1s");
    static STRUCT_IF_C BFs1c_BFs1i_BFs1ll_BFu1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1i_BFs1ll_BFu1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1i_BFs1ll_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1i_BFs1ll_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1i_BFs1ll_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1i_BFs1ll_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1i_BFs1ll_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1i_BFs1ll_BFu1s, BFs1c_BFs1i_BFs1ll_BFu1s)
//============================================================================


struct  BFs1c_BFs1i_BFs1s  {
  signed char v1:1;
  signed int v2:1;
  signed short v3:1;
};
//SIG(1 BFs1c_BFs1i_BFs1s) C1{ Fc:1 Fi:1 Fs:1}



static void Test_BFs1c_BFs1i_BFs1s()
{
  {
    init_simple_test("BFs1c_BFs1i_BFs1s");
    static STRUCT_IF_C BFs1c_BFs1i_BFs1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1i_BFs1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1i_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1i_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1i_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1i_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1i_BFs1s, BFs1c_BFs1i_BFs1s)
//============================================================================


struct  BFs1c_BFs1i_BFs1s_BFs1c  {
  signed char v1:1;
  signed int v2:1;
  signed short v3:1;
  signed char v4:1;
};
//SIG(1 BFs1c_BFs1i_BFs1s_BFs1c) C1{ Fc:1 Fi:1 Fs:1 Fc:1}



static void Test_BFs1c_BFs1i_BFs1s_BFs1c()
{
  {
    init_simple_test("BFs1c_BFs1i_BFs1s_BFs1c");
    static STRUCT_IF_C BFs1c_BFs1i_BFs1s_BFs1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1i_BFs1s_BFs1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1i_BFs1s_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1i_BFs1s_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1i_BFs1s_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1i_BFs1s_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1i_BFs1s_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1i_BFs1s_BFs1c, BFs1c_BFs1i_BFs1s_BFs1c)
//============================================================================


struct  BFs1c_BFs1i_BFs1s_BFs1i  {
  signed char v1:1;
  signed int v2:1;
  signed short v3:1;
  signed int v4:1;
};
//SIG(1 BFs1c_BFs1i_BFs1s_BFs1i) C1{ Fc:1 Fi:1 Fs:1 Fi:1}



static void Test_BFs1c_BFs1i_BFs1s_BFs1i()
{
  {
    init_simple_test("BFs1c_BFs1i_BFs1s_BFs1i");
    static STRUCT_IF_C BFs1c_BFs1i_BFs1s_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1i_BFs1s_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1i_BFs1s_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1i_BFs1s_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1i_BFs1s_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1i_BFs1s_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1i_BFs1s_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1i_BFs1s_BFs1i, BFs1c_BFs1i_BFs1s_BFs1i)
//============================================================================


struct  BFs1c_BFs1i_BFs1s_BFs1ll  {
  signed char v1:1;
  signed int v2:1;
  signed short v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1c_BFs1i_BFs1s_BFs1ll) C1{ Fc:1 Fi:1 Fs:1 FL:1}



static void Test_BFs1c_BFs1i_BFs1s_BFs1ll()
{
  {
    init_simple_test("BFs1c_BFs1i_BFs1s_BFs1ll");
    static STRUCT_IF_C BFs1c_BFs1i_BFs1s_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1i_BFs1s_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1i_BFs1s_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1i_BFs1s_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1i_BFs1s_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1i_BFs1s_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1i_BFs1s_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1i_BFs1s_BFs1ll, BFs1c_BFs1i_BFs1s_BFs1ll)
//============================================================================


struct  BFs1c_BFs1i_BFs1s_BFs1s  {
  signed char v1:1;
  signed int v2:1;
  signed short v3:1;
  signed short v4:1;
};
//SIG(1 BFs1c_BFs1i_BFs1s_BFs1s) C1{ Fc:1 Fi:1 Fs:1 Fs:1}



static void Test_BFs1c_BFs1i_BFs1s_BFs1s()
{
  {
    init_simple_test("BFs1c_BFs1i_BFs1s_BFs1s");
    static STRUCT_IF_C BFs1c_BFs1i_BFs1s_BFs1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1i_BFs1s_BFs1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1i_BFs1s_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1i_BFs1s_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1i_BFs1s_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1i_BFs1s_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1i_BFs1s_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1i_BFs1s_BFs1s, BFs1c_BFs1i_BFs1s_BFs1s)
//============================================================================


struct  BFs1c_BFs1i_BFs1s_BFu1c  {
  signed char v1:1;
  signed int v2:1;
  signed short v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1c_BFs1i_BFs1s_BFu1c) C1{ Fc:1 Fi:1 Fs:1 Fc:1}



static void Test_BFs1c_BFs1i_BFs1s_BFu1c()
{
  {
    init_simple_test("BFs1c_BFs1i_BFs1s_BFu1c");
    static STRUCT_IF_C BFs1c_BFs1i_BFs1s_BFu1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1i_BFs1s_BFu1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1i_BFs1s_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1i_BFs1s_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1i_BFs1s_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1i_BFs1s_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1i_BFs1s_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1i_BFs1s_BFu1c, BFs1c_BFs1i_BFs1s_BFu1c)
//============================================================================


struct  BFs1c_BFs1i_BFs1s_BFu1i  {
  signed char v1:1;
  signed int v2:1;
  signed short v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1c_BFs1i_BFs1s_BFu1i) C1{ Fc:1 Fi:1 Fs:1 Fi:1}



static void Test_BFs1c_BFs1i_BFs1s_BFu1i()
{
  {
    init_simple_test("BFs1c_BFs1i_BFs1s_BFu1i");
    static STRUCT_IF_C BFs1c_BFs1i_BFs1s_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1i_BFs1s_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1i_BFs1s_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1i_BFs1s_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1i_BFs1s_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1i_BFs1s_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1i_BFs1s_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1i_BFs1s_BFu1i, BFs1c_BFs1i_BFs1s_BFu1i)
//============================================================================


struct  BFs1c_BFs1i_BFs1s_BFu1ll  {
  signed char v1:1;
  signed int v2:1;
  signed short v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1c_BFs1i_BFs1s_BFu1ll) C1{ Fc:1 Fi:1 Fs:1 FL:1}



static void Test_BFs1c_BFs1i_BFs1s_BFu1ll()
{
  {
    init_simple_test("BFs1c_BFs1i_BFs1s_BFu1ll");
    static STRUCT_IF_C BFs1c_BFs1i_BFs1s_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1i_BFs1s_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1i_BFs1s_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1i_BFs1s_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1i_BFs1s_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1i_BFs1s_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1i_BFs1s_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1i_BFs1s_BFu1ll, BFs1c_BFs1i_BFs1s_BFu1ll)
//============================================================================


struct  BFs1c_BFs1i_BFs1s_BFu1s  {
  signed char v1:1;
  signed int v2:1;
  signed short v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1c_BFs1i_BFs1s_BFu1s) C1{ Fc:1 Fi:1 Fs:1 Fs:1}



static void Test_BFs1c_BFs1i_BFs1s_BFu1s()
{
  {
    init_simple_test("BFs1c_BFs1i_BFs1s_BFu1s");
    static STRUCT_IF_C BFs1c_BFs1i_BFs1s_BFu1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1i_BFs1s_BFu1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1i_BFs1s_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1i_BFs1s_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1i_BFs1s_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1i_BFs1s_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1i_BFs1s_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1i_BFs1s_BFu1s, BFs1c_BFs1i_BFs1s_BFu1s)
//============================================================================


struct  BFs1c_BFs1i_BFu1c  {
  signed char v1:1;
  signed int v2:1;
  unsigned char v3:1;
};
//SIG(1 BFs1c_BFs1i_BFu1c) C1{ Fc:1 Fi:1 Fc:1}



static void Test_BFs1c_BFs1i_BFu1c()
{
  {
    init_simple_test("BFs1c_BFs1i_BFu1c");
    static STRUCT_IF_C BFs1c_BFs1i_BFu1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1i_BFu1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1i_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1i_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1i_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1i_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1i_BFu1c, BFs1c_BFs1i_BFu1c)
//============================================================================


struct  BFs1c_BFs1i_BFu1c_BFs1c  {
  signed char v1:1;
  signed int v2:1;
  unsigned char v3:1;
  signed char v4:1;
};
//SIG(1 BFs1c_BFs1i_BFu1c_BFs1c) C1{ Fc:1 Fi:1 Fc:1 Fc:1}



static void Test_BFs1c_BFs1i_BFu1c_BFs1c()
{
  {
    init_simple_test("BFs1c_BFs1i_BFu1c_BFs1c");
    static STRUCT_IF_C BFs1c_BFs1i_BFu1c_BFs1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1i_BFu1c_BFs1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1i_BFu1c_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1i_BFu1c_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1i_BFu1c_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1i_BFu1c_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1i_BFu1c_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1i_BFu1c_BFs1c, BFs1c_BFs1i_BFu1c_BFs1c)
//============================================================================


struct  BFs1c_BFs1i_BFu1c_BFs1i  {
  signed char v1:1;
  signed int v2:1;
  unsigned char v3:1;
  signed int v4:1;
};
//SIG(1 BFs1c_BFs1i_BFu1c_BFs1i) C1{ Fc:1 Fi:1 Fc:1 Fi:1}



static void Test_BFs1c_BFs1i_BFu1c_BFs1i()
{
  {
    init_simple_test("BFs1c_BFs1i_BFu1c_BFs1i");
    static STRUCT_IF_C BFs1c_BFs1i_BFu1c_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1i_BFu1c_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1i_BFu1c_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1i_BFu1c_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1i_BFu1c_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1i_BFu1c_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1i_BFu1c_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1i_BFu1c_BFs1i, BFs1c_BFs1i_BFu1c_BFs1i)
//============================================================================


struct  BFs1c_BFs1i_BFu1c_BFs1ll  {
  signed char v1:1;
  signed int v2:1;
  unsigned char v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1c_BFs1i_BFu1c_BFs1ll) C1{ Fc:1 Fi:1 Fc:1 FL:1}



static void Test_BFs1c_BFs1i_BFu1c_BFs1ll()
{
  {
    init_simple_test("BFs1c_BFs1i_BFu1c_BFs1ll");
    static STRUCT_IF_C BFs1c_BFs1i_BFu1c_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1i_BFu1c_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1i_BFu1c_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1i_BFu1c_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1i_BFu1c_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1i_BFu1c_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1i_BFu1c_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1i_BFu1c_BFs1ll, BFs1c_BFs1i_BFu1c_BFs1ll)
//============================================================================


struct  BFs1c_BFs1i_BFu1c_BFs1s  {
  signed char v1:1;
  signed int v2:1;
  unsigned char v3:1;
  signed short v4:1;
};
//SIG(1 BFs1c_BFs1i_BFu1c_BFs1s) C1{ Fc:1 Fi:1 Fc:1 Fs:1}



static void Test_BFs1c_BFs1i_BFu1c_BFs1s()
{
  {
    init_simple_test("BFs1c_BFs1i_BFu1c_BFs1s");
    static STRUCT_IF_C BFs1c_BFs1i_BFu1c_BFs1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1i_BFu1c_BFs1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1i_BFu1c_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1i_BFu1c_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1i_BFu1c_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1i_BFu1c_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1i_BFu1c_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1i_BFu1c_BFs1s, BFs1c_BFs1i_BFu1c_BFs1s)
//============================================================================


struct  BFs1c_BFs1i_BFu1c_BFu1c  {
  signed char v1:1;
  signed int v2:1;
  unsigned char v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1c_BFs1i_BFu1c_BFu1c) C1{ Fc:1 Fi:1 Fc:1 Fc:1}



static void Test_BFs1c_BFs1i_BFu1c_BFu1c()
{
  {
    init_simple_test("BFs1c_BFs1i_BFu1c_BFu1c");
    static STRUCT_IF_C BFs1c_BFs1i_BFu1c_BFu1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1i_BFu1c_BFu1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1i_BFu1c_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1i_BFu1c_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1i_BFu1c_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1i_BFu1c_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1i_BFu1c_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1i_BFu1c_BFu1c, BFs1c_BFs1i_BFu1c_BFu1c)
//============================================================================


struct  BFs1c_BFs1i_BFu1c_BFu1i  {
  signed char v1:1;
  signed int v2:1;
  unsigned char v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1c_BFs1i_BFu1c_BFu1i) C1{ Fc:1 Fi:1 Fc:1 Fi:1}



static void Test_BFs1c_BFs1i_BFu1c_BFu1i()
{
  {
    init_simple_test("BFs1c_BFs1i_BFu1c_BFu1i");
    static STRUCT_IF_C BFs1c_BFs1i_BFu1c_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1i_BFu1c_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1i_BFu1c_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1i_BFu1c_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1i_BFu1c_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1i_BFu1c_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1i_BFu1c_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1i_BFu1c_BFu1i, BFs1c_BFs1i_BFu1c_BFu1i)
//============================================================================


struct  BFs1c_BFs1i_BFu1c_BFu1ll  {
  signed char v1:1;
  signed int v2:1;
  unsigned char v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1c_BFs1i_BFu1c_BFu1ll) C1{ Fc:1 Fi:1 Fc:1 FL:1}



static void Test_BFs1c_BFs1i_BFu1c_BFu1ll()
{
  {
    init_simple_test("BFs1c_BFs1i_BFu1c_BFu1ll");
    static STRUCT_IF_C BFs1c_BFs1i_BFu1c_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1i_BFu1c_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1i_BFu1c_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1i_BFu1c_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1i_BFu1c_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1i_BFu1c_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1i_BFu1c_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1i_BFu1c_BFu1ll, BFs1c_BFs1i_BFu1c_BFu1ll)
//============================================================================


struct  BFs1c_BFs1i_BFu1c_BFu1s  {
  signed char v1:1;
  signed int v2:1;
  unsigned char v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1c_BFs1i_BFu1c_BFu1s) C1{ Fc:1 Fi:1 Fc:1 Fs:1}



static void Test_BFs1c_BFs1i_BFu1c_BFu1s()
{
  {
    init_simple_test("BFs1c_BFs1i_BFu1c_BFu1s");
    static STRUCT_IF_C BFs1c_BFs1i_BFu1c_BFu1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1i_BFu1c_BFu1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1i_BFu1c_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1i_BFu1c_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1i_BFu1c_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1i_BFu1c_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1i_BFu1c_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1i_BFu1c_BFu1s, BFs1c_BFs1i_BFu1c_BFu1s)
//============================================================================


struct  BFs1c_BFs1i_BFu1i  {
  signed char v1:1;
  signed int v2:1;
  unsigned int v3:1;
};
//SIG(1 BFs1c_BFs1i_BFu1i) C1{ Fc:1 Fi:1 Fi:1}



static void Test_BFs1c_BFs1i_BFu1i()
{
  {
    init_simple_test("BFs1c_BFs1i_BFu1i");
    static STRUCT_IF_C BFs1c_BFs1i_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1i_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1i_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1i_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1i_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1i_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1i_BFu1i, BFs1c_BFs1i_BFu1i)
//============================================================================


struct  BFs1c_BFs1i_BFu1i_BFs1c  {
  signed char v1:1;
  signed int v2:1;
  unsigned int v3:1;
  signed char v4:1;
};
//SIG(1 BFs1c_BFs1i_BFu1i_BFs1c) C1{ Fc:1 Fi:1 Fi:1 Fc:1}



static void Test_BFs1c_BFs1i_BFu1i_BFs1c()
{
  {
    init_simple_test("BFs1c_BFs1i_BFu1i_BFs1c");
    static STRUCT_IF_C BFs1c_BFs1i_BFu1i_BFs1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1i_BFu1i_BFs1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1i_BFu1i_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1i_BFu1i_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1i_BFu1i_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1i_BFu1i_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1i_BFu1i_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1i_BFu1i_BFs1c, BFs1c_BFs1i_BFu1i_BFs1c)
//============================================================================


struct  BFs1c_BFs1i_BFu1i_BFs1i  {
  signed char v1:1;
  signed int v2:1;
  unsigned int v3:1;
  signed int v4:1;
};
//SIG(1 BFs1c_BFs1i_BFu1i_BFs1i) C1{ Fc:1 Fi:1 Fi:1 Fi:1}



static void Test_BFs1c_BFs1i_BFu1i_BFs1i()
{
  {
    init_simple_test("BFs1c_BFs1i_BFu1i_BFs1i");
    static STRUCT_IF_C BFs1c_BFs1i_BFu1i_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1i_BFu1i_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1i_BFu1i_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1i_BFu1i_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1i_BFu1i_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1i_BFu1i_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1i_BFu1i_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1i_BFu1i_BFs1i, BFs1c_BFs1i_BFu1i_BFs1i)
//============================================================================


struct  BFs1c_BFs1i_BFu1i_BFs1ll  {
  signed char v1:1;
  signed int v2:1;
  unsigned int v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1c_BFs1i_BFu1i_BFs1ll) C1{ Fc:1 Fi:1 Fi:1 FL:1}



static void Test_BFs1c_BFs1i_BFu1i_BFs1ll()
{
  {
    init_simple_test("BFs1c_BFs1i_BFu1i_BFs1ll");
    static STRUCT_IF_C BFs1c_BFs1i_BFu1i_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1i_BFu1i_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1i_BFu1i_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1i_BFu1i_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1i_BFu1i_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1i_BFu1i_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1i_BFu1i_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1i_BFu1i_BFs1ll, BFs1c_BFs1i_BFu1i_BFs1ll)
//============================================================================


struct  BFs1c_BFs1i_BFu1i_BFs1s  {
  signed char v1:1;
  signed int v2:1;
  unsigned int v3:1;
  signed short v4:1;
};
//SIG(1 BFs1c_BFs1i_BFu1i_BFs1s) C1{ Fc:1 Fi:1 Fi:1 Fs:1}



static void Test_BFs1c_BFs1i_BFu1i_BFs1s()
{
  {
    init_simple_test("BFs1c_BFs1i_BFu1i_BFs1s");
    static STRUCT_IF_C BFs1c_BFs1i_BFu1i_BFs1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1i_BFu1i_BFs1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1i_BFu1i_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1i_BFu1i_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1i_BFu1i_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1i_BFu1i_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1i_BFu1i_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1i_BFu1i_BFs1s, BFs1c_BFs1i_BFu1i_BFs1s)
//============================================================================


struct  BFs1c_BFs1i_BFu1i_BFu1c  {
  signed char v1:1;
  signed int v2:1;
  unsigned int v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1c_BFs1i_BFu1i_BFu1c) C1{ Fc:1 Fi:1 Fi:1 Fc:1}



static void Test_BFs1c_BFs1i_BFu1i_BFu1c()
{
  {
    init_simple_test("BFs1c_BFs1i_BFu1i_BFu1c");
    static STRUCT_IF_C BFs1c_BFs1i_BFu1i_BFu1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1i_BFu1i_BFu1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1i_BFu1i_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1i_BFu1i_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1i_BFu1i_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1i_BFu1i_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1i_BFu1i_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1i_BFu1i_BFu1c, BFs1c_BFs1i_BFu1i_BFu1c)
//============================================================================


struct  BFs1c_BFs1i_BFu1i_BFu1i  {
  signed char v1:1;
  signed int v2:1;
  unsigned int v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1c_BFs1i_BFu1i_BFu1i) C1{ Fc:1 Fi:1 Fi:1 Fi:1}



static void Test_BFs1c_BFs1i_BFu1i_BFu1i()
{
  {
    init_simple_test("BFs1c_BFs1i_BFu1i_BFu1i");
    static STRUCT_IF_C BFs1c_BFs1i_BFu1i_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1i_BFu1i_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1i_BFu1i_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1i_BFu1i_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1i_BFu1i_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1i_BFu1i_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1i_BFu1i_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1i_BFu1i_BFu1i, BFs1c_BFs1i_BFu1i_BFu1i)
//============================================================================


struct  BFs1c_BFs1i_BFu1i_BFu1ll  {
  signed char v1:1;
  signed int v2:1;
  unsigned int v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1c_BFs1i_BFu1i_BFu1ll) C1{ Fc:1 Fi:1 Fi:1 FL:1}



static void Test_BFs1c_BFs1i_BFu1i_BFu1ll()
{
  {
    init_simple_test("BFs1c_BFs1i_BFu1i_BFu1ll");
    static STRUCT_IF_C BFs1c_BFs1i_BFu1i_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1i_BFu1i_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1i_BFu1i_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1i_BFu1i_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1i_BFu1i_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1i_BFu1i_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1i_BFu1i_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1i_BFu1i_BFu1ll, BFs1c_BFs1i_BFu1i_BFu1ll)
//============================================================================


struct  BFs1c_BFs1i_BFu1i_BFu1s  {
  signed char v1:1;
  signed int v2:1;
  unsigned int v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1c_BFs1i_BFu1i_BFu1s) C1{ Fc:1 Fi:1 Fi:1 Fs:1}



static void Test_BFs1c_BFs1i_BFu1i_BFu1s()
{
  {
    init_simple_test("BFs1c_BFs1i_BFu1i_BFu1s");
    static STRUCT_IF_C BFs1c_BFs1i_BFu1i_BFu1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1i_BFu1i_BFu1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1i_BFu1i_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1i_BFu1i_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1i_BFu1i_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1i_BFu1i_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1i_BFu1i_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1i_BFu1i_BFu1s, BFs1c_BFs1i_BFu1i_BFu1s)
//============================================================================


struct  BFs1c_BFs1i_BFu1ll  {
  signed char v1:1;
  signed int v2:1;
  __tsu64 v3:1;
};
//SIG(1 BFs1c_BFs1i_BFu1ll) C1{ Fc:1 Fi:1 FL:1}



static void Test_BFs1c_BFs1i_BFu1ll()
{
  {
    init_simple_test("BFs1c_BFs1i_BFu1ll");
    static STRUCT_IF_C BFs1c_BFs1i_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1i_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1i_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1i_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1i_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1i_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1i_BFu1ll, BFs1c_BFs1i_BFu1ll)
//============================================================================


struct  BFs1c_BFs1i_BFu1ll_BFs1c  {
  signed char v1:1;
  signed int v2:1;
  __tsu64 v3:1;
  signed char v4:1;
};
//SIG(1 BFs1c_BFs1i_BFu1ll_BFs1c) C1{ Fc:1 Fi:1 FL:1 Fc:1}



static void Test_BFs1c_BFs1i_BFu1ll_BFs1c()
{
  {
    init_simple_test("BFs1c_BFs1i_BFu1ll_BFs1c");
    static STRUCT_IF_C BFs1c_BFs1i_BFu1ll_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1i_BFu1ll_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1i_BFu1ll_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1i_BFu1ll_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1i_BFu1ll_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1i_BFu1ll_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1i_BFu1ll_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1i_BFu1ll_BFs1c, BFs1c_BFs1i_BFu1ll_BFs1c)
//============================================================================


struct  BFs1c_BFs1i_BFu1ll_BFs1i  {
  signed char v1:1;
  signed int v2:1;
  __tsu64 v3:1;
  signed int v4:1;
};
//SIG(1 BFs1c_BFs1i_BFu1ll_BFs1i) C1{ Fc:1 Fi:1 FL:1 Fi:1}



static void Test_BFs1c_BFs1i_BFu1ll_BFs1i()
{
  {
    init_simple_test("BFs1c_BFs1i_BFu1ll_BFs1i");
    static STRUCT_IF_C BFs1c_BFs1i_BFu1ll_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1i_BFu1ll_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1i_BFu1ll_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1i_BFu1ll_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1i_BFu1ll_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1i_BFu1ll_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1i_BFu1ll_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1i_BFu1ll_BFs1i, BFs1c_BFs1i_BFu1ll_BFs1i)
//============================================================================


struct  BFs1c_BFs1i_BFu1ll_BFs1ll  {
  signed char v1:1;
  signed int v2:1;
  __tsu64 v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1c_BFs1i_BFu1ll_BFs1ll) C1{ Fc:1 Fi:1 FL:1 FL:1}



static void Test_BFs1c_BFs1i_BFu1ll_BFs1ll()
{
  {
    init_simple_test("BFs1c_BFs1i_BFu1ll_BFs1ll");
    static STRUCT_IF_C BFs1c_BFs1i_BFu1ll_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1i_BFu1ll_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1i_BFu1ll_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1i_BFu1ll_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1i_BFu1ll_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1i_BFu1ll_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1i_BFu1ll_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1i_BFu1ll_BFs1ll, BFs1c_BFs1i_BFu1ll_BFs1ll)
//============================================================================


struct  BFs1c_BFs1i_BFu1ll_BFs1s  {
  signed char v1:1;
  signed int v2:1;
  __tsu64 v3:1;
  signed short v4:1;
};
//SIG(1 BFs1c_BFs1i_BFu1ll_BFs1s) C1{ Fc:1 Fi:1 FL:1 Fs:1}



static void Test_BFs1c_BFs1i_BFu1ll_BFs1s()
{
  {
    init_simple_test("BFs1c_BFs1i_BFu1ll_BFs1s");
    static STRUCT_IF_C BFs1c_BFs1i_BFu1ll_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1i_BFu1ll_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1i_BFu1ll_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1i_BFu1ll_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1i_BFu1ll_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1i_BFu1ll_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1i_BFu1ll_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1i_BFu1ll_BFs1s, BFs1c_BFs1i_BFu1ll_BFs1s)
//============================================================================


struct  BFs1c_BFs1i_BFu1ll_BFu1c  {
  signed char v1:1;
  signed int v2:1;
  __tsu64 v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1c_BFs1i_BFu1ll_BFu1c) C1{ Fc:1 Fi:1 FL:1 Fc:1}



static void Test_BFs1c_BFs1i_BFu1ll_BFu1c()
{
  {
    init_simple_test("BFs1c_BFs1i_BFu1ll_BFu1c");
    static STRUCT_IF_C BFs1c_BFs1i_BFu1ll_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1i_BFu1ll_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1i_BFu1ll_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1i_BFu1ll_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1i_BFu1ll_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1i_BFu1ll_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1i_BFu1ll_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1i_BFu1ll_BFu1c, BFs1c_BFs1i_BFu1ll_BFu1c)
//============================================================================


struct  BFs1c_BFs1i_BFu1ll_BFu1i  {
  signed char v1:1;
  signed int v2:1;
  __tsu64 v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1c_BFs1i_BFu1ll_BFu1i) C1{ Fc:1 Fi:1 FL:1 Fi:1}



static void Test_BFs1c_BFs1i_BFu1ll_BFu1i()
{
  {
    init_simple_test("BFs1c_BFs1i_BFu1ll_BFu1i");
    static STRUCT_IF_C BFs1c_BFs1i_BFu1ll_BFu1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1i_BFu1ll_BFu1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1i_BFu1ll_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1i_BFu1ll_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1i_BFu1ll_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1i_BFu1ll_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1i_BFu1ll_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1i_BFu1ll_BFu1i, BFs1c_BFs1i_BFu1ll_BFu1i)
//============================================================================


struct  BFs1c_BFs1i_BFu1ll_BFu1ll  {
  signed char v1:1;
  signed int v2:1;
  __tsu64 v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1c_BFs1i_BFu1ll_BFu1ll) C1{ Fc:1 Fi:1 FL:1 FL:1}



static void Test_BFs1c_BFs1i_BFu1ll_BFu1ll()
{
  {
    init_simple_test("BFs1c_BFs1i_BFu1ll_BFu1ll");
    static STRUCT_IF_C BFs1c_BFs1i_BFu1ll_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1i_BFu1ll_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1i_BFu1ll_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1i_BFu1ll_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1i_BFu1ll_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1i_BFu1ll_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1i_BFu1ll_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1i_BFu1ll_BFu1ll, BFs1c_BFs1i_BFu1ll_BFu1ll)
//============================================================================


struct  BFs1c_BFs1i_BFu1ll_BFu1s  {
  signed char v1:1;
  signed int v2:1;
  __tsu64 v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1c_BFs1i_BFu1ll_BFu1s) C1{ Fc:1 Fi:1 FL:1 Fs:1}



static void Test_BFs1c_BFs1i_BFu1ll_BFu1s()
{
  {
    init_simple_test("BFs1c_BFs1i_BFu1ll_BFu1s");
    static STRUCT_IF_C BFs1c_BFs1i_BFu1ll_BFu1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1i_BFu1ll_BFu1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1i_BFu1ll_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1i_BFu1ll_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1i_BFu1ll_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1i_BFu1ll_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1i_BFu1ll_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1i_BFu1ll_BFu1s, BFs1c_BFs1i_BFu1ll_BFu1s)
//============================================================================


struct  BFs1c_BFs1i_BFu1s  {
  signed char v1:1;
  signed int v2:1;
  unsigned short v3:1;
};
//SIG(1 BFs1c_BFs1i_BFu1s) C1{ Fc:1 Fi:1 Fs:1}



static void Test_BFs1c_BFs1i_BFu1s()
{
  {
    init_simple_test("BFs1c_BFs1i_BFu1s");
    static STRUCT_IF_C BFs1c_BFs1i_BFu1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1i_BFu1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1i_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1i_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1i_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1i_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1i_BFu1s, BFs1c_BFs1i_BFu1s)
//============================================================================


struct  BFs1c_BFs1i_BFu1s_BFs1c  {
  signed char v1:1;
  signed int v2:1;
  unsigned short v3:1;
  signed char v4:1;
};
//SIG(1 BFs1c_BFs1i_BFu1s_BFs1c) C1{ Fc:1 Fi:1 Fs:1 Fc:1}



static void Test_BFs1c_BFs1i_BFu1s_BFs1c()
{
  {
    init_simple_test("BFs1c_BFs1i_BFu1s_BFs1c");
    static STRUCT_IF_C BFs1c_BFs1i_BFu1s_BFs1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1i_BFu1s_BFs1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1i_BFu1s_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1i_BFu1s_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1i_BFu1s_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1i_BFu1s_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1i_BFu1s_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1i_BFu1s_BFs1c, BFs1c_BFs1i_BFu1s_BFs1c)
//============================================================================


struct  BFs1c_BFs1i_BFu1s_BFs1i  {
  signed char v1:1;
  signed int v2:1;
  unsigned short v3:1;
  signed int v4:1;
};
//SIG(1 BFs1c_BFs1i_BFu1s_BFs1i) C1{ Fc:1 Fi:1 Fs:1 Fi:1}



static void Test_BFs1c_BFs1i_BFu1s_BFs1i()
{
  {
    init_simple_test("BFs1c_BFs1i_BFu1s_BFs1i");
    static STRUCT_IF_C BFs1c_BFs1i_BFu1s_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1i_BFu1s_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1i_BFu1s_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1i_BFu1s_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1i_BFu1s_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1i_BFu1s_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1i_BFu1s_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1i_BFu1s_BFs1i, BFs1c_BFs1i_BFu1s_BFs1i)
//============================================================================


struct  BFs1c_BFs1i_BFu1s_BFs1ll  {
  signed char v1:1;
  signed int v2:1;
  unsigned short v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1c_BFs1i_BFu1s_BFs1ll) C1{ Fc:1 Fi:1 Fs:1 FL:1}



static void Test_BFs1c_BFs1i_BFu1s_BFs1ll()
{
  {
    init_simple_test("BFs1c_BFs1i_BFu1s_BFs1ll");
    static STRUCT_IF_C BFs1c_BFs1i_BFu1s_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1i_BFu1s_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1i_BFu1s_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1i_BFu1s_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1i_BFu1s_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1i_BFu1s_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1i_BFu1s_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1i_BFu1s_BFs1ll, BFs1c_BFs1i_BFu1s_BFs1ll)
//============================================================================


struct  BFs1c_BFs1i_BFu1s_BFs1s  {
  signed char v1:1;
  signed int v2:1;
  unsigned short v3:1;
  signed short v4:1;
};
//SIG(1 BFs1c_BFs1i_BFu1s_BFs1s) C1{ Fc:1 Fi:1 Fs:1 Fs:1}



static void Test_BFs1c_BFs1i_BFu1s_BFs1s()
{
  {
    init_simple_test("BFs1c_BFs1i_BFu1s_BFs1s");
    static STRUCT_IF_C BFs1c_BFs1i_BFu1s_BFs1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1i_BFu1s_BFs1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1i_BFu1s_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1i_BFu1s_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1i_BFu1s_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1i_BFu1s_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1i_BFu1s_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1i_BFu1s_BFs1s, BFs1c_BFs1i_BFu1s_BFs1s)
//============================================================================


struct  BFs1c_BFs1i_BFu1s_BFu1c  {
  signed char v1:1;
  signed int v2:1;
  unsigned short v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1c_BFs1i_BFu1s_BFu1c) C1{ Fc:1 Fi:1 Fs:1 Fc:1}



static void Test_BFs1c_BFs1i_BFu1s_BFu1c()
{
  {
    init_simple_test("BFs1c_BFs1i_BFu1s_BFu1c");
    static STRUCT_IF_C BFs1c_BFs1i_BFu1s_BFu1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1i_BFu1s_BFu1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1i_BFu1s_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1i_BFu1s_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1i_BFu1s_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1i_BFu1s_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1i_BFu1s_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1i_BFu1s_BFu1c, BFs1c_BFs1i_BFu1s_BFu1c)
//============================================================================


struct  BFs1c_BFs1i_BFu1s_BFu1i  {
  signed char v1:1;
  signed int v2:1;
  unsigned short v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1c_BFs1i_BFu1s_BFu1i) C1{ Fc:1 Fi:1 Fs:1 Fi:1}



static void Test_BFs1c_BFs1i_BFu1s_BFu1i()
{
  {
    init_simple_test("BFs1c_BFs1i_BFu1s_BFu1i");
    static STRUCT_IF_C BFs1c_BFs1i_BFu1s_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1i_BFu1s_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1i_BFu1s_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1i_BFu1s_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1i_BFu1s_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1i_BFu1s_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1i_BFu1s_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1i_BFu1s_BFu1i, BFs1c_BFs1i_BFu1s_BFu1i)
//============================================================================


struct  BFs1c_BFs1i_BFu1s_BFu1ll  {
  signed char v1:1;
  signed int v2:1;
  unsigned short v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1c_BFs1i_BFu1s_BFu1ll) C1{ Fc:1 Fi:1 Fs:1 FL:1}



static void Test_BFs1c_BFs1i_BFu1s_BFu1ll()
{
  {
    init_simple_test("BFs1c_BFs1i_BFu1s_BFu1ll");
    static STRUCT_IF_C BFs1c_BFs1i_BFu1s_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1i_BFu1s_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1i_BFu1s_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1i_BFu1s_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1i_BFu1s_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1i_BFu1s_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1i_BFu1s_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1i_BFu1s_BFu1ll, BFs1c_BFs1i_BFu1s_BFu1ll)
//============================================================================


struct  BFs1c_BFs1i_BFu1s_BFu1s  {
  signed char v1:1;
  signed int v2:1;
  unsigned short v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1c_BFs1i_BFu1s_BFu1s) C1{ Fc:1 Fi:1 Fs:1 Fs:1}



static void Test_BFs1c_BFs1i_BFu1s_BFu1s()
{
  {
    init_simple_test("BFs1c_BFs1i_BFu1s_BFu1s");
    static STRUCT_IF_C BFs1c_BFs1i_BFu1s_BFu1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1i_BFu1s_BFu1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1i_BFu1s_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1i_BFu1s_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1i_BFu1s_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1i_BFu1s_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1i_BFu1s_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1i_BFu1s_BFu1s, BFs1c_BFs1i_BFu1s_BFu1s)
//============================================================================


struct  BFs1c_BFs1ll  {
  signed char v1:1;
  signed __tsi64 v2:1;
};
//SIG(1 BFs1c_BFs1ll) C1{ Fc:1 FL:1}



static void Test_BFs1c_BFs1ll()
{
  {
    init_simple_test("BFs1c_BFs1ll");
    static STRUCT_IF_C BFs1c_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1ll, BFs1c_BFs1ll)
//============================================================================


struct  BFs1c_BFs1ll_BFs1c  {
  signed char v1:1;
  signed __tsi64 v2:1;
  signed char v3:1;
};
//SIG(1 BFs1c_BFs1ll_BFs1c) C1{ Fc:1 FL:1 Fc:1}



static void Test_BFs1c_BFs1ll_BFs1c()
{
  {
    init_simple_test("BFs1c_BFs1ll_BFs1c");
    static STRUCT_IF_C BFs1c_BFs1ll_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1ll_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1ll_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1ll_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1ll_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1ll_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1ll_BFs1c, BFs1c_BFs1ll_BFs1c)
//============================================================================


struct  BFs1c_BFs1ll_BFs1c_BFs1c  {
  signed char v1:1;
  signed __tsi64 v2:1;
  signed char v3:1;
  signed char v4:1;
};
//SIG(1 BFs1c_BFs1ll_BFs1c_BFs1c) C1{ Fc:1 FL:1 Fc:1 Fc:1}



static void Test_BFs1c_BFs1ll_BFs1c_BFs1c()
{
  {
    init_simple_test("BFs1c_BFs1ll_BFs1c_BFs1c");
    static STRUCT_IF_C BFs1c_BFs1ll_BFs1c_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1ll_BFs1c_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1ll_BFs1c_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1ll_BFs1c_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1ll_BFs1c_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1ll_BFs1c_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1ll_BFs1c_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1ll_BFs1c_BFs1c, BFs1c_BFs1ll_BFs1c_BFs1c)
//============================================================================


struct  BFs1c_BFs1ll_BFs1c_BFs1i  {
  signed char v1:1;
  signed __tsi64 v2:1;
  signed char v3:1;
  signed int v4:1;
};
//SIG(1 BFs1c_BFs1ll_BFs1c_BFs1i) C1{ Fc:1 FL:1 Fc:1 Fi:1}



static void Test_BFs1c_BFs1ll_BFs1c_BFs1i()
{
  {
    init_simple_test("BFs1c_BFs1ll_BFs1c_BFs1i");
    static STRUCT_IF_C BFs1c_BFs1ll_BFs1c_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1ll_BFs1c_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1ll_BFs1c_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1ll_BFs1c_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1ll_BFs1c_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1ll_BFs1c_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1ll_BFs1c_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1ll_BFs1c_BFs1i, BFs1c_BFs1ll_BFs1c_BFs1i)
//============================================================================


struct  BFs1c_BFs1ll_BFs1c_BFs1ll  {
  signed char v1:1;
  signed __tsi64 v2:1;
  signed char v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1c_BFs1ll_BFs1c_BFs1ll) C1{ Fc:1 FL:1 Fc:1 FL:1}



static void Test_BFs1c_BFs1ll_BFs1c_BFs1ll()
{
  {
    init_simple_test("BFs1c_BFs1ll_BFs1c_BFs1ll");
    static STRUCT_IF_C BFs1c_BFs1ll_BFs1c_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1ll_BFs1c_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1ll_BFs1c_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1ll_BFs1c_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1ll_BFs1c_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1ll_BFs1c_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1ll_BFs1c_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1ll_BFs1c_BFs1ll, BFs1c_BFs1ll_BFs1c_BFs1ll)
//============================================================================


struct  BFs1c_BFs1ll_BFs1c_BFs1s  {
  signed char v1:1;
  signed __tsi64 v2:1;
  signed char v3:1;
  signed short v4:1;
};
//SIG(1 BFs1c_BFs1ll_BFs1c_BFs1s) C1{ Fc:1 FL:1 Fc:1 Fs:1}



static void Test_BFs1c_BFs1ll_BFs1c_BFs1s()
{
  {
    init_simple_test("BFs1c_BFs1ll_BFs1c_BFs1s");
    static STRUCT_IF_C BFs1c_BFs1ll_BFs1c_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1ll_BFs1c_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1ll_BFs1c_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1ll_BFs1c_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1ll_BFs1c_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1ll_BFs1c_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1ll_BFs1c_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1ll_BFs1c_BFs1s, BFs1c_BFs1ll_BFs1c_BFs1s)
//============================================================================


struct  BFs1c_BFs1ll_BFs1c_BFu1c  {
  signed char v1:1;
  signed __tsi64 v2:1;
  signed char v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1c_BFs1ll_BFs1c_BFu1c) C1{ Fc:1 FL:1 Fc:1 Fc:1}



static void Test_BFs1c_BFs1ll_BFs1c_BFu1c()
{
  {
    init_simple_test("BFs1c_BFs1ll_BFs1c_BFu1c");
    static STRUCT_IF_C BFs1c_BFs1ll_BFs1c_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1ll_BFs1c_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1ll_BFs1c_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1ll_BFs1c_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1ll_BFs1c_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1ll_BFs1c_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1ll_BFs1c_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1ll_BFs1c_BFu1c, BFs1c_BFs1ll_BFs1c_BFu1c)
//============================================================================


struct  BFs1c_BFs1ll_BFs1c_BFu1i  {
  signed char v1:1;
  signed __tsi64 v2:1;
  signed char v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1c_BFs1ll_BFs1c_BFu1i) C1{ Fc:1 FL:1 Fc:1 Fi:1}



static void Test_BFs1c_BFs1ll_BFs1c_BFu1i()
{
  {
    init_simple_test("BFs1c_BFs1ll_BFs1c_BFu1i");
    static STRUCT_IF_C BFs1c_BFs1ll_BFs1c_BFu1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1ll_BFs1c_BFu1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1ll_BFs1c_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1ll_BFs1c_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1ll_BFs1c_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1ll_BFs1c_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1ll_BFs1c_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1ll_BFs1c_BFu1i, BFs1c_BFs1ll_BFs1c_BFu1i)
//============================================================================


struct  BFs1c_BFs1ll_BFs1c_BFu1ll  {
  signed char v1:1;
  signed __tsi64 v2:1;
  signed char v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1c_BFs1ll_BFs1c_BFu1ll) C1{ Fc:1 FL:1 Fc:1 FL:1}



static void Test_BFs1c_BFs1ll_BFs1c_BFu1ll()
{
  {
    init_simple_test("BFs1c_BFs1ll_BFs1c_BFu1ll");
    static STRUCT_IF_C BFs1c_BFs1ll_BFs1c_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1ll_BFs1c_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1ll_BFs1c_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1ll_BFs1c_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1ll_BFs1c_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1ll_BFs1c_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1ll_BFs1c_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1ll_BFs1c_BFu1ll, BFs1c_BFs1ll_BFs1c_BFu1ll)
//============================================================================


struct  BFs1c_BFs1ll_BFs1c_BFu1s  {
  signed char v1:1;
  signed __tsi64 v2:1;
  signed char v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1c_BFs1ll_BFs1c_BFu1s) C1{ Fc:1 FL:1 Fc:1 Fs:1}



static void Test_BFs1c_BFs1ll_BFs1c_BFu1s()
{
  {
    init_simple_test("BFs1c_BFs1ll_BFs1c_BFu1s");
    static STRUCT_IF_C BFs1c_BFs1ll_BFs1c_BFu1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1ll_BFs1c_BFu1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1ll_BFs1c_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1ll_BFs1c_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1ll_BFs1c_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1ll_BFs1c_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1ll_BFs1c_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1ll_BFs1c_BFu1s, BFs1c_BFs1ll_BFs1c_BFu1s)
//============================================================================


struct  BFs1c_BFs1ll_BFs1i  {
  signed char v1:1;
  signed __tsi64 v2:1;
  signed int v3:1;
};
//SIG(1 BFs1c_BFs1ll_BFs1i) C1{ Fc:1 FL:1 Fi:1}



static void Test_BFs1c_BFs1ll_BFs1i()
{
  {
    init_simple_test("BFs1c_BFs1ll_BFs1i");
    static STRUCT_IF_C BFs1c_BFs1ll_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1ll_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1ll_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1ll_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1ll_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1ll_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1ll_BFs1i, BFs1c_BFs1ll_BFs1i)
//============================================================================


struct  BFs1c_BFs1ll_BFs1i_BFs1c  {
  signed char v1:1;
  signed __tsi64 v2:1;
  signed int v3:1;
  signed char v4:1;
};
//SIG(1 BFs1c_BFs1ll_BFs1i_BFs1c) C1{ Fc:1 FL:1 Fi:1 Fc:1}



static void Test_BFs1c_BFs1ll_BFs1i_BFs1c()
{
  {
    init_simple_test("BFs1c_BFs1ll_BFs1i_BFs1c");
    static STRUCT_IF_C BFs1c_BFs1ll_BFs1i_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1ll_BFs1i_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1ll_BFs1i_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1ll_BFs1i_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1ll_BFs1i_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1ll_BFs1i_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1ll_BFs1i_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1ll_BFs1i_BFs1c, BFs1c_BFs1ll_BFs1i_BFs1c)
//============================================================================


struct  BFs1c_BFs1ll_BFs1i_BFs1i  {
  signed char v1:1;
  signed __tsi64 v2:1;
  signed int v3:1;
  signed int v4:1;
};
//SIG(1 BFs1c_BFs1ll_BFs1i_BFs1i) C1{ Fc:1 FL:1 Fi:1 Fi:1}



static void Test_BFs1c_BFs1ll_BFs1i_BFs1i()
{
  {
    init_simple_test("BFs1c_BFs1ll_BFs1i_BFs1i");
    static STRUCT_IF_C BFs1c_BFs1ll_BFs1i_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1ll_BFs1i_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1ll_BFs1i_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1ll_BFs1i_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1ll_BFs1i_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1ll_BFs1i_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1ll_BFs1i_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1ll_BFs1i_BFs1i, BFs1c_BFs1ll_BFs1i_BFs1i)
//============================================================================


struct  BFs1c_BFs1ll_BFs1i_BFs1ll  {
  signed char v1:1;
  signed __tsi64 v2:1;
  signed int v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1c_BFs1ll_BFs1i_BFs1ll) C1{ Fc:1 FL:1 Fi:1 FL:1}



static void Test_BFs1c_BFs1ll_BFs1i_BFs1ll()
{
  {
    init_simple_test("BFs1c_BFs1ll_BFs1i_BFs1ll");
    static STRUCT_IF_C BFs1c_BFs1ll_BFs1i_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1ll_BFs1i_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1ll_BFs1i_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1ll_BFs1i_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1ll_BFs1i_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1ll_BFs1i_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1ll_BFs1i_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1ll_BFs1i_BFs1ll, BFs1c_BFs1ll_BFs1i_BFs1ll)
//============================================================================


struct  BFs1c_BFs1ll_BFs1i_BFs1s  {
  signed char v1:1;
  signed __tsi64 v2:1;
  signed int v3:1;
  signed short v4:1;
};
//SIG(1 BFs1c_BFs1ll_BFs1i_BFs1s) C1{ Fc:1 FL:1 Fi:1 Fs:1}



static void Test_BFs1c_BFs1ll_BFs1i_BFs1s()
{
  {
    init_simple_test("BFs1c_BFs1ll_BFs1i_BFs1s");
    static STRUCT_IF_C BFs1c_BFs1ll_BFs1i_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1ll_BFs1i_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1ll_BFs1i_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1ll_BFs1i_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1ll_BFs1i_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1ll_BFs1i_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1ll_BFs1i_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1ll_BFs1i_BFs1s, BFs1c_BFs1ll_BFs1i_BFs1s)
//============================================================================


struct  BFs1c_BFs1ll_BFs1i_BFu1c  {
  signed char v1:1;
  signed __tsi64 v2:1;
  signed int v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1c_BFs1ll_BFs1i_BFu1c) C1{ Fc:1 FL:1 Fi:1 Fc:1}



static void Test_BFs1c_BFs1ll_BFs1i_BFu1c()
{
  {
    init_simple_test("BFs1c_BFs1ll_BFs1i_BFu1c");
    static STRUCT_IF_C BFs1c_BFs1ll_BFs1i_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1ll_BFs1i_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1ll_BFs1i_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1ll_BFs1i_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1ll_BFs1i_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1ll_BFs1i_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1ll_BFs1i_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1ll_BFs1i_BFu1c, BFs1c_BFs1ll_BFs1i_BFu1c)
//============================================================================


struct  BFs1c_BFs1ll_BFs1i_BFu1i  {
  signed char v1:1;
  signed __tsi64 v2:1;
  signed int v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1c_BFs1ll_BFs1i_BFu1i) C1{ Fc:1 FL:1 Fi:1 Fi:1}



static void Test_BFs1c_BFs1ll_BFs1i_BFu1i()
{
  {
    init_simple_test("BFs1c_BFs1ll_BFs1i_BFu1i");
    static STRUCT_IF_C BFs1c_BFs1ll_BFs1i_BFu1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1ll_BFs1i_BFu1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1ll_BFs1i_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1ll_BFs1i_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1ll_BFs1i_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1ll_BFs1i_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1ll_BFs1i_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1ll_BFs1i_BFu1i, BFs1c_BFs1ll_BFs1i_BFu1i)
//============================================================================


struct  BFs1c_BFs1ll_BFs1i_BFu1ll  {
  signed char v1:1;
  signed __tsi64 v2:1;
  signed int v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1c_BFs1ll_BFs1i_BFu1ll) C1{ Fc:1 FL:1 Fi:1 FL:1}



static void Test_BFs1c_BFs1ll_BFs1i_BFu1ll()
{
  {
    init_simple_test("BFs1c_BFs1ll_BFs1i_BFu1ll");
    static STRUCT_IF_C BFs1c_BFs1ll_BFs1i_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1ll_BFs1i_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1ll_BFs1i_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1ll_BFs1i_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1ll_BFs1i_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1ll_BFs1i_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1ll_BFs1i_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1ll_BFs1i_BFu1ll, BFs1c_BFs1ll_BFs1i_BFu1ll)
//============================================================================


struct  BFs1c_BFs1ll_BFs1i_BFu1s  {
  signed char v1:1;
  signed __tsi64 v2:1;
  signed int v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1c_BFs1ll_BFs1i_BFu1s) C1{ Fc:1 FL:1 Fi:1 Fs:1}



static void Test_BFs1c_BFs1ll_BFs1i_BFu1s()
{
  {
    init_simple_test("BFs1c_BFs1ll_BFs1i_BFu1s");
    static STRUCT_IF_C BFs1c_BFs1ll_BFs1i_BFu1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1ll_BFs1i_BFu1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1ll_BFs1i_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1ll_BFs1i_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1ll_BFs1i_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1ll_BFs1i_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1ll_BFs1i_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1ll_BFs1i_BFu1s, BFs1c_BFs1ll_BFs1i_BFu1s)
//============================================================================


struct  BFs1c_BFs1ll_BFs1ll  {
  signed char v1:1;
  signed __tsi64 v2:1;
  signed __tsi64 v3:1;
};
//SIG(1 BFs1c_BFs1ll_BFs1ll) C1{ Fc:1 FL:1 FL:1}



static void Test_BFs1c_BFs1ll_BFs1ll()
{
  {
    init_simple_test("BFs1c_BFs1ll_BFs1ll");
    static STRUCT_IF_C BFs1c_BFs1ll_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1ll_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1ll_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1ll_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1ll_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1ll_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1ll_BFs1ll, BFs1c_BFs1ll_BFs1ll)
//============================================================================


struct  BFs1c_BFs1ll_BFs1ll_BFs1c  {
  signed char v1:1;
  signed __tsi64 v2:1;
  signed __tsi64 v3:1;
  signed char v4:1;
};
//SIG(1 BFs1c_BFs1ll_BFs1ll_BFs1c) C1{ Fc:1 FL:1 FL:1 Fc:1}



static void Test_BFs1c_BFs1ll_BFs1ll_BFs1c()
{
  {
    init_simple_test("BFs1c_BFs1ll_BFs1ll_BFs1c");
    static STRUCT_IF_C BFs1c_BFs1ll_BFs1ll_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1ll_BFs1ll_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1ll_BFs1ll_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1ll_BFs1ll_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1ll_BFs1ll_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1ll_BFs1ll_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1ll_BFs1ll_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1ll_BFs1ll_BFs1c, BFs1c_BFs1ll_BFs1ll_BFs1c)
//============================================================================


struct  BFs1c_BFs1ll_BFs1ll_BFs1i  {
  signed char v1:1;
  signed __tsi64 v2:1;
  signed __tsi64 v3:1;
  signed int v4:1;
};
//SIG(1 BFs1c_BFs1ll_BFs1ll_BFs1i) C1{ Fc:1 FL:1 FL:1 Fi:1}



static void Test_BFs1c_BFs1ll_BFs1ll_BFs1i()
{
  {
    init_simple_test("BFs1c_BFs1ll_BFs1ll_BFs1i");
    static STRUCT_IF_C BFs1c_BFs1ll_BFs1ll_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1ll_BFs1ll_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1ll_BFs1ll_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1ll_BFs1ll_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1ll_BFs1ll_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1ll_BFs1ll_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1ll_BFs1ll_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1ll_BFs1ll_BFs1i, BFs1c_BFs1ll_BFs1ll_BFs1i)
//============================================================================


struct  BFs1c_BFs1ll_BFs1ll_BFs1ll  {
  signed char v1:1;
  signed __tsi64 v2:1;
  signed __tsi64 v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1c_BFs1ll_BFs1ll_BFs1ll) C1{ Fc:1 FL:1 FL:1 FL:1}



static void Test_BFs1c_BFs1ll_BFs1ll_BFs1ll()
{
  {
    init_simple_test("BFs1c_BFs1ll_BFs1ll_BFs1ll");
    static STRUCT_IF_C BFs1c_BFs1ll_BFs1ll_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1ll_BFs1ll_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1ll_BFs1ll_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1ll_BFs1ll_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1ll_BFs1ll_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1ll_BFs1ll_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1ll_BFs1ll_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1ll_BFs1ll_BFs1ll, BFs1c_BFs1ll_BFs1ll_BFs1ll)
//============================================================================


struct  BFs1c_BFs1ll_BFs1ll_BFs1s  {
  signed char v1:1;
  signed __tsi64 v2:1;
  signed __tsi64 v3:1;
  signed short v4:1;
};
//SIG(1 BFs1c_BFs1ll_BFs1ll_BFs1s) C1{ Fc:1 FL:1 FL:1 Fs:1}



static void Test_BFs1c_BFs1ll_BFs1ll_BFs1s()
{
  {
    init_simple_test("BFs1c_BFs1ll_BFs1ll_BFs1s");
    static STRUCT_IF_C BFs1c_BFs1ll_BFs1ll_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1ll_BFs1ll_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1ll_BFs1ll_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1ll_BFs1ll_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1ll_BFs1ll_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1ll_BFs1ll_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1ll_BFs1ll_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1ll_BFs1ll_BFs1s, BFs1c_BFs1ll_BFs1ll_BFs1s)
//============================================================================


struct  BFs1c_BFs1ll_BFs1ll_BFu1c  {
  signed char v1:1;
  signed __tsi64 v2:1;
  signed __tsi64 v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1c_BFs1ll_BFs1ll_BFu1c) C1{ Fc:1 FL:1 FL:1 Fc:1}



static void Test_BFs1c_BFs1ll_BFs1ll_BFu1c()
{
  {
    init_simple_test("BFs1c_BFs1ll_BFs1ll_BFu1c");
    static STRUCT_IF_C BFs1c_BFs1ll_BFs1ll_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1ll_BFs1ll_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1ll_BFs1ll_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1ll_BFs1ll_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1ll_BFs1ll_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1ll_BFs1ll_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1ll_BFs1ll_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1ll_BFs1ll_BFu1c, BFs1c_BFs1ll_BFs1ll_BFu1c)
//============================================================================


struct  BFs1c_BFs1ll_BFs1ll_BFu1i  {
  signed char v1:1;
  signed __tsi64 v2:1;
  signed __tsi64 v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1c_BFs1ll_BFs1ll_BFu1i) C1{ Fc:1 FL:1 FL:1 Fi:1}



static void Test_BFs1c_BFs1ll_BFs1ll_BFu1i()
{
  {
    init_simple_test("BFs1c_BFs1ll_BFs1ll_BFu1i");
    static STRUCT_IF_C BFs1c_BFs1ll_BFs1ll_BFu1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1ll_BFs1ll_BFu1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1ll_BFs1ll_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1ll_BFs1ll_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1ll_BFs1ll_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1ll_BFs1ll_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1ll_BFs1ll_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1ll_BFs1ll_BFu1i, BFs1c_BFs1ll_BFs1ll_BFu1i)
//============================================================================


struct  BFs1c_BFs1ll_BFs1ll_BFu1ll  {
  signed char v1:1;
  signed __tsi64 v2:1;
  signed __tsi64 v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1c_BFs1ll_BFs1ll_BFu1ll) C1{ Fc:1 FL:1 FL:1 FL:1}



static void Test_BFs1c_BFs1ll_BFs1ll_BFu1ll()
{
  {
    init_simple_test("BFs1c_BFs1ll_BFs1ll_BFu1ll");
    static STRUCT_IF_C BFs1c_BFs1ll_BFs1ll_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1ll_BFs1ll_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1ll_BFs1ll_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1ll_BFs1ll_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1ll_BFs1ll_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1ll_BFs1ll_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1ll_BFs1ll_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1ll_BFs1ll_BFu1ll, BFs1c_BFs1ll_BFs1ll_BFu1ll)
//============================================================================


struct  BFs1c_BFs1ll_BFs1ll_BFu1s  {
  signed char v1:1;
  signed __tsi64 v2:1;
  signed __tsi64 v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1c_BFs1ll_BFs1ll_BFu1s) C1{ Fc:1 FL:1 FL:1 Fs:1}



static void Test_BFs1c_BFs1ll_BFs1ll_BFu1s()
{
  {
    init_simple_test("BFs1c_BFs1ll_BFs1ll_BFu1s");
    static STRUCT_IF_C BFs1c_BFs1ll_BFs1ll_BFu1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1ll_BFs1ll_BFu1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1ll_BFs1ll_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1ll_BFs1ll_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1ll_BFs1ll_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1ll_BFs1ll_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1ll_BFs1ll_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1ll_BFs1ll_BFu1s, BFs1c_BFs1ll_BFs1ll_BFu1s)
//============================================================================


struct  BFs1c_BFs1ll_BFs1s  {
  signed char v1:1;
  signed __tsi64 v2:1;
  signed short v3:1;
};
//SIG(1 BFs1c_BFs1ll_BFs1s) C1{ Fc:1 FL:1 Fs:1}



static void Test_BFs1c_BFs1ll_BFs1s()
{
  {
    init_simple_test("BFs1c_BFs1ll_BFs1s");
    static STRUCT_IF_C BFs1c_BFs1ll_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1ll_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1ll_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1ll_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1ll_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1ll_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1ll_BFs1s, BFs1c_BFs1ll_BFs1s)
//============================================================================


struct  BFs1c_BFs1ll_BFs1s_BFs1c  {
  signed char v1:1;
  signed __tsi64 v2:1;
  signed short v3:1;
  signed char v4:1;
};
//SIG(1 BFs1c_BFs1ll_BFs1s_BFs1c) C1{ Fc:1 FL:1 Fs:1 Fc:1}



static void Test_BFs1c_BFs1ll_BFs1s_BFs1c()
{
  {
    init_simple_test("BFs1c_BFs1ll_BFs1s_BFs1c");
    static STRUCT_IF_C BFs1c_BFs1ll_BFs1s_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1ll_BFs1s_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1ll_BFs1s_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1ll_BFs1s_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1ll_BFs1s_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1ll_BFs1s_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1ll_BFs1s_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1ll_BFs1s_BFs1c, BFs1c_BFs1ll_BFs1s_BFs1c)
//============================================================================


struct  BFs1c_BFs1ll_BFs1s_BFs1i  {
  signed char v1:1;
  signed __tsi64 v2:1;
  signed short v3:1;
  signed int v4:1;
};
//SIG(1 BFs1c_BFs1ll_BFs1s_BFs1i) C1{ Fc:1 FL:1 Fs:1 Fi:1}



static void Test_BFs1c_BFs1ll_BFs1s_BFs1i()
{
  {
    init_simple_test("BFs1c_BFs1ll_BFs1s_BFs1i");
    static STRUCT_IF_C BFs1c_BFs1ll_BFs1s_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1ll_BFs1s_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1ll_BFs1s_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1ll_BFs1s_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1ll_BFs1s_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1ll_BFs1s_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1ll_BFs1s_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1ll_BFs1s_BFs1i, BFs1c_BFs1ll_BFs1s_BFs1i)
//============================================================================


struct  BFs1c_BFs1ll_BFs1s_BFs1ll  {
  signed char v1:1;
  signed __tsi64 v2:1;
  signed short v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1c_BFs1ll_BFs1s_BFs1ll) C1{ Fc:1 FL:1 Fs:1 FL:1}



static void Test_BFs1c_BFs1ll_BFs1s_BFs1ll()
{
  {
    init_simple_test("BFs1c_BFs1ll_BFs1s_BFs1ll");
    static STRUCT_IF_C BFs1c_BFs1ll_BFs1s_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1ll_BFs1s_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1ll_BFs1s_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1ll_BFs1s_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1ll_BFs1s_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1ll_BFs1s_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1ll_BFs1s_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1ll_BFs1s_BFs1ll, BFs1c_BFs1ll_BFs1s_BFs1ll)
//============================================================================


struct  BFs1c_BFs1ll_BFs1s_BFs1s  {
  signed char v1:1;
  signed __tsi64 v2:1;
  signed short v3:1;
  signed short v4:1;
};
//SIG(1 BFs1c_BFs1ll_BFs1s_BFs1s) C1{ Fc:1 FL:1 Fs:1 Fs:1}



static void Test_BFs1c_BFs1ll_BFs1s_BFs1s()
{
  {
    init_simple_test("BFs1c_BFs1ll_BFs1s_BFs1s");
    static STRUCT_IF_C BFs1c_BFs1ll_BFs1s_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1ll_BFs1s_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1ll_BFs1s_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1ll_BFs1s_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1ll_BFs1s_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1ll_BFs1s_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1ll_BFs1s_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1ll_BFs1s_BFs1s, BFs1c_BFs1ll_BFs1s_BFs1s)
//============================================================================


struct  BFs1c_BFs1ll_BFs1s_BFu1c  {
  signed char v1:1;
  signed __tsi64 v2:1;
  signed short v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1c_BFs1ll_BFs1s_BFu1c) C1{ Fc:1 FL:1 Fs:1 Fc:1}



static void Test_BFs1c_BFs1ll_BFs1s_BFu1c()
{
  {
    init_simple_test("BFs1c_BFs1ll_BFs1s_BFu1c");
    static STRUCT_IF_C BFs1c_BFs1ll_BFs1s_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1ll_BFs1s_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1ll_BFs1s_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1ll_BFs1s_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1ll_BFs1s_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1ll_BFs1s_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1ll_BFs1s_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1ll_BFs1s_BFu1c, BFs1c_BFs1ll_BFs1s_BFu1c)
//============================================================================


struct  BFs1c_BFs1ll_BFs1s_BFu1i  {
  signed char v1:1;
  signed __tsi64 v2:1;
  signed short v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1c_BFs1ll_BFs1s_BFu1i) C1{ Fc:1 FL:1 Fs:1 Fi:1}



static void Test_BFs1c_BFs1ll_BFs1s_BFu1i()
{
  {
    init_simple_test("BFs1c_BFs1ll_BFs1s_BFu1i");
    static STRUCT_IF_C BFs1c_BFs1ll_BFs1s_BFu1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1ll_BFs1s_BFu1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1ll_BFs1s_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1ll_BFs1s_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1ll_BFs1s_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1ll_BFs1s_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1ll_BFs1s_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1ll_BFs1s_BFu1i, BFs1c_BFs1ll_BFs1s_BFu1i)
//============================================================================


struct  BFs1c_BFs1ll_BFs1s_BFu1ll  {
  signed char v1:1;
  signed __tsi64 v2:1;
  signed short v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1c_BFs1ll_BFs1s_BFu1ll) C1{ Fc:1 FL:1 Fs:1 FL:1}



static void Test_BFs1c_BFs1ll_BFs1s_BFu1ll()
{
  {
    init_simple_test("BFs1c_BFs1ll_BFs1s_BFu1ll");
    static STRUCT_IF_C BFs1c_BFs1ll_BFs1s_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1ll_BFs1s_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1ll_BFs1s_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1ll_BFs1s_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1ll_BFs1s_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1ll_BFs1s_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1ll_BFs1s_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1ll_BFs1s_BFu1ll, BFs1c_BFs1ll_BFs1s_BFu1ll)
//============================================================================


struct  BFs1c_BFs1ll_BFs1s_BFu1s  {
  signed char v1:1;
  signed __tsi64 v2:1;
  signed short v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1c_BFs1ll_BFs1s_BFu1s) C1{ Fc:1 FL:1 Fs:1 Fs:1}



static void Test_BFs1c_BFs1ll_BFs1s_BFu1s()
{
  {
    init_simple_test("BFs1c_BFs1ll_BFs1s_BFu1s");
    static STRUCT_IF_C BFs1c_BFs1ll_BFs1s_BFu1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1ll_BFs1s_BFu1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1ll_BFs1s_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1ll_BFs1s_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1ll_BFs1s_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1ll_BFs1s_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1ll_BFs1s_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1ll_BFs1s_BFu1s, BFs1c_BFs1ll_BFs1s_BFu1s)
//============================================================================


struct  BFs1c_BFs1ll_BFu1c  {
  signed char v1:1;
  signed __tsi64 v2:1;
  unsigned char v3:1;
};
//SIG(1 BFs1c_BFs1ll_BFu1c) C1{ Fc:1 FL:1 Fc:1}



static void Test_BFs1c_BFs1ll_BFu1c()
{
  {
    init_simple_test("BFs1c_BFs1ll_BFu1c");
    static STRUCT_IF_C BFs1c_BFs1ll_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1ll_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1ll_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1ll_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1ll_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1ll_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1ll_BFu1c, BFs1c_BFs1ll_BFu1c)
//============================================================================


struct  BFs1c_BFs1ll_BFu1c_BFs1c  {
  signed char v1:1;
  signed __tsi64 v2:1;
  unsigned char v3:1;
  signed char v4:1;
};
//SIG(1 BFs1c_BFs1ll_BFu1c_BFs1c) C1{ Fc:1 FL:1 Fc:1 Fc:1}



static void Test_BFs1c_BFs1ll_BFu1c_BFs1c()
{
  {
    init_simple_test("BFs1c_BFs1ll_BFu1c_BFs1c");
    static STRUCT_IF_C BFs1c_BFs1ll_BFu1c_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1ll_BFu1c_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1ll_BFu1c_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1ll_BFu1c_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1ll_BFu1c_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1ll_BFu1c_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1ll_BFu1c_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1ll_BFu1c_BFs1c, BFs1c_BFs1ll_BFu1c_BFs1c)
//============================================================================


struct  BFs1c_BFs1ll_BFu1c_BFs1i  {
  signed char v1:1;
  signed __tsi64 v2:1;
  unsigned char v3:1;
  signed int v4:1;
};
//SIG(1 BFs1c_BFs1ll_BFu1c_BFs1i) C1{ Fc:1 FL:1 Fc:1 Fi:1}



static void Test_BFs1c_BFs1ll_BFu1c_BFs1i()
{
  {
    init_simple_test("BFs1c_BFs1ll_BFu1c_BFs1i");
    static STRUCT_IF_C BFs1c_BFs1ll_BFu1c_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1ll_BFu1c_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1ll_BFu1c_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1ll_BFu1c_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1ll_BFu1c_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1ll_BFu1c_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1ll_BFu1c_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1ll_BFu1c_BFs1i, BFs1c_BFs1ll_BFu1c_BFs1i)
//============================================================================


struct  BFs1c_BFs1ll_BFu1c_BFs1ll  {
  signed char v1:1;
  signed __tsi64 v2:1;
  unsigned char v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1c_BFs1ll_BFu1c_BFs1ll) C1{ Fc:1 FL:1 Fc:1 FL:1}



static void Test_BFs1c_BFs1ll_BFu1c_BFs1ll()
{
  {
    init_simple_test("BFs1c_BFs1ll_BFu1c_BFs1ll");
    static STRUCT_IF_C BFs1c_BFs1ll_BFu1c_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1ll_BFu1c_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1ll_BFu1c_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1ll_BFu1c_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1ll_BFu1c_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1ll_BFu1c_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1ll_BFu1c_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1ll_BFu1c_BFs1ll, BFs1c_BFs1ll_BFu1c_BFs1ll)
//============================================================================


struct  BFs1c_BFs1ll_BFu1c_BFs1s  {
  signed char v1:1;
  signed __tsi64 v2:1;
  unsigned char v3:1;
  signed short v4:1;
};
//SIG(1 BFs1c_BFs1ll_BFu1c_BFs1s) C1{ Fc:1 FL:1 Fc:1 Fs:1}



static void Test_BFs1c_BFs1ll_BFu1c_BFs1s()
{
  {
    init_simple_test("BFs1c_BFs1ll_BFu1c_BFs1s");
    static STRUCT_IF_C BFs1c_BFs1ll_BFu1c_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1ll_BFu1c_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1ll_BFu1c_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1ll_BFu1c_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1ll_BFu1c_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1ll_BFu1c_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1ll_BFu1c_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1ll_BFu1c_BFs1s, BFs1c_BFs1ll_BFu1c_BFs1s)
//============================================================================


struct  BFs1c_BFs1ll_BFu1c_BFu1c  {
  signed char v1:1;
  signed __tsi64 v2:1;
  unsigned char v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1c_BFs1ll_BFu1c_BFu1c) C1{ Fc:1 FL:1 Fc:1 Fc:1}



static void Test_BFs1c_BFs1ll_BFu1c_BFu1c()
{
  {
    init_simple_test("BFs1c_BFs1ll_BFu1c_BFu1c");
    static STRUCT_IF_C BFs1c_BFs1ll_BFu1c_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1ll_BFu1c_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1ll_BFu1c_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1ll_BFu1c_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1ll_BFu1c_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1ll_BFu1c_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1ll_BFu1c_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1ll_BFu1c_BFu1c, BFs1c_BFs1ll_BFu1c_BFu1c)
//============================================================================


struct  BFs1c_BFs1ll_BFu1c_BFu1i  {
  signed char v1:1;
  signed __tsi64 v2:1;
  unsigned char v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1c_BFs1ll_BFu1c_BFu1i) C1{ Fc:1 FL:1 Fc:1 Fi:1}



static void Test_BFs1c_BFs1ll_BFu1c_BFu1i()
{
  {
    init_simple_test("BFs1c_BFs1ll_BFu1c_BFu1i");
    static STRUCT_IF_C BFs1c_BFs1ll_BFu1c_BFu1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1ll_BFu1c_BFu1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1ll_BFu1c_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1ll_BFu1c_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1ll_BFu1c_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1ll_BFu1c_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1ll_BFu1c_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1ll_BFu1c_BFu1i, BFs1c_BFs1ll_BFu1c_BFu1i)
//============================================================================


struct  BFs1c_BFs1ll_BFu1c_BFu1ll  {
  signed char v1:1;
  signed __tsi64 v2:1;
  unsigned char v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1c_BFs1ll_BFu1c_BFu1ll) C1{ Fc:1 FL:1 Fc:1 FL:1}



static void Test_BFs1c_BFs1ll_BFu1c_BFu1ll()
{
  {
    init_simple_test("BFs1c_BFs1ll_BFu1c_BFu1ll");
    static STRUCT_IF_C BFs1c_BFs1ll_BFu1c_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1ll_BFu1c_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1ll_BFu1c_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1ll_BFu1c_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1ll_BFu1c_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1ll_BFu1c_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1ll_BFu1c_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1ll_BFu1c_BFu1ll, BFs1c_BFs1ll_BFu1c_BFu1ll)
//============================================================================


struct  BFs1c_BFs1ll_BFu1c_BFu1s  {
  signed char v1:1;
  signed __tsi64 v2:1;
  unsigned char v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1c_BFs1ll_BFu1c_BFu1s) C1{ Fc:1 FL:1 Fc:1 Fs:1}



static void Test_BFs1c_BFs1ll_BFu1c_BFu1s()
{
  {
    init_simple_test("BFs1c_BFs1ll_BFu1c_BFu1s");
    static STRUCT_IF_C BFs1c_BFs1ll_BFu1c_BFu1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1ll_BFu1c_BFu1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1ll_BFu1c_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1ll_BFu1c_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1ll_BFu1c_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1ll_BFu1c_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1ll_BFu1c_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1ll_BFu1c_BFu1s, BFs1c_BFs1ll_BFu1c_BFu1s)
//============================================================================


struct  BFs1c_BFs1ll_BFu1i  {
  signed char v1:1;
  signed __tsi64 v2:1;
  unsigned int v3:1;
};
//SIG(1 BFs1c_BFs1ll_BFu1i) C1{ Fc:1 FL:1 Fi:1}



static void Test_BFs1c_BFs1ll_BFu1i()
{
  {
    init_simple_test("BFs1c_BFs1ll_BFu1i");
    static STRUCT_IF_C BFs1c_BFs1ll_BFu1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1ll_BFu1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1ll_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1ll_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1ll_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1ll_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1ll_BFu1i, BFs1c_BFs1ll_BFu1i)
//============================================================================


struct  BFs1c_BFs1ll_BFu1i_BFs1c  {
  signed char v1:1;
  signed __tsi64 v2:1;
  unsigned int v3:1;
  signed char v4:1;
};
//SIG(1 BFs1c_BFs1ll_BFu1i_BFs1c) C1{ Fc:1 FL:1 Fi:1 Fc:1}



static void Test_BFs1c_BFs1ll_BFu1i_BFs1c()
{
  {
    init_simple_test("BFs1c_BFs1ll_BFu1i_BFs1c");
    static STRUCT_IF_C BFs1c_BFs1ll_BFu1i_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1ll_BFu1i_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1ll_BFu1i_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1ll_BFu1i_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1ll_BFu1i_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1ll_BFu1i_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1ll_BFu1i_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1ll_BFu1i_BFs1c, BFs1c_BFs1ll_BFu1i_BFs1c)
//============================================================================


struct  BFs1c_BFs1ll_BFu1i_BFs1i  {
  signed char v1:1;
  signed __tsi64 v2:1;
  unsigned int v3:1;
  signed int v4:1;
};
//SIG(1 BFs1c_BFs1ll_BFu1i_BFs1i) C1{ Fc:1 FL:1 Fi:1 Fi:1}



static void Test_BFs1c_BFs1ll_BFu1i_BFs1i()
{
  {
    init_simple_test("BFs1c_BFs1ll_BFu1i_BFs1i");
    static STRUCT_IF_C BFs1c_BFs1ll_BFu1i_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1ll_BFu1i_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1ll_BFu1i_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1ll_BFu1i_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1ll_BFu1i_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1ll_BFu1i_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1ll_BFu1i_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1ll_BFu1i_BFs1i, BFs1c_BFs1ll_BFu1i_BFs1i)
//============================================================================


struct  BFs1c_BFs1ll_BFu1i_BFs1ll  {
  signed char v1:1;
  signed __tsi64 v2:1;
  unsigned int v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1c_BFs1ll_BFu1i_BFs1ll) C1{ Fc:1 FL:1 Fi:1 FL:1}



static void Test_BFs1c_BFs1ll_BFu1i_BFs1ll()
{
  {
    init_simple_test("BFs1c_BFs1ll_BFu1i_BFs1ll");
    static STRUCT_IF_C BFs1c_BFs1ll_BFu1i_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1ll_BFu1i_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1ll_BFu1i_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1ll_BFu1i_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1ll_BFu1i_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1ll_BFu1i_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1ll_BFu1i_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1ll_BFu1i_BFs1ll, BFs1c_BFs1ll_BFu1i_BFs1ll)
//============================================================================


struct  BFs1c_BFs1ll_BFu1i_BFs1s  {
  signed char v1:1;
  signed __tsi64 v2:1;
  unsigned int v3:1;
  signed short v4:1;
};
//SIG(1 BFs1c_BFs1ll_BFu1i_BFs1s) C1{ Fc:1 FL:1 Fi:1 Fs:1}



static void Test_BFs1c_BFs1ll_BFu1i_BFs1s()
{
  {
    init_simple_test("BFs1c_BFs1ll_BFu1i_BFs1s");
    static STRUCT_IF_C BFs1c_BFs1ll_BFu1i_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1ll_BFu1i_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1ll_BFu1i_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1ll_BFu1i_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1ll_BFu1i_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1ll_BFu1i_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1ll_BFu1i_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1ll_BFu1i_BFs1s, BFs1c_BFs1ll_BFu1i_BFs1s)
//============================================================================


struct  BFs1c_BFs1ll_BFu1i_BFu1c  {
  signed char v1:1;
  signed __tsi64 v2:1;
  unsigned int v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1c_BFs1ll_BFu1i_BFu1c) C1{ Fc:1 FL:1 Fi:1 Fc:1}



static void Test_BFs1c_BFs1ll_BFu1i_BFu1c()
{
  {
    init_simple_test("BFs1c_BFs1ll_BFu1i_BFu1c");
    static STRUCT_IF_C BFs1c_BFs1ll_BFu1i_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1ll_BFu1i_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1ll_BFu1i_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1ll_BFu1i_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1ll_BFu1i_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1ll_BFu1i_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1ll_BFu1i_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1ll_BFu1i_BFu1c, BFs1c_BFs1ll_BFu1i_BFu1c)
//============================================================================


struct  BFs1c_BFs1ll_BFu1i_BFu1i  {
  signed char v1:1;
  signed __tsi64 v2:1;
  unsigned int v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1c_BFs1ll_BFu1i_BFu1i) C1{ Fc:1 FL:1 Fi:1 Fi:1}



static void Test_BFs1c_BFs1ll_BFu1i_BFu1i()
{
  {
    init_simple_test("BFs1c_BFs1ll_BFu1i_BFu1i");
    static STRUCT_IF_C BFs1c_BFs1ll_BFu1i_BFu1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1ll_BFu1i_BFu1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1ll_BFu1i_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1ll_BFu1i_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1ll_BFu1i_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1ll_BFu1i_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1ll_BFu1i_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1ll_BFu1i_BFu1i, BFs1c_BFs1ll_BFu1i_BFu1i)
//============================================================================


struct  BFs1c_BFs1ll_BFu1i_BFu1ll  {
  signed char v1:1;
  signed __tsi64 v2:1;
  unsigned int v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1c_BFs1ll_BFu1i_BFu1ll) C1{ Fc:1 FL:1 Fi:1 FL:1}



static void Test_BFs1c_BFs1ll_BFu1i_BFu1ll()
{
  {
    init_simple_test("BFs1c_BFs1ll_BFu1i_BFu1ll");
    static STRUCT_IF_C BFs1c_BFs1ll_BFu1i_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1ll_BFu1i_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1ll_BFu1i_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1ll_BFu1i_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1ll_BFu1i_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1ll_BFu1i_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1ll_BFu1i_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1ll_BFu1i_BFu1ll, BFs1c_BFs1ll_BFu1i_BFu1ll)
//============================================================================


struct  BFs1c_BFs1ll_BFu1i_BFu1s  {
  signed char v1:1;
  signed __tsi64 v2:1;
  unsigned int v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1c_BFs1ll_BFu1i_BFu1s) C1{ Fc:1 FL:1 Fi:1 Fs:1}



static void Test_BFs1c_BFs1ll_BFu1i_BFu1s()
{
  {
    init_simple_test("BFs1c_BFs1ll_BFu1i_BFu1s");
    static STRUCT_IF_C BFs1c_BFs1ll_BFu1i_BFu1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1ll_BFu1i_BFu1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1ll_BFu1i_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1ll_BFu1i_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1ll_BFu1i_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1ll_BFu1i_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1ll_BFu1i_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1ll_BFu1i_BFu1s, BFs1c_BFs1ll_BFu1i_BFu1s)
//============================================================================


struct  BFs1c_BFs1ll_BFu1ll  {
  signed char v1:1;
  signed __tsi64 v2:1;
  __tsu64 v3:1;
};
//SIG(1 BFs1c_BFs1ll_BFu1ll) C1{ Fc:1 FL:1 FL:1}



static void Test_BFs1c_BFs1ll_BFu1ll()
{
  {
    init_simple_test("BFs1c_BFs1ll_BFu1ll");
    static STRUCT_IF_C BFs1c_BFs1ll_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1ll_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1ll_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1ll_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1ll_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1ll_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1ll_BFu1ll, BFs1c_BFs1ll_BFu1ll)
//============================================================================


struct  BFs1c_BFs1ll_BFu1ll_BFs1c  {
  signed char v1:1;
  signed __tsi64 v2:1;
  __tsu64 v3:1;
  signed char v4:1;
};
//SIG(1 BFs1c_BFs1ll_BFu1ll_BFs1c) C1{ Fc:1 FL:1 FL:1 Fc:1}



static void Test_BFs1c_BFs1ll_BFu1ll_BFs1c()
{
  {
    init_simple_test("BFs1c_BFs1ll_BFu1ll_BFs1c");
    static STRUCT_IF_C BFs1c_BFs1ll_BFu1ll_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1ll_BFu1ll_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1ll_BFu1ll_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1ll_BFu1ll_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1ll_BFu1ll_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1ll_BFu1ll_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1ll_BFu1ll_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1ll_BFu1ll_BFs1c, BFs1c_BFs1ll_BFu1ll_BFs1c)
//============================================================================


struct  BFs1c_BFs1ll_BFu1ll_BFs1i  {
  signed char v1:1;
  signed __tsi64 v2:1;
  __tsu64 v3:1;
  signed int v4:1;
};
//SIG(1 BFs1c_BFs1ll_BFu1ll_BFs1i) C1{ Fc:1 FL:1 FL:1 Fi:1}



static void Test_BFs1c_BFs1ll_BFu1ll_BFs1i()
{
  {
    init_simple_test("BFs1c_BFs1ll_BFu1ll_BFs1i");
    static STRUCT_IF_C BFs1c_BFs1ll_BFu1ll_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1ll_BFu1ll_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1ll_BFu1ll_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1ll_BFu1ll_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1ll_BFu1ll_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1ll_BFu1ll_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1ll_BFu1ll_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1ll_BFu1ll_BFs1i, BFs1c_BFs1ll_BFu1ll_BFs1i)
//============================================================================


struct  BFs1c_BFs1ll_BFu1ll_BFs1ll  {
  signed char v1:1;
  signed __tsi64 v2:1;
  __tsu64 v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1c_BFs1ll_BFu1ll_BFs1ll) C1{ Fc:1 FL:1 FL:1 FL:1}



static void Test_BFs1c_BFs1ll_BFu1ll_BFs1ll()
{
  {
    init_simple_test("BFs1c_BFs1ll_BFu1ll_BFs1ll");
    static STRUCT_IF_C BFs1c_BFs1ll_BFu1ll_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1ll_BFu1ll_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1ll_BFu1ll_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1ll_BFu1ll_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1ll_BFu1ll_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1ll_BFu1ll_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1ll_BFu1ll_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1ll_BFu1ll_BFs1ll, BFs1c_BFs1ll_BFu1ll_BFs1ll)
//============================================================================


struct  BFs1c_BFs1ll_BFu1ll_BFs1s  {
  signed char v1:1;
  signed __tsi64 v2:1;
  __tsu64 v3:1;
  signed short v4:1;
};
//SIG(1 BFs1c_BFs1ll_BFu1ll_BFs1s) C1{ Fc:1 FL:1 FL:1 Fs:1}



static void Test_BFs1c_BFs1ll_BFu1ll_BFs1s()
{
  {
    init_simple_test("BFs1c_BFs1ll_BFu1ll_BFs1s");
    static STRUCT_IF_C BFs1c_BFs1ll_BFu1ll_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1ll_BFu1ll_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1ll_BFu1ll_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1ll_BFu1ll_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1ll_BFu1ll_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1ll_BFu1ll_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1ll_BFu1ll_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1ll_BFu1ll_BFs1s, BFs1c_BFs1ll_BFu1ll_BFs1s)
//============================================================================


struct  BFs1c_BFs1ll_BFu1ll_BFu1c  {
  signed char v1:1;
  signed __tsi64 v2:1;
  __tsu64 v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1c_BFs1ll_BFu1ll_BFu1c) C1{ Fc:1 FL:1 FL:1 Fc:1}



static void Test_BFs1c_BFs1ll_BFu1ll_BFu1c()
{
  {
    init_simple_test("BFs1c_BFs1ll_BFu1ll_BFu1c");
    static STRUCT_IF_C BFs1c_BFs1ll_BFu1ll_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1ll_BFu1ll_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1ll_BFu1ll_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1ll_BFu1ll_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1ll_BFu1ll_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1ll_BFu1ll_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1ll_BFu1ll_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1ll_BFu1ll_BFu1c, BFs1c_BFs1ll_BFu1ll_BFu1c)
//============================================================================


struct  BFs1c_BFs1ll_BFu1ll_BFu1i  {
  signed char v1:1;
  signed __tsi64 v2:1;
  __tsu64 v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1c_BFs1ll_BFu1ll_BFu1i) C1{ Fc:1 FL:1 FL:1 Fi:1}



static void Test_BFs1c_BFs1ll_BFu1ll_BFu1i()
{
  {
    init_simple_test("BFs1c_BFs1ll_BFu1ll_BFu1i");
    static STRUCT_IF_C BFs1c_BFs1ll_BFu1ll_BFu1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1ll_BFu1ll_BFu1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1ll_BFu1ll_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1ll_BFu1ll_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1ll_BFu1ll_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1ll_BFu1ll_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1ll_BFu1ll_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1ll_BFu1ll_BFu1i, BFs1c_BFs1ll_BFu1ll_BFu1i)
//============================================================================


struct  BFs1c_BFs1ll_BFu1ll_BFu1ll  {
  signed char v1:1;
  signed __tsi64 v2:1;
  __tsu64 v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1c_BFs1ll_BFu1ll_BFu1ll) C1{ Fc:1 FL:1 FL:1 FL:1}



static void Test_BFs1c_BFs1ll_BFu1ll_BFu1ll()
{
  {
    init_simple_test("BFs1c_BFs1ll_BFu1ll_BFu1ll");
    static STRUCT_IF_C BFs1c_BFs1ll_BFu1ll_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1ll_BFu1ll_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1ll_BFu1ll_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1ll_BFu1ll_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1ll_BFu1ll_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1ll_BFu1ll_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1ll_BFu1ll_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1ll_BFu1ll_BFu1ll, BFs1c_BFs1ll_BFu1ll_BFu1ll)
//============================================================================


struct  BFs1c_BFs1ll_BFu1ll_BFu1s  {
  signed char v1:1;
  signed __tsi64 v2:1;
  __tsu64 v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1c_BFs1ll_BFu1ll_BFu1s) C1{ Fc:1 FL:1 FL:1 Fs:1}



static void Test_BFs1c_BFs1ll_BFu1ll_BFu1s()
{
  {
    init_simple_test("BFs1c_BFs1ll_BFu1ll_BFu1s");
    static STRUCT_IF_C BFs1c_BFs1ll_BFu1ll_BFu1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1ll_BFu1ll_BFu1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1ll_BFu1ll_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1ll_BFu1ll_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1ll_BFu1ll_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1ll_BFu1ll_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1ll_BFu1ll_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1ll_BFu1ll_BFu1s, BFs1c_BFs1ll_BFu1ll_BFu1s)
//============================================================================


struct  BFs1c_BFs1ll_BFu1s  {
  signed char v1:1;
  signed __tsi64 v2:1;
  unsigned short v3:1;
};
//SIG(1 BFs1c_BFs1ll_BFu1s) C1{ Fc:1 FL:1 Fs:1}



static void Test_BFs1c_BFs1ll_BFu1s()
{
  {
    init_simple_test("BFs1c_BFs1ll_BFu1s");
    static STRUCT_IF_C BFs1c_BFs1ll_BFu1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1ll_BFu1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1ll_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1ll_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1ll_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1ll_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1ll_BFu1s, BFs1c_BFs1ll_BFu1s)
//============================================================================


struct  BFs1c_BFs1ll_BFu1s_BFs1c  {
  signed char v1:1;
  signed __tsi64 v2:1;
  unsigned short v3:1;
  signed char v4:1;
};
//SIG(1 BFs1c_BFs1ll_BFu1s_BFs1c) C1{ Fc:1 FL:1 Fs:1 Fc:1}



static void Test_BFs1c_BFs1ll_BFu1s_BFs1c()
{
  {
    init_simple_test("BFs1c_BFs1ll_BFu1s_BFs1c");
    static STRUCT_IF_C BFs1c_BFs1ll_BFu1s_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1ll_BFu1s_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1ll_BFu1s_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1ll_BFu1s_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1ll_BFu1s_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1ll_BFu1s_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1ll_BFu1s_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1ll_BFu1s_BFs1c, BFs1c_BFs1ll_BFu1s_BFs1c)
//============================================================================


struct  BFs1c_BFs1ll_BFu1s_BFs1i  {
  signed char v1:1;
  signed __tsi64 v2:1;
  unsigned short v3:1;
  signed int v4:1;
};
//SIG(1 BFs1c_BFs1ll_BFu1s_BFs1i) C1{ Fc:1 FL:1 Fs:1 Fi:1}



static void Test_BFs1c_BFs1ll_BFu1s_BFs1i()
{
  {
    init_simple_test("BFs1c_BFs1ll_BFu1s_BFs1i");
    static STRUCT_IF_C BFs1c_BFs1ll_BFu1s_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1ll_BFu1s_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1ll_BFu1s_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1ll_BFu1s_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1ll_BFu1s_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1ll_BFu1s_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1ll_BFu1s_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1ll_BFu1s_BFs1i, BFs1c_BFs1ll_BFu1s_BFs1i)
//============================================================================


struct  BFs1c_BFs1ll_BFu1s_BFs1ll  {
  signed char v1:1;
  signed __tsi64 v2:1;
  unsigned short v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1c_BFs1ll_BFu1s_BFs1ll) C1{ Fc:1 FL:1 Fs:1 FL:1}



static void Test_BFs1c_BFs1ll_BFu1s_BFs1ll()
{
  {
    init_simple_test("BFs1c_BFs1ll_BFu1s_BFs1ll");
    static STRUCT_IF_C BFs1c_BFs1ll_BFu1s_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1ll_BFu1s_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1ll_BFu1s_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1ll_BFu1s_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1ll_BFu1s_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1ll_BFu1s_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1ll_BFu1s_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1ll_BFu1s_BFs1ll, BFs1c_BFs1ll_BFu1s_BFs1ll)
//============================================================================


struct  BFs1c_BFs1ll_BFu1s_BFs1s  {
  signed char v1:1;
  signed __tsi64 v2:1;
  unsigned short v3:1;
  signed short v4:1;
};
//SIG(1 BFs1c_BFs1ll_BFu1s_BFs1s) C1{ Fc:1 FL:1 Fs:1 Fs:1}



static void Test_BFs1c_BFs1ll_BFu1s_BFs1s()
{
  {
    init_simple_test("BFs1c_BFs1ll_BFu1s_BFs1s");
    static STRUCT_IF_C BFs1c_BFs1ll_BFu1s_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1ll_BFu1s_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1ll_BFu1s_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1ll_BFu1s_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1ll_BFu1s_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1ll_BFu1s_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1ll_BFu1s_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1ll_BFu1s_BFs1s, BFs1c_BFs1ll_BFu1s_BFs1s)
//============================================================================


struct  BFs1c_BFs1ll_BFu1s_BFu1c  {
  signed char v1:1;
  signed __tsi64 v2:1;
  unsigned short v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1c_BFs1ll_BFu1s_BFu1c) C1{ Fc:1 FL:1 Fs:1 Fc:1}



static void Test_BFs1c_BFs1ll_BFu1s_BFu1c()
{
  {
    init_simple_test("BFs1c_BFs1ll_BFu1s_BFu1c");
    static STRUCT_IF_C BFs1c_BFs1ll_BFu1s_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1ll_BFu1s_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1ll_BFu1s_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1ll_BFu1s_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1ll_BFu1s_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1ll_BFu1s_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1ll_BFu1s_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1ll_BFu1s_BFu1c, BFs1c_BFs1ll_BFu1s_BFu1c)
//============================================================================


struct  BFs1c_BFs1ll_BFu1s_BFu1i  {
  signed char v1:1;
  signed __tsi64 v2:1;
  unsigned short v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1c_BFs1ll_BFu1s_BFu1i) C1{ Fc:1 FL:1 Fs:1 Fi:1}



static void Test_BFs1c_BFs1ll_BFu1s_BFu1i()
{
  {
    init_simple_test("BFs1c_BFs1ll_BFu1s_BFu1i");
    static STRUCT_IF_C BFs1c_BFs1ll_BFu1s_BFu1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1ll_BFu1s_BFu1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1ll_BFu1s_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1ll_BFu1s_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1ll_BFu1s_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1ll_BFu1s_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1ll_BFu1s_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1ll_BFu1s_BFu1i, BFs1c_BFs1ll_BFu1s_BFu1i)
//============================================================================


struct  BFs1c_BFs1ll_BFu1s_BFu1ll  {
  signed char v1:1;
  signed __tsi64 v2:1;
  unsigned short v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1c_BFs1ll_BFu1s_BFu1ll) C1{ Fc:1 FL:1 Fs:1 FL:1}



static void Test_BFs1c_BFs1ll_BFu1s_BFu1ll()
{
  {
    init_simple_test("BFs1c_BFs1ll_BFu1s_BFu1ll");
    static STRUCT_IF_C BFs1c_BFs1ll_BFu1s_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1ll_BFu1s_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1ll_BFu1s_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1ll_BFu1s_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1ll_BFu1s_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1ll_BFu1s_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1ll_BFu1s_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1ll_BFu1s_BFu1ll, BFs1c_BFs1ll_BFu1s_BFu1ll)
//============================================================================


struct  BFs1c_BFs1ll_BFu1s_BFu1s  {
  signed char v1:1;
  signed __tsi64 v2:1;
  unsigned short v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1c_BFs1ll_BFu1s_BFu1s) C1{ Fc:1 FL:1 Fs:1 Fs:1}



static void Test_BFs1c_BFs1ll_BFu1s_BFu1s()
{
  {
    init_simple_test("BFs1c_BFs1ll_BFu1s_BFu1s");
    static STRUCT_IF_C BFs1c_BFs1ll_BFu1s_BFu1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1ll_BFu1s_BFu1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1ll_BFu1s_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1ll_BFu1s_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1ll_BFu1s_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1ll_BFu1s_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1ll_BFu1s_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1ll_BFu1s_BFu1s, BFs1c_BFs1ll_BFu1s_BFu1s)
//============================================================================


struct  BFs1c_BFs1s  {
  signed char v1:1;
  signed short v2:1;
};
//SIG(1 BFs1c_BFs1s) C1{ Fc:1 Fs:1}



static void Test_BFs1c_BFs1s()
{
  {
    init_simple_test("BFs1c_BFs1s");
    static STRUCT_IF_C BFs1c_BFs1s lv;
    check2(sizeof(lv), 2, "sizeof(BFs1c_BFs1s)");
    check2(__alignof__(lv), 2, "__alignof__(BFs1c_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1s, BFs1c_BFs1s)
//============================================================================


struct  BFs1c_BFs1s_BFs1c  {
  signed char v1:1;
  signed short v2:1;
  signed char v3:1;
};
//SIG(1 BFs1c_BFs1s_BFs1c) C1{ Fc:1 Fs:1 Fc:1}



static void Test_BFs1c_BFs1s_BFs1c()
{
  {
    init_simple_test("BFs1c_BFs1s_BFs1c");
    static STRUCT_IF_C BFs1c_BFs1s_BFs1c lv;
    check2(sizeof(lv), 2, "sizeof(BFs1c_BFs1s_BFs1c)");
    check2(__alignof__(lv), 2, "__alignof__(BFs1c_BFs1s_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1s_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1s_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1s_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1s_BFs1c, BFs1c_BFs1s_BFs1c)
//============================================================================


struct  BFs1c_BFs1s_BFs1c_BFs1c  {
  signed char v1:1;
  signed short v2:1;
  signed char v3:1;
  signed char v4:1;
};
//SIG(1 BFs1c_BFs1s_BFs1c_BFs1c) C1{ Fc:1 Fs:1 Fc:1 Fc:1}



static void Test_BFs1c_BFs1s_BFs1c_BFs1c()
{
  {
    init_simple_test("BFs1c_BFs1s_BFs1c_BFs1c");
    static STRUCT_IF_C BFs1c_BFs1s_BFs1c_BFs1c lv;
    check2(sizeof(lv), 2, "sizeof(BFs1c_BFs1s_BFs1c_BFs1c)");
    check2(__alignof__(lv), 2, "__alignof__(BFs1c_BFs1s_BFs1c_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1s_BFs1c_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1s_BFs1c_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1s_BFs1c_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1s_BFs1c_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1s_BFs1c_BFs1c, BFs1c_BFs1s_BFs1c_BFs1c)
//============================================================================


struct  BFs1c_BFs1s_BFs1c_BFs1i  {
  signed char v1:1;
  signed short v2:1;
  signed char v3:1;
  signed int v4:1;
};
//SIG(1 BFs1c_BFs1s_BFs1c_BFs1i) C1{ Fc:1 Fs:1 Fc:1 Fi:1}



static void Test_BFs1c_BFs1s_BFs1c_BFs1i()
{
  {
    init_simple_test("BFs1c_BFs1s_BFs1c_BFs1i");
    static STRUCT_IF_C BFs1c_BFs1s_BFs1c_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1s_BFs1c_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1s_BFs1c_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1s_BFs1c_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1s_BFs1c_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1s_BFs1c_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1s_BFs1c_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1s_BFs1c_BFs1i, BFs1c_BFs1s_BFs1c_BFs1i)
//============================================================================


struct  BFs1c_BFs1s_BFs1c_BFs1ll  {
  signed char v1:1;
  signed short v2:1;
  signed char v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1c_BFs1s_BFs1c_BFs1ll) C1{ Fc:1 Fs:1 Fc:1 FL:1}



static void Test_BFs1c_BFs1s_BFs1c_BFs1ll()
{
  {
    init_simple_test("BFs1c_BFs1s_BFs1c_BFs1ll");
    static STRUCT_IF_C BFs1c_BFs1s_BFs1c_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1s_BFs1c_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1s_BFs1c_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1s_BFs1c_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1s_BFs1c_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1s_BFs1c_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1s_BFs1c_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1s_BFs1c_BFs1ll, BFs1c_BFs1s_BFs1c_BFs1ll)
//============================================================================


struct  BFs1c_BFs1s_BFs1c_BFs1s  {
  signed char v1:1;
  signed short v2:1;
  signed char v3:1;
  signed short v4:1;
};
//SIG(1 BFs1c_BFs1s_BFs1c_BFs1s) C1{ Fc:1 Fs:1 Fc:1 Fs:1}



static void Test_BFs1c_BFs1s_BFs1c_BFs1s()
{
  {
    init_simple_test("BFs1c_BFs1s_BFs1c_BFs1s");
    static STRUCT_IF_C BFs1c_BFs1s_BFs1c_BFs1s lv;
    check2(sizeof(lv), 2, "sizeof(BFs1c_BFs1s_BFs1c_BFs1s)");
    check2(__alignof__(lv), 2, "__alignof__(BFs1c_BFs1s_BFs1c_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1s_BFs1c_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1s_BFs1c_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1s_BFs1c_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1s_BFs1c_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1s_BFs1c_BFs1s, BFs1c_BFs1s_BFs1c_BFs1s)
//============================================================================


struct  BFs1c_BFs1s_BFs1c_BFu1c  {
  signed char v1:1;
  signed short v2:1;
  signed char v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1c_BFs1s_BFs1c_BFu1c) C1{ Fc:1 Fs:1 Fc:1 Fc:1}



static void Test_BFs1c_BFs1s_BFs1c_BFu1c()
{
  {
    init_simple_test("BFs1c_BFs1s_BFs1c_BFu1c");
    static STRUCT_IF_C BFs1c_BFs1s_BFs1c_BFu1c lv;
    check2(sizeof(lv), 2, "sizeof(BFs1c_BFs1s_BFs1c_BFu1c)");
    check2(__alignof__(lv), 2, "__alignof__(BFs1c_BFs1s_BFs1c_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1s_BFs1c_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1s_BFs1c_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1s_BFs1c_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1s_BFs1c_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1s_BFs1c_BFu1c, BFs1c_BFs1s_BFs1c_BFu1c)
//============================================================================


struct  BFs1c_BFs1s_BFs1c_BFu1i  {
  signed char v1:1;
  signed short v2:1;
  signed char v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1c_BFs1s_BFs1c_BFu1i) C1{ Fc:1 Fs:1 Fc:1 Fi:1}



static void Test_BFs1c_BFs1s_BFs1c_BFu1i()
{
  {
    init_simple_test("BFs1c_BFs1s_BFs1c_BFu1i");
    static STRUCT_IF_C BFs1c_BFs1s_BFs1c_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1s_BFs1c_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1s_BFs1c_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1s_BFs1c_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1s_BFs1c_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1s_BFs1c_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1s_BFs1c_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1s_BFs1c_BFu1i, BFs1c_BFs1s_BFs1c_BFu1i)
//============================================================================


struct  BFs1c_BFs1s_BFs1c_BFu1ll  {
  signed char v1:1;
  signed short v2:1;
  signed char v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1c_BFs1s_BFs1c_BFu1ll) C1{ Fc:1 Fs:1 Fc:1 FL:1}



static void Test_BFs1c_BFs1s_BFs1c_BFu1ll()
{
  {
    init_simple_test("BFs1c_BFs1s_BFs1c_BFu1ll");
    static STRUCT_IF_C BFs1c_BFs1s_BFs1c_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1s_BFs1c_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1s_BFs1c_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1s_BFs1c_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1s_BFs1c_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1s_BFs1c_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1s_BFs1c_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1s_BFs1c_BFu1ll, BFs1c_BFs1s_BFs1c_BFu1ll)
//============================================================================


struct  BFs1c_BFs1s_BFs1c_BFu1s  {
  signed char v1:1;
  signed short v2:1;
  signed char v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1c_BFs1s_BFs1c_BFu1s) C1{ Fc:1 Fs:1 Fc:1 Fs:1}



static void Test_BFs1c_BFs1s_BFs1c_BFu1s()
{
  {
    init_simple_test("BFs1c_BFs1s_BFs1c_BFu1s");
    static STRUCT_IF_C BFs1c_BFs1s_BFs1c_BFu1s lv;
    check2(sizeof(lv), 2, "sizeof(BFs1c_BFs1s_BFs1c_BFu1s)");
    check2(__alignof__(lv), 2, "__alignof__(BFs1c_BFs1s_BFs1c_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1s_BFs1c_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1s_BFs1c_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1s_BFs1c_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1s_BFs1c_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1s_BFs1c_BFu1s, BFs1c_BFs1s_BFs1c_BFu1s)
//============================================================================


struct  BFs1c_BFs1s_BFs1i  {
  signed char v1:1;
  signed short v2:1;
  signed int v3:1;
};
//SIG(1 BFs1c_BFs1s_BFs1i) C1{ Fc:1 Fs:1 Fi:1}



static void Test_BFs1c_BFs1s_BFs1i()
{
  {
    init_simple_test("BFs1c_BFs1s_BFs1i");
    static STRUCT_IF_C BFs1c_BFs1s_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1s_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1s_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1s_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1s_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1s_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1s_BFs1i, BFs1c_BFs1s_BFs1i)
//============================================================================


struct  BFs1c_BFs1s_BFs1i_BFs1c  {
  signed char v1:1;
  signed short v2:1;
  signed int v3:1;
  signed char v4:1;
};
//SIG(1 BFs1c_BFs1s_BFs1i_BFs1c) C1{ Fc:1 Fs:1 Fi:1 Fc:1}



static void Test_BFs1c_BFs1s_BFs1i_BFs1c()
{
  {
    init_simple_test("BFs1c_BFs1s_BFs1i_BFs1c");
    static STRUCT_IF_C BFs1c_BFs1s_BFs1i_BFs1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1s_BFs1i_BFs1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1s_BFs1i_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1s_BFs1i_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1s_BFs1i_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1s_BFs1i_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1s_BFs1i_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1s_BFs1i_BFs1c, BFs1c_BFs1s_BFs1i_BFs1c)
//============================================================================


struct  BFs1c_BFs1s_BFs1i_BFs1i  {
  signed char v1:1;
  signed short v2:1;
  signed int v3:1;
  signed int v4:1;
};
//SIG(1 BFs1c_BFs1s_BFs1i_BFs1i) C1{ Fc:1 Fs:1 Fi:1 Fi:1}



static void Test_BFs1c_BFs1s_BFs1i_BFs1i()
{
  {
    init_simple_test("BFs1c_BFs1s_BFs1i_BFs1i");
    static STRUCT_IF_C BFs1c_BFs1s_BFs1i_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1s_BFs1i_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1s_BFs1i_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1s_BFs1i_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1s_BFs1i_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1s_BFs1i_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1s_BFs1i_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1s_BFs1i_BFs1i, BFs1c_BFs1s_BFs1i_BFs1i)
//============================================================================


struct  BFs1c_BFs1s_BFs1i_BFs1ll  {
  signed char v1:1;
  signed short v2:1;
  signed int v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1c_BFs1s_BFs1i_BFs1ll) C1{ Fc:1 Fs:1 Fi:1 FL:1}



static void Test_BFs1c_BFs1s_BFs1i_BFs1ll()
{
  {
    init_simple_test("BFs1c_BFs1s_BFs1i_BFs1ll");
    static STRUCT_IF_C BFs1c_BFs1s_BFs1i_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1s_BFs1i_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1s_BFs1i_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1s_BFs1i_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1s_BFs1i_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1s_BFs1i_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1s_BFs1i_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1s_BFs1i_BFs1ll, BFs1c_BFs1s_BFs1i_BFs1ll)
//============================================================================


struct  BFs1c_BFs1s_BFs1i_BFs1s  {
  signed char v1:1;
  signed short v2:1;
  signed int v3:1;
  signed short v4:1;
};
//SIG(1 BFs1c_BFs1s_BFs1i_BFs1s) C1{ Fc:1 Fs:1 Fi:1 Fs:1}



static void Test_BFs1c_BFs1s_BFs1i_BFs1s()
{
  {
    init_simple_test("BFs1c_BFs1s_BFs1i_BFs1s");
    static STRUCT_IF_C BFs1c_BFs1s_BFs1i_BFs1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1s_BFs1i_BFs1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1s_BFs1i_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1s_BFs1i_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1s_BFs1i_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1s_BFs1i_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1s_BFs1i_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1s_BFs1i_BFs1s, BFs1c_BFs1s_BFs1i_BFs1s)
//============================================================================


struct  BFs1c_BFs1s_BFs1i_BFu1c  {
  signed char v1:1;
  signed short v2:1;
  signed int v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1c_BFs1s_BFs1i_BFu1c) C1{ Fc:1 Fs:1 Fi:1 Fc:1}



static void Test_BFs1c_BFs1s_BFs1i_BFu1c()
{
  {
    init_simple_test("BFs1c_BFs1s_BFs1i_BFu1c");
    static STRUCT_IF_C BFs1c_BFs1s_BFs1i_BFu1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1s_BFs1i_BFu1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1s_BFs1i_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1s_BFs1i_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1s_BFs1i_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1s_BFs1i_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1s_BFs1i_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1s_BFs1i_BFu1c, BFs1c_BFs1s_BFs1i_BFu1c)
//============================================================================


struct  BFs1c_BFs1s_BFs1i_BFu1i  {
  signed char v1:1;
  signed short v2:1;
  signed int v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1c_BFs1s_BFs1i_BFu1i) C1{ Fc:1 Fs:1 Fi:1 Fi:1}



static void Test_BFs1c_BFs1s_BFs1i_BFu1i()
{
  {
    init_simple_test("BFs1c_BFs1s_BFs1i_BFu1i");
    static STRUCT_IF_C BFs1c_BFs1s_BFs1i_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1s_BFs1i_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1s_BFs1i_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1s_BFs1i_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1s_BFs1i_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1s_BFs1i_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1s_BFs1i_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1s_BFs1i_BFu1i, BFs1c_BFs1s_BFs1i_BFu1i)
//============================================================================


struct  BFs1c_BFs1s_BFs1i_BFu1ll  {
  signed char v1:1;
  signed short v2:1;
  signed int v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1c_BFs1s_BFs1i_BFu1ll) C1{ Fc:1 Fs:1 Fi:1 FL:1}



static void Test_BFs1c_BFs1s_BFs1i_BFu1ll()
{
  {
    init_simple_test("BFs1c_BFs1s_BFs1i_BFu1ll");
    static STRUCT_IF_C BFs1c_BFs1s_BFs1i_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1s_BFs1i_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1s_BFs1i_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1s_BFs1i_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1s_BFs1i_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1s_BFs1i_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1s_BFs1i_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1s_BFs1i_BFu1ll, BFs1c_BFs1s_BFs1i_BFu1ll)
//============================================================================


struct  BFs1c_BFs1s_BFs1i_BFu1s  {
  signed char v1:1;
  signed short v2:1;
  signed int v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1c_BFs1s_BFs1i_BFu1s) C1{ Fc:1 Fs:1 Fi:1 Fs:1}



static void Test_BFs1c_BFs1s_BFs1i_BFu1s()
{
  {
    init_simple_test("BFs1c_BFs1s_BFs1i_BFu1s");
    static STRUCT_IF_C BFs1c_BFs1s_BFs1i_BFu1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1s_BFs1i_BFu1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1s_BFs1i_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1s_BFs1i_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1s_BFs1i_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1s_BFs1i_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1s_BFs1i_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1s_BFs1i_BFu1s, BFs1c_BFs1s_BFs1i_BFu1s)
//============================================================================


struct  BFs1c_BFs1s_BFs1ll  {
  signed char v1:1;
  signed short v2:1;
  signed __tsi64 v3:1;
};
//SIG(1 BFs1c_BFs1s_BFs1ll) C1{ Fc:1 Fs:1 FL:1}



static void Test_BFs1c_BFs1s_BFs1ll()
{
  {
    init_simple_test("BFs1c_BFs1s_BFs1ll");
    static STRUCT_IF_C BFs1c_BFs1s_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1s_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1s_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1s_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1s_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1s_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1s_BFs1ll, BFs1c_BFs1s_BFs1ll)
//============================================================================


struct  BFs1c_BFs1s_BFs1ll_BFs1c  {
  signed char v1:1;
  signed short v2:1;
  signed __tsi64 v3:1;
  signed char v4:1;
};
//SIG(1 BFs1c_BFs1s_BFs1ll_BFs1c) C1{ Fc:1 Fs:1 FL:1 Fc:1}



static void Test_BFs1c_BFs1s_BFs1ll_BFs1c()
{
  {
    init_simple_test("BFs1c_BFs1s_BFs1ll_BFs1c");
    static STRUCT_IF_C BFs1c_BFs1s_BFs1ll_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1s_BFs1ll_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1s_BFs1ll_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1s_BFs1ll_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1s_BFs1ll_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1s_BFs1ll_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1s_BFs1ll_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1s_BFs1ll_BFs1c, BFs1c_BFs1s_BFs1ll_BFs1c)
//============================================================================


struct  BFs1c_BFs1s_BFs1ll_BFs1i  {
  signed char v1:1;
  signed short v2:1;
  signed __tsi64 v3:1;
  signed int v4:1;
};
//SIG(1 BFs1c_BFs1s_BFs1ll_BFs1i) C1{ Fc:1 Fs:1 FL:1 Fi:1}



static void Test_BFs1c_BFs1s_BFs1ll_BFs1i()
{
  {
    init_simple_test("BFs1c_BFs1s_BFs1ll_BFs1i");
    static STRUCT_IF_C BFs1c_BFs1s_BFs1ll_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1s_BFs1ll_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1s_BFs1ll_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1s_BFs1ll_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1s_BFs1ll_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1s_BFs1ll_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1s_BFs1ll_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1s_BFs1ll_BFs1i, BFs1c_BFs1s_BFs1ll_BFs1i)
//============================================================================


struct  BFs1c_BFs1s_BFs1ll_BFs1ll  {
  signed char v1:1;
  signed short v2:1;
  signed __tsi64 v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1c_BFs1s_BFs1ll_BFs1ll) C1{ Fc:1 Fs:1 FL:1 FL:1}



static void Test_BFs1c_BFs1s_BFs1ll_BFs1ll()
{
  {
    init_simple_test("BFs1c_BFs1s_BFs1ll_BFs1ll");
    static STRUCT_IF_C BFs1c_BFs1s_BFs1ll_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1s_BFs1ll_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1s_BFs1ll_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1s_BFs1ll_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1s_BFs1ll_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1s_BFs1ll_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1s_BFs1ll_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1s_BFs1ll_BFs1ll, BFs1c_BFs1s_BFs1ll_BFs1ll)
//============================================================================


struct  BFs1c_BFs1s_BFs1ll_BFs1s  {
  signed char v1:1;
  signed short v2:1;
  signed __tsi64 v3:1;
  signed short v4:1;
};
//SIG(1 BFs1c_BFs1s_BFs1ll_BFs1s) C1{ Fc:1 Fs:1 FL:1 Fs:1}



static void Test_BFs1c_BFs1s_BFs1ll_BFs1s()
{
  {
    init_simple_test("BFs1c_BFs1s_BFs1ll_BFs1s");
    static STRUCT_IF_C BFs1c_BFs1s_BFs1ll_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1s_BFs1ll_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1s_BFs1ll_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1s_BFs1ll_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1s_BFs1ll_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1s_BFs1ll_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1s_BFs1ll_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1s_BFs1ll_BFs1s, BFs1c_BFs1s_BFs1ll_BFs1s)
//============================================================================


struct  BFs1c_BFs1s_BFs1ll_BFu1c  {
  signed char v1:1;
  signed short v2:1;
  signed __tsi64 v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1c_BFs1s_BFs1ll_BFu1c) C1{ Fc:1 Fs:1 FL:1 Fc:1}



static void Test_BFs1c_BFs1s_BFs1ll_BFu1c()
{
  {
    init_simple_test("BFs1c_BFs1s_BFs1ll_BFu1c");
    static STRUCT_IF_C BFs1c_BFs1s_BFs1ll_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1s_BFs1ll_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1s_BFs1ll_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1s_BFs1ll_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1s_BFs1ll_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1s_BFs1ll_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1s_BFs1ll_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1s_BFs1ll_BFu1c, BFs1c_BFs1s_BFs1ll_BFu1c)
//============================================================================


struct  BFs1c_BFs1s_BFs1ll_BFu1i  {
  signed char v1:1;
  signed short v2:1;
  signed __tsi64 v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1c_BFs1s_BFs1ll_BFu1i) C1{ Fc:1 Fs:1 FL:1 Fi:1}



static void Test_BFs1c_BFs1s_BFs1ll_BFu1i()
{
  {
    init_simple_test("BFs1c_BFs1s_BFs1ll_BFu1i");
    static STRUCT_IF_C BFs1c_BFs1s_BFs1ll_BFu1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1s_BFs1ll_BFu1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1s_BFs1ll_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1s_BFs1ll_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1s_BFs1ll_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1s_BFs1ll_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1s_BFs1ll_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1s_BFs1ll_BFu1i, BFs1c_BFs1s_BFs1ll_BFu1i)
//============================================================================


struct  BFs1c_BFs1s_BFs1ll_BFu1ll  {
  signed char v1:1;
  signed short v2:1;
  signed __tsi64 v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1c_BFs1s_BFs1ll_BFu1ll) C1{ Fc:1 Fs:1 FL:1 FL:1}



static void Test_BFs1c_BFs1s_BFs1ll_BFu1ll()
{
  {
    init_simple_test("BFs1c_BFs1s_BFs1ll_BFu1ll");
    static STRUCT_IF_C BFs1c_BFs1s_BFs1ll_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1s_BFs1ll_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1s_BFs1ll_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1s_BFs1ll_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1s_BFs1ll_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1s_BFs1ll_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1s_BFs1ll_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1s_BFs1ll_BFu1ll, BFs1c_BFs1s_BFs1ll_BFu1ll)
//============================================================================


struct  BFs1c_BFs1s_BFs1ll_BFu1s  {
  signed char v1:1;
  signed short v2:1;
  signed __tsi64 v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1c_BFs1s_BFs1ll_BFu1s) C1{ Fc:1 Fs:1 FL:1 Fs:1}



static void Test_BFs1c_BFs1s_BFs1ll_BFu1s()
{
  {
    init_simple_test("BFs1c_BFs1s_BFs1ll_BFu1s");
    static STRUCT_IF_C BFs1c_BFs1s_BFs1ll_BFu1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1s_BFs1ll_BFu1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1s_BFs1ll_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1s_BFs1ll_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1s_BFs1ll_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1s_BFs1ll_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1s_BFs1ll_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1s_BFs1ll_BFu1s, BFs1c_BFs1s_BFs1ll_BFu1s)
//============================================================================


struct  BFs1c_BFs1s_BFs1s  {
  signed char v1:1;
  signed short v2:1;
  signed short v3:1;
};
//SIG(1 BFs1c_BFs1s_BFs1s) C1{ Fc:1 Fs:1 Fs:1}



static void Test_BFs1c_BFs1s_BFs1s()
{
  {
    init_simple_test("BFs1c_BFs1s_BFs1s");
    static STRUCT_IF_C BFs1c_BFs1s_BFs1s lv;
    check2(sizeof(lv), 2, "sizeof(BFs1c_BFs1s_BFs1s)");
    check2(__alignof__(lv), 2, "__alignof__(BFs1c_BFs1s_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1s_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1s_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1s_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1s_BFs1s, BFs1c_BFs1s_BFs1s)
//============================================================================


struct  BFs1c_BFs1s_BFs1s_BFs1c  {
  signed char v1:1;
  signed short v2:1;
  signed short v3:1;
  signed char v4:1;
};
//SIG(1 BFs1c_BFs1s_BFs1s_BFs1c) C1{ Fc:1 Fs:1 Fs:1 Fc:1}



static void Test_BFs1c_BFs1s_BFs1s_BFs1c()
{
  {
    init_simple_test("BFs1c_BFs1s_BFs1s_BFs1c");
    static STRUCT_IF_C BFs1c_BFs1s_BFs1s_BFs1c lv;
    check2(sizeof(lv), 2, "sizeof(BFs1c_BFs1s_BFs1s_BFs1c)");
    check2(__alignof__(lv), 2, "__alignof__(BFs1c_BFs1s_BFs1s_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1s_BFs1s_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1s_BFs1s_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1s_BFs1s_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1s_BFs1s_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1s_BFs1s_BFs1c, BFs1c_BFs1s_BFs1s_BFs1c)
//============================================================================


struct  BFs1c_BFs1s_BFs1s_BFs1i  {
  signed char v1:1;
  signed short v2:1;
  signed short v3:1;
  signed int v4:1;
};
//SIG(1 BFs1c_BFs1s_BFs1s_BFs1i) C1{ Fc:1 Fs:1 Fs:1 Fi:1}



static void Test_BFs1c_BFs1s_BFs1s_BFs1i()
{
  {
    init_simple_test("BFs1c_BFs1s_BFs1s_BFs1i");
    static STRUCT_IF_C BFs1c_BFs1s_BFs1s_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1s_BFs1s_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1s_BFs1s_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1s_BFs1s_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1s_BFs1s_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1s_BFs1s_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1s_BFs1s_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1s_BFs1s_BFs1i, BFs1c_BFs1s_BFs1s_BFs1i)
//============================================================================


struct  BFs1c_BFs1s_BFs1s_BFs1ll  {
  signed char v1:1;
  signed short v2:1;
  signed short v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1c_BFs1s_BFs1s_BFs1ll) C1{ Fc:1 Fs:1 Fs:1 FL:1}



static void Test_BFs1c_BFs1s_BFs1s_BFs1ll()
{
  {
    init_simple_test("BFs1c_BFs1s_BFs1s_BFs1ll");
    static STRUCT_IF_C BFs1c_BFs1s_BFs1s_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1s_BFs1s_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1s_BFs1s_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1s_BFs1s_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1s_BFs1s_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1s_BFs1s_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1s_BFs1s_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1s_BFs1s_BFs1ll, BFs1c_BFs1s_BFs1s_BFs1ll)
//============================================================================


struct  BFs1c_BFs1s_BFs1s_BFs1s  {
  signed char v1:1;
  signed short v2:1;
  signed short v3:1;
  signed short v4:1;
};
//SIG(1 BFs1c_BFs1s_BFs1s_BFs1s) C1{ Fc:1 Fs:1 Fs:1 Fs:1}



static void Test_BFs1c_BFs1s_BFs1s_BFs1s()
{
  {
    init_simple_test("BFs1c_BFs1s_BFs1s_BFs1s");
    static STRUCT_IF_C BFs1c_BFs1s_BFs1s_BFs1s lv;
    check2(sizeof(lv), 2, "sizeof(BFs1c_BFs1s_BFs1s_BFs1s)");
    check2(__alignof__(lv), 2, "__alignof__(BFs1c_BFs1s_BFs1s_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1s_BFs1s_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1s_BFs1s_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1s_BFs1s_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1s_BFs1s_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1s_BFs1s_BFs1s, BFs1c_BFs1s_BFs1s_BFs1s)
//============================================================================


struct  BFs1c_BFs1s_BFs1s_BFu1c  {
  signed char v1:1;
  signed short v2:1;
  signed short v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1c_BFs1s_BFs1s_BFu1c) C1{ Fc:1 Fs:1 Fs:1 Fc:1}



static void Test_BFs1c_BFs1s_BFs1s_BFu1c()
{
  {
    init_simple_test("BFs1c_BFs1s_BFs1s_BFu1c");
    static STRUCT_IF_C BFs1c_BFs1s_BFs1s_BFu1c lv;
    check2(sizeof(lv), 2, "sizeof(BFs1c_BFs1s_BFs1s_BFu1c)");
    check2(__alignof__(lv), 2, "__alignof__(BFs1c_BFs1s_BFs1s_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1s_BFs1s_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1s_BFs1s_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1s_BFs1s_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1s_BFs1s_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1s_BFs1s_BFu1c, BFs1c_BFs1s_BFs1s_BFu1c)
//============================================================================


struct  BFs1c_BFs1s_BFs1s_BFu1i  {
  signed char v1:1;
  signed short v2:1;
  signed short v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1c_BFs1s_BFs1s_BFu1i) C1{ Fc:1 Fs:1 Fs:1 Fi:1}



static void Test_BFs1c_BFs1s_BFs1s_BFu1i()
{
  {
    init_simple_test("BFs1c_BFs1s_BFs1s_BFu1i");
    static STRUCT_IF_C BFs1c_BFs1s_BFs1s_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1s_BFs1s_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1s_BFs1s_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1s_BFs1s_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1s_BFs1s_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1s_BFs1s_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1s_BFs1s_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1s_BFs1s_BFu1i, BFs1c_BFs1s_BFs1s_BFu1i)
//============================================================================


struct  BFs1c_BFs1s_BFs1s_BFu1ll  {
  signed char v1:1;
  signed short v2:1;
  signed short v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1c_BFs1s_BFs1s_BFu1ll) C1{ Fc:1 Fs:1 Fs:1 FL:1}



static void Test_BFs1c_BFs1s_BFs1s_BFu1ll()
{
  {
    init_simple_test("BFs1c_BFs1s_BFs1s_BFu1ll");
    static STRUCT_IF_C BFs1c_BFs1s_BFs1s_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1s_BFs1s_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1s_BFs1s_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1s_BFs1s_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1s_BFs1s_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1s_BFs1s_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1s_BFs1s_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1s_BFs1s_BFu1ll, BFs1c_BFs1s_BFs1s_BFu1ll)
//============================================================================


struct  BFs1c_BFs1s_BFs1s_BFu1s  {
  signed char v1:1;
  signed short v2:1;
  signed short v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1c_BFs1s_BFs1s_BFu1s) C1{ Fc:1 Fs:1 Fs:1 Fs:1}



static void Test_BFs1c_BFs1s_BFs1s_BFu1s()
{
  {
    init_simple_test("BFs1c_BFs1s_BFs1s_BFu1s");
    static STRUCT_IF_C BFs1c_BFs1s_BFs1s_BFu1s lv;
    check2(sizeof(lv), 2, "sizeof(BFs1c_BFs1s_BFs1s_BFu1s)");
    check2(__alignof__(lv), 2, "__alignof__(BFs1c_BFs1s_BFs1s_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1s_BFs1s_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1s_BFs1s_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFs1s_BFs1s_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1s_BFs1s_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1s_BFs1s_BFu1s, BFs1c_BFs1s_BFs1s_BFu1s)
//============================================================================


struct  BFs1c_BFs1s_BFu1c  {
  signed char v1:1;
  signed short v2:1;
  unsigned char v3:1;
};
//SIG(1 BFs1c_BFs1s_BFu1c) C1{ Fc:1 Fs:1 Fc:1}



static void Test_BFs1c_BFs1s_BFu1c()
{
  {
    init_simple_test("BFs1c_BFs1s_BFu1c");
    static STRUCT_IF_C BFs1c_BFs1s_BFu1c lv;
    check2(sizeof(lv), 2, "sizeof(BFs1c_BFs1s_BFu1c)");
    check2(__alignof__(lv), 2, "__alignof__(BFs1c_BFs1s_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1s_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1s_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1s_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1s_BFu1c, BFs1c_BFs1s_BFu1c)
//============================================================================


struct  BFs1c_BFs1s_BFu1c_BFs1c  {
  signed char v1:1;
  signed short v2:1;
  unsigned char v3:1;
  signed char v4:1;
};
//SIG(1 BFs1c_BFs1s_BFu1c_BFs1c) C1{ Fc:1 Fs:1 Fc:1 Fc:1}



static void Test_BFs1c_BFs1s_BFu1c_BFs1c()
{
  {
    init_simple_test("BFs1c_BFs1s_BFu1c_BFs1c");
    static STRUCT_IF_C BFs1c_BFs1s_BFu1c_BFs1c lv;
    check2(sizeof(lv), 2, "sizeof(BFs1c_BFs1s_BFu1c_BFs1c)");
    check2(__alignof__(lv), 2, "__alignof__(BFs1c_BFs1s_BFu1c_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1s_BFu1c_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1s_BFu1c_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1s_BFu1c_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1s_BFu1c_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1s_BFu1c_BFs1c, BFs1c_BFs1s_BFu1c_BFs1c)
//============================================================================


struct  BFs1c_BFs1s_BFu1c_BFs1i  {
  signed char v1:1;
  signed short v2:1;
  unsigned char v3:1;
  signed int v4:1;
};
//SIG(1 BFs1c_BFs1s_BFu1c_BFs1i) C1{ Fc:1 Fs:1 Fc:1 Fi:1}



static void Test_BFs1c_BFs1s_BFu1c_BFs1i()
{
  {
    init_simple_test("BFs1c_BFs1s_BFu1c_BFs1i");
    static STRUCT_IF_C BFs1c_BFs1s_BFu1c_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1s_BFu1c_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1s_BFu1c_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1s_BFu1c_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1s_BFu1c_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1s_BFu1c_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1s_BFu1c_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1s_BFu1c_BFs1i, BFs1c_BFs1s_BFu1c_BFs1i)
//============================================================================


struct  BFs1c_BFs1s_BFu1c_BFs1ll  {
  signed char v1:1;
  signed short v2:1;
  unsigned char v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1c_BFs1s_BFu1c_BFs1ll) C1{ Fc:1 Fs:1 Fc:1 FL:1}



static void Test_BFs1c_BFs1s_BFu1c_BFs1ll()
{
  {
    init_simple_test("BFs1c_BFs1s_BFu1c_BFs1ll");
    static STRUCT_IF_C BFs1c_BFs1s_BFu1c_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1s_BFu1c_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1s_BFu1c_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1s_BFu1c_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1s_BFu1c_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1s_BFu1c_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1s_BFu1c_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1s_BFu1c_BFs1ll, BFs1c_BFs1s_BFu1c_BFs1ll)
//============================================================================


struct  BFs1c_BFs1s_BFu1c_BFs1s  {
  signed char v1:1;
  signed short v2:1;
  unsigned char v3:1;
  signed short v4:1;
};
//SIG(1 BFs1c_BFs1s_BFu1c_BFs1s) C1{ Fc:1 Fs:1 Fc:1 Fs:1}



static void Test_BFs1c_BFs1s_BFu1c_BFs1s()
{
  {
    init_simple_test("BFs1c_BFs1s_BFu1c_BFs1s");
    static STRUCT_IF_C BFs1c_BFs1s_BFu1c_BFs1s lv;
    check2(sizeof(lv), 2, "sizeof(BFs1c_BFs1s_BFu1c_BFs1s)");
    check2(__alignof__(lv), 2, "__alignof__(BFs1c_BFs1s_BFu1c_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1s_BFu1c_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1s_BFu1c_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1s_BFu1c_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1s_BFu1c_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1s_BFu1c_BFs1s, BFs1c_BFs1s_BFu1c_BFs1s)
//============================================================================


struct  BFs1c_BFs1s_BFu1c_BFu1c  {
  signed char v1:1;
  signed short v2:1;
  unsigned char v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1c_BFs1s_BFu1c_BFu1c) C1{ Fc:1 Fs:1 Fc:1 Fc:1}



static void Test_BFs1c_BFs1s_BFu1c_BFu1c()
{
  {
    init_simple_test("BFs1c_BFs1s_BFu1c_BFu1c");
    static STRUCT_IF_C BFs1c_BFs1s_BFu1c_BFu1c lv;
    check2(sizeof(lv), 2, "sizeof(BFs1c_BFs1s_BFu1c_BFu1c)");
    check2(__alignof__(lv), 2, "__alignof__(BFs1c_BFs1s_BFu1c_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1s_BFu1c_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1s_BFu1c_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1s_BFu1c_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1s_BFu1c_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1s_BFu1c_BFu1c, BFs1c_BFs1s_BFu1c_BFu1c)
//============================================================================


struct  BFs1c_BFs1s_BFu1c_BFu1i  {
  signed char v1:1;
  signed short v2:1;
  unsigned char v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1c_BFs1s_BFu1c_BFu1i) C1{ Fc:1 Fs:1 Fc:1 Fi:1}



static void Test_BFs1c_BFs1s_BFu1c_BFu1i()
{
  {
    init_simple_test("BFs1c_BFs1s_BFu1c_BFu1i");
    static STRUCT_IF_C BFs1c_BFs1s_BFu1c_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1s_BFu1c_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1s_BFu1c_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1s_BFu1c_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1s_BFu1c_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1s_BFu1c_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1s_BFu1c_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1s_BFu1c_BFu1i, BFs1c_BFs1s_BFu1c_BFu1i)
//============================================================================


struct  BFs1c_BFs1s_BFu1c_BFu1ll  {
  signed char v1:1;
  signed short v2:1;
  unsigned char v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1c_BFs1s_BFu1c_BFu1ll) C1{ Fc:1 Fs:1 Fc:1 FL:1}



static void Test_BFs1c_BFs1s_BFu1c_BFu1ll()
{
  {
    init_simple_test("BFs1c_BFs1s_BFu1c_BFu1ll");
    static STRUCT_IF_C BFs1c_BFs1s_BFu1c_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1s_BFu1c_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1s_BFu1c_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1s_BFu1c_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1s_BFu1c_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1s_BFu1c_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1s_BFu1c_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1s_BFu1c_BFu1ll, BFs1c_BFs1s_BFu1c_BFu1ll)
//============================================================================


struct  BFs1c_BFs1s_BFu1c_BFu1s  {
  signed char v1:1;
  signed short v2:1;
  unsigned char v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1c_BFs1s_BFu1c_BFu1s) C1{ Fc:1 Fs:1 Fc:1 Fs:1}



static void Test_BFs1c_BFs1s_BFu1c_BFu1s()
{
  {
    init_simple_test("BFs1c_BFs1s_BFu1c_BFu1s");
    static STRUCT_IF_C BFs1c_BFs1s_BFu1c_BFu1s lv;
    check2(sizeof(lv), 2, "sizeof(BFs1c_BFs1s_BFu1c_BFu1s)");
    check2(__alignof__(lv), 2, "__alignof__(BFs1c_BFs1s_BFu1c_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1s_BFu1c_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1s_BFu1c_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1s_BFu1c_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1s_BFu1c_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1s_BFu1c_BFu1s, BFs1c_BFs1s_BFu1c_BFu1s)
//============================================================================


struct  BFs1c_BFs1s_BFu1i  {
  signed char v1:1;
  signed short v2:1;
  unsigned int v3:1;
};
//SIG(1 BFs1c_BFs1s_BFu1i) C1{ Fc:1 Fs:1 Fi:1}



static void Test_BFs1c_BFs1s_BFu1i()
{
  {
    init_simple_test("BFs1c_BFs1s_BFu1i");
    static STRUCT_IF_C BFs1c_BFs1s_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1s_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1s_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1s_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1s_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1s_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1s_BFu1i, BFs1c_BFs1s_BFu1i)
//============================================================================


struct  BFs1c_BFs1s_BFu1i_BFs1c  {
  signed char v1:1;
  signed short v2:1;
  unsigned int v3:1;
  signed char v4:1;
};
//SIG(1 BFs1c_BFs1s_BFu1i_BFs1c) C1{ Fc:1 Fs:1 Fi:1 Fc:1}



static void Test_BFs1c_BFs1s_BFu1i_BFs1c()
{
  {
    init_simple_test("BFs1c_BFs1s_BFu1i_BFs1c");
    static STRUCT_IF_C BFs1c_BFs1s_BFu1i_BFs1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1s_BFu1i_BFs1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1s_BFu1i_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1s_BFu1i_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1s_BFu1i_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1s_BFu1i_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1s_BFu1i_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1s_BFu1i_BFs1c, BFs1c_BFs1s_BFu1i_BFs1c)
//============================================================================


struct  BFs1c_BFs1s_BFu1i_BFs1i  {
  signed char v1:1;
  signed short v2:1;
  unsigned int v3:1;
  signed int v4:1;
};
//SIG(1 BFs1c_BFs1s_BFu1i_BFs1i) C1{ Fc:1 Fs:1 Fi:1 Fi:1}



static void Test_BFs1c_BFs1s_BFu1i_BFs1i()
{
  {
    init_simple_test("BFs1c_BFs1s_BFu1i_BFs1i");
    static STRUCT_IF_C BFs1c_BFs1s_BFu1i_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1s_BFu1i_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1s_BFu1i_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1s_BFu1i_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1s_BFu1i_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1s_BFu1i_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1s_BFu1i_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1s_BFu1i_BFs1i, BFs1c_BFs1s_BFu1i_BFs1i)
//============================================================================


struct  BFs1c_BFs1s_BFu1i_BFs1ll  {
  signed char v1:1;
  signed short v2:1;
  unsigned int v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1c_BFs1s_BFu1i_BFs1ll) C1{ Fc:1 Fs:1 Fi:1 FL:1}



static void Test_BFs1c_BFs1s_BFu1i_BFs1ll()
{
  {
    init_simple_test("BFs1c_BFs1s_BFu1i_BFs1ll");
    static STRUCT_IF_C BFs1c_BFs1s_BFu1i_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1s_BFu1i_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1s_BFu1i_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1s_BFu1i_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1s_BFu1i_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1s_BFu1i_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1s_BFu1i_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1s_BFu1i_BFs1ll, BFs1c_BFs1s_BFu1i_BFs1ll)
//============================================================================


struct  BFs1c_BFs1s_BFu1i_BFs1s  {
  signed char v1:1;
  signed short v2:1;
  unsigned int v3:1;
  signed short v4:1;
};
//SIG(1 BFs1c_BFs1s_BFu1i_BFs1s) C1{ Fc:1 Fs:1 Fi:1 Fs:1}



static void Test_BFs1c_BFs1s_BFu1i_BFs1s()
{
  {
    init_simple_test("BFs1c_BFs1s_BFu1i_BFs1s");
    static STRUCT_IF_C BFs1c_BFs1s_BFu1i_BFs1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1s_BFu1i_BFs1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1s_BFu1i_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1s_BFu1i_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1s_BFu1i_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1s_BFu1i_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1s_BFu1i_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1s_BFu1i_BFs1s, BFs1c_BFs1s_BFu1i_BFs1s)
//============================================================================


struct  BFs1c_BFs1s_BFu1i_BFu1c  {
  signed char v1:1;
  signed short v2:1;
  unsigned int v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1c_BFs1s_BFu1i_BFu1c) C1{ Fc:1 Fs:1 Fi:1 Fc:1}



static void Test_BFs1c_BFs1s_BFu1i_BFu1c()
{
  {
    init_simple_test("BFs1c_BFs1s_BFu1i_BFu1c");
    static STRUCT_IF_C BFs1c_BFs1s_BFu1i_BFu1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1s_BFu1i_BFu1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1s_BFu1i_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1s_BFu1i_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1s_BFu1i_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1s_BFu1i_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1s_BFu1i_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1s_BFu1i_BFu1c, BFs1c_BFs1s_BFu1i_BFu1c)
//============================================================================


struct  BFs1c_BFs1s_BFu1i_BFu1i  {
  signed char v1:1;
  signed short v2:1;
  unsigned int v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1c_BFs1s_BFu1i_BFu1i) C1{ Fc:1 Fs:1 Fi:1 Fi:1}



static void Test_BFs1c_BFs1s_BFu1i_BFu1i()
{
  {
    init_simple_test("BFs1c_BFs1s_BFu1i_BFu1i");
    static STRUCT_IF_C BFs1c_BFs1s_BFu1i_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1s_BFu1i_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1s_BFu1i_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1s_BFu1i_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1s_BFu1i_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1s_BFu1i_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1s_BFu1i_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1s_BFu1i_BFu1i, BFs1c_BFs1s_BFu1i_BFu1i)
//============================================================================


struct  BFs1c_BFs1s_BFu1i_BFu1ll  {
  signed char v1:1;
  signed short v2:1;
  unsigned int v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1c_BFs1s_BFu1i_BFu1ll) C1{ Fc:1 Fs:1 Fi:1 FL:1}



static void Test_BFs1c_BFs1s_BFu1i_BFu1ll()
{
  {
    init_simple_test("BFs1c_BFs1s_BFu1i_BFu1ll");
    static STRUCT_IF_C BFs1c_BFs1s_BFu1i_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1s_BFu1i_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1s_BFu1i_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1s_BFu1i_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1s_BFu1i_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1s_BFu1i_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1s_BFu1i_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1s_BFu1i_BFu1ll, BFs1c_BFs1s_BFu1i_BFu1ll)
//============================================================================


struct  BFs1c_BFs1s_BFu1i_BFu1s  {
  signed char v1:1;
  signed short v2:1;
  unsigned int v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1c_BFs1s_BFu1i_BFu1s) C1{ Fc:1 Fs:1 Fi:1 Fs:1}



static void Test_BFs1c_BFs1s_BFu1i_BFu1s()
{
  {
    init_simple_test("BFs1c_BFs1s_BFu1i_BFu1s");
    static STRUCT_IF_C BFs1c_BFs1s_BFu1i_BFu1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1s_BFu1i_BFu1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1s_BFu1i_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1s_BFu1i_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1s_BFu1i_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1s_BFu1i_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1s_BFu1i_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1s_BFu1i_BFu1s, BFs1c_BFs1s_BFu1i_BFu1s)
//============================================================================


struct  BFs1c_BFs1s_BFu1ll  {
  signed char v1:1;
  signed short v2:1;
  __tsu64 v3:1;
};
//SIG(1 BFs1c_BFs1s_BFu1ll) C1{ Fc:1 Fs:1 FL:1}



static void Test_BFs1c_BFs1s_BFu1ll()
{
  {
    init_simple_test("BFs1c_BFs1s_BFu1ll");
    static STRUCT_IF_C BFs1c_BFs1s_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1s_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1s_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1s_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1s_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1s_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1s_BFu1ll, BFs1c_BFs1s_BFu1ll)
//============================================================================


struct  BFs1c_BFs1s_BFu1ll_BFs1c  {
  signed char v1:1;
  signed short v2:1;
  __tsu64 v3:1;
  signed char v4:1;
};
//SIG(1 BFs1c_BFs1s_BFu1ll_BFs1c) C1{ Fc:1 Fs:1 FL:1 Fc:1}



static void Test_BFs1c_BFs1s_BFu1ll_BFs1c()
{
  {
    init_simple_test("BFs1c_BFs1s_BFu1ll_BFs1c");
    static STRUCT_IF_C BFs1c_BFs1s_BFu1ll_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1s_BFu1ll_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1s_BFu1ll_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1s_BFu1ll_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1s_BFu1ll_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1s_BFu1ll_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1s_BFu1ll_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1s_BFu1ll_BFs1c, BFs1c_BFs1s_BFu1ll_BFs1c)
//============================================================================


struct  BFs1c_BFs1s_BFu1ll_BFs1i  {
  signed char v1:1;
  signed short v2:1;
  __tsu64 v3:1;
  signed int v4:1;
};
//SIG(1 BFs1c_BFs1s_BFu1ll_BFs1i) C1{ Fc:1 Fs:1 FL:1 Fi:1}



static void Test_BFs1c_BFs1s_BFu1ll_BFs1i()
{
  {
    init_simple_test("BFs1c_BFs1s_BFu1ll_BFs1i");
    static STRUCT_IF_C BFs1c_BFs1s_BFu1ll_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1s_BFu1ll_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1s_BFu1ll_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1s_BFu1ll_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1s_BFu1ll_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1s_BFu1ll_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1s_BFu1ll_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1s_BFu1ll_BFs1i, BFs1c_BFs1s_BFu1ll_BFs1i)
//============================================================================


struct  BFs1c_BFs1s_BFu1ll_BFs1ll  {
  signed char v1:1;
  signed short v2:1;
  __tsu64 v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1c_BFs1s_BFu1ll_BFs1ll) C1{ Fc:1 Fs:1 FL:1 FL:1}



static void Test_BFs1c_BFs1s_BFu1ll_BFs1ll()
{
  {
    init_simple_test("BFs1c_BFs1s_BFu1ll_BFs1ll");
    static STRUCT_IF_C BFs1c_BFs1s_BFu1ll_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1s_BFu1ll_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1s_BFu1ll_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1s_BFu1ll_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1s_BFu1ll_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1s_BFu1ll_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1s_BFu1ll_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1s_BFu1ll_BFs1ll, BFs1c_BFs1s_BFu1ll_BFs1ll)
//============================================================================


struct  BFs1c_BFs1s_BFu1ll_BFs1s  {
  signed char v1:1;
  signed short v2:1;
  __tsu64 v3:1;
  signed short v4:1;
};
//SIG(1 BFs1c_BFs1s_BFu1ll_BFs1s) C1{ Fc:1 Fs:1 FL:1 Fs:1}



static void Test_BFs1c_BFs1s_BFu1ll_BFs1s()
{
  {
    init_simple_test("BFs1c_BFs1s_BFu1ll_BFs1s");
    static STRUCT_IF_C BFs1c_BFs1s_BFu1ll_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1s_BFu1ll_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1s_BFu1ll_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1s_BFu1ll_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1s_BFu1ll_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1s_BFu1ll_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1s_BFu1ll_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1s_BFu1ll_BFs1s, BFs1c_BFs1s_BFu1ll_BFs1s)
//============================================================================


struct  BFs1c_BFs1s_BFu1ll_BFu1c  {
  signed char v1:1;
  signed short v2:1;
  __tsu64 v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1c_BFs1s_BFu1ll_BFu1c) C1{ Fc:1 Fs:1 FL:1 Fc:1}



static void Test_BFs1c_BFs1s_BFu1ll_BFu1c()
{
  {
    init_simple_test("BFs1c_BFs1s_BFu1ll_BFu1c");
    static STRUCT_IF_C BFs1c_BFs1s_BFu1ll_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1s_BFu1ll_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1s_BFu1ll_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1s_BFu1ll_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1s_BFu1ll_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1s_BFu1ll_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1s_BFu1ll_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1s_BFu1ll_BFu1c, BFs1c_BFs1s_BFu1ll_BFu1c)
//============================================================================


struct  BFs1c_BFs1s_BFu1ll_BFu1i  {
  signed char v1:1;
  signed short v2:1;
  __tsu64 v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1c_BFs1s_BFu1ll_BFu1i) C1{ Fc:1 Fs:1 FL:1 Fi:1}



static void Test_BFs1c_BFs1s_BFu1ll_BFu1i()
{
  {
    init_simple_test("BFs1c_BFs1s_BFu1ll_BFu1i");
    static STRUCT_IF_C BFs1c_BFs1s_BFu1ll_BFu1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1s_BFu1ll_BFu1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1s_BFu1ll_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1s_BFu1ll_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1s_BFu1ll_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1s_BFu1ll_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1s_BFu1ll_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1s_BFu1ll_BFu1i, BFs1c_BFs1s_BFu1ll_BFu1i)
//============================================================================


struct  BFs1c_BFs1s_BFu1ll_BFu1ll  {
  signed char v1:1;
  signed short v2:1;
  __tsu64 v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1c_BFs1s_BFu1ll_BFu1ll) C1{ Fc:1 Fs:1 FL:1 FL:1}



static void Test_BFs1c_BFs1s_BFu1ll_BFu1ll()
{
  {
    init_simple_test("BFs1c_BFs1s_BFu1ll_BFu1ll");
    static STRUCT_IF_C BFs1c_BFs1s_BFu1ll_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1s_BFu1ll_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1s_BFu1ll_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1s_BFu1ll_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1s_BFu1ll_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1s_BFu1ll_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1s_BFu1ll_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1s_BFu1ll_BFu1ll, BFs1c_BFs1s_BFu1ll_BFu1ll)
//============================================================================


struct  BFs1c_BFs1s_BFu1ll_BFu1s  {
  signed char v1:1;
  signed short v2:1;
  __tsu64 v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1c_BFs1s_BFu1ll_BFu1s) C1{ Fc:1 Fs:1 FL:1 Fs:1}



static void Test_BFs1c_BFs1s_BFu1ll_BFu1s()
{
  {
    init_simple_test("BFs1c_BFs1s_BFu1ll_BFu1s");
    static STRUCT_IF_C BFs1c_BFs1s_BFu1ll_BFu1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1s_BFu1ll_BFu1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1s_BFu1ll_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1s_BFu1ll_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1s_BFu1ll_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1s_BFu1ll_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1s_BFu1ll_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1s_BFu1ll_BFu1s, BFs1c_BFs1s_BFu1ll_BFu1s)
//============================================================================


struct  BFs1c_BFs1s_BFu1s  {
  signed char v1:1;
  signed short v2:1;
  unsigned short v3:1;
};
//SIG(1 BFs1c_BFs1s_BFu1s) C1{ Fc:1 Fs:1 Fs:1}



static void Test_BFs1c_BFs1s_BFu1s()
{
  {
    init_simple_test("BFs1c_BFs1s_BFu1s");
    static STRUCT_IF_C BFs1c_BFs1s_BFu1s lv;
    check2(sizeof(lv), 2, "sizeof(BFs1c_BFs1s_BFu1s)");
    check2(__alignof__(lv), 2, "__alignof__(BFs1c_BFs1s_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1s_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1s_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1s_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1s_BFu1s, BFs1c_BFs1s_BFu1s)
//============================================================================


struct  BFs1c_BFs1s_BFu1s_BFs1c  {
  signed char v1:1;
  signed short v2:1;
  unsigned short v3:1;
  signed char v4:1;
};
//SIG(1 BFs1c_BFs1s_BFu1s_BFs1c) C1{ Fc:1 Fs:1 Fs:1 Fc:1}



static void Test_BFs1c_BFs1s_BFu1s_BFs1c()
{
  {
    init_simple_test("BFs1c_BFs1s_BFu1s_BFs1c");
    static STRUCT_IF_C BFs1c_BFs1s_BFu1s_BFs1c lv;
    check2(sizeof(lv), 2, "sizeof(BFs1c_BFs1s_BFu1s_BFs1c)");
    check2(__alignof__(lv), 2, "__alignof__(BFs1c_BFs1s_BFu1s_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1s_BFu1s_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1s_BFu1s_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1s_BFu1s_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1s_BFu1s_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1s_BFu1s_BFs1c, BFs1c_BFs1s_BFu1s_BFs1c)
//============================================================================


struct  BFs1c_BFs1s_BFu1s_BFs1i  {
  signed char v1:1;
  signed short v2:1;
  unsigned short v3:1;
  signed int v4:1;
};
//SIG(1 BFs1c_BFs1s_BFu1s_BFs1i) C1{ Fc:1 Fs:1 Fs:1 Fi:1}



static void Test_BFs1c_BFs1s_BFu1s_BFs1i()
{
  {
    init_simple_test("BFs1c_BFs1s_BFu1s_BFs1i");
    static STRUCT_IF_C BFs1c_BFs1s_BFu1s_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1s_BFu1s_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1s_BFu1s_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1s_BFu1s_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1s_BFu1s_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1s_BFu1s_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1s_BFu1s_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1s_BFu1s_BFs1i, BFs1c_BFs1s_BFu1s_BFs1i)
//============================================================================


struct  BFs1c_BFs1s_BFu1s_BFs1ll  {
  signed char v1:1;
  signed short v2:1;
  unsigned short v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1c_BFs1s_BFu1s_BFs1ll) C1{ Fc:1 Fs:1 Fs:1 FL:1}



static void Test_BFs1c_BFs1s_BFu1s_BFs1ll()
{
  {
    init_simple_test("BFs1c_BFs1s_BFu1s_BFs1ll");
    static STRUCT_IF_C BFs1c_BFs1s_BFu1s_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1s_BFu1s_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1s_BFu1s_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1s_BFu1s_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1s_BFu1s_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1s_BFu1s_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1s_BFu1s_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1s_BFu1s_BFs1ll, BFs1c_BFs1s_BFu1s_BFs1ll)
//============================================================================


struct  BFs1c_BFs1s_BFu1s_BFs1s  {
  signed char v1:1;
  signed short v2:1;
  unsigned short v3:1;
  signed short v4:1;
};
//SIG(1 BFs1c_BFs1s_BFu1s_BFs1s) C1{ Fc:1 Fs:1 Fs:1 Fs:1}



static void Test_BFs1c_BFs1s_BFu1s_BFs1s()
{
  {
    init_simple_test("BFs1c_BFs1s_BFu1s_BFs1s");
    static STRUCT_IF_C BFs1c_BFs1s_BFu1s_BFs1s lv;
    check2(sizeof(lv), 2, "sizeof(BFs1c_BFs1s_BFu1s_BFs1s)");
    check2(__alignof__(lv), 2, "__alignof__(BFs1c_BFs1s_BFu1s_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1s_BFu1s_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1s_BFu1s_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1s_BFu1s_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFs1s_BFu1s_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1s_BFu1s_BFs1s, BFs1c_BFs1s_BFu1s_BFs1s)
//============================================================================


struct  BFs1c_BFs1s_BFu1s_BFu1c  {
  signed char v1:1;
  signed short v2:1;
  unsigned short v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1c_BFs1s_BFu1s_BFu1c) C1{ Fc:1 Fs:1 Fs:1 Fc:1}



static void Test_BFs1c_BFs1s_BFu1s_BFu1c()
{
  {
    init_simple_test("BFs1c_BFs1s_BFu1s_BFu1c");
    static STRUCT_IF_C BFs1c_BFs1s_BFu1s_BFu1c lv;
    check2(sizeof(lv), 2, "sizeof(BFs1c_BFs1s_BFu1s_BFu1c)");
    check2(__alignof__(lv), 2, "__alignof__(BFs1c_BFs1s_BFu1s_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1s_BFu1s_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1s_BFu1s_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1s_BFu1s_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1s_BFu1s_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1s_BFu1s_BFu1c, BFs1c_BFs1s_BFu1s_BFu1c)
//============================================================================


struct  BFs1c_BFs1s_BFu1s_BFu1i  {
  signed char v1:1;
  signed short v2:1;
  unsigned short v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1c_BFs1s_BFu1s_BFu1i) C1{ Fc:1 Fs:1 Fs:1 Fi:1}



static void Test_BFs1c_BFs1s_BFu1s_BFu1i()
{
  {
    init_simple_test("BFs1c_BFs1s_BFu1s_BFu1i");
    static STRUCT_IF_C BFs1c_BFs1s_BFu1s_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFs1s_BFu1s_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFs1s_BFu1s_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1s_BFu1s_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1s_BFu1s_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1s_BFu1s_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1s_BFu1s_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1s_BFu1s_BFu1i, BFs1c_BFs1s_BFu1s_BFu1i)
//============================================================================


struct  BFs1c_BFs1s_BFu1s_BFu1ll  {
  signed char v1:1;
  signed short v2:1;
  unsigned short v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1c_BFs1s_BFu1s_BFu1ll) C1{ Fc:1 Fs:1 Fs:1 FL:1}



static void Test_BFs1c_BFs1s_BFu1s_BFu1ll()
{
  {
    init_simple_test("BFs1c_BFs1s_BFu1s_BFu1ll");
    static STRUCT_IF_C BFs1c_BFs1s_BFu1s_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFs1s_BFu1s_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFs1s_BFu1s_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1s_BFu1s_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1s_BFu1s_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1s_BFu1s_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1s_BFu1s_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1s_BFu1s_BFu1ll, BFs1c_BFs1s_BFu1s_BFu1ll)
//============================================================================


struct  BFs1c_BFs1s_BFu1s_BFu1s  {
  signed char v1:1;
  signed short v2:1;
  unsigned short v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1c_BFs1s_BFu1s_BFu1s) C1{ Fc:1 Fs:1 Fs:1 Fs:1}



static void Test_BFs1c_BFs1s_BFu1s_BFu1s()
{
  {
    init_simple_test("BFs1c_BFs1s_BFu1s_BFu1s");
    static STRUCT_IF_C BFs1c_BFs1s_BFu1s_BFu1s lv;
    check2(sizeof(lv), 2, "sizeof(BFs1c_BFs1s_BFu1s_BFu1s)");
    check2(__alignof__(lv), 2, "__alignof__(BFs1c_BFs1s_BFu1s_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFs1s_BFu1s_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1c_BFs1s_BFu1s_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFs1s_BFu1s_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFs1s_BFu1s_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFs1s_BFu1s_BFu1s, BFs1c_BFs1s_BFu1s_BFu1s)
//============================================================================


struct  BFs1c_BFu1c  {
  signed char v1:1;
  unsigned char v2:1;
};
//SIG(1 BFs1c_BFu1c) C1{ Fc:1 Fc:1}



static void Test_BFs1c_BFu1c()
{
  {
    init_simple_test("BFs1c_BFu1c");
    static STRUCT_IF_C BFs1c_BFu1c lv;
    check2(sizeof(lv), 1, "sizeof(BFs1c_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(BFs1c_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1c, BFs1c_BFu1c)
//============================================================================


struct  BFs1c_BFu1c_BFs1c  {
  signed char v1:1;
  unsigned char v2:1;
  signed char v3:1;
};
//SIG(1 BFs1c_BFu1c_BFs1c) C1{ Fc:1 Fc:1 Fc:1}



static void Test_BFs1c_BFu1c_BFs1c()
{
  {
    init_simple_test("BFs1c_BFu1c_BFs1c");
    static STRUCT_IF_C BFs1c_BFu1c_BFs1c lv;
    check2(sizeof(lv), 1, "sizeof(BFs1c_BFu1c_BFs1c)");
    check2(__alignof__(lv), 1, "__alignof__(BFs1c_BFu1c_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1c_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1c_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1c_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1c_BFs1c, BFs1c_BFu1c_BFs1c)
//============================================================================


struct  BFs1c_BFu1c_BFs1c_BFs1c  {
  signed char v1:1;
  unsigned char v2:1;
  signed char v3:1;
  signed char v4:1;
};
//SIG(1 BFs1c_BFu1c_BFs1c_BFs1c) C1{ Fc:1 Fc:1 Fc:1 Fc:1}



static void Test_BFs1c_BFu1c_BFs1c_BFs1c()
{
  {
    init_simple_test("BFs1c_BFu1c_BFs1c_BFs1c");
    static STRUCT_IF_C BFs1c_BFu1c_BFs1c_BFs1c lv;
    check2(sizeof(lv), 1, "sizeof(BFs1c_BFu1c_BFs1c_BFs1c)");
    check2(__alignof__(lv), 1, "__alignof__(BFs1c_BFu1c_BFs1c_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1c_BFs1c_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1c_BFs1c_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1c_BFs1c_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1c_BFs1c_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1c_BFs1c_BFs1c, BFs1c_BFu1c_BFs1c_BFs1c)
//============================================================================


struct  BFs1c_BFu1c_BFs1c_BFs1i  {
  signed char v1:1;
  unsigned char v2:1;
  signed char v3:1;
  signed int v4:1;
};
//SIG(1 BFs1c_BFu1c_BFs1c_BFs1i) C1{ Fc:1 Fc:1 Fc:1 Fi:1}



static void Test_BFs1c_BFu1c_BFs1c_BFs1i()
{
  {
    init_simple_test("BFs1c_BFu1c_BFs1c_BFs1i");
    static STRUCT_IF_C BFs1c_BFu1c_BFs1c_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1c_BFs1c_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1c_BFs1c_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1c_BFs1c_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1c_BFs1c_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1c_BFs1c_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1c_BFs1c_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1c_BFs1c_BFs1i, BFs1c_BFu1c_BFs1c_BFs1i)
//============================================================================


struct  BFs1c_BFu1c_BFs1c_BFs1ll  {
  signed char v1:1;
  unsigned char v2:1;
  signed char v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1c_BFu1c_BFs1c_BFs1ll) C1{ Fc:1 Fc:1 Fc:1 FL:1}



static void Test_BFs1c_BFu1c_BFs1c_BFs1ll()
{
  {
    init_simple_test("BFs1c_BFu1c_BFs1c_BFs1ll");
    static STRUCT_IF_C BFs1c_BFu1c_BFs1c_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1c_BFs1c_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1c_BFs1c_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1c_BFs1c_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1c_BFs1c_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1c_BFs1c_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1c_BFs1c_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1c_BFs1c_BFs1ll, BFs1c_BFu1c_BFs1c_BFs1ll)
//============================================================================


struct  BFs1c_BFu1c_BFs1c_BFs1s  {
  signed char v1:1;
  unsigned char v2:1;
  signed char v3:1;
  signed short v4:1;
};
//SIG(1 BFs1c_BFu1c_BFs1c_BFs1s) C1{ Fc:1 Fc:1 Fc:1 Fs:1}



static void Test_BFs1c_BFu1c_BFs1c_BFs1s()
{
  {
    init_simple_test("BFs1c_BFu1c_BFs1c_BFs1s");
    static STRUCT_IF_C BFs1c_BFu1c_BFs1c_BFs1s lv;
    check2(sizeof(lv), 2, "sizeof(BFs1c_BFu1c_BFs1c_BFs1s)");
    check2(__alignof__(lv), 2, "__alignof__(BFs1c_BFu1c_BFs1c_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1c_BFs1c_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1c_BFs1c_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1c_BFs1c_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1c_BFs1c_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1c_BFs1c_BFs1s, BFs1c_BFu1c_BFs1c_BFs1s)
//============================================================================


struct  BFs1c_BFu1c_BFs1c_BFu1c  {
  signed char v1:1;
  unsigned char v2:1;
  signed char v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1c_BFu1c_BFs1c_BFu1c) C1{ Fc:1 Fc:1 Fc:1 Fc:1}



static void Test_BFs1c_BFu1c_BFs1c_BFu1c()
{
  {
    init_simple_test("BFs1c_BFu1c_BFs1c_BFu1c");
    static STRUCT_IF_C BFs1c_BFu1c_BFs1c_BFu1c lv;
    check2(sizeof(lv), 1, "sizeof(BFs1c_BFu1c_BFs1c_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(BFs1c_BFu1c_BFs1c_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1c_BFs1c_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1c_BFs1c_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1c_BFs1c_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1c_BFs1c_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1c_BFs1c_BFu1c, BFs1c_BFu1c_BFs1c_BFu1c)
//============================================================================


struct  BFs1c_BFu1c_BFs1c_BFu1i  {
  signed char v1:1;
  unsigned char v2:1;
  signed char v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1c_BFu1c_BFs1c_BFu1i) C1{ Fc:1 Fc:1 Fc:1 Fi:1}



static void Test_BFs1c_BFu1c_BFs1c_BFu1i()
{
  {
    init_simple_test("BFs1c_BFu1c_BFs1c_BFu1i");
    static STRUCT_IF_C BFs1c_BFu1c_BFs1c_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1c_BFs1c_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1c_BFs1c_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1c_BFs1c_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1c_BFs1c_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1c_BFs1c_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1c_BFs1c_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1c_BFs1c_BFu1i, BFs1c_BFu1c_BFs1c_BFu1i)
//============================================================================


struct  BFs1c_BFu1c_BFs1c_BFu1ll  {
  signed char v1:1;
  unsigned char v2:1;
  signed char v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1c_BFu1c_BFs1c_BFu1ll) C1{ Fc:1 Fc:1 Fc:1 FL:1}



static void Test_BFs1c_BFu1c_BFs1c_BFu1ll()
{
  {
    init_simple_test("BFs1c_BFu1c_BFs1c_BFu1ll");
    static STRUCT_IF_C BFs1c_BFu1c_BFs1c_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1c_BFs1c_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1c_BFs1c_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1c_BFs1c_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1c_BFs1c_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1c_BFs1c_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1c_BFs1c_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1c_BFs1c_BFu1ll, BFs1c_BFu1c_BFs1c_BFu1ll)
//============================================================================


struct  BFs1c_BFu1c_BFs1c_BFu1s  {
  signed char v1:1;
  unsigned char v2:1;
  signed char v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1c_BFu1c_BFs1c_BFu1s) C1{ Fc:1 Fc:1 Fc:1 Fs:1}



static void Test_BFs1c_BFu1c_BFs1c_BFu1s()
{
  {
    init_simple_test("BFs1c_BFu1c_BFs1c_BFu1s");
    static STRUCT_IF_C BFs1c_BFu1c_BFs1c_BFu1s lv;
    check2(sizeof(lv), 2, "sizeof(BFs1c_BFu1c_BFs1c_BFu1s)");
    check2(__alignof__(lv), 2, "__alignof__(BFs1c_BFu1c_BFs1c_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1c_BFs1c_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1c_BFs1c_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1c_BFs1c_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1c_BFs1c_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1c_BFs1c_BFu1s, BFs1c_BFu1c_BFs1c_BFu1s)
//============================================================================


struct  BFs1c_BFu1c_BFs1i  {
  signed char v1:1;
  unsigned char v2:1;
  signed int v3:1;
};
//SIG(1 BFs1c_BFu1c_BFs1i) C1{ Fc:1 Fc:1 Fi:1}



static void Test_BFs1c_BFu1c_BFs1i()
{
  {
    init_simple_test("BFs1c_BFu1c_BFs1i");
    static STRUCT_IF_C BFs1c_BFu1c_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1c_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1c_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1c_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1c_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1c_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1c_BFs1i, BFs1c_BFu1c_BFs1i)
//============================================================================


struct  BFs1c_BFu1c_BFs1i_BFs1c  {
  signed char v1:1;
  unsigned char v2:1;
  signed int v3:1;
  signed char v4:1;
};
//SIG(1 BFs1c_BFu1c_BFs1i_BFs1c) C1{ Fc:1 Fc:1 Fi:1 Fc:1}



static void Test_BFs1c_BFu1c_BFs1i_BFs1c()
{
  {
    init_simple_test("BFs1c_BFu1c_BFs1i_BFs1c");
    static STRUCT_IF_C BFs1c_BFu1c_BFs1i_BFs1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1c_BFs1i_BFs1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1c_BFs1i_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1c_BFs1i_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1c_BFs1i_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1c_BFs1i_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1c_BFs1i_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1c_BFs1i_BFs1c, BFs1c_BFu1c_BFs1i_BFs1c)
//============================================================================


struct  BFs1c_BFu1c_BFs1i_BFs1i  {
  signed char v1:1;
  unsigned char v2:1;
  signed int v3:1;
  signed int v4:1;
};
//SIG(1 BFs1c_BFu1c_BFs1i_BFs1i) C1{ Fc:1 Fc:1 Fi:1 Fi:1}



static void Test_BFs1c_BFu1c_BFs1i_BFs1i()
{
  {
    init_simple_test("BFs1c_BFu1c_BFs1i_BFs1i");
    static STRUCT_IF_C BFs1c_BFu1c_BFs1i_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1c_BFs1i_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1c_BFs1i_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1c_BFs1i_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1c_BFs1i_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1c_BFs1i_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1c_BFs1i_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1c_BFs1i_BFs1i, BFs1c_BFu1c_BFs1i_BFs1i)
//============================================================================


struct  BFs1c_BFu1c_BFs1i_BFs1ll  {
  signed char v1:1;
  unsigned char v2:1;
  signed int v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1c_BFu1c_BFs1i_BFs1ll) C1{ Fc:1 Fc:1 Fi:1 FL:1}



static void Test_BFs1c_BFu1c_BFs1i_BFs1ll()
{
  {
    init_simple_test("BFs1c_BFu1c_BFs1i_BFs1ll");
    static STRUCT_IF_C BFs1c_BFu1c_BFs1i_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1c_BFs1i_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1c_BFs1i_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1c_BFs1i_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1c_BFs1i_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1c_BFs1i_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1c_BFs1i_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1c_BFs1i_BFs1ll, BFs1c_BFu1c_BFs1i_BFs1ll)
//============================================================================


struct  BFs1c_BFu1c_BFs1i_BFs1s  {
  signed char v1:1;
  unsigned char v2:1;
  signed int v3:1;
  signed short v4:1;
};
//SIG(1 BFs1c_BFu1c_BFs1i_BFs1s) C1{ Fc:1 Fc:1 Fi:1 Fs:1}



static void Test_BFs1c_BFu1c_BFs1i_BFs1s()
{
  {
    init_simple_test("BFs1c_BFu1c_BFs1i_BFs1s");
    static STRUCT_IF_C BFs1c_BFu1c_BFs1i_BFs1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1c_BFs1i_BFs1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1c_BFs1i_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1c_BFs1i_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1c_BFs1i_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1c_BFs1i_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1c_BFs1i_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1c_BFs1i_BFs1s, BFs1c_BFu1c_BFs1i_BFs1s)
//============================================================================


struct  BFs1c_BFu1c_BFs1i_BFu1c  {
  signed char v1:1;
  unsigned char v2:1;
  signed int v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1c_BFu1c_BFs1i_BFu1c) C1{ Fc:1 Fc:1 Fi:1 Fc:1}



static void Test_BFs1c_BFu1c_BFs1i_BFu1c()
{
  {
    init_simple_test("BFs1c_BFu1c_BFs1i_BFu1c");
    static STRUCT_IF_C BFs1c_BFu1c_BFs1i_BFu1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1c_BFs1i_BFu1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1c_BFs1i_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1c_BFs1i_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1c_BFs1i_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1c_BFs1i_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1c_BFs1i_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1c_BFs1i_BFu1c, BFs1c_BFu1c_BFs1i_BFu1c)
//============================================================================


struct  BFs1c_BFu1c_BFs1i_BFu1i  {
  signed char v1:1;
  unsigned char v2:1;
  signed int v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1c_BFu1c_BFs1i_BFu1i) C1{ Fc:1 Fc:1 Fi:1 Fi:1}



static void Test_BFs1c_BFu1c_BFs1i_BFu1i()
{
  {
    init_simple_test("BFs1c_BFu1c_BFs1i_BFu1i");
    static STRUCT_IF_C BFs1c_BFu1c_BFs1i_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1c_BFs1i_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1c_BFs1i_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1c_BFs1i_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1c_BFs1i_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1c_BFs1i_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1c_BFs1i_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1c_BFs1i_BFu1i, BFs1c_BFu1c_BFs1i_BFu1i)
//============================================================================


struct  BFs1c_BFu1c_BFs1i_BFu1ll  {
  signed char v1:1;
  unsigned char v2:1;
  signed int v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1c_BFu1c_BFs1i_BFu1ll) C1{ Fc:1 Fc:1 Fi:1 FL:1}



static void Test_BFs1c_BFu1c_BFs1i_BFu1ll()
{
  {
    init_simple_test("BFs1c_BFu1c_BFs1i_BFu1ll");
    static STRUCT_IF_C BFs1c_BFu1c_BFs1i_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1c_BFs1i_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1c_BFs1i_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1c_BFs1i_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1c_BFs1i_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1c_BFs1i_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1c_BFs1i_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1c_BFs1i_BFu1ll, BFs1c_BFu1c_BFs1i_BFu1ll)
//============================================================================


struct  BFs1c_BFu1c_BFs1i_BFu1s  {
  signed char v1:1;
  unsigned char v2:1;
  signed int v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1c_BFu1c_BFs1i_BFu1s) C1{ Fc:1 Fc:1 Fi:1 Fs:1}



static void Test_BFs1c_BFu1c_BFs1i_BFu1s()
{
  {
    init_simple_test("BFs1c_BFu1c_BFs1i_BFu1s");
    static STRUCT_IF_C BFs1c_BFu1c_BFs1i_BFu1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1c_BFs1i_BFu1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1c_BFs1i_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1c_BFs1i_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1c_BFs1i_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1c_BFs1i_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1c_BFs1i_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1c_BFs1i_BFu1s, BFs1c_BFu1c_BFs1i_BFu1s)
//============================================================================


struct  BFs1c_BFu1c_BFs1ll  {
  signed char v1:1;
  unsigned char v2:1;
  signed __tsi64 v3:1;
};
//SIG(1 BFs1c_BFu1c_BFs1ll) C1{ Fc:1 Fc:1 FL:1}



static void Test_BFs1c_BFu1c_BFs1ll()
{
  {
    init_simple_test("BFs1c_BFu1c_BFs1ll");
    static STRUCT_IF_C BFs1c_BFu1c_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1c_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1c_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1c_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1c_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1c_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1c_BFs1ll, BFs1c_BFu1c_BFs1ll)
//============================================================================


struct  BFs1c_BFu1c_BFs1ll_BFs1c  {
  signed char v1:1;
  unsigned char v2:1;
  signed __tsi64 v3:1;
  signed char v4:1;
};
//SIG(1 BFs1c_BFu1c_BFs1ll_BFs1c) C1{ Fc:1 Fc:1 FL:1 Fc:1}



static void Test_BFs1c_BFu1c_BFs1ll_BFs1c()
{
  {
    init_simple_test("BFs1c_BFu1c_BFs1ll_BFs1c");
    static STRUCT_IF_C BFs1c_BFu1c_BFs1ll_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1c_BFs1ll_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1c_BFs1ll_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1c_BFs1ll_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1c_BFs1ll_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1c_BFs1ll_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1c_BFs1ll_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1c_BFs1ll_BFs1c, BFs1c_BFu1c_BFs1ll_BFs1c)
//============================================================================


struct  BFs1c_BFu1c_BFs1ll_BFs1i  {
  signed char v1:1;
  unsigned char v2:1;
  signed __tsi64 v3:1;
  signed int v4:1;
};
//SIG(1 BFs1c_BFu1c_BFs1ll_BFs1i) C1{ Fc:1 Fc:1 FL:1 Fi:1}



static void Test_BFs1c_BFu1c_BFs1ll_BFs1i()
{
  {
    init_simple_test("BFs1c_BFu1c_BFs1ll_BFs1i");
    static STRUCT_IF_C BFs1c_BFu1c_BFs1ll_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1c_BFs1ll_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1c_BFs1ll_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1c_BFs1ll_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1c_BFs1ll_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1c_BFs1ll_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1c_BFs1ll_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1c_BFs1ll_BFs1i, BFs1c_BFu1c_BFs1ll_BFs1i)
//============================================================================


struct  BFs1c_BFu1c_BFs1ll_BFs1ll  {
  signed char v1:1;
  unsigned char v2:1;
  signed __tsi64 v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1c_BFu1c_BFs1ll_BFs1ll) C1{ Fc:1 Fc:1 FL:1 FL:1}



static void Test_BFs1c_BFu1c_BFs1ll_BFs1ll()
{
  {
    init_simple_test("BFs1c_BFu1c_BFs1ll_BFs1ll");
    static STRUCT_IF_C BFs1c_BFu1c_BFs1ll_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1c_BFs1ll_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1c_BFs1ll_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1c_BFs1ll_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1c_BFs1ll_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1c_BFs1ll_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1c_BFs1ll_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1c_BFs1ll_BFs1ll, BFs1c_BFu1c_BFs1ll_BFs1ll)
//============================================================================


struct  BFs1c_BFu1c_BFs1ll_BFs1s  {
  signed char v1:1;
  unsigned char v2:1;
  signed __tsi64 v3:1;
  signed short v4:1;
};
//SIG(1 BFs1c_BFu1c_BFs1ll_BFs1s) C1{ Fc:1 Fc:1 FL:1 Fs:1}



static void Test_BFs1c_BFu1c_BFs1ll_BFs1s()
{
  {
    init_simple_test("BFs1c_BFu1c_BFs1ll_BFs1s");
    static STRUCT_IF_C BFs1c_BFu1c_BFs1ll_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1c_BFs1ll_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1c_BFs1ll_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1c_BFs1ll_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1c_BFs1ll_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1c_BFs1ll_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1c_BFs1ll_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1c_BFs1ll_BFs1s, BFs1c_BFu1c_BFs1ll_BFs1s)
//============================================================================


struct  BFs1c_BFu1c_BFs1ll_BFu1c  {
  signed char v1:1;
  unsigned char v2:1;
  signed __tsi64 v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1c_BFu1c_BFs1ll_BFu1c) C1{ Fc:1 Fc:1 FL:1 Fc:1}



static void Test_BFs1c_BFu1c_BFs1ll_BFu1c()
{
  {
    init_simple_test("BFs1c_BFu1c_BFs1ll_BFu1c");
    static STRUCT_IF_C BFs1c_BFu1c_BFs1ll_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1c_BFs1ll_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1c_BFs1ll_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1c_BFs1ll_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1c_BFs1ll_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1c_BFs1ll_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1c_BFs1ll_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1c_BFs1ll_BFu1c, BFs1c_BFu1c_BFs1ll_BFu1c)
//============================================================================


struct  BFs1c_BFu1c_BFs1ll_BFu1i  {
  signed char v1:1;
  unsigned char v2:1;
  signed __tsi64 v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1c_BFu1c_BFs1ll_BFu1i) C1{ Fc:1 Fc:1 FL:1 Fi:1}



static void Test_BFs1c_BFu1c_BFs1ll_BFu1i()
{
  {
    init_simple_test("BFs1c_BFu1c_BFs1ll_BFu1i");
    static STRUCT_IF_C BFs1c_BFu1c_BFs1ll_BFu1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1c_BFs1ll_BFu1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1c_BFs1ll_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1c_BFs1ll_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1c_BFs1ll_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1c_BFs1ll_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1c_BFs1ll_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1c_BFs1ll_BFu1i, BFs1c_BFu1c_BFs1ll_BFu1i)
//============================================================================


struct  BFs1c_BFu1c_BFs1ll_BFu1ll  {
  signed char v1:1;
  unsigned char v2:1;
  signed __tsi64 v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1c_BFu1c_BFs1ll_BFu1ll) C1{ Fc:1 Fc:1 FL:1 FL:1}



static void Test_BFs1c_BFu1c_BFs1ll_BFu1ll()
{
  {
    init_simple_test("BFs1c_BFu1c_BFs1ll_BFu1ll");
    static STRUCT_IF_C BFs1c_BFu1c_BFs1ll_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1c_BFs1ll_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1c_BFs1ll_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1c_BFs1ll_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1c_BFs1ll_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1c_BFs1ll_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1c_BFs1ll_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1c_BFs1ll_BFu1ll, BFs1c_BFu1c_BFs1ll_BFu1ll)
//============================================================================


struct  BFs1c_BFu1c_BFs1ll_BFu1s  {
  signed char v1:1;
  unsigned char v2:1;
  signed __tsi64 v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1c_BFu1c_BFs1ll_BFu1s) C1{ Fc:1 Fc:1 FL:1 Fs:1}



static void Test_BFs1c_BFu1c_BFs1ll_BFu1s()
{
  {
    init_simple_test("BFs1c_BFu1c_BFs1ll_BFu1s");
    static STRUCT_IF_C BFs1c_BFu1c_BFs1ll_BFu1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1c_BFs1ll_BFu1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1c_BFs1ll_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1c_BFs1ll_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1c_BFs1ll_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1c_BFs1ll_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1c_BFs1ll_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1c_BFs1ll_BFu1s, BFs1c_BFu1c_BFs1ll_BFu1s)
//============================================================================


struct  BFs1c_BFu1c_BFs1s  {
  signed char v1:1;
  unsigned char v2:1;
  signed short v3:1;
};
//SIG(1 BFs1c_BFu1c_BFs1s) C1{ Fc:1 Fc:1 Fs:1}



static void Test_BFs1c_BFu1c_BFs1s()
{
  {
    init_simple_test("BFs1c_BFu1c_BFs1s");
    static STRUCT_IF_C BFs1c_BFu1c_BFs1s lv;
    check2(sizeof(lv), 2, "sizeof(BFs1c_BFu1c_BFs1s)");
    check2(__alignof__(lv), 2, "__alignof__(BFs1c_BFu1c_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1c_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1c_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1c_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1c_BFs1s, BFs1c_BFu1c_BFs1s)
//============================================================================


struct  BFs1c_BFu1c_BFs1s_BFs1c  {
  signed char v1:1;
  unsigned char v2:1;
  signed short v3:1;
  signed char v4:1;
};
//SIG(1 BFs1c_BFu1c_BFs1s_BFs1c) C1{ Fc:1 Fc:1 Fs:1 Fc:1}



static void Test_BFs1c_BFu1c_BFs1s_BFs1c()
{
  {
    init_simple_test("BFs1c_BFu1c_BFs1s_BFs1c");
    static STRUCT_IF_C BFs1c_BFu1c_BFs1s_BFs1c lv;
    check2(sizeof(lv), 2, "sizeof(BFs1c_BFu1c_BFs1s_BFs1c)");
    check2(__alignof__(lv), 2, "__alignof__(BFs1c_BFu1c_BFs1s_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1c_BFs1s_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1c_BFs1s_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1c_BFs1s_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1c_BFs1s_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1c_BFs1s_BFs1c, BFs1c_BFu1c_BFs1s_BFs1c)
//============================================================================


struct  BFs1c_BFu1c_BFs1s_BFs1i  {
  signed char v1:1;
  unsigned char v2:1;
  signed short v3:1;
  signed int v4:1;
};
//SIG(1 BFs1c_BFu1c_BFs1s_BFs1i) C1{ Fc:1 Fc:1 Fs:1 Fi:1}



static void Test_BFs1c_BFu1c_BFs1s_BFs1i()
{
  {
    init_simple_test("BFs1c_BFu1c_BFs1s_BFs1i");
    static STRUCT_IF_C BFs1c_BFu1c_BFs1s_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1c_BFs1s_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1c_BFs1s_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1c_BFs1s_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1c_BFs1s_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1c_BFs1s_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1c_BFs1s_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1c_BFs1s_BFs1i, BFs1c_BFu1c_BFs1s_BFs1i)
//============================================================================


struct  BFs1c_BFu1c_BFs1s_BFs1ll  {
  signed char v1:1;
  unsigned char v2:1;
  signed short v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1c_BFu1c_BFs1s_BFs1ll) C1{ Fc:1 Fc:1 Fs:1 FL:1}



static void Test_BFs1c_BFu1c_BFs1s_BFs1ll()
{
  {
    init_simple_test("BFs1c_BFu1c_BFs1s_BFs1ll");
    static STRUCT_IF_C BFs1c_BFu1c_BFs1s_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1c_BFs1s_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1c_BFs1s_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1c_BFs1s_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1c_BFs1s_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1c_BFs1s_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1c_BFs1s_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1c_BFs1s_BFs1ll, BFs1c_BFu1c_BFs1s_BFs1ll)
//============================================================================


struct  BFs1c_BFu1c_BFs1s_BFs1s  {
  signed char v1:1;
  unsigned char v2:1;
  signed short v3:1;
  signed short v4:1;
};
//SIG(1 BFs1c_BFu1c_BFs1s_BFs1s) C1{ Fc:1 Fc:1 Fs:1 Fs:1}



static void Test_BFs1c_BFu1c_BFs1s_BFs1s()
{
  {
    init_simple_test("BFs1c_BFu1c_BFs1s_BFs1s");
    static STRUCT_IF_C BFs1c_BFu1c_BFs1s_BFs1s lv;
    check2(sizeof(lv), 2, "sizeof(BFs1c_BFu1c_BFs1s_BFs1s)");
    check2(__alignof__(lv), 2, "__alignof__(BFs1c_BFu1c_BFs1s_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1c_BFs1s_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1c_BFs1s_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1c_BFs1s_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1c_BFs1s_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1c_BFs1s_BFs1s, BFs1c_BFu1c_BFs1s_BFs1s)
//============================================================================


struct  BFs1c_BFu1c_BFs1s_BFu1c  {
  signed char v1:1;
  unsigned char v2:1;
  signed short v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1c_BFu1c_BFs1s_BFu1c) C1{ Fc:1 Fc:1 Fs:1 Fc:1}



static void Test_BFs1c_BFu1c_BFs1s_BFu1c()
{
  {
    init_simple_test("BFs1c_BFu1c_BFs1s_BFu1c");
    static STRUCT_IF_C BFs1c_BFu1c_BFs1s_BFu1c lv;
    check2(sizeof(lv), 2, "sizeof(BFs1c_BFu1c_BFs1s_BFu1c)");
    check2(__alignof__(lv), 2, "__alignof__(BFs1c_BFu1c_BFs1s_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1c_BFs1s_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1c_BFs1s_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1c_BFs1s_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1c_BFs1s_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1c_BFs1s_BFu1c, BFs1c_BFu1c_BFs1s_BFu1c)
//============================================================================


struct  BFs1c_BFu1c_BFs1s_BFu1i  {
  signed char v1:1;
  unsigned char v2:1;
  signed short v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1c_BFu1c_BFs1s_BFu1i) C1{ Fc:1 Fc:1 Fs:1 Fi:1}



static void Test_BFs1c_BFu1c_BFs1s_BFu1i()
{
  {
    init_simple_test("BFs1c_BFu1c_BFs1s_BFu1i");
    static STRUCT_IF_C BFs1c_BFu1c_BFs1s_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1c_BFs1s_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1c_BFs1s_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1c_BFs1s_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1c_BFs1s_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1c_BFs1s_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1c_BFs1s_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1c_BFs1s_BFu1i, BFs1c_BFu1c_BFs1s_BFu1i)
//============================================================================


struct  BFs1c_BFu1c_BFs1s_BFu1ll  {
  signed char v1:1;
  unsigned char v2:1;
  signed short v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1c_BFu1c_BFs1s_BFu1ll) C1{ Fc:1 Fc:1 Fs:1 FL:1}



static void Test_BFs1c_BFu1c_BFs1s_BFu1ll()
{
  {
    init_simple_test("BFs1c_BFu1c_BFs1s_BFu1ll");
    static STRUCT_IF_C BFs1c_BFu1c_BFs1s_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1c_BFs1s_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1c_BFs1s_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1c_BFs1s_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1c_BFs1s_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1c_BFs1s_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1c_BFs1s_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1c_BFs1s_BFu1ll, BFs1c_BFu1c_BFs1s_BFu1ll)
//============================================================================


struct  BFs1c_BFu1c_BFs1s_BFu1s  {
  signed char v1:1;
  unsigned char v2:1;
  signed short v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1c_BFu1c_BFs1s_BFu1s) C1{ Fc:1 Fc:1 Fs:1 Fs:1}



static void Test_BFs1c_BFu1c_BFs1s_BFu1s()
{
  {
    init_simple_test("BFs1c_BFu1c_BFs1s_BFu1s");
    static STRUCT_IF_C BFs1c_BFu1c_BFs1s_BFu1s lv;
    check2(sizeof(lv), 2, "sizeof(BFs1c_BFu1c_BFs1s_BFu1s)");
    check2(__alignof__(lv), 2, "__alignof__(BFs1c_BFu1c_BFs1s_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1c_BFs1s_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1c_BFs1s_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1c_BFs1s_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1c_BFs1s_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1c_BFs1s_BFu1s, BFs1c_BFu1c_BFs1s_BFu1s)
//============================================================================


struct  BFs1c_BFu1c_BFu1c  {
  signed char v1:1;
  unsigned char v2:1;
  unsigned char v3:1;
};
//SIG(1 BFs1c_BFu1c_BFu1c) C1{ Fc:1 Fc:1 Fc:1}



static void Test_BFs1c_BFu1c_BFu1c()
{
  {
    init_simple_test("BFs1c_BFu1c_BFu1c");
    static STRUCT_IF_C BFs1c_BFu1c_BFu1c lv;
    check2(sizeof(lv), 1, "sizeof(BFs1c_BFu1c_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(BFs1c_BFu1c_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1c_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1c_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1c_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1c_BFu1c, BFs1c_BFu1c_BFu1c)
//============================================================================


struct  BFs1c_BFu1c_BFu1c_BFs1c  {
  signed char v1:1;
  unsigned char v2:1;
  unsigned char v3:1;
  signed char v4:1;
};
//SIG(1 BFs1c_BFu1c_BFu1c_BFs1c) C1{ Fc:1 Fc:1 Fc:1 Fc:1}



static void Test_BFs1c_BFu1c_BFu1c_BFs1c()
{
  {
    init_simple_test("BFs1c_BFu1c_BFu1c_BFs1c");
    static STRUCT_IF_C BFs1c_BFu1c_BFu1c_BFs1c lv;
    check2(sizeof(lv), 1, "sizeof(BFs1c_BFu1c_BFu1c_BFs1c)");
    check2(__alignof__(lv), 1, "__alignof__(BFs1c_BFu1c_BFu1c_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1c_BFu1c_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1c_BFu1c_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1c_BFu1c_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1c_BFu1c_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1c_BFu1c_BFs1c, BFs1c_BFu1c_BFu1c_BFs1c)
//============================================================================


struct  BFs1c_BFu1c_BFu1c_BFs1i  {
  signed char v1:1;
  unsigned char v2:1;
  unsigned char v3:1;
  signed int v4:1;
};
//SIG(1 BFs1c_BFu1c_BFu1c_BFs1i) C1{ Fc:1 Fc:1 Fc:1 Fi:1}



static void Test_BFs1c_BFu1c_BFu1c_BFs1i()
{
  {
    init_simple_test("BFs1c_BFu1c_BFu1c_BFs1i");
    static STRUCT_IF_C BFs1c_BFu1c_BFu1c_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1c_BFu1c_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1c_BFu1c_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1c_BFu1c_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1c_BFu1c_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1c_BFu1c_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1c_BFu1c_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1c_BFu1c_BFs1i, BFs1c_BFu1c_BFu1c_BFs1i)
//============================================================================


struct  BFs1c_BFu1c_BFu1c_BFs1ll  {
  signed char v1:1;
  unsigned char v2:1;
  unsigned char v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1c_BFu1c_BFu1c_BFs1ll) C1{ Fc:1 Fc:1 Fc:1 FL:1}



static void Test_BFs1c_BFu1c_BFu1c_BFs1ll()
{
  {
    init_simple_test("BFs1c_BFu1c_BFu1c_BFs1ll");
    static STRUCT_IF_C BFs1c_BFu1c_BFu1c_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1c_BFu1c_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1c_BFu1c_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1c_BFu1c_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1c_BFu1c_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1c_BFu1c_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1c_BFu1c_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1c_BFu1c_BFs1ll, BFs1c_BFu1c_BFu1c_BFs1ll)
//============================================================================


struct  BFs1c_BFu1c_BFu1c_BFs1s  {
  signed char v1:1;
  unsigned char v2:1;
  unsigned char v3:1;
  signed short v4:1;
};
//SIG(1 BFs1c_BFu1c_BFu1c_BFs1s) C1{ Fc:1 Fc:1 Fc:1 Fs:1}



static void Test_BFs1c_BFu1c_BFu1c_BFs1s()
{
  {
    init_simple_test("BFs1c_BFu1c_BFu1c_BFs1s");
    static STRUCT_IF_C BFs1c_BFu1c_BFu1c_BFs1s lv;
    check2(sizeof(lv), 2, "sizeof(BFs1c_BFu1c_BFu1c_BFs1s)");
    check2(__alignof__(lv), 2, "__alignof__(BFs1c_BFu1c_BFu1c_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1c_BFu1c_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1c_BFu1c_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1c_BFu1c_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1c_BFu1c_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1c_BFu1c_BFs1s, BFs1c_BFu1c_BFu1c_BFs1s)
//============================================================================


struct  BFs1c_BFu1c_BFu1c_BFu1c  {
  signed char v1:1;
  unsigned char v2:1;
  unsigned char v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1c_BFu1c_BFu1c_BFu1c) C1{ Fc:1 Fc:1 Fc:1 Fc:1}



static void Test_BFs1c_BFu1c_BFu1c_BFu1c()
{
  {
    init_simple_test("BFs1c_BFu1c_BFu1c_BFu1c");
    static STRUCT_IF_C BFs1c_BFu1c_BFu1c_BFu1c lv;
    check2(sizeof(lv), 1, "sizeof(BFs1c_BFu1c_BFu1c_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(BFs1c_BFu1c_BFu1c_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1c_BFu1c_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1c_BFu1c_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1c_BFu1c_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1c_BFu1c_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1c_BFu1c_BFu1c, BFs1c_BFu1c_BFu1c_BFu1c)
//============================================================================


struct  BFs1c_BFu1c_BFu1c_BFu1i  {
  signed char v1:1;
  unsigned char v2:1;
  unsigned char v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1c_BFu1c_BFu1c_BFu1i) C1{ Fc:1 Fc:1 Fc:1 Fi:1}



static void Test_BFs1c_BFu1c_BFu1c_BFu1i()
{
  {
    init_simple_test("BFs1c_BFu1c_BFu1c_BFu1i");
    static STRUCT_IF_C BFs1c_BFu1c_BFu1c_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1c_BFu1c_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1c_BFu1c_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1c_BFu1c_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1c_BFu1c_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1c_BFu1c_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1c_BFu1c_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1c_BFu1c_BFu1i, BFs1c_BFu1c_BFu1c_BFu1i)
//============================================================================


struct  BFs1c_BFu1c_BFu1c_BFu1ll  {
  signed char v1:1;
  unsigned char v2:1;
  unsigned char v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1c_BFu1c_BFu1c_BFu1ll) C1{ Fc:1 Fc:1 Fc:1 FL:1}



static void Test_BFs1c_BFu1c_BFu1c_BFu1ll()
{
  {
    init_simple_test("BFs1c_BFu1c_BFu1c_BFu1ll");
    static STRUCT_IF_C BFs1c_BFu1c_BFu1c_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1c_BFu1c_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1c_BFu1c_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1c_BFu1c_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1c_BFu1c_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1c_BFu1c_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1c_BFu1c_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1c_BFu1c_BFu1ll, BFs1c_BFu1c_BFu1c_BFu1ll)
//============================================================================


struct  BFs1c_BFu1c_BFu1c_BFu1s  {
  signed char v1:1;
  unsigned char v2:1;
  unsigned char v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1c_BFu1c_BFu1c_BFu1s) C1{ Fc:1 Fc:1 Fc:1 Fs:1}



static void Test_BFs1c_BFu1c_BFu1c_BFu1s()
{
  {
    init_simple_test("BFs1c_BFu1c_BFu1c_BFu1s");
    static STRUCT_IF_C BFs1c_BFu1c_BFu1c_BFu1s lv;
    check2(sizeof(lv), 2, "sizeof(BFs1c_BFu1c_BFu1c_BFu1s)");
    check2(__alignof__(lv), 2, "__alignof__(BFs1c_BFu1c_BFu1c_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1c_BFu1c_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1c_BFu1c_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1c_BFu1c_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1c_BFu1c_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1c_BFu1c_BFu1s, BFs1c_BFu1c_BFu1c_BFu1s)
//============================================================================


struct  BFs1c_BFu1c_BFu1i  {
  signed char v1:1;
  unsigned char v2:1;
  unsigned int v3:1;
};
//SIG(1 BFs1c_BFu1c_BFu1i) C1{ Fc:1 Fc:1 Fi:1}



static void Test_BFs1c_BFu1c_BFu1i()
{
  {
    init_simple_test("BFs1c_BFu1c_BFu1i");
    static STRUCT_IF_C BFs1c_BFu1c_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1c_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1c_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1c_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1c_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1c_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1c_BFu1i, BFs1c_BFu1c_BFu1i)
//============================================================================


struct  BFs1c_BFu1c_BFu1i_BFs1c  {
  signed char v1:1;
  unsigned char v2:1;
  unsigned int v3:1;
  signed char v4:1;
};
//SIG(1 BFs1c_BFu1c_BFu1i_BFs1c) C1{ Fc:1 Fc:1 Fi:1 Fc:1}



static void Test_BFs1c_BFu1c_BFu1i_BFs1c()
{
  {
    init_simple_test("BFs1c_BFu1c_BFu1i_BFs1c");
    static STRUCT_IF_C BFs1c_BFu1c_BFu1i_BFs1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1c_BFu1i_BFs1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1c_BFu1i_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1c_BFu1i_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1c_BFu1i_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1c_BFu1i_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1c_BFu1i_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1c_BFu1i_BFs1c, BFs1c_BFu1c_BFu1i_BFs1c)
//============================================================================


struct  BFs1c_BFu1c_BFu1i_BFs1i  {
  signed char v1:1;
  unsigned char v2:1;
  unsigned int v3:1;
  signed int v4:1;
};
//SIG(1 BFs1c_BFu1c_BFu1i_BFs1i) C1{ Fc:1 Fc:1 Fi:1 Fi:1}



static void Test_BFs1c_BFu1c_BFu1i_BFs1i()
{
  {
    init_simple_test("BFs1c_BFu1c_BFu1i_BFs1i");
    static STRUCT_IF_C BFs1c_BFu1c_BFu1i_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1c_BFu1i_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1c_BFu1i_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1c_BFu1i_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1c_BFu1i_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1c_BFu1i_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1c_BFu1i_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1c_BFu1i_BFs1i, BFs1c_BFu1c_BFu1i_BFs1i)
//============================================================================


struct  BFs1c_BFu1c_BFu1i_BFs1ll  {
  signed char v1:1;
  unsigned char v2:1;
  unsigned int v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1c_BFu1c_BFu1i_BFs1ll) C1{ Fc:1 Fc:1 Fi:1 FL:1}



static void Test_BFs1c_BFu1c_BFu1i_BFs1ll()
{
  {
    init_simple_test("BFs1c_BFu1c_BFu1i_BFs1ll");
    static STRUCT_IF_C BFs1c_BFu1c_BFu1i_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1c_BFu1i_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1c_BFu1i_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1c_BFu1i_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1c_BFu1i_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1c_BFu1i_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1c_BFu1i_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1c_BFu1i_BFs1ll, BFs1c_BFu1c_BFu1i_BFs1ll)
//============================================================================


struct  BFs1c_BFu1c_BFu1i_BFs1s  {
  signed char v1:1;
  unsigned char v2:1;
  unsigned int v3:1;
  signed short v4:1;
};
//SIG(1 BFs1c_BFu1c_BFu1i_BFs1s) C1{ Fc:1 Fc:1 Fi:1 Fs:1}



static void Test_BFs1c_BFu1c_BFu1i_BFs1s()
{
  {
    init_simple_test("BFs1c_BFu1c_BFu1i_BFs1s");
    static STRUCT_IF_C BFs1c_BFu1c_BFu1i_BFs1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1c_BFu1i_BFs1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1c_BFu1i_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1c_BFu1i_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1c_BFu1i_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1c_BFu1i_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1c_BFu1i_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1c_BFu1i_BFs1s, BFs1c_BFu1c_BFu1i_BFs1s)
//============================================================================


struct  BFs1c_BFu1c_BFu1i_BFu1c  {
  signed char v1:1;
  unsigned char v2:1;
  unsigned int v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1c_BFu1c_BFu1i_BFu1c) C1{ Fc:1 Fc:1 Fi:1 Fc:1}



static void Test_BFs1c_BFu1c_BFu1i_BFu1c()
{
  {
    init_simple_test("BFs1c_BFu1c_BFu1i_BFu1c");
    static STRUCT_IF_C BFs1c_BFu1c_BFu1i_BFu1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1c_BFu1i_BFu1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1c_BFu1i_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1c_BFu1i_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1c_BFu1i_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1c_BFu1i_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1c_BFu1i_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1c_BFu1i_BFu1c, BFs1c_BFu1c_BFu1i_BFu1c)
//============================================================================


struct  BFs1c_BFu1c_BFu1i_BFu1i  {
  signed char v1:1;
  unsigned char v2:1;
  unsigned int v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1c_BFu1c_BFu1i_BFu1i) C1{ Fc:1 Fc:1 Fi:1 Fi:1}



static void Test_BFs1c_BFu1c_BFu1i_BFu1i()
{
  {
    init_simple_test("BFs1c_BFu1c_BFu1i_BFu1i");
    static STRUCT_IF_C BFs1c_BFu1c_BFu1i_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1c_BFu1i_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1c_BFu1i_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1c_BFu1i_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1c_BFu1i_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1c_BFu1i_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1c_BFu1i_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1c_BFu1i_BFu1i, BFs1c_BFu1c_BFu1i_BFu1i)
//============================================================================


struct  BFs1c_BFu1c_BFu1i_BFu1ll  {
  signed char v1:1;
  unsigned char v2:1;
  unsigned int v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1c_BFu1c_BFu1i_BFu1ll) C1{ Fc:1 Fc:1 Fi:1 FL:1}



static void Test_BFs1c_BFu1c_BFu1i_BFu1ll()
{
  {
    init_simple_test("BFs1c_BFu1c_BFu1i_BFu1ll");
    static STRUCT_IF_C BFs1c_BFu1c_BFu1i_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1c_BFu1i_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1c_BFu1i_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1c_BFu1i_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1c_BFu1i_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1c_BFu1i_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1c_BFu1i_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1c_BFu1i_BFu1ll, BFs1c_BFu1c_BFu1i_BFu1ll)
//============================================================================


struct  BFs1c_BFu1c_BFu1i_BFu1s  {
  signed char v1:1;
  unsigned char v2:1;
  unsigned int v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1c_BFu1c_BFu1i_BFu1s) C1{ Fc:1 Fc:1 Fi:1 Fs:1}



static void Test_BFs1c_BFu1c_BFu1i_BFu1s()
{
  {
    init_simple_test("BFs1c_BFu1c_BFu1i_BFu1s");
    static STRUCT_IF_C BFs1c_BFu1c_BFu1i_BFu1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1c_BFu1i_BFu1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1c_BFu1i_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1c_BFu1i_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1c_BFu1i_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1c_BFu1i_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1c_BFu1i_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1c_BFu1i_BFu1s, BFs1c_BFu1c_BFu1i_BFu1s)
//============================================================================


struct  BFs1c_BFu1c_BFu1ll  {
  signed char v1:1;
  unsigned char v2:1;
  __tsu64 v3:1;
};
//SIG(1 BFs1c_BFu1c_BFu1ll) C1{ Fc:1 Fc:1 FL:1}



static void Test_BFs1c_BFu1c_BFu1ll()
{
  {
    init_simple_test("BFs1c_BFu1c_BFu1ll");
    static STRUCT_IF_C BFs1c_BFu1c_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1c_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1c_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1c_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1c_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1c_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1c_BFu1ll, BFs1c_BFu1c_BFu1ll)
//============================================================================


struct  BFs1c_BFu1c_BFu1ll_BFs1c  {
  signed char v1:1;
  unsigned char v2:1;
  __tsu64 v3:1;
  signed char v4:1;
};
//SIG(1 BFs1c_BFu1c_BFu1ll_BFs1c) C1{ Fc:1 Fc:1 FL:1 Fc:1}



static void Test_BFs1c_BFu1c_BFu1ll_BFs1c()
{
  {
    init_simple_test("BFs1c_BFu1c_BFu1ll_BFs1c");
    static STRUCT_IF_C BFs1c_BFu1c_BFu1ll_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1c_BFu1ll_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1c_BFu1ll_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1c_BFu1ll_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1c_BFu1ll_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1c_BFu1ll_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1c_BFu1ll_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1c_BFu1ll_BFs1c, BFs1c_BFu1c_BFu1ll_BFs1c)
//============================================================================


struct  BFs1c_BFu1c_BFu1ll_BFs1i  {
  signed char v1:1;
  unsigned char v2:1;
  __tsu64 v3:1;
  signed int v4:1;
};
//SIG(1 BFs1c_BFu1c_BFu1ll_BFs1i) C1{ Fc:1 Fc:1 FL:1 Fi:1}



static void Test_BFs1c_BFu1c_BFu1ll_BFs1i()
{
  {
    init_simple_test("BFs1c_BFu1c_BFu1ll_BFs1i");
    static STRUCT_IF_C BFs1c_BFu1c_BFu1ll_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1c_BFu1ll_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1c_BFu1ll_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1c_BFu1ll_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1c_BFu1ll_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1c_BFu1ll_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1c_BFu1ll_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1c_BFu1ll_BFs1i, BFs1c_BFu1c_BFu1ll_BFs1i)
//============================================================================


struct  BFs1c_BFu1c_BFu1ll_BFs1ll  {
  signed char v1:1;
  unsigned char v2:1;
  __tsu64 v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1c_BFu1c_BFu1ll_BFs1ll) C1{ Fc:1 Fc:1 FL:1 FL:1}



static void Test_BFs1c_BFu1c_BFu1ll_BFs1ll()
{
  {
    init_simple_test("BFs1c_BFu1c_BFu1ll_BFs1ll");
    static STRUCT_IF_C BFs1c_BFu1c_BFu1ll_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1c_BFu1ll_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1c_BFu1ll_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1c_BFu1ll_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1c_BFu1ll_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1c_BFu1ll_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1c_BFu1ll_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1c_BFu1ll_BFs1ll, BFs1c_BFu1c_BFu1ll_BFs1ll)
//============================================================================


struct  BFs1c_BFu1c_BFu1ll_BFs1s  {
  signed char v1:1;
  unsigned char v2:1;
  __tsu64 v3:1;
  signed short v4:1;
};
//SIG(1 BFs1c_BFu1c_BFu1ll_BFs1s) C1{ Fc:1 Fc:1 FL:1 Fs:1}



static void Test_BFs1c_BFu1c_BFu1ll_BFs1s()
{
  {
    init_simple_test("BFs1c_BFu1c_BFu1ll_BFs1s");
    static STRUCT_IF_C BFs1c_BFu1c_BFu1ll_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1c_BFu1ll_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1c_BFu1ll_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1c_BFu1ll_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1c_BFu1ll_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1c_BFu1ll_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1c_BFu1ll_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1c_BFu1ll_BFs1s, BFs1c_BFu1c_BFu1ll_BFs1s)
//============================================================================


struct  BFs1c_BFu1c_BFu1ll_BFu1c  {
  signed char v1:1;
  unsigned char v2:1;
  __tsu64 v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1c_BFu1c_BFu1ll_BFu1c) C1{ Fc:1 Fc:1 FL:1 Fc:1}



static void Test_BFs1c_BFu1c_BFu1ll_BFu1c()
{
  {
    init_simple_test("BFs1c_BFu1c_BFu1ll_BFu1c");
    static STRUCT_IF_C BFs1c_BFu1c_BFu1ll_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1c_BFu1ll_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1c_BFu1ll_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1c_BFu1ll_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1c_BFu1ll_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1c_BFu1ll_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1c_BFu1ll_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1c_BFu1ll_BFu1c, BFs1c_BFu1c_BFu1ll_BFu1c)
//============================================================================


struct  BFs1c_BFu1c_BFu1ll_BFu1i  {
  signed char v1:1;
  unsigned char v2:1;
  __tsu64 v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1c_BFu1c_BFu1ll_BFu1i) C1{ Fc:1 Fc:1 FL:1 Fi:1}



static void Test_BFs1c_BFu1c_BFu1ll_BFu1i()
{
  {
    init_simple_test("BFs1c_BFu1c_BFu1ll_BFu1i");
    static STRUCT_IF_C BFs1c_BFu1c_BFu1ll_BFu1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1c_BFu1ll_BFu1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1c_BFu1ll_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1c_BFu1ll_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1c_BFu1ll_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1c_BFu1ll_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1c_BFu1ll_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1c_BFu1ll_BFu1i, BFs1c_BFu1c_BFu1ll_BFu1i)
//============================================================================


struct  BFs1c_BFu1c_BFu1ll_BFu1ll  {
  signed char v1:1;
  unsigned char v2:1;
  __tsu64 v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1c_BFu1c_BFu1ll_BFu1ll) C1{ Fc:1 Fc:1 FL:1 FL:1}



static void Test_BFs1c_BFu1c_BFu1ll_BFu1ll()
{
  {
    init_simple_test("BFs1c_BFu1c_BFu1ll_BFu1ll");
    static STRUCT_IF_C BFs1c_BFu1c_BFu1ll_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1c_BFu1ll_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1c_BFu1ll_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1c_BFu1ll_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1c_BFu1ll_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1c_BFu1ll_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1c_BFu1ll_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1c_BFu1ll_BFu1ll, BFs1c_BFu1c_BFu1ll_BFu1ll)
//============================================================================


struct  BFs1c_BFu1c_BFu1ll_BFu1s  {
  signed char v1:1;
  unsigned char v2:1;
  __tsu64 v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1c_BFu1c_BFu1ll_BFu1s) C1{ Fc:1 Fc:1 FL:1 Fs:1}



static void Test_BFs1c_BFu1c_BFu1ll_BFu1s()
{
  {
    init_simple_test("BFs1c_BFu1c_BFu1ll_BFu1s");
    static STRUCT_IF_C BFs1c_BFu1c_BFu1ll_BFu1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1c_BFu1ll_BFu1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1c_BFu1ll_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1c_BFu1ll_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1c_BFu1ll_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1c_BFu1ll_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1c_BFu1ll_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1c_BFu1ll_BFu1s, BFs1c_BFu1c_BFu1ll_BFu1s)
//============================================================================


struct  BFs1c_BFu1c_BFu1s  {
  signed char v1:1;
  unsigned char v2:1;
  unsigned short v3:1;
};
//SIG(1 BFs1c_BFu1c_BFu1s) C1{ Fc:1 Fc:1 Fs:1}



static void Test_BFs1c_BFu1c_BFu1s()
{
  {
    init_simple_test("BFs1c_BFu1c_BFu1s");
    static STRUCT_IF_C BFs1c_BFu1c_BFu1s lv;
    check2(sizeof(lv), 2, "sizeof(BFs1c_BFu1c_BFu1s)");
    check2(__alignof__(lv), 2, "__alignof__(BFs1c_BFu1c_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1c_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1c_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1c_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1c_BFu1s, BFs1c_BFu1c_BFu1s)
//============================================================================


struct  BFs1c_BFu1c_BFu1s_BFs1c  {
  signed char v1:1;
  unsigned char v2:1;
  unsigned short v3:1;
  signed char v4:1;
};
//SIG(1 BFs1c_BFu1c_BFu1s_BFs1c) C1{ Fc:1 Fc:1 Fs:1 Fc:1}



static void Test_BFs1c_BFu1c_BFu1s_BFs1c()
{
  {
    init_simple_test("BFs1c_BFu1c_BFu1s_BFs1c");
    static STRUCT_IF_C BFs1c_BFu1c_BFu1s_BFs1c lv;
    check2(sizeof(lv), 2, "sizeof(BFs1c_BFu1c_BFu1s_BFs1c)");
    check2(__alignof__(lv), 2, "__alignof__(BFs1c_BFu1c_BFu1s_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1c_BFu1s_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1c_BFu1s_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1c_BFu1s_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1c_BFu1s_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1c_BFu1s_BFs1c, BFs1c_BFu1c_BFu1s_BFs1c)
//============================================================================


struct  BFs1c_BFu1c_BFu1s_BFs1i  {
  signed char v1:1;
  unsigned char v2:1;
  unsigned short v3:1;
  signed int v4:1;
};
//SIG(1 BFs1c_BFu1c_BFu1s_BFs1i) C1{ Fc:1 Fc:1 Fs:1 Fi:1}



static void Test_BFs1c_BFu1c_BFu1s_BFs1i()
{
  {
    init_simple_test("BFs1c_BFu1c_BFu1s_BFs1i");
    static STRUCT_IF_C BFs1c_BFu1c_BFu1s_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1c_BFu1s_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1c_BFu1s_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1c_BFu1s_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1c_BFu1s_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1c_BFu1s_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1c_BFu1s_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1c_BFu1s_BFs1i, BFs1c_BFu1c_BFu1s_BFs1i)
//============================================================================


struct  BFs1c_BFu1c_BFu1s_BFs1ll  {
  signed char v1:1;
  unsigned char v2:1;
  unsigned short v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1c_BFu1c_BFu1s_BFs1ll) C1{ Fc:1 Fc:1 Fs:1 FL:1}



static void Test_BFs1c_BFu1c_BFu1s_BFs1ll()
{
  {
    init_simple_test("BFs1c_BFu1c_BFu1s_BFs1ll");
    static STRUCT_IF_C BFs1c_BFu1c_BFu1s_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1c_BFu1s_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1c_BFu1s_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1c_BFu1s_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1c_BFu1s_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1c_BFu1s_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1c_BFu1s_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1c_BFu1s_BFs1ll, BFs1c_BFu1c_BFu1s_BFs1ll)
//============================================================================


struct  BFs1c_BFu1c_BFu1s_BFs1s  {
  signed char v1:1;
  unsigned char v2:1;
  unsigned short v3:1;
  signed short v4:1;
};
//SIG(1 BFs1c_BFu1c_BFu1s_BFs1s) C1{ Fc:1 Fc:1 Fs:1 Fs:1}



static void Test_BFs1c_BFu1c_BFu1s_BFs1s()
{
  {
    init_simple_test("BFs1c_BFu1c_BFu1s_BFs1s");
    static STRUCT_IF_C BFs1c_BFu1c_BFu1s_BFs1s lv;
    check2(sizeof(lv), 2, "sizeof(BFs1c_BFu1c_BFu1s_BFs1s)");
    check2(__alignof__(lv), 2, "__alignof__(BFs1c_BFu1c_BFu1s_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1c_BFu1s_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1c_BFu1s_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1c_BFu1s_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1c_BFu1s_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1c_BFu1s_BFs1s, BFs1c_BFu1c_BFu1s_BFs1s)
//============================================================================


struct  BFs1c_BFu1c_BFu1s_BFu1c  {
  signed char v1:1;
  unsigned char v2:1;
  unsigned short v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1c_BFu1c_BFu1s_BFu1c) C1{ Fc:1 Fc:1 Fs:1 Fc:1}



static void Test_BFs1c_BFu1c_BFu1s_BFu1c()
{
  {
    init_simple_test("BFs1c_BFu1c_BFu1s_BFu1c");
    static STRUCT_IF_C BFs1c_BFu1c_BFu1s_BFu1c lv;
    check2(sizeof(lv), 2, "sizeof(BFs1c_BFu1c_BFu1s_BFu1c)");
    check2(__alignof__(lv), 2, "__alignof__(BFs1c_BFu1c_BFu1s_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1c_BFu1s_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1c_BFu1s_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1c_BFu1s_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1c_BFu1s_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1c_BFu1s_BFu1c, BFs1c_BFu1c_BFu1s_BFu1c)
//============================================================================


struct  BFs1c_BFu1c_BFu1s_BFu1i  {
  signed char v1:1;
  unsigned char v2:1;
  unsigned short v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1c_BFu1c_BFu1s_BFu1i) C1{ Fc:1 Fc:1 Fs:1 Fi:1}



static void Test_BFs1c_BFu1c_BFu1s_BFu1i()
{
  {
    init_simple_test("BFs1c_BFu1c_BFu1s_BFu1i");
    static STRUCT_IF_C BFs1c_BFu1c_BFu1s_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1c_BFu1s_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1c_BFu1s_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1c_BFu1s_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1c_BFu1s_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1c_BFu1s_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1c_BFu1s_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1c_BFu1s_BFu1i, BFs1c_BFu1c_BFu1s_BFu1i)
//============================================================================


struct  BFs1c_BFu1c_BFu1s_BFu1ll  {
  signed char v1:1;
  unsigned char v2:1;
  unsigned short v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1c_BFu1c_BFu1s_BFu1ll) C1{ Fc:1 Fc:1 Fs:1 FL:1}



static void Test_BFs1c_BFu1c_BFu1s_BFu1ll()
{
  {
    init_simple_test("BFs1c_BFu1c_BFu1s_BFu1ll");
    static STRUCT_IF_C BFs1c_BFu1c_BFu1s_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1c_BFu1s_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1c_BFu1s_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1c_BFu1s_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1c_BFu1s_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1c_BFu1s_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1c_BFu1s_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1c_BFu1s_BFu1ll, BFs1c_BFu1c_BFu1s_BFu1ll)
//============================================================================


struct  BFs1c_BFu1c_BFu1s_BFu1s  {
  signed char v1:1;
  unsigned char v2:1;
  unsigned short v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1c_BFu1c_BFu1s_BFu1s) C1{ Fc:1 Fc:1 Fs:1 Fs:1}



static void Test_BFs1c_BFu1c_BFu1s_BFu1s()
{
  {
    init_simple_test("BFs1c_BFu1c_BFu1s_BFu1s");
    static STRUCT_IF_C BFs1c_BFu1c_BFu1s_BFu1s lv;
    check2(sizeof(lv), 2, "sizeof(BFs1c_BFu1c_BFu1s_BFu1s)");
    check2(__alignof__(lv), 2, "__alignof__(BFs1c_BFu1c_BFu1s_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1c_BFu1s_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1c_BFu1s_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1c_BFu1s_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1c_BFu1s_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1c_BFu1s_BFu1s, BFs1c_BFu1c_BFu1s_BFu1s)
//============================================================================


struct  BFs1c_BFu1i  {
  signed char v1:1;
  unsigned int v2:1;
};
//SIG(1 BFs1c_BFu1i) C1{ Fc:1 Fi:1}



static void Test_BFs1c_BFu1i()
{
  {
    init_simple_test("BFs1c_BFu1i");
    static STRUCT_IF_C BFs1c_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1i, BFs1c_BFu1i)
//============================================================================


struct  BFs1c_BFu1i_BFs1c  {
  signed char v1:1;
  unsigned int v2:1;
  signed char v3:1;
};
//SIG(1 BFs1c_BFu1i_BFs1c) C1{ Fc:1 Fi:1 Fc:1}



static void Test_BFs1c_BFu1i_BFs1c()
{
  {
    init_simple_test("BFs1c_BFu1i_BFs1c");
    static STRUCT_IF_C BFs1c_BFu1i_BFs1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1i_BFs1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1i_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1i_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1i_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1i_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1i_BFs1c, BFs1c_BFu1i_BFs1c)
//============================================================================


struct  BFs1c_BFu1i_BFs1c_BFs1c  {
  signed char v1:1;
  unsigned int v2:1;
  signed char v3:1;
  signed char v4:1;
};
//SIG(1 BFs1c_BFu1i_BFs1c_BFs1c) C1{ Fc:1 Fi:1 Fc:1 Fc:1}



static void Test_BFs1c_BFu1i_BFs1c_BFs1c()
{
  {
    init_simple_test("BFs1c_BFu1i_BFs1c_BFs1c");
    static STRUCT_IF_C BFs1c_BFu1i_BFs1c_BFs1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1i_BFs1c_BFs1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1i_BFs1c_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1i_BFs1c_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1i_BFs1c_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1i_BFs1c_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1i_BFs1c_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1i_BFs1c_BFs1c, BFs1c_BFu1i_BFs1c_BFs1c)
//============================================================================


struct  BFs1c_BFu1i_BFs1c_BFs1i  {
  signed char v1:1;
  unsigned int v2:1;
  signed char v3:1;
  signed int v4:1;
};
//SIG(1 BFs1c_BFu1i_BFs1c_BFs1i) C1{ Fc:1 Fi:1 Fc:1 Fi:1}



static void Test_BFs1c_BFu1i_BFs1c_BFs1i()
{
  {
    init_simple_test("BFs1c_BFu1i_BFs1c_BFs1i");
    static STRUCT_IF_C BFs1c_BFu1i_BFs1c_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1i_BFs1c_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1i_BFs1c_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1i_BFs1c_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1i_BFs1c_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1i_BFs1c_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1i_BFs1c_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1i_BFs1c_BFs1i, BFs1c_BFu1i_BFs1c_BFs1i)
//============================================================================


struct  BFs1c_BFu1i_BFs1c_BFs1ll  {
  signed char v1:1;
  unsigned int v2:1;
  signed char v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1c_BFu1i_BFs1c_BFs1ll) C1{ Fc:1 Fi:1 Fc:1 FL:1}



static void Test_BFs1c_BFu1i_BFs1c_BFs1ll()
{
  {
    init_simple_test("BFs1c_BFu1i_BFs1c_BFs1ll");
    static STRUCT_IF_C BFs1c_BFu1i_BFs1c_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1i_BFs1c_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1i_BFs1c_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1i_BFs1c_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1i_BFs1c_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1i_BFs1c_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1i_BFs1c_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1i_BFs1c_BFs1ll, BFs1c_BFu1i_BFs1c_BFs1ll)
//============================================================================


struct  BFs1c_BFu1i_BFs1c_BFs1s  {
  signed char v1:1;
  unsigned int v2:1;
  signed char v3:1;
  signed short v4:1;
};
//SIG(1 BFs1c_BFu1i_BFs1c_BFs1s) C1{ Fc:1 Fi:1 Fc:1 Fs:1}



static void Test_BFs1c_BFu1i_BFs1c_BFs1s()
{
  {
    init_simple_test("BFs1c_BFu1i_BFs1c_BFs1s");
    static STRUCT_IF_C BFs1c_BFu1i_BFs1c_BFs1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1i_BFs1c_BFs1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1i_BFs1c_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1i_BFs1c_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1i_BFs1c_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1i_BFs1c_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1i_BFs1c_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1i_BFs1c_BFs1s, BFs1c_BFu1i_BFs1c_BFs1s)
//============================================================================


struct  BFs1c_BFu1i_BFs1c_BFu1c  {
  signed char v1:1;
  unsigned int v2:1;
  signed char v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1c_BFu1i_BFs1c_BFu1c) C1{ Fc:1 Fi:1 Fc:1 Fc:1}



static void Test_BFs1c_BFu1i_BFs1c_BFu1c()
{
  {
    init_simple_test("BFs1c_BFu1i_BFs1c_BFu1c");
    static STRUCT_IF_C BFs1c_BFu1i_BFs1c_BFu1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1i_BFs1c_BFu1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1i_BFs1c_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1i_BFs1c_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1i_BFs1c_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1i_BFs1c_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1i_BFs1c_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1i_BFs1c_BFu1c, BFs1c_BFu1i_BFs1c_BFu1c)
//============================================================================


struct  BFs1c_BFu1i_BFs1c_BFu1i  {
  signed char v1:1;
  unsigned int v2:1;
  signed char v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1c_BFu1i_BFs1c_BFu1i) C1{ Fc:1 Fi:1 Fc:1 Fi:1}



static void Test_BFs1c_BFu1i_BFs1c_BFu1i()
{
  {
    init_simple_test("BFs1c_BFu1i_BFs1c_BFu1i");
    static STRUCT_IF_C BFs1c_BFu1i_BFs1c_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1i_BFs1c_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1i_BFs1c_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1i_BFs1c_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1i_BFs1c_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1i_BFs1c_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1i_BFs1c_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1i_BFs1c_BFu1i, BFs1c_BFu1i_BFs1c_BFu1i)
//============================================================================


struct  BFs1c_BFu1i_BFs1c_BFu1ll  {
  signed char v1:1;
  unsigned int v2:1;
  signed char v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1c_BFu1i_BFs1c_BFu1ll) C1{ Fc:1 Fi:1 Fc:1 FL:1}



static void Test_BFs1c_BFu1i_BFs1c_BFu1ll()
{
  {
    init_simple_test("BFs1c_BFu1i_BFs1c_BFu1ll");
    static STRUCT_IF_C BFs1c_BFu1i_BFs1c_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1i_BFs1c_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1i_BFs1c_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1i_BFs1c_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1i_BFs1c_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1i_BFs1c_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1i_BFs1c_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1i_BFs1c_BFu1ll, BFs1c_BFu1i_BFs1c_BFu1ll)
//============================================================================


struct  BFs1c_BFu1i_BFs1c_BFu1s  {
  signed char v1:1;
  unsigned int v2:1;
  signed char v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1c_BFu1i_BFs1c_BFu1s) C1{ Fc:1 Fi:1 Fc:1 Fs:1}



static void Test_BFs1c_BFu1i_BFs1c_BFu1s()
{
  {
    init_simple_test("BFs1c_BFu1i_BFs1c_BFu1s");
    static STRUCT_IF_C BFs1c_BFu1i_BFs1c_BFu1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1i_BFs1c_BFu1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1i_BFs1c_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1i_BFs1c_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1i_BFs1c_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1i_BFs1c_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1i_BFs1c_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1i_BFs1c_BFu1s, BFs1c_BFu1i_BFs1c_BFu1s)
//============================================================================


struct  BFs1c_BFu1i_BFs1i  {
  signed char v1:1;
  unsigned int v2:1;
  signed int v3:1;
};
//SIG(1 BFs1c_BFu1i_BFs1i) C1{ Fc:1 Fi:1 Fi:1}



static void Test_BFs1c_BFu1i_BFs1i()
{
  {
    init_simple_test("BFs1c_BFu1i_BFs1i");
    static STRUCT_IF_C BFs1c_BFu1i_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1i_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1i_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1i_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1i_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1i_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1i_BFs1i, BFs1c_BFu1i_BFs1i)
//============================================================================


struct  BFs1c_BFu1i_BFs1i_BFs1c  {
  signed char v1:1;
  unsigned int v2:1;
  signed int v3:1;
  signed char v4:1;
};
//SIG(1 BFs1c_BFu1i_BFs1i_BFs1c) C1{ Fc:1 Fi:1 Fi:1 Fc:1}



static void Test_BFs1c_BFu1i_BFs1i_BFs1c()
{
  {
    init_simple_test("BFs1c_BFu1i_BFs1i_BFs1c");
    static STRUCT_IF_C BFs1c_BFu1i_BFs1i_BFs1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1i_BFs1i_BFs1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1i_BFs1i_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1i_BFs1i_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1i_BFs1i_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1i_BFs1i_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1i_BFs1i_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1i_BFs1i_BFs1c, BFs1c_BFu1i_BFs1i_BFs1c)
//============================================================================


struct  BFs1c_BFu1i_BFs1i_BFs1i  {
  signed char v1:1;
  unsigned int v2:1;
  signed int v3:1;
  signed int v4:1;
};
//SIG(1 BFs1c_BFu1i_BFs1i_BFs1i) C1{ Fc:1 Fi:1 Fi:1 Fi:1}



static void Test_BFs1c_BFu1i_BFs1i_BFs1i()
{
  {
    init_simple_test("BFs1c_BFu1i_BFs1i_BFs1i");
    static STRUCT_IF_C BFs1c_BFu1i_BFs1i_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1i_BFs1i_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1i_BFs1i_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1i_BFs1i_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1i_BFs1i_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1i_BFs1i_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1i_BFs1i_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1i_BFs1i_BFs1i, BFs1c_BFu1i_BFs1i_BFs1i)
//============================================================================


struct  BFs1c_BFu1i_BFs1i_BFs1ll  {
  signed char v1:1;
  unsigned int v2:1;
  signed int v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1c_BFu1i_BFs1i_BFs1ll) C1{ Fc:1 Fi:1 Fi:1 FL:1}



static void Test_BFs1c_BFu1i_BFs1i_BFs1ll()
{
  {
    init_simple_test("BFs1c_BFu1i_BFs1i_BFs1ll");
    static STRUCT_IF_C BFs1c_BFu1i_BFs1i_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1i_BFs1i_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1i_BFs1i_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1i_BFs1i_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1i_BFs1i_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1i_BFs1i_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1i_BFs1i_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1i_BFs1i_BFs1ll, BFs1c_BFu1i_BFs1i_BFs1ll)
//============================================================================


struct  BFs1c_BFu1i_BFs1i_BFs1s  {
  signed char v1:1;
  unsigned int v2:1;
  signed int v3:1;
  signed short v4:1;
};
//SIG(1 BFs1c_BFu1i_BFs1i_BFs1s) C1{ Fc:1 Fi:1 Fi:1 Fs:1}



static void Test_BFs1c_BFu1i_BFs1i_BFs1s()
{
  {
    init_simple_test("BFs1c_BFu1i_BFs1i_BFs1s");
    static STRUCT_IF_C BFs1c_BFu1i_BFs1i_BFs1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1i_BFs1i_BFs1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1i_BFs1i_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1i_BFs1i_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1i_BFs1i_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1i_BFs1i_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1i_BFs1i_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1i_BFs1i_BFs1s, BFs1c_BFu1i_BFs1i_BFs1s)
//============================================================================


struct  BFs1c_BFu1i_BFs1i_BFu1c  {
  signed char v1:1;
  unsigned int v2:1;
  signed int v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1c_BFu1i_BFs1i_BFu1c) C1{ Fc:1 Fi:1 Fi:1 Fc:1}



static void Test_BFs1c_BFu1i_BFs1i_BFu1c()
{
  {
    init_simple_test("BFs1c_BFu1i_BFs1i_BFu1c");
    static STRUCT_IF_C BFs1c_BFu1i_BFs1i_BFu1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1i_BFs1i_BFu1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1i_BFs1i_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1i_BFs1i_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1i_BFs1i_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1i_BFs1i_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1i_BFs1i_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1i_BFs1i_BFu1c, BFs1c_BFu1i_BFs1i_BFu1c)
//============================================================================


struct  BFs1c_BFu1i_BFs1i_BFu1i  {
  signed char v1:1;
  unsigned int v2:1;
  signed int v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1c_BFu1i_BFs1i_BFu1i) C1{ Fc:1 Fi:1 Fi:1 Fi:1}



static void Test_BFs1c_BFu1i_BFs1i_BFu1i()
{
  {
    init_simple_test("BFs1c_BFu1i_BFs1i_BFu1i");
    static STRUCT_IF_C BFs1c_BFu1i_BFs1i_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1i_BFs1i_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1i_BFs1i_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1i_BFs1i_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1i_BFs1i_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1i_BFs1i_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1i_BFs1i_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1i_BFs1i_BFu1i, BFs1c_BFu1i_BFs1i_BFu1i)
//============================================================================


struct  BFs1c_BFu1i_BFs1i_BFu1ll  {
  signed char v1:1;
  unsigned int v2:1;
  signed int v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1c_BFu1i_BFs1i_BFu1ll) C1{ Fc:1 Fi:1 Fi:1 FL:1}



static void Test_BFs1c_BFu1i_BFs1i_BFu1ll()
{
  {
    init_simple_test("BFs1c_BFu1i_BFs1i_BFu1ll");
    static STRUCT_IF_C BFs1c_BFu1i_BFs1i_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1i_BFs1i_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1i_BFs1i_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1i_BFs1i_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1i_BFs1i_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1i_BFs1i_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1i_BFs1i_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1i_BFs1i_BFu1ll, BFs1c_BFu1i_BFs1i_BFu1ll)
//============================================================================


struct  BFs1c_BFu1i_BFs1i_BFu1s  {
  signed char v1:1;
  unsigned int v2:1;
  signed int v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1c_BFu1i_BFs1i_BFu1s) C1{ Fc:1 Fi:1 Fi:1 Fs:1}



static void Test_BFs1c_BFu1i_BFs1i_BFu1s()
{
  {
    init_simple_test("BFs1c_BFu1i_BFs1i_BFu1s");
    static STRUCT_IF_C BFs1c_BFu1i_BFs1i_BFu1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1i_BFs1i_BFu1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1i_BFs1i_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1i_BFs1i_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1i_BFs1i_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1i_BFs1i_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1i_BFs1i_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1i_BFs1i_BFu1s, BFs1c_BFu1i_BFs1i_BFu1s)
//============================================================================


struct  BFs1c_BFu1i_BFs1ll  {
  signed char v1:1;
  unsigned int v2:1;
  signed __tsi64 v3:1;
};
//SIG(1 BFs1c_BFu1i_BFs1ll) C1{ Fc:1 Fi:1 FL:1}



static void Test_BFs1c_BFu1i_BFs1ll()
{
  {
    init_simple_test("BFs1c_BFu1i_BFs1ll");
    static STRUCT_IF_C BFs1c_BFu1i_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1i_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1i_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1i_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1i_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1i_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1i_BFs1ll, BFs1c_BFu1i_BFs1ll)
//============================================================================


struct  BFs1c_BFu1i_BFs1ll_BFs1c  {
  signed char v1:1;
  unsigned int v2:1;
  signed __tsi64 v3:1;
  signed char v4:1;
};
//SIG(1 BFs1c_BFu1i_BFs1ll_BFs1c) C1{ Fc:1 Fi:1 FL:1 Fc:1}



static void Test_BFs1c_BFu1i_BFs1ll_BFs1c()
{
  {
    init_simple_test("BFs1c_BFu1i_BFs1ll_BFs1c");
    static STRUCT_IF_C BFs1c_BFu1i_BFs1ll_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1i_BFs1ll_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1i_BFs1ll_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1i_BFs1ll_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1i_BFs1ll_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1i_BFs1ll_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1i_BFs1ll_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1i_BFs1ll_BFs1c, BFs1c_BFu1i_BFs1ll_BFs1c)
//============================================================================


struct  BFs1c_BFu1i_BFs1ll_BFs1i  {
  signed char v1:1;
  unsigned int v2:1;
  signed __tsi64 v3:1;
  signed int v4:1;
};
//SIG(1 BFs1c_BFu1i_BFs1ll_BFs1i) C1{ Fc:1 Fi:1 FL:1 Fi:1}



static void Test_BFs1c_BFu1i_BFs1ll_BFs1i()
{
  {
    init_simple_test("BFs1c_BFu1i_BFs1ll_BFs1i");
    static STRUCT_IF_C BFs1c_BFu1i_BFs1ll_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1i_BFs1ll_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1i_BFs1ll_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1i_BFs1ll_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1i_BFs1ll_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1i_BFs1ll_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1i_BFs1ll_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1i_BFs1ll_BFs1i, BFs1c_BFu1i_BFs1ll_BFs1i)
//============================================================================


struct  BFs1c_BFu1i_BFs1ll_BFs1ll  {
  signed char v1:1;
  unsigned int v2:1;
  signed __tsi64 v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1c_BFu1i_BFs1ll_BFs1ll) C1{ Fc:1 Fi:1 FL:1 FL:1}



static void Test_BFs1c_BFu1i_BFs1ll_BFs1ll()
{
  {
    init_simple_test("BFs1c_BFu1i_BFs1ll_BFs1ll");
    static STRUCT_IF_C BFs1c_BFu1i_BFs1ll_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1i_BFs1ll_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1i_BFs1ll_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1i_BFs1ll_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1i_BFs1ll_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1i_BFs1ll_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1i_BFs1ll_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1i_BFs1ll_BFs1ll, BFs1c_BFu1i_BFs1ll_BFs1ll)
//============================================================================


struct  BFs1c_BFu1i_BFs1ll_BFs1s  {
  signed char v1:1;
  unsigned int v2:1;
  signed __tsi64 v3:1;
  signed short v4:1;
};
//SIG(1 BFs1c_BFu1i_BFs1ll_BFs1s) C1{ Fc:1 Fi:1 FL:1 Fs:1}



static void Test_BFs1c_BFu1i_BFs1ll_BFs1s()
{
  {
    init_simple_test("BFs1c_BFu1i_BFs1ll_BFs1s");
    static STRUCT_IF_C BFs1c_BFu1i_BFs1ll_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1i_BFs1ll_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1i_BFs1ll_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1i_BFs1ll_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1i_BFs1ll_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1i_BFs1ll_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1i_BFs1ll_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1i_BFs1ll_BFs1s, BFs1c_BFu1i_BFs1ll_BFs1s)
//============================================================================


struct  BFs1c_BFu1i_BFs1ll_BFu1c  {
  signed char v1:1;
  unsigned int v2:1;
  signed __tsi64 v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1c_BFu1i_BFs1ll_BFu1c) C1{ Fc:1 Fi:1 FL:1 Fc:1}



static void Test_BFs1c_BFu1i_BFs1ll_BFu1c()
{
  {
    init_simple_test("BFs1c_BFu1i_BFs1ll_BFu1c");
    static STRUCT_IF_C BFs1c_BFu1i_BFs1ll_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1i_BFs1ll_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1i_BFs1ll_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1i_BFs1ll_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1i_BFs1ll_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1i_BFs1ll_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1i_BFs1ll_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1i_BFs1ll_BFu1c, BFs1c_BFu1i_BFs1ll_BFu1c)
//============================================================================


struct  BFs1c_BFu1i_BFs1ll_BFu1i  {
  signed char v1:1;
  unsigned int v2:1;
  signed __tsi64 v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1c_BFu1i_BFs1ll_BFu1i) C1{ Fc:1 Fi:1 FL:1 Fi:1}



static void Test_BFs1c_BFu1i_BFs1ll_BFu1i()
{
  {
    init_simple_test("BFs1c_BFu1i_BFs1ll_BFu1i");
    static STRUCT_IF_C BFs1c_BFu1i_BFs1ll_BFu1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1i_BFs1ll_BFu1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1i_BFs1ll_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1i_BFs1ll_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1i_BFs1ll_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1i_BFs1ll_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1i_BFs1ll_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1i_BFs1ll_BFu1i, BFs1c_BFu1i_BFs1ll_BFu1i)
//============================================================================


struct  BFs1c_BFu1i_BFs1ll_BFu1ll  {
  signed char v1:1;
  unsigned int v2:1;
  signed __tsi64 v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1c_BFu1i_BFs1ll_BFu1ll) C1{ Fc:1 Fi:1 FL:1 FL:1}



static void Test_BFs1c_BFu1i_BFs1ll_BFu1ll()
{
  {
    init_simple_test("BFs1c_BFu1i_BFs1ll_BFu1ll");
    static STRUCT_IF_C BFs1c_BFu1i_BFs1ll_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1i_BFs1ll_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1i_BFs1ll_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1i_BFs1ll_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1i_BFs1ll_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1i_BFs1ll_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1i_BFs1ll_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1i_BFs1ll_BFu1ll, BFs1c_BFu1i_BFs1ll_BFu1ll)
//============================================================================


struct  BFs1c_BFu1i_BFs1ll_BFu1s  {
  signed char v1:1;
  unsigned int v2:1;
  signed __tsi64 v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1c_BFu1i_BFs1ll_BFu1s) C1{ Fc:1 Fi:1 FL:1 Fs:1}



static void Test_BFs1c_BFu1i_BFs1ll_BFu1s()
{
  {
    init_simple_test("BFs1c_BFu1i_BFs1ll_BFu1s");
    static STRUCT_IF_C BFs1c_BFu1i_BFs1ll_BFu1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1i_BFs1ll_BFu1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1i_BFs1ll_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1i_BFs1ll_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1i_BFs1ll_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1i_BFs1ll_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1i_BFs1ll_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1i_BFs1ll_BFu1s, BFs1c_BFu1i_BFs1ll_BFu1s)
//============================================================================


struct  BFs1c_BFu1i_BFs1s  {
  signed char v1:1;
  unsigned int v2:1;
  signed short v3:1;
};
//SIG(1 BFs1c_BFu1i_BFs1s) C1{ Fc:1 Fi:1 Fs:1}



static void Test_BFs1c_BFu1i_BFs1s()
{
  {
    init_simple_test("BFs1c_BFu1i_BFs1s");
    static STRUCT_IF_C BFs1c_BFu1i_BFs1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1i_BFs1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1i_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1i_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1i_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1i_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1i_BFs1s, BFs1c_BFu1i_BFs1s)
//============================================================================


struct  BFs1c_BFu1i_BFs1s_BFs1c  {
  signed char v1:1;
  unsigned int v2:1;
  signed short v3:1;
  signed char v4:1;
};
//SIG(1 BFs1c_BFu1i_BFs1s_BFs1c) C1{ Fc:1 Fi:1 Fs:1 Fc:1}



static void Test_BFs1c_BFu1i_BFs1s_BFs1c()
{
  {
    init_simple_test("BFs1c_BFu1i_BFs1s_BFs1c");
    static STRUCT_IF_C BFs1c_BFu1i_BFs1s_BFs1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1i_BFs1s_BFs1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1i_BFs1s_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1i_BFs1s_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1i_BFs1s_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1i_BFs1s_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1i_BFs1s_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1i_BFs1s_BFs1c, BFs1c_BFu1i_BFs1s_BFs1c)
//============================================================================


struct  BFs1c_BFu1i_BFs1s_BFs1i  {
  signed char v1:1;
  unsigned int v2:1;
  signed short v3:1;
  signed int v4:1;
};
//SIG(1 BFs1c_BFu1i_BFs1s_BFs1i) C1{ Fc:1 Fi:1 Fs:1 Fi:1}



static void Test_BFs1c_BFu1i_BFs1s_BFs1i()
{
  {
    init_simple_test("BFs1c_BFu1i_BFs1s_BFs1i");
    static STRUCT_IF_C BFs1c_BFu1i_BFs1s_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1i_BFs1s_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1i_BFs1s_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1i_BFs1s_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1i_BFs1s_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1i_BFs1s_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1i_BFs1s_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1i_BFs1s_BFs1i, BFs1c_BFu1i_BFs1s_BFs1i)
//============================================================================


struct  BFs1c_BFu1i_BFs1s_BFs1ll  {
  signed char v1:1;
  unsigned int v2:1;
  signed short v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1c_BFu1i_BFs1s_BFs1ll) C1{ Fc:1 Fi:1 Fs:1 FL:1}



static void Test_BFs1c_BFu1i_BFs1s_BFs1ll()
{
  {
    init_simple_test("BFs1c_BFu1i_BFs1s_BFs1ll");
    static STRUCT_IF_C BFs1c_BFu1i_BFs1s_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1i_BFs1s_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1i_BFs1s_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1i_BFs1s_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1i_BFs1s_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1i_BFs1s_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1i_BFs1s_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1i_BFs1s_BFs1ll, BFs1c_BFu1i_BFs1s_BFs1ll)
//============================================================================


struct  BFs1c_BFu1i_BFs1s_BFs1s  {
  signed char v1:1;
  unsigned int v2:1;
  signed short v3:1;
  signed short v4:1;
};
//SIG(1 BFs1c_BFu1i_BFs1s_BFs1s) C1{ Fc:1 Fi:1 Fs:1 Fs:1}



static void Test_BFs1c_BFu1i_BFs1s_BFs1s()
{
  {
    init_simple_test("BFs1c_BFu1i_BFs1s_BFs1s");
    static STRUCT_IF_C BFs1c_BFu1i_BFs1s_BFs1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1i_BFs1s_BFs1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1i_BFs1s_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1i_BFs1s_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1i_BFs1s_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1i_BFs1s_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1i_BFs1s_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1i_BFs1s_BFs1s, BFs1c_BFu1i_BFs1s_BFs1s)
//============================================================================


struct  BFs1c_BFu1i_BFs1s_BFu1c  {
  signed char v1:1;
  unsigned int v2:1;
  signed short v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1c_BFu1i_BFs1s_BFu1c) C1{ Fc:1 Fi:1 Fs:1 Fc:1}



static void Test_BFs1c_BFu1i_BFs1s_BFu1c()
{
  {
    init_simple_test("BFs1c_BFu1i_BFs1s_BFu1c");
    static STRUCT_IF_C BFs1c_BFu1i_BFs1s_BFu1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1i_BFs1s_BFu1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1i_BFs1s_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1i_BFs1s_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1i_BFs1s_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1i_BFs1s_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1i_BFs1s_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1i_BFs1s_BFu1c, BFs1c_BFu1i_BFs1s_BFu1c)
//============================================================================


struct  BFs1c_BFu1i_BFs1s_BFu1i  {
  signed char v1:1;
  unsigned int v2:1;
  signed short v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1c_BFu1i_BFs1s_BFu1i) C1{ Fc:1 Fi:1 Fs:1 Fi:1}



static void Test_BFs1c_BFu1i_BFs1s_BFu1i()
{
  {
    init_simple_test("BFs1c_BFu1i_BFs1s_BFu1i");
    static STRUCT_IF_C BFs1c_BFu1i_BFs1s_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1i_BFs1s_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1i_BFs1s_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1i_BFs1s_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1i_BFs1s_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1i_BFs1s_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1i_BFs1s_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1i_BFs1s_BFu1i, BFs1c_BFu1i_BFs1s_BFu1i)
//============================================================================


struct  BFs1c_BFu1i_BFs1s_BFu1ll  {
  signed char v1:1;
  unsigned int v2:1;
  signed short v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1c_BFu1i_BFs1s_BFu1ll) C1{ Fc:1 Fi:1 Fs:1 FL:1}



static void Test_BFs1c_BFu1i_BFs1s_BFu1ll()
{
  {
    init_simple_test("BFs1c_BFu1i_BFs1s_BFu1ll");
    static STRUCT_IF_C BFs1c_BFu1i_BFs1s_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1i_BFs1s_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1i_BFs1s_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1i_BFs1s_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1i_BFs1s_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1i_BFs1s_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1i_BFs1s_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1i_BFs1s_BFu1ll, BFs1c_BFu1i_BFs1s_BFu1ll)
//============================================================================


struct  BFs1c_BFu1i_BFs1s_BFu1s  {
  signed char v1:1;
  unsigned int v2:1;
  signed short v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1c_BFu1i_BFs1s_BFu1s) C1{ Fc:1 Fi:1 Fs:1 Fs:1}



static void Test_BFs1c_BFu1i_BFs1s_BFu1s()
{
  {
    init_simple_test("BFs1c_BFu1i_BFs1s_BFu1s");
    static STRUCT_IF_C BFs1c_BFu1i_BFs1s_BFu1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1i_BFs1s_BFu1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1i_BFs1s_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1i_BFs1s_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1i_BFs1s_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1i_BFs1s_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1i_BFs1s_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1i_BFs1s_BFu1s, BFs1c_BFu1i_BFs1s_BFu1s)
//============================================================================


struct  BFs1c_BFu1i_BFu1c  {
  signed char v1:1;
  unsigned int v2:1;
  unsigned char v3:1;
};
//SIG(1 BFs1c_BFu1i_BFu1c) C1{ Fc:1 Fi:1 Fc:1}



static void Test_BFs1c_BFu1i_BFu1c()
{
  {
    init_simple_test("BFs1c_BFu1i_BFu1c");
    static STRUCT_IF_C BFs1c_BFu1i_BFu1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1i_BFu1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1i_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1i_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1i_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1i_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1i_BFu1c, BFs1c_BFu1i_BFu1c)
//============================================================================


struct  BFs1c_BFu1i_BFu1c_BFs1c  {
  signed char v1:1;
  unsigned int v2:1;
  unsigned char v3:1;
  signed char v4:1;
};
//SIG(1 BFs1c_BFu1i_BFu1c_BFs1c) C1{ Fc:1 Fi:1 Fc:1 Fc:1}



static void Test_BFs1c_BFu1i_BFu1c_BFs1c()
{
  {
    init_simple_test("BFs1c_BFu1i_BFu1c_BFs1c");
    static STRUCT_IF_C BFs1c_BFu1i_BFu1c_BFs1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1i_BFu1c_BFs1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1i_BFu1c_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1i_BFu1c_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1i_BFu1c_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1i_BFu1c_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1i_BFu1c_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1i_BFu1c_BFs1c, BFs1c_BFu1i_BFu1c_BFs1c)
//============================================================================


struct  BFs1c_BFu1i_BFu1c_BFs1i  {
  signed char v1:1;
  unsigned int v2:1;
  unsigned char v3:1;
  signed int v4:1;
};
//SIG(1 BFs1c_BFu1i_BFu1c_BFs1i) C1{ Fc:1 Fi:1 Fc:1 Fi:1}



static void Test_BFs1c_BFu1i_BFu1c_BFs1i()
{
  {
    init_simple_test("BFs1c_BFu1i_BFu1c_BFs1i");
    static STRUCT_IF_C BFs1c_BFu1i_BFu1c_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1i_BFu1c_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1i_BFu1c_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1i_BFu1c_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1i_BFu1c_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1i_BFu1c_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1i_BFu1c_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1i_BFu1c_BFs1i, BFs1c_BFu1i_BFu1c_BFs1i)
//============================================================================


struct  BFs1c_BFu1i_BFu1c_BFs1ll  {
  signed char v1:1;
  unsigned int v2:1;
  unsigned char v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1c_BFu1i_BFu1c_BFs1ll) C1{ Fc:1 Fi:1 Fc:1 FL:1}



static void Test_BFs1c_BFu1i_BFu1c_BFs1ll()
{
  {
    init_simple_test("BFs1c_BFu1i_BFu1c_BFs1ll");
    static STRUCT_IF_C BFs1c_BFu1i_BFu1c_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1i_BFu1c_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1i_BFu1c_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1i_BFu1c_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1i_BFu1c_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1i_BFu1c_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1i_BFu1c_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1i_BFu1c_BFs1ll, BFs1c_BFu1i_BFu1c_BFs1ll)
//============================================================================


struct  BFs1c_BFu1i_BFu1c_BFs1s  {
  signed char v1:1;
  unsigned int v2:1;
  unsigned char v3:1;
  signed short v4:1;
};
//SIG(1 BFs1c_BFu1i_BFu1c_BFs1s) C1{ Fc:1 Fi:1 Fc:1 Fs:1}



static void Test_BFs1c_BFu1i_BFu1c_BFs1s()
{
  {
    init_simple_test("BFs1c_BFu1i_BFu1c_BFs1s");
    static STRUCT_IF_C BFs1c_BFu1i_BFu1c_BFs1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1i_BFu1c_BFs1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1i_BFu1c_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1i_BFu1c_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1i_BFu1c_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1i_BFu1c_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1i_BFu1c_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1i_BFu1c_BFs1s, BFs1c_BFu1i_BFu1c_BFs1s)
//============================================================================


struct  BFs1c_BFu1i_BFu1c_BFu1c  {
  signed char v1:1;
  unsigned int v2:1;
  unsigned char v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1c_BFu1i_BFu1c_BFu1c) C1{ Fc:1 Fi:1 Fc:1 Fc:1}



static void Test_BFs1c_BFu1i_BFu1c_BFu1c()
{
  {
    init_simple_test("BFs1c_BFu1i_BFu1c_BFu1c");
    static STRUCT_IF_C BFs1c_BFu1i_BFu1c_BFu1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1i_BFu1c_BFu1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1i_BFu1c_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1i_BFu1c_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1i_BFu1c_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1i_BFu1c_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1i_BFu1c_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1i_BFu1c_BFu1c, BFs1c_BFu1i_BFu1c_BFu1c)
//============================================================================


struct  BFs1c_BFu1i_BFu1c_BFu1i  {
  signed char v1:1;
  unsigned int v2:1;
  unsigned char v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1c_BFu1i_BFu1c_BFu1i) C1{ Fc:1 Fi:1 Fc:1 Fi:1}



static void Test_BFs1c_BFu1i_BFu1c_BFu1i()
{
  {
    init_simple_test("BFs1c_BFu1i_BFu1c_BFu1i");
    static STRUCT_IF_C BFs1c_BFu1i_BFu1c_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1i_BFu1c_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1i_BFu1c_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1i_BFu1c_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1i_BFu1c_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1i_BFu1c_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1i_BFu1c_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1i_BFu1c_BFu1i, BFs1c_BFu1i_BFu1c_BFu1i)
//============================================================================


struct  BFs1c_BFu1i_BFu1c_BFu1ll  {
  signed char v1:1;
  unsigned int v2:1;
  unsigned char v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1c_BFu1i_BFu1c_BFu1ll) C1{ Fc:1 Fi:1 Fc:1 FL:1}



static void Test_BFs1c_BFu1i_BFu1c_BFu1ll()
{
  {
    init_simple_test("BFs1c_BFu1i_BFu1c_BFu1ll");
    static STRUCT_IF_C BFs1c_BFu1i_BFu1c_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1i_BFu1c_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1i_BFu1c_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1i_BFu1c_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1i_BFu1c_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1i_BFu1c_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1i_BFu1c_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1i_BFu1c_BFu1ll, BFs1c_BFu1i_BFu1c_BFu1ll)
//============================================================================


struct  BFs1c_BFu1i_BFu1c_BFu1s  {
  signed char v1:1;
  unsigned int v2:1;
  unsigned char v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1c_BFu1i_BFu1c_BFu1s) C1{ Fc:1 Fi:1 Fc:1 Fs:1}



static void Test_BFs1c_BFu1i_BFu1c_BFu1s()
{
  {
    init_simple_test("BFs1c_BFu1i_BFu1c_BFu1s");
    static STRUCT_IF_C BFs1c_BFu1i_BFu1c_BFu1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1i_BFu1c_BFu1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1i_BFu1c_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1i_BFu1c_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1i_BFu1c_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1i_BFu1c_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1i_BFu1c_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1i_BFu1c_BFu1s, BFs1c_BFu1i_BFu1c_BFu1s)
//============================================================================


struct  BFs1c_BFu1i_BFu1i  {
  signed char v1:1;
  unsigned int v2:1;
  unsigned int v3:1;
};
//SIG(1 BFs1c_BFu1i_BFu1i) C1{ Fc:1 Fi:1 Fi:1}



static void Test_BFs1c_BFu1i_BFu1i()
{
  {
    init_simple_test("BFs1c_BFu1i_BFu1i");
    static STRUCT_IF_C BFs1c_BFu1i_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1i_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1i_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1i_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1i_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1i_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1i_BFu1i, BFs1c_BFu1i_BFu1i)
//============================================================================


struct  BFs1c_BFu1i_BFu1i_BFs1c  {
  signed char v1:1;
  unsigned int v2:1;
  unsigned int v3:1;
  signed char v4:1;
};
//SIG(1 BFs1c_BFu1i_BFu1i_BFs1c) C1{ Fc:1 Fi:1 Fi:1 Fc:1}



static void Test_BFs1c_BFu1i_BFu1i_BFs1c()
{
  {
    init_simple_test("BFs1c_BFu1i_BFu1i_BFs1c");
    static STRUCT_IF_C BFs1c_BFu1i_BFu1i_BFs1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1i_BFu1i_BFs1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1i_BFu1i_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1i_BFu1i_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1i_BFu1i_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1i_BFu1i_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1i_BFu1i_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1i_BFu1i_BFs1c, BFs1c_BFu1i_BFu1i_BFs1c)
//============================================================================


struct  BFs1c_BFu1i_BFu1i_BFs1i  {
  signed char v1:1;
  unsigned int v2:1;
  unsigned int v3:1;
  signed int v4:1;
};
//SIG(1 BFs1c_BFu1i_BFu1i_BFs1i) C1{ Fc:1 Fi:1 Fi:1 Fi:1}



static void Test_BFs1c_BFu1i_BFu1i_BFs1i()
{
  {
    init_simple_test("BFs1c_BFu1i_BFu1i_BFs1i");
    static STRUCT_IF_C BFs1c_BFu1i_BFu1i_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1i_BFu1i_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1i_BFu1i_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1i_BFu1i_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1i_BFu1i_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1i_BFu1i_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1i_BFu1i_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1i_BFu1i_BFs1i, BFs1c_BFu1i_BFu1i_BFs1i)
//============================================================================


struct  BFs1c_BFu1i_BFu1i_BFs1ll  {
  signed char v1:1;
  unsigned int v2:1;
  unsigned int v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1c_BFu1i_BFu1i_BFs1ll) C1{ Fc:1 Fi:1 Fi:1 FL:1}



static void Test_BFs1c_BFu1i_BFu1i_BFs1ll()
{
  {
    init_simple_test("BFs1c_BFu1i_BFu1i_BFs1ll");
    static STRUCT_IF_C BFs1c_BFu1i_BFu1i_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1i_BFu1i_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1i_BFu1i_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1i_BFu1i_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1i_BFu1i_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1i_BFu1i_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1i_BFu1i_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1i_BFu1i_BFs1ll, BFs1c_BFu1i_BFu1i_BFs1ll)
//============================================================================


struct  BFs1c_BFu1i_BFu1i_BFs1s  {
  signed char v1:1;
  unsigned int v2:1;
  unsigned int v3:1;
  signed short v4:1;
};
//SIG(1 BFs1c_BFu1i_BFu1i_BFs1s) C1{ Fc:1 Fi:1 Fi:1 Fs:1}



static void Test_BFs1c_BFu1i_BFu1i_BFs1s()
{
  {
    init_simple_test("BFs1c_BFu1i_BFu1i_BFs1s");
    static STRUCT_IF_C BFs1c_BFu1i_BFu1i_BFs1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1i_BFu1i_BFs1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1i_BFu1i_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1i_BFu1i_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1i_BFu1i_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1i_BFu1i_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1i_BFu1i_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1i_BFu1i_BFs1s, BFs1c_BFu1i_BFu1i_BFs1s)
//============================================================================


struct  BFs1c_BFu1i_BFu1i_BFu1c  {
  signed char v1:1;
  unsigned int v2:1;
  unsigned int v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1c_BFu1i_BFu1i_BFu1c) C1{ Fc:1 Fi:1 Fi:1 Fc:1}



static void Test_BFs1c_BFu1i_BFu1i_BFu1c()
{
  {
    init_simple_test("BFs1c_BFu1i_BFu1i_BFu1c");
    static STRUCT_IF_C BFs1c_BFu1i_BFu1i_BFu1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1i_BFu1i_BFu1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1i_BFu1i_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1i_BFu1i_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1i_BFu1i_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1i_BFu1i_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1i_BFu1i_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1i_BFu1i_BFu1c, BFs1c_BFu1i_BFu1i_BFu1c)
//============================================================================


struct  BFs1c_BFu1i_BFu1i_BFu1i  {
  signed char v1:1;
  unsigned int v2:1;
  unsigned int v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1c_BFu1i_BFu1i_BFu1i) C1{ Fc:1 Fi:1 Fi:1 Fi:1}



static void Test_BFs1c_BFu1i_BFu1i_BFu1i()
{
  {
    init_simple_test("BFs1c_BFu1i_BFu1i_BFu1i");
    static STRUCT_IF_C BFs1c_BFu1i_BFu1i_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1i_BFu1i_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1i_BFu1i_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1i_BFu1i_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1i_BFu1i_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1i_BFu1i_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1i_BFu1i_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1i_BFu1i_BFu1i, BFs1c_BFu1i_BFu1i_BFu1i)
//============================================================================


struct  BFs1c_BFu1i_BFu1i_BFu1ll  {
  signed char v1:1;
  unsigned int v2:1;
  unsigned int v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1c_BFu1i_BFu1i_BFu1ll) C1{ Fc:1 Fi:1 Fi:1 FL:1}



static void Test_BFs1c_BFu1i_BFu1i_BFu1ll()
{
  {
    init_simple_test("BFs1c_BFu1i_BFu1i_BFu1ll");
    static STRUCT_IF_C BFs1c_BFu1i_BFu1i_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1i_BFu1i_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1i_BFu1i_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1i_BFu1i_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1i_BFu1i_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1i_BFu1i_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1i_BFu1i_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1i_BFu1i_BFu1ll, BFs1c_BFu1i_BFu1i_BFu1ll)
//============================================================================


struct  BFs1c_BFu1i_BFu1i_BFu1s  {
  signed char v1:1;
  unsigned int v2:1;
  unsigned int v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1c_BFu1i_BFu1i_BFu1s) C1{ Fc:1 Fi:1 Fi:1 Fs:1}



static void Test_BFs1c_BFu1i_BFu1i_BFu1s()
{
  {
    init_simple_test("BFs1c_BFu1i_BFu1i_BFu1s");
    static STRUCT_IF_C BFs1c_BFu1i_BFu1i_BFu1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1i_BFu1i_BFu1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1i_BFu1i_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1i_BFu1i_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1i_BFu1i_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1i_BFu1i_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1i_BFu1i_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1i_BFu1i_BFu1s, BFs1c_BFu1i_BFu1i_BFu1s)
//============================================================================


struct  BFs1c_BFu1i_BFu1ll  {
  signed char v1:1;
  unsigned int v2:1;
  __tsu64 v3:1;
};
//SIG(1 BFs1c_BFu1i_BFu1ll) C1{ Fc:1 Fi:1 FL:1}



static void Test_BFs1c_BFu1i_BFu1ll()
{
  {
    init_simple_test("BFs1c_BFu1i_BFu1ll");
    static STRUCT_IF_C BFs1c_BFu1i_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1i_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1i_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1i_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1i_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1i_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1i_BFu1ll, BFs1c_BFu1i_BFu1ll)
//============================================================================


struct  BFs1c_BFu1i_BFu1ll_BFs1c  {
  signed char v1:1;
  unsigned int v2:1;
  __tsu64 v3:1;
  signed char v4:1;
};
//SIG(1 BFs1c_BFu1i_BFu1ll_BFs1c) C1{ Fc:1 Fi:1 FL:1 Fc:1}



static void Test_BFs1c_BFu1i_BFu1ll_BFs1c()
{
  {
    init_simple_test("BFs1c_BFu1i_BFu1ll_BFs1c");
    static STRUCT_IF_C BFs1c_BFu1i_BFu1ll_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1i_BFu1ll_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1i_BFu1ll_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1i_BFu1ll_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1i_BFu1ll_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1i_BFu1ll_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1i_BFu1ll_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1i_BFu1ll_BFs1c, BFs1c_BFu1i_BFu1ll_BFs1c)
//============================================================================


struct  BFs1c_BFu1i_BFu1ll_BFs1i  {
  signed char v1:1;
  unsigned int v2:1;
  __tsu64 v3:1;
  signed int v4:1;
};
//SIG(1 BFs1c_BFu1i_BFu1ll_BFs1i) C1{ Fc:1 Fi:1 FL:1 Fi:1}



static void Test_BFs1c_BFu1i_BFu1ll_BFs1i()
{
  {
    init_simple_test("BFs1c_BFu1i_BFu1ll_BFs1i");
    static STRUCT_IF_C BFs1c_BFu1i_BFu1ll_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1i_BFu1ll_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1i_BFu1ll_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1i_BFu1ll_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1i_BFu1ll_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1i_BFu1ll_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1i_BFu1ll_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1i_BFu1ll_BFs1i, BFs1c_BFu1i_BFu1ll_BFs1i)
//============================================================================


struct  BFs1c_BFu1i_BFu1ll_BFs1ll  {
  signed char v1:1;
  unsigned int v2:1;
  __tsu64 v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1c_BFu1i_BFu1ll_BFs1ll) C1{ Fc:1 Fi:1 FL:1 FL:1}



static void Test_BFs1c_BFu1i_BFu1ll_BFs1ll()
{
  {
    init_simple_test("BFs1c_BFu1i_BFu1ll_BFs1ll");
    static STRUCT_IF_C BFs1c_BFu1i_BFu1ll_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1i_BFu1ll_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1i_BFu1ll_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1i_BFu1ll_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1i_BFu1ll_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1i_BFu1ll_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1i_BFu1ll_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1i_BFu1ll_BFs1ll, BFs1c_BFu1i_BFu1ll_BFs1ll)
//============================================================================


struct  BFs1c_BFu1i_BFu1ll_BFs1s  {
  signed char v1:1;
  unsigned int v2:1;
  __tsu64 v3:1;
  signed short v4:1;
};
//SIG(1 BFs1c_BFu1i_BFu1ll_BFs1s) C1{ Fc:1 Fi:1 FL:1 Fs:1}



static void Test_BFs1c_BFu1i_BFu1ll_BFs1s()
{
  {
    init_simple_test("BFs1c_BFu1i_BFu1ll_BFs1s");
    static STRUCT_IF_C BFs1c_BFu1i_BFu1ll_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1i_BFu1ll_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1i_BFu1ll_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1i_BFu1ll_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1i_BFu1ll_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1i_BFu1ll_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1i_BFu1ll_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1i_BFu1ll_BFs1s, BFs1c_BFu1i_BFu1ll_BFs1s)
//============================================================================


struct  BFs1c_BFu1i_BFu1ll_BFu1c  {
  signed char v1:1;
  unsigned int v2:1;
  __tsu64 v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1c_BFu1i_BFu1ll_BFu1c) C1{ Fc:1 Fi:1 FL:1 Fc:1}



static void Test_BFs1c_BFu1i_BFu1ll_BFu1c()
{
  {
    init_simple_test("BFs1c_BFu1i_BFu1ll_BFu1c");
    static STRUCT_IF_C BFs1c_BFu1i_BFu1ll_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1i_BFu1ll_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1i_BFu1ll_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1i_BFu1ll_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1i_BFu1ll_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1i_BFu1ll_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1i_BFu1ll_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1i_BFu1ll_BFu1c, BFs1c_BFu1i_BFu1ll_BFu1c)
//============================================================================


struct  BFs1c_BFu1i_BFu1ll_BFu1i  {
  signed char v1:1;
  unsigned int v2:1;
  __tsu64 v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1c_BFu1i_BFu1ll_BFu1i) C1{ Fc:1 Fi:1 FL:1 Fi:1}



static void Test_BFs1c_BFu1i_BFu1ll_BFu1i()
{
  {
    init_simple_test("BFs1c_BFu1i_BFu1ll_BFu1i");
    static STRUCT_IF_C BFs1c_BFu1i_BFu1ll_BFu1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1i_BFu1ll_BFu1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1i_BFu1ll_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1i_BFu1ll_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1i_BFu1ll_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1i_BFu1ll_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1i_BFu1ll_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1i_BFu1ll_BFu1i, BFs1c_BFu1i_BFu1ll_BFu1i)
//============================================================================


struct  BFs1c_BFu1i_BFu1ll_BFu1ll  {
  signed char v1:1;
  unsigned int v2:1;
  __tsu64 v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1c_BFu1i_BFu1ll_BFu1ll) C1{ Fc:1 Fi:1 FL:1 FL:1}



static void Test_BFs1c_BFu1i_BFu1ll_BFu1ll()
{
  {
    init_simple_test("BFs1c_BFu1i_BFu1ll_BFu1ll");
    static STRUCT_IF_C BFs1c_BFu1i_BFu1ll_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1i_BFu1ll_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1i_BFu1ll_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1i_BFu1ll_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1i_BFu1ll_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1i_BFu1ll_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1i_BFu1ll_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1i_BFu1ll_BFu1ll, BFs1c_BFu1i_BFu1ll_BFu1ll)
//============================================================================


struct  BFs1c_BFu1i_BFu1ll_BFu1s  {
  signed char v1:1;
  unsigned int v2:1;
  __tsu64 v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1c_BFu1i_BFu1ll_BFu1s) C1{ Fc:1 Fi:1 FL:1 Fs:1}



static void Test_BFs1c_BFu1i_BFu1ll_BFu1s()
{
  {
    init_simple_test("BFs1c_BFu1i_BFu1ll_BFu1s");
    static STRUCT_IF_C BFs1c_BFu1i_BFu1ll_BFu1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1i_BFu1ll_BFu1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1i_BFu1ll_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1i_BFu1ll_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1i_BFu1ll_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1i_BFu1ll_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1i_BFu1ll_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1i_BFu1ll_BFu1s, BFs1c_BFu1i_BFu1ll_BFu1s)
//============================================================================


struct  BFs1c_BFu1i_BFu1s  {
  signed char v1:1;
  unsigned int v2:1;
  unsigned short v3:1;
};
//SIG(1 BFs1c_BFu1i_BFu1s) C1{ Fc:1 Fi:1 Fs:1}



static void Test_BFs1c_BFu1i_BFu1s()
{
  {
    init_simple_test("BFs1c_BFu1i_BFu1s");
    static STRUCT_IF_C BFs1c_BFu1i_BFu1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1i_BFu1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1i_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1i_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1i_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1i_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1i_BFu1s, BFs1c_BFu1i_BFu1s)
//============================================================================


struct  BFs1c_BFu1i_BFu1s_BFs1c  {
  signed char v1:1;
  unsigned int v2:1;
  unsigned short v3:1;
  signed char v4:1;
};
//SIG(1 BFs1c_BFu1i_BFu1s_BFs1c) C1{ Fc:1 Fi:1 Fs:1 Fc:1}



static void Test_BFs1c_BFu1i_BFu1s_BFs1c()
{
  {
    init_simple_test("BFs1c_BFu1i_BFu1s_BFs1c");
    static STRUCT_IF_C BFs1c_BFu1i_BFu1s_BFs1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1i_BFu1s_BFs1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1i_BFu1s_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1i_BFu1s_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1i_BFu1s_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1i_BFu1s_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1i_BFu1s_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1i_BFu1s_BFs1c, BFs1c_BFu1i_BFu1s_BFs1c)
//============================================================================


struct  BFs1c_BFu1i_BFu1s_BFs1i  {
  signed char v1:1;
  unsigned int v2:1;
  unsigned short v3:1;
  signed int v4:1;
};
//SIG(1 BFs1c_BFu1i_BFu1s_BFs1i) C1{ Fc:1 Fi:1 Fs:1 Fi:1}



static void Test_BFs1c_BFu1i_BFu1s_BFs1i()
{
  {
    init_simple_test("BFs1c_BFu1i_BFu1s_BFs1i");
    static STRUCT_IF_C BFs1c_BFu1i_BFu1s_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1i_BFu1s_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1i_BFu1s_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1i_BFu1s_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1i_BFu1s_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1i_BFu1s_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1i_BFu1s_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1i_BFu1s_BFs1i, BFs1c_BFu1i_BFu1s_BFs1i)
//============================================================================


struct  BFs1c_BFu1i_BFu1s_BFs1ll  {
  signed char v1:1;
  unsigned int v2:1;
  unsigned short v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1c_BFu1i_BFu1s_BFs1ll) C1{ Fc:1 Fi:1 Fs:1 FL:1}



static void Test_BFs1c_BFu1i_BFu1s_BFs1ll()
{
  {
    init_simple_test("BFs1c_BFu1i_BFu1s_BFs1ll");
    static STRUCT_IF_C BFs1c_BFu1i_BFu1s_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1i_BFu1s_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1i_BFu1s_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1i_BFu1s_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1i_BFu1s_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1i_BFu1s_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1i_BFu1s_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1i_BFu1s_BFs1ll, BFs1c_BFu1i_BFu1s_BFs1ll)
//============================================================================


struct  BFs1c_BFu1i_BFu1s_BFs1s  {
  signed char v1:1;
  unsigned int v2:1;
  unsigned short v3:1;
  signed short v4:1;
};
//SIG(1 BFs1c_BFu1i_BFu1s_BFs1s) C1{ Fc:1 Fi:1 Fs:1 Fs:1}



static void Test_BFs1c_BFu1i_BFu1s_BFs1s()
{
  {
    init_simple_test("BFs1c_BFu1i_BFu1s_BFs1s");
    static STRUCT_IF_C BFs1c_BFu1i_BFu1s_BFs1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1i_BFu1s_BFs1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1i_BFu1s_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1i_BFu1s_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1i_BFu1s_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1i_BFu1s_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1i_BFu1s_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1i_BFu1s_BFs1s, BFs1c_BFu1i_BFu1s_BFs1s)
//============================================================================


struct  BFs1c_BFu1i_BFu1s_BFu1c  {
  signed char v1:1;
  unsigned int v2:1;
  unsigned short v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1c_BFu1i_BFu1s_BFu1c) C1{ Fc:1 Fi:1 Fs:1 Fc:1}



static void Test_BFs1c_BFu1i_BFu1s_BFu1c()
{
  {
    init_simple_test("BFs1c_BFu1i_BFu1s_BFu1c");
    static STRUCT_IF_C BFs1c_BFu1i_BFu1s_BFu1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1i_BFu1s_BFu1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1i_BFu1s_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1i_BFu1s_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1i_BFu1s_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1i_BFu1s_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1i_BFu1s_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1i_BFu1s_BFu1c, BFs1c_BFu1i_BFu1s_BFu1c)
//============================================================================


struct  BFs1c_BFu1i_BFu1s_BFu1i  {
  signed char v1:1;
  unsigned int v2:1;
  unsigned short v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1c_BFu1i_BFu1s_BFu1i) C1{ Fc:1 Fi:1 Fs:1 Fi:1}



static void Test_BFs1c_BFu1i_BFu1s_BFu1i()
{
  {
    init_simple_test("BFs1c_BFu1i_BFu1s_BFu1i");
    static STRUCT_IF_C BFs1c_BFu1i_BFu1s_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1i_BFu1s_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1i_BFu1s_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1i_BFu1s_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1i_BFu1s_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1i_BFu1s_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1i_BFu1s_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1i_BFu1s_BFu1i, BFs1c_BFu1i_BFu1s_BFu1i)
//============================================================================


struct  BFs1c_BFu1i_BFu1s_BFu1ll  {
  signed char v1:1;
  unsigned int v2:1;
  unsigned short v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1c_BFu1i_BFu1s_BFu1ll) C1{ Fc:1 Fi:1 Fs:1 FL:1}



static void Test_BFs1c_BFu1i_BFu1s_BFu1ll()
{
  {
    init_simple_test("BFs1c_BFu1i_BFu1s_BFu1ll");
    static STRUCT_IF_C BFs1c_BFu1i_BFu1s_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1i_BFu1s_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1i_BFu1s_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1i_BFu1s_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1i_BFu1s_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1i_BFu1s_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1i_BFu1s_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1i_BFu1s_BFu1ll, BFs1c_BFu1i_BFu1s_BFu1ll)
//============================================================================


struct  BFs1c_BFu1i_BFu1s_BFu1s  {
  signed char v1:1;
  unsigned int v2:1;
  unsigned short v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1c_BFu1i_BFu1s_BFu1s) C1{ Fc:1 Fi:1 Fs:1 Fs:1}



static void Test_BFs1c_BFu1i_BFu1s_BFu1s()
{
  {
    init_simple_test("BFs1c_BFu1i_BFu1s_BFu1s");
    static STRUCT_IF_C BFs1c_BFu1i_BFu1s_BFu1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1i_BFu1s_BFu1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1i_BFu1s_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1i_BFu1s_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1i_BFu1s_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1i_BFu1s_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1i_BFu1s_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1i_BFu1s_BFu1s, BFs1c_BFu1i_BFu1s_BFu1s)
//============================================================================


struct  BFs1c_BFu1ll  {
  signed char v1:1;
  __tsu64 v2:1;
};
//SIG(1 BFs1c_BFu1ll) C1{ Fc:1 FL:1}



static void Test_BFs1c_BFu1ll()
{
  {
    init_simple_test("BFs1c_BFu1ll");
    static STRUCT_IF_C BFs1c_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1ll, BFs1c_BFu1ll)
//============================================================================


struct  BFs1c_BFu1ll_BFs1c  {
  signed char v1:1;
  __tsu64 v2:1;
  signed char v3:1;
};
//SIG(1 BFs1c_BFu1ll_BFs1c) C1{ Fc:1 FL:1 Fc:1}



static void Test_BFs1c_BFu1ll_BFs1c()
{
  {
    init_simple_test("BFs1c_BFu1ll_BFs1c");
    static STRUCT_IF_C BFs1c_BFu1ll_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1ll_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1ll_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1ll_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1ll_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1ll_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1ll_BFs1c, BFs1c_BFu1ll_BFs1c)
//============================================================================


struct  BFs1c_BFu1ll_BFs1c_BFs1c  {
  signed char v1:1;
  __tsu64 v2:1;
  signed char v3:1;
  signed char v4:1;
};
//SIG(1 BFs1c_BFu1ll_BFs1c_BFs1c) C1{ Fc:1 FL:1 Fc:1 Fc:1}



static void Test_BFs1c_BFu1ll_BFs1c_BFs1c()
{
  {
    init_simple_test("BFs1c_BFu1ll_BFs1c_BFs1c");
    static STRUCT_IF_C BFs1c_BFu1ll_BFs1c_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1ll_BFs1c_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1ll_BFs1c_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1ll_BFs1c_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1ll_BFs1c_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1ll_BFs1c_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1ll_BFs1c_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1ll_BFs1c_BFs1c, BFs1c_BFu1ll_BFs1c_BFs1c)
//============================================================================


struct  BFs1c_BFu1ll_BFs1c_BFs1i  {
  signed char v1:1;
  __tsu64 v2:1;
  signed char v3:1;
  signed int v4:1;
};
//SIG(1 BFs1c_BFu1ll_BFs1c_BFs1i) C1{ Fc:1 FL:1 Fc:1 Fi:1}



static void Test_BFs1c_BFu1ll_BFs1c_BFs1i()
{
  {
    init_simple_test("BFs1c_BFu1ll_BFs1c_BFs1i");
    static STRUCT_IF_C BFs1c_BFu1ll_BFs1c_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1ll_BFs1c_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1ll_BFs1c_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1ll_BFs1c_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1ll_BFs1c_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1ll_BFs1c_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1ll_BFs1c_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1ll_BFs1c_BFs1i, BFs1c_BFu1ll_BFs1c_BFs1i)
//============================================================================


struct  BFs1c_BFu1ll_BFs1c_BFs1ll  {
  signed char v1:1;
  __tsu64 v2:1;
  signed char v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1c_BFu1ll_BFs1c_BFs1ll) C1{ Fc:1 FL:1 Fc:1 FL:1}



static void Test_BFs1c_BFu1ll_BFs1c_BFs1ll()
{
  {
    init_simple_test("BFs1c_BFu1ll_BFs1c_BFs1ll");
    static STRUCT_IF_C BFs1c_BFu1ll_BFs1c_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1ll_BFs1c_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1ll_BFs1c_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1ll_BFs1c_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1ll_BFs1c_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1ll_BFs1c_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1ll_BFs1c_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1ll_BFs1c_BFs1ll, BFs1c_BFu1ll_BFs1c_BFs1ll)
//============================================================================


struct  BFs1c_BFu1ll_BFs1c_BFs1s  {
  signed char v1:1;
  __tsu64 v2:1;
  signed char v3:1;
  signed short v4:1;
};
//SIG(1 BFs1c_BFu1ll_BFs1c_BFs1s) C1{ Fc:1 FL:1 Fc:1 Fs:1}



static void Test_BFs1c_BFu1ll_BFs1c_BFs1s()
{
  {
    init_simple_test("BFs1c_BFu1ll_BFs1c_BFs1s");
    static STRUCT_IF_C BFs1c_BFu1ll_BFs1c_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1ll_BFs1c_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1ll_BFs1c_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1ll_BFs1c_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1ll_BFs1c_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1ll_BFs1c_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1ll_BFs1c_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1ll_BFs1c_BFs1s, BFs1c_BFu1ll_BFs1c_BFs1s)
//============================================================================


struct  BFs1c_BFu1ll_BFs1c_BFu1c  {
  signed char v1:1;
  __tsu64 v2:1;
  signed char v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1c_BFu1ll_BFs1c_BFu1c) C1{ Fc:1 FL:1 Fc:1 Fc:1}



static void Test_BFs1c_BFu1ll_BFs1c_BFu1c()
{
  {
    init_simple_test("BFs1c_BFu1ll_BFs1c_BFu1c");
    static STRUCT_IF_C BFs1c_BFu1ll_BFs1c_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1ll_BFs1c_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1ll_BFs1c_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1ll_BFs1c_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1ll_BFs1c_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1ll_BFs1c_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1ll_BFs1c_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1ll_BFs1c_BFu1c, BFs1c_BFu1ll_BFs1c_BFu1c)
//============================================================================


struct  BFs1c_BFu1ll_BFs1c_BFu1i  {
  signed char v1:1;
  __tsu64 v2:1;
  signed char v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1c_BFu1ll_BFs1c_BFu1i) C1{ Fc:1 FL:1 Fc:1 Fi:1}



static void Test_BFs1c_BFu1ll_BFs1c_BFu1i()
{
  {
    init_simple_test("BFs1c_BFu1ll_BFs1c_BFu1i");
    static STRUCT_IF_C BFs1c_BFu1ll_BFs1c_BFu1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1ll_BFs1c_BFu1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1ll_BFs1c_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1ll_BFs1c_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1ll_BFs1c_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1ll_BFs1c_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1ll_BFs1c_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1ll_BFs1c_BFu1i, BFs1c_BFu1ll_BFs1c_BFu1i)
//============================================================================


struct  BFs1c_BFu1ll_BFs1c_BFu1ll  {
  signed char v1:1;
  __tsu64 v2:1;
  signed char v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1c_BFu1ll_BFs1c_BFu1ll) C1{ Fc:1 FL:1 Fc:1 FL:1}



static void Test_BFs1c_BFu1ll_BFs1c_BFu1ll()
{
  {
    init_simple_test("BFs1c_BFu1ll_BFs1c_BFu1ll");
    static STRUCT_IF_C BFs1c_BFu1ll_BFs1c_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1ll_BFs1c_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1ll_BFs1c_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1ll_BFs1c_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1ll_BFs1c_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1ll_BFs1c_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1ll_BFs1c_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1ll_BFs1c_BFu1ll, BFs1c_BFu1ll_BFs1c_BFu1ll)
//============================================================================


struct  BFs1c_BFu1ll_BFs1c_BFu1s  {
  signed char v1:1;
  __tsu64 v2:1;
  signed char v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1c_BFu1ll_BFs1c_BFu1s) C1{ Fc:1 FL:1 Fc:1 Fs:1}



static void Test_BFs1c_BFu1ll_BFs1c_BFu1s()
{
  {
    init_simple_test("BFs1c_BFu1ll_BFs1c_BFu1s");
    static STRUCT_IF_C BFs1c_BFu1ll_BFs1c_BFu1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1ll_BFs1c_BFu1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1ll_BFs1c_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1ll_BFs1c_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1ll_BFs1c_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1ll_BFs1c_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1ll_BFs1c_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1ll_BFs1c_BFu1s, BFs1c_BFu1ll_BFs1c_BFu1s)
//============================================================================


struct  BFs1c_BFu1ll_BFs1i  {
  signed char v1:1;
  __tsu64 v2:1;
  signed int v3:1;
};
//SIG(1 BFs1c_BFu1ll_BFs1i) C1{ Fc:1 FL:1 Fi:1}



static void Test_BFs1c_BFu1ll_BFs1i()
{
  {
    init_simple_test("BFs1c_BFu1ll_BFs1i");
    static STRUCT_IF_C BFs1c_BFu1ll_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1ll_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1ll_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1ll_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1ll_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1ll_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1ll_BFs1i, BFs1c_BFu1ll_BFs1i)
//============================================================================


struct  BFs1c_BFu1ll_BFs1i_BFs1c  {
  signed char v1:1;
  __tsu64 v2:1;
  signed int v3:1;
  signed char v4:1;
};
//SIG(1 BFs1c_BFu1ll_BFs1i_BFs1c) C1{ Fc:1 FL:1 Fi:1 Fc:1}



static void Test_BFs1c_BFu1ll_BFs1i_BFs1c()
{
  {
    init_simple_test("BFs1c_BFu1ll_BFs1i_BFs1c");
    static STRUCT_IF_C BFs1c_BFu1ll_BFs1i_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1ll_BFs1i_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1ll_BFs1i_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1ll_BFs1i_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1ll_BFs1i_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1ll_BFs1i_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1ll_BFs1i_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1ll_BFs1i_BFs1c, BFs1c_BFu1ll_BFs1i_BFs1c)
//============================================================================


struct  BFs1c_BFu1ll_BFs1i_BFs1i  {
  signed char v1:1;
  __tsu64 v2:1;
  signed int v3:1;
  signed int v4:1;
};
//SIG(1 BFs1c_BFu1ll_BFs1i_BFs1i) C1{ Fc:1 FL:1 Fi:1 Fi:1}



static void Test_BFs1c_BFu1ll_BFs1i_BFs1i()
{
  {
    init_simple_test("BFs1c_BFu1ll_BFs1i_BFs1i");
    static STRUCT_IF_C BFs1c_BFu1ll_BFs1i_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1ll_BFs1i_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1ll_BFs1i_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1ll_BFs1i_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1ll_BFs1i_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1ll_BFs1i_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1ll_BFs1i_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1ll_BFs1i_BFs1i, BFs1c_BFu1ll_BFs1i_BFs1i)
//============================================================================


struct  BFs1c_BFu1ll_BFs1i_BFs1ll  {
  signed char v1:1;
  __tsu64 v2:1;
  signed int v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1c_BFu1ll_BFs1i_BFs1ll) C1{ Fc:1 FL:1 Fi:1 FL:1}



static void Test_BFs1c_BFu1ll_BFs1i_BFs1ll()
{
  {
    init_simple_test("BFs1c_BFu1ll_BFs1i_BFs1ll");
    static STRUCT_IF_C BFs1c_BFu1ll_BFs1i_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1ll_BFs1i_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1ll_BFs1i_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1ll_BFs1i_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1ll_BFs1i_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1ll_BFs1i_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1ll_BFs1i_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1ll_BFs1i_BFs1ll, BFs1c_BFu1ll_BFs1i_BFs1ll)
//============================================================================


struct  BFs1c_BFu1ll_BFs1i_BFs1s  {
  signed char v1:1;
  __tsu64 v2:1;
  signed int v3:1;
  signed short v4:1;
};
//SIG(1 BFs1c_BFu1ll_BFs1i_BFs1s) C1{ Fc:1 FL:1 Fi:1 Fs:1}



static void Test_BFs1c_BFu1ll_BFs1i_BFs1s()
{
  {
    init_simple_test("BFs1c_BFu1ll_BFs1i_BFs1s");
    static STRUCT_IF_C BFs1c_BFu1ll_BFs1i_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1ll_BFs1i_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1ll_BFs1i_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1ll_BFs1i_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1ll_BFs1i_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1ll_BFs1i_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1ll_BFs1i_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1ll_BFs1i_BFs1s, BFs1c_BFu1ll_BFs1i_BFs1s)
//============================================================================


struct  BFs1c_BFu1ll_BFs1i_BFu1c  {
  signed char v1:1;
  __tsu64 v2:1;
  signed int v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1c_BFu1ll_BFs1i_BFu1c) C1{ Fc:1 FL:1 Fi:1 Fc:1}



static void Test_BFs1c_BFu1ll_BFs1i_BFu1c()
{
  {
    init_simple_test("BFs1c_BFu1ll_BFs1i_BFu1c");
    static STRUCT_IF_C BFs1c_BFu1ll_BFs1i_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1ll_BFs1i_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1ll_BFs1i_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1ll_BFs1i_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1ll_BFs1i_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1ll_BFs1i_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1ll_BFs1i_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1ll_BFs1i_BFu1c, BFs1c_BFu1ll_BFs1i_BFu1c)
//============================================================================


struct  BFs1c_BFu1ll_BFs1i_BFu1i  {
  signed char v1:1;
  __tsu64 v2:1;
  signed int v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1c_BFu1ll_BFs1i_BFu1i) C1{ Fc:1 FL:1 Fi:1 Fi:1}



static void Test_BFs1c_BFu1ll_BFs1i_BFu1i()
{
  {
    init_simple_test("BFs1c_BFu1ll_BFs1i_BFu1i");
    static STRUCT_IF_C BFs1c_BFu1ll_BFs1i_BFu1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1ll_BFs1i_BFu1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1ll_BFs1i_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1ll_BFs1i_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1ll_BFs1i_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1ll_BFs1i_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1ll_BFs1i_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1ll_BFs1i_BFu1i, BFs1c_BFu1ll_BFs1i_BFu1i)
//============================================================================


struct  BFs1c_BFu1ll_BFs1i_BFu1ll  {
  signed char v1:1;
  __tsu64 v2:1;
  signed int v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1c_BFu1ll_BFs1i_BFu1ll) C1{ Fc:1 FL:1 Fi:1 FL:1}



static void Test_BFs1c_BFu1ll_BFs1i_BFu1ll()
{
  {
    init_simple_test("BFs1c_BFu1ll_BFs1i_BFu1ll");
    static STRUCT_IF_C BFs1c_BFu1ll_BFs1i_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1ll_BFs1i_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1ll_BFs1i_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1ll_BFs1i_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1ll_BFs1i_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1ll_BFs1i_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1ll_BFs1i_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1ll_BFs1i_BFu1ll, BFs1c_BFu1ll_BFs1i_BFu1ll)
//============================================================================


struct  BFs1c_BFu1ll_BFs1i_BFu1s  {
  signed char v1:1;
  __tsu64 v2:1;
  signed int v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1c_BFu1ll_BFs1i_BFu1s) C1{ Fc:1 FL:1 Fi:1 Fs:1}



static void Test_BFs1c_BFu1ll_BFs1i_BFu1s()
{
  {
    init_simple_test("BFs1c_BFu1ll_BFs1i_BFu1s");
    static STRUCT_IF_C BFs1c_BFu1ll_BFs1i_BFu1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1ll_BFs1i_BFu1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1ll_BFs1i_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1ll_BFs1i_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1ll_BFs1i_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1ll_BFs1i_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1ll_BFs1i_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1ll_BFs1i_BFu1s, BFs1c_BFu1ll_BFs1i_BFu1s)
//============================================================================


struct  BFs1c_BFu1ll_BFs1ll  {
  signed char v1:1;
  __tsu64 v2:1;
  signed __tsi64 v3:1;
};
//SIG(1 BFs1c_BFu1ll_BFs1ll) C1{ Fc:1 FL:1 FL:1}



static void Test_BFs1c_BFu1ll_BFs1ll()
{
  {
    init_simple_test("BFs1c_BFu1ll_BFs1ll");
    static STRUCT_IF_C BFs1c_BFu1ll_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1ll_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1ll_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1ll_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1ll_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1ll_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1ll_BFs1ll, BFs1c_BFu1ll_BFs1ll)
//============================================================================


struct  BFs1c_BFu1ll_BFs1ll_BFs1c  {
  signed char v1:1;
  __tsu64 v2:1;
  signed __tsi64 v3:1;
  signed char v4:1;
};
//SIG(1 BFs1c_BFu1ll_BFs1ll_BFs1c) C1{ Fc:1 FL:1 FL:1 Fc:1}



static void Test_BFs1c_BFu1ll_BFs1ll_BFs1c()
{
  {
    init_simple_test("BFs1c_BFu1ll_BFs1ll_BFs1c");
    static STRUCT_IF_C BFs1c_BFu1ll_BFs1ll_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1ll_BFs1ll_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1ll_BFs1ll_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1ll_BFs1ll_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1ll_BFs1ll_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1ll_BFs1ll_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1ll_BFs1ll_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1ll_BFs1ll_BFs1c, BFs1c_BFu1ll_BFs1ll_BFs1c)
//============================================================================


struct  BFs1c_BFu1ll_BFs1ll_BFs1i  {
  signed char v1:1;
  __tsu64 v2:1;
  signed __tsi64 v3:1;
  signed int v4:1;
};
//SIG(1 BFs1c_BFu1ll_BFs1ll_BFs1i) C1{ Fc:1 FL:1 FL:1 Fi:1}



static void Test_BFs1c_BFu1ll_BFs1ll_BFs1i()
{
  {
    init_simple_test("BFs1c_BFu1ll_BFs1ll_BFs1i");
    static STRUCT_IF_C BFs1c_BFu1ll_BFs1ll_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1ll_BFs1ll_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1ll_BFs1ll_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1ll_BFs1ll_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1ll_BFs1ll_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1ll_BFs1ll_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1ll_BFs1ll_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1ll_BFs1ll_BFs1i, BFs1c_BFu1ll_BFs1ll_BFs1i)
//============================================================================


struct  BFs1c_BFu1ll_BFs1ll_BFs1ll  {
  signed char v1:1;
  __tsu64 v2:1;
  signed __tsi64 v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1c_BFu1ll_BFs1ll_BFs1ll) C1{ Fc:1 FL:1 FL:1 FL:1}



static void Test_BFs1c_BFu1ll_BFs1ll_BFs1ll()
{
  {
    init_simple_test("BFs1c_BFu1ll_BFs1ll_BFs1ll");
    static STRUCT_IF_C BFs1c_BFu1ll_BFs1ll_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1ll_BFs1ll_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1ll_BFs1ll_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1ll_BFs1ll_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1ll_BFs1ll_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1ll_BFs1ll_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1ll_BFs1ll_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1ll_BFs1ll_BFs1ll, BFs1c_BFu1ll_BFs1ll_BFs1ll)
//============================================================================


struct  BFs1c_BFu1ll_BFs1ll_BFs1s  {
  signed char v1:1;
  __tsu64 v2:1;
  signed __tsi64 v3:1;
  signed short v4:1;
};
//SIG(1 BFs1c_BFu1ll_BFs1ll_BFs1s) C1{ Fc:1 FL:1 FL:1 Fs:1}



static void Test_BFs1c_BFu1ll_BFs1ll_BFs1s()
{
  {
    init_simple_test("BFs1c_BFu1ll_BFs1ll_BFs1s");
    static STRUCT_IF_C BFs1c_BFu1ll_BFs1ll_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1ll_BFs1ll_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1ll_BFs1ll_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1ll_BFs1ll_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1ll_BFs1ll_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1ll_BFs1ll_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1ll_BFs1ll_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1ll_BFs1ll_BFs1s, BFs1c_BFu1ll_BFs1ll_BFs1s)
//============================================================================


struct  BFs1c_BFu1ll_BFs1ll_BFu1c  {
  signed char v1:1;
  __tsu64 v2:1;
  signed __tsi64 v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1c_BFu1ll_BFs1ll_BFu1c) C1{ Fc:1 FL:1 FL:1 Fc:1}



static void Test_BFs1c_BFu1ll_BFs1ll_BFu1c()
{
  {
    init_simple_test("BFs1c_BFu1ll_BFs1ll_BFu1c");
    static STRUCT_IF_C BFs1c_BFu1ll_BFs1ll_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1ll_BFs1ll_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1ll_BFs1ll_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1ll_BFs1ll_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1ll_BFs1ll_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1ll_BFs1ll_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1ll_BFs1ll_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1ll_BFs1ll_BFu1c, BFs1c_BFu1ll_BFs1ll_BFu1c)
//============================================================================


struct  BFs1c_BFu1ll_BFs1ll_BFu1i  {
  signed char v1:1;
  __tsu64 v2:1;
  signed __tsi64 v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1c_BFu1ll_BFs1ll_BFu1i) C1{ Fc:1 FL:1 FL:1 Fi:1}



static void Test_BFs1c_BFu1ll_BFs1ll_BFu1i()
{
  {
    init_simple_test("BFs1c_BFu1ll_BFs1ll_BFu1i");
    static STRUCT_IF_C BFs1c_BFu1ll_BFs1ll_BFu1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1ll_BFs1ll_BFu1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1ll_BFs1ll_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1ll_BFs1ll_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1ll_BFs1ll_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1ll_BFs1ll_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1ll_BFs1ll_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1ll_BFs1ll_BFu1i, BFs1c_BFu1ll_BFs1ll_BFu1i)
//============================================================================


struct  BFs1c_BFu1ll_BFs1ll_BFu1ll  {
  signed char v1:1;
  __tsu64 v2:1;
  signed __tsi64 v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1c_BFu1ll_BFs1ll_BFu1ll) C1{ Fc:1 FL:1 FL:1 FL:1}



static void Test_BFs1c_BFu1ll_BFs1ll_BFu1ll()
{
  {
    init_simple_test("BFs1c_BFu1ll_BFs1ll_BFu1ll");
    static STRUCT_IF_C BFs1c_BFu1ll_BFs1ll_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1ll_BFs1ll_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1ll_BFs1ll_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1ll_BFs1ll_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1ll_BFs1ll_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1ll_BFs1ll_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1ll_BFs1ll_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1ll_BFs1ll_BFu1ll, BFs1c_BFu1ll_BFs1ll_BFu1ll)
//============================================================================


struct  BFs1c_BFu1ll_BFs1ll_BFu1s  {
  signed char v1:1;
  __tsu64 v2:1;
  signed __tsi64 v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1c_BFu1ll_BFs1ll_BFu1s) C1{ Fc:1 FL:1 FL:1 Fs:1}



static void Test_BFs1c_BFu1ll_BFs1ll_BFu1s()
{
  {
    init_simple_test("BFs1c_BFu1ll_BFs1ll_BFu1s");
    static STRUCT_IF_C BFs1c_BFu1ll_BFs1ll_BFu1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1ll_BFs1ll_BFu1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1ll_BFs1ll_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1ll_BFs1ll_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1ll_BFs1ll_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1ll_BFs1ll_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1ll_BFs1ll_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1ll_BFs1ll_BFu1s, BFs1c_BFu1ll_BFs1ll_BFu1s)
//============================================================================


struct  BFs1c_BFu1ll_BFs1s  {
  signed char v1:1;
  __tsu64 v2:1;
  signed short v3:1;
};
//SIG(1 BFs1c_BFu1ll_BFs1s) C1{ Fc:1 FL:1 Fs:1}



static void Test_BFs1c_BFu1ll_BFs1s()
{
  {
    init_simple_test("BFs1c_BFu1ll_BFs1s");
    static STRUCT_IF_C BFs1c_BFu1ll_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1ll_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1ll_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1ll_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1ll_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1ll_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1ll_BFs1s, BFs1c_BFu1ll_BFs1s)
//============================================================================


struct  BFs1c_BFu1ll_BFs1s_BFs1c  {
  signed char v1:1;
  __tsu64 v2:1;
  signed short v3:1;
  signed char v4:1;
};
//SIG(1 BFs1c_BFu1ll_BFs1s_BFs1c) C1{ Fc:1 FL:1 Fs:1 Fc:1}



static void Test_BFs1c_BFu1ll_BFs1s_BFs1c()
{
  {
    init_simple_test("BFs1c_BFu1ll_BFs1s_BFs1c");
    static STRUCT_IF_C BFs1c_BFu1ll_BFs1s_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1ll_BFs1s_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1ll_BFs1s_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1ll_BFs1s_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1ll_BFs1s_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1ll_BFs1s_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1ll_BFs1s_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1ll_BFs1s_BFs1c, BFs1c_BFu1ll_BFs1s_BFs1c)
//============================================================================


struct  BFs1c_BFu1ll_BFs1s_BFs1i  {
  signed char v1:1;
  __tsu64 v2:1;
  signed short v3:1;
  signed int v4:1;
};
//SIG(1 BFs1c_BFu1ll_BFs1s_BFs1i) C1{ Fc:1 FL:1 Fs:1 Fi:1}



static void Test_BFs1c_BFu1ll_BFs1s_BFs1i()
{
  {
    init_simple_test("BFs1c_BFu1ll_BFs1s_BFs1i");
    static STRUCT_IF_C BFs1c_BFu1ll_BFs1s_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1ll_BFs1s_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1ll_BFs1s_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1ll_BFs1s_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1ll_BFs1s_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1ll_BFs1s_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1ll_BFs1s_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1ll_BFs1s_BFs1i, BFs1c_BFu1ll_BFs1s_BFs1i)
//============================================================================


struct  BFs1c_BFu1ll_BFs1s_BFs1ll  {
  signed char v1:1;
  __tsu64 v2:1;
  signed short v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1c_BFu1ll_BFs1s_BFs1ll) C1{ Fc:1 FL:1 Fs:1 FL:1}



static void Test_BFs1c_BFu1ll_BFs1s_BFs1ll()
{
  {
    init_simple_test("BFs1c_BFu1ll_BFs1s_BFs1ll");
    static STRUCT_IF_C BFs1c_BFu1ll_BFs1s_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1ll_BFs1s_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1ll_BFs1s_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1ll_BFs1s_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1ll_BFs1s_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1ll_BFs1s_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1ll_BFs1s_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1ll_BFs1s_BFs1ll, BFs1c_BFu1ll_BFs1s_BFs1ll)
//============================================================================


struct  BFs1c_BFu1ll_BFs1s_BFs1s  {
  signed char v1:1;
  __tsu64 v2:1;
  signed short v3:1;
  signed short v4:1;
};
//SIG(1 BFs1c_BFu1ll_BFs1s_BFs1s) C1{ Fc:1 FL:1 Fs:1 Fs:1}



static void Test_BFs1c_BFu1ll_BFs1s_BFs1s()
{
  {
    init_simple_test("BFs1c_BFu1ll_BFs1s_BFs1s");
    static STRUCT_IF_C BFs1c_BFu1ll_BFs1s_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1ll_BFs1s_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1ll_BFs1s_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1ll_BFs1s_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1ll_BFs1s_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1ll_BFs1s_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1ll_BFs1s_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1ll_BFs1s_BFs1s, BFs1c_BFu1ll_BFs1s_BFs1s)
//============================================================================


struct  BFs1c_BFu1ll_BFs1s_BFu1c  {
  signed char v1:1;
  __tsu64 v2:1;
  signed short v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1c_BFu1ll_BFs1s_BFu1c) C1{ Fc:1 FL:1 Fs:1 Fc:1}



static void Test_BFs1c_BFu1ll_BFs1s_BFu1c()
{
  {
    init_simple_test("BFs1c_BFu1ll_BFs1s_BFu1c");
    static STRUCT_IF_C BFs1c_BFu1ll_BFs1s_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1ll_BFs1s_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1ll_BFs1s_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1ll_BFs1s_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1ll_BFs1s_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1ll_BFs1s_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1ll_BFs1s_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1ll_BFs1s_BFu1c, BFs1c_BFu1ll_BFs1s_BFu1c)
//============================================================================


struct  BFs1c_BFu1ll_BFs1s_BFu1i  {
  signed char v1:1;
  __tsu64 v2:1;
  signed short v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1c_BFu1ll_BFs1s_BFu1i) C1{ Fc:1 FL:1 Fs:1 Fi:1}



static void Test_BFs1c_BFu1ll_BFs1s_BFu1i()
{
  {
    init_simple_test("BFs1c_BFu1ll_BFs1s_BFu1i");
    static STRUCT_IF_C BFs1c_BFu1ll_BFs1s_BFu1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1ll_BFs1s_BFu1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1ll_BFs1s_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1ll_BFs1s_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1ll_BFs1s_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1ll_BFs1s_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1ll_BFs1s_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1ll_BFs1s_BFu1i, BFs1c_BFu1ll_BFs1s_BFu1i)
//============================================================================


struct  BFs1c_BFu1ll_BFs1s_BFu1ll  {
  signed char v1:1;
  __tsu64 v2:1;
  signed short v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1c_BFu1ll_BFs1s_BFu1ll) C1{ Fc:1 FL:1 Fs:1 FL:1}



static void Test_BFs1c_BFu1ll_BFs1s_BFu1ll()
{
  {
    init_simple_test("BFs1c_BFu1ll_BFs1s_BFu1ll");
    static STRUCT_IF_C BFs1c_BFu1ll_BFs1s_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1ll_BFs1s_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1ll_BFs1s_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1ll_BFs1s_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1ll_BFs1s_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1ll_BFs1s_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1ll_BFs1s_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1ll_BFs1s_BFu1ll, BFs1c_BFu1ll_BFs1s_BFu1ll)
//============================================================================


struct  BFs1c_BFu1ll_BFs1s_BFu1s  {
  signed char v1:1;
  __tsu64 v2:1;
  signed short v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1c_BFu1ll_BFs1s_BFu1s) C1{ Fc:1 FL:1 Fs:1 Fs:1}



static void Test_BFs1c_BFu1ll_BFs1s_BFu1s()
{
  {
    init_simple_test("BFs1c_BFu1ll_BFs1s_BFu1s");
    static STRUCT_IF_C BFs1c_BFu1ll_BFs1s_BFu1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1ll_BFs1s_BFu1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1ll_BFs1s_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1ll_BFs1s_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1ll_BFs1s_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1ll_BFs1s_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1ll_BFs1s_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1ll_BFs1s_BFu1s, BFs1c_BFu1ll_BFs1s_BFu1s)
//============================================================================


struct  BFs1c_BFu1ll_BFu1c  {
  signed char v1:1;
  __tsu64 v2:1;
  unsigned char v3:1;
};
//SIG(1 BFs1c_BFu1ll_BFu1c) C1{ Fc:1 FL:1 Fc:1}



static void Test_BFs1c_BFu1ll_BFu1c()
{
  {
    init_simple_test("BFs1c_BFu1ll_BFu1c");
    static STRUCT_IF_C BFs1c_BFu1ll_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1ll_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1ll_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1ll_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1ll_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1ll_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1ll_BFu1c, BFs1c_BFu1ll_BFu1c)
//============================================================================


struct  BFs1c_BFu1ll_BFu1c_BFs1c  {
  signed char v1:1;
  __tsu64 v2:1;
  unsigned char v3:1;
  signed char v4:1;
};
//SIG(1 BFs1c_BFu1ll_BFu1c_BFs1c) C1{ Fc:1 FL:1 Fc:1 Fc:1}



static void Test_BFs1c_BFu1ll_BFu1c_BFs1c()
{
  {
    init_simple_test("BFs1c_BFu1ll_BFu1c_BFs1c");
    static STRUCT_IF_C BFs1c_BFu1ll_BFu1c_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1ll_BFu1c_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1ll_BFu1c_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1ll_BFu1c_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1ll_BFu1c_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1ll_BFu1c_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1ll_BFu1c_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1ll_BFu1c_BFs1c, BFs1c_BFu1ll_BFu1c_BFs1c)
//============================================================================


struct  BFs1c_BFu1ll_BFu1c_BFs1i  {
  signed char v1:1;
  __tsu64 v2:1;
  unsigned char v3:1;
  signed int v4:1;
};
//SIG(1 BFs1c_BFu1ll_BFu1c_BFs1i) C1{ Fc:1 FL:1 Fc:1 Fi:1}



static void Test_BFs1c_BFu1ll_BFu1c_BFs1i()
{
  {
    init_simple_test("BFs1c_BFu1ll_BFu1c_BFs1i");
    static STRUCT_IF_C BFs1c_BFu1ll_BFu1c_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1ll_BFu1c_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1ll_BFu1c_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1ll_BFu1c_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1ll_BFu1c_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1ll_BFu1c_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1ll_BFu1c_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1ll_BFu1c_BFs1i, BFs1c_BFu1ll_BFu1c_BFs1i)
//============================================================================


struct  BFs1c_BFu1ll_BFu1c_BFs1ll  {
  signed char v1:1;
  __tsu64 v2:1;
  unsigned char v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1c_BFu1ll_BFu1c_BFs1ll) C1{ Fc:1 FL:1 Fc:1 FL:1}



static void Test_BFs1c_BFu1ll_BFu1c_BFs1ll()
{
  {
    init_simple_test("BFs1c_BFu1ll_BFu1c_BFs1ll");
    static STRUCT_IF_C BFs1c_BFu1ll_BFu1c_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1ll_BFu1c_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1ll_BFu1c_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1ll_BFu1c_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1ll_BFu1c_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1ll_BFu1c_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1ll_BFu1c_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1ll_BFu1c_BFs1ll, BFs1c_BFu1ll_BFu1c_BFs1ll)
//============================================================================


struct  BFs1c_BFu1ll_BFu1c_BFs1s  {
  signed char v1:1;
  __tsu64 v2:1;
  unsigned char v3:1;
  signed short v4:1;
};
//SIG(1 BFs1c_BFu1ll_BFu1c_BFs1s) C1{ Fc:1 FL:1 Fc:1 Fs:1}



static void Test_BFs1c_BFu1ll_BFu1c_BFs1s()
{
  {
    init_simple_test("BFs1c_BFu1ll_BFu1c_BFs1s");
    static STRUCT_IF_C BFs1c_BFu1ll_BFu1c_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1ll_BFu1c_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1ll_BFu1c_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1ll_BFu1c_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1ll_BFu1c_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1ll_BFu1c_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1ll_BFu1c_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1ll_BFu1c_BFs1s, BFs1c_BFu1ll_BFu1c_BFs1s)
//============================================================================


struct  BFs1c_BFu1ll_BFu1c_BFu1c  {
  signed char v1:1;
  __tsu64 v2:1;
  unsigned char v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1c_BFu1ll_BFu1c_BFu1c) C1{ Fc:1 FL:1 Fc:1 Fc:1}



static void Test_BFs1c_BFu1ll_BFu1c_BFu1c()
{
  {
    init_simple_test("BFs1c_BFu1ll_BFu1c_BFu1c");
    static STRUCT_IF_C BFs1c_BFu1ll_BFu1c_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1ll_BFu1c_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1ll_BFu1c_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1ll_BFu1c_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1ll_BFu1c_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1ll_BFu1c_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1ll_BFu1c_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1ll_BFu1c_BFu1c, BFs1c_BFu1ll_BFu1c_BFu1c)
//============================================================================


struct  BFs1c_BFu1ll_BFu1c_BFu1i  {
  signed char v1:1;
  __tsu64 v2:1;
  unsigned char v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1c_BFu1ll_BFu1c_BFu1i) C1{ Fc:1 FL:1 Fc:1 Fi:1}



static void Test_BFs1c_BFu1ll_BFu1c_BFu1i()
{
  {
    init_simple_test("BFs1c_BFu1ll_BFu1c_BFu1i");
    static STRUCT_IF_C BFs1c_BFu1ll_BFu1c_BFu1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1ll_BFu1c_BFu1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1ll_BFu1c_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1ll_BFu1c_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1ll_BFu1c_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1ll_BFu1c_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1ll_BFu1c_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1ll_BFu1c_BFu1i, BFs1c_BFu1ll_BFu1c_BFu1i)
//============================================================================


struct  BFs1c_BFu1ll_BFu1c_BFu1ll  {
  signed char v1:1;
  __tsu64 v2:1;
  unsigned char v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1c_BFu1ll_BFu1c_BFu1ll) C1{ Fc:1 FL:1 Fc:1 FL:1}



static void Test_BFs1c_BFu1ll_BFu1c_BFu1ll()
{
  {
    init_simple_test("BFs1c_BFu1ll_BFu1c_BFu1ll");
    static STRUCT_IF_C BFs1c_BFu1ll_BFu1c_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1ll_BFu1c_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1ll_BFu1c_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1ll_BFu1c_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1ll_BFu1c_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1ll_BFu1c_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1ll_BFu1c_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1ll_BFu1c_BFu1ll, BFs1c_BFu1ll_BFu1c_BFu1ll)
//============================================================================


struct  BFs1c_BFu1ll_BFu1c_BFu1s  {
  signed char v1:1;
  __tsu64 v2:1;
  unsigned char v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1c_BFu1ll_BFu1c_BFu1s) C1{ Fc:1 FL:1 Fc:1 Fs:1}



static void Test_BFs1c_BFu1ll_BFu1c_BFu1s()
{
  {
    init_simple_test("BFs1c_BFu1ll_BFu1c_BFu1s");
    static STRUCT_IF_C BFs1c_BFu1ll_BFu1c_BFu1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1ll_BFu1c_BFu1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1ll_BFu1c_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1ll_BFu1c_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1ll_BFu1c_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1ll_BFu1c_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1ll_BFu1c_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1ll_BFu1c_BFu1s, BFs1c_BFu1ll_BFu1c_BFu1s)
//============================================================================


struct  BFs1c_BFu1ll_BFu1i  {
  signed char v1:1;
  __tsu64 v2:1;
  unsigned int v3:1;
};
//SIG(1 BFs1c_BFu1ll_BFu1i) C1{ Fc:1 FL:1 Fi:1}



static void Test_BFs1c_BFu1ll_BFu1i()
{
  {
    init_simple_test("BFs1c_BFu1ll_BFu1i");
    static STRUCT_IF_C BFs1c_BFu1ll_BFu1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1ll_BFu1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1ll_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1ll_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1ll_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1ll_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1ll_BFu1i, BFs1c_BFu1ll_BFu1i)
//============================================================================


struct  BFs1c_BFu1ll_BFu1i_BFs1c  {
  signed char v1:1;
  __tsu64 v2:1;
  unsigned int v3:1;
  signed char v4:1;
};
//SIG(1 BFs1c_BFu1ll_BFu1i_BFs1c) C1{ Fc:1 FL:1 Fi:1 Fc:1}



static void Test_BFs1c_BFu1ll_BFu1i_BFs1c()
{
  {
    init_simple_test("BFs1c_BFu1ll_BFu1i_BFs1c");
    static STRUCT_IF_C BFs1c_BFu1ll_BFu1i_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1ll_BFu1i_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1ll_BFu1i_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1ll_BFu1i_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1ll_BFu1i_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1ll_BFu1i_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1ll_BFu1i_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1ll_BFu1i_BFs1c, BFs1c_BFu1ll_BFu1i_BFs1c)
//============================================================================


struct  BFs1c_BFu1ll_BFu1i_BFs1i  {
  signed char v1:1;
  __tsu64 v2:1;
  unsigned int v3:1;
  signed int v4:1;
};
//SIG(1 BFs1c_BFu1ll_BFu1i_BFs1i) C1{ Fc:1 FL:1 Fi:1 Fi:1}



static void Test_BFs1c_BFu1ll_BFu1i_BFs1i()
{
  {
    init_simple_test("BFs1c_BFu1ll_BFu1i_BFs1i");
    static STRUCT_IF_C BFs1c_BFu1ll_BFu1i_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1ll_BFu1i_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1ll_BFu1i_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1ll_BFu1i_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1ll_BFu1i_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1ll_BFu1i_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1ll_BFu1i_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1ll_BFu1i_BFs1i, BFs1c_BFu1ll_BFu1i_BFs1i)
//============================================================================


struct  BFs1c_BFu1ll_BFu1i_BFs1ll  {
  signed char v1:1;
  __tsu64 v2:1;
  unsigned int v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1c_BFu1ll_BFu1i_BFs1ll) C1{ Fc:1 FL:1 Fi:1 FL:1}



static void Test_BFs1c_BFu1ll_BFu1i_BFs1ll()
{
  {
    init_simple_test("BFs1c_BFu1ll_BFu1i_BFs1ll");
    static STRUCT_IF_C BFs1c_BFu1ll_BFu1i_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1ll_BFu1i_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1ll_BFu1i_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1ll_BFu1i_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1ll_BFu1i_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1ll_BFu1i_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1ll_BFu1i_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1ll_BFu1i_BFs1ll, BFs1c_BFu1ll_BFu1i_BFs1ll)
//============================================================================


struct  BFs1c_BFu1ll_BFu1i_BFs1s  {
  signed char v1:1;
  __tsu64 v2:1;
  unsigned int v3:1;
  signed short v4:1;
};
//SIG(1 BFs1c_BFu1ll_BFu1i_BFs1s) C1{ Fc:1 FL:1 Fi:1 Fs:1}



static void Test_BFs1c_BFu1ll_BFu1i_BFs1s()
{
  {
    init_simple_test("BFs1c_BFu1ll_BFu1i_BFs1s");
    static STRUCT_IF_C BFs1c_BFu1ll_BFu1i_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1ll_BFu1i_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1ll_BFu1i_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1ll_BFu1i_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1ll_BFu1i_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1ll_BFu1i_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1ll_BFu1i_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1ll_BFu1i_BFs1s, BFs1c_BFu1ll_BFu1i_BFs1s)
//============================================================================


struct  BFs1c_BFu1ll_BFu1i_BFu1c  {
  signed char v1:1;
  __tsu64 v2:1;
  unsigned int v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1c_BFu1ll_BFu1i_BFu1c) C1{ Fc:1 FL:1 Fi:1 Fc:1}



static void Test_BFs1c_BFu1ll_BFu1i_BFu1c()
{
  {
    init_simple_test("BFs1c_BFu1ll_BFu1i_BFu1c");
    static STRUCT_IF_C BFs1c_BFu1ll_BFu1i_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1ll_BFu1i_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1ll_BFu1i_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1ll_BFu1i_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1ll_BFu1i_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1ll_BFu1i_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1ll_BFu1i_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1ll_BFu1i_BFu1c, BFs1c_BFu1ll_BFu1i_BFu1c)
//============================================================================


struct  BFs1c_BFu1ll_BFu1i_BFu1i  {
  signed char v1:1;
  __tsu64 v2:1;
  unsigned int v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1c_BFu1ll_BFu1i_BFu1i) C1{ Fc:1 FL:1 Fi:1 Fi:1}



static void Test_BFs1c_BFu1ll_BFu1i_BFu1i()
{
  {
    init_simple_test("BFs1c_BFu1ll_BFu1i_BFu1i");
    static STRUCT_IF_C BFs1c_BFu1ll_BFu1i_BFu1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1ll_BFu1i_BFu1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1ll_BFu1i_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1ll_BFu1i_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1ll_BFu1i_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1ll_BFu1i_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1ll_BFu1i_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1ll_BFu1i_BFu1i, BFs1c_BFu1ll_BFu1i_BFu1i)
//============================================================================


struct  BFs1c_BFu1ll_BFu1i_BFu1ll  {
  signed char v1:1;
  __tsu64 v2:1;
  unsigned int v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1c_BFu1ll_BFu1i_BFu1ll) C1{ Fc:1 FL:1 Fi:1 FL:1}



static void Test_BFs1c_BFu1ll_BFu1i_BFu1ll()
{
  {
    init_simple_test("BFs1c_BFu1ll_BFu1i_BFu1ll");
    static STRUCT_IF_C BFs1c_BFu1ll_BFu1i_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1ll_BFu1i_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1ll_BFu1i_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1ll_BFu1i_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1ll_BFu1i_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1ll_BFu1i_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1ll_BFu1i_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1ll_BFu1i_BFu1ll, BFs1c_BFu1ll_BFu1i_BFu1ll)
//============================================================================


struct  BFs1c_BFu1ll_BFu1i_BFu1s  {
  signed char v1:1;
  __tsu64 v2:1;
  unsigned int v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1c_BFu1ll_BFu1i_BFu1s) C1{ Fc:1 FL:1 Fi:1 Fs:1}



static void Test_BFs1c_BFu1ll_BFu1i_BFu1s()
{
  {
    init_simple_test("BFs1c_BFu1ll_BFu1i_BFu1s");
    static STRUCT_IF_C BFs1c_BFu1ll_BFu1i_BFu1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1ll_BFu1i_BFu1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1ll_BFu1i_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1ll_BFu1i_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1ll_BFu1i_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1ll_BFu1i_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1ll_BFu1i_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1ll_BFu1i_BFu1s, BFs1c_BFu1ll_BFu1i_BFu1s)
//============================================================================


struct  BFs1c_BFu1ll_BFu1ll  {
  signed char v1:1;
  __tsu64 v2:1;
  __tsu64 v3:1;
};
//SIG(1 BFs1c_BFu1ll_BFu1ll) C1{ Fc:1 FL:1 FL:1}



static void Test_BFs1c_BFu1ll_BFu1ll()
{
  {
    init_simple_test("BFs1c_BFu1ll_BFu1ll");
    static STRUCT_IF_C BFs1c_BFu1ll_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1ll_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1ll_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1ll_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1ll_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1ll_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1ll_BFu1ll, BFs1c_BFu1ll_BFu1ll)
//============================================================================


struct  BFs1c_BFu1ll_BFu1ll_BFs1c  {
  signed char v1:1;
  __tsu64 v2:1;
  __tsu64 v3:1;
  signed char v4:1;
};
//SIG(1 BFs1c_BFu1ll_BFu1ll_BFs1c) C1{ Fc:1 FL:1 FL:1 Fc:1}



static void Test_BFs1c_BFu1ll_BFu1ll_BFs1c()
{
  {
    init_simple_test("BFs1c_BFu1ll_BFu1ll_BFs1c");
    static STRUCT_IF_C BFs1c_BFu1ll_BFu1ll_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1ll_BFu1ll_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1ll_BFu1ll_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1ll_BFu1ll_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1ll_BFu1ll_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1ll_BFu1ll_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1ll_BFu1ll_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1ll_BFu1ll_BFs1c, BFs1c_BFu1ll_BFu1ll_BFs1c)
//============================================================================


struct  BFs1c_BFu1ll_BFu1ll_BFs1i  {
  signed char v1:1;
  __tsu64 v2:1;
  __tsu64 v3:1;
  signed int v4:1;
};
//SIG(1 BFs1c_BFu1ll_BFu1ll_BFs1i) C1{ Fc:1 FL:1 FL:1 Fi:1}



static void Test_BFs1c_BFu1ll_BFu1ll_BFs1i()
{
  {
    init_simple_test("BFs1c_BFu1ll_BFu1ll_BFs1i");
    static STRUCT_IF_C BFs1c_BFu1ll_BFu1ll_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1ll_BFu1ll_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1ll_BFu1ll_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1ll_BFu1ll_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1ll_BFu1ll_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1ll_BFu1ll_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1ll_BFu1ll_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1ll_BFu1ll_BFs1i, BFs1c_BFu1ll_BFu1ll_BFs1i)
//============================================================================


struct  BFs1c_BFu1ll_BFu1ll_BFs1ll  {
  signed char v1:1;
  __tsu64 v2:1;
  __tsu64 v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1c_BFu1ll_BFu1ll_BFs1ll) C1{ Fc:1 FL:1 FL:1 FL:1}



static void Test_BFs1c_BFu1ll_BFu1ll_BFs1ll()
{
  {
    init_simple_test("BFs1c_BFu1ll_BFu1ll_BFs1ll");
    static STRUCT_IF_C BFs1c_BFu1ll_BFu1ll_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1ll_BFu1ll_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1ll_BFu1ll_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1ll_BFu1ll_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1ll_BFu1ll_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1ll_BFu1ll_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1ll_BFu1ll_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1ll_BFu1ll_BFs1ll, BFs1c_BFu1ll_BFu1ll_BFs1ll)
//============================================================================


struct  BFs1c_BFu1ll_BFu1ll_BFs1s  {
  signed char v1:1;
  __tsu64 v2:1;
  __tsu64 v3:1;
  signed short v4:1;
};
//SIG(1 BFs1c_BFu1ll_BFu1ll_BFs1s) C1{ Fc:1 FL:1 FL:1 Fs:1}



static void Test_BFs1c_BFu1ll_BFu1ll_BFs1s()
{
  {
    init_simple_test("BFs1c_BFu1ll_BFu1ll_BFs1s");
    static STRUCT_IF_C BFs1c_BFu1ll_BFu1ll_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1ll_BFu1ll_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1ll_BFu1ll_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1ll_BFu1ll_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1ll_BFu1ll_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1ll_BFu1ll_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1ll_BFu1ll_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1ll_BFu1ll_BFs1s, BFs1c_BFu1ll_BFu1ll_BFs1s)
//============================================================================


struct  BFs1c_BFu1ll_BFu1ll_BFu1c  {
  signed char v1:1;
  __tsu64 v2:1;
  __tsu64 v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1c_BFu1ll_BFu1ll_BFu1c) C1{ Fc:1 FL:1 FL:1 Fc:1}



static void Test_BFs1c_BFu1ll_BFu1ll_BFu1c()
{
  {
    init_simple_test("BFs1c_BFu1ll_BFu1ll_BFu1c");
    static STRUCT_IF_C BFs1c_BFu1ll_BFu1ll_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1ll_BFu1ll_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1ll_BFu1ll_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1ll_BFu1ll_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1ll_BFu1ll_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1ll_BFu1ll_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1ll_BFu1ll_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1ll_BFu1ll_BFu1c, BFs1c_BFu1ll_BFu1ll_BFu1c)
//============================================================================


struct  BFs1c_BFu1ll_BFu1ll_BFu1i  {
  signed char v1:1;
  __tsu64 v2:1;
  __tsu64 v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1c_BFu1ll_BFu1ll_BFu1i) C1{ Fc:1 FL:1 FL:1 Fi:1}



static void Test_BFs1c_BFu1ll_BFu1ll_BFu1i()
{
  {
    init_simple_test("BFs1c_BFu1ll_BFu1ll_BFu1i");
    static STRUCT_IF_C BFs1c_BFu1ll_BFu1ll_BFu1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1ll_BFu1ll_BFu1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1ll_BFu1ll_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1ll_BFu1ll_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1ll_BFu1ll_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1ll_BFu1ll_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1ll_BFu1ll_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1ll_BFu1ll_BFu1i, BFs1c_BFu1ll_BFu1ll_BFu1i)
//============================================================================


struct  BFs1c_BFu1ll_BFu1ll_BFu1ll  {
  signed char v1:1;
  __tsu64 v2:1;
  __tsu64 v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1c_BFu1ll_BFu1ll_BFu1ll) C1{ Fc:1 FL:1 FL:1 FL:1}



static void Test_BFs1c_BFu1ll_BFu1ll_BFu1ll()
{
  {
    init_simple_test("BFs1c_BFu1ll_BFu1ll_BFu1ll");
    static STRUCT_IF_C BFs1c_BFu1ll_BFu1ll_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1ll_BFu1ll_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1ll_BFu1ll_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1ll_BFu1ll_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1ll_BFu1ll_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1ll_BFu1ll_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1ll_BFu1ll_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1ll_BFu1ll_BFu1ll, BFs1c_BFu1ll_BFu1ll_BFu1ll)
//============================================================================


struct  BFs1c_BFu1ll_BFu1ll_BFu1s  {
  signed char v1:1;
  __tsu64 v2:1;
  __tsu64 v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1c_BFu1ll_BFu1ll_BFu1s) C1{ Fc:1 FL:1 FL:1 Fs:1}



static void Test_BFs1c_BFu1ll_BFu1ll_BFu1s()
{
  {
    init_simple_test("BFs1c_BFu1ll_BFu1ll_BFu1s");
    static STRUCT_IF_C BFs1c_BFu1ll_BFu1ll_BFu1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1ll_BFu1ll_BFu1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1ll_BFu1ll_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1ll_BFu1ll_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1ll_BFu1ll_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1ll_BFu1ll_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1ll_BFu1ll_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1ll_BFu1ll_BFu1s, BFs1c_BFu1ll_BFu1ll_BFu1s)
//============================================================================


struct  BFs1c_BFu1ll_BFu1s  {
  signed char v1:1;
  __tsu64 v2:1;
  unsigned short v3:1;
};
//SIG(1 BFs1c_BFu1ll_BFu1s) C1{ Fc:1 FL:1 Fs:1}



static void Test_BFs1c_BFu1ll_BFu1s()
{
  {
    init_simple_test("BFs1c_BFu1ll_BFu1s");
    static STRUCT_IF_C BFs1c_BFu1ll_BFu1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1ll_BFu1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1ll_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1ll_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1ll_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1ll_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1ll_BFu1s, BFs1c_BFu1ll_BFu1s)
//============================================================================


struct  BFs1c_BFu1ll_BFu1s_BFs1c  {
  signed char v1:1;
  __tsu64 v2:1;
  unsigned short v3:1;
  signed char v4:1;
};
//SIG(1 BFs1c_BFu1ll_BFu1s_BFs1c) C1{ Fc:1 FL:1 Fs:1 Fc:1}



static void Test_BFs1c_BFu1ll_BFu1s_BFs1c()
{
  {
    init_simple_test("BFs1c_BFu1ll_BFu1s_BFs1c");
    static STRUCT_IF_C BFs1c_BFu1ll_BFu1s_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1ll_BFu1s_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1ll_BFu1s_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1ll_BFu1s_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1ll_BFu1s_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1ll_BFu1s_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1ll_BFu1s_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1ll_BFu1s_BFs1c, BFs1c_BFu1ll_BFu1s_BFs1c)
//============================================================================


struct  BFs1c_BFu1ll_BFu1s_BFs1i  {
  signed char v1:1;
  __tsu64 v2:1;
  unsigned short v3:1;
  signed int v4:1;
};
//SIG(1 BFs1c_BFu1ll_BFu1s_BFs1i) C1{ Fc:1 FL:1 Fs:1 Fi:1}



static void Test_BFs1c_BFu1ll_BFu1s_BFs1i()
{
  {
    init_simple_test("BFs1c_BFu1ll_BFu1s_BFs1i");
    static STRUCT_IF_C BFs1c_BFu1ll_BFu1s_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1ll_BFu1s_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1ll_BFu1s_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1ll_BFu1s_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1ll_BFu1s_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1ll_BFu1s_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1ll_BFu1s_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1ll_BFu1s_BFs1i, BFs1c_BFu1ll_BFu1s_BFs1i)
//============================================================================


struct  BFs1c_BFu1ll_BFu1s_BFs1ll  {
  signed char v1:1;
  __tsu64 v2:1;
  unsigned short v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1c_BFu1ll_BFu1s_BFs1ll) C1{ Fc:1 FL:1 Fs:1 FL:1}



static void Test_BFs1c_BFu1ll_BFu1s_BFs1ll()
{
  {
    init_simple_test("BFs1c_BFu1ll_BFu1s_BFs1ll");
    static STRUCT_IF_C BFs1c_BFu1ll_BFu1s_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1ll_BFu1s_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1ll_BFu1s_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1ll_BFu1s_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1ll_BFu1s_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1ll_BFu1s_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1ll_BFu1s_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1ll_BFu1s_BFs1ll, BFs1c_BFu1ll_BFu1s_BFs1ll)
//============================================================================


struct  BFs1c_BFu1ll_BFu1s_BFs1s  {
  signed char v1:1;
  __tsu64 v2:1;
  unsigned short v3:1;
  signed short v4:1;
};
//SIG(1 BFs1c_BFu1ll_BFu1s_BFs1s) C1{ Fc:1 FL:1 Fs:1 Fs:1}



static void Test_BFs1c_BFu1ll_BFu1s_BFs1s()
{
  {
    init_simple_test("BFs1c_BFu1ll_BFu1s_BFs1s");
    static STRUCT_IF_C BFs1c_BFu1ll_BFu1s_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1ll_BFu1s_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1ll_BFu1s_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1ll_BFu1s_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1ll_BFu1s_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1ll_BFu1s_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1ll_BFu1s_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1ll_BFu1s_BFs1s, BFs1c_BFu1ll_BFu1s_BFs1s)
//============================================================================


struct  BFs1c_BFu1ll_BFu1s_BFu1c  {
  signed char v1:1;
  __tsu64 v2:1;
  unsigned short v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1c_BFu1ll_BFu1s_BFu1c) C1{ Fc:1 FL:1 Fs:1 Fc:1}



static void Test_BFs1c_BFu1ll_BFu1s_BFu1c()
{
  {
    init_simple_test("BFs1c_BFu1ll_BFu1s_BFu1c");
    static STRUCT_IF_C BFs1c_BFu1ll_BFu1s_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1ll_BFu1s_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1ll_BFu1s_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1ll_BFu1s_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1ll_BFu1s_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1ll_BFu1s_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1ll_BFu1s_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1ll_BFu1s_BFu1c, BFs1c_BFu1ll_BFu1s_BFu1c)
//============================================================================


struct  BFs1c_BFu1ll_BFu1s_BFu1i  {
  signed char v1:1;
  __tsu64 v2:1;
  unsigned short v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1c_BFu1ll_BFu1s_BFu1i) C1{ Fc:1 FL:1 Fs:1 Fi:1}



static void Test_BFs1c_BFu1ll_BFu1s_BFu1i()
{
  {
    init_simple_test("BFs1c_BFu1ll_BFu1s_BFu1i");
    static STRUCT_IF_C BFs1c_BFu1ll_BFu1s_BFu1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1ll_BFu1s_BFu1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1ll_BFu1s_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1ll_BFu1s_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1ll_BFu1s_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1ll_BFu1s_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1ll_BFu1s_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1ll_BFu1s_BFu1i, BFs1c_BFu1ll_BFu1s_BFu1i)
//============================================================================


struct  BFs1c_BFu1ll_BFu1s_BFu1ll  {
  signed char v1:1;
  __tsu64 v2:1;
  unsigned short v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1c_BFu1ll_BFu1s_BFu1ll) C1{ Fc:1 FL:1 Fs:1 FL:1}



static void Test_BFs1c_BFu1ll_BFu1s_BFu1ll()
{
  {
    init_simple_test("BFs1c_BFu1ll_BFu1s_BFu1ll");
    static STRUCT_IF_C BFs1c_BFu1ll_BFu1s_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1ll_BFu1s_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1ll_BFu1s_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1ll_BFu1s_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1ll_BFu1s_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1ll_BFu1s_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1ll_BFu1s_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1ll_BFu1s_BFu1ll, BFs1c_BFu1ll_BFu1s_BFu1ll)
//============================================================================


struct  BFs1c_BFu1ll_BFu1s_BFu1s  {
  signed char v1:1;
  __tsu64 v2:1;
  unsigned short v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1c_BFu1ll_BFu1s_BFu1s) C1{ Fc:1 FL:1 Fs:1 Fs:1}



static void Test_BFs1c_BFu1ll_BFu1s_BFu1s()
{
  {
    init_simple_test("BFs1c_BFu1ll_BFu1s_BFu1s");
    static STRUCT_IF_C BFs1c_BFu1ll_BFu1s_BFu1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1ll_BFu1s_BFu1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1ll_BFu1s_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1ll_BFu1s_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1ll_BFu1s_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1ll_BFu1s_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1ll_BFu1s_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1ll_BFu1s_BFu1s, BFs1c_BFu1ll_BFu1s_BFu1s)
//============================================================================


struct  BFs1c_BFu1s  {
  signed char v1:1;
  unsigned short v2:1;
};
//SIG(1 BFs1c_BFu1s) C1{ Fc:1 Fs:1}



static void Test_BFs1c_BFu1s()
{
  {
    init_simple_test("BFs1c_BFu1s");
    static STRUCT_IF_C BFs1c_BFu1s lv;
    check2(sizeof(lv), 2, "sizeof(BFs1c_BFu1s)");
    check2(__alignof__(lv), 2, "__alignof__(BFs1c_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1s, BFs1c_BFu1s)
//============================================================================


struct  BFs1c_BFu1s_BFs1c  {
  signed char v1:1;
  unsigned short v2:1;
  signed char v3:1;
};
//SIG(1 BFs1c_BFu1s_BFs1c) C1{ Fc:1 Fs:1 Fc:1}



static void Test_BFs1c_BFu1s_BFs1c()
{
  {
    init_simple_test("BFs1c_BFu1s_BFs1c");
    static STRUCT_IF_C BFs1c_BFu1s_BFs1c lv;
    check2(sizeof(lv), 2, "sizeof(BFs1c_BFu1s_BFs1c)");
    check2(__alignof__(lv), 2, "__alignof__(BFs1c_BFu1s_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1s_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1s_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1s_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1s_BFs1c, BFs1c_BFu1s_BFs1c)
//============================================================================


struct  BFs1c_BFu1s_BFs1c_BFs1c  {
  signed char v1:1;
  unsigned short v2:1;
  signed char v3:1;
  signed char v4:1;
};
//SIG(1 BFs1c_BFu1s_BFs1c_BFs1c) C1{ Fc:1 Fs:1 Fc:1 Fc:1}



static void Test_BFs1c_BFu1s_BFs1c_BFs1c()
{
  {
    init_simple_test("BFs1c_BFu1s_BFs1c_BFs1c");
    static STRUCT_IF_C BFs1c_BFu1s_BFs1c_BFs1c lv;
    check2(sizeof(lv), 2, "sizeof(BFs1c_BFu1s_BFs1c_BFs1c)");
    check2(__alignof__(lv), 2, "__alignof__(BFs1c_BFu1s_BFs1c_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1s_BFs1c_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1s_BFs1c_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1s_BFs1c_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1s_BFs1c_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1s_BFs1c_BFs1c, BFs1c_BFu1s_BFs1c_BFs1c)
//============================================================================


struct  BFs1c_BFu1s_BFs1c_BFs1i  {
  signed char v1:1;
  unsigned short v2:1;
  signed char v3:1;
  signed int v4:1;
};
//SIG(1 BFs1c_BFu1s_BFs1c_BFs1i) C1{ Fc:1 Fs:1 Fc:1 Fi:1}



static void Test_BFs1c_BFu1s_BFs1c_BFs1i()
{
  {
    init_simple_test("BFs1c_BFu1s_BFs1c_BFs1i");
    static STRUCT_IF_C BFs1c_BFu1s_BFs1c_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1s_BFs1c_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1s_BFs1c_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1s_BFs1c_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1s_BFs1c_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1s_BFs1c_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1s_BFs1c_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1s_BFs1c_BFs1i, BFs1c_BFu1s_BFs1c_BFs1i)
//============================================================================


struct  BFs1c_BFu1s_BFs1c_BFs1ll  {
  signed char v1:1;
  unsigned short v2:1;
  signed char v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1c_BFu1s_BFs1c_BFs1ll) C1{ Fc:1 Fs:1 Fc:1 FL:1}



static void Test_BFs1c_BFu1s_BFs1c_BFs1ll()
{
  {
    init_simple_test("BFs1c_BFu1s_BFs1c_BFs1ll");
    static STRUCT_IF_C BFs1c_BFu1s_BFs1c_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1s_BFs1c_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1s_BFs1c_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1s_BFs1c_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1s_BFs1c_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1s_BFs1c_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1s_BFs1c_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1s_BFs1c_BFs1ll, BFs1c_BFu1s_BFs1c_BFs1ll)
//============================================================================


struct  BFs1c_BFu1s_BFs1c_BFs1s  {
  signed char v1:1;
  unsigned short v2:1;
  signed char v3:1;
  signed short v4:1;
};
//SIG(1 BFs1c_BFu1s_BFs1c_BFs1s) C1{ Fc:1 Fs:1 Fc:1 Fs:1}



static void Test_BFs1c_BFu1s_BFs1c_BFs1s()
{
  {
    init_simple_test("BFs1c_BFu1s_BFs1c_BFs1s");
    static STRUCT_IF_C BFs1c_BFu1s_BFs1c_BFs1s lv;
    check2(sizeof(lv), 2, "sizeof(BFs1c_BFu1s_BFs1c_BFs1s)");
    check2(__alignof__(lv), 2, "__alignof__(BFs1c_BFu1s_BFs1c_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1s_BFs1c_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1s_BFs1c_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1s_BFs1c_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1s_BFs1c_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1s_BFs1c_BFs1s, BFs1c_BFu1s_BFs1c_BFs1s)
//============================================================================


struct  BFs1c_BFu1s_BFs1c_BFu1c  {
  signed char v1:1;
  unsigned short v2:1;
  signed char v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1c_BFu1s_BFs1c_BFu1c) C1{ Fc:1 Fs:1 Fc:1 Fc:1}



static void Test_BFs1c_BFu1s_BFs1c_BFu1c()
{
  {
    init_simple_test("BFs1c_BFu1s_BFs1c_BFu1c");
    static STRUCT_IF_C BFs1c_BFu1s_BFs1c_BFu1c lv;
    check2(sizeof(lv), 2, "sizeof(BFs1c_BFu1s_BFs1c_BFu1c)");
    check2(__alignof__(lv), 2, "__alignof__(BFs1c_BFu1s_BFs1c_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1s_BFs1c_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1s_BFs1c_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1s_BFs1c_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1s_BFs1c_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1s_BFs1c_BFu1c, BFs1c_BFu1s_BFs1c_BFu1c)
//============================================================================


struct  BFs1c_BFu1s_BFs1c_BFu1i  {
  signed char v1:1;
  unsigned short v2:1;
  signed char v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1c_BFu1s_BFs1c_BFu1i) C1{ Fc:1 Fs:1 Fc:1 Fi:1}



static void Test_BFs1c_BFu1s_BFs1c_BFu1i()
{
  {
    init_simple_test("BFs1c_BFu1s_BFs1c_BFu1i");
    static STRUCT_IF_C BFs1c_BFu1s_BFs1c_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1s_BFs1c_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1s_BFs1c_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1s_BFs1c_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1s_BFs1c_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1s_BFs1c_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1s_BFs1c_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1s_BFs1c_BFu1i, BFs1c_BFu1s_BFs1c_BFu1i)
//============================================================================


struct  BFs1c_BFu1s_BFs1c_BFu1ll  {
  signed char v1:1;
  unsigned short v2:1;
  signed char v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1c_BFu1s_BFs1c_BFu1ll) C1{ Fc:1 Fs:1 Fc:1 FL:1}



static void Test_BFs1c_BFu1s_BFs1c_BFu1ll()
{
  {
    init_simple_test("BFs1c_BFu1s_BFs1c_BFu1ll");
    static STRUCT_IF_C BFs1c_BFu1s_BFs1c_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1s_BFs1c_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1s_BFs1c_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1s_BFs1c_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1s_BFs1c_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1s_BFs1c_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1s_BFs1c_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1s_BFs1c_BFu1ll, BFs1c_BFu1s_BFs1c_BFu1ll)
//============================================================================


struct  BFs1c_BFu1s_BFs1c_BFu1s  {
  signed char v1:1;
  unsigned short v2:1;
  signed char v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1c_BFu1s_BFs1c_BFu1s) C1{ Fc:1 Fs:1 Fc:1 Fs:1}



static void Test_BFs1c_BFu1s_BFs1c_BFu1s()
{
  {
    init_simple_test("BFs1c_BFu1s_BFs1c_BFu1s");
    static STRUCT_IF_C BFs1c_BFu1s_BFs1c_BFu1s lv;
    check2(sizeof(lv), 2, "sizeof(BFs1c_BFu1s_BFs1c_BFu1s)");
    check2(__alignof__(lv), 2, "__alignof__(BFs1c_BFu1s_BFs1c_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1s_BFs1c_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1s_BFs1c_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1s_BFs1c_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1s_BFs1c_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1s_BFs1c_BFu1s, BFs1c_BFu1s_BFs1c_BFu1s)
//============================================================================


struct  BFs1c_BFu1s_BFs1i  {
  signed char v1:1;
  unsigned short v2:1;
  signed int v3:1;
};
//SIG(1 BFs1c_BFu1s_BFs1i) C1{ Fc:1 Fs:1 Fi:1}



static void Test_BFs1c_BFu1s_BFs1i()
{
  {
    init_simple_test("BFs1c_BFu1s_BFs1i");
    static STRUCT_IF_C BFs1c_BFu1s_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1s_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1s_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1s_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1s_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1s_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1s_BFs1i, BFs1c_BFu1s_BFs1i)
//============================================================================


struct  BFs1c_BFu1s_BFs1i_BFs1c  {
  signed char v1:1;
  unsigned short v2:1;
  signed int v3:1;
  signed char v4:1;
};
//SIG(1 BFs1c_BFu1s_BFs1i_BFs1c) C1{ Fc:1 Fs:1 Fi:1 Fc:1}



static void Test_BFs1c_BFu1s_BFs1i_BFs1c()
{
  {
    init_simple_test("BFs1c_BFu1s_BFs1i_BFs1c");
    static STRUCT_IF_C BFs1c_BFu1s_BFs1i_BFs1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1s_BFs1i_BFs1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1s_BFs1i_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1s_BFs1i_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1s_BFs1i_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1s_BFs1i_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1s_BFs1i_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1s_BFs1i_BFs1c, BFs1c_BFu1s_BFs1i_BFs1c)
//============================================================================


struct  BFs1c_BFu1s_BFs1i_BFs1i  {
  signed char v1:1;
  unsigned short v2:1;
  signed int v3:1;
  signed int v4:1;
};
//SIG(1 BFs1c_BFu1s_BFs1i_BFs1i) C1{ Fc:1 Fs:1 Fi:1 Fi:1}



static void Test_BFs1c_BFu1s_BFs1i_BFs1i()
{
  {
    init_simple_test("BFs1c_BFu1s_BFs1i_BFs1i");
    static STRUCT_IF_C BFs1c_BFu1s_BFs1i_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1s_BFs1i_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1s_BFs1i_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1s_BFs1i_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1s_BFs1i_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1s_BFs1i_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1s_BFs1i_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1s_BFs1i_BFs1i, BFs1c_BFu1s_BFs1i_BFs1i)
//============================================================================


struct  BFs1c_BFu1s_BFs1i_BFs1ll  {
  signed char v1:1;
  unsigned short v2:1;
  signed int v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1c_BFu1s_BFs1i_BFs1ll) C1{ Fc:1 Fs:1 Fi:1 FL:1}



static void Test_BFs1c_BFu1s_BFs1i_BFs1ll()
{
  {
    init_simple_test("BFs1c_BFu1s_BFs1i_BFs1ll");
    static STRUCT_IF_C BFs1c_BFu1s_BFs1i_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1s_BFs1i_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1s_BFs1i_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1s_BFs1i_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1s_BFs1i_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1s_BFs1i_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1s_BFs1i_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1s_BFs1i_BFs1ll, BFs1c_BFu1s_BFs1i_BFs1ll)
//============================================================================


struct  BFs1c_BFu1s_BFs1i_BFs1s  {
  signed char v1:1;
  unsigned short v2:1;
  signed int v3:1;
  signed short v4:1;
};
//SIG(1 BFs1c_BFu1s_BFs1i_BFs1s) C1{ Fc:1 Fs:1 Fi:1 Fs:1}



static void Test_BFs1c_BFu1s_BFs1i_BFs1s()
{
  {
    init_simple_test("BFs1c_BFu1s_BFs1i_BFs1s");
    static STRUCT_IF_C BFs1c_BFu1s_BFs1i_BFs1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1s_BFs1i_BFs1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1s_BFs1i_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1s_BFs1i_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1s_BFs1i_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1s_BFs1i_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1s_BFs1i_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1s_BFs1i_BFs1s, BFs1c_BFu1s_BFs1i_BFs1s)
//============================================================================


struct  BFs1c_BFu1s_BFs1i_BFu1c  {
  signed char v1:1;
  unsigned short v2:1;
  signed int v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1c_BFu1s_BFs1i_BFu1c) C1{ Fc:1 Fs:1 Fi:1 Fc:1}



static void Test_BFs1c_BFu1s_BFs1i_BFu1c()
{
  {
    init_simple_test("BFs1c_BFu1s_BFs1i_BFu1c");
    static STRUCT_IF_C BFs1c_BFu1s_BFs1i_BFu1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1s_BFs1i_BFu1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1s_BFs1i_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1s_BFs1i_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1s_BFs1i_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1s_BFs1i_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1s_BFs1i_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1s_BFs1i_BFu1c, BFs1c_BFu1s_BFs1i_BFu1c)
//============================================================================


struct  BFs1c_BFu1s_BFs1i_BFu1i  {
  signed char v1:1;
  unsigned short v2:1;
  signed int v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1c_BFu1s_BFs1i_BFu1i) C1{ Fc:1 Fs:1 Fi:1 Fi:1}



static void Test_BFs1c_BFu1s_BFs1i_BFu1i()
{
  {
    init_simple_test("BFs1c_BFu1s_BFs1i_BFu1i");
    static STRUCT_IF_C BFs1c_BFu1s_BFs1i_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1s_BFs1i_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1s_BFs1i_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1s_BFs1i_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1s_BFs1i_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1s_BFs1i_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1s_BFs1i_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1s_BFs1i_BFu1i, BFs1c_BFu1s_BFs1i_BFu1i)
//============================================================================


struct  BFs1c_BFu1s_BFs1i_BFu1ll  {
  signed char v1:1;
  unsigned short v2:1;
  signed int v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1c_BFu1s_BFs1i_BFu1ll) C1{ Fc:1 Fs:1 Fi:1 FL:1}



static void Test_BFs1c_BFu1s_BFs1i_BFu1ll()
{
  {
    init_simple_test("BFs1c_BFu1s_BFs1i_BFu1ll");
    static STRUCT_IF_C BFs1c_BFu1s_BFs1i_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1s_BFs1i_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1s_BFs1i_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1s_BFs1i_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1s_BFs1i_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1s_BFs1i_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1s_BFs1i_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1s_BFs1i_BFu1ll, BFs1c_BFu1s_BFs1i_BFu1ll)
//============================================================================


struct  BFs1c_BFu1s_BFs1i_BFu1s  {
  signed char v1:1;
  unsigned short v2:1;
  signed int v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1c_BFu1s_BFs1i_BFu1s) C1{ Fc:1 Fs:1 Fi:1 Fs:1}



static void Test_BFs1c_BFu1s_BFs1i_BFu1s()
{
  {
    init_simple_test("BFs1c_BFu1s_BFs1i_BFu1s");
    static STRUCT_IF_C BFs1c_BFu1s_BFs1i_BFu1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1s_BFs1i_BFu1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1s_BFs1i_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1s_BFs1i_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1s_BFs1i_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1s_BFs1i_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1s_BFs1i_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1s_BFs1i_BFu1s, BFs1c_BFu1s_BFs1i_BFu1s)
//============================================================================


struct  BFs1c_BFu1s_BFs1ll  {
  signed char v1:1;
  unsigned short v2:1;
  signed __tsi64 v3:1;
};
//SIG(1 BFs1c_BFu1s_BFs1ll) C1{ Fc:1 Fs:1 FL:1}



static void Test_BFs1c_BFu1s_BFs1ll()
{
  {
    init_simple_test("BFs1c_BFu1s_BFs1ll");
    static STRUCT_IF_C BFs1c_BFu1s_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1s_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1s_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1s_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1s_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1s_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1s_BFs1ll, BFs1c_BFu1s_BFs1ll)
//============================================================================


struct  BFs1c_BFu1s_BFs1ll_BFs1c  {
  signed char v1:1;
  unsigned short v2:1;
  signed __tsi64 v3:1;
  signed char v4:1;
};
//SIG(1 BFs1c_BFu1s_BFs1ll_BFs1c) C1{ Fc:1 Fs:1 FL:1 Fc:1}



static void Test_BFs1c_BFu1s_BFs1ll_BFs1c()
{
  {
    init_simple_test("BFs1c_BFu1s_BFs1ll_BFs1c");
    static STRUCT_IF_C BFs1c_BFu1s_BFs1ll_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1s_BFs1ll_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1s_BFs1ll_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1s_BFs1ll_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1s_BFs1ll_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1s_BFs1ll_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1s_BFs1ll_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1s_BFs1ll_BFs1c, BFs1c_BFu1s_BFs1ll_BFs1c)
//============================================================================


struct  BFs1c_BFu1s_BFs1ll_BFs1i  {
  signed char v1:1;
  unsigned short v2:1;
  signed __tsi64 v3:1;
  signed int v4:1;
};
//SIG(1 BFs1c_BFu1s_BFs1ll_BFs1i) C1{ Fc:1 Fs:1 FL:1 Fi:1}



static void Test_BFs1c_BFu1s_BFs1ll_BFs1i()
{
  {
    init_simple_test("BFs1c_BFu1s_BFs1ll_BFs1i");
    static STRUCT_IF_C BFs1c_BFu1s_BFs1ll_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1s_BFs1ll_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1s_BFs1ll_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1s_BFs1ll_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1s_BFs1ll_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1s_BFs1ll_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1s_BFs1ll_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1s_BFs1ll_BFs1i, BFs1c_BFu1s_BFs1ll_BFs1i)
//============================================================================


struct  BFs1c_BFu1s_BFs1ll_BFs1ll  {
  signed char v1:1;
  unsigned short v2:1;
  signed __tsi64 v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1c_BFu1s_BFs1ll_BFs1ll) C1{ Fc:1 Fs:1 FL:1 FL:1}



static void Test_BFs1c_BFu1s_BFs1ll_BFs1ll()
{
  {
    init_simple_test("BFs1c_BFu1s_BFs1ll_BFs1ll");
    static STRUCT_IF_C BFs1c_BFu1s_BFs1ll_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1s_BFs1ll_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1s_BFs1ll_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1s_BFs1ll_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1s_BFs1ll_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1s_BFs1ll_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1s_BFs1ll_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1s_BFs1ll_BFs1ll, BFs1c_BFu1s_BFs1ll_BFs1ll)
//============================================================================


struct  BFs1c_BFu1s_BFs1ll_BFs1s  {
  signed char v1:1;
  unsigned short v2:1;
  signed __tsi64 v3:1;
  signed short v4:1;
};
//SIG(1 BFs1c_BFu1s_BFs1ll_BFs1s) C1{ Fc:1 Fs:1 FL:1 Fs:1}



static void Test_BFs1c_BFu1s_BFs1ll_BFs1s()
{
  {
    init_simple_test("BFs1c_BFu1s_BFs1ll_BFs1s");
    static STRUCT_IF_C BFs1c_BFu1s_BFs1ll_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1s_BFs1ll_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1s_BFs1ll_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1s_BFs1ll_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1s_BFs1ll_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1s_BFs1ll_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1s_BFs1ll_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1s_BFs1ll_BFs1s, BFs1c_BFu1s_BFs1ll_BFs1s)
//============================================================================


struct  BFs1c_BFu1s_BFs1ll_BFu1c  {
  signed char v1:1;
  unsigned short v2:1;
  signed __tsi64 v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1c_BFu1s_BFs1ll_BFu1c) C1{ Fc:1 Fs:1 FL:1 Fc:1}



static void Test_BFs1c_BFu1s_BFs1ll_BFu1c()
{
  {
    init_simple_test("BFs1c_BFu1s_BFs1ll_BFu1c");
    static STRUCT_IF_C BFs1c_BFu1s_BFs1ll_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1s_BFs1ll_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1s_BFs1ll_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1s_BFs1ll_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1s_BFs1ll_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1s_BFs1ll_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1s_BFs1ll_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1s_BFs1ll_BFu1c, BFs1c_BFu1s_BFs1ll_BFu1c)
//============================================================================


struct  BFs1c_BFu1s_BFs1ll_BFu1i  {
  signed char v1:1;
  unsigned short v2:1;
  signed __tsi64 v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1c_BFu1s_BFs1ll_BFu1i) C1{ Fc:1 Fs:1 FL:1 Fi:1}



static void Test_BFs1c_BFu1s_BFs1ll_BFu1i()
{
  {
    init_simple_test("BFs1c_BFu1s_BFs1ll_BFu1i");
    static STRUCT_IF_C BFs1c_BFu1s_BFs1ll_BFu1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1s_BFs1ll_BFu1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1s_BFs1ll_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1s_BFs1ll_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1s_BFs1ll_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1s_BFs1ll_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1s_BFs1ll_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1s_BFs1ll_BFu1i, BFs1c_BFu1s_BFs1ll_BFu1i)
//============================================================================


struct  BFs1c_BFu1s_BFs1ll_BFu1ll  {
  signed char v1:1;
  unsigned short v2:1;
  signed __tsi64 v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1c_BFu1s_BFs1ll_BFu1ll) C1{ Fc:1 Fs:1 FL:1 FL:1}



static void Test_BFs1c_BFu1s_BFs1ll_BFu1ll()
{
  {
    init_simple_test("BFs1c_BFu1s_BFs1ll_BFu1ll");
    static STRUCT_IF_C BFs1c_BFu1s_BFs1ll_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1s_BFs1ll_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1s_BFs1ll_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1s_BFs1ll_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1s_BFs1ll_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1s_BFs1ll_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1s_BFs1ll_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1s_BFs1ll_BFu1ll, BFs1c_BFu1s_BFs1ll_BFu1ll)
//============================================================================


struct  BFs1c_BFu1s_BFs1ll_BFu1s  {
  signed char v1:1;
  unsigned short v2:1;
  signed __tsi64 v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1c_BFu1s_BFs1ll_BFu1s) C1{ Fc:1 Fs:1 FL:1 Fs:1}



static void Test_BFs1c_BFu1s_BFs1ll_BFu1s()
{
  {
    init_simple_test("BFs1c_BFu1s_BFs1ll_BFu1s");
    static STRUCT_IF_C BFs1c_BFu1s_BFs1ll_BFu1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1s_BFs1ll_BFu1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1s_BFs1ll_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1s_BFs1ll_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1s_BFs1ll_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1s_BFs1ll_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1s_BFs1ll_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1s_BFs1ll_BFu1s, BFs1c_BFu1s_BFs1ll_BFu1s)
//============================================================================


struct  BFs1c_BFu1s_BFs1s  {
  signed char v1:1;
  unsigned short v2:1;
  signed short v3:1;
};
//SIG(1 BFs1c_BFu1s_BFs1s) C1{ Fc:1 Fs:1 Fs:1}



static void Test_BFs1c_BFu1s_BFs1s()
{
  {
    init_simple_test("BFs1c_BFu1s_BFs1s");
    static STRUCT_IF_C BFs1c_BFu1s_BFs1s lv;
    check2(sizeof(lv), 2, "sizeof(BFs1c_BFu1s_BFs1s)");
    check2(__alignof__(lv), 2, "__alignof__(BFs1c_BFu1s_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1s_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1s_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1s_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1s_BFs1s, BFs1c_BFu1s_BFs1s)
//============================================================================


struct  BFs1c_BFu1s_BFs1s_BFs1c  {
  signed char v1:1;
  unsigned short v2:1;
  signed short v3:1;
  signed char v4:1;
};
//SIG(1 BFs1c_BFu1s_BFs1s_BFs1c) C1{ Fc:1 Fs:1 Fs:1 Fc:1}



static void Test_BFs1c_BFu1s_BFs1s_BFs1c()
{
  {
    init_simple_test("BFs1c_BFu1s_BFs1s_BFs1c");
    static STRUCT_IF_C BFs1c_BFu1s_BFs1s_BFs1c lv;
    check2(sizeof(lv), 2, "sizeof(BFs1c_BFu1s_BFs1s_BFs1c)");
    check2(__alignof__(lv), 2, "__alignof__(BFs1c_BFu1s_BFs1s_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1s_BFs1s_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1s_BFs1s_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1s_BFs1s_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1s_BFs1s_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1s_BFs1s_BFs1c, BFs1c_BFu1s_BFs1s_BFs1c)
//============================================================================


struct  BFs1c_BFu1s_BFs1s_BFs1i  {
  signed char v1:1;
  unsigned short v2:1;
  signed short v3:1;
  signed int v4:1;
};
//SIG(1 BFs1c_BFu1s_BFs1s_BFs1i) C1{ Fc:1 Fs:1 Fs:1 Fi:1}



static void Test_BFs1c_BFu1s_BFs1s_BFs1i()
{
  {
    init_simple_test("BFs1c_BFu1s_BFs1s_BFs1i");
    static STRUCT_IF_C BFs1c_BFu1s_BFs1s_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1s_BFs1s_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1s_BFs1s_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1s_BFs1s_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1s_BFs1s_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1s_BFs1s_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1s_BFs1s_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1s_BFs1s_BFs1i, BFs1c_BFu1s_BFs1s_BFs1i)
//============================================================================


struct  BFs1c_BFu1s_BFs1s_BFs1ll  {
  signed char v1:1;
  unsigned short v2:1;
  signed short v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1c_BFu1s_BFs1s_BFs1ll) C1{ Fc:1 Fs:1 Fs:1 FL:1}



static void Test_BFs1c_BFu1s_BFs1s_BFs1ll()
{
  {
    init_simple_test("BFs1c_BFu1s_BFs1s_BFs1ll");
    static STRUCT_IF_C BFs1c_BFu1s_BFs1s_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1s_BFs1s_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1s_BFs1s_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1s_BFs1s_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1s_BFs1s_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1s_BFs1s_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1s_BFs1s_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1s_BFs1s_BFs1ll, BFs1c_BFu1s_BFs1s_BFs1ll)
//============================================================================


struct  BFs1c_BFu1s_BFs1s_BFs1s  {
  signed char v1:1;
  unsigned short v2:1;
  signed short v3:1;
  signed short v4:1;
};
//SIG(1 BFs1c_BFu1s_BFs1s_BFs1s) C1{ Fc:1 Fs:1 Fs:1 Fs:1}



static void Test_BFs1c_BFu1s_BFs1s_BFs1s()
{
  {
    init_simple_test("BFs1c_BFu1s_BFs1s_BFs1s");
    static STRUCT_IF_C BFs1c_BFu1s_BFs1s_BFs1s lv;
    check2(sizeof(lv), 2, "sizeof(BFs1c_BFu1s_BFs1s_BFs1s)");
    check2(__alignof__(lv), 2, "__alignof__(BFs1c_BFu1s_BFs1s_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1s_BFs1s_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1s_BFs1s_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1s_BFs1s_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1s_BFs1s_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1s_BFs1s_BFs1s, BFs1c_BFu1s_BFs1s_BFs1s)
//============================================================================


struct  BFs1c_BFu1s_BFs1s_BFu1c  {
  signed char v1:1;
  unsigned short v2:1;
  signed short v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1c_BFu1s_BFs1s_BFu1c) C1{ Fc:1 Fs:1 Fs:1 Fc:1}



static void Test_BFs1c_BFu1s_BFs1s_BFu1c()
{
  {
    init_simple_test("BFs1c_BFu1s_BFs1s_BFu1c");
    static STRUCT_IF_C BFs1c_BFu1s_BFs1s_BFu1c lv;
    check2(sizeof(lv), 2, "sizeof(BFs1c_BFu1s_BFs1s_BFu1c)");
    check2(__alignof__(lv), 2, "__alignof__(BFs1c_BFu1s_BFs1s_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1s_BFs1s_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1s_BFs1s_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1s_BFs1s_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1s_BFs1s_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1s_BFs1s_BFu1c, BFs1c_BFu1s_BFs1s_BFu1c)
//============================================================================


struct  BFs1c_BFu1s_BFs1s_BFu1i  {
  signed char v1:1;
  unsigned short v2:1;
  signed short v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1c_BFu1s_BFs1s_BFu1i) C1{ Fc:1 Fs:1 Fs:1 Fi:1}



static void Test_BFs1c_BFu1s_BFs1s_BFu1i()
{
  {
    init_simple_test("BFs1c_BFu1s_BFs1s_BFu1i");
    static STRUCT_IF_C BFs1c_BFu1s_BFs1s_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1s_BFs1s_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1s_BFs1s_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1s_BFs1s_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1s_BFs1s_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1s_BFs1s_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1s_BFs1s_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1s_BFs1s_BFu1i, BFs1c_BFu1s_BFs1s_BFu1i)
//============================================================================


struct  BFs1c_BFu1s_BFs1s_BFu1ll  {
  signed char v1:1;
  unsigned short v2:1;
  signed short v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1c_BFu1s_BFs1s_BFu1ll) C1{ Fc:1 Fs:1 Fs:1 FL:1}



static void Test_BFs1c_BFu1s_BFs1s_BFu1ll()
{
  {
    init_simple_test("BFs1c_BFu1s_BFs1s_BFu1ll");
    static STRUCT_IF_C BFs1c_BFu1s_BFs1s_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1s_BFs1s_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1s_BFs1s_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1s_BFs1s_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1s_BFs1s_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1s_BFs1s_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1s_BFs1s_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1s_BFs1s_BFu1ll, BFs1c_BFu1s_BFs1s_BFu1ll)
//============================================================================


struct  BFs1c_BFu1s_BFs1s_BFu1s  {
  signed char v1:1;
  unsigned short v2:1;
  signed short v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1c_BFu1s_BFs1s_BFu1s) C1{ Fc:1 Fs:1 Fs:1 Fs:1}



static void Test_BFs1c_BFu1s_BFs1s_BFu1s()
{
  {
    init_simple_test("BFs1c_BFu1s_BFs1s_BFu1s");
    static STRUCT_IF_C BFs1c_BFu1s_BFs1s_BFu1s lv;
    check2(sizeof(lv), 2, "sizeof(BFs1c_BFu1s_BFs1s_BFu1s)");
    check2(__alignof__(lv), 2, "__alignof__(BFs1c_BFu1s_BFs1s_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1s_BFs1s_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1s_BFs1s_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1c_BFu1s_BFs1s_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1s_BFs1s_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1s_BFs1s_BFu1s, BFs1c_BFu1s_BFs1s_BFu1s)
//============================================================================


struct  BFs1c_BFu1s_BFu1c  {
  signed char v1:1;
  unsigned short v2:1;
  unsigned char v3:1;
};
//SIG(1 BFs1c_BFu1s_BFu1c) C1{ Fc:1 Fs:1 Fc:1}



static void Test_BFs1c_BFu1s_BFu1c()
{
  {
    init_simple_test("BFs1c_BFu1s_BFu1c");
    static STRUCT_IF_C BFs1c_BFu1s_BFu1c lv;
    check2(sizeof(lv), 2, "sizeof(BFs1c_BFu1s_BFu1c)");
    check2(__alignof__(lv), 2, "__alignof__(BFs1c_BFu1s_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1s_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1s_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1s_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1s_BFu1c, BFs1c_BFu1s_BFu1c)
//============================================================================


struct  BFs1c_BFu1s_BFu1c_BFs1c  {
  signed char v1:1;
  unsigned short v2:1;
  unsigned char v3:1;
  signed char v4:1;
};
//SIG(1 BFs1c_BFu1s_BFu1c_BFs1c) C1{ Fc:1 Fs:1 Fc:1 Fc:1}



static void Test_BFs1c_BFu1s_BFu1c_BFs1c()
{
  {
    init_simple_test("BFs1c_BFu1s_BFu1c_BFs1c");
    static STRUCT_IF_C BFs1c_BFu1s_BFu1c_BFs1c lv;
    check2(sizeof(lv), 2, "sizeof(BFs1c_BFu1s_BFu1c_BFs1c)");
    check2(__alignof__(lv), 2, "__alignof__(BFs1c_BFu1s_BFu1c_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1s_BFu1c_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1s_BFu1c_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1s_BFu1c_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1s_BFu1c_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1s_BFu1c_BFs1c, BFs1c_BFu1s_BFu1c_BFs1c)
//============================================================================


struct  BFs1c_BFu1s_BFu1c_BFs1i  {
  signed char v1:1;
  unsigned short v2:1;
  unsigned char v3:1;
  signed int v4:1;
};
//SIG(1 BFs1c_BFu1s_BFu1c_BFs1i) C1{ Fc:1 Fs:1 Fc:1 Fi:1}



static void Test_BFs1c_BFu1s_BFu1c_BFs1i()
{
  {
    init_simple_test("BFs1c_BFu1s_BFu1c_BFs1i");
    static STRUCT_IF_C BFs1c_BFu1s_BFu1c_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1s_BFu1c_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1s_BFu1c_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1s_BFu1c_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1s_BFu1c_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1s_BFu1c_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1s_BFu1c_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1s_BFu1c_BFs1i, BFs1c_BFu1s_BFu1c_BFs1i)
//============================================================================


struct  BFs1c_BFu1s_BFu1c_BFs1ll  {
  signed char v1:1;
  unsigned short v2:1;
  unsigned char v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1c_BFu1s_BFu1c_BFs1ll) C1{ Fc:1 Fs:1 Fc:1 FL:1}



static void Test_BFs1c_BFu1s_BFu1c_BFs1ll()
{
  {
    init_simple_test("BFs1c_BFu1s_BFu1c_BFs1ll");
    static STRUCT_IF_C BFs1c_BFu1s_BFu1c_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1s_BFu1c_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1s_BFu1c_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1s_BFu1c_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1s_BFu1c_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1s_BFu1c_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1s_BFu1c_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1s_BFu1c_BFs1ll, BFs1c_BFu1s_BFu1c_BFs1ll)
//============================================================================


struct  BFs1c_BFu1s_BFu1c_BFs1s  {
  signed char v1:1;
  unsigned short v2:1;
  unsigned char v3:1;
  signed short v4:1;
};
//SIG(1 BFs1c_BFu1s_BFu1c_BFs1s) C1{ Fc:1 Fs:1 Fc:1 Fs:1}



static void Test_BFs1c_BFu1s_BFu1c_BFs1s()
{
  {
    init_simple_test("BFs1c_BFu1s_BFu1c_BFs1s");
    static STRUCT_IF_C BFs1c_BFu1s_BFu1c_BFs1s lv;
    check2(sizeof(lv), 2, "sizeof(BFs1c_BFu1s_BFu1c_BFs1s)");
    check2(__alignof__(lv), 2, "__alignof__(BFs1c_BFu1s_BFu1c_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1s_BFu1c_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1s_BFu1c_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1s_BFu1c_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1s_BFu1c_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1s_BFu1c_BFs1s, BFs1c_BFu1s_BFu1c_BFs1s)
//============================================================================


struct  BFs1c_BFu1s_BFu1c_BFu1c  {
  signed char v1:1;
  unsigned short v2:1;
  unsigned char v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1c_BFu1s_BFu1c_BFu1c) C1{ Fc:1 Fs:1 Fc:1 Fc:1}



static void Test_BFs1c_BFu1s_BFu1c_BFu1c()
{
  {
    init_simple_test("BFs1c_BFu1s_BFu1c_BFu1c");
    static STRUCT_IF_C BFs1c_BFu1s_BFu1c_BFu1c lv;
    check2(sizeof(lv), 2, "sizeof(BFs1c_BFu1s_BFu1c_BFu1c)");
    check2(__alignof__(lv), 2, "__alignof__(BFs1c_BFu1s_BFu1c_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1s_BFu1c_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1s_BFu1c_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1s_BFu1c_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1s_BFu1c_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1s_BFu1c_BFu1c, BFs1c_BFu1s_BFu1c_BFu1c)
//============================================================================


struct  BFs1c_BFu1s_BFu1c_BFu1i  {
  signed char v1:1;
  unsigned short v2:1;
  unsigned char v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1c_BFu1s_BFu1c_BFu1i) C1{ Fc:1 Fs:1 Fc:1 Fi:1}



static void Test_BFs1c_BFu1s_BFu1c_BFu1i()
{
  {
    init_simple_test("BFs1c_BFu1s_BFu1c_BFu1i");
    static STRUCT_IF_C BFs1c_BFu1s_BFu1c_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1s_BFu1c_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1s_BFu1c_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1s_BFu1c_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1s_BFu1c_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1s_BFu1c_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1s_BFu1c_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1s_BFu1c_BFu1i, BFs1c_BFu1s_BFu1c_BFu1i)
//============================================================================


struct  BFs1c_BFu1s_BFu1c_BFu1ll  {
  signed char v1:1;
  unsigned short v2:1;
  unsigned char v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1c_BFu1s_BFu1c_BFu1ll) C1{ Fc:1 Fs:1 Fc:1 FL:1}



static void Test_BFs1c_BFu1s_BFu1c_BFu1ll()
{
  {
    init_simple_test("BFs1c_BFu1s_BFu1c_BFu1ll");
    static STRUCT_IF_C BFs1c_BFu1s_BFu1c_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1s_BFu1c_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1s_BFu1c_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1s_BFu1c_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1s_BFu1c_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1s_BFu1c_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1s_BFu1c_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1s_BFu1c_BFu1ll, BFs1c_BFu1s_BFu1c_BFu1ll)
//============================================================================


struct  BFs1c_BFu1s_BFu1c_BFu1s  {
  signed char v1:1;
  unsigned short v2:1;
  unsigned char v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1c_BFu1s_BFu1c_BFu1s) C1{ Fc:1 Fs:1 Fc:1 Fs:1}



static void Test_BFs1c_BFu1s_BFu1c_BFu1s()
{
  {
    init_simple_test("BFs1c_BFu1s_BFu1c_BFu1s");
    static STRUCT_IF_C BFs1c_BFu1s_BFu1c_BFu1s lv;
    check2(sizeof(lv), 2, "sizeof(BFs1c_BFu1s_BFu1c_BFu1s)");
    check2(__alignof__(lv), 2, "__alignof__(BFs1c_BFu1s_BFu1c_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1s_BFu1c_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1s_BFu1c_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1s_BFu1c_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1s_BFu1c_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1s_BFu1c_BFu1s, BFs1c_BFu1s_BFu1c_BFu1s)
//============================================================================


struct  BFs1c_BFu1s_BFu1i  {
  signed char v1:1;
  unsigned short v2:1;
  unsigned int v3:1;
};
//SIG(1 BFs1c_BFu1s_BFu1i) C1{ Fc:1 Fs:1 Fi:1}



static void Test_BFs1c_BFu1s_BFu1i()
{
  {
    init_simple_test("BFs1c_BFu1s_BFu1i");
    static STRUCT_IF_C BFs1c_BFu1s_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1s_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1s_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1s_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1s_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1s_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1s_BFu1i, BFs1c_BFu1s_BFu1i)
//============================================================================


struct  BFs1c_BFu1s_BFu1i_BFs1c  {
  signed char v1:1;
  unsigned short v2:1;
  unsigned int v3:1;
  signed char v4:1;
};
//SIG(1 BFs1c_BFu1s_BFu1i_BFs1c) C1{ Fc:1 Fs:1 Fi:1 Fc:1}



static void Test_BFs1c_BFu1s_BFu1i_BFs1c()
{
  {
    init_simple_test("BFs1c_BFu1s_BFu1i_BFs1c");
    static STRUCT_IF_C BFs1c_BFu1s_BFu1i_BFs1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1s_BFu1i_BFs1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1s_BFu1i_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1s_BFu1i_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1s_BFu1i_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1s_BFu1i_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1s_BFu1i_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1s_BFu1i_BFs1c, BFs1c_BFu1s_BFu1i_BFs1c)
//============================================================================


struct  BFs1c_BFu1s_BFu1i_BFs1i  {
  signed char v1:1;
  unsigned short v2:1;
  unsigned int v3:1;
  signed int v4:1;
};
//SIG(1 BFs1c_BFu1s_BFu1i_BFs1i) C1{ Fc:1 Fs:1 Fi:1 Fi:1}



static void Test_BFs1c_BFu1s_BFu1i_BFs1i()
{
  {
    init_simple_test("BFs1c_BFu1s_BFu1i_BFs1i");
    static STRUCT_IF_C BFs1c_BFu1s_BFu1i_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1s_BFu1i_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1s_BFu1i_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1s_BFu1i_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1s_BFu1i_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1s_BFu1i_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1s_BFu1i_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1s_BFu1i_BFs1i, BFs1c_BFu1s_BFu1i_BFs1i)
//============================================================================


struct  BFs1c_BFu1s_BFu1i_BFs1ll  {
  signed char v1:1;
  unsigned short v2:1;
  unsigned int v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1c_BFu1s_BFu1i_BFs1ll) C1{ Fc:1 Fs:1 Fi:1 FL:1}



static void Test_BFs1c_BFu1s_BFu1i_BFs1ll()
{
  {
    init_simple_test("BFs1c_BFu1s_BFu1i_BFs1ll");
    static STRUCT_IF_C BFs1c_BFu1s_BFu1i_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1s_BFu1i_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1s_BFu1i_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1s_BFu1i_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1s_BFu1i_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1s_BFu1i_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1s_BFu1i_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1s_BFu1i_BFs1ll, BFs1c_BFu1s_BFu1i_BFs1ll)
//============================================================================


struct  BFs1c_BFu1s_BFu1i_BFs1s  {
  signed char v1:1;
  unsigned short v2:1;
  unsigned int v3:1;
  signed short v4:1;
};
//SIG(1 BFs1c_BFu1s_BFu1i_BFs1s) C1{ Fc:1 Fs:1 Fi:1 Fs:1}



static void Test_BFs1c_BFu1s_BFu1i_BFs1s()
{
  {
    init_simple_test("BFs1c_BFu1s_BFu1i_BFs1s");
    static STRUCT_IF_C BFs1c_BFu1s_BFu1i_BFs1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1s_BFu1i_BFs1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1s_BFu1i_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1s_BFu1i_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1s_BFu1i_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1s_BFu1i_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1s_BFu1i_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1s_BFu1i_BFs1s, BFs1c_BFu1s_BFu1i_BFs1s)
//============================================================================


struct  BFs1c_BFu1s_BFu1i_BFu1c  {
  signed char v1:1;
  unsigned short v2:1;
  unsigned int v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1c_BFu1s_BFu1i_BFu1c) C1{ Fc:1 Fs:1 Fi:1 Fc:1}



static void Test_BFs1c_BFu1s_BFu1i_BFu1c()
{
  {
    init_simple_test("BFs1c_BFu1s_BFu1i_BFu1c");
    static STRUCT_IF_C BFs1c_BFu1s_BFu1i_BFu1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1s_BFu1i_BFu1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1s_BFu1i_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1s_BFu1i_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1s_BFu1i_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1s_BFu1i_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1s_BFu1i_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1s_BFu1i_BFu1c, BFs1c_BFu1s_BFu1i_BFu1c)
//============================================================================


struct  BFs1c_BFu1s_BFu1i_BFu1i  {
  signed char v1:1;
  unsigned short v2:1;
  unsigned int v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1c_BFu1s_BFu1i_BFu1i) C1{ Fc:1 Fs:1 Fi:1 Fi:1}



static void Test_BFs1c_BFu1s_BFu1i_BFu1i()
{
  {
    init_simple_test("BFs1c_BFu1s_BFu1i_BFu1i");
    static STRUCT_IF_C BFs1c_BFu1s_BFu1i_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1s_BFu1i_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1s_BFu1i_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1s_BFu1i_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1s_BFu1i_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1s_BFu1i_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1s_BFu1i_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1s_BFu1i_BFu1i, BFs1c_BFu1s_BFu1i_BFu1i)
//============================================================================


struct  BFs1c_BFu1s_BFu1i_BFu1ll  {
  signed char v1:1;
  unsigned short v2:1;
  unsigned int v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1c_BFu1s_BFu1i_BFu1ll) C1{ Fc:1 Fs:1 Fi:1 FL:1}



static void Test_BFs1c_BFu1s_BFu1i_BFu1ll()
{
  {
    init_simple_test("BFs1c_BFu1s_BFu1i_BFu1ll");
    static STRUCT_IF_C BFs1c_BFu1s_BFu1i_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1s_BFu1i_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1s_BFu1i_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1s_BFu1i_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1s_BFu1i_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1s_BFu1i_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1s_BFu1i_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1s_BFu1i_BFu1ll, BFs1c_BFu1s_BFu1i_BFu1ll)
//============================================================================


struct  BFs1c_BFu1s_BFu1i_BFu1s  {
  signed char v1:1;
  unsigned short v2:1;
  unsigned int v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1c_BFu1s_BFu1i_BFu1s) C1{ Fc:1 Fs:1 Fi:1 Fs:1}



static void Test_BFs1c_BFu1s_BFu1i_BFu1s()
{
  {
    init_simple_test("BFs1c_BFu1s_BFu1i_BFu1s");
    static STRUCT_IF_C BFs1c_BFu1s_BFu1i_BFu1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1s_BFu1i_BFu1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1s_BFu1i_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1s_BFu1i_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1s_BFu1i_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1s_BFu1i_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1s_BFu1i_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1s_BFu1i_BFu1s, BFs1c_BFu1s_BFu1i_BFu1s)
//============================================================================


struct  BFs1c_BFu1s_BFu1ll  {
  signed char v1:1;
  unsigned short v2:1;
  __tsu64 v3:1;
};
//SIG(1 BFs1c_BFu1s_BFu1ll) C1{ Fc:1 Fs:1 FL:1}



static void Test_BFs1c_BFu1s_BFu1ll()
{
  {
    init_simple_test("BFs1c_BFu1s_BFu1ll");
    static STRUCT_IF_C BFs1c_BFu1s_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1s_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1s_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1s_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1s_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1s_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1s_BFu1ll, BFs1c_BFu1s_BFu1ll)
//============================================================================


struct  BFs1c_BFu1s_BFu1ll_BFs1c  {
  signed char v1:1;
  unsigned short v2:1;
  __tsu64 v3:1;
  signed char v4:1;
};
//SIG(1 BFs1c_BFu1s_BFu1ll_BFs1c) C1{ Fc:1 Fs:1 FL:1 Fc:1}



static void Test_BFs1c_BFu1s_BFu1ll_BFs1c()
{
  {
    init_simple_test("BFs1c_BFu1s_BFu1ll_BFs1c");
    static STRUCT_IF_C BFs1c_BFu1s_BFu1ll_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1s_BFu1ll_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1s_BFu1ll_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1s_BFu1ll_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1s_BFu1ll_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1s_BFu1ll_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1s_BFu1ll_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1s_BFu1ll_BFs1c, BFs1c_BFu1s_BFu1ll_BFs1c)
//============================================================================


struct  BFs1c_BFu1s_BFu1ll_BFs1i  {
  signed char v1:1;
  unsigned short v2:1;
  __tsu64 v3:1;
  signed int v4:1;
};
//SIG(1 BFs1c_BFu1s_BFu1ll_BFs1i) C1{ Fc:1 Fs:1 FL:1 Fi:1}



static void Test_BFs1c_BFu1s_BFu1ll_BFs1i()
{
  {
    init_simple_test("BFs1c_BFu1s_BFu1ll_BFs1i");
    static STRUCT_IF_C BFs1c_BFu1s_BFu1ll_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1s_BFu1ll_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1s_BFu1ll_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1s_BFu1ll_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1s_BFu1ll_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1s_BFu1ll_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1s_BFu1ll_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1s_BFu1ll_BFs1i, BFs1c_BFu1s_BFu1ll_BFs1i)
//============================================================================


struct  BFs1c_BFu1s_BFu1ll_BFs1ll  {
  signed char v1:1;
  unsigned short v2:1;
  __tsu64 v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1c_BFu1s_BFu1ll_BFs1ll) C1{ Fc:1 Fs:1 FL:1 FL:1}



static void Test_BFs1c_BFu1s_BFu1ll_BFs1ll()
{
  {
    init_simple_test("BFs1c_BFu1s_BFu1ll_BFs1ll");
    static STRUCT_IF_C BFs1c_BFu1s_BFu1ll_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1s_BFu1ll_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1s_BFu1ll_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1s_BFu1ll_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1s_BFu1ll_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1s_BFu1ll_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1s_BFu1ll_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1s_BFu1ll_BFs1ll, BFs1c_BFu1s_BFu1ll_BFs1ll)
//============================================================================


struct  BFs1c_BFu1s_BFu1ll_BFs1s  {
  signed char v1:1;
  unsigned short v2:1;
  __tsu64 v3:1;
  signed short v4:1;
};
//SIG(1 BFs1c_BFu1s_BFu1ll_BFs1s) C1{ Fc:1 Fs:1 FL:1 Fs:1}



static void Test_BFs1c_BFu1s_BFu1ll_BFs1s()
{
  {
    init_simple_test("BFs1c_BFu1s_BFu1ll_BFs1s");
    static STRUCT_IF_C BFs1c_BFu1s_BFu1ll_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1s_BFu1ll_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1s_BFu1ll_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1s_BFu1ll_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1s_BFu1ll_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1s_BFu1ll_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1s_BFu1ll_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1s_BFu1ll_BFs1s, BFs1c_BFu1s_BFu1ll_BFs1s)
//============================================================================


struct  BFs1c_BFu1s_BFu1ll_BFu1c  {
  signed char v1:1;
  unsigned short v2:1;
  __tsu64 v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1c_BFu1s_BFu1ll_BFu1c) C1{ Fc:1 Fs:1 FL:1 Fc:1}



static void Test_BFs1c_BFu1s_BFu1ll_BFu1c()
{
  {
    init_simple_test("BFs1c_BFu1s_BFu1ll_BFu1c");
    static STRUCT_IF_C BFs1c_BFu1s_BFu1ll_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1s_BFu1ll_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1s_BFu1ll_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1s_BFu1ll_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1s_BFu1ll_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1s_BFu1ll_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1s_BFu1ll_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1s_BFu1ll_BFu1c, BFs1c_BFu1s_BFu1ll_BFu1c)
//============================================================================


struct  BFs1c_BFu1s_BFu1ll_BFu1i  {
  signed char v1:1;
  unsigned short v2:1;
  __tsu64 v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1c_BFu1s_BFu1ll_BFu1i) C1{ Fc:1 Fs:1 FL:1 Fi:1}



static void Test_BFs1c_BFu1s_BFu1ll_BFu1i()
{
  {
    init_simple_test("BFs1c_BFu1s_BFu1ll_BFu1i");
    static STRUCT_IF_C BFs1c_BFu1s_BFu1ll_BFu1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1s_BFu1ll_BFu1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1s_BFu1ll_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1s_BFu1ll_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1s_BFu1ll_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1s_BFu1ll_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1s_BFu1ll_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1s_BFu1ll_BFu1i, BFs1c_BFu1s_BFu1ll_BFu1i)
//============================================================================


struct  BFs1c_BFu1s_BFu1ll_BFu1ll  {
  signed char v1:1;
  unsigned short v2:1;
  __tsu64 v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1c_BFu1s_BFu1ll_BFu1ll) C1{ Fc:1 Fs:1 FL:1 FL:1}



static void Test_BFs1c_BFu1s_BFu1ll_BFu1ll()
{
  {
    init_simple_test("BFs1c_BFu1s_BFu1ll_BFu1ll");
    static STRUCT_IF_C BFs1c_BFu1s_BFu1ll_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1s_BFu1ll_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1s_BFu1ll_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1s_BFu1ll_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1s_BFu1ll_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1s_BFu1ll_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1s_BFu1ll_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1s_BFu1ll_BFu1ll, BFs1c_BFu1s_BFu1ll_BFu1ll)
//============================================================================


struct  BFs1c_BFu1s_BFu1ll_BFu1s  {
  signed char v1:1;
  unsigned short v2:1;
  __tsu64 v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1c_BFu1s_BFu1ll_BFu1s) C1{ Fc:1 Fs:1 FL:1 Fs:1}



static void Test_BFs1c_BFu1s_BFu1ll_BFu1s()
{
  {
    init_simple_test("BFs1c_BFu1s_BFu1ll_BFu1s");
    static STRUCT_IF_C BFs1c_BFu1s_BFu1ll_BFu1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1s_BFu1ll_BFu1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1s_BFu1ll_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1s_BFu1ll_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1s_BFu1ll_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1s_BFu1ll_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1s_BFu1ll_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1s_BFu1ll_BFu1s, BFs1c_BFu1s_BFu1ll_BFu1s)
//============================================================================


struct  BFs1c_BFu1s_BFu1s  {
  signed char v1:1;
  unsigned short v2:1;
  unsigned short v3:1;
};
//SIG(1 BFs1c_BFu1s_BFu1s) C1{ Fc:1 Fs:1 Fs:1}



static void Test_BFs1c_BFu1s_BFu1s()
{
  {
    init_simple_test("BFs1c_BFu1s_BFu1s");
    static STRUCT_IF_C BFs1c_BFu1s_BFu1s lv;
    check2(sizeof(lv), 2, "sizeof(BFs1c_BFu1s_BFu1s)");
    check2(__alignof__(lv), 2, "__alignof__(BFs1c_BFu1s_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1s_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1s_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1s_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1s_BFu1s, BFs1c_BFu1s_BFu1s)
//============================================================================


struct  BFs1c_BFu1s_BFu1s_BFs1c  {
  signed char v1:1;
  unsigned short v2:1;
  unsigned short v3:1;
  signed char v4:1;
};
//SIG(1 BFs1c_BFu1s_BFu1s_BFs1c) C1{ Fc:1 Fs:1 Fs:1 Fc:1}



static void Test_BFs1c_BFu1s_BFu1s_BFs1c()
{
  {
    init_simple_test("BFs1c_BFu1s_BFu1s_BFs1c");
    static STRUCT_IF_C BFs1c_BFu1s_BFu1s_BFs1c lv;
    check2(sizeof(lv), 2, "sizeof(BFs1c_BFu1s_BFu1s_BFs1c)");
    check2(__alignof__(lv), 2, "__alignof__(BFs1c_BFu1s_BFu1s_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1s_BFu1s_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1s_BFu1s_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1s_BFu1s_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1s_BFu1s_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1s_BFu1s_BFs1c, BFs1c_BFu1s_BFu1s_BFs1c)
//============================================================================


struct  BFs1c_BFu1s_BFu1s_BFs1i  {
  signed char v1:1;
  unsigned short v2:1;
  unsigned short v3:1;
  signed int v4:1;
};
//SIG(1 BFs1c_BFu1s_BFu1s_BFs1i) C1{ Fc:1 Fs:1 Fs:1 Fi:1}



static void Test_BFs1c_BFu1s_BFu1s_BFs1i()
{
  {
    init_simple_test("BFs1c_BFu1s_BFu1s_BFs1i");
    static STRUCT_IF_C BFs1c_BFu1s_BFu1s_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1s_BFu1s_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1s_BFu1s_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1s_BFu1s_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1s_BFu1s_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1s_BFu1s_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1s_BFu1s_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1s_BFu1s_BFs1i, BFs1c_BFu1s_BFu1s_BFs1i)
//============================================================================


struct  BFs1c_BFu1s_BFu1s_BFs1ll  {
  signed char v1:1;
  unsigned short v2:1;
  unsigned short v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1c_BFu1s_BFu1s_BFs1ll) C1{ Fc:1 Fs:1 Fs:1 FL:1}



static void Test_BFs1c_BFu1s_BFu1s_BFs1ll()
{
  {
    init_simple_test("BFs1c_BFu1s_BFu1s_BFs1ll");
    static STRUCT_IF_C BFs1c_BFu1s_BFu1s_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1s_BFu1s_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1s_BFu1s_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1s_BFu1s_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1s_BFu1s_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1s_BFu1s_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1s_BFu1s_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1s_BFu1s_BFs1ll, BFs1c_BFu1s_BFu1s_BFs1ll)
//============================================================================


struct  BFs1c_BFu1s_BFu1s_BFs1s  {
  signed char v1:1;
  unsigned short v2:1;
  unsigned short v3:1;
  signed short v4:1;
};
//SIG(1 BFs1c_BFu1s_BFu1s_BFs1s) C1{ Fc:1 Fs:1 Fs:1 Fs:1}



static void Test_BFs1c_BFu1s_BFu1s_BFs1s()
{
  {
    init_simple_test("BFs1c_BFu1s_BFu1s_BFs1s");
    static STRUCT_IF_C BFs1c_BFu1s_BFu1s_BFs1s lv;
    check2(sizeof(lv), 2, "sizeof(BFs1c_BFu1s_BFu1s_BFs1s)");
    check2(__alignof__(lv), 2, "__alignof__(BFs1c_BFu1s_BFu1s_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1s_BFu1s_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1s_BFu1s_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1s_BFu1s_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1c_BFu1s_BFu1s_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1s_BFu1s_BFs1s, BFs1c_BFu1s_BFu1s_BFs1s)
//============================================================================


struct  BFs1c_BFu1s_BFu1s_BFu1c  {
  signed char v1:1;
  unsigned short v2:1;
  unsigned short v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1c_BFu1s_BFu1s_BFu1c) C1{ Fc:1 Fs:1 Fs:1 Fc:1}



static void Test_BFs1c_BFu1s_BFu1s_BFu1c()
{
  {
    init_simple_test("BFs1c_BFu1s_BFu1s_BFu1c");
    static STRUCT_IF_C BFs1c_BFu1s_BFu1s_BFu1c lv;
    check2(sizeof(lv), 2, "sizeof(BFs1c_BFu1s_BFu1s_BFu1c)");
    check2(__alignof__(lv), 2, "__alignof__(BFs1c_BFu1s_BFu1s_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1s_BFu1s_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1s_BFu1s_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1s_BFu1s_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1s_BFu1s_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1s_BFu1s_BFu1c, BFs1c_BFu1s_BFu1s_BFu1c)
//============================================================================


struct  BFs1c_BFu1s_BFu1s_BFu1i  {
  signed char v1:1;
  unsigned short v2:1;
  unsigned short v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1c_BFu1s_BFu1s_BFu1i) C1{ Fc:1 Fs:1 Fs:1 Fi:1}



static void Test_BFs1c_BFu1s_BFu1s_BFu1i()
{
  {
    init_simple_test("BFs1c_BFu1s_BFu1s_BFu1i");
    static STRUCT_IF_C BFs1c_BFu1s_BFu1s_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1c_BFu1s_BFu1s_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1c_BFu1s_BFu1s_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1s_BFu1s_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1s_BFu1s_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1s_BFu1s_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1s_BFu1s_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1s_BFu1s_BFu1i, BFs1c_BFu1s_BFu1s_BFu1i)
//============================================================================


struct  BFs1c_BFu1s_BFu1s_BFu1ll  {
  signed char v1:1;
  unsigned short v2:1;
  unsigned short v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1c_BFu1s_BFu1s_BFu1ll) C1{ Fc:1 Fs:1 Fs:1 FL:1}



static void Test_BFs1c_BFu1s_BFu1s_BFu1ll()
{
  {
    init_simple_test("BFs1c_BFu1s_BFu1s_BFu1ll");
    static STRUCT_IF_C BFs1c_BFu1s_BFu1s_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1c_BFu1s_BFu1s_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1c_BFu1s_BFu1s_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1s_BFu1s_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1s_BFu1s_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1s_BFu1s_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1s_BFu1s_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1s_BFu1s_BFu1ll, BFs1c_BFu1s_BFu1s_BFu1ll)
//============================================================================


struct  BFs1c_BFu1s_BFu1s_BFu1s  {
  signed char v1:1;
  unsigned short v2:1;
  unsigned short v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1c_BFu1s_BFu1s_BFu1s) C1{ Fc:1 Fs:1 Fs:1 Fs:1}



static void Test_BFs1c_BFu1s_BFu1s_BFu1s()
{
  {
    init_simple_test("BFs1c_BFu1s_BFu1s_BFu1s");
    static STRUCT_IF_C BFs1c_BFu1s_BFu1s_BFu1s lv;
    check2(sizeof(lv), 2, "sizeof(BFs1c_BFu1s_BFu1s_BFu1s)");
    check2(__alignof__(lv), 2, "__alignof__(BFs1c_BFu1s_BFu1s_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1c_BFu1s_BFu1s_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1c_BFu1s_BFu1s_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1c_BFu1s_BFu1s_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1c_BFu1s_BFu1s_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1c_BFu1s_BFu1s_BFu1s, BFs1c_BFu1s_BFu1s_BFu1s)
//============================================================================


struct  BFs1i_BFs1c  {
  signed int v1:1;
  signed char v2:1;
};
//SIG(1 BFs1i_BFs1c) C1{ Fi:1 Fc:1}



static void Test_BFs1i_BFs1c()
{
  {
    init_simple_test("BFs1i_BFs1c");
    static STRUCT_IF_C BFs1i_BFs1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1c, BFs1i_BFs1c)
//============================================================================


struct  BFs1i_BFs1c_BFs1c  {
  signed int v1:1;
  signed char v2:1;
  signed char v3:1;
};
//SIG(1 BFs1i_BFs1c_BFs1c) C1{ Fi:1 Fc:1 Fc:1}



static void Test_BFs1i_BFs1c_BFs1c()
{
  {
    init_simple_test("BFs1i_BFs1c_BFs1c");
    static STRUCT_IF_C BFs1i_BFs1c_BFs1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1c_BFs1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1c_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1c_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1c_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1c_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1c_BFs1c, BFs1i_BFs1c_BFs1c)
//============================================================================


struct  BFs1i_BFs1c_BFs1c_BFs1c  {
  signed int v1:1;
  signed char v2:1;
  signed char v3:1;
  signed char v4:1;
};
//SIG(1 BFs1i_BFs1c_BFs1c_BFs1c) C1{ Fi:1 Fc:1 Fc:1 Fc:1}



static void Test_BFs1i_BFs1c_BFs1c_BFs1c()
{
  {
    init_simple_test("BFs1i_BFs1c_BFs1c_BFs1c");
    static STRUCT_IF_C BFs1i_BFs1c_BFs1c_BFs1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1c_BFs1c_BFs1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1c_BFs1c_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1c_BFs1c_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1c_BFs1c_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1c_BFs1c_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1c_BFs1c_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1c_BFs1c_BFs1c, BFs1i_BFs1c_BFs1c_BFs1c)
//============================================================================


struct  BFs1i_BFs1c_BFs1c_BFs1i  {
  signed int v1:1;
  signed char v2:1;
  signed char v3:1;
  signed int v4:1;
};
//SIG(1 BFs1i_BFs1c_BFs1c_BFs1i) C1{ Fi:1 Fc:1 Fc:1 Fi:1}



static void Test_BFs1i_BFs1c_BFs1c_BFs1i()
{
  {
    init_simple_test("BFs1i_BFs1c_BFs1c_BFs1i");
    static STRUCT_IF_C BFs1i_BFs1c_BFs1c_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1c_BFs1c_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1c_BFs1c_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1c_BFs1c_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1c_BFs1c_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1c_BFs1c_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1c_BFs1c_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1c_BFs1c_BFs1i, BFs1i_BFs1c_BFs1c_BFs1i)
//============================================================================


struct  BFs1i_BFs1c_BFs1c_BFs1ll  {
  signed int v1:1;
  signed char v2:1;
  signed char v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1i_BFs1c_BFs1c_BFs1ll) C1{ Fi:1 Fc:1 Fc:1 FL:1}



static void Test_BFs1i_BFs1c_BFs1c_BFs1ll()
{
  {
    init_simple_test("BFs1i_BFs1c_BFs1c_BFs1ll");
    static STRUCT_IF_C BFs1i_BFs1c_BFs1c_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1c_BFs1c_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1c_BFs1c_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1c_BFs1c_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1c_BFs1c_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1c_BFs1c_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1c_BFs1c_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1c_BFs1c_BFs1ll, BFs1i_BFs1c_BFs1c_BFs1ll)
//============================================================================


struct  BFs1i_BFs1c_BFs1c_BFs1s  {
  signed int v1:1;
  signed char v2:1;
  signed char v3:1;
  signed short v4:1;
};
//SIG(1 BFs1i_BFs1c_BFs1c_BFs1s) C1{ Fi:1 Fc:1 Fc:1 Fs:1}



static void Test_BFs1i_BFs1c_BFs1c_BFs1s()
{
  {
    init_simple_test("BFs1i_BFs1c_BFs1c_BFs1s");
    static STRUCT_IF_C BFs1i_BFs1c_BFs1c_BFs1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1c_BFs1c_BFs1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1c_BFs1c_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1c_BFs1c_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1c_BFs1c_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1c_BFs1c_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1c_BFs1c_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1c_BFs1c_BFs1s, BFs1i_BFs1c_BFs1c_BFs1s)
//============================================================================


struct  BFs1i_BFs1c_BFs1c_BFu1c  {
  signed int v1:1;
  signed char v2:1;
  signed char v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1i_BFs1c_BFs1c_BFu1c) C1{ Fi:1 Fc:1 Fc:1 Fc:1}



static void Test_BFs1i_BFs1c_BFs1c_BFu1c()
{
  {
    init_simple_test("BFs1i_BFs1c_BFs1c_BFu1c");
    static STRUCT_IF_C BFs1i_BFs1c_BFs1c_BFu1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1c_BFs1c_BFu1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1c_BFs1c_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1c_BFs1c_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1c_BFs1c_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1c_BFs1c_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1c_BFs1c_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1c_BFs1c_BFu1c, BFs1i_BFs1c_BFs1c_BFu1c)
//============================================================================


struct  BFs1i_BFs1c_BFs1c_BFu1i  {
  signed int v1:1;
  signed char v2:1;
  signed char v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1i_BFs1c_BFs1c_BFu1i) C1{ Fi:1 Fc:1 Fc:1 Fi:1}



static void Test_BFs1i_BFs1c_BFs1c_BFu1i()
{
  {
    init_simple_test("BFs1i_BFs1c_BFs1c_BFu1i");
    static STRUCT_IF_C BFs1i_BFs1c_BFs1c_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1c_BFs1c_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1c_BFs1c_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1c_BFs1c_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1c_BFs1c_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1c_BFs1c_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1c_BFs1c_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1c_BFs1c_BFu1i, BFs1i_BFs1c_BFs1c_BFu1i)
//============================================================================


struct  BFs1i_BFs1c_BFs1c_BFu1ll  {
  signed int v1:1;
  signed char v2:1;
  signed char v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1i_BFs1c_BFs1c_BFu1ll) C1{ Fi:1 Fc:1 Fc:1 FL:1}



static void Test_BFs1i_BFs1c_BFs1c_BFu1ll()
{
  {
    init_simple_test("BFs1i_BFs1c_BFs1c_BFu1ll");
    static STRUCT_IF_C BFs1i_BFs1c_BFs1c_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1c_BFs1c_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1c_BFs1c_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1c_BFs1c_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1c_BFs1c_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1c_BFs1c_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1c_BFs1c_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1c_BFs1c_BFu1ll, BFs1i_BFs1c_BFs1c_BFu1ll)
//============================================================================


struct  BFs1i_BFs1c_BFs1c_BFu1s  {
  signed int v1:1;
  signed char v2:1;
  signed char v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1i_BFs1c_BFs1c_BFu1s) C1{ Fi:1 Fc:1 Fc:1 Fs:1}



static void Test_BFs1i_BFs1c_BFs1c_BFu1s()
{
  {
    init_simple_test("BFs1i_BFs1c_BFs1c_BFu1s");
    static STRUCT_IF_C BFs1i_BFs1c_BFs1c_BFu1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1c_BFs1c_BFu1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1c_BFs1c_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1c_BFs1c_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1c_BFs1c_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1c_BFs1c_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1c_BFs1c_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1c_BFs1c_BFu1s, BFs1i_BFs1c_BFs1c_BFu1s)
//============================================================================


struct  BFs1i_BFs1c_BFs1i  {
  signed int v1:1;
  signed char v2:1;
  signed int v3:1;
};
//SIG(1 BFs1i_BFs1c_BFs1i) C1{ Fi:1 Fc:1 Fi:1}



static void Test_BFs1i_BFs1c_BFs1i()
{
  {
    init_simple_test("BFs1i_BFs1c_BFs1i");
    static STRUCT_IF_C BFs1i_BFs1c_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1c_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1c_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1c_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1c_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1c_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1c_BFs1i, BFs1i_BFs1c_BFs1i)
//============================================================================


struct  BFs1i_BFs1c_BFs1i_BFs1c  {
  signed int v1:1;
  signed char v2:1;
  signed int v3:1;
  signed char v4:1;
};
//SIG(1 BFs1i_BFs1c_BFs1i_BFs1c) C1{ Fi:1 Fc:1 Fi:1 Fc:1}



static void Test_BFs1i_BFs1c_BFs1i_BFs1c()
{
  {
    init_simple_test("BFs1i_BFs1c_BFs1i_BFs1c");
    static STRUCT_IF_C BFs1i_BFs1c_BFs1i_BFs1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1c_BFs1i_BFs1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1c_BFs1i_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1c_BFs1i_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1c_BFs1i_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1c_BFs1i_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1c_BFs1i_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1c_BFs1i_BFs1c, BFs1i_BFs1c_BFs1i_BFs1c)
//============================================================================


struct  BFs1i_BFs1c_BFs1i_BFs1i  {
  signed int v1:1;
  signed char v2:1;
  signed int v3:1;
  signed int v4:1;
};
//SIG(1 BFs1i_BFs1c_BFs1i_BFs1i) C1{ Fi:1 Fc:1 Fi:1 Fi:1}



static void Test_BFs1i_BFs1c_BFs1i_BFs1i()
{
  {
    init_simple_test("BFs1i_BFs1c_BFs1i_BFs1i");
    static STRUCT_IF_C BFs1i_BFs1c_BFs1i_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1c_BFs1i_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1c_BFs1i_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1c_BFs1i_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1c_BFs1i_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1c_BFs1i_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1c_BFs1i_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1c_BFs1i_BFs1i, BFs1i_BFs1c_BFs1i_BFs1i)
//============================================================================


struct  BFs1i_BFs1c_BFs1i_BFs1ll  {
  signed int v1:1;
  signed char v2:1;
  signed int v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1i_BFs1c_BFs1i_BFs1ll) C1{ Fi:1 Fc:1 Fi:1 FL:1}



static void Test_BFs1i_BFs1c_BFs1i_BFs1ll()
{
  {
    init_simple_test("BFs1i_BFs1c_BFs1i_BFs1ll");
    static STRUCT_IF_C BFs1i_BFs1c_BFs1i_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1c_BFs1i_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1c_BFs1i_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1c_BFs1i_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1c_BFs1i_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1c_BFs1i_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1c_BFs1i_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1c_BFs1i_BFs1ll, BFs1i_BFs1c_BFs1i_BFs1ll)
//============================================================================


struct  BFs1i_BFs1c_BFs1i_BFs1s  {
  signed int v1:1;
  signed char v2:1;
  signed int v3:1;
  signed short v4:1;
};
//SIG(1 BFs1i_BFs1c_BFs1i_BFs1s) C1{ Fi:1 Fc:1 Fi:1 Fs:1}



static void Test_BFs1i_BFs1c_BFs1i_BFs1s()
{
  {
    init_simple_test("BFs1i_BFs1c_BFs1i_BFs1s");
    static STRUCT_IF_C BFs1i_BFs1c_BFs1i_BFs1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1c_BFs1i_BFs1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1c_BFs1i_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1c_BFs1i_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1c_BFs1i_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1c_BFs1i_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1c_BFs1i_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1c_BFs1i_BFs1s, BFs1i_BFs1c_BFs1i_BFs1s)
//============================================================================


struct  BFs1i_BFs1c_BFs1i_BFu1c  {
  signed int v1:1;
  signed char v2:1;
  signed int v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1i_BFs1c_BFs1i_BFu1c) C1{ Fi:1 Fc:1 Fi:1 Fc:1}



static void Test_BFs1i_BFs1c_BFs1i_BFu1c()
{
  {
    init_simple_test("BFs1i_BFs1c_BFs1i_BFu1c");
    static STRUCT_IF_C BFs1i_BFs1c_BFs1i_BFu1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1c_BFs1i_BFu1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1c_BFs1i_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1c_BFs1i_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1c_BFs1i_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1c_BFs1i_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1c_BFs1i_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1c_BFs1i_BFu1c, BFs1i_BFs1c_BFs1i_BFu1c)
//============================================================================


struct  BFs1i_BFs1c_BFs1i_BFu1i  {
  signed int v1:1;
  signed char v2:1;
  signed int v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1i_BFs1c_BFs1i_BFu1i) C1{ Fi:1 Fc:1 Fi:1 Fi:1}



static void Test_BFs1i_BFs1c_BFs1i_BFu1i()
{
  {
    init_simple_test("BFs1i_BFs1c_BFs1i_BFu1i");
    static STRUCT_IF_C BFs1i_BFs1c_BFs1i_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1c_BFs1i_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1c_BFs1i_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1c_BFs1i_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1c_BFs1i_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1c_BFs1i_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1c_BFs1i_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1c_BFs1i_BFu1i, BFs1i_BFs1c_BFs1i_BFu1i)
//============================================================================


struct  BFs1i_BFs1c_BFs1i_BFu1ll  {
  signed int v1:1;
  signed char v2:1;
  signed int v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1i_BFs1c_BFs1i_BFu1ll) C1{ Fi:1 Fc:1 Fi:1 FL:1}



static void Test_BFs1i_BFs1c_BFs1i_BFu1ll()
{
  {
    init_simple_test("BFs1i_BFs1c_BFs1i_BFu1ll");
    static STRUCT_IF_C BFs1i_BFs1c_BFs1i_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1c_BFs1i_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1c_BFs1i_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1c_BFs1i_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1c_BFs1i_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1c_BFs1i_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1c_BFs1i_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1c_BFs1i_BFu1ll, BFs1i_BFs1c_BFs1i_BFu1ll)
//============================================================================


struct  BFs1i_BFs1c_BFs1i_BFu1s  {
  signed int v1:1;
  signed char v2:1;
  signed int v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1i_BFs1c_BFs1i_BFu1s) C1{ Fi:1 Fc:1 Fi:1 Fs:1}



static void Test_BFs1i_BFs1c_BFs1i_BFu1s()
{
  {
    init_simple_test("BFs1i_BFs1c_BFs1i_BFu1s");
    static STRUCT_IF_C BFs1i_BFs1c_BFs1i_BFu1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1c_BFs1i_BFu1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1c_BFs1i_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1c_BFs1i_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1c_BFs1i_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1c_BFs1i_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1c_BFs1i_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1c_BFs1i_BFu1s, BFs1i_BFs1c_BFs1i_BFu1s)
//============================================================================


struct  BFs1i_BFs1c_BFs1ll  {
  signed int v1:1;
  signed char v2:1;
  signed __tsi64 v3:1;
};
//SIG(1 BFs1i_BFs1c_BFs1ll) C1{ Fi:1 Fc:1 FL:1}



static void Test_BFs1i_BFs1c_BFs1ll()
{
  {
    init_simple_test("BFs1i_BFs1c_BFs1ll");
    static STRUCT_IF_C BFs1i_BFs1c_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1c_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1c_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1c_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1c_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1c_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1c_BFs1ll, BFs1i_BFs1c_BFs1ll)
//============================================================================


struct  BFs1i_BFs1c_BFs1ll_BFs1c  {
  signed int v1:1;
  signed char v2:1;
  signed __tsi64 v3:1;
  signed char v4:1;
};
//SIG(1 BFs1i_BFs1c_BFs1ll_BFs1c) C1{ Fi:1 Fc:1 FL:1 Fc:1}



static void Test_BFs1i_BFs1c_BFs1ll_BFs1c()
{
  {
    init_simple_test("BFs1i_BFs1c_BFs1ll_BFs1c");
    static STRUCT_IF_C BFs1i_BFs1c_BFs1ll_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1c_BFs1ll_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1c_BFs1ll_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1c_BFs1ll_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1c_BFs1ll_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1c_BFs1ll_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1c_BFs1ll_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1c_BFs1ll_BFs1c, BFs1i_BFs1c_BFs1ll_BFs1c)
//============================================================================


struct  BFs1i_BFs1c_BFs1ll_BFs1i  {
  signed int v1:1;
  signed char v2:1;
  signed __tsi64 v3:1;
  signed int v4:1;
};
//SIG(1 BFs1i_BFs1c_BFs1ll_BFs1i) C1{ Fi:1 Fc:1 FL:1 Fi:1}



static void Test_BFs1i_BFs1c_BFs1ll_BFs1i()
{
  {
    init_simple_test("BFs1i_BFs1c_BFs1ll_BFs1i");
    static STRUCT_IF_C BFs1i_BFs1c_BFs1ll_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1c_BFs1ll_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1c_BFs1ll_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1c_BFs1ll_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1c_BFs1ll_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1c_BFs1ll_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1c_BFs1ll_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1c_BFs1ll_BFs1i, BFs1i_BFs1c_BFs1ll_BFs1i)
//============================================================================


struct  BFs1i_BFs1c_BFs1ll_BFs1ll  {
  signed int v1:1;
  signed char v2:1;
  signed __tsi64 v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1i_BFs1c_BFs1ll_BFs1ll) C1{ Fi:1 Fc:1 FL:1 FL:1}



static void Test_BFs1i_BFs1c_BFs1ll_BFs1ll()
{
  {
    init_simple_test("BFs1i_BFs1c_BFs1ll_BFs1ll");
    static STRUCT_IF_C BFs1i_BFs1c_BFs1ll_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1c_BFs1ll_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1c_BFs1ll_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1c_BFs1ll_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1c_BFs1ll_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1c_BFs1ll_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1c_BFs1ll_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1c_BFs1ll_BFs1ll, BFs1i_BFs1c_BFs1ll_BFs1ll)
//============================================================================


struct  BFs1i_BFs1c_BFs1ll_BFs1s  {
  signed int v1:1;
  signed char v2:1;
  signed __tsi64 v3:1;
  signed short v4:1;
};
//SIG(1 BFs1i_BFs1c_BFs1ll_BFs1s) C1{ Fi:1 Fc:1 FL:1 Fs:1}



static void Test_BFs1i_BFs1c_BFs1ll_BFs1s()
{
  {
    init_simple_test("BFs1i_BFs1c_BFs1ll_BFs1s");
    static STRUCT_IF_C BFs1i_BFs1c_BFs1ll_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1c_BFs1ll_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1c_BFs1ll_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1c_BFs1ll_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1c_BFs1ll_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1c_BFs1ll_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1c_BFs1ll_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1c_BFs1ll_BFs1s, BFs1i_BFs1c_BFs1ll_BFs1s)
//============================================================================


struct  BFs1i_BFs1c_BFs1ll_BFu1c  {
  signed int v1:1;
  signed char v2:1;
  signed __tsi64 v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1i_BFs1c_BFs1ll_BFu1c) C1{ Fi:1 Fc:1 FL:1 Fc:1}



static void Test_BFs1i_BFs1c_BFs1ll_BFu1c()
{
  {
    init_simple_test("BFs1i_BFs1c_BFs1ll_BFu1c");
    static STRUCT_IF_C BFs1i_BFs1c_BFs1ll_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1c_BFs1ll_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1c_BFs1ll_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1c_BFs1ll_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1c_BFs1ll_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1c_BFs1ll_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1c_BFs1ll_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1c_BFs1ll_BFu1c, BFs1i_BFs1c_BFs1ll_BFu1c)
//============================================================================


struct  BFs1i_BFs1c_BFs1ll_BFu1i  {
  signed int v1:1;
  signed char v2:1;
  signed __tsi64 v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1i_BFs1c_BFs1ll_BFu1i) C1{ Fi:1 Fc:1 FL:1 Fi:1}



static void Test_BFs1i_BFs1c_BFs1ll_BFu1i()
{
  {
    init_simple_test("BFs1i_BFs1c_BFs1ll_BFu1i");
    static STRUCT_IF_C BFs1i_BFs1c_BFs1ll_BFu1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1c_BFs1ll_BFu1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1c_BFs1ll_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1c_BFs1ll_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1c_BFs1ll_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1c_BFs1ll_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1c_BFs1ll_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1c_BFs1ll_BFu1i, BFs1i_BFs1c_BFs1ll_BFu1i)
//============================================================================


struct  BFs1i_BFs1c_BFs1ll_BFu1ll  {
  signed int v1:1;
  signed char v2:1;
  signed __tsi64 v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1i_BFs1c_BFs1ll_BFu1ll) C1{ Fi:1 Fc:1 FL:1 FL:1}



static void Test_BFs1i_BFs1c_BFs1ll_BFu1ll()
{
  {
    init_simple_test("BFs1i_BFs1c_BFs1ll_BFu1ll");
    static STRUCT_IF_C BFs1i_BFs1c_BFs1ll_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1c_BFs1ll_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1c_BFs1ll_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1c_BFs1ll_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1c_BFs1ll_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1c_BFs1ll_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1c_BFs1ll_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1c_BFs1ll_BFu1ll, BFs1i_BFs1c_BFs1ll_BFu1ll)
//============================================================================


struct  BFs1i_BFs1c_BFs1ll_BFu1s  {
  signed int v1:1;
  signed char v2:1;
  signed __tsi64 v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1i_BFs1c_BFs1ll_BFu1s) C1{ Fi:1 Fc:1 FL:1 Fs:1}



static void Test_BFs1i_BFs1c_BFs1ll_BFu1s()
{
  {
    init_simple_test("BFs1i_BFs1c_BFs1ll_BFu1s");
    static STRUCT_IF_C BFs1i_BFs1c_BFs1ll_BFu1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1c_BFs1ll_BFu1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1c_BFs1ll_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1c_BFs1ll_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1c_BFs1ll_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1c_BFs1ll_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1c_BFs1ll_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1c_BFs1ll_BFu1s, BFs1i_BFs1c_BFs1ll_BFu1s)
//============================================================================


struct  BFs1i_BFs1c_BFs1s  {
  signed int v1:1;
  signed char v2:1;
  signed short v3:1;
};
//SIG(1 BFs1i_BFs1c_BFs1s) C1{ Fi:1 Fc:1 Fs:1}



static void Test_BFs1i_BFs1c_BFs1s()
{
  {
    init_simple_test("BFs1i_BFs1c_BFs1s");
    static STRUCT_IF_C BFs1i_BFs1c_BFs1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1c_BFs1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1c_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1c_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1c_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1c_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1c_BFs1s, BFs1i_BFs1c_BFs1s)
//============================================================================


struct  BFs1i_BFs1c_BFs1s_BFs1c  {
  signed int v1:1;
  signed char v2:1;
  signed short v3:1;
  signed char v4:1;
};
//SIG(1 BFs1i_BFs1c_BFs1s_BFs1c) C1{ Fi:1 Fc:1 Fs:1 Fc:1}



static void Test_BFs1i_BFs1c_BFs1s_BFs1c()
{
  {
    init_simple_test("BFs1i_BFs1c_BFs1s_BFs1c");
    static STRUCT_IF_C BFs1i_BFs1c_BFs1s_BFs1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1c_BFs1s_BFs1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1c_BFs1s_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1c_BFs1s_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1c_BFs1s_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1c_BFs1s_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1c_BFs1s_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1c_BFs1s_BFs1c, BFs1i_BFs1c_BFs1s_BFs1c)
//============================================================================


struct  BFs1i_BFs1c_BFs1s_BFs1i  {
  signed int v1:1;
  signed char v2:1;
  signed short v3:1;
  signed int v4:1;
};
//SIG(1 BFs1i_BFs1c_BFs1s_BFs1i) C1{ Fi:1 Fc:1 Fs:1 Fi:1}



static void Test_BFs1i_BFs1c_BFs1s_BFs1i()
{
  {
    init_simple_test("BFs1i_BFs1c_BFs1s_BFs1i");
    static STRUCT_IF_C BFs1i_BFs1c_BFs1s_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1c_BFs1s_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1c_BFs1s_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1c_BFs1s_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1c_BFs1s_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1c_BFs1s_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1c_BFs1s_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1c_BFs1s_BFs1i, BFs1i_BFs1c_BFs1s_BFs1i)
//============================================================================


struct  BFs1i_BFs1c_BFs1s_BFs1ll  {
  signed int v1:1;
  signed char v2:1;
  signed short v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1i_BFs1c_BFs1s_BFs1ll) C1{ Fi:1 Fc:1 Fs:1 FL:1}



static void Test_BFs1i_BFs1c_BFs1s_BFs1ll()
{
  {
    init_simple_test("BFs1i_BFs1c_BFs1s_BFs1ll");
    static STRUCT_IF_C BFs1i_BFs1c_BFs1s_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1c_BFs1s_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1c_BFs1s_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1c_BFs1s_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1c_BFs1s_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1c_BFs1s_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1c_BFs1s_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1c_BFs1s_BFs1ll, BFs1i_BFs1c_BFs1s_BFs1ll)
//============================================================================


struct  BFs1i_BFs1c_BFs1s_BFs1s  {
  signed int v1:1;
  signed char v2:1;
  signed short v3:1;
  signed short v4:1;
};
//SIG(1 BFs1i_BFs1c_BFs1s_BFs1s) C1{ Fi:1 Fc:1 Fs:1 Fs:1}



static void Test_BFs1i_BFs1c_BFs1s_BFs1s()
{
  {
    init_simple_test("BFs1i_BFs1c_BFs1s_BFs1s");
    static STRUCT_IF_C BFs1i_BFs1c_BFs1s_BFs1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1c_BFs1s_BFs1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1c_BFs1s_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1c_BFs1s_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1c_BFs1s_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1c_BFs1s_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1c_BFs1s_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1c_BFs1s_BFs1s, BFs1i_BFs1c_BFs1s_BFs1s)
//============================================================================


struct  BFs1i_BFs1c_BFs1s_BFu1c  {
  signed int v1:1;
  signed char v2:1;
  signed short v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1i_BFs1c_BFs1s_BFu1c) C1{ Fi:1 Fc:1 Fs:1 Fc:1}



static void Test_BFs1i_BFs1c_BFs1s_BFu1c()
{
  {
    init_simple_test("BFs1i_BFs1c_BFs1s_BFu1c");
    static STRUCT_IF_C BFs1i_BFs1c_BFs1s_BFu1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1c_BFs1s_BFu1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1c_BFs1s_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1c_BFs1s_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1c_BFs1s_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1c_BFs1s_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1c_BFs1s_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1c_BFs1s_BFu1c, BFs1i_BFs1c_BFs1s_BFu1c)
//============================================================================


struct  BFs1i_BFs1c_BFs1s_BFu1i  {
  signed int v1:1;
  signed char v2:1;
  signed short v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1i_BFs1c_BFs1s_BFu1i) C1{ Fi:1 Fc:1 Fs:1 Fi:1}



static void Test_BFs1i_BFs1c_BFs1s_BFu1i()
{
  {
    init_simple_test("BFs1i_BFs1c_BFs1s_BFu1i");
    static STRUCT_IF_C BFs1i_BFs1c_BFs1s_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1c_BFs1s_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1c_BFs1s_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1c_BFs1s_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1c_BFs1s_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1c_BFs1s_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1c_BFs1s_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1c_BFs1s_BFu1i, BFs1i_BFs1c_BFs1s_BFu1i)
//============================================================================


struct  BFs1i_BFs1c_BFs1s_BFu1ll  {
  signed int v1:1;
  signed char v2:1;
  signed short v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1i_BFs1c_BFs1s_BFu1ll) C1{ Fi:1 Fc:1 Fs:1 FL:1}



static void Test_BFs1i_BFs1c_BFs1s_BFu1ll()
{
  {
    init_simple_test("BFs1i_BFs1c_BFs1s_BFu1ll");
    static STRUCT_IF_C BFs1i_BFs1c_BFs1s_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1c_BFs1s_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1c_BFs1s_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1c_BFs1s_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1c_BFs1s_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1c_BFs1s_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1c_BFs1s_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1c_BFs1s_BFu1ll, BFs1i_BFs1c_BFs1s_BFu1ll)
//============================================================================


struct  BFs1i_BFs1c_BFs1s_BFu1s  {
  signed int v1:1;
  signed char v2:1;
  signed short v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1i_BFs1c_BFs1s_BFu1s) C1{ Fi:1 Fc:1 Fs:1 Fs:1}



static void Test_BFs1i_BFs1c_BFs1s_BFu1s()
{
  {
    init_simple_test("BFs1i_BFs1c_BFs1s_BFu1s");
    static STRUCT_IF_C BFs1i_BFs1c_BFs1s_BFu1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1c_BFs1s_BFu1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1c_BFs1s_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1c_BFs1s_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1c_BFs1s_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1c_BFs1s_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1c_BFs1s_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1c_BFs1s_BFu1s, BFs1i_BFs1c_BFs1s_BFu1s)
//============================================================================


struct  BFs1i_BFs1c_BFu1c  {
  signed int v1:1;
  signed char v2:1;
  unsigned char v3:1;
};
//SIG(1 BFs1i_BFs1c_BFu1c) C1{ Fi:1 Fc:1 Fc:1}



static void Test_BFs1i_BFs1c_BFu1c()
{
  {
    init_simple_test("BFs1i_BFs1c_BFu1c");
    static STRUCT_IF_C BFs1i_BFs1c_BFu1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1c_BFu1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1c_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1c_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1c_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1c_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1c_BFu1c, BFs1i_BFs1c_BFu1c)
//============================================================================


struct  BFs1i_BFs1c_BFu1c_BFs1c  {
  signed int v1:1;
  signed char v2:1;
  unsigned char v3:1;
  signed char v4:1;
};
//SIG(1 BFs1i_BFs1c_BFu1c_BFs1c) C1{ Fi:1 Fc:1 Fc:1 Fc:1}



static void Test_BFs1i_BFs1c_BFu1c_BFs1c()
{
  {
    init_simple_test("BFs1i_BFs1c_BFu1c_BFs1c");
    static STRUCT_IF_C BFs1i_BFs1c_BFu1c_BFs1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1c_BFu1c_BFs1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1c_BFu1c_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1c_BFu1c_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1c_BFu1c_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1c_BFu1c_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1c_BFu1c_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1c_BFu1c_BFs1c, BFs1i_BFs1c_BFu1c_BFs1c)
//============================================================================


struct  BFs1i_BFs1c_BFu1c_BFs1i  {
  signed int v1:1;
  signed char v2:1;
  unsigned char v3:1;
  signed int v4:1;
};
//SIG(1 BFs1i_BFs1c_BFu1c_BFs1i) C1{ Fi:1 Fc:1 Fc:1 Fi:1}



static void Test_BFs1i_BFs1c_BFu1c_BFs1i()
{
  {
    init_simple_test("BFs1i_BFs1c_BFu1c_BFs1i");
    static STRUCT_IF_C BFs1i_BFs1c_BFu1c_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1c_BFu1c_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1c_BFu1c_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1c_BFu1c_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1c_BFu1c_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1c_BFu1c_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1c_BFu1c_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1c_BFu1c_BFs1i, BFs1i_BFs1c_BFu1c_BFs1i)
//============================================================================


struct  BFs1i_BFs1c_BFu1c_BFs1ll  {
  signed int v1:1;
  signed char v2:1;
  unsigned char v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1i_BFs1c_BFu1c_BFs1ll) C1{ Fi:1 Fc:1 Fc:1 FL:1}



static void Test_BFs1i_BFs1c_BFu1c_BFs1ll()
{
  {
    init_simple_test("BFs1i_BFs1c_BFu1c_BFs1ll");
    static STRUCT_IF_C BFs1i_BFs1c_BFu1c_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1c_BFu1c_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1c_BFu1c_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1c_BFu1c_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1c_BFu1c_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1c_BFu1c_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1c_BFu1c_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1c_BFu1c_BFs1ll, BFs1i_BFs1c_BFu1c_BFs1ll)
//============================================================================


struct  BFs1i_BFs1c_BFu1c_BFs1s  {
  signed int v1:1;
  signed char v2:1;
  unsigned char v3:1;
  signed short v4:1;
};
//SIG(1 BFs1i_BFs1c_BFu1c_BFs1s) C1{ Fi:1 Fc:1 Fc:1 Fs:1}



static void Test_BFs1i_BFs1c_BFu1c_BFs1s()
{
  {
    init_simple_test("BFs1i_BFs1c_BFu1c_BFs1s");
    static STRUCT_IF_C BFs1i_BFs1c_BFu1c_BFs1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1c_BFu1c_BFs1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1c_BFu1c_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1c_BFu1c_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1c_BFu1c_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1c_BFu1c_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1c_BFu1c_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1c_BFu1c_BFs1s, BFs1i_BFs1c_BFu1c_BFs1s)
//============================================================================


struct  BFs1i_BFs1c_BFu1c_BFu1c  {
  signed int v1:1;
  signed char v2:1;
  unsigned char v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1i_BFs1c_BFu1c_BFu1c) C1{ Fi:1 Fc:1 Fc:1 Fc:1}



static void Test_BFs1i_BFs1c_BFu1c_BFu1c()
{
  {
    init_simple_test("BFs1i_BFs1c_BFu1c_BFu1c");
    static STRUCT_IF_C BFs1i_BFs1c_BFu1c_BFu1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1c_BFu1c_BFu1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1c_BFu1c_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1c_BFu1c_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1c_BFu1c_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1c_BFu1c_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1c_BFu1c_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1c_BFu1c_BFu1c, BFs1i_BFs1c_BFu1c_BFu1c)
//============================================================================


struct  BFs1i_BFs1c_BFu1c_BFu1i  {
  signed int v1:1;
  signed char v2:1;
  unsigned char v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1i_BFs1c_BFu1c_BFu1i) C1{ Fi:1 Fc:1 Fc:1 Fi:1}



static void Test_BFs1i_BFs1c_BFu1c_BFu1i()
{
  {
    init_simple_test("BFs1i_BFs1c_BFu1c_BFu1i");
    static STRUCT_IF_C BFs1i_BFs1c_BFu1c_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1c_BFu1c_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1c_BFu1c_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1c_BFu1c_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1c_BFu1c_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1c_BFu1c_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1c_BFu1c_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1c_BFu1c_BFu1i, BFs1i_BFs1c_BFu1c_BFu1i)
//============================================================================


struct  BFs1i_BFs1c_BFu1c_BFu1ll  {
  signed int v1:1;
  signed char v2:1;
  unsigned char v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1i_BFs1c_BFu1c_BFu1ll) C1{ Fi:1 Fc:1 Fc:1 FL:1}



static void Test_BFs1i_BFs1c_BFu1c_BFu1ll()
{
  {
    init_simple_test("BFs1i_BFs1c_BFu1c_BFu1ll");
    static STRUCT_IF_C BFs1i_BFs1c_BFu1c_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1c_BFu1c_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1c_BFu1c_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1c_BFu1c_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1c_BFu1c_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1c_BFu1c_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1c_BFu1c_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1c_BFu1c_BFu1ll, BFs1i_BFs1c_BFu1c_BFu1ll)
//============================================================================


struct  BFs1i_BFs1c_BFu1c_BFu1s  {
  signed int v1:1;
  signed char v2:1;
  unsigned char v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1i_BFs1c_BFu1c_BFu1s) C1{ Fi:1 Fc:1 Fc:1 Fs:1}



static void Test_BFs1i_BFs1c_BFu1c_BFu1s()
{
  {
    init_simple_test("BFs1i_BFs1c_BFu1c_BFu1s");
    static STRUCT_IF_C BFs1i_BFs1c_BFu1c_BFu1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1c_BFu1c_BFu1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1c_BFu1c_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1c_BFu1c_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1c_BFu1c_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1c_BFu1c_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1c_BFu1c_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1c_BFu1c_BFu1s, BFs1i_BFs1c_BFu1c_BFu1s)
//============================================================================


struct  BFs1i_BFs1c_BFu1i  {
  signed int v1:1;
  signed char v2:1;
  unsigned int v3:1;
};
//SIG(1 BFs1i_BFs1c_BFu1i) C1{ Fi:1 Fc:1 Fi:1}



static void Test_BFs1i_BFs1c_BFu1i()
{
  {
    init_simple_test("BFs1i_BFs1c_BFu1i");
    static STRUCT_IF_C BFs1i_BFs1c_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1c_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1c_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1c_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1c_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1c_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1c_BFu1i, BFs1i_BFs1c_BFu1i)
//============================================================================


struct  BFs1i_BFs1c_BFu1i_BFs1c  {
  signed int v1:1;
  signed char v2:1;
  unsigned int v3:1;
  signed char v4:1;
};
//SIG(1 BFs1i_BFs1c_BFu1i_BFs1c) C1{ Fi:1 Fc:1 Fi:1 Fc:1}



static void Test_BFs1i_BFs1c_BFu1i_BFs1c()
{
  {
    init_simple_test("BFs1i_BFs1c_BFu1i_BFs1c");
    static STRUCT_IF_C BFs1i_BFs1c_BFu1i_BFs1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1c_BFu1i_BFs1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1c_BFu1i_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1c_BFu1i_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1c_BFu1i_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1c_BFu1i_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1c_BFu1i_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1c_BFu1i_BFs1c, BFs1i_BFs1c_BFu1i_BFs1c)
//============================================================================


struct  BFs1i_BFs1c_BFu1i_BFs1i  {
  signed int v1:1;
  signed char v2:1;
  unsigned int v3:1;
  signed int v4:1;
};
//SIG(1 BFs1i_BFs1c_BFu1i_BFs1i) C1{ Fi:1 Fc:1 Fi:1 Fi:1}



static void Test_BFs1i_BFs1c_BFu1i_BFs1i()
{
  {
    init_simple_test("BFs1i_BFs1c_BFu1i_BFs1i");
    static STRUCT_IF_C BFs1i_BFs1c_BFu1i_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1c_BFu1i_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1c_BFu1i_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1c_BFu1i_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1c_BFu1i_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1c_BFu1i_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1c_BFu1i_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1c_BFu1i_BFs1i, BFs1i_BFs1c_BFu1i_BFs1i)
//============================================================================


struct  BFs1i_BFs1c_BFu1i_BFs1ll  {
  signed int v1:1;
  signed char v2:1;
  unsigned int v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1i_BFs1c_BFu1i_BFs1ll) C1{ Fi:1 Fc:1 Fi:1 FL:1}



static void Test_BFs1i_BFs1c_BFu1i_BFs1ll()
{
  {
    init_simple_test("BFs1i_BFs1c_BFu1i_BFs1ll");
    static STRUCT_IF_C BFs1i_BFs1c_BFu1i_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1c_BFu1i_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1c_BFu1i_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1c_BFu1i_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1c_BFu1i_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1c_BFu1i_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1c_BFu1i_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1c_BFu1i_BFs1ll, BFs1i_BFs1c_BFu1i_BFs1ll)
//============================================================================


struct  BFs1i_BFs1c_BFu1i_BFs1s  {
  signed int v1:1;
  signed char v2:1;
  unsigned int v3:1;
  signed short v4:1;
};
//SIG(1 BFs1i_BFs1c_BFu1i_BFs1s) C1{ Fi:1 Fc:1 Fi:1 Fs:1}



static void Test_BFs1i_BFs1c_BFu1i_BFs1s()
{
  {
    init_simple_test("BFs1i_BFs1c_BFu1i_BFs1s");
    static STRUCT_IF_C BFs1i_BFs1c_BFu1i_BFs1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1c_BFu1i_BFs1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1c_BFu1i_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1c_BFu1i_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1c_BFu1i_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1c_BFu1i_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1c_BFu1i_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1c_BFu1i_BFs1s, BFs1i_BFs1c_BFu1i_BFs1s)
//============================================================================


struct  BFs1i_BFs1c_BFu1i_BFu1c  {
  signed int v1:1;
  signed char v2:1;
  unsigned int v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1i_BFs1c_BFu1i_BFu1c) C1{ Fi:1 Fc:1 Fi:1 Fc:1}



static void Test_BFs1i_BFs1c_BFu1i_BFu1c()
{
  {
    init_simple_test("BFs1i_BFs1c_BFu1i_BFu1c");
    static STRUCT_IF_C BFs1i_BFs1c_BFu1i_BFu1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1c_BFu1i_BFu1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1c_BFu1i_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1c_BFu1i_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1c_BFu1i_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1c_BFu1i_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1c_BFu1i_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1c_BFu1i_BFu1c, BFs1i_BFs1c_BFu1i_BFu1c)
//============================================================================


struct  BFs1i_BFs1c_BFu1i_BFu1i  {
  signed int v1:1;
  signed char v2:1;
  unsigned int v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1i_BFs1c_BFu1i_BFu1i) C1{ Fi:1 Fc:1 Fi:1 Fi:1}



static void Test_BFs1i_BFs1c_BFu1i_BFu1i()
{
  {
    init_simple_test("BFs1i_BFs1c_BFu1i_BFu1i");
    static STRUCT_IF_C BFs1i_BFs1c_BFu1i_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1c_BFu1i_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1c_BFu1i_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1c_BFu1i_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1c_BFu1i_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1c_BFu1i_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1c_BFu1i_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1c_BFu1i_BFu1i, BFs1i_BFs1c_BFu1i_BFu1i)
//============================================================================


struct  BFs1i_BFs1c_BFu1i_BFu1ll  {
  signed int v1:1;
  signed char v2:1;
  unsigned int v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1i_BFs1c_BFu1i_BFu1ll) C1{ Fi:1 Fc:1 Fi:1 FL:1}



static void Test_BFs1i_BFs1c_BFu1i_BFu1ll()
{
  {
    init_simple_test("BFs1i_BFs1c_BFu1i_BFu1ll");
    static STRUCT_IF_C BFs1i_BFs1c_BFu1i_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1c_BFu1i_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1c_BFu1i_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1c_BFu1i_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1c_BFu1i_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1c_BFu1i_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1c_BFu1i_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1c_BFu1i_BFu1ll, BFs1i_BFs1c_BFu1i_BFu1ll)
//============================================================================


struct  BFs1i_BFs1c_BFu1i_BFu1s  {
  signed int v1:1;
  signed char v2:1;
  unsigned int v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1i_BFs1c_BFu1i_BFu1s) C1{ Fi:1 Fc:1 Fi:1 Fs:1}



static void Test_BFs1i_BFs1c_BFu1i_BFu1s()
{
  {
    init_simple_test("BFs1i_BFs1c_BFu1i_BFu1s");
    static STRUCT_IF_C BFs1i_BFs1c_BFu1i_BFu1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1c_BFu1i_BFu1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1c_BFu1i_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1c_BFu1i_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1c_BFu1i_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1c_BFu1i_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1c_BFu1i_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1c_BFu1i_BFu1s, BFs1i_BFs1c_BFu1i_BFu1s)
//============================================================================


struct  BFs1i_BFs1c_BFu1ll  {
  signed int v1:1;
  signed char v2:1;
  __tsu64 v3:1;
};
//SIG(1 BFs1i_BFs1c_BFu1ll) C1{ Fi:1 Fc:1 FL:1}



static void Test_BFs1i_BFs1c_BFu1ll()
{
  {
    init_simple_test("BFs1i_BFs1c_BFu1ll");
    static STRUCT_IF_C BFs1i_BFs1c_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1c_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1c_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1c_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1c_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1c_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1c_BFu1ll, BFs1i_BFs1c_BFu1ll)
//============================================================================


struct  BFs1i_BFs1c_BFu1ll_BFs1c  {
  signed int v1:1;
  signed char v2:1;
  __tsu64 v3:1;
  signed char v4:1;
};
//SIG(1 BFs1i_BFs1c_BFu1ll_BFs1c) C1{ Fi:1 Fc:1 FL:1 Fc:1}



static void Test_BFs1i_BFs1c_BFu1ll_BFs1c()
{
  {
    init_simple_test("BFs1i_BFs1c_BFu1ll_BFs1c");
    static STRUCT_IF_C BFs1i_BFs1c_BFu1ll_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1c_BFu1ll_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1c_BFu1ll_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1c_BFu1ll_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1c_BFu1ll_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1c_BFu1ll_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1c_BFu1ll_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1c_BFu1ll_BFs1c, BFs1i_BFs1c_BFu1ll_BFs1c)
//============================================================================


struct  BFs1i_BFs1c_BFu1ll_BFs1i  {
  signed int v1:1;
  signed char v2:1;
  __tsu64 v3:1;
  signed int v4:1;
};
//SIG(1 BFs1i_BFs1c_BFu1ll_BFs1i) C1{ Fi:1 Fc:1 FL:1 Fi:1}



static void Test_BFs1i_BFs1c_BFu1ll_BFs1i()
{
  {
    init_simple_test("BFs1i_BFs1c_BFu1ll_BFs1i");
    static STRUCT_IF_C BFs1i_BFs1c_BFu1ll_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1c_BFu1ll_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1c_BFu1ll_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1c_BFu1ll_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1c_BFu1ll_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1c_BFu1ll_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1c_BFu1ll_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1c_BFu1ll_BFs1i, BFs1i_BFs1c_BFu1ll_BFs1i)
//============================================================================


struct  BFs1i_BFs1c_BFu1ll_BFs1ll  {
  signed int v1:1;
  signed char v2:1;
  __tsu64 v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1i_BFs1c_BFu1ll_BFs1ll) C1{ Fi:1 Fc:1 FL:1 FL:1}



static void Test_BFs1i_BFs1c_BFu1ll_BFs1ll()
{
  {
    init_simple_test("BFs1i_BFs1c_BFu1ll_BFs1ll");
    static STRUCT_IF_C BFs1i_BFs1c_BFu1ll_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1c_BFu1ll_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1c_BFu1ll_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1c_BFu1ll_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1c_BFu1ll_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1c_BFu1ll_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1c_BFu1ll_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1c_BFu1ll_BFs1ll, BFs1i_BFs1c_BFu1ll_BFs1ll)
//============================================================================


struct  BFs1i_BFs1c_BFu1ll_BFs1s  {
  signed int v1:1;
  signed char v2:1;
  __tsu64 v3:1;
  signed short v4:1;
};
//SIG(1 BFs1i_BFs1c_BFu1ll_BFs1s) C1{ Fi:1 Fc:1 FL:1 Fs:1}



static void Test_BFs1i_BFs1c_BFu1ll_BFs1s()
{
  {
    init_simple_test("BFs1i_BFs1c_BFu1ll_BFs1s");
    static STRUCT_IF_C BFs1i_BFs1c_BFu1ll_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1c_BFu1ll_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1c_BFu1ll_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1c_BFu1ll_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1c_BFu1ll_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1c_BFu1ll_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1c_BFu1ll_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1c_BFu1ll_BFs1s, BFs1i_BFs1c_BFu1ll_BFs1s)
//============================================================================


struct  BFs1i_BFs1c_BFu1ll_BFu1c  {
  signed int v1:1;
  signed char v2:1;
  __tsu64 v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1i_BFs1c_BFu1ll_BFu1c) C1{ Fi:1 Fc:1 FL:1 Fc:1}



static void Test_BFs1i_BFs1c_BFu1ll_BFu1c()
{
  {
    init_simple_test("BFs1i_BFs1c_BFu1ll_BFu1c");
    static STRUCT_IF_C BFs1i_BFs1c_BFu1ll_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1c_BFu1ll_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1c_BFu1ll_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1c_BFu1ll_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1c_BFu1ll_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1c_BFu1ll_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1c_BFu1ll_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1c_BFu1ll_BFu1c, BFs1i_BFs1c_BFu1ll_BFu1c)
//============================================================================


struct  BFs1i_BFs1c_BFu1ll_BFu1i  {
  signed int v1:1;
  signed char v2:1;
  __tsu64 v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1i_BFs1c_BFu1ll_BFu1i) C1{ Fi:1 Fc:1 FL:1 Fi:1}



static void Test_BFs1i_BFs1c_BFu1ll_BFu1i()
{
  {
    init_simple_test("BFs1i_BFs1c_BFu1ll_BFu1i");
    static STRUCT_IF_C BFs1i_BFs1c_BFu1ll_BFu1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1c_BFu1ll_BFu1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1c_BFu1ll_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1c_BFu1ll_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1c_BFu1ll_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1c_BFu1ll_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1c_BFu1ll_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1c_BFu1ll_BFu1i, BFs1i_BFs1c_BFu1ll_BFu1i)
//============================================================================


struct  BFs1i_BFs1c_BFu1ll_BFu1ll  {
  signed int v1:1;
  signed char v2:1;
  __tsu64 v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1i_BFs1c_BFu1ll_BFu1ll) C1{ Fi:1 Fc:1 FL:1 FL:1}



static void Test_BFs1i_BFs1c_BFu1ll_BFu1ll()
{
  {
    init_simple_test("BFs1i_BFs1c_BFu1ll_BFu1ll");
    static STRUCT_IF_C BFs1i_BFs1c_BFu1ll_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1c_BFu1ll_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1c_BFu1ll_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1c_BFu1ll_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1c_BFu1ll_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1c_BFu1ll_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1c_BFu1ll_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1c_BFu1ll_BFu1ll, BFs1i_BFs1c_BFu1ll_BFu1ll)
//============================================================================


struct  BFs1i_BFs1c_BFu1ll_BFu1s  {
  signed int v1:1;
  signed char v2:1;
  __tsu64 v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1i_BFs1c_BFu1ll_BFu1s) C1{ Fi:1 Fc:1 FL:1 Fs:1}



static void Test_BFs1i_BFs1c_BFu1ll_BFu1s()
{
  {
    init_simple_test("BFs1i_BFs1c_BFu1ll_BFu1s");
    static STRUCT_IF_C BFs1i_BFs1c_BFu1ll_BFu1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1c_BFu1ll_BFu1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1c_BFu1ll_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1c_BFu1ll_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1c_BFu1ll_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1c_BFu1ll_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1c_BFu1ll_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1c_BFu1ll_BFu1s, BFs1i_BFs1c_BFu1ll_BFu1s)
//============================================================================


struct  BFs1i_BFs1c_BFu1s  {
  signed int v1:1;
  signed char v2:1;
  unsigned short v3:1;
};
//SIG(1 BFs1i_BFs1c_BFu1s) C1{ Fi:1 Fc:1 Fs:1}



static void Test_BFs1i_BFs1c_BFu1s()
{
  {
    init_simple_test("BFs1i_BFs1c_BFu1s");
    static STRUCT_IF_C BFs1i_BFs1c_BFu1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1c_BFu1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1c_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1c_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1c_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1c_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1c_BFu1s, BFs1i_BFs1c_BFu1s)
//============================================================================


struct  BFs1i_BFs1c_BFu1s_BFs1c  {
  signed int v1:1;
  signed char v2:1;
  unsigned short v3:1;
  signed char v4:1;
};
//SIG(1 BFs1i_BFs1c_BFu1s_BFs1c) C1{ Fi:1 Fc:1 Fs:1 Fc:1}



static void Test_BFs1i_BFs1c_BFu1s_BFs1c()
{
  {
    init_simple_test("BFs1i_BFs1c_BFu1s_BFs1c");
    static STRUCT_IF_C BFs1i_BFs1c_BFu1s_BFs1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1c_BFu1s_BFs1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1c_BFu1s_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1c_BFu1s_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1c_BFu1s_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1c_BFu1s_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1c_BFu1s_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1c_BFu1s_BFs1c, BFs1i_BFs1c_BFu1s_BFs1c)
//============================================================================


struct  BFs1i_BFs1c_BFu1s_BFs1i  {
  signed int v1:1;
  signed char v2:1;
  unsigned short v3:1;
  signed int v4:1;
};
//SIG(1 BFs1i_BFs1c_BFu1s_BFs1i) C1{ Fi:1 Fc:1 Fs:1 Fi:1}



static void Test_BFs1i_BFs1c_BFu1s_BFs1i()
{
  {
    init_simple_test("BFs1i_BFs1c_BFu1s_BFs1i");
    static STRUCT_IF_C BFs1i_BFs1c_BFu1s_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1c_BFu1s_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1c_BFu1s_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1c_BFu1s_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1c_BFu1s_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1c_BFu1s_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1c_BFu1s_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1c_BFu1s_BFs1i, BFs1i_BFs1c_BFu1s_BFs1i)
//============================================================================


struct  BFs1i_BFs1c_BFu1s_BFs1ll  {
  signed int v1:1;
  signed char v2:1;
  unsigned short v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1i_BFs1c_BFu1s_BFs1ll) C1{ Fi:1 Fc:1 Fs:1 FL:1}



static void Test_BFs1i_BFs1c_BFu1s_BFs1ll()
{
  {
    init_simple_test("BFs1i_BFs1c_BFu1s_BFs1ll");
    static STRUCT_IF_C BFs1i_BFs1c_BFu1s_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1c_BFu1s_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1c_BFu1s_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1c_BFu1s_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1c_BFu1s_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1c_BFu1s_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1c_BFu1s_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1c_BFu1s_BFs1ll, BFs1i_BFs1c_BFu1s_BFs1ll)
//============================================================================


struct  BFs1i_BFs1c_BFu1s_BFs1s  {
  signed int v1:1;
  signed char v2:1;
  unsigned short v3:1;
  signed short v4:1;
};
//SIG(1 BFs1i_BFs1c_BFu1s_BFs1s) C1{ Fi:1 Fc:1 Fs:1 Fs:1}



static void Test_BFs1i_BFs1c_BFu1s_BFs1s()
{
  {
    init_simple_test("BFs1i_BFs1c_BFu1s_BFs1s");
    static STRUCT_IF_C BFs1i_BFs1c_BFu1s_BFs1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1c_BFu1s_BFs1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1c_BFu1s_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1c_BFu1s_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1c_BFu1s_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1c_BFu1s_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1c_BFu1s_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1c_BFu1s_BFs1s, BFs1i_BFs1c_BFu1s_BFs1s)
//============================================================================


struct  BFs1i_BFs1c_BFu1s_BFu1c  {
  signed int v1:1;
  signed char v2:1;
  unsigned short v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1i_BFs1c_BFu1s_BFu1c) C1{ Fi:1 Fc:1 Fs:1 Fc:1}



static void Test_BFs1i_BFs1c_BFu1s_BFu1c()
{
  {
    init_simple_test("BFs1i_BFs1c_BFu1s_BFu1c");
    static STRUCT_IF_C BFs1i_BFs1c_BFu1s_BFu1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1c_BFu1s_BFu1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1c_BFu1s_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1c_BFu1s_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1c_BFu1s_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1c_BFu1s_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1c_BFu1s_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1c_BFu1s_BFu1c, BFs1i_BFs1c_BFu1s_BFu1c)
//============================================================================


struct  BFs1i_BFs1c_BFu1s_BFu1i  {
  signed int v1:1;
  signed char v2:1;
  unsigned short v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1i_BFs1c_BFu1s_BFu1i) C1{ Fi:1 Fc:1 Fs:1 Fi:1}



static void Test_BFs1i_BFs1c_BFu1s_BFu1i()
{
  {
    init_simple_test("BFs1i_BFs1c_BFu1s_BFu1i");
    static STRUCT_IF_C BFs1i_BFs1c_BFu1s_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1c_BFu1s_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1c_BFu1s_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1c_BFu1s_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1c_BFu1s_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1c_BFu1s_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1c_BFu1s_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1c_BFu1s_BFu1i, BFs1i_BFs1c_BFu1s_BFu1i)
//============================================================================


struct  BFs1i_BFs1c_BFu1s_BFu1ll  {
  signed int v1:1;
  signed char v2:1;
  unsigned short v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1i_BFs1c_BFu1s_BFu1ll) C1{ Fi:1 Fc:1 Fs:1 FL:1}



static void Test_BFs1i_BFs1c_BFu1s_BFu1ll()
{
  {
    init_simple_test("BFs1i_BFs1c_BFu1s_BFu1ll");
    static STRUCT_IF_C BFs1i_BFs1c_BFu1s_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1c_BFu1s_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1c_BFu1s_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1c_BFu1s_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1c_BFu1s_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1c_BFu1s_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1c_BFu1s_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1c_BFu1s_BFu1ll, BFs1i_BFs1c_BFu1s_BFu1ll)
//============================================================================


struct  BFs1i_BFs1c_BFu1s_BFu1s  {
  signed int v1:1;
  signed char v2:1;
  unsigned short v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1i_BFs1c_BFu1s_BFu1s) C1{ Fi:1 Fc:1 Fs:1 Fs:1}



static void Test_BFs1i_BFs1c_BFu1s_BFu1s()
{
  {
    init_simple_test("BFs1i_BFs1c_BFu1s_BFu1s");
    static STRUCT_IF_C BFs1i_BFs1c_BFu1s_BFu1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1c_BFu1s_BFu1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1c_BFu1s_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1c_BFu1s_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1c_BFu1s_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1c_BFu1s_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1c_BFu1s_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1c_BFu1s_BFu1s, BFs1i_BFs1c_BFu1s_BFu1s)
//============================================================================


struct  BFs1i_BFs1i  {
  signed int v1:1;
  signed int v2:1;
};
//SIG(1 BFs1i_BFs1i) C1{ Fi:1 Fi:1}



static void Test_BFs1i_BFs1i()
{
  {
    init_simple_test("BFs1i_BFs1i");
    static STRUCT_IF_C BFs1i_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1i, BFs1i_BFs1i)
//============================================================================


struct  BFs1i_BFs1i_BFs1c  {
  signed int v1:1;
  signed int v2:1;
  signed char v3:1;
};
//SIG(1 BFs1i_BFs1i_BFs1c) C1{ Fi:1 Fi:1 Fc:1}



static void Test_BFs1i_BFs1i_BFs1c()
{
  {
    init_simple_test("BFs1i_BFs1i_BFs1c");
    static STRUCT_IF_C BFs1i_BFs1i_BFs1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1i_BFs1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1i_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1i_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1i_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1i_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1i_BFs1c, BFs1i_BFs1i_BFs1c)
//============================================================================


struct  BFs1i_BFs1i_BFs1c_BFs1c  {
  signed int v1:1;
  signed int v2:1;
  signed char v3:1;
  signed char v4:1;
};
//SIG(1 BFs1i_BFs1i_BFs1c_BFs1c) C1{ Fi:1 Fi:1 Fc:1 Fc:1}



static void Test_BFs1i_BFs1i_BFs1c_BFs1c()
{
  {
    init_simple_test("BFs1i_BFs1i_BFs1c_BFs1c");
    static STRUCT_IF_C BFs1i_BFs1i_BFs1c_BFs1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1i_BFs1c_BFs1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1i_BFs1c_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1i_BFs1c_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1i_BFs1c_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1i_BFs1c_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1i_BFs1c_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1i_BFs1c_BFs1c, BFs1i_BFs1i_BFs1c_BFs1c)
//============================================================================


struct  BFs1i_BFs1i_BFs1c_BFs1i  {
  signed int v1:1;
  signed int v2:1;
  signed char v3:1;
  signed int v4:1;
};
//SIG(1 BFs1i_BFs1i_BFs1c_BFs1i) C1{ Fi:1 Fi:1 Fc:1 Fi:1}



static void Test_BFs1i_BFs1i_BFs1c_BFs1i()
{
  {
    init_simple_test("BFs1i_BFs1i_BFs1c_BFs1i");
    static STRUCT_IF_C BFs1i_BFs1i_BFs1c_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1i_BFs1c_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1i_BFs1c_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1i_BFs1c_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1i_BFs1c_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1i_BFs1c_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1i_BFs1c_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1i_BFs1c_BFs1i, BFs1i_BFs1i_BFs1c_BFs1i)
//============================================================================


struct  BFs1i_BFs1i_BFs1c_BFs1ll  {
  signed int v1:1;
  signed int v2:1;
  signed char v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1i_BFs1i_BFs1c_BFs1ll) C1{ Fi:1 Fi:1 Fc:1 FL:1}



static void Test_BFs1i_BFs1i_BFs1c_BFs1ll()
{
  {
    init_simple_test("BFs1i_BFs1i_BFs1c_BFs1ll");
    static STRUCT_IF_C BFs1i_BFs1i_BFs1c_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1i_BFs1c_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1i_BFs1c_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1i_BFs1c_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1i_BFs1c_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1i_BFs1c_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1i_BFs1c_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1i_BFs1c_BFs1ll, BFs1i_BFs1i_BFs1c_BFs1ll)
//============================================================================


struct  BFs1i_BFs1i_BFs1c_BFs1s  {
  signed int v1:1;
  signed int v2:1;
  signed char v3:1;
  signed short v4:1;
};
//SIG(1 BFs1i_BFs1i_BFs1c_BFs1s) C1{ Fi:1 Fi:1 Fc:1 Fs:1}



static void Test_BFs1i_BFs1i_BFs1c_BFs1s()
{
  {
    init_simple_test("BFs1i_BFs1i_BFs1c_BFs1s");
    static STRUCT_IF_C BFs1i_BFs1i_BFs1c_BFs1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1i_BFs1c_BFs1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1i_BFs1c_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1i_BFs1c_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1i_BFs1c_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1i_BFs1c_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1i_BFs1c_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1i_BFs1c_BFs1s, BFs1i_BFs1i_BFs1c_BFs1s)
//============================================================================


struct  BFs1i_BFs1i_BFs1c_BFu1c  {
  signed int v1:1;
  signed int v2:1;
  signed char v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1i_BFs1i_BFs1c_BFu1c) C1{ Fi:1 Fi:1 Fc:1 Fc:1}



static void Test_BFs1i_BFs1i_BFs1c_BFu1c()
{
  {
    init_simple_test("BFs1i_BFs1i_BFs1c_BFu1c");
    static STRUCT_IF_C BFs1i_BFs1i_BFs1c_BFu1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1i_BFs1c_BFu1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1i_BFs1c_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1i_BFs1c_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1i_BFs1c_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1i_BFs1c_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1i_BFs1c_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1i_BFs1c_BFu1c, BFs1i_BFs1i_BFs1c_BFu1c)
//============================================================================


struct  BFs1i_BFs1i_BFs1c_BFu1i  {
  signed int v1:1;
  signed int v2:1;
  signed char v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1i_BFs1i_BFs1c_BFu1i) C1{ Fi:1 Fi:1 Fc:1 Fi:1}



static void Test_BFs1i_BFs1i_BFs1c_BFu1i()
{
  {
    init_simple_test("BFs1i_BFs1i_BFs1c_BFu1i");
    static STRUCT_IF_C BFs1i_BFs1i_BFs1c_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1i_BFs1c_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1i_BFs1c_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1i_BFs1c_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1i_BFs1c_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1i_BFs1c_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1i_BFs1c_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1i_BFs1c_BFu1i, BFs1i_BFs1i_BFs1c_BFu1i)
//============================================================================


struct  BFs1i_BFs1i_BFs1c_BFu1ll  {
  signed int v1:1;
  signed int v2:1;
  signed char v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1i_BFs1i_BFs1c_BFu1ll) C1{ Fi:1 Fi:1 Fc:1 FL:1}



static void Test_BFs1i_BFs1i_BFs1c_BFu1ll()
{
  {
    init_simple_test("BFs1i_BFs1i_BFs1c_BFu1ll");
    static STRUCT_IF_C BFs1i_BFs1i_BFs1c_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1i_BFs1c_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1i_BFs1c_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1i_BFs1c_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1i_BFs1c_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1i_BFs1c_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1i_BFs1c_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1i_BFs1c_BFu1ll, BFs1i_BFs1i_BFs1c_BFu1ll)
//============================================================================


struct  BFs1i_BFs1i_BFs1c_BFu1s  {
  signed int v1:1;
  signed int v2:1;
  signed char v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1i_BFs1i_BFs1c_BFu1s) C1{ Fi:1 Fi:1 Fc:1 Fs:1}



static void Test_BFs1i_BFs1i_BFs1c_BFu1s()
{
  {
    init_simple_test("BFs1i_BFs1i_BFs1c_BFu1s");
    static STRUCT_IF_C BFs1i_BFs1i_BFs1c_BFu1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1i_BFs1c_BFu1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1i_BFs1c_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1i_BFs1c_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1i_BFs1c_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1i_BFs1c_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1i_BFs1c_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1i_BFs1c_BFu1s, BFs1i_BFs1i_BFs1c_BFu1s)
//============================================================================


struct  BFs1i_BFs1i_BFs1i  {
  signed int v1:1;
  signed int v2:1;
  signed int v3:1;
};
//SIG(1 BFs1i_BFs1i_BFs1i) C1{ Fi:1 Fi:1 Fi:1}



static void Test_BFs1i_BFs1i_BFs1i()
{
  {
    init_simple_test("BFs1i_BFs1i_BFs1i");
    static STRUCT_IF_C BFs1i_BFs1i_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1i_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1i_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1i_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1i_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1i_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1i_BFs1i, BFs1i_BFs1i_BFs1i)
//============================================================================


struct  BFs1i_BFs1i_BFs1i_BFs1c  {
  signed int v1:1;
  signed int v2:1;
  signed int v3:1;
  signed char v4:1;
};
//SIG(1 BFs1i_BFs1i_BFs1i_BFs1c) C1{ Fi:1 Fi:1 Fi:1 Fc:1}



static void Test_BFs1i_BFs1i_BFs1i_BFs1c()
{
  {
    init_simple_test("BFs1i_BFs1i_BFs1i_BFs1c");
    static STRUCT_IF_C BFs1i_BFs1i_BFs1i_BFs1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1i_BFs1i_BFs1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1i_BFs1i_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1i_BFs1i_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1i_BFs1i_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1i_BFs1i_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1i_BFs1i_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1i_BFs1i_BFs1c, BFs1i_BFs1i_BFs1i_BFs1c)
//============================================================================


struct  BFs1i_BFs1i_BFs1i_BFs1i  {
  signed int v1:1;
  signed int v2:1;
  signed int v3:1;
  signed int v4:1;
};
//SIG(1 BFs1i_BFs1i_BFs1i_BFs1i) C1{ Fi:1 Fi:1 Fi:1 Fi:1}



static void Test_BFs1i_BFs1i_BFs1i_BFs1i()
{
  {
    init_simple_test("BFs1i_BFs1i_BFs1i_BFs1i");
    static STRUCT_IF_C BFs1i_BFs1i_BFs1i_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1i_BFs1i_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1i_BFs1i_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1i_BFs1i_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1i_BFs1i_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1i_BFs1i_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1i_BFs1i_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1i_BFs1i_BFs1i, BFs1i_BFs1i_BFs1i_BFs1i)
//============================================================================


struct  BFs1i_BFs1i_BFs1i_BFs1ll  {
  signed int v1:1;
  signed int v2:1;
  signed int v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1i_BFs1i_BFs1i_BFs1ll) C1{ Fi:1 Fi:1 Fi:1 FL:1}



static void Test_BFs1i_BFs1i_BFs1i_BFs1ll()
{
  {
    init_simple_test("BFs1i_BFs1i_BFs1i_BFs1ll");
    static STRUCT_IF_C BFs1i_BFs1i_BFs1i_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1i_BFs1i_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1i_BFs1i_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1i_BFs1i_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1i_BFs1i_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1i_BFs1i_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1i_BFs1i_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1i_BFs1i_BFs1ll, BFs1i_BFs1i_BFs1i_BFs1ll)
//============================================================================


struct  BFs1i_BFs1i_BFs1i_BFs1s  {
  signed int v1:1;
  signed int v2:1;
  signed int v3:1;
  signed short v4:1;
};
//SIG(1 BFs1i_BFs1i_BFs1i_BFs1s) C1{ Fi:1 Fi:1 Fi:1 Fs:1}



static void Test_BFs1i_BFs1i_BFs1i_BFs1s()
{
  {
    init_simple_test("BFs1i_BFs1i_BFs1i_BFs1s");
    static STRUCT_IF_C BFs1i_BFs1i_BFs1i_BFs1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1i_BFs1i_BFs1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1i_BFs1i_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1i_BFs1i_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1i_BFs1i_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1i_BFs1i_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1i_BFs1i_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1i_BFs1i_BFs1s, BFs1i_BFs1i_BFs1i_BFs1s)
//============================================================================


struct  BFs1i_BFs1i_BFs1i_BFu1c  {
  signed int v1:1;
  signed int v2:1;
  signed int v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1i_BFs1i_BFs1i_BFu1c) C1{ Fi:1 Fi:1 Fi:1 Fc:1}



static void Test_BFs1i_BFs1i_BFs1i_BFu1c()
{
  {
    init_simple_test("BFs1i_BFs1i_BFs1i_BFu1c");
    static STRUCT_IF_C BFs1i_BFs1i_BFs1i_BFu1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1i_BFs1i_BFu1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1i_BFs1i_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1i_BFs1i_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1i_BFs1i_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1i_BFs1i_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1i_BFs1i_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1i_BFs1i_BFu1c, BFs1i_BFs1i_BFs1i_BFu1c)
//============================================================================


struct  BFs1i_BFs1i_BFs1i_BFu1i  {
  signed int v1:1;
  signed int v2:1;
  signed int v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1i_BFs1i_BFs1i_BFu1i) C1{ Fi:1 Fi:1 Fi:1 Fi:1}



static void Test_BFs1i_BFs1i_BFs1i_BFu1i()
{
  {
    init_simple_test("BFs1i_BFs1i_BFs1i_BFu1i");
    static STRUCT_IF_C BFs1i_BFs1i_BFs1i_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1i_BFs1i_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1i_BFs1i_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1i_BFs1i_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1i_BFs1i_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1i_BFs1i_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1i_BFs1i_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1i_BFs1i_BFu1i, BFs1i_BFs1i_BFs1i_BFu1i)
//============================================================================


struct  BFs1i_BFs1i_BFs1i_BFu1ll  {
  signed int v1:1;
  signed int v2:1;
  signed int v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1i_BFs1i_BFs1i_BFu1ll) C1{ Fi:1 Fi:1 Fi:1 FL:1}



static void Test_BFs1i_BFs1i_BFs1i_BFu1ll()
{
  {
    init_simple_test("BFs1i_BFs1i_BFs1i_BFu1ll");
    static STRUCT_IF_C BFs1i_BFs1i_BFs1i_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1i_BFs1i_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1i_BFs1i_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1i_BFs1i_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1i_BFs1i_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1i_BFs1i_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1i_BFs1i_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1i_BFs1i_BFu1ll, BFs1i_BFs1i_BFs1i_BFu1ll)
//============================================================================


struct  BFs1i_BFs1i_BFs1i_BFu1s  {
  signed int v1:1;
  signed int v2:1;
  signed int v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1i_BFs1i_BFs1i_BFu1s) C1{ Fi:1 Fi:1 Fi:1 Fs:1}



static void Test_BFs1i_BFs1i_BFs1i_BFu1s()
{
  {
    init_simple_test("BFs1i_BFs1i_BFs1i_BFu1s");
    static STRUCT_IF_C BFs1i_BFs1i_BFs1i_BFu1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1i_BFs1i_BFu1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1i_BFs1i_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1i_BFs1i_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1i_BFs1i_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1i_BFs1i_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1i_BFs1i_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1i_BFs1i_BFu1s, BFs1i_BFs1i_BFs1i_BFu1s)
//============================================================================


struct  BFs1i_BFs1i_BFs1ll  {
  signed int v1:1;
  signed int v2:1;
  signed __tsi64 v3:1;
};
//SIG(1 BFs1i_BFs1i_BFs1ll) C1{ Fi:1 Fi:1 FL:1}



static void Test_BFs1i_BFs1i_BFs1ll()
{
  {
    init_simple_test("BFs1i_BFs1i_BFs1ll");
    static STRUCT_IF_C BFs1i_BFs1i_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1i_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1i_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1i_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1i_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1i_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1i_BFs1ll, BFs1i_BFs1i_BFs1ll)
//============================================================================


struct  BFs1i_BFs1i_BFs1ll_BFs1c  {
  signed int v1:1;
  signed int v2:1;
  signed __tsi64 v3:1;
  signed char v4:1;
};
//SIG(1 BFs1i_BFs1i_BFs1ll_BFs1c) C1{ Fi:1 Fi:1 FL:1 Fc:1}



static void Test_BFs1i_BFs1i_BFs1ll_BFs1c()
{
  {
    init_simple_test("BFs1i_BFs1i_BFs1ll_BFs1c");
    static STRUCT_IF_C BFs1i_BFs1i_BFs1ll_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1i_BFs1ll_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1i_BFs1ll_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1i_BFs1ll_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1i_BFs1ll_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1i_BFs1ll_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1i_BFs1ll_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1i_BFs1ll_BFs1c, BFs1i_BFs1i_BFs1ll_BFs1c)
//============================================================================


struct  BFs1i_BFs1i_BFs1ll_BFs1i  {
  signed int v1:1;
  signed int v2:1;
  signed __tsi64 v3:1;
  signed int v4:1;
};
//SIG(1 BFs1i_BFs1i_BFs1ll_BFs1i) C1{ Fi:1 Fi:1 FL:1 Fi:1}



static void Test_BFs1i_BFs1i_BFs1ll_BFs1i()
{
  {
    init_simple_test("BFs1i_BFs1i_BFs1ll_BFs1i");
    static STRUCT_IF_C BFs1i_BFs1i_BFs1ll_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1i_BFs1ll_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1i_BFs1ll_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1i_BFs1ll_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1i_BFs1ll_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1i_BFs1ll_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1i_BFs1ll_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1i_BFs1ll_BFs1i, BFs1i_BFs1i_BFs1ll_BFs1i)
//============================================================================


struct  BFs1i_BFs1i_BFs1ll_BFs1ll  {
  signed int v1:1;
  signed int v2:1;
  signed __tsi64 v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1i_BFs1i_BFs1ll_BFs1ll) C1{ Fi:1 Fi:1 FL:1 FL:1}



static void Test_BFs1i_BFs1i_BFs1ll_BFs1ll()
{
  {
    init_simple_test("BFs1i_BFs1i_BFs1ll_BFs1ll");
    static STRUCT_IF_C BFs1i_BFs1i_BFs1ll_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1i_BFs1ll_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1i_BFs1ll_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1i_BFs1ll_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1i_BFs1ll_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1i_BFs1ll_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1i_BFs1ll_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1i_BFs1ll_BFs1ll, BFs1i_BFs1i_BFs1ll_BFs1ll)
//============================================================================


struct  BFs1i_BFs1i_BFs1ll_BFs1s  {
  signed int v1:1;
  signed int v2:1;
  signed __tsi64 v3:1;
  signed short v4:1;
};
//SIG(1 BFs1i_BFs1i_BFs1ll_BFs1s) C1{ Fi:1 Fi:1 FL:1 Fs:1}



static void Test_BFs1i_BFs1i_BFs1ll_BFs1s()
{
  {
    init_simple_test("BFs1i_BFs1i_BFs1ll_BFs1s");
    static STRUCT_IF_C BFs1i_BFs1i_BFs1ll_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1i_BFs1ll_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1i_BFs1ll_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1i_BFs1ll_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1i_BFs1ll_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1i_BFs1ll_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1i_BFs1ll_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1i_BFs1ll_BFs1s, BFs1i_BFs1i_BFs1ll_BFs1s)
//============================================================================


struct  BFs1i_BFs1i_BFs1ll_BFu1c  {
  signed int v1:1;
  signed int v2:1;
  signed __tsi64 v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1i_BFs1i_BFs1ll_BFu1c) C1{ Fi:1 Fi:1 FL:1 Fc:1}



static void Test_BFs1i_BFs1i_BFs1ll_BFu1c()
{
  {
    init_simple_test("BFs1i_BFs1i_BFs1ll_BFu1c");
    static STRUCT_IF_C BFs1i_BFs1i_BFs1ll_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1i_BFs1ll_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1i_BFs1ll_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1i_BFs1ll_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1i_BFs1ll_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1i_BFs1ll_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1i_BFs1ll_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1i_BFs1ll_BFu1c, BFs1i_BFs1i_BFs1ll_BFu1c)
//============================================================================


struct  BFs1i_BFs1i_BFs1ll_BFu1i  {
  signed int v1:1;
  signed int v2:1;
  signed __tsi64 v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1i_BFs1i_BFs1ll_BFu1i) C1{ Fi:1 Fi:1 FL:1 Fi:1}



static void Test_BFs1i_BFs1i_BFs1ll_BFu1i()
{
  {
    init_simple_test("BFs1i_BFs1i_BFs1ll_BFu1i");
    static STRUCT_IF_C BFs1i_BFs1i_BFs1ll_BFu1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1i_BFs1ll_BFu1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1i_BFs1ll_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1i_BFs1ll_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1i_BFs1ll_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1i_BFs1ll_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1i_BFs1ll_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1i_BFs1ll_BFu1i, BFs1i_BFs1i_BFs1ll_BFu1i)
//============================================================================


struct  BFs1i_BFs1i_BFs1ll_BFu1ll  {
  signed int v1:1;
  signed int v2:1;
  signed __tsi64 v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1i_BFs1i_BFs1ll_BFu1ll) C1{ Fi:1 Fi:1 FL:1 FL:1}



static void Test_BFs1i_BFs1i_BFs1ll_BFu1ll()
{
  {
    init_simple_test("BFs1i_BFs1i_BFs1ll_BFu1ll");
    static STRUCT_IF_C BFs1i_BFs1i_BFs1ll_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1i_BFs1ll_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1i_BFs1ll_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1i_BFs1ll_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1i_BFs1ll_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1i_BFs1ll_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1i_BFs1ll_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1i_BFs1ll_BFu1ll, BFs1i_BFs1i_BFs1ll_BFu1ll)
//============================================================================


struct  BFs1i_BFs1i_BFs1ll_BFu1s  {
  signed int v1:1;
  signed int v2:1;
  signed __tsi64 v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1i_BFs1i_BFs1ll_BFu1s) C1{ Fi:1 Fi:1 FL:1 Fs:1}



static void Test_BFs1i_BFs1i_BFs1ll_BFu1s()
{
  {
    init_simple_test("BFs1i_BFs1i_BFs1ll_BFu1s");
    static STRUCT_IF_C BFs1i_BFs1i_BFs1ll_BFu1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1i_BFs1ll_BFu1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1i_BFs1ll_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1i_BFs1ll_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1i_BFs1ll_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1i_BFs1ll_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1i_BFs1ll_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1i_BFs1ll_BFu1s, BFs1i_BFs1i_BFs1ll_BFu1s)
//============================================================================


struct  BFs1i_BFs1i_BFs1s  {
  signed int v1:1;
  signed int v2:1;
  signed short v3:1;
};
//SIG(1 BFs1i_BFs1i_BFs1s) C1{ Fi:1 Fi:1 Fs:1}



static void Test_BFs1i_BFs1i_BFs1s()
{
  {
    init_simple_test("BFs1i_BFs1i_BFs1s");
    static STRUCT_IF_C BFs1i_BFs1i_BFs1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1i_BFs1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1i_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1i_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1i_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1i_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1i_BFs1s, BFs1i_BFs1i_BFs1s)
//============================================================================


struct  BFs1i_BFs1i_BFs1s_BFs1c  {
  signed int v1:1;
  signed int v2:1;
  signed short v3:1;
  signed char v4:1;
};
//SIG(1 BFs1i_BFs1i_BFs1s_BFs1c) C1{ Fi:1 Fi:1 Fs:1 Fc:1}



static void Test_BFs1i_BFs1i_BFs1s_BFs1c()
{
  {
    init_simple_test("BFs1i_BFs1i_BFs1s_BFs1c");
    static STRUCT_IF_C BFs1i_BFs1i_BFs1s_BFs1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1i_BFs1s_BFs1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1i_BFs1s_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1i_BFs1s_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1i_BFs1s_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1i_BFs1s_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1i_BFs1s_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1i_BFs1s_BFs1c, BFs1i_BFs1i_BFs1s_BFs1c)
//============================================================================


struct  BFs1i_BFs1i_BFs1s_BFs1i  {
  signed int v1:1;
  signed int v2:1;
  signed short v3:1;
  signed int v4:1;
};
//SIG(1 BFs1i_BFs1i_BFs1s_BFs1i) C1{ Fi:1 Fi:1 Fs:1 Fi:1}



static void Test_BFs1i_BFs1i_BFs1s_BFs1i()
{
  {
    init_simple_test("BFs1i_BFs1i_BFs1s_BFs1i");
    static STRUCT_IF_C BFs1i_BFs1i_BFs1s_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1i_BFs1s_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1i_BFs1s_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1i_BFs1s_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1i_BFs1s_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1i_BFs1s_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1i_BFs1s_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1i_BFs1s_BFs1i, BFs1i_BFs1i_BFs1s_BFs1i)
//============================================================================


struct  BFs1i_BFs1i_BFs1s_BFs1ll  {
  signed int v1:1;
  signed int v2:1;
  signed short v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1i_BFs1i_BFs1s_BFs1ll) C1{ Fi:1 Fi:1 Fs:1 FL:1}



static void Test_BFs1i_BFs1i_BFs1s_BFs1ll()
{
  {
    init_simple_test("BFs1i_BFs1i_BFs1s_BFs1ll");
    static STRUCT_IF_C BFs1i_BFs1i_BFs1s_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1i_BFs1s_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1i_BFs1s_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1i_BFs1s_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1i_BFs1s_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1i_BFs1s_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1i_BFs1s_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1i_BFs1s_BFs1ll, BFs1i_BFs1i_BFs1s_BFs1ll)
//============================================================================


struct  BFs1i_BFs1i_BFs1s_BFs1s  {
  signed int v1:1;
  signed int v2:1;
  signed short v3:1;
  signed short v4:1;
};
//SIG(1 BFs1i_BFs1i_BFs1s_BFs1s) C1{ Fi:1 Fi:1 Fs:1 Fs:1}



static void Test_BFs1i_BFs1i_BFs1s_BFs1s()
{
  {
    init_simple_test("BFs1i_BFs1i_BFs1s_BFs1s");
    static STRUCT_IF_C BFs1i_BFs1i_BFs1s_BFs1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1i_BFs1s_BFs1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1i_BFs1s_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1i_BFs1s_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1i_BFs1s_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1i_BFs1s_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1i_BFs1s_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1i_BFs1s_BFs1s, BFs1i_BFs1i_BFs1s_BFs1s)
//============================================================================


struct  BFs1i_BFs1i_BFs1s_BFu1c  {
  signed int v1:1;
  signed int v2:1;
  signed short v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1i_BFs1i_BFs1s_BFu1c) C1{ Fi:1 Fi:1 Fs:1 Fc:1}



static void Test_BFs1i_BFs1i_BFs1s_BFu1c()
{
  {
    init_simple_test("BFs1i_BFs1i_BFs1s_BFu1c");
    static STRUCT_IF_C BFs1i_BFs1i_BFs1s_BFu1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1i_BFs1s_BFu1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1i_BFs1s_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1i_BFs1s_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1i_BFs1s_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1i_BFs1s_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1i_BFs1s_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1i_BFs1s_BFu1c, BFs1i_BFs1i_BFs1s_BFu1c)
//============================================================================


struct  BFs1i_BFs1i_BFs1s_BFu1i  {
  signed int v1:1;
  signed int v2:1;
  signed short v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1i_BFs1i_BFs1s_BFu1i) C1{ Fi:1 Fi:1 Fs:1 Fi:1}



static void Test_BFs1i_BFs1i_BFs1s_BFu1i()
{
  {
    init_simple_test("BFs1i_BFs1i_BFs1s_BFu1i");
    static STRUCT_IF_C BFs1i_BFs1i_BFs1s_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1i_BFs1s_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1i_BFs1s_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1i_BFs1s_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1i_BFs1s_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1i_BFs1s_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1i_BFs1s_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1i_BFs1s_BFu1i, BFs1i_BFs1i_BFs1s_BFu1i)
//============================================================================


struct  BFs1i_BFs1i_BFs1s_BFu1ll  {
  signed int v1:1;
  signed int v2:1;
  signed short v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1i_BFs1i_BFs1s_BFu1ll) C1{ Fi:1 Fi:1 Fs:1 FL:1}



static void Test_BFs1i_BFs1i_BFs1s_BFu1ll()
{
  {
    init_simple_test("BFs1i_BFs1i_BFs1s_BFu1ll");
    static STRUCT_IF_C BFs1i_BFs1i_BFs1s_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1i_BFs1s_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1i_BFs1s_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1i_BFs1s_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1i_BFs1s_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1i_BFs1s_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1i_BFs1s_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1i_BFs1s_BFu1ll, BFs1i_BFs1i_BFs1s_BFu1ll)
//============================================================================


struct  BFs1i_BFs1i_BFs1s_BFu1s  {
  signed int v1:1;
  signed int v2:1;
  signed short v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1i_BFs1i_BFs1s_BFu1s) C1{ Fi:1 Fi:1 Fs:1 Fs:1}



static void Test_BFs1i_BFs1i_BFs1s_BFu1s()
{
  {
    init_simple_test("BFs1i_BFs1i_BFs1s_BFu1s");
    static STRUCT_IF_C BFs1i_BFs1i_BFs1s_BFu1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1i_BFs1s_BFu1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1i_BFs1s_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1i_BFs1s_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1i_BFs1s_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1i_BFs1s_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1i_BFs1s_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1i_BFs1s_BFu1s, BFs1i_BFs1i_BFs1s_BFu1s)
//============================================================================


struct  BFs1i_BFs1i_BFu1c  {
  signed int v1:1;
  signed int v2:1;
  unsigned char v3:1;
};
//SIG(1 BFs1i_BFs1i_BFu1c) C1{ Fi:1 Fi:1 Fc:1}



static void Test_BFs1i_BFs1i_BFu1c()
{
  {
    init_simple_test("BFs1i_BFs1i_BFu1c");
    static STRUCT_IF_C BFs1i_BFs1i_BFu1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1i_BFu1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1i_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1i_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1i_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1i_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1i_BFu1c, BFs1i_BFs1i_BFu1c)
//============================================================================


struct  BFs1i_BFs1i_BFu1c_BFs1c  {
  signed int v1:1;
  signed int v2:1;
  unsigned char v3:1;
  signed char v4:1;
};
//SIG(1 BFs1i_BFs1i_BFu1c_BFs1c) C1{ Fi:1 Fi:1 Fc:1 Fc:1}



static void Test_BFs1i_BFs1i_BFu1c_BFs1c()
{
  {
    init_simple_test("BFs1i_BFs1i_BFu1c_BFs1c");
    static STRUCT_IF_C BFs1i_BFs1i_BFu1c_BFs1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1i_BFu1c_BFs1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1i_BFu1c_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1i_BFu1c_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1i_BFu1c_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1i_BFu1c_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1i_BFu1c_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1i_BFu1c_BFs1c, BFs1i_BFs1i_BFu1c_BFs1c)
//============================================================================


struct  BFs1i_BFs1i_BFu1c_BFs1i  {
  signed int v1:1;
  signed int v2:1;
  unsigned char v3:1;
  signed int v4:1;
};
//SIG(1 BFs1i_BFs1i_BFu1c_BFs1i) C1{ Fi:1 Fi:1 Fc:1 Fi:1}



static void Test_BFs1i_BFs1i_BFu1c_BFs1i()
{
  {
    init_simple_test("BFs1i_BFs1i_BFu1c_BFs1i");
    static STRUCT_IF_C BFs1i_BFs1i_BFu1c_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1i_BFu1c_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1i_BFu1c_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1i_BFu1c_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1i_BFu1c_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1i_BFu1c_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1i_BFu1c_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1i_BFu1c_BFs1i, BFs1i_BFs1i_BFu1c_BFs1i)
//============================================================================


struct  BFs1i_BFs1i_BFu1c_BFs1ll  {
  signed int v1:1;
  signed int v2:1;
  unsigned char v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1i_BFs1i_BFu1c_BFs1ll) C1{ Fi:1 Fi:1 Fc:1 FL:1}



static void Test_BFs1i_BFs1i_BFu1c_BFs1ll()
{
  {
    init_simple_test("BFs1i_BFs1i_BFu1c_BFs1ll");
    static STRUCT_IF_C BFs1i_BFs1i_BFu1c_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1i_BFu1c_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1i_BFu1c_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1i_BFu1c_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1i_BFu1c_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1i_BFu1c_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1i_BFu1c_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1i_BFu1c_BFs1ll, BFs1i_BFs1i_BFu1c_BFs1ll)
//============================================================================


struct  BFs1i_BFs1i_BFu1c_BFs1s  {
  signed int v1:1;
  signed int v2:1;
  unsigned char v3:1;
  signed short v4:1;
};
//SIG(1 BFs1i_BFs1i_BFu1c_BFs1s) C1{ Fi:1 Fi:1 Fc:1 Fs:1}



static void Test_BFs1i_BFs1i_BFu1c_BFs1s()
{
  {
    init_simple_test("BFs1i_BFs1i_BFu1c_BFs1s");
    static STRUCT_IF_C BFs1i_BFs1i_BFu1c_BFs1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1i_BFu1c_BFs1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1i_BFu1c_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1i_BFu1c_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1i_BFu1c_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1i_BFu1c_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1i_BFu1c_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1i_BFu1c_BFs1s, BFs1i_BFs1i_BFu1c_BFs1s)
//============================================================================


struct  BFs1i_BFs1i_BFu1c_BFu1c  {
  signed int v1:1;
  signed int v2:1;
  unsigned char v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1i_BFs1i_BFu1c_BFu1c) C1{ Fi:1 Fi:1 Fc:1 Fc:1}



static void Test_BFs1i_BFs1i_BFu1c_BFu1c()
{
  {
    init_simple_test("BFs1i_BFs1i_BFu1c_BFu1c");
    static STRUCT_IF_C BFs1i_BFs1i_BFu1c_BFu1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1i_BFu1c_BFu1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1i_BFu1c_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1i_BFu1c_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1i_BFu1c_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1i_BFu1c_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1i_BFu1c_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1i_BFu1c_BFu1c, BFs1i_BFs1i_BFu1c_BFu1c)
//============================================================================


struct  BFs1i_BFs1i_BFu1c_BFu1i  {
  signed int v1:1;
  signed int v2:1;
  unsigned char v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1i_BFs1i_BFu1c_BFu1i) C1{ Fi:1 Fi:1 Fc:1 Fi:1}



static void Test_BFs1i_BFs1i_BFu1c_BFu1i()
{
  {
    init_simple_test("BFs1i_BFs1i_BFu1c_BFu1i");
    static STRUCT_IF_C BFs1i_BFs1i_BFu1c_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1i_BFu1c_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1i_BFu1c_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1i_BFu1c_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1i_BFu1c_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1i_BFu1c_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1i_BFu1c_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1i_BFu1c_BFu1i, BFs1i_BFs1i_BFu1c_BFu1i)
//============================================================================


struct  BFs1i_BFs1i_BFu1c_BFu1ll  {
  signed int v1:1;
  signed int v2:1;
  unsigned char v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1i_BFs1i_BFu1c_BFu1ll) C1{ Fi:1 Fi:1 Fc:1 FL:1}



static void Test_BFs1i_BFs1i_BFu1c_BFu1ll()
{
  {
    init_simple_test("BFs1i_BFs1i_BFu1c_BFu1ll");
    static STRUCT_IF_C BFs1i_BFs1i_BFu1c_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1i_BFu1c_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1i_BFu1c_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1i_BFu1c_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1i_BFu1c_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1i_BFu1c_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1i_BFu1c_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1i_BFu1c_BFu1ll, BFs1i_BFs1i_BFu1c_BFu1ll)
//============================================================================


struct  BFs1i_BFs1i_BFu1c_BFu1s  {
  signed int v1:1;
  signed int v2:1;
  unsigned char v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1i_BFs1i_BFu1c_BFu1s) C1{ Fi:1 Fi:1 Fc:1 Fs:1}



static void Test_BFs1i_BFs1i_BFu1c_BFu1s()
{
  {
    init_simple_test("BFs1i_BFs1i_BFu1c_BFu1s");
    static STRUCT_IF_C BFs1i_BFs1i_BFu1c_BFu1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1i_BFu1c_BFu1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1i_BFu1c_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1i_BFu1c_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1i_BFu1c_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1i_BFu1c_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1i_BFu1c_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1i_BFu1c_BFu1s, BFs1i_BFs1i_BFu1c_BFu1s)
//============================================================================


struct  BFs1i_BFs1i_BFu1i  {
  signed int v1:1;
  signed int v2:1;
  unsigned int v3:1;
};
//SIG(1 BFs1i_BFs1i_BFu1i) C1{ Fi:1 Fi:1 Fi:1}



static void Test_BFs1i_BFs1i_BFu1i()
{
  {
    init_simple_test("BFs1i_BFs1i_BFu1i");
    static STRUCT_IF_C BFs1i_BFs1i_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1i_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1i_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1i_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1i_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1i_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1i_BFu1i, BFs1i_BFs1i_BFu1i)
//============================================================================


struct  BFs1i_BFs1i_BFu1i_BFs1c  {
  signed int v1:1;
  signed int v2:1;
  unsigned int v3:1;
  signed char v4:1;
};
//SIG(1 BFs1i_BFs1i_BFu1i_BFs1c) C1{ Fi:1 Fi:1 Fi:1 Fc:1}



static void Test_BFs1i_BFs1i_BFu1i_BFs1c()
{
  {
    init_simple_test("BFs1i_BFs1i_BFu1i_BFs1c");
    static STRUCT_IF_C BFs1i_BFs1i_BFu1i_BFs1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1i_BFu1i_BFs1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1i_BFu1i_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1i_BFu1i_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1i_BFu1i_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1i_BFu1i_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1i_BFu1i_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1i_BFu1i_BFs1c, BFs1i_BFs1i_BFu1i_BFs1c)
//============================================================================


struct  BFs1i_BFs1i_BFu1i_BFs1i  {
  signed int v1:1;
  signed int v2:1;
  unsigned int v3:1;
  signed int v4:1;
};
//SIG(1 BFs1i_BFs1i_BFu1i_BFs1i) C1{ Fi:1 Fi:1 Fi:1 Fi:1}



static void Test_BFs1i_BFs1i_BFu1i_BFs1i()
{
  {
    init_simple_test("BFs1i_BFs1i_BFu1i_BFs1i");
    static STRUCT_IF_C BFs1i_BFs1i_BFu1i_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1i_BFu1i_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1i_BFu1i_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1i_BFu1i_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1i_BFu1i_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1i_BFu1i_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1i_BFu1i_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1i_BFu1i_BFs1i, BFs1i_BFs1i_BFu1i_BFs1i)
//============================================================================


struct  BFs1i_BFs1i_BFu1i_BFs1ll  {
  signed int v1:1;
  signed int v2:1;
  unsigned int v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1i_BFs1i_BFu1i_BFs1ll) C1{ Fi:1 Fi:1 Fi:1 FL:1}



static void Test_BFs1i_BFs1i_BFu1i_BFs1ll()
{
  {
    init_simple_test("BFs1i_BFs1i_BFu1i_BFs1ll");
    static STRUCT_IF_C BFs1i_BFs1i_BFu1i_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1i_BFu1i_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1i_BFu1i_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1i_BFu1i_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1i_BFu1i_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1i_BFu1i_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1i_BFu1i_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1i_BFu1i_BFs1ll, BFs1i_BFs1i_BFu1i_BFs1ll)
//============================================================================


struct  BFs1i_BFs1i_BFu1i_BFs1s  {
  signed int v1:1;
  signed int v2:1;
  unsigned int v3:1;
  signed short v4:1;
};
//SIG(1 BFs1i_BFs1i_BFu1i_BFs1s) C1{ Fi:1 Fi:1 Fi:1 Fs:1}



static void Test_BFs1i_BFs1i_BFu1i_BFs1s()
{
  {
    init_simple_test("BFs1i_BFs1i_BFu1i_BFs1s");
    static STRUCT_IF_C BFs1i_BFs1i_BFu1i_BFs1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1i_BFu1i_BFs1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1i_BFu1i_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1i_BFu1i_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1i_BFu1i_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1i_BFu1i_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1i_BFu1i_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1i_BFu1i_BFs1s, BFs1i_BFs1i_BFu1i_BFs1s)
//============================================================================


struct  BFs1i_BFs1i_BFu1i_BFu1c  {
  signed int v1:1;
  signed int v2:1;
  unsigned int v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1i_BFs1i_BFu1i_BFu1c) C1{ Fi:1 Fi:1 Fi:1 Fc:1}



static void Test_BFs1i_BFs1i_BFu1i_BFu1c()
{
  {
    init_simple_test("BFs1i_BFs1i_BFu1i_BFu1c");
    static STRUCT_IF_C BFs1i_BFs1i_BFu1i_BFu1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1i_BFu1i_BFu1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1i_BFu1i_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1i_BFu1i_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1i_BFu1i_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1i_BFu1i_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1i_BFu1i_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1i_BFu1i_BFu1c, BFs1i_BFs1i_BFu1i_BFu1c)
//============================================================================


struct  BFs1i_BFs1i_BFu1i_BFu1i  {
  signed int v1:1;
  signed int v2:1;
  unsigned int v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1i_BFs1i_BFu1i_BFu1i) C1{ Fi:1 Fi:1 Fi:1 Fi:1}



static void Test_BFs1i_BFs1i_BFu1i_BFu1i()
{
  {
    init_simple_test("BFs1i_BFs1i_BFu1i_BFu1i");
    static STRUCT_IF_C BFs1i_BFs1i_BFu1i_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1i_BFu1i_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1i_BFu1i_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1i_BFu1i_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1i_BFu1i_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1i_BFu1i_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1i_BFu1i_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1i_BFu1i_BFu1i, BFs1i_BFs1i_BFu1i_BFu1i)
//============================================================================


struct  BFs1i_BFs1i_BFu1i_BFu1ll  {
  signed int v1:1;
  signed int v2:1;
  unsigned int v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1i_BFs1i_BFu1i_BFu1ll) C1{ Fi:1 Fi:1 Fi:1 FL:1}



static void Test_BFs1i_BFs1i_BFu1i_BFu1ll()
{
  {
    init_simple_test("BFs1i_BFs1i_BFu1i_BFu1ll");
    static STRUCT_IF_C BFs1i_BFs1i_BFu1i_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1i_BFu1i_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1i_BFu1i_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1i_BFu1i_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1i_BFu1i_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1i_BFu1i_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1i_BFu1i_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1i_BFu1i_BFu1ll, BFs1i_BFs1i_BFu1i_BFu1ll)
//============================================================================


struct  BFs1i_BFs1i_BFu1i_BFu1s  {
  signed int v1:1;
  signed int v2:1;
  unsigned int v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1i_BFs1i_BFu1i_BFu1s) C1{ Fi:1 Fi:1 Fi:1 Fs:1}



static void Test_BFs1i_BFs1i_BFu1i_BFu1s()
{
  {
    init_simple_test("BFs1i_BFs1i_BFu1i_BFu1s");
    static STRUCT_IF_C BFs1i_BFs1i_BFu1i_BFu1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1i_BFu1i_BFu1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1i_BFu1i_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1i_BFu1i_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1i_BFu1i_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1i_BFu1i_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1i_BFu1i_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1i_BFu1i_BFu1s, BFs1i_BFs1i_BFu1i_BFu1s)
//============================================================================


struct  BFs1i_BFs1i_BFu1ll  {
  signed int v1:1;
  signed int v2:1;
  __tsu64 v3:1;
};
//SIG(1 BFs1i_BFs1i_BFu1ll) C1{ Fi:1 Fi:1 FL:1}



static void Test_BFs1i_BFs1i_BFu1ll()
{
  {
    init_simple_test("BFs1i_BFs1i_BFu1ll");
    static STRUCT_IF_C BFs1i_BFs1i_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1i_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1i_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1i_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1i_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1i_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1i_BFu1ll, BFs1i_BFs1i_BFu1ll)
//============================================================================


struct  BFs1i_BFs1i_BFu1ll_BFs1c  {
  signed int v1:1;
  signed int v2:1;
  __tsu64 v3:1;
  signed char v4:1;
};
//SIG(1 BFs1i_BFs1i_BFu1ll_BFs1c) C1{ Fi:1 Fi:1 FL:1 Fc:1}



static void Test_BFs1i_BFs1i_BFu1ll_BFs1c()
{
  {
    init_simple_test("BFs1i_BFs1i_BFu1ll_BFs1c");
    static STRUCT_IF_C BFs1i_BFs1i_BFu1ll_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1i_BFu1ll_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1i_BFu1ll_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1i_BFu1ll_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1i_BFu1ll_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1i_BFu1ll_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1i_BFu1ll_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1i_BFu1ll_BFs1c, BFs1i_BFs1i_BFu1ll_BFs1c)
//============================================================================


struct  BFs1i_BFs1i_BFu1ll_BFs1i  {
  signed int v1:1;
  signed int v2:1;
  __tsu64 v3:1;
  signed int v4:1;
};
//SIG(1 BFs1i_BFs1i_BFu1ll_BFs1i) C1{ Fi:1 Fi:1 FL:1 Fi:1}



static void Test_BFs1i_BFs1i_BFu1ll_BFs1i()
{
  {
    init_simple_test("BFs1i_BFs1i_BFu1ll_BFs1i");
    static STRUCT_IF_C BFs1i_BFs1i_BFu1ll_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1i_BFu1ll_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1i_BFu1ll_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1i_BFu1ll_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1i_BFu1ll_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1i_BFu1ll_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1i_BFu1ll_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1i_BFu1ll_BFs1i, BFs1i_BFs1i_BFu1ll_BFs1i)
//============================================================================


struct  BFs1i_BFs1i_BFu1ll_BFs1ll  {
  signed int v1:1;
  signed int v2:1;
  __tsu64 v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1i_BFs1i_BFu1ll_BFs1ll) C1{ Fi:1 Fi:1 FL:1 FL:1}



static void Test_BFs1i_BFs1i_BFu1ll_BFs1ll()
{
  {
    init_simple_test("BFs1i_BFs1i_BFu1ll_BFs1ll");
    static STRUCT_IF_C BFs1i_BFs1i_BFu1ll_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1i_BFu1ll_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1i_BFu1ll_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1i_BFu1ll_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1i_BFu1ll_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1i_BFu1ll_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1i_BFu1ll_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1i_BFu1ll_BFs1ll, BFs1i_BFs1i_BFu1ll_BFs1ll)
//============================================================================


struct  BFs1i_BFs1i_BFu1ll_BFs1s  {
  signed int v1:1;
  signed int v2:1;
  __tsu64 v3:1;
  signed short v4:1;
};
//SIG(1 BFs1i_BFs1i_BFu1ll_BFs1s) C1{ Fi:1 Fi:1 FL:1 Fs:1}



static void Test_BFs1i_BFs1i_BFu1ll_BFs1s()
{
  {
    init_simple_test("BFs1i_BFs1i_BFu1ll_BFs1s");
    static STRUCT_IF_C BFs1i_BFs1i_BFu1ll_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1i_BFu1ll_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1i_BFu1ll_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1i_BFu1ll_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1i_BFu1ll_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1i_BFu1ll_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1i_BFu1ll_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1i_BFu1ll_BFs1s, BFs1i_BFs1i_BFu1ll_BFs1s)
//============================================================================


struct  BFs1i_BFs1i_BFu1ll_BFu1c  {
  signed int v1:1;
  signed int v2:1;
  __tsu64 v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1i_BFs1i_BFu1ll_BFu1c) C1{ Fi:1 Fi:1 FL:1 Fc:1}



static void Test_BFs1i_BFs1i_BFu1ll_BFu1c()
{
  {
    init_simple_test("BFs1i_BFs1i_BFu1ll_BFu1c");
    static STRUCT_IF_C BFs1i_BFs1i_BFu1ll_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1i_BFu1ll_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1i_BFu1ll_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1i_BFu1ll_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1i_BFu1ll_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1i_BFu1ll_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1i_BFu1ll_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1i_BFu1ll_BFu1c, BFs1i_BFs1i_BFu1ll_BFu1c)
//============================================================================


struct  BFs1i_BFs1i_BFu1ll_BFu1i  {
  signed int v1:1;
  signed int v2:1;
  __tsu64 v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1i_BFs1i_BFu1ll_BFu1i) C1{ Fi:1 Fi:1 FL:1 Fi:1}



static void Test_BFs1i_BFs1i_BFu1ll_BFu1i()
{
  {
    init_simple_test("BFs1i_BFs1i_BFu1ll_BFu1i");
    static STRUCT_IF_C BFs1i_BFs1i_BFu1ll_BFu1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1i_BFu1ll_BFu1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1i_BFu1ll_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1i_BFu1ll_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1i_BFu1ll_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1i_BFu1ll_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1i_BFu1ll_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1i_BFu1ll_BFu1i, BFs1i_BFs1i_BFu1ll_BFu1i)
//============================================================================


struct  BFs1i_BFs1i_BFu1ll_BFu1ll  {
  signed int v1:1;
  signed int v2:1;
  __tsu64 v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1i_BFs1i_BFu1ll_BFu1ll) C1{ Fi:1 Fi:1 FL:1 FL:1}



static void Test_BFs1i_BFs1i_BFu1ll_BFu1ll()
{
  {
    init_simple_test("BFs1i_BFs1i_BFu1ll_BFu1ll");
    static STRUCT_IF_C BFs1i_BFs1i_BFu1ll_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1i_BFu1ll_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1i_BFu1ll_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1i_BFu1ll_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1i_BFu1ll_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1i_BFu1ll_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1i_BFu1ll_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1i_BFu1ll_BFu1ll, BFs1i_BFs1i_BFu1ll_BFu1ll)
//============================================================================


struct  BFs1i_BFs1i_BFu1ll_BFu1s  {
  signed int v1:1;
  signed int v2:1;
  __tsu64 v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1i_BFs1i_BFu1ll_BFu1s) C1{ Fi:1 Fi:1 FL:1 Fs:1}



static void Test_BFs1i_BFs1i_BFu1ll_BFu1s()
{
  {
    init_simple_test("BFs1i_BFs1i_BFu1ll_BFu1s");
    static STRUCT_IF_C BFs1i_BFs1i_BFu1ll_BFu1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1i_BFu1ll_BFu1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1i_BFu1ll_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1i_BFu1ll_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1i_BFu1ll_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1i_BFu1ll_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1i_BFu1ll_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1i_BFu1ll_BFu1s, BFs1i_BFs1i_BFu1ll_BFu1s)
//============================================================================


struct  BFs1i_BFs1i_BFu1s  {
  signed int v1:1;
  signed int v2:1;
  unsigned short v3:1;
};
//SIG(1 BFs1i_BFs1i_BFu1s) C1{ Fi:1 Fi:1 Fs:1}



static void Test_BFs1i_BFs1i_BFu1s()
{
  {
    init_simple_test("BFs1i_BFs1i_BFu1s");
    static STRUCT_IF_C BFs1i_BFs1i_BFu1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1i_BFu1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1i_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1i_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1i_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1i_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1i_BFu1s, BFs1i_BFs1i_BFu1s)
//============================================================================


struct  BFs1i_BFs1i_BFu1s_BFs1c  {
  signed int v1:1;
  signed int v2:1;
  unsigned short v3:1;
  signed char v4:1;
};
//SIG(1 BFs1i_BFs1i_BFu1s_BFs1c) C1{ Fi:1 Fi:1 Fs:1 Fc:1}



static void Test_BFs1i_BFs1i_BFu1s_BFs1c()
{
  {
    init_simple_test("BFs1i_BFs1i_BFu1s_BFs1c");
    static STRUCT_IF_C BFs1i_BFs1i_BFu1s_BFs1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1i_BFu1s_BFs1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1i_BFu1s_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1i_BFu1s_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1i_BFu1s_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1i_BFu1s_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1i_BFu1s_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1i_BFu1s_BFs1c, BFs1i_BFs1i_BFu1s_BFs1c)
//============================================================================


struct  BFs1i_BFs1i_BFu1s_BFs1i  {
  signed int v1:1;
  signed int v2:1;
  unsigned short v3:1;
  signed int v4:1;
};
//SIG(1 BFs1i_BFs1i_BFu1s_BFs1i) C1{ Fi:1 Fi:1 Fs:1 Fi:1}



static void Test_BFs1i_BFs1i_BFu1s_BFs1i()
{
  {
    init_simple_test("BFs1i_BFs1i_BFu1s_BFs1i");
    static STRUCT_IF_C BFs1i_BFs1i_BFu1s_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1i_BFu1s_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1i_BFu1s_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1i_BFu1s_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1i_BFu1s_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1i_BFu1s_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1i_BFu1s_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1i_BFu1s_BFs1i, BFs1i_BFs1i_BFu1s_BFs1i)
//============================================================================


struct  BFs1i_BFs1i_BFu1s_BFs1ll  {
  signed int v1:1;
  signed int v2:1;
  unsigned short v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1i_BFs1i_BFu1s_BFs1ll) C1{ Fi:1 Fi:1 Fs:1 FL:1}



static void Test_BFs1i_BFs1i_BFu1s_BFs1ll()
{
  {
    init_simple_test("BFs1i_BFs1i_BFu1s_BFs1ll");
    static STRUCT_IF_C BFs1i_BFs1i_BFu1s_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1i_BFu1s_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1i_BFu1s_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1i_BFu1s_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1i_BFu1s_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1i_BFu1s_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1i_BFu1s_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1i_BFu1s_BFs1ll, BFs1i_BFs1i_BFu1s_BFs1ll)
//============================================================================


struct  BFs1i_BFs1i_BFu1s_BFs1s  {
  signed int v1:1;
  signed int v2:1;
  unsigned short v3:1;
  signed short v4:1;
};
//SIG(1 BFs1i_BFs1i_BFu1s_BFs1s) C1{ Fi:1 Fi:1 Fs:1 Fs:1}



static void Test_BFs1i_BFs1i_BFu1s_BFs1s()
{
  {
    init_simple_test("BFs1i_BFs1i_BFu1s_BFs1s");
    static STRUCT_IF_C BFs1i_BFs1i_BFu1s_BFs1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1i_BFu1s_BFs1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1i_BFu1s_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1i_BFu1s_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1i_BFu1s_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1i_BFu1s_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1i_BFu1s_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1i_BFu1s_BFs1s, BFs1i_BFs1i_BFu1s_BFs1s)
//============================================================================


struct  BFs1i_BFs1i_BFu1s_BFu1c  {
  signed int v1:1;
  signed int v2:1;
  unsigned short v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1i_BFs1i_BFu1s_BFu1c) C1{ Fi:1 Fi:1 Fs:1 Fc:1}



static void Test_BFs1i_BFs1i_BFu1s_BFu1c()
{
  {
    init_simple_test("BFs1i_BFs1i_BFu1s_BFu1c");
    static STRUCT_IF_C BFs1i_BFs1i_BFu1s_BFu1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1i_BFu1s_BFu1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1i_BFu1s_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1i_BFu1s_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1i_BFu1s_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1i_BFu1s_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1i_BFu1s_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1i_BFu1s_BFu1c, BFs1i_BFs1i_BFu1s_BFu1c)
//============================================================================


struct  BFs1i_BFs1i_BFu1s_BFu1i  {
  signed int v1:1;
  signed int v2:1;
  unsigned short v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1i_BFs1i_BFu1s_BFu1i) C1{ Fi:1 Fi:1 Fs:1 Fi:1}



static void Test_BFs1i_BFs1i_BFu1s_BFu1i()
{
  {
    init_simple_test("BFs1i_BFs1i_BFu1s_BFu1i");
    static STRUCT_IF_C BFs1i_BFs1i_BFu1s_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1i_BFu1s_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1i_BFu1s_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1i_BFu1s_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1i_BFu1s_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1i_BFu1s_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1i_BFu1s_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1i_BFu1s_BFu1i, BFs1i_BFs1i_BFu1s_BFu1i)
//============================================================================


struct  BFs1i_BFs1i_BFu1s_BFu1ll  {
  signed int v1:1;
  signed int v2:1;
  unsigned short v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1i_BFs1i_BFu1s_BFu1ll) C1{ Fi:1 Fi:1 Fs:1 FL:1}



static void Test_BFs1i_BFs1i_BFu1s_BFu1ll()
{
  {
    init_simple_test("BFs1i_BFs1i_BFu1s_BFu1ll");
    static STRUCT_IF_C BFs1i_BFs1i_BFu1s_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1i_BFu1s_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1i_BFu1s_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1i_BFu1s_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1i_BFu1s_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1i_BFu1s_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1i_BFu1s_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1i_BFu1s_BFu1ll, BFs1i_BFs1i_BFu1s_BFu1ll)
//============================================================================


struct  BFs1i_BFs1i_BFu1s_BFu1s  {
  signed int v1:1;
  signed int v2:1;
  unsigned short v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1i_BFs1i_BFu1s_BFu1s) C1{ Fi:1 Fi:1 Fs:1 Fs:1}



static void Test_BFs1i_BFs1i_BFu1s_BFu1s()
{
  {
    init_simple_test("BFs1i_BFs1i_BFu1s_BFu1s");
    static STRUCT_IF_C BFs1i_BFs1i_BFu1s_BFu1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1i_BFu1s_BFu1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1i_BFu1s_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1i_BFu1s_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1i_BFu1s_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1i_BFu1s_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1i_BFu1s_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1i_BFu1s_BFu1s, BFs1i_BFs1i_BFu1s_BFu1s)
//============================================================================


struct  BFs1i_BFs1ll  {
  signed int v1:1;
  signed __tsi64 v2:1;
};
//SIG(1 BFs1i_BFs1ll) C1{ Fi:1 FL:1}



static void Test_BFs1i_BFs1ll()
{
  {
    init_simple_test("BFs1i_BFs1ll");
    static STRUCT_IF_C BFs1i_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1ll, BFs1i_BFs1ll)
//============================================================================


struct  BFs1i_BFs1ll_BFs1c  {
  signed int v1:1;
  signed __tsi64 v2:1;
  signed char v3:1;
};
//SIG(1 BFs1i_BFs1ll_BFs1c) C1{ Fi:1 FL:1 Fc:1}



static void Test_BFs1i_BFs1ll_BFs1c()
{
  {
    init_simple_test("BFs1i_BFs1ll_BFs1c");
    static STRUCT_IF_C BFs1i_BFs1ll_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1ll_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1ll_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1ll_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1ll_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1ll_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1ll_BFs1c, BFs1i_BFs1ll_BFs1c)
//============================================================================


struct  BFs1i_BFs1ll_BFs1c_BFs1c  {
  signed int v1:1;
  signed __tsi64 v2:1;
  signed char v3:1;
  signed char v4:1;
};
//SIG(1 BFs1i_BFs1ll_BFs1c_BFs1c) C1{ Fi:1 FL:1 Fc:1 Fc:1}



static void Test_BFs1i_BFs1ll_BFs1c_BFs1c()
{
  {
    init_simple_test("BFs1i_BFs1ll_BFs1c_BFs1c");
    static STRUCT_IF_C BFs1i_BFs1ll_BFs1c_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1ll_BFs1c_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1ll_BFs1c_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1ll_BFs1c_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1ll_BFs1c_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1ll_BFs1c_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1ll_BFs1c_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1ll_BFs1c_BFs1c, BFs1i_BFs1ll_BFs1c_BFs1c)
//============================================================================


struct  BFs1i_BFs1ll_BFs1c_BFs1i  {
  signed int v1:1;
  signed __tsi64 v2:1;
  signed char v3:1;
  signed int v4:1;
};
//SIG(1 BFs1i_BFs1ll_BFs1c_BFs1i) C1{ Fi:1 FL:1 Fc:1 Fi:1}



static void Test_BFs1i_BFs1ll_BFs1c_BFs1i()
{
  {
    init_simple_test("BFs1i_BFs1ll_BFs1c_BFs1i");
    static STRUCT_IF_C BFs1i_BFs1ll_BFs1c_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1ll_BFs1c_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1ll_BFs1c_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1ll_BFs1c_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1ll_BFs1c_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1ll_BFs1c_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1ll_BFs1c_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1ll_BFs1c_BFs1i, BFs1i_BFs1ll_BFs1c_BFs1i)
//============================================================================


struct  BFs1i_BFs1ll_BFs1c_BFs1ll  {
  signed int v1:1;
  signed __tsi64 v2:1;
  signed char v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1i_BFs1ll_BFs1c_BFs1ll) C1{ Fi:1 FL:1 Fc:1 FL:1}



static void Test_BFs1i_BFs1ll_BFs1c_BFs1ll()
{
  {
    init_simple_test("BFs1i_BFs1ll_BFs1c_BFs1ll");
    static STRUCT_IF_C BFs1i_BFs1ll_BFs1c_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1ll_BFs1c_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1ll_BFs1c_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1ll_BFs1c_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1ll_BFs1c_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1ll_BFs1c_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1ll_BFs1c_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1ll_BFs1c_BFs1ll, BFs1i_BFs1ll_BFs1c_BFs1ll)
//============================================================================


struct  BFs1i_BFs1ll_BFs1c_BFs1s  {
  signed int v1:1;
  signed __tsi64 v2:1;
  signed char v3:1;
  signed short v4:1;
};
//SIG(1 BFs1i_BFs1ll_BFs1c_BFs1s) C1{ Fi:1 FL:1 Fc:1 Fs:1}



static void Test_BFs1i_BFs1ll_BFs1c_BFs1s()
{
  {
    init_simple_test("BFs1i_BFs1ll_BFs1c_BFs1s");
    static STRUCT_IF_C BFs1i_BFs1ll_BFs1c_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1ll_BFs1c_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1ll_BFs1c_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1ll_BFs1c_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1ll_BFs1c_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1ll_BFs1c_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1ll_BFs1c_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1ll_BFs1c_BFs1s, BFs1i_BFs1ll_BFs1c_BFs1s)
//============================================================================


struct  BFs1i_BFs1ll_BFs1c_BFu1c  {
  signed int v1:1;
  signed __tsi64 v2:1;
  signed char v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1i_BFs1ll_BFs1c_BFu1c) C1{ Fi:1 FL:1 Fc:1 Fc:1}



static void Test_BFs1i_BFs1ll_BFs1c_BFu1c()
{
  {
    init_simple_test("BFs1i_BFs1ll_BFs1c_BFu1c");
    static STRUCT_IF_C BFs1i_BFs1ll_BFs1c_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1ll_BFs1c_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1ll_BFs1c_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1ll_BFs1c_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1ll_BFs1c_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1ll_BFs1c_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1ll_BFs1c_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1ll_BFs1c_BFu1c, BFs1i_BFs1ll_BFs1c_BFu1c)
//============================================================================


struct  BFs1i_BFs1ll_BFs1c_BFu1i  {
  signed int v1:1;
  signed __tsi64 v2:1;
  signed char v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1i_BFs1ll_BFs1c_BFu1i) C1{ Fi:1 FL:1 Fc:1 Fi:1}



static void Test_BFs1i_BFs1ll_BFs1c_BFu1i()
{
  {
    init_simple_test("BFs1i_BFs1ll_BFs1c_BFu1i");
    static STRUCT_IF_C BFs1i_BFs1ll_BFs1c_BFu1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1ll_BFs1c_BFu1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1ll_BFs1c_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1ll_BFs1c_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1ll_BFs1c_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1ll_BFs1c_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1ll_BFs1c_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1ll_BFs1c_BFu1i, BFs1i_BFs1ll_BFs1c_BFu1i)
//============================================================================


struct  BFs1i_BFs1ll_BFs1c_BFu1ll  {
  signed int v1:1;
  signed __tsi64 v2:1;
  signed char v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1i_BFs1ll_BFs1c_BFu1ll) C1{ Fi:1 FL:1 Fc:1 FL:1}



static void Test_BFs1i_BFs1ll_BFs1c_BFu1ll()
{
  {
    init_simple_test("BFs1i_BFs1ll_BFs1c_BFu1ll");
    static STRUCT_IF_C BFs1i_BFs1ll_BFs1c_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1ll_BFs1c_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1ll_BFs1c_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1ll_BFs1c_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1ll_BFs1c_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1ll_BFs1c_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1ll_BFs1c_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1ll_BFs1c_BFu1ll, BFs1i_BFs1ll_BFs1c_BFu1ll)
//============================================================================


struct  BFs1i_BFs1ll_BFs1c_BFu1s  {
  signed int v1:1;
  signed __tsi64 v2:1;
  signed char v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1i_BFs1ll_BFs1c_BFu1s) C1{ Fi:1 FL:1 Fc:1 Fs:1}



static void Test_BFs1i_BFs1ll_BFs1c_BFu1s()
{
  {
    init_simple_test("BFs1i_BFs1ll_BFs1c_BFu1s");
    static STRUCT_IF_C BFs1i_BFs1ll_BFs1c_BFu1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1ll_BFs1c_BFu1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1ll_BFs1c_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1ll_BFs1c_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1ll_BFs1c_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1ll_BFs1c_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1ll_BFs1c_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1ll_BFs1c_BFu1s, BFs1i_BFs1ll_BFs1c_BFu1s)
//============================================================================


struct  BFs1i_BFs1ll_BFs1i  {
  signed int v1:1;
  signed __tsi64 v2:1;
  signed int v3:1;
};
//SIG(1 BFs1i_BFs1ll_BFs1i) C1{ Fi:1 FL:1 Fi:1}



static void Test_BFs1i_BFs1ll_BFs1i()
{
  {
    init_simple_test("BFs1i_BFs1ll_BFs1i");
    static STRUCT_IF_C BFs1i_BFs1ll_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1ll_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1ll_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1ll_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1ll_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1ll_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1ll_BFs1i, BFs1i_BFs1ll_BFs1i)
//============================================================================


struct  BFs1i_BFs1ll_BFs1i_BFs1c  {
  signed int v1:1;
  signed __tsi64 v2:1;
  signed int v3:1;
  signed char v4:1;
};
//SIG(1 BFs1i_BFs1ll_BFs1i_BFs1c) C1{ Fi:1 FL:1 Fi:1 Fc:1}



static void Test_BFs1i_BFs1ll_BFs1i_BFs1c()
{
  {
    init_simple_test("BFs1i_BFs1ll_BFs1i_BFs1c");
    static STRUCT_IF_C BFs1i_BFs1ll_BFs1i_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1ll_BFs1i_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1ll_BFs1i_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1ll_BFs1i_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1ll_BFs1i_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1ll_BFs1i_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1ll_BFs1i_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1ll_BFs1i_BFs1c, BFs1i_BFs1ll_BFs1i_BFs1c)
//============================================================================


struct  BFs1i_BFs1ll_BFs1i_BFs1i  {
  signed int v1:1;
  signed __tsi64 v2:1;
  signed int v3:1;
  signed int v4:1;
};
//SIG(1 BFs1i_BFs1ll_BFs1i_BFs1i) C1{ Fi:1 FL:1 Fi:1 Fi:1}



static void Test_BFs1i_BFs1ll_BFs1i_BFs1i()
{
  {
    init_simple_test("BFs1i_BFs1ll_BFs1i_BFs1i");
    static STRUCT_IF_C BFs1i_BFs1ll_BFs1i_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1ll_BFs1i_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1ll_BFs1i_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1ll_BFs1i_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1ll_BFs1i_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1ll_BFs1i_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1ll_BFs1i_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1ll_BFs1i_BFs1i, BFs1i_BFs1ll_BFs1i_BFs1i)
//============================================================================


struct  BFs1i_BFs1ll_BFs1i_BFs1ll  {
  signed int v1:1;
  signed __tsi64 v2:1;
  signed int v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1i_BFs1ll_BFs1i_BFs1ll) C1{ Fi:1 FL:1 Fi:1 FL:1}



static void Test_BFs1i_BFs1ll_BFs1i_BFs1ll()
{
  {
    init_simple_test("BFs1i_BFs1ll_BFs1i_BFs1ll");
    static STRUCT_IF_C BFs1i_BFs1ll_BFs1i_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1ll_BFs1i_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1ll_BFs1i_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1ll_BFs1i_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1ll_BFs1i_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1ll_BFs1i_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1ll_BFs1i_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1ll_BFs1i_BFs1ll, BFs1i_BFs1ll_BFs1i_BFs1ll)
//============================================================================


struct  BFs1i_BFs1ll_BFs1i_BFs1s  {
  signed int v1:1;
  signed __tsi64 v2:1;
  signed int v3:1;
  signed short v4:1;
};
//SIG(1 BFs1i_BFs1ll_BFs1i_BFs1s) C1{ Fi:1 FL:1 Fi:1 Fs:1}



static void Test_BFs1i_BFs1ll_BFs1i_BFs1s()
{
  {
    init_simple_test("BFs1i_BFs1ll_BFs1i_BFs1s");
    static STRUCT_IF_C BFs1i_BFs1ll_BFs1i_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1ll_BFs1i_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1ll_BFs1i_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1ll_BFs1i_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1ll_BFs1i_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1ll_BFs1i_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1ll_BFs1i_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1ll_BFs1i_BFs1s, BFs1i_BFs1ll_BFs1i_BFs1s)
//============================================================================


struct  BFs1i_BFs1ll_BFs1i_BFu1c  {
  signed int v1:1;
  signed __tsi64 v2:1;
  signed int v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1i_BFs1ll_BFs1i_BFu1c) C1{ Fi:1 FL:1 Fi:1 Fc:1}



static void Test_BFs1i_BFs1ll_BFs1i_BFu1c()
{
  {
    init_simple_test("BFs1i_BFs1ll_BFs1i_BFu1c");
    static STRUCT_IF_C BFs1i_BFs1ll_BFs1i_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1ll_BFs1i_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1ll_BFs1i_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1ll_BFs1i_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1ll_BFs1i_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1ll_BFs1i_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1ll_BFs1i_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1ll_BFs1i_BFu1c, BFs1i_BFs1ll_BFs1i_BFu1c)
//============================================================================


struct  BFs1i_BFs1ll_BFs1i_BFu1i  {
  signed int v1:1;
  signed __tsi64 v2:1;
  signed int v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1i_BFs1ll_BFs1i_BFu1i) C1{ Fi:1 FL:1 Fi:1 Fi:1}



static void Test_BFs1i_BFs1ll_BFs1i_BFu1i()
{
  {
    init_simple_test("BFs1i_BFs1ll_BFs1i_BFu1i");
    static STRUCT_IF_C BFs1i_BFs1ll_BFs1i_BFu1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1ll_BFs1i_BFu1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1ll_BFs1i_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1ll_BFs1i_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1ll_BFs1i_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1ll_BFs1i_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1ll_BFs1i_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1ll_BFs1i_BFu1i, BFs1i_BFs1ll_BFs1i_BFu1i)
//============================================================================


struct  BFs1i_BFs1ll_BFs1i_BFu1ll  {
  signed int v1:1;
  signed __tsi64 v2:1;
  signed int v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1i_BFs1ll_BFs1i_BFu1ll) C1{ Fi:1 FL:1 Fi:1 FL:1}



static void Test_BFs1i_BFs1ll_BFs1i_BFu1ll()
{
  {
    init_simple_test("BFs1i_BFs1ll_BFs1i_BFu1ll");
    static STRUCT_IF_C BFs1i_BFs1ll_BFs1i_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1ll_BFs1i_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1ll_BFs1i_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1ll_BFs1i_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1ll_BFs1i_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1ll_BFs1i_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1ll_BFs1i_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1ll_BFs1i_BFu1ll, BFs1i_BFs1ll_BFs1i_BFu1ll)
//============================================================================


struct  BFs1i_BFs1ll_BFs1i_BFu1s  {
  signed int v1:1;
  signed __tsi64 v2:1;
  signed int v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1i_BFs1ll_BFs1i_BFu1s) C1{ Fi:1 FL:1 Fi:1 Fs:1}



static void Test_BFs1i_BFs1ll_BFs1i_BFu1s()
{
  {
    init_simple_test("BFs1i_BFs1ll_BFs1i_BFu1s");
    static STRUCT_IF_C BFs1i_BFs1ll_BFs1i_BFu1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1ll_BFs1i_BFu1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1ll_BFs1i_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1ll_BFs1i_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1ll_BFs1i_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1ll_BFs1i_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1ll_BFs1i_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1ll_BFs1i_BFu1s, BFs1i_BFs1ll_BFs1i_BFu1s)
//============================================================================


struct  BFs1i_BFs1ll_BFs1ll  {
  signed int v1:1;
  signed __tsi64 v2:1;
  signed __tsi64 v3:1;
};
//SIG(1 BFs1i_BFs1ll_BFs1ll) C1{ Fi:1 FL:1 FL:1}



static void Test_BFs1i_BFs1ll_BFs1ll()
{
  {
    init_simple_test("BFs1i_BFs1ll_BFs1ll");
    static STRUCT_IF_C BFs1i_BFs1ll_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1ll_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1ll_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1ll_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1ll_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1ll_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1ll_BFs1ll, BFs1i_BFs1ll_BFs1ll)
//============================================================================


struct  BFs1i_BFs1ll_BFs1ll_BFs1c  {
  signed int v1:1;
  signed __tsi64 v2:1;
  signed __tsi64 v3:1;
  signed char v4:1;
};
//SIG(1 BFs1i_BFs1ll_BFs1ll_BFs1c) C1{ Fi:1 FL:1 FL:1 Fc:1}



static void Test_BFs1i_BFs1ll_BFs1ll_BFs1c()
{
  {
    init_simple_test("BFs1i_BFs1ll_BFs1ll_BFs1c");
    static STRUCT_IF_C BFs1i_BFs1ll_BFs1ll_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1ll_BFs1ll_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1ll_BFs1ll_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1ll_BFs1ll_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1ll_BFs1ll_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1ll_BFs1ll_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1ll_BFs1ll_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1ll_BFs1ll_BFs1c, BFs1i_BFs1ll_BFs1ll_BFs1c)
//============================================================================


struct  BFs1i_BFs1ll_BFs1ll_BFs1i  {
  signed int v1:1;
  signed __tsi64 v2:1;
  signed __tsi64 v3:1;
  signed int v4:1;
};
//SIG(1 BFs1i_BFs1ll_BFs1ll_BFs1i) C1{ Fi:1 FL:1 FL:1 Fi:1}



static void Test_BFs1i_BFs1ll_BFs1ll_BFs1i()
{
  {
    init_simple_test("BFs1i_BFs1ll_BFs1ll_BFs1i");
    static STRUCT_IF_C BFs1i_BFs1ll_BFs1ll_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1ll_BFs1ll_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1ll_BFs1ll_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1ll_BFs1ll_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1ll_BFs1ll_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1ll_BFs1ll_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1ll_BFs1ll_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1ll_BFs1ll_BFs1i, BFs1i_BFs1ll_BFs1ll_BFs1i)
//============================================================================


struct  BFs1i_BFs1ll_BFs1ll_BFs1ll  {
  signed int v1:1;
  signed __tsi64 v2:1;
  signed __tsi64 v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1i_BFs1ll_BFs1ll_BFs1ll) C1{ Fi:1 FL:1 FL:1 FL:1}



static void Test_BFs1i_BFs1ll_BFs1ll_BFs1ll()
{
  {
    init_simple_test("BFs1i_BFs1ll_BFs1ll_BFs1ll");
    static STRUCT_IF_C BFs1i_BFs1ll_BFs1ll_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1ll_BFs1ll_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1ll_BFs1ll_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1ll_BFs1ll_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1ll_BFs1ll_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1ll_BFs1ll_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1ll_BFs1ll_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1ll_BFs1ll_BFs1ll, BFs1i_BFs1ll_BFs1ll_BFs1ll)
//============================================================================


struct  BFs1i_BFs1ll_BFs1ll_BFs1s  {
  signed int v1:1;
  signed __tsi64 v2:1;
  signed __tsi64 v3:1;
  signed short v4:1;
};
//SIG(1 BFs1i_BFs1ll_BFs1ll_BFs1s) C1{ Fi:1 FL:1 FL:1 Fs:1}



static void Test_BFs1i_BFs1ll_BFs1ll_BFs1s()
{
  {
    init_simple_test("BFs1i_BFs1ll_BFs1ll_BFs1s");
    static STRUCT_IF_C BFs1i_BFs1ll_BFs1ll_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1ll_BFs1ll_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1ll_BFs1ll_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1ll_BFs1ll_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1ll_BFs1ll_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1ll_BFs1ll_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1ll_BFs1ll_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1ll_BFs1ll_BFs1s, BFs1i_BFs1ll_BFs1ll_BFs1s)
//============================================================================


struct  BFs1i_BFs1ll_BFs1ll_BFu1c  {
  signed int v1:1;
  signed __tsi64 v2:1;
  signed __tsi64 v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1i_BFs1ll_BFs1ll_BFu1c) C1{ Fi:1 FL:1 FL:1 Fc:1}



static void Test_BFs1i_BFs1ll_BFs1ll_BFu1c()
{
  {
    init_simple_test("BFs1i_BFs1ll_BFs1ll_BFu1c");
    static STRUCT_IF_C BFs1i_BFs1ll_BFs1ll_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1ll_BFs1ll_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1ll_BFs1ll_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1ll_BFs1ll_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1ll_BFs1ll_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1ll_BFs1ll_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1ll_BFs1ll_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1ll_BFs1ll_BFu1c, BFs1i_BFs1ll_BFs1ll_BFu1c)
//============================================================================


struct  BFs1i_BFs1ll_BFs1ll_BFu1i  {
  signed int v1:1;
  signed __tsi64 v2:1;
  signed __tsi64 v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1i_BFs1ll_BFs1ll_BFu1i) C1{ Fi:1 FL:1 FL:1 Fi:1}



static void Test_BFs1i_BFs1ll_BFs1ll_BFu1i()
{
  {
    init_simple_test("BFs1i_BFs1ll_BFs1ll_BFu1i");
    static STRUCT_IF_C BFs1i_BFs1ll_BFs1ll_BFu1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1ll_BFs1ll_BFu1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1ll_BFs1ll_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1ll_BFs1ll_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1ll_BFs1ll_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1ll_BFs1ll_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1ll_BFs1ll_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1ll_BFs1ll_BFu1i, BFs1i_BFs1ll_BFs1ll_BFu1i)
//============================================================================


struct  BFs1i_BFs1ll_BFs1ll_BFu1ll  {
  signed int v1:1;
  signed __tsi64 v2:1;
  signed __tsi64 v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1i_BFs1ll_BFs1ll_BFu1ll) C1{ Fi:1 FL:1 FL:1 FL:1}



static void Test_BFs1i_BFs1ll_BFs1ll_BFu1ll()
{
  {
    init_simple_test("BFs1i_BFs1ll_BFs1ll_BFu1ll");
    static STRUCT_IF_C BFs1i_BFs1ll_BFs1ll_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1ll_BFs1ll_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1ll_BFs1ll_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1ll_BFs1ll_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1ll_BFs1ll_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1ll_BFs1ll_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1ll_BFs1ll_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1ll_BFs1ll_BFu1ll, BFs1i_BFs1ll_BFs1ll_BFu1ll)
//============================================================================


struct  BFs1i_BFs1ll_BFs1ll_BFu1s  {
  signed int v1:1;
  signed __tsi64 v2:1;
  signed __tsi64 v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1i_BFs1ll_BFs1ll_BFu1s) C1{ Fi:1 FL:1 FL:1 Fs:1}



static void Test_BFs1i_BFs1ll_BFs1ll_BFu1s()
{
  {
    init_simple_test("BFs1i_BFs1ll_BFs1ll_BFu1s");
    static STRUCT_IF_C BFs1i_BFs1ll_BFs1ll_BFu1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1ll_BFs1ll_BFu1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1ll_BFs1ll_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1ll_BFs1ll_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1ll_BFs1ll_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1ll_BFs1ll_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1ll_BFs1ll_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1ll_BFs1ll_BFu1s, BFs1i_BFs1ll_BFs1ll_BFu1s)
//============================================================================


struct  BFs1i_BFs1ll_BFs1s  {
  signed int v1:1;
  signed __tsi64 v2:1;
  signed short v3:1;
};
//SIG(1 BFs1i_BFs1ll_BFs1s) C1{ Fi:1 FL:1 Fs:1}



static void Test_BFs1i_BFs1ll_BFs1s()
{
  {
    init_simple_test("BFs1i_BFs1ll_BFs1s");
    static STRUCT_IF_C BFs1i_BFs1ll_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1ll_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1ll_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1ll_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1ll_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1ll_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1ll_BFs1s, BFs1i_BFs1ll_BFs1s)
//============================================================================


struct  BFs1i_BFs1ll_BFs1s_BFs1c  {
  signed int v1:1;
  signed __tsi64 v2:1;
  signed short v3:1;
  signed char v4:1;
};
//SIG(1 BFs1i_BFs1ll_BFs1s_BFs1c) C1{ Fi:1 FL:1 Fs:1 Fc:1}



static void Test_BFs1i_BFs1ll_BFs1s_BFs1c()
{
  {
    init_simple_test("BFs1i_BFs1ll_BFs1s_BFs1c");
    static STRUCT_IF_C BFs1i_BFs1ll_BFs1s_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1ll_BFs1s_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1ll_BFs1s_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1ll_BFs1s_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1ll_BFs1s_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1ll_BFs1s_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1ll_BFs1s_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1ll_BFs1s_BFs1c, BFs1i_BFs1ll_BFs1s_BFs1c)
//============================================================================


struct  BFs1i_BFs1ll_BFs1s_BFs1i  {
  signed int v1:1;
  signed __tsi64 v2:1;
  signed short v3:1;
  signed int v4:1;
};
//SIG(1 BFs1i_BFs1ll_BFs1s_BFs1i) C1{ Fi:1 FL:1 Fs:1 Fi:1}



static void Test_BFs1i_BFs1ll_BFs1s_BFs1i()
{
  {
    init_simple_test("BFs1i_BFs1ll_BFs1s_BFs1i");
    static STRUCT_IF_C BFs1i_BFs1ll_BFs1s_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1ll_BFs1s_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1ll_BFs1s_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1ll_BFs1s_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1ll_BFs1s_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1ll_BFs1s_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1ll_BFs1s_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1ll_BFs1s_BFs1i, BFs1i_BFs1ll_BFs1s_BFs1i)
//============================================================================


struct  BFs1i_BFs1ll_BFs1s_BFs1ll  {
  signed int v1:1;
  signed __tsi64 v2:1;
  signed short v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1i_BFs1ll_BFs1s_BFs1ll) C1{ Fi:1 FL:1 Fs:1 FL:1}



static void Test_BFs1i_BFs1ll_BFs1s_BFs1ll()
{
  {
    init_simple_test("BFs1i_BFs1ll_BFs1s_BFs1ll");
    static STRUCT_IF_C BFs1i_BFs1ll_BFs1s_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1ll_BFs1s_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1ll_BFs1s_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1ll_BFs1s_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1ll_BFs1s_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1ll_BFs1s_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1ll_BFs1s_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1ll_BFs1s_BFs1ll, BFs1i_BFs1ll_BFs1s_BFs1ll)
//============================================================================


struct  BFs1i_BFs1ll_BFs1s_BFs1s  {
  signed int v1:1;
  signed __tsi64 v2:1;
  signed short v3:1;
  signed short v4:1;
};
//SIG(1 BFs1i_BFs1ll_BFs1s_BFs1s) C1{ Fi:1 FL:1 Fs:1 Fs:1}



static void Test_BFs1i_BFs1ll_BFs1s_BFs1s()
{
  {
    init_simple_test("BFs1i_BFs1ll_BFs1s_BFs1s");
    static STRUCT_IF_C BFs1i_BFs1ll_BFs1s_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1ll_BFs1s_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1ll_BFs1s_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1ll_BFs1s_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1ll_BFs1s_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1ll_BFs1s_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1ll_BFs1s_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1ll_BFs1s_BFs1s, BFs1i_BFs1ll_BFs1s_BFs1s)
//============================================================================


struct  BFs1i_BFs1ll_BFs1s_BFu1c  {
  signed int v1:1;
  signed __tsi64 v2:1;
  signed short v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1i_BFs1ll_BFs1s_BFu1c) C1{ Fi:1 FL:1 Fs:1 Fc:1}



static void Test_BFs1i_BFs1ll_BFs1s_BFu1c()
{
  {
    init_simple_test("BFs1i_BFs1ll_BFs1s_BFu1c");
    static STRUCT_IF_C BFs1i_BFs1ll_BFs1s_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1ll_BFs1s_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1ll_BFs1s_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1ll_BFs1s_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1ll_BFs1s_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1ll_BFs1s_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1ll_BFs1s_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1ll_BFs1s_BFu1c, BFs1i_BFs1ll_BFs1s_BFu1c)
//============================================================================


struct  BFs1i_BFs1ll_BFs1s_BFu1i  {
  signed int v1:1;
  signed __tsi64 v2:1;
  signed short v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1i_BFs1ll_BFs1s_BFu1i) C1{ Fi:1 FL:1 Fs:1 Fi:1}



static void Test_BFs1i_BFs1ll_BFs1s_BFu1i()
{
  {
    init_simple_test("BFs1i_BFs1ll_BFs1s_BFu1i");
    static STRUCT_IF_C BFs1i_BFs1ll_BFs1s_BFu1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1ll_BFs1s_BFu1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1ll_BFs1s_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1ll_BFs1s_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1ll_BFs1s_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1ll_BFs1s_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1ll_BFs1s_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1ll_BFs1s_BFu1i, BFs1i_BFs1ll_BFs1s_BFu1i)
//============================================================================


struct  BFs1i_BFs1ll_BFs1s_BFu1ll  {
  signed int v1:1;
  signed __tsi64 v2:1;
  signed short v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1i_BFs1ll_BFs1s_BFu1ll) C1{ Fi:1 FL:1 Fs:1 FL:1}



static void Test_BFs1i_BFs1ll_BFs1s_BFu1ll()
{
  {
    init_simple_test("BFs1i_BFs1ll_BFs1s_BFu1ll");
    static STRUCT_IF_C BFs1i_BFs1ll_BFs1s_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1ll_BFs1s_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1ll_BFs1s_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1ll_BFs1s_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1ll_BFs1s_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1ll_BFs1s_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1ll_BFs1s_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1ll_BFs1s_BFu1ll, BFs1i_BFs1ll_BFs1s_BFu1ll)
//============================================================================


struct  BFs1i_BFs1ll_BFs1s_BFu1s  {
  signed int v1:1;
  signed __tsi64 v2:1;
  signed short v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1i_BFs1ll_BFs1s_BFu1s) C1{ Fi:1 FL:1 Fs:1 Fs:1}



static void Test_BFs1i_BFs1ll_BFs1s_BFu1s()
{
  {
    init_simple_test("BFs1i_BFs1ll_BFs1s_BFu1s");
    static STRUCT_IF_C BFs1i_BFs1ll_BFs1s_BFu1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1ll_BFs1s_BFu1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1ll_BFs1s_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1ll_BFs1s_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1ll_BFs1s_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1ll_BFs1s_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1ll_BFs1s_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1ll_BFs1s_BFu1s, BFs1i_BFs1ll_BFs1s_BFu1s)
//============================================================================


struct  BFs1i_BFs1ll_BFu1c  {
  signed int v1:1;
  signed __tsi64 v2:1;
  unsigned char v3:1;
};
//SIG(1 BFs1i_BFs1ll_BFu1c) C1{ Fi:1 FL:1 Fc:1}



static void Test_BFs1i_BFs1ll_BFu1c()
{
  {
    init_simple_test("BFs1i_BFs1ll_BFu1c");
    static STRUCT_IF_C BFs1i_BFs1ll_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1ll_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1ll_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1ll_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1ll_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1ll_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1ll_BFu1c, BFs1i_BFs1ll_BFu1c)
//============================================================================


struct  BFs1i_BFs1ll_BFu1c_BFs1c  {
  signed int v1:1;
  signed __tsi64 v2:1;
  unsigned char v3:1;
  signed char v4:1;
};
//SIG(1 BFs1i_BFs1ll_BFu1c_BFs1c) C1{ Fi:1 FL:1 Fc:1 Fc:1}



static void Test_BFs1i_BFs1ll_BFu1c_BFs1c()
{
  {
    init_simple_test("BFs1i_BFs1ll_BFu1c_BFs1c");
    static STRUCT_IF_C BFs1i_BFs1ll_BFu1c_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1ll_BFu1c_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1ll_BFu1c_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1ll_BFu1c_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1ll_BFu1c_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1ll_BFu1c_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1ll_BFu1c_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1ll_BFu1c_BFs1c, BFs1i_BFs1ll_BFu1c_BFs1c)
//============================================================================


struct  BFs1i_BFs1ll_BFu1c_BFs1i  {
  signed int v1:1;
  signed __tsi64 v2:1;
  unsigned char v3:1;
  signed int v4:1;
};
//SIG(1 BFs1i_BFs1ll_BFu1c_BFs1i) C1{ Fi:1 FL:1 Fc:1 Fi:1}



static void Test_BFs1i_BFs1ll_BFu1c_BFs1i()
{
  {
    init_simple_test("BFs1i_BFs1ll_BFu1c_BFs1i");
    static STRUCT_IF_C BFs1i_BFs1ll_BFu1c_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1ll_BFu1c_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1ll_BFu1c_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1ll_BFu1c_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1ll_BFu1c_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1ll_BFu1c_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1ll_BFu1c_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1ll_BFu1c_BFs1i, BFs1i_BFs1ll_BFu1c_BFs1i)
//============================================================================


struct  BFs1i_BFs1ll_BFu1c_BFs1ll  {
  signed int v1:1;
  signed __tsi64 v2:1;
  unsigned char v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1i_BFs1ll_BFu1c_BFs1ll) C1{ Fi:1 FL:1 Fc:1 FL:1}



static void Test_BFs1i_BFs1ll_BFu1c_BFs1ll()
{
  {
    init_simple_test("BFs1i_BFs1ll_BFu1c_BFs1ll");
    static STRUCT_IF_C BFs1i_BFs1ll_BFu1c_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1ll_BFu1c_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1ll_BFu1c_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1ll_BFu1c_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1ll_BFu1c_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1ll_BFu1c_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1ll_BFu1c_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1ll_BFu1c_BFs1ll, BFs1i_BFs1ll_BFu1c_BFs1ll)
//============================================================================


struct  BFs1i_BFs1ll_BFu1c_BFs1s  {
  signed int v1:1;
  signed __tsi64 v2:1;
  unsigned char v3:1;
  signed short v4:1;
};
//SIG(1 BFs1i_BFs1ll_BFu1c_BFs1s) C1{ Fi:1 FL:1 Fc:1 Fs:1}



static void Test_BFs1i_BFs1ll_BFu1c_BFs1s()
{
  {
    init_simple_test("BFs1i_BFs1ll_BFu1c_BFs1s");
    static STRUCT_IF_C BFs1i_BFs1ll_BFu1c_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1ll_BFu1c_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1ll_BFu1c_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1ll_BFu1c_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1ll_BFu1c_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1ll_BFu1c_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1ll_BFu1c_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1ll_BFu1c_BFs1s, BFs1i_BFs1ll_BFu1c_BFs1s)
//============================================================================


struct  BFs1i_BFs1ll_BFu1c_BFu1c  {
  signed int v1:1;
  signed __tsi64 v2:1;
  unsigned char v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1i_BFs1ll_BFu1c_BFu1c) C1{ Fi:1 FL:1 Fc:1 Fc:1}



static void Test_BFs1i_BFs1ll_BFu1c_BFu1c()
{
  {
    init_simple_test("BFs1i_BFs1ll_BFu1c_BFu1c");
    static STRUCT_IF_C BFs1i_BFs1ll_BFu1c_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1ll_BFu1c_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1ll_BFu1c_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1ll_BFu1c_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1ll_BFu1c_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1ll_BFu1c_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1ll_BFu1c_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1ll_BFu1c_BFu1c, BFs1i_BFs1ll_BFu1c_BFu1c)
//============================================================================


struct  BFs1i_BFs1ll_BFu1c_BFu1i  {
  signed int v1:1;
  signed __tsi64 v2:1;
  unsigned char v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1i_BFs1ll_BFu1c_BFu1i) C1{ Fi:1 FL:1 Fc:1 Fi:1}



static void Test_BFs1i_BFs1ll_BFu1c_BFu1i()
{
  {
    init_simple_test("BFs1i_BFs1ll_BFu1c_BFu1i");
    static STRUCT_IF_C BFs1i_BFs1ll_BFu1c_BFu1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1ll_BFu1c_BFu1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1ll_BFu1c_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1ll_BFu1c_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1ll_BFu1c_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1ll_BFu1c_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1ll_BFu1c_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1ll_BFu1c_BFu1i, BFs1i_BFs1ll_BFu1c_BFu1i)
//============================================================================


struct  BFs1i_BFs1ll_BFu1c_BFu1ll  {
  signed int v1:1;
  signed __tsi64 v2:1;
  unsigned char v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1i_BFs1ll_BFu1c_BFu1ll) C1{ Fi:1 FL:1 Fc:1 FL:1}



static void Test_BFs1i_BFs1ll_BFu1c_BFu1ll()
{
  {
    init_simple_test("BFs1i_BFs1ll_BFu1c_BFu1ll");
    static STRUCT_IF_C BFs1i_BFs1ll_BFu1c_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1ll_BFu1c_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1ll_BFu1c_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1ll_BFu1c_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1ll_BFu1c_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1ll_BFu1c_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1ll_BFu1c_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1ll_BFu1c_BFu1ll, BFs1i_BFs1ll_BFu1c_BFu1ll)
//============================================================================


struct  BFs1i_BFs1ll_BFu1c_BFu1s  {
  signed int v1:1;
  signed __tsi64 v2:1;
  unsigned char v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1i_BFs1ll_BFu1c_BFu1s) C1{ Fi:1 FL:1 Fc:1 Fs:1}



static void Test_BFs1i_BFs1ll_BFu1c_BFu1s()
{
  {
    init_simple_test("BFs1i_BFs1ll_BFu1c_BFu1s");
    static STRUCT_IF_C BFs1i_BFs1ll_BFu1c_BFu1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1ll_BFu1c_BFu1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1ll_BFu1c_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1ll_BFu1c_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1ll_BFu1c_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1ll_BFu1c_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1ll_BFu1c_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1ll_BFu1c_BFu1s, BFs1i_BFs1ll_BFu1c_BFu1s)
//============================================================================


struct  BFs1i_BFs1ll_BFu1i  {
  signed int v1:1;
  signed __tsi64 v2:1;
  unsigned int v3:1;
};
//SIG(1 BFs1i_BFs1ll_BFu1i) C1{ Fi:1 FL:1 Fi:1}



static void Test_BFs1i_BFs1ll_BFu1i()
{
  {
    init_simple_test("BFs1i_BFs1ll_BFu1i");
    static STRUCT_IF_C BFs1i_BFs1ll_BFu1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1ll_BFu1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1ll_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1ll_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1ll_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1ll_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1ll_BFu1i, BFs1i_BFs1ll_BFu1i)
//============================================================================


struct  BFs1i_BFs1ll_BFu1i_BFs1c  {
  signed int v1:1;
  signed __tsi64 v2:1;
  unsigned int v3:1;
  signed char v4:1;
};
//SIG(1 BFs1i_BFs1ll_BFu1i_BFs1c) C1{ Fi:1 FL:1 Fi:1 Fc:1}



static void Test_BFs1i_BFs1ll_BFu1i_BFs1c()
{
  {
    init_simple_test("BFs1i_BFs1ll_BFu1i_BFs1c");
    static STRUCT_IF_C BFs1i_BFs1ll_BFu1i_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1ll_BFu1i_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1ll_BFu1i_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1ll_BFu1i_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1ll_BFu1i_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1ll_BFu1i_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1ll_BFu1i_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1ll_BFu1i_BFs1c, BFs1i_BFs1ll_BFu1i_BFs1c)
//============================================================================


struct  BFs1i_BFs1ll_BFu1i_BFs1i  {
  signed int v1:1;
  signed __tsi64 v2:1;
  unsigned int v3:1;
  signed int v4:1;
};
//SIG(1 BFs1i_BFs1ll_BFu1i_BFs1i) C1{ Fi:1 FL:1 Fi:1 Fi:1}



static void Test_BFs1i_BFs1ll_BFu1i_BFs1i()
{
  {
    init_simple_test("BFs1i_BFs1ll_BFu1i_BFs1i");
    static STRUCT_IF_C BFs1i_BFs1ll_BFu1i_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1ll_BFu1i_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1ll_BFu1i_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1ll_BFu1i_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1ll_BFu1i_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1ll_BFu1i_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1ll_BFu1i_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1ll_BFu1i_BFs1i, BFs1i_BFs1ll_BFu1i_BFs1i)
//============================================================================


struct  BFs1i_BFs1ll_BFu1i_BFs1ll  {
  signed int v1:1;
  signed __tsi64 v2:1;
  unsigned int v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1i_BFs1ll_BFu1i_BFs1ll) C1{ Fi:1 FL:1 Fi:1 FL:1}



static void Test_BFs1i_BFs1ll_BFu1i_BFs1ll()
{
  {
    init_simple_test("BFs1i_BFs1ll_BFu1i_BFs1ll");
    static STRUCT_IF_C BFs1i_BFs1ll_BFu1i_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1ll_BFu1i_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1ll_BFu1i_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1ll_BFu1i_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1ll_BFu1i_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1ll_BFu1i_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1ll_BFu1i_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1ll_BFu1i_BFs1ll, BFs1i_BFs1ll_BFu1i_BFs1ll)
//============================================================================


struct  BFs1i_BFs1ll_BFu1i_BFs1s  {
  signed int v1:1;
  signed __tsi64 v2:1;
  unsigned int v3:1;
  signed short v4:1;
};
//SIG(1 BFs1i_BFs1ll_BFu1i_BFs1s) C1{ Fi:1 FL:1 Fi:1 Fs:1}



static void Test_BFs1i_BFs1ll_BFu1i_BFs1s()
{
  {
    init_simple_test("BFs1i_BFs1ll_BFu1i_BFs1s");
    static STRUCT_IF_C BFs1i_BFs1ll_BFu1i_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1ll_BFu1i_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1ll_BFu1i_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1ll_BFu1i_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1ll_BFu1i_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1ll_BFu1i_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1ll_BFu1i_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1ll_BFu1i_BFs1s, BFs1i_BFs1ll_BFu1i_BFs1s)
//============================================================================


struct  BFs1i_BFs1ll_BFu1i_BFu1c  {
  signed int v1:1;
  signed __tsi64 v2:1;
  unsigned int v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1i_BFs1ll_BFu1i_BFu1c) C1{ Fi:1 FL:1 Fi:1 Fc:1}



static void Test_BFs1i_BFs1ll_BFu1i_BFu1c()
{
  {
    init_simple_test("BFs1i_BFs1ll_BFu1i_BFu1c");
    static STRUCT_IF_C BFs1i_BFs1ll_BFu1i_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1ll_BFu1i_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1ll_BFu1i_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1ll_BFu1i_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1ll_BFu1i_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1ll_BFu1i_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1ll_BFu1i_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1ll_BFu1i_BFu1c, BFs1i_BFs1ll_BFu1i_BFu1c)
//============================================================================


struct  BFs1i_BFs1ll_BFu1i_BFu1i  {
  signed int v1:1;
  signed __tsi64 v2:1;
  unsigned int v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1i_BFs1ll_BFu1i_BFu1i) C1{ Fi:1 FL:1 Fi:1 Fi:1}



static void Test_BFs1i_BFs1ll_BFu1i_BFu1i()
{
  {
    init_simple_test("BFs1i_BFs1ll_BFu1i_BFu1i");
    static STRUCT_IF_C BFs1i_BFs1ll_BFu1i_BFu1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1ll_BFu1i_BFu1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1ll_BFu1i_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1ll_BFu1i_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1ll_BFu1i_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1ll_BFu1i_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1ll_BFu1i_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1ll_BFu1i_BFu1i, BFs1i_BFs1ll_BFu1i_BFu1i)
//============================================================================


struct  BFs1i_BFs1ll_BFu1i_BFu1ll  {
  signed int v1:1;
  signed __tsi64 v2:1;
  unsigned int v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1i_BFs1ll_BFu1i_BFu1ll) C1{ Fi:1 FL:1 Fi:1 FL:1}



static void Test_BFs1i_BFs1ll_BFu1i_BFu1ll()
{
  {
    init_simple_test("BFs1i_BFs1ll_BFu1i_BFu1ll");
    static STRUCT_IF_C BFs1i_BFs1ll_BFu1i_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1ll_BFu1i_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1ll_BFu1i_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1ll_BFu1i_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1ll_BFu1i_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1ll_BFu1i_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1ll_BFu1i_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1ll_BFu1i_BFu1ll, BFs1i_BFs1ll_BFu1i_BFu1ll)
//============================================================================


struct  BFs1i_BFs1ll_BFu1i_BFu1s  {
  signed int v1:1;
  signed __tsi64 v2:1;
  unsigned int v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1i_BFs1ll_BFu1i_BFu1s) C1{ Fi:1 FL:1 Fi:1 Fs:1}



static void Test_BFs1i_BFs1ll_BFu1i_BFu1s()
{
  {
    init_simple_test("BFs1i_BFs1ll_BFu1i_BFu1s");
    static STRUCT_IF_C BFs1i_BFs1ll_BFu1i_BFu1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1ll_BFu1i_BFu1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1ll_BFu1i_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1ll_BFu1i_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1ll_BFu1i_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1ll_BFu1i_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1ll_BFu1i_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1ll_BFu1i_BFu1s, BFs1i_BFs1ll_BFu1i_BFu1s)
//============================================================================


struct  BFs1i_BFs1ll_BFu1ll  {
  signed int v1:1;
  signed __tsi64 v2:1;
  __tsu64 v3:1;
};
//SIG(1 BFs1i_BFs1ll_BFu1ll) C1{ Fi:1 FL:1 FL:1}



static void Test_BFs1i_BFs1ll_BFu1ll()
{
  {
    init_simple_test("BFs1i_BFs1ll_BFu1ll");
    static STRUCT_IF_C BFs1i_BFs1ll_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1ll_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1ll_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1ll_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1ll_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1ll_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1ll_BFu1ll, BFs1i_BFs1ll_BFu1ll)
//============================================================================


struct  BFs1i_BFs1ll_BFu1ll_BFs1c  {
  signed int v1:1;
  signed __tsi64 v2:1;
  __tsu64 v3:1;
  signed char v4:1;
};
//SIG(1 BFs1i_BFs1ll_BFu1ll_BFs1c) C1{ Fi:1 FL:1 FL:1 Fc:1}



static void Test_BFs1i_BFs1ll_BFu1ll_BFs1c()
{
  {
    init_simple_test("BFs1i_BFs1ll_BFu1ll_BFs1c");
    static STRUCT_IF_C BFs1i_BFs1ll_BFu1ll_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1ll_BFu1ll_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1ll_BFu1ll_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1ll_BFu1ll_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1ll_BFu1ll_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1ll_BFu1ll_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1ll_BFu1ll_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1ll_BFu1ll_BFs1c, BFs1i_BFs1ll_BFu1ll_BFs1c)
//============================================================================


struct  BFs1i_BFs1ll_BFu1ll_BFs1i  {
  signed int v1:1;
  signed __tsi64 v2:1;
  __tsu64 v3:1;
  signed int v4:1;
};
//SIG(1 BFs1i_BFs1ll_BFu1ll_BFs1i) C1{ Fi:1 FL:1 FL:1 Fi:1}



static void Test_BFs1i_BFs1ll_BFu1ll_BFs1i()
{
  {
    init_simple_test("BFs1i_BFs1ll_BFu1ll_BFs1i");
    static STRUCT_IF_C BFs1i_BFs1ll_BFu1ll_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1ll_BFu1ll_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1ll_BFu1ll_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1ll_BFu1ll_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1ll_BFu1ll_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1ll_BFu1ll_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1ll_BFu1ll_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1ll_BFu1ll_BFs1i, BFs1i_BFs1ll_BFu1ll_BFs1i)
//============================================================================


struct  BFs1i_BFs1ll_BFu1ll_BFs1ll  {
  signed int v1:1;
  signed __tsi64 v2:1;
  __tsu64 v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1i_BFs1ll_BFu1ll_BFs1ll) C1{ Fi:1 FL:1 FL:1 FL:1}



static void Test_BFs1i_BFs1ll_BFu1ll_BFs1ll()
{
  {
    init_simple_test("BFs1i_BFs1ll_BFu1ll_BFs1ll");
    static STRUCT_IF_C BFs1i_BFs1ll_BFu1ll_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1ll_BFu1ll_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1ll_BFu1ll_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1ll_BFu1ll_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1ll_BFu1ll_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1ll_BFu1ll_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1ll_BFu1ll_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1ll_BFu1ll_BFs1ll, BFs1i_BFs1ll_BFu1ll_BFs1ll)
//============================================================================


struct  BFs1i_BFs1ll_BFu1ll_BFs1s  {
  signed int v1:1;
  signed __tsi64 v2:1;
  __tsu64 v3:1;
  signed short v4:1;
};
//SIG(1 BFs1i_BFs1ll_BFu1ll_BFs1s) C1{ Fi:1 FL:1 FL:1 Fs:1}



static void Test_BFs1i_BFs1ll_BFu1ll_BFs1s()
{
  {
    init_simple_test("BFs1i_BFs1ll_BFu1ll_BFs1s");
    static STRUCT_IF_C BFs1i_BFs1ll_BFu1ll_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1ll_BFu1ll_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1ll_BFu1ll_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1ll_BFu1ll_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1ll_BFu1ll_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1ll_BFu1ll_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1ll_BFu1ll_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1ll_BFu1ll_BFs1s, BFs1i_BFs1ll_BFu1ll_BFs1s)
//============================================================================


struct  BFs1i_BFs1ll_BFu1ll_BFu1c  {
  signed int v1:1;
  signed __tsi64 v2:1;
  __tsu64 v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1i_BFs1ll_BFu1ll_BFu1c) C1{ Fi:1 FL:1 FL:1 Fc:1}



static void Test_BFs1i_BFs1ll_BFu1ll_BFu1c()
{
  {
    init_simple_test("BFs1i_BFs1ll_BFu1ll_BFu1c");
    static STRUCT_IF_C BFs1i_BFs1ll_BFu1ll_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1ll_BFu1ll_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1ll_BFu1ll_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1ll_BFu1ll_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1ll_BFu1ll_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1ll_BFu1ll_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1ll_BFu1ll_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1ll_BFu1ll_BFu1c, BFs1i_BFs1ll_BFu1ll_BFu1c)
//============================================================================


struct  BFs1i_BFs1ll_BFu1ll_BFu1i  {
  signed int v1:1;
  signed __tsi64 v2:1;
  __tsu64 v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1i_BFs1ll_BFu1ll_BFu1i) C1{ Fi:1 FL:1 FL:1 Fi:1}



static void Test_BFs1i_BFs1ll_BFu1ll_BFu1i()
{
  {
    init_simple_test("BFs1i_BFs1ll_BFu1ll_BFu1i");
    static STRUCT_IF_C BFs1i_BFs1ll_BFu1ll_BFu1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1ll_BFu1ll_BFu1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1ll_BFu1ll_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1ll_BFu1ll_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1ll_BFu1ll_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1ll_BFu1ll_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1ll_BFu1ll_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1ll_BFu1ll_BFu1i, BFs1i_BFs1ll_BFu1ll_BFu1i)
//============================================================================


struct  BFs1i_BFs1ll_BFu1ll_BFu1ll  {
  signed int v1:1;
  signed __tsi64 v2:1;
  __tsu64 v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1i_BFs1ll_BFu1ll_BFu1ll) C1{ Fi:1 FL:1 FL:1 FL:1}



static void Test_BFs1i_BFs1ll_BFu1ll_BFu1ll()
{
  {
    init_simple_test("BFs1i_BFs1ll_BFu1ll_BFu1ll");
    static STRUCT_IF_C BFs1i_BFs1ll_BFu1ll_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1ll_BFu1ll_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1ll_BFu1ll_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1ll_BFu1ll_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1ll_BFu1ll_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1ll_BFu1ll_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1ll_BFu1ll_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1ll_BFu1ll_BFu1ll, BFs1i_BFs1ll_BFu1ll_BFu1ll)
//============================================================================


struct  BFs1i_BFs1ll_BFu1ll_BFu1s  {
  signed int v1:1;
  signed __tsi64 v2:1;
  __tsu64 v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1i_BFs1ll_BFu1ll_BFu1s) C1{ Fi:1 FL:1 FL:1 Fs:1}



static void Test_BFs1i_BFs1ll_BFu1ll_BFu1s()
{
  {
    init_simple_test("BFs1i_BFs1ll_BFu1ll_BFu1s");
    static STRUCT_IF_C BFs1i_BFs1ll_BFu1ll_BFu1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1ll_BFu1ll_BFu1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1ll_BFu1ll_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1ll_BFu1ll_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1ll_BFu1ll_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1ll_BFu1ll_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1ll_BFu1ll_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1ll_BFu1ll_BFu1s, BFs1i_BFs1ll_BFu1ll_BFu1s)
//============================================================================


struct  BFs1i_BFs1ll_BFu1s  {
  signed int v1:1;
  signed __tsi64 v2:1;
  unsigned short v3:1;
};
//SIG(1 BFs1i_BFs1ll_BFu1s) C1{ Fi:1 FL:1 Fs:1}



static void Test_BFs1i_BFs1ll_BFu1s()
{
  {
    init_simple_test("BFs1i_BFs1ll_BFu1s");
    static STRUCT_IF_C BFs1i_BFs1ll_BFu1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1ll_BFu1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1ll_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1ll_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1ll_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1ll_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1ll_BFu1s, BFs1i_BFs1ll_BFu1s)
//============================================================================


struct  BFs1i_BFs1ll_BFu1s_BFs1c  {
  signed int v1:1;
  signed __tsi64 v2:1;
  unsigned short v3:1;
  signed char v4:1;
};
//SIG(1 BFs1i_BFs1ll_BFu1s_BFs1c) C1{ Fi:1 FL:1 Fs:1 Fc:1}



static void Test_BFs1i_BFs1ll_BFu1s_BFs1c()
{
  {
    init_simple_test("BFs1i_BFs1ll_BFu1s_BFs1c");
    static STRUCT_IF_C BFs1i_BFs1ll_BFu1s_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1ll_BFu1s_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1ll_BFu1s_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1ll_BFu1s_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1ll_BFu1s_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1ll_BFu1s_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1ll_BFu1s_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1ll_BFu1s_BFs1c, BFs1i_BFs1ll_BFu1s_BFs1c)
//============================================================================


struct  BFs1i_BFs1ll_BFu1s_BFs1i  {
  signed int v1:1;
  signed __tsi64 v2:1;
  unsigned short v3:1;
  signed int v4:1;
};
//SIG(1 BFs1i_BFs1ll_BFu1s_BFs1i) C1{ Fi:1 FL:1 Fs:1 Fi:1}



static void Test_BFs1i_BFs1ll_BFu1s_BFs1i()
{
  {
    init_simple_test("BFs1i_BFs1ll_BFu1s_BFs1i");
    static STRUCT_IF_C BFs1i_BFs1ll_BFu1s_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1ll_BFu1s_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1ll_BFu1s_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1ll_BFu1s_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1ll_BFu1s_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1ll_BFu1s_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1ll_BFu1s_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1ll_BFu1s_BFs1i, BFs1i_BFs1ll_BFu1s_BFs1i)
//============================================================================


struct  BFs1i_BFs1ll_BFu1s_BFs1ll  {
  signed int v1:1;
  signed __tsi64 v2:1;
  unsigned short v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1i_BFs1ll_BFu1s_BFs1ll) C1{ Fi:1 FL:1 Fs:1 FL:1}



static void Test_BFs1i_BFs1ll_BFu1s_BFs1ll()
{
  {
    init_simple_test("BFs1i_BFs1ll_BFu1s_BFs1ll");
    static STRUCT_IF_C BFs1i_BFs1ll_BFu1s_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1ll_BFu1s_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1ll_BFu1s_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1ll_BFu1s_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1ll_BFu1s_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1ll_BFu1s_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1ll_BFu1s_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1ll_BFu1s_BFs1ll, BFs1i_BFs1ll_BFu1s_BFs1ll)
//============================================================================


struct  BFs1i_BFs1ll_BFu1s_BFs1s  {
  signed int v1:1;
  signed __tsi64 v2:1;
  unsigned short v3:1;
  signed short v4:1;
};
//SIG(1 BFs1i_BFs1ll_BFu1s_BFs1s) C1{ Fi:1 FL:1 Fs:1 Fs:1}



static void Test_BFs1i_BFs1ll_BFu1s_BFs1s()
{
  {
    init_simple_test("BFs1i_BFs1ll_BFu1s_BFs1s");
    static STRUCT_IF_C BFs1i_BFs1ll_BFu1s_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1ll_BFu1s_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1ll_BFu1s_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1ll_BFu1s_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1ll_BFu1s_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1ll_BFu1s_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1ll_BFu1s_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1ll_BFu1s_BFs1s, BFs1i_BFs1ll_BFu1s_BFs1s)
//============================================================================


struct  BFs1i_BFs1ll_BFu1s_BFu1c  {
  signed int v1:1;
  signed __tsi64 v2:1;
  unsigned short v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1i_BFs1ll_BFu1s_BFu1c) C1{ Fi:1 FL:1 Fs:1 Fc:1}



static void Test_BFs1i_BFs1ll_BFu1s_BFu1c()
{
  {
    init_simple_test("BFs1i_BFs1ll_BFu1s_BFu1c");
    static STRUCT_IF_C BFs1i_BFs1ll_BFu1s_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1ll_BFu1s_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1ll_BFu1s_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1ll_BFu1s_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1ll_BFu1s_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1ll_BFu1s_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1ll_BFu1s_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1ll_BFu1s_BFu1c, BFs1i_BFs1ll_BFu1s_BFu1c)
//============================================================================


struct  BFs1i_BFs1ll_BFu1s_BFu1i  {
  signed int v1:1;
  signed __tsi64 v2:1;
  unsigned short v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1i_BFs1ll_BFu1s_BFu1i) C1{ Fi:1 FL:1 Fs:1 Fi:1}



static void Test_BFs1i_BFs1ll_BFu1s_BFu1i()
{
  {
    init_simple_test("BFs1i_BFs1ll_BFu1s_BFu1i");
    static STRUCT_IF_C BFs1i_BFs1ll_BFu1s_BFu1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1ll_BFu1s_BFu1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1ll_BFu1s_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1ll_BFu1s_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1ll_BFu1s_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1ll_BFu1s_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1ll_BFu1s_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1ll_BFu1s_BFu1i, BFs1i_BFs1ll_BFu1s_BFu1i)
//============================================================================


struct  BFs1i_BFs1ll_BFu1s_BFu1ll  {
  signed int v1:1;
  signed __tsi64 v2:1;
  unsigned short v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1i_BFs1ll_BFu1s_BFu1ll) C1{ Fi:1 FL:1 Fs:1 FL:1}



static void Test_BFs1i_BFs1ll_BFu1s_BFu1ll()
{
  {
    init_simple_test("BFs1i_BFs1ll_BFu1s_BFu1ll");
    static STRUCT_IF_C BFs1i_BFs1ll_BFu1s_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1ll_BFu1s_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1ll_BFu1s_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1ll_BFu1s_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1ll_BFu1s_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1ll_BFu1s_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1ll_BFu1s_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1ll_BFu1s_BFu1ll, BFs1i_BFs1ll_BFu1s_BFu1ll)
//============================================================================


struct  BFs1i_BFs1ll_BFu1s_BFu1s  {
  signed int v1:1;
  signed __tsi64 v2:1;
  unsigned short v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1i_BFs1ll_BFu1s_BFu1s) C1{ Fi:1 FL:1 Fs:1 Fs:1}



static void Test_BFs1i_BFs1ll_BFu1s_BFu1s()
{
  {
    init_simple_test("BFs1i_BFs1ll_BFu1s_BFu1s");
    static STRUCT_IF_C BFs1i_BFs1ll_BFu1s_BFu1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1ll_BFu1s_BFu1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1ll_BFu1s_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1ll_BFu1s_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1ll_BFu1s_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1ll_BFu1s_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1ll_BFu1s_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1ll_BFu1s_BFu1s, BFs1i_BFs1ll_BFu1s_BFu1s)
//============================================================================


struct  BFs1i_BFs1s  {
  signed int v1:1;
  signed short v2:1;
};
//SIG(1 BFs1i_BFs1s) C1{ Fi:1 Fs:1}



static void Test_BFs1i_BFs1s()
{
  {
    init_simple_test("BFs1i_BFs1s");
    static STRUCT_IF_C BFs1i_BFs1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1s, BFs1i_BFs1s)
//============================================================================


struct  BFs1i_BFs1s_BFs1c  {
  signed int v1:1;
  signed short v2:1;
  signed char v3:1;
};
//SIG(1 BFs1i_BFs1s_BFs1c) C1{ Fi:1 Fs:1 Fc:1}



static void Test_BFs1i_BFs1s_BFs1c()
{
  {
    init_simple_test("BFs1i_BFs1s_BFs1c");
    static STRUCT_IF_C BFs1i_BFs1s_BFs1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1s_BFs1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1s_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1s_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1s_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1s_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1s_BFs1c, BFs1i_BFs1s_BFs1c)
//============================================================================


struct  BFs1i_BFs1s_BFs1c_BFs1c  {
  signed int v1:1;
  signed short v2:1;
  signed char v3:1;
  signed char v4:1;
};
//SIG(1 BFs1i_BFs1s_BFs1c_BFs1c) C1{ Fi:1 Fs:1 Fc:1 Fc:1}



static void Test_BFs1i_BFs1s_BFs1c_BFs1c()
{
  {
    init_simple_test("BFs1i_BFs1s_BFs1c_BFs1c");
    static STRUCT_IF_C BFs1i_BFs1s_BFs1c_BFs1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1s_BFs1c_BFs1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1s_BFs1c_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1s_BFs1c_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1s_BFs1c_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1s_BFs1c_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1s_BFs1c_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1s_BFs1c_BFs1c, BFs1i_BFs1s_BFs1c_BFs1c)
//============================================================================


struct  BFs1i_BFs1s_BFs1c_BFs1i  {
  signed int v1:1;
  signed short v2:1;
  signed char v3:1;
  signed int v4:1;
};
//SIG(1 BFs1i_BFs1s_BFs1c_BFs1i) C1{ Fi:1 Fs:1 Fc:1 Fi:1}



static void Test_BFs1i_BFs1s_BFs1c_BFs1i()
{
  {
    init_simple_test("BFs1i_BFs1s_BFs1c_BFs1i");
    static STRUCT_IF_C BFs1i_BFs1s_BFs1c_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1s_BFs1c_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1s_BFs1c_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1s_BFs1c_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1s_BFs1c_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1s_BFs1c_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1s_BFs1c_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1s_BFs1c_BFs1i, BFs1i_BFs1s_BFs1c_BFs1i)
//============================================================================


struct  BFs1i_BFs1s_BFs1c_BFs1ll  {
  signed int v1:1;
  signed short v2:1;
  signed char v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1i_BFs1s_BFs1c_BFs1ll) C1{ Fi:1 Fs:1 Fc:1 FL:1}



static void Test_BFs1i_BFs1s_BFs1c_BFs1ll()
{
  {
    init_simple_test("BFs1i_BFs1s_BFs1c_BFs1ll");
    static STRUCT_IF_C BFs1i_BFs1s_BFs1c_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1s_BFs1c_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1s_BFs1c_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1s_BFs1c_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1s_BFs1c_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1s_BFs1c_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1s_BFs1c_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1s_BFs1c_BFs1ll, BFs1i_BFs1s_BFs1c_BFs1ll)
//============================================================================


struct  BFs1i_BFs1s_BFs1c_BFs1s  {
  signed int v1:1;
  signed short v2:1;
  signed char v3:1;
  signed short v4:1;
};
//SIG(1 BFs1i_BFs1s_BFs1c_BFs1s) C1{ Fi:1 Fs:1 Fc:1 Fs:1}



static void Test_BFs1i_BFs1s_BFs1c_BFs1s()
{
  {
    init_simple_test("BFs1i_BFs1s_BFs1c_BFs1s");
    static STRUCT_IF_C BFs1i_BFs1s_BFs1c_BFs1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1s_BFs1c_BFs1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1s_BFs1c_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1s_BFs1c_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1s_BFs1c_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1s_BFs1c_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1s_BFs1c_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1s_BFs1c_BFs1s, BFs1i_BFs1s_BFs1c_BFs1s)
//============================================================================


struct  BFs1i_BFs1s_BFs1c_BFu1c  {
  signed int v1:1;
  signed short v2:1;
  signed char v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1i_BFs1s_BFs1c_BFu1c) C1{ Fi:1 Fs:1 Fc:1 Fc:1}



static void Test_BFs1i_BFs1s_BFs1c_BFu1c()
{
  {
    init_simple_test("BFs1i_BFs1s_BFs1c_BFu1c");
    static STRUCT_IF_C BFs1i_BFs1s_BFs1c_BFu1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1s_BFs1c_BFu1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1s_BFs1c_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1s_BFs1c_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1s_BFs1c_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1s_BFs1c_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1s_BFs1c_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1s_BFs1c_BFu1c, BFs1i_BFs1s_BFs1c_BFu1c)
//============================================================================


struct  BFs1i_BFs1s_BFs1c_BFu1i  {
  signed int v1:1;
  signed short v2:1;
  signed char v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1i_BFs1s_BFs1c_BFu1i) C1{ Fi:1 Fs:1 Fc:1 Fi:1}



static void Test_BFs1i_BFs1s_BFs1c_BFu1i()
{
  {
    init_simple_test("BFs1i_BFs1s_BFs1c_BFu1i");
    static STRUCT_IF_C BFs1i_BFs1s_BFs1c_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1s_BFs1c_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1s_BFs1c_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1s_BFs1c_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1s_BFs1c_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1s_BFs1c_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1s_BFs1c_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1s_BFs1c_BFu1i, BFs1i_BFs1s_BFs1c_BFu1i)
//============================================================================


struct  BFs1i_BFs1s_BFs1c_BFu1ll  {
  signed int v1:1;
  signed short v2:1;
  signed char v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1i_BFs1s_BFs1c_BFu1ll) C1{ Fi:1 Fs:1 Fc:1 FL:1}



static void Test_BFs1i_BFs1s_BFs1c_BFu1ll()
{
  {
    init_simple_test("BFs1i_BFs1s_BFs1c_BFu1ll");
    static STRUCT_IF_C BFs1i_BFs1s_BFs1c_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1s_BFs1c_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1s_BFs1c_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1s_BFs1c_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1s_BFs1c_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1s_BFs1c_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1s_BFs1c_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1s_BFs1c_BFu1ll, BFs1i_BFs1s_BFs1c_BFu1ll)
//============================================================================


struct  BFs1i_BFs1s_BFs1c_BFu1s  {
  signed int v1:1;
  signed short v2:1;
  signed char v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1i_BFs1s_BFs1c_BFu1s) C1{ Fi:1 Fs:1 Fc:1 Fs:1}



static void Test_BFs1i_BFs1s_BFs1c_BFu1s()
{
  {
    init_simple_test("BFs1i_BFs1s_BFs1c_BFu1s");
    static STRUCT_IF_C BFs1i_BFs1s_BFs1c_BFu1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1s_BFs1c_BFu1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1s_BFs1c_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1s_BFs1c_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1s_BFs1c_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1s_BFs1c_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1s_BFs1c_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1s_BFs1c_BFu1s, BFs1i_BFs1s_BFs1c_BFu1s)
//============================================================================


struct  BFs1i_BFs1s_BFs1i  {
  signed int v1:1;
  signed short v2:1;
  signed int v3:1;
};
//SIG(1 BFs1i_BFs1s_BFs1i) C1{ Fi:1 Fs:1 Fi:1}



static void Test_BFs1i_BFs1s_BFs1i()
{
  {
    init_simple_test("BFs1i_BFs1s_BFs1i");
    static STRUCT_IF_C BFs1i_BFs1s_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1s_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1s_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1s_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1s_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1s_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1s_BFs1i, BFs1i_BFs1s_BFs1i)
//============================================================================


struct  BFs1i_BFs1s_BFs1i_BFs1c  {
  signed int v1:1;
  signed short v2:1;
  signed int v3:1;
  signed char v4:1;
};
//SIG(1 BFs1i_BFs1s_BFs1i_BFs1c) C1{ Fi:1 Fs:1 Fi:1 Fc:1}



static void Test_BFs1i_BFs1s_BFs1i_BFs1c()
{
  {
    init_simple_test("BFs1i_BFs1s_BFs1i_BFs1c");
    static STRUCT_IF_C BFs1i_BFs1s_BFs1i_BFs1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1s_BFs1i_BFs1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1s_BFs1i_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1s_BFs1i_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1s_BFs1i_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1s_BFs1i_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1s_BFs1i_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1s_BFs1i_BFs1c, BFs1i_BFs1s_BFs1i_BFs1c)
//============================================================================


struct  BFs1i_BFs1s_BFs1i_BFs1i  {
  signed int v1:1;
  signed short v2:1;
  signed int v3:1;
  signed int v4:1;
};
//SIG(1 BFs1i_BFs1s_BFs1i_BFs1i) C1{ Fi:1 Fs:1 Fi:1 Fi:1}



static void Test_BFs1i_BFs1s_BFs1i_BFs1i()
{
  {
    init_simple_test("BFs1i_BFs1s_BFs1i_BFs1i");
    static STRUCT_IF_C BFs1i_BFs1s_BFs1i_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1s_BFs1i_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1s_BFs1i_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1s_BFs1i_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1s_BFs1i_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1s_BFs1i_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1s_BFs1i_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1s_BFs1i_BFs1i, BFs1i_BFs1s_BFs1i_BFs1i)
//============================================================================


struct  BFs1i_BFs1s_BFs1i_BFs1ll  {
  signed int v1:1;
  signed short v2:1;
  signed int v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1i_BFs1s_BFs1i_BFs1ll) C1{ Fi:1 Fs:1 Fi:1 FL:1}



static void Test_BFs1i_BFs1s_BFs1i_BFs1ll()
{
  {
    init_simple_test("BFs1i_BFs1s_BFs1i_BFs1ll");
    static STRUCT_IF_C BFs1i_BFs1s_BFs1i_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1s_BFs1i_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1s_BFs1i_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1s_BFs1i_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1s_BFs1i_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1s_BFs1i_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1s_BFs1i_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1s_BFs1i_BFs1ll, BFs1i_BFs1s_BFs1i_BFs1ll)
//============================================================================


struct  BFs1i_BFs1s_BFs1i_BFs1s  {
  signed int v1:1;
  signed short v2:1;
  signed int v3:1;
  signed short v4:1;
};
//SIG(1 BFs1i_BFs1s_BFs1i_BFs1s) C1{ Fi:1 Fs:1 Fi:1 Fs:1}



static void Test_BFs1i_BFs1s_BFs1i_BFs1s()
{
  {
    init_simple_test("BFs1i_BFs1s_BFs1i_BFs1s");
    static STRUCT_IF_C BFs1i_BFs1s_BFs1i_BFs1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1s_BFs1i_BFs1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1s_BFs1i_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1s_BFs1i_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1s_BFs1i_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1s_BFs1i_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1s_BFs1i_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1s_BFs1i_BFs1s, BFs1i_BFs1s_BFs1i_BFs1s)
//============================================================================


struct  BFs1i_BFs1s_BFs1i_BFu1c  {
  signed int v1:1;
  signed short v2:1;
  signed int v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1i_BFs1s_BFs1i_BFu1c) C1{ Fi:1 Fs:1 Fi:1 Fc:1}



static void Test_BFs1i_BFs1s_BFs1i_BFu1c()
{
  {
    init_simple_test("BFs1i_BFs1s_BFs1i_BFu1c");
    static STRUCT_IF_C BFs1i_BFs1s_BFs1i_BFu1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1s_BFs1i_BFu1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1s_BFs1i_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1s_BFs1i_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1s_BFs1i_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1s_BFs1i_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1s_BFs1i_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1s_BFs1i_BFu1c, BFs1i_BFs1s_BFs1i_BFu1c)
//============================================================================


struct  BFs1i_BFs1s_BFs1i_BFu1i  {
  signed int v1:1;
  signed short v2:1;
  signed int v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1i_BFs1s_BFs1i_BFu1i) C1{ Fi:1 Fs:1 Fi:1 Fi:1}



static void Test_BFs1i_BFs1s_BFs1i_BFu1i()
{
  {
    init_simple_test("BFs1i_BFs1s_BFs1i_BFu1i");
    static STRUCT_IF_C BFs1i_BFs1s_BFs1i_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1s_BFs1i_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1s_BFs1i_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1s_BFs1i_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1s_BFs1i_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1s_BFs1i_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1s_BFs1i_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1s_BFs1i_BFu1i, BFs1i_BFs1s_BFs1i_BFu1i)
//============================================================================


struct  BFs1i_BFs1s_BFs1i_BFu1ll  {
  signed int v1:1;
  signed short v2:1;
  signed int v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1i_BFs1s_BFs1i_BFu1ll) C1{ Fi:1 Fs:1 Fi:1 FL:1}



static void Test_BFs1i_BFs1s_BFs1i_BFu1ll()
{
  {
    init_simple_test("BFs1i_BFs1s_BFs1i_BFu1ll");
    static STRUCT_IF_C BFs1i_BFs1s_BFs1i_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1s_BFs1i_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1s_BFs1i_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1s_BFs1i_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1s_BFs1i_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1s_BFs1i_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1s_BFs1i_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1s_BFs1i_BFu1ll, BFs1i_BFs1s_BFs1i_BFu1ll)
//============================================================================


struct  BFs1i_BFs1s_BFs1i_BFu1s  {
  signed int v1:1;
  signed short v2:1;
  signed int v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1i_BFs1s_BFs1i_BFu1s) C1{ Fi:1 Fs:1 Fi:1 Fs:1}



static void Test_BFs1i_BFs1s_BFs1i_BFu1s()
{
  {
    init_simple_test("BFs1i_BFs1s_BFs1i_BFu1s");
    static STRUCT_IF_C BFs1i_BFs1s_BFs1i_BFu1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1s_BFs1i_BFu1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1s_BFs1i_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1s_BFs1i_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1s_BFs1i_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1s_BFs1i_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1s_BFs1i_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1s_BFs1i_BFu1s, BFs1i_BFs1s_BFs1i_BFu1s)
//============================================================================


struct  BFs1i_BFs1s_BFs1ll  {
  signed int v1:1;
  signed short v2:1;
  signed __tsi64 v3:1;
};
//SIG(1 BFs1i_BFs1s_BFs1ll) C1{ Fi:1 Fs:1 FL:1}



static void Test_BFs1i_BFs1s_BFs1ll()
{
  {
    init_simple_test("BFs1i_BFs1s_BFs1ll");
    static STRUCT_IF_C BFs1i_BFs1s_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1s_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1s_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1s_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1s_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1s_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1s_BFs1ll, BFs1i_BFs1s_BFs1ll)
//============================================================================


struct  BFs1i_BFs1s_BFs1ll_BFs1c  {
  signed int v1:1;
  signed short v2:1;
  signed __tsi64 v3:1;
  signed char v4:1;
};
//SIG(1 BFs1i_BFs1s_BFs1ll_BFs1c) C1{ Fi:1 Fs:1 FL:1 Fc:1}



static void Test_BFs1i_BFs1s_BFs1ll_BFs1c()
{
  {
    init_simple_test("BFs1i_BFs1s_BFs1ll_BFs1c");
    static STRUCT_IF_C BFs1i_BFs1s_BFs1ll_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1s_BFs1ll_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1s_BFs1ll_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1s_BFs1ll_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1s_BFs1ll_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1s_BFs1ll_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1s_BFs1ll_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1s_BFs1ll_BFs1c, BFs1i_BFs1s_BFs1ll_BFs1c)
//============================================================================


struct  BFs1i_BFs1s_BFs1ll_BFs1i  {
  signed int v1:1;
  signed short v2:1;
  signed __tsi64 v3:1;
  signed int v4:1;
};
//SIG(1 BFs1i_BFs1s_BFs1ll_BFs1i) C1{ Fi:1 Fs:1 FL:1 Fi:1}



static void Test_BFs1i_BFs1s_BFs1ll_BFs1i()
{
  {
    init_simple_test("BFs1i_BFs1s_BFs1ll_BFs1i");
    static STRUCT_IF_C BFs1i_BFs1s_BFs1ll_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1s_BFs1ll_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1s_BFs1ll_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1s_BFs1ll_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1s_BFs1ll_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1s_BFs1ll_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1s_BFs1ll_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1s_BFs1ll_BFs1i, BFs1i_BFs1s_BFs1ll_BFs1i)
//============================================================================


struct  BFs1i_BFs1s_BFs1ll_BFs1ll  {
  signed int v1:1;
  signed short v2:1;
  signed __tsi64 v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1i_BFs1s_BFs1ll_BFs1ll) C1{ Fi:1 Fs:1 FL:1 FL:1}



static void Test_BFs1i_BFs1s_BFs1ll_BFs1ll()
{
  {
    init_simple_test("BFs1i_BFs1s_BFs1ll_BFs1ll");
    static STRUCT_IF_C BFs1i_BFs1s_BFs1ll_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1s_BFs1ll_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1s_BFs1ll_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1s_BFs1ll_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1s_BFs1ll_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1s_BFs1ll_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1s_BFs1ll_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1s_BFs1ll_BFs1ll, BFs1i_BFs1s_BFs1ll_BFs1ll)
//============================================================================


struct  BFs1i_BFs1s_BFs1ll_BFs1s  {
  signed int v1:1;
  signed short v2:1;
  signed __tsi64 v3:1;
  signed short v4:1;
};
//SIG(1 BFs1i_BFs1s_BFs1ll_BFs1s) C1{ Fi:1 Fs:1 FL:1 Fs:1}



static void Test_BFs1i_BFs1s_BFs1ll_BFs1s()
{
  {
    init_simple_test("BFs1i_BFs1s_BFs1ll_BFs1s");
    static STRUCT_IF_C BFs1i_BFs1s_BFs1ll_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1s_BFs1ll_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1s_BFs1ll_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1s_BFs1ll_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1s_BFs1ll_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1s_BFs1ll_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1s_BFs1ll_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1s_BFs1ll_BFs1s, BFs1i_BFs1s_BFs1ll_BFs1s)
//============================================================================


struct  BFs1i_BFs1s_BFs1ll_BFu1c  {
  signed int v1:1;
  signed short v2:1;
  signed __tsi64 v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1i_BFs1s_BFs1ll_BFu1c) C1{ Fi:1 Fs:1 FL:1 Fc:1}



static void Test_BFs1i_BFs1s_BFs1ll_BFu1c()
{
  {
    init_simple_test("BFs1i_BFs1s_BFs1ll_BFu1c");
    static STRUCT_IF_C BFs1i_BFs1s_BFs1ll_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1s_BFs1ll_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1s_BFs1ll_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1s_BFs1ll_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1s_BFs1ll_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1s_BFs1ll_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1s_BFs1ll_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1s_BFs1ll_BFu1c, BFs1i_BFs1s_BFs1ll_BFu1c)
//============================================================================


struct  BFs1i_BFs1s_BFs1ll_BFu1i  {
  signed int v1:1;
  signed short v2:1;
  signed __tsi64 v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1i_BFs1s_BFs1ll_BFu1i) C1{ Fi:1 Fs:1 FL:1 Fi:1}



static void Test_BFs1i_BFs1s_BFs1ll_BFu1i()
{
  {
    init_simple_test("BFs1i_BFs1s_BFs1ll_BFu1i");
    static STRUCT_IF_C BFs1i_BFs1s_BFs1ll_BFu1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1s_BFs1ll_BFu1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1s_BFs1ll_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1s_BFs1ll_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1s_BFs1ll_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1s_BFs1ll_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1s_BFs1ll_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1s_BFs1ll_BFu1i, BFs1i_BFs1s_BFs1ll_BFu1i)
//============================================================================


struct  BFs1i_BFs1s_BFs1ll_BFu1ll  {
  signed int v1:1;
  signed short v2:1;
  signed __tsi64 v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1i_BFs1s_BFs1ll_BFu1ll) C1{ Fi:1 Fs:1 FL:1 FL:1}



static void Test_BFs1i_BFs1s_BFs1ll_BFu1ll()
{
  {
    init_simple_test("BFs1i_BFs1s_BFs1ll_BFu1ll");
    static STRUCT_IF_C BFs1i_BFs1s_BFs1ll_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1s_BFs1ll_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1s_BFs1ll_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1s_BFs1ll_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1s_BFs1ll_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1s_BFs1ll_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1s_BFs1ll_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1s_BFs1ll_BFu1ll, BFs1i_BFs1s_BFs1ll_BFu1ll)
//============================================================================


struct  BFs1i_BFs1s_BFs1ll_BFu1s  {
  signed int v1:1;
  signed short v2:1;
  signed __tsi64 v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1i_BFs1s_BFs1ll_BFu1s) C1{ Fi:1 Fs:1 FL:1 Fs:1}



static void Test_BFs1i_BFs1s_BFs1ll_BFu1s()
{
  {
    init_simple_test("BFs1i_BFs1s_BFs1ll_BFu1s");
    static STRUCT_IF_C BFs1i_BFs1s_BFs1ll_BFu1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1s_BFs1ll_BFu1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1s_BFs1ll_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1s_BFs1ll_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1s_BFs1ll_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1s_BFs1ll_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1s_BFs1ll_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1s_BFs1ll_BFu1s, BFs1i_BFs1s_BFs1ll_BFu1s)
//============================================================================


struct  BFs1i_BFs1s_BFs1s  {
  signed int v1:1;
  signed short v2:1;
  signed short v3:1;
};
//SIG(1 BFs1i_BFs1s_BFs1s) C1{ Fi:1 Fs:1 Fs:1}



static void Test_BFs1i_BFs1s_BFs1s()
{
  {
    init_simple_test("BFs1i_BFs1s_BFs1s");
    static STRUCT_IF_C BFs1i_BFs1s_BFs1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1s_BFs1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1s_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1s_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1s_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1s_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1s_BFs1s, BFs1i_BFs1s_BFs1s)
//============================================================================


struct  BFs1i_BFs1s_BFs1s_BFs1c  {
  signed int v1:1;
  signed short v2:1;
  signed short v3:1;
  signed char v4:1;
};
//SIG(1 BFs1i_BFs1s_BFs1s_BFs1c) C1{ Fi:1 Fs:1 Fs:1 Fc:1}



static void Test_BFs1i_BFs1s_BFs1s_BFs1c()
{
  {
    init_simple_test("BFs1i_BFs1s_BFs1s_BFs1c");
    static STRUCT_IF_C BFs1i_BFs1s_BFs1s_BFs1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1s_BFs1s_BFs1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1s_BFs1s_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1s_BFs1s_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1s_BFs1s_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1s_BFs1s_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1s_BFs1s_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1s_BFs1s_BFs1c, BFs1i_BFs1s_BFs1s_BFs1c)
//============================================================================


struct  BFs1i_BFs1s_BFs1s_BFs1i  {
  signed int v1:1;
  signed short v2:1;
  signed short v3:1;
  signed int v4:1;
};
//SIG(1 BFs1i_BFs1s_BFs1s_BFs1i) C1{ Fi:1 Fs:1 Fs:1 Fi:1}



static void Test_BFs1i_BFs1s_BFs1s_BFs1i()
{
  {
    init_simple_test("BFs1i_BFs1s_BFs1s_BFs1i");
    static STRUCT_IF_C BFs1i_BFs1s_BFs1s_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1s_BFs1s_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1s_BFs1s_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1s_BFs1s_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1s_BFs1s_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1s_BFs1s_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1s_BFs1s_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1s_BFs1s_BFs1i, BFs1i_BFs1s_BFs1s_BFs1i)
//============================================================================


struct  BFs1i_BFs1s_BFs1s_BFs1ll  {
  signed int v1:1;
  signed short v2:1;
  signed short v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1i_BFs1s_BFs1s_BFs1ll) C1{ Fi:1 Fs:1 Fs:1 FL:1}



static void Test_BFs1i_BFs1s_BFs1s_BFs1ll()
{
  {
    init_simple_test("BFs1i_BFs1s_BFs1s_BFs1ll");
    static STRUCT_IF_C BFs1i_BFs1s_BFs1s_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1s_BFs1s_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1s_BFs1s_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1s_BFs1s_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1s_BFs1s_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1s_BFs1s_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1s_BFs1s_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1s_BFs1s_BFs1ll, BFs1i_BFs1s_BFs1s_BFs1ll)
//============================================================================


struct  BFs1i_BFs1s_BFs1s_BFs1s  {
  signed int v1:1;
  signed short v2:1;
  signed short v3:1;
  signed short v4:1;
};
//SIG(1 BFs1i_BFs1s_BFs1s_BFs1s) C1{ Fi:1 Fs:1 Fs:1 Fs:1}



static void Test_BFs1i_BFs1s_BFs1s_BFs1s()
{
  {
    init_simple_test("BFs1i_BFs1s_BFs1s_BFs1s");
    static STRUCT_IF_C BFs1i_BFs1s_BFs1s_BFs1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1s_BFs1s_BFs1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1s_BFs1s_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1s_BFs1s_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1s_BFs1s_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1s_BFs1s_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1s_BFs1s_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1s_BFs1s_BFs1s, BFs1i_BFs1s_BFs1s_BFs1s)
//============================================================================


struct  BFs1i_BFs1s_BFs1s_BFu1c  {
  signed int v1:1;
  signed short v2:1;
  signed short v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1i_BFs1s_BFs1s_BFu1c) C1{ Fi:1 Fs:1 Fs:1 Fc:1}



static void Test_BFs1i_BFs1s_BFs1s_BFu1c()
{
  {
    init_simple_test("BFs1i_BFs1s_BFs1s_BFu1c");
    static STRUCT_IF_C BFs1i_BFs1s_BFs1s_BFu1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1s_BFs1s_BFu1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1s_BFs1s_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1s_BFs1s_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1s_BFs1s_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1s_BFs1s_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1s_BFs1s_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1s_BFs1s_BFu1c, BFs1i_BFs1s_BFs1s_BFu1c)
//============================================================================


struct  BFs1i_BFs1s_BFs1s_BFu1i  {
  signed int v1:1;
  signed short v2:1;
  signed short v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1i_BFs1s_BFs1s_BFu1i) C1{ Fi:1 Fs:1 Fs:1 Fi:1}



static void Test_BFs1i_BFs1s_BFs1s_BFu1i()
{
  {
    init_simple_test("BFs1i_BFs1s_BFs1s_BFu1i");
    static STRUCT_IF_C BFs1i_BFs1s_BFs1s_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1s_BFs1s_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1s_BFs1s_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1s_BFs1s_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1s_BFs1s_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1s_BFs1s_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1s_BFs1s_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1s_BFs1s_BFu1i, BFs1i_BFs1s_BFs1s_BFu1i)
//============================================================================


struct  BFs1i_BFs1s_BFs1s_BFu1ll  {
  signed int v1:1;
  signed short v2:1;
  signed short v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1i_BFs1s_BFs1s_BFu1ll) C1{ Fi:1 Fs:1 Fs:1 FL:1}



static void Test_BFs1i_BFs1s_BFs1s_BFu1ll()
{
  {
    init_simple_test("BFs1i_BFs1s_BFs1s_BFu1ll");
    static STRUCT_IF_C BFs1i_BFs1s_BFs1s_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1s_BFs1s_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1s_BFs1s_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1s_BFs1s_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1s_BFs1s_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1s_BFs1s_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1s_BFs1s_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1s_BFs1s_BFu1ll, BFs1i_BFs1s_BFs1s_BFu1ll)
//============================================================================


struct  BFs1i_BFs1s_BFs1s_BFu1s  {
  signed int v1:1;
  signed short v2:1;
  signed short v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1i_BFs1s_BFs1s_BFu1s) C1{ Fi:1 Fs:1 Fs:1 Fs:1}



static void Test_BFs1i_BFs1s_BFs1s_BFu1s()
{
  {
    init_simple_test("BFs1i_BFs1s_BFs1s_BFu1s");
    static STRUCT_IF_C BFs1i_BFs1s_BFs1s_BFu1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1s_BFs1s_BFu1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1s_BFs1s_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1s_BFs1s_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1s_BFs1s_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFs1s_BFs1s_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1s_BFs1s_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1s_BFs1s_BFu1s, BFs1i_BFs1s_BFs1s_BFu1s)
//============================================================================


struct  BFs1i_BFs1s_BFu1c  {
  signed int v1:1;
  signed short v2:1;
  unsigned char v3:1;
};
//SIG(1 BFs1i_BFs1s_BFu1c) C1{ Fi:1 Fs:1 Fc:1}



static void Test_BFs1i_BFs1s_BFu1c()
{
  {
    init_simple_test("BFs1i_BFs1s_BFu1c");
    static STRUCT_IF_C BFs1i_BFs1s_BFu1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1s_BFu1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1s_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1s_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1s_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1s_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1s_BFu1c, BFs1i_BFs1s_BFu1c)
//============================================================================


struct  BFs1i_BFs1s_BFu1c_BFs1c  {
  signed int v1:1;
  signed short v2:1;
  unsigned char v3:1;
  signed char v4:1;
};
//SIG(1 BFs1i_BFs1s_BFu1c_BFs1c) C1{ Fi:1 Fs:1 Fc:1 Fc:1}



static void Test_BFs1i_BFs1s_BFu1c_BFs1c()
{
  {
    init_simple_test("BFs1i_BFs1s_BFu1c_BFs1c");
    static STRUCT_IF_C BFs1i_BFs1s_BFu1c_BFs1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1s_BFu1c_BFs1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1s_BFu1c_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1s_BFu1c_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1s_BFu1c_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1s_BFu1c_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1s_BFu1c_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1s_BFu1c_BFs1c, BFs1i_BFs1s_BFu1c_BFs1c)
//============================================================================


struct  BFs1i_BFs1s_BFu1c_BFs1i  {
  signed int v1:1;
  signed short v2:1;
  unsigned char v3:1;
  signed int v4:1;
};
//SIG(1 BFs1i_BFs1s_BFu1c_BFs1i) C1{ Fi:1 Fs:1 Fc:1 Fi:1}



static void Test_BFs1i_BFs1s_BFu1c_BFs1i()
{
  {
    init_simple_test("BFs1i_BFs1s_BFu1c_BFs1i");
    static STRUCT_IF_C BFs1i_BFs1s_BFu1c_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1s_BFu1c_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1s_BFu1c_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1s_BFu1c_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1s_BFu1c_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1s_BFu1c_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1s_BFu1c_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1s_BFu1c_BFs1i, BFs1i_BFs1s_BFu1c_BFs1i)
//============================================================================


struct  BFs1i_BFs1s_BFu1c_BFs1ll  {
  signed int v1:1;
  signed short v2:1;
  unsigned char v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1i_BFs1s_BFu1c_BFs1ll) C1{ Fi:1 Fs:1 Fc:1 FL:1}



static void Test_BFs1i_BFs1s_BFu1c_BFs1ll()
{
  {
    init_simple_test("BFs1i_BFs1s_BFu1c_BFs1ll");
    static STRUCT_IF_C BFs1i_BFs1s_BFu1c_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1s_BFu1c_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1s_BFu1c_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1s_BFu1c_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1s_BFu1c_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1s_BFu1c_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1s_BFu1c_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1s_BFu1c_BFs1ll, BFs1i_BFs1s_BFu1c_BFs1ll)
//============================================================================


struct  BFs1i_BFs1s_BFu1c_BFs1s  {
  signed int v1:1;
  signed short v2:1;
  unsigned char v3:1;
  signed short v4:1;
};
//SIG(1 BFs1i_BFs1s_BFu1c_BFs1s) C1{ Fi:1 Fs:1 Fc:1 Fs:1}



static void Test_BFs1i_BFs1s_BFu1c_BFs1s()
{
  {
    init_simple_test("BFs1i_BFs1s_BFu1c_BFs1s");
    static STRUCT_IF_C BFs1i_BFs1s_BFu1c_BFs1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1s_BFu1c_BFs1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1s_BFu1c_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1s_BFu1c_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1s_BFu1c_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1s_BFu1c_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1s_BFu1c_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1s_BFu1c_BFs1s, BFs1i_BFs1s_BFu1c_BFs1s)
//============================================================================


struct  BFs1i_BFs1s_BFu1c_BFu1c  {
  signed int v1:1;
  signed short v2:1;
  unsigned char v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1i_BFs1s_BFu1c_BFu1c) C1{ Fi:1 Fs:1 Fc:1 Fc:1}



static void Test_BFs1i_BFs1s_BFu1c_BFu1c()
{
  {
    init_simple_test("BFs1i_BFs1s_BFu1c_BFu1c");
    static STRUCT_IF_C BFs1i_BFs1s_BFu1c_BFu1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1s_BFu1c_BFu1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1s_BFu1c_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1s_BFu1c_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1s_BFu1c_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1s_BFu1c_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1s_BFu1c_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1s_BFu1c_BFu1c, BFs1i_BFs1s_BFu1c_BFu1c)
//============================================================================


struct  BFs1i_BFs1s_BFu1c_BFu1i  {
  signed int v1:1;
  signed short v2:1;
  unsigned char v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1i_BFs1s_BFu1c_BFu1i) C1{ Fi:1 Fs:1 Fc:1 Fi:1}



static void Test_BFs1i_BFs1s_BFu1c_BFu1i()
{
  {
    init_simple_test("BFs1i_BFs1s_BFu1c_BFu1i");
    static STRUCT_IF_C BFs1i_BFs1s_BFu1c_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1s_BFu1c_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1s_BFu1c_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1s_BFu1c_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1s_BFu1c_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1s_BFu1c_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1s_BFu1c_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1s_BFu1c_BFu1i, BFs1i_BFs1s_BFu1c_BFu1i)
//============================================================================


struct  BFs1i_BFs1s_BFu1c_BFu1ll  {
  signed int v1:1;
  signed short v2:1;
  unsigned char v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1i_BFs1s_BFu1c_BFu1ll) C1{ Fi:1 Fs:1 Fc:1 FL:1}



static void Test_BFs1i_BFs1s_BFu1c_BFu1ll()
{
  {
    init_simple_test("BFs1i_BFs1s_BFu1c_BFu1ll");
    static STRUCT_IF_C BFs1i_BFs1s_BFu1c_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1s_BFu1c_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1s_BFu1c_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1s_BFu1c_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1s_BFu1c_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1s_BFu1c_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1s_BFu1c_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1s_BFu1c_BFu1ll, BFs1i_BFs1s_BFu1c_BFu1ll)
//============================================================================


struct  BFs1i_BFs1s_BFu1c_BFu1s  {
  signed int v1:1;
  signed short v2:1;
  unsigned char v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1i_BFs1s_BFu1c_BFu1s) C1{ Fi:1 Fs:1 Fc:1 Fs:1}



static void Test_BFs1i_BFs1s_BFu1c_BFu1s()
{
  {
    init_simple_test("BFs1i_BFs1s_BFu1c_BFu1s");
    static STRUCT_IF_C BFs1i_BFs1s_BFu1c_BFu1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1s_BFu1c_BFu1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1s_BFu1c_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1s_BFu1c_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1s_BFu1c_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1s_BFu1c_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1s_BFu1c_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1s_BFu1c_BFu1s, BFs1i_BFs1s_BFu1c_BFu1s)
//============================================================================


struct  BFs1i_BFs1s_BFu1i  {
  signed int v1:1;
  signed short v2:1;
  unsigned int v3:1;
};
//SIG(1 BFs1i_BFs1s_BFu1i) C1{ Fi:1 Fs:1 Fi:1}



static void Test_BFs1i_BFs1s_BFu1i()
{
  {
    init_simple_test("BFs1i_BFs1s_BFu1i");
    static STRUCT_IF_C BFs1i_BFs1s_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1s_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1s_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1s_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1s_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1s_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1s_BFu1i, BFs1i_BFs1s_BFu1i)
//============================================================================


struct  BFs1i_BFs1s_BFu1i_BFs1c  {
  signed int v1:1;
  signed short v2:1;
  unsigned int v3:1;
  signed char v4:1;
};
//SIG(1 BFs1i_BFs1s_BFu1i_BFs1c) C1{ Fi:1 Fs:1 Fi:1 Fc:1}



static void Test_BFs1i_BFs1s_BFu1i_BFs1c()
{
  {
    init_simple_test("BFs1i_BFs1s_BFu1i_BFs1c");
    static STRUCT_IF_C BFs1i_BFs1s_BFu1i_BFs1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1s_BFu1i_BFs1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1s_BFu1i_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1s_BFu1i_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1s_BFu1i_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1s_BFu1i_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1s_BFu1i_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1s_BFu1i_BFs1c, BFs1i_BFs1s_BFu1i_BFs1c)
//============================================================================


struct  BFs1i_BFs1s_BFu1i_BFs1i  {
  signed int v1:1;
  signed short v2:1;
  unsigned int v3:1;
  signed int v4:1;
};
//SIG(1 BFs1i_BFs1s_BFu1i_BFs1i) C1{ Fi:1 Fs:1 Fi:1 Fi:1}



static void Test_BFs1i_BFs1s_BFu1i_BFs1i()
{
  {
    init_simple_test("BFs1i_BFs1s_BFu1i_BFs1i");
    static STRUCT_IF_C BFs1i_BFs1s_BFu1i_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1s_BFu1i_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1s_BFu1i_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1s_BFu1i_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1s_BFu1i_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1s_BFu1i_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1s_BFu1i_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1s_BFu1i_BFs1i, BFs1i_BFs1s_BFu1i_BFs1i)
//============================================================================


struct  BFs1i_BFs1s_BFu1i_BFs1ll  {
  signed int v1:1;
  signed short v2:1;
  unsigned int v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1i_BFs1s_BFu1i_BFs1ll) C1{ Fi:1 Fs:1 Fi:1 FL:1}



static void Test_BFs1i_BFs1s_BFu1i_BFs1ll()
{
  {
    init_simple_test("BFs1i_BFs1s_BFu1i_BFs1ll");
    static STRUCT_IF_C BFs1i_BFs1s_BFu1i_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1s_BFu1i_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1s_BFu1i_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1s_BFu1i_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1s_BFu1i_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1s_BFu1i_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1s_BFu1i_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1s_BFu1i_BFs1ll, BFs1i_BFs1s_BFu1i_BFs1ll)
//============================================================================


struct  BFs1i_BFs1s_BFu1i_BFs1s  {
  signed int v1:1;
  signed short v2:1;
  unsigned int v3:1;
  signed short v4:1;
};
//SIG(1 BFs1i_BFs1s_BFu1i_BFs1s) C1{ Fi:1 Fs:1 Fi:1 Fs:1}



static void Test_BFs1i_BFs1s_BFu1i_BFs1s()
{
  {
    init_simple_test("BFs1i_BFs1s_BFu1i_BFs1s");
    static STRUCT_IF_C BFs1i_BFs1s_BFu1i_BFs1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1s_BFu1i_BFs1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1s_BFu1i_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1s_BFu1i_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1s_BFu1i_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1s_BFu1i_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1s_BFu1i_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1s_BFu1i_BFs1s, BFs1i_BFs1s_BFu1i_BFs1s)
//============================================================================


struct  BFs1i_BFs1s_BFu1i_BFu1c  {
  signed int v1:1;
  signed short v2:1;
  unsigned int v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1i_BFs1s_BFu1i_BFu1c) C1{ Fi:1 Fs:1 Fi:1 Fc:1}



static void Test_BFs1i_BFs1s_BFu1i_BFu1c()
{
  {
    init_simple_test("BFs1i_BFs1s_BFu1i_BFu1c");
    static STRUCT_IF_C BFs1i_BFs1s_BFu1i_BFu1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1s_BFu1i_BFu1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1s_BFu1i_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1s_BFu1i_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1s_BFu1i_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1s_BFu1i_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1s_BFu1i_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1s_BFu1i_BFu1c, BFs1i_BFs1s_BFu1i_BFu1c)
//============================================================================


struct  BFs1i_BFs1s_BFu1i_BFu1i  {
  signed int v1:1;
  signed short v2:1;
  unsigned int v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1i_BFs1s_BFu1i_BFu1i) C1{ Fi:1 Fs:1 Fi:1 Fi:1}



static void Test_BFs1i_BFs1s_BFu1i_BFu1i()
{
  {
    init_simple_test("BFs1i_BFs1s_BFu1i_BFu1i");
    static STRUCT_IF_C BFs1i_BFs1s_BFu1i_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1s_BFu1i_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1s_BFu1i_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1s_BFu1i_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1s_BFu1i_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1s_BFu1i_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1s_BFu1i_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1s_BFu1i_BFu1i, BFs1i_BFs1s_BFu1i_BFu1i)
//============================================================================


struct  BFs1i_BFs1s_BFu1i_BFu1ll  {
  signed int v1:1;
  signed short v2:1;
  unsigned int v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1i_BFs1s_BFu1i_BFu1ll) C1{ Fi:1 Fs:1 Fi:1 FL:1}



static void Test_BFs1i_BFs1s_BFu1i_BFu1ll()
{
  {
    init_simple_test("BFs1i_BFs1s_BFu1i_BFu1ll");
    static STRUCT_IF_C BFs1i_BFs1s_BFu1i_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1s_BFu1i_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1s_BFu1i_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1s_BFu1i_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1s_BFu1i_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1s_BFu1i_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1s_BFu1i_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1s_BFu1i_BFu1ll, BFs1i_BFs1s_BFu1i_BFu1ll)
//============================================================================


struct  BFs1i_BFs1s_BFu1i_BFu1s  {
  signed int v1:1;
  signed short v2:1;
  unsigned int v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1i_BFs1s_BFu1i_BFu1s) C1{ Fi:1 Fs:1 Fi:1 Fs:1}



static void Test_BFs1i_BFs1s_BFu1i_BFu1s()
{
  {
    init_simple_test("BFs1i_BFs1s_BFu1i_BFu1s");
    static STRUCT_IF_C BFs1i_BFs1s_BFu1i_BFu1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1s_BFu1i_BFu1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1s_BFu1i_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1s_BFu1i_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1s_BFu1i_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1s_BFu1i_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1s_BFu1i_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1s_BFu1i_BFu1s, BFs1i_BFs1s_BFu1i_BFu1s)
//============================================================================


struct  BFs1i_BFs1s_BFu1ll  {
  signed int v1:1;
  signed short v2:1;
  __tsu64 v3:1;
};
//SIG(1 BFs1i_BFs1s_BFu1ll) C1{ Fi:1 Fs:1 FL:1}



static void Test_BFs1i_BFs1s_BFu1ll()
{
  {
    init_simple_test("BFs1i_BFs1s_BFu1ll");
    static STRUCT_IF_C BFs1i_BFs1s_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1s_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1s_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1s_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1s_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1s_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1s_BFu1ll, BFs1i_BFs1s_BFu1ll)
//============================================================================


struct  BFs1i_BFs1s_BFu1ll_BFs1c  {
  signed int v1:1;
  signed short v2:1;
  __tsu64 v3:1;
  signed char v4:1;
};
//SIG(1 BFs1i_BFs1s_BFu1ll_BFs1c) C1{ Fi:1 Fs:1 FL:1 Fc:1}



static void Test_BFs1i_BFs1s_BFu1ll_BFs1c()
{
  {
    init_simple_test("BFs1i_BFs1s_BFu1ll_BFs1c");
    static STRUCT_IF_C BFs1i_BFs1s_BFu1ll_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1s_BFu1ll_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1s_BFu1ll_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1s_BFu1ll_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1s_BFu1ll_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1s_BFu1ll_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1s_BFu1ll_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1s_BFu1ll_BFs1c, BFs1i_BFs1s_BFu1ll_BFs1c)
//============================================================================


struct  BFs1i_BFs1s_BFu1ll_BFs1i  {
  signed int v1:1;
  signed short v2:1;
  __tsu64 v3:1;
  signed int v4:1;
};
//SIG(1 BFs1i_BFs1s_BFu1ll_BFs1i) C1{ Fi:1 Fs:1 FL:1 Fi:1}



static void Test_BFs1i_BFs1s_BFu1ll_BFs1i()
{
  {
    init_simple_test("BFs1i_BFs1s_BFu1ll_BFs1i");
    static STRUCT_IF_C BFs1i_BFs1s_BFu1ll_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1s_BFu1ll_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1s_BFu1ll_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1s_BFu1ll_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1s_BFu1ll_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1s_BFu1ll_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1s_BFu1ll_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1s_BFu1ll_BFs1i, BFs1i_BFs1s_BFu1ll_BFs1i)
//============================================================================


struct  BFs1i_BFs1s_BFu1ll_BFs1ll  {
  signed int v1:1;
  signed short v2:1;
  __tsu64 v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1i_BFs1s_BFu1ll_BFs1ll) C1{ Fi:1 Fs:1 FL:1 FL:1}



static void Test_BFs1i_BFs1s_BFu1ll_BFs1ll()
{
  {
    init_simple_test("BFs1i_BFs1s_BFu1ll_BFs1ll");
    static STRUCT_IF_C BFs1i_BFs1s_BFu1ll_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1s_BFu1ll_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1s_BFu1ll_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1s_BFu1ll_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1s_BFu1ll_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1s_BFu1ll_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1s_BFu1ll_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1s_BFu1ll_BFs1ll, BFs1i_BFs1s_BFu1ll_BFs1ll)
//============================================================================


struct  BFs1i_BFs1s_BFu1ll_BFs1s  {
  signed int v1:1;
  signed short v2:1;
  __tsu64 v3:1;
  signed short v4:1;
};
//SIG(1 BFs1i_BFs1s_BFu1ll_BFs1s) C1{ Fi:1 Fs:1 FL:1 Fs:1}



static void Test_BFs1i_BFs1s_BFu1ll_BFs1s()
{
  {
    init_simple_test("BFs1i_BFs1s_BFu1ll_BFs1s");
    static STRUCT_IF_C BFs1i_BFs1s_BFu1ll_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1s_BFu1ll_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1s_BFu1ll_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1s_BFu1ll_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1s_BFu1ll_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1s_BFu1ll_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1s_BFu1ll_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1s_BFu1ll_BFs1s, BFs1i_BFs1s_BFu1ll_BFs1s)
//============================================================================


struct  BFs1i_BFs1s_BFu1ll_BFu1c  {
  signed int v1:1;
  signed short v2:1;
  __tsu64 v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1i_BFs1s_BFu1ll_BFu1c) C1{ Fi:1 Fs:1 FL:1 Fc:1}



static void Test_BFs1i_BFs1s_BFu1ll_BFu1c()
{
  {
    init_simple_test("BFs1i_BFs1s_BFu1ll_BFu1c");
    static STRUCT_IF_C BFs1i_BFs1s_BFu1ll_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1s_BFu1ll_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1s_BFu1ll_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1s_BFu1ll_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1s_BFu1ll_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1s_BFu1ll_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1s_BFu1ll_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1s_BFu1ll_BFu1c, BFs1i_BFs1s_BFu1ll_BFu1c)
//============================================================================


struct  BFs1i_BFs1s_BFu1ll_BFu1i  {
  signed int v1:1;
  signed short v2:1;
  __tsu64 v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1i_BFs1s_BFu1ll_BFu1i) C1{ Fi:1 Fs:1 FL:1 Fi:1}



static void Test_BFs1i_BFs1s_BFu1ll_BFu1i()
{
  {
    init_simple_test("BFs1i_BFs1s_BFu1ll_BFu1i");
    static STRUCT_IF_C BFs1i_BFs1s_BFu1ll_BFu1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1s_BFu1ll_BFu1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1s_BFu1ll_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1s_BFu1ll_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1s_BFu1ll_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1s_BFu1ll_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1s_BFu1ll_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1s_BFu1ll_BFu1i, BFs1i_BFs1s_BFu1ll_BFu1i)
//============================================================================


struct  BFs1i_BFs1s_BFu1ll_BFu1ll  {
  signed int v1:1;
  signed short v2:1;
  __tsu64 v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1i_BFs1s_BFu1ll_BFu1ll) C1{ Fi:1 Fs:1 FL:1 FL:1}



static void Test_BFs1i_BFs1s_BFu1ll_BFu1ll()
{
  {
    init_simple_test("BFs1i_BFs1s_BFu1ll_BFu1ll");
    static STRUCT_IF_C BFs1i_BFs1s_BFu1ll_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1s_BFu1ll_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1s_BFu1ll_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1s_BFu1ll_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1s_BFu1ll_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1s_BFu1ll_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1s_BFu1ll_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1s_BFu1ll_BFu1ll, BFs1i_BFs1s_BFu1ll_BFu1ll)
//============================================================================


struct  BFs1i_BFs1s_BFu1ll_BFu1s  {
  signed int v1:1;
  signed short v2:1;
  __tsu64 v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1i_BFs1s_BFu1ll_BFu1s) C1{ Fi:1 Fs:1 FL:1 Fs:1}



static void Test_BFs1i_BFs1s_BFu1ll_BFu1s()
{
  {
    init_simple_test("BFs1i_BFs1s_BFu1ll_BFu1s");
    static STRUCT_IF_C BFs1i_BFs1s_BFu1ll_BFu1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1s_BFu1ll_BFu1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1s_BFu1ll_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1s_BFu1ll_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1s_BFu1ll_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1s_BFu1ll_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1s_BFu1ll_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1s_BFu1ll_BFu1s, BFs1i_BFs1s_BFu1ll_BFu1s)
//============================================================================


struct  BFs1i_BFs1s_BFu1s  {
  signed int v1:1;
  signed short v2:1;
  unsigned short v3:1;
};
//SIG(1 BFs1i_BFs1s_BFu1s) C1{ Fi:1 Fs:1 Fs:1}



static void Test_BFs1i_BFs1s_BFu1s()
{
  {
    init_simple_test("BFs1i_BFs1s_BFu1s");
    static STRUCT_IF_C BFs1i_BFs1s_BFu1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1s_BFu1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1s_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1s_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1s_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1s_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1s_BFu1s, BFs1i_BFs1s_BFu1s)
//============================================================================


struct  BFs1i_BFs1s_BFu1s_BFs1c  {
  signed int v1:1;
  signed short v2:1;
  unsigned short v3:1;
  signed char v4:1;
};
//SIG(1 BFs1i_BFs1s_BFu1s_BFs1c) C1{ Fi:1 Fs:1 Fs:1 Fc:1}



static void Test_BFs1i_BFs1s_BFu1s_BFs1c()
{
  {
    init_simple_test("BFs1i_BFs1s_BFu1s_BFs1c");
    static STRUCT_IF_C BFs1i_BFs1s_BFu1s_BFs1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1s_BFu1s_BFs1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1s_BFu1s_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1s_BFu1s_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1s_BFu1s_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1s_BFu1s_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1s_BFu1s_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1s_BFu1s_BFs1c, BFs1i_BFs1s_BFu1s_BFs1c)
//============================================================================


struct  BFs1i_BFs1s_BFu1s_BFs1i  {
  signed int v1:1;
  signed short v2:1;
  unsigned short v3:1;
  signed int v4:1;
};
//SIG(1 BFs1i_BFs1s_BFu1s_BFs1i) C1{ Fi:1 Fs:1 Fs:1 Fi:1}



static void Test_BFs1i_BFs1s_BFu1s_BFs1i()
{
  {
    init_simple_test("BFs1i_BFs1s_BFu1s_BFs1i");
    static STRUCT_IF_C BFs1i_BFs1s_BFu1s_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1s_BFu1s_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1s_BFu1s_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1s_BFu1s_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1s_BFu1s_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1s_BFu1s_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1s_BFu1s_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1s_BFu1s_BFs1i, BFs1i_BFs1s_BFu1s_BFs1i)
//============================================================================


struct  BFs1i_BFs1s_BFu1s_BFs1ll  {
  signed int v1:1;
  signed short v2:1;
  unsigned short v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1i_BFs1s_BFu1s_BFs1ll) C1{ Fi:1 Fs:1 Fs:1 FL:1}



static void Test_BFs1i_BFs1s_BFu1s_BFs1ll()
{
  {
    init_simple_test("BFs1i_BFs1s_BFu1s_BFs1ll");
    static STRUCT_IF_C BFs1i_BFs1s_BFu1s_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1s_BFu1s_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1s_BFu1s_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1s_BFu1s_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1s_BFu1s_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1s_BFu1s_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1s_BFu1s_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1s_BFu1s_BFs1ll, BFs1i_BFs1s_BFu1s_BFs1ll)
//============================================================================


struct  BFs1i_BFs1s_BFu1s_BFs1s  {
  signed int v1:1;
  signed short v2:1;
  unsigned short v3:1;
  signed short v4:1;
};
//SIG(1 BFs1i_BFs1s_BFu1s_BFs1s) C1{ Fi:1 Fs:1 Fs:1 Fs:1}



static void Test_BFs1i_BFs1s_BFu1s_BFs1s()
{
  {
    init_simple_test("BFs1i_BFs1s_BFu1s_BFs1s");
    static STRUCT_IF_C BFs1i_BFs1s_BFu1s_BFs1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1s_BFu1s_BFs1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1s_BFu1s_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1s_BFu1s_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1s_BFu1s_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1s_BFu1s_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFs1s_BFu1s_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1s_BFu1s_BFs1s, BFs1i_BFs1s_BFu1s_BFs1s)
//============================================================================


struct  BFs1i_BFs1s_BFu1s_BFu1c  {
  signed int v1:1;
  signed short v2:1;
  unsigned short v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1i_BFs1s_BFu1s_BFu1c) C1{ Fi:1 Fs:1 Fs:1 Fc:1}



static void Test_BFs1i_BFs1s_BFu1s_BFu1c()
{
  {
    init_simple_test("BFs1i_BFs1s_BFu1s_BFu1c");
    static STRUCT_IF_C BFs1i_BFs1s_BFu1s_BFu1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1s_BFu1s_BFu1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1s_BFu1s_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1s_BFu1s_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1s_BFu1s_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1s_BFu1s_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1s_BFu1s_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1s_BFu1s_BFu1c, BFs1i_BFs1s_BFu1s_BFu1c)
//============================================================================


struct  BFs1i_BFs1s_BFu1s_BFu1i  {
  signed int v1:1;
  signed short v2:1;
  unsigned short v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1i_BFs1s_BFu1s_BFu1i) C1{ Fi:1 Fs:1 Fs:1 Fi:1}



static void Test_BFs1i_BFs1s_BFu1s_BFu1i()
{
  {
    init_simple_test("BFs1i_BFs1s_BFu1s_BFu1i");
    static STRUCT_IF_C BFs1i_BFs1s_BFu1s_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1s_BFu1s_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1s_BFu1s_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1s_BFu1s_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1s_BFu1s_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1s_BFu1s_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1s_BFu1s_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1s_BFu1s_BFu1i, BFs1i_BFs1s_BFu1s_BFu1i)
//============================================================================


struct  BFs1i_BFs1s_BFu1s_BFu1ll  {
  signed int v1:1;
  signed short v2:1;
  unsigned short v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1i_BFs1s_BFu1s_BFu1ll) C1{ Fi:1 Fs:1 Fs:1 FL:1}



static void Test_BFs1i_BFs1s_BFu1s_BFu1ll()
{
  {
    init_simple_test("BFs1i_BFs1s_BFu1s_BFu1ll");
    static STRUCT_IF_C BFs1i_BFs1s_BFu1s_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFs1s_BFu1s_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFs1s_BFu1s_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1s_BFu1s_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1s_BFu1s_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1s_BFu1s_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1s_BFu1s_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1s_BFu1s_BFu1ll, BFs1i_BFs1s_BFu1s_BFu1ll)
//============================================================================


struct  BFs1i_BFs1s_BFu1s_BFu1s  {
  signed int v1:1;
  signed short v2:1;
  unsigned short v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1i_BFs1s_BFu1s_BFu1s) C1{ Fi:1 Fs:1 Fs:1 Fs:1}



static void Test_BFs1i_BFs1s_BFu1s_BFu1s()
{
  {
    init_simple_test("BFs1i_BFs1s_BFu1s_BFu1s");
    static STRUCT_IF_C BFs1i_BFs1s_BFu1s_BFu1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFs1s_BFu1s_BFu1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFs1s_BFu1s_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFs1s_BFu1s_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1i_BFs1s_BFu1s_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFs1s_BFu1s_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFs1s_BFu1s_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFs1s_BFu1s_BFu1s, BFs1i_BFs1s_BFu1s_BFu1s)
//============================================================================


struct  BFs1i_BFu1c  {
  signed int v1:1;
  unsigned char v2:1;
};
//SIG(1 BFs1i_BFu1c) C1{ Fi:1 Fc:1}



static void Test_BFs1i_BFu1c()
{
  {
    init_simple_test("BFs1i_BFu1c");
    static STRUCT_IF_C BFs1i_BFu1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1c, BFs1i_BFu1c)
//============================================================================


struct  BFs1i_BFu1c_BFs1c  {
  signed int v1:1;
  unsigned char v2:1;
  signed char v3:1;
};
//SIG(1 BFs1i_BFu1c_BFs1c) C1{ Fi:1 Fc:1 Fc:1}



static void Test_BFs1i_BFu1c_BFs1c()
{
  {
    init_simple_test("BFs1i_BFu1c_BFs1c");
    static STRUCT_IF_C BFs1i_BFu1c_BFs1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1c_BFs1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1c_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1c_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1c_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1c_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1c_BFs1c, BFs1i_BFu1c_BFs1c)
//============================================================================


struct  BFs1i_BFu1c_BFs1c_BFs1c  {
  signed int v1:1;
  unsigned char v2:1;
  signed char v3:1;
  signed char v4:1;
};
//SIG(1 BFs1i_BFu1c_BFs1c_BFs1c) C1{ Fi:1 Fc:1 Fc:1 Fc:1}



static void Test_BFs1i_BFu1c_BFs1c_BFs1c()
{
  {
    init_simple_test("BFs1i_BFu1c_BFs1c_BFs1c");
    static STRUCT_IF_C BFs1i_BFu1c_BFs1c_BFs1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1c_BFs1c_BFs1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1c_BFs1c_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1c_BFs1c_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1c_BFs1c_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1c_BFs1c_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1c_BFs1c_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1c_BFs1c_BFs1c, BFs1i_BFu1c_BFs1c_BFs1c)
//============================================================================


struct  BFs1i_BFu1c_BFs1c_BFs1i  {
  signed int v1:1;
  unsigned char v2:1;
  signed char v3:1;
  signed int v4:1;
};
//SIG(1 BFs1i_BFu1c_BFs1c_BFs1i) C1{ Fi:1 Fc:1 Fc:1 Fi:1}



static void Test_BFs1i_BFu1c_BFs1c_BFs1i()
{
  {
    init_simple_test("BFs1i_BFu1c_BFs1c_BFs1i");
    static STRUCT_IF_C BFs1i_BFu1c_BFs1c_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1c_BFs1c_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1c_BFs1c_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1c_BFs1c_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1c_BFs1c_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1c_BFs1c_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1c_BFs1c_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1c_BFs1c_BFs1i, BFs1i_BFu1c_BFs1c_BFs1i)
//============================================================================


struct  BFs1i_BFu1c_BFs1c_BFs1ll  {
  signed int v1:1;
  unsigned char v2:1;
  signed char v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1i_BFu1c_BFs1c_BFs1ll) C1{ Fi:1 Fc:1 Fc:1 FL:1}



static void Test_BFs1i_BFu1c_BFs1c_BFs1ll()
{
  {
    init_simple_test("BFs1i_BFu1c_BFs1c_BFs1ll");
    static STRUCT_IF_C BFs1i_BFu1c_BFs1c_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1c_BFs1c_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1c_BFs1c_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1c_BFs1c_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1c_BFs1c_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1c_BFs1c_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1c_BFs1c_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1c_BFs1c_BFs1ll, BFs1i_BFu1c_BFs1c_BFs1ll)
//============================================================================


struct  BFs1i_BFu1c_BFs1c_BFs1s  {
  signed int v1:1;
  unsigned char v2:1;
  signed char v3:1;
  signed short v4:1;
};
//SIG(1 BFs1i_BFu1c_BFs1c_BFs1s) C1{ Fi:1 Fc:1 Fc:1 Fs:1}



static void Test_BFs1i_BFu1c_BFs1c_BFs1s()
{
  {
    init_simple_test("BFs1i_BFu1c_BFs1c_BFs1s");
    static STRUCT_IF_C BFs1i_BFu1c_BFs1c_BFs1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1c_BFs1c_BFs1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1c_BFs1c_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1c_BFs1c_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1c_BFs1c_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1c_BFs1c_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1c_BFs1c_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1c_BFs1c_BFs1s, BFs1i_BFu1c_BFs1c_BFs1s)
//============================================================================


struct  BFs1i_BFu1c_BFs1c_BFu1c  {
  signed int v1:1;
  unsigned char v2:1;
  signed char v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1i_BFu1c_BFs1c_BFu1c) C1{ Fi:1 Fc:1 Fc:1 Fc:1}



static void Test_BFs1i_BFu1c_BFs1c_BFu1c()
{
  {
    init_simple_test("BFs1i_BFu1c_BFs1c_BFu1c");
    static STRUCT_IF_C BFs1i_BFu1c_BFs1c_BFu1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1c_BFs1c_BFu1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1c_BFs1c_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1c_BFs1c_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1c_BFs1c_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1c_BFs1c_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1c_BFs1c_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1c_BFs1c_BFu1c, BFs1i_BFu1c_BFs1c_BFu1c)
//============================================================================


struct  BFs1i_BFu1c_BFs1c_BFu1i  {
  signed int v1:1;
  unsigned char v2:1;
  signed char v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1i_BFu1c_BFs1c_BFu1i) C1{ Fi:1 Fc:1 Fc:1 Fi:1}



static void Test_BFs1i_BFu1c_BFs1c_BFu1i()
{
  {
    init_simple_test("BFs1i_BFu1c_BFs1c_BFu1i");
    static STRUCT_IF_C BFs1i_BFu1c_BFs1c_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1c_BFs1c_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1c_BFs1c_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1c_BFs1c_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1c_BFs1c_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1c_BFs1c_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1c_BFs1c_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1c_BFs1c_BFu1i, BFs1i_BFu1c_BFs1c_BFu1i)
//============================================================================


struct  BFs1i_BFu1c_BFs1c_BFu1ll  {
  signed int v1:1;
  unsigned char v2:1;
  signed char v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1i_BFu1c_BFs1c_BFu1ll) C1{ Fi:1 Fc:1 Fc:1 FL:1}



static void Test_BFs1i_BFu1c_BFs1c_BFu1ll()
{
  {
    init_simple_test("BFs1i_BFu1c_BFs1c_BFu1ll");
    static STRUCT_IF_C BFs1i_BFu1c_BFs1c_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1c_BFs1c_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1c_BFs1c_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1c_BFs1c_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1c_BFs1c_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1c_BFs1c_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1c_BFs1c_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1c_BFs1c_BFu1ll, BFs1i_BFu1c_BFs1c_BFu1ll)
//============================================================================


struct  BFs1i_BFu1c_BFs1c_BFu1s  {
  signed int v1:1;
  unsigned char v2:1;
  signed char v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1i_BFu1c_BFs1c_BFu1s) C1{ Fi:1 Fc:1 Fc:1 Fs:1}



static void Test_BFs1i_BFu1c_BFs1c_BFu1s()
{
  {
    init_simple_test("BFs1i_BFu1c_BFs1c_BFu1s");
    static STRUCT_IF_C BFs1i_BFu1c_BFs1c_BFu1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1c_BFs1c_BFu1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1c_BFs1c_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1c_BFs1c_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1c_BFs1c_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1c_BFs1c_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1c_BFs1c_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1c_BFs1c_BFu1s, BFs1i_BFu1c_BFs1c_BFu1s)
//============================================================================


struct  BFs1i_BFu1c_BFs1i  {
  signed int v1:1;
  unsigned char v2:1;
  signed int v3:1;
};
//SIG(1 BFs1i_BFu1c_BFs1i) C1{ Fi:1 Fc:1 Fi:1}



static void Test_BFs1i_BFu1c_BFs1i()
{
  {
    init_simple_test("BFs1i_BFu1c_BFs1i");
    static STRUCT_IF_C BFs1i_BFu1c_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1c_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1c_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1c_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1c_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1c_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1c_BFs1i, BFs1i_BFu1c_BFs1i)
//============================================================================


struct  BFs1i_BFu1c_BFs1i_BFs1c  {
  signed int v1:1;
  unsigned char v2:1;
  signed int v3:1;
  signed char v4:1;
};
//SIG(1 BFs1i_BFu1c_BFs1i_BFs1c) C1{ Fi:1 Fc:1 Fi:1 Fc:1}



static void Test_BFs1i_BFu1c_BFs1i_BFs1c()
{
  {
    init_simple_test("BFs1i_BFu1c_BFs1i_BFs1c");
    static STRUCT_IF_C BFs1i_BFu1c_BFs1i_BFs1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1c_BFs1i_BFs1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1c_BFs1i_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1c_BFs1i_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1c_BFs1i_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1c_BFs1i_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1c_BFs1i_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1c_BFs1i_BFs1c, BFs1i_BFu1c_BFs1i_BFs1c)
//============================================================================


struct  BFs1i_BFu1c_BFs1i_BFs1i  {
  signed int v1:1;
  unsigned char v2:1;
  signed int v3:1;
  signed int v4:1;
};
//SIG(1 BFs1i_BFu1c_BFs1i_BFs1i) C1{ Fi:1 Fc:1 Fi:1 Fi:1}



static void Test_BFs1i_BFu1c_BFs1i_BFs1i()
{
  {
    init_simple_test("BFs1i_BFu1c_BFs1i_BFs1i");
    static STRUCT_IF_C BFs1i_BFu1c_BFs1i_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1c_BFs1i_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1c_BFs1i_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1c_BFs1i_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1c_BFs1i_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1c_BFs1i_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1c_BFs1i_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1c_BFs1i_BFs1i, BFs1i_BFu1c_BFs1i_BFs1i)
//============================================================================


struct  BFs1i_BFu1c_BFs1i_BFs1ll  {
  signed int v1:1;
  unsigned char v2:1;
  signed int v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1i_BFu1c_BFs1i_BFs1ll) C1{ Fi:1 Fc:1 Fi:1 FL:1}



static void Test_BFs1i_BFu1c_BFs1i_BFs1ll()
{
  {
    init_simple_test("BFs1i_BFu1c_BFs1i_BFs1ll");
    static STRUCT_IF_C BFs1i_BFu1c_BFs1i_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1c_BFs1i_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1c_BFs1i_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1c_BFs1i_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1c_BFs1i_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1c_BFs1i_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1c_BFs1i_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1c_BFs1i_BFs1ll, BFs1i_BFu1c_BFs1i_BFs1ll)
//============================================================================


struct  BFs1i_BFu1c_BFs1i_BFs1s  {
  signed int v1:1;
  unsigned char v2:1;
  signed int v3:1;
  signed short v4:1;
};
//SIG(1 BFs1i_BFu1c_BFs1i_BFs1s) C1{ Fi:1 Fc:1 Fi:1 Fs:1}



static void Test_BFs1i_BFu1c_BFs1i_BFs1s()
{
  {
    init_simple_test("BFs1i_BFu1c_BFs1i_BFs1s");
    static STRUCT_IF_C BFs1i_BFu1c_BFs1i_BFs1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1c_BFs1i_BFs1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1c_BFs1i_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1c_BFs1i_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1c_BFs1i_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1c_BFs1i_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1c_BFs1i_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1c_BFs1i_BFs1s, BFs1i_BFu1c_BFs1i_BFs1s)
//============================================================================


struct  BFs1i_BFu1c_BFs1i_BFu1c  {
  signed int v1:1;
  unsigned char v2:1;
  signed int v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1i_BFu1c_BFs1i_BFu1c) C1{ Fi:1 Fc:1 Fi:1 Fc:1}



static void Test_BFs1i_BFu1c_BFs1i_BFu1c()
{
  {
    init_simple_test("BFs1i_BFu1c_BFs1i_BFu1c");
    static STRUCT_IF_C BFs1i_BFu1c_BFs1i_BFu1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1c_BFs1i_BFu1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1c_BFs1i_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1c_BFs1i_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1c_BFs1i_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1c_BFs1i_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1c_BFs1i_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1c_BFs1i_BFu1c, BFs1i_BFu1c_BFs1i_BFu1c)
//============================================================================


struct  BFs1i_BFu1c_BFs1i_BFu1i  {
  signed int v1:1;
  unsigned char v2:1;
  signed int v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1i_BFu1c_BFs1i_BFu1i) C1{ Fi:1 Fc:1 Fi:1 Fi:1}



static void Test_BFs1i_BFu1c_BFs1i_BFu1i()
{
  {
    init_simple_test("BFs1i_BFu1c_BFs1i_BFu1i");
    static STRUCT_IF_C BFs1i_BFu1c_BFs1i_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1c_BFs1i_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1c_BFs1i_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1c_BFs1i_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1c_BFs1i_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1c_BFs1i_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1c_BFs1i_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1c_BFs1i_BFu1i, BFs1i_BFu1c_BFs1i_BFu1i)
//============================================================================


struct  BFs1i_BFu1c_BFs1i_BFu1ll  {
  signed int v1:1;
  unsigned char v2:1;
  signed int v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1i_BFu1c_BFs1i_BFu1ll) C1{ Fi:1 Fc:1 Fi:1 FL:1}



static void Test_BFs1i_BFu1c_BFs1i_BFu1ll()
{
  {
    init_simple_test("BFs1i_BFu1c_BFs1i_BFu1ll");
    static STRUCT_IF_C BFs1i_BFu1c_BFs1i_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1c_BFs1i_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1c_BFs1i_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1c_BFs1i_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1c_BFs1i_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1c_BFs1i_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1c_BFs1i_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1c_BFs1i_BFu1ll, BFs1i_BFu1c_BFs1i_BFu1ll)
//============================================================================


struct  BFs1i_BFu1c_BFs1i_BFu1s  {
  signed int v1:1;
  unsigned char v2:1;
  signed int v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1i_BFu1c_BFs1i_BFu1s) C1{ Fi:1 Fc:1 Fi:1 Fs:1}



static void Test_BFs1i_BFu1c_BFs1i_BFu1s()
{
  {
    init_simple_test("BFs1i_BFu1c_BFs1i_BFu1s");
    static STRUCT_IF_C BFs1i_BFu1c_BFs1i_BFu1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1c_BFs1i_BFu1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1c_BFs1i_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1c_BFs1i_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1c_BFs1i_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1c_BFs1i_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1c_BFs1i_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1c_BFs1i_BFu1s, BFs1i_BFu1c_BFs1i_BFu1s)
//============================================================================


struct  BFs1i_BFu1c_BFs1ll  {
  signed int v1:1;
  unsigned char v2:1;
  signed __tsi64 v3:1;
};
//SIG(1 BFs1i_BFu1c_BFs1ll) C1{ Fi:1 Fc:1 FL:1}



static void Test_BFs1i_BFu1c_BFs1ll()
{
  {
    init_simple_test("BFs1i_BFu1c_BFs1ll");
    static STRUCT_IF_C BFs1i_BFu1c_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1c_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1c_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1c_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1c_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1c_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1c_BFs1ll, BFs1i_BFu1c_BFs1ll)
//============================================================================


struct  BFs1i_BFu1c_BFs1ll_BFs1c  {
  signed int v1:1;
  unsigned char v2:1;
  signed __tsi64 v3:1;
  signed char v4:1;
};
//SIG(1 BFs1i_BFu1c_BFs1ll_BFs1c) C1{ Fi:1 Fc:1 FL:1 Fc:1}



static void Test_BFs1i_BFu1c_BFs1ll_BFs1c()
{
  {
    init_simple_test("BFs1i_BFu1c_BFs1ll_BFs1c");
    static STRUCT_IF_C BFs1i_BFu1c_BFs1ll_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1c_BFs1ll_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1c_BFs1ll_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1c_BFs1ll_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1c_BFs1ll_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1c_BFs1ll_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1c_BFs1ll_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1c_BFs1ll_BFs1c, BFs1i_BFu1c_BFs1ll_BFs1c)
//============================================================================


struct  BFs1i_BFu1c_BFs1ll_BFs1i  {
  signed int v1:1;
  unsigned char v2:1;
  signed __tsi64 v3:1;
  signed int v4:1;
};
//SIG(1 BFs1i_BFu1c_BFs1ll_BFs1i) C1{ Fi:1 Fc:1 FL:1 Fi:1}



static void Test_BFs1i_BFu1c_BFs1ll_BFs1i()
{
  {
    init_simple_test("BFs1i_BFu1c_BFs1ll_BFs1i");
    static STRUCT_IF_C BFs1i_BFu1c_BFs1ll_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1c_BFs1ll_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1c_BFs1ll_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1c_BFs1ll_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1c_BFs1ll_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1c_BFs1ll_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1c_BFs1ll_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1c_BFs1ll_BFs1i, BFs1i_BFu1c_BFs1ll_BFs1i)
//============================================================================


struct  BFs1i_BFu1c_BFs1ll_BFs1ll  {
  signed int v1:1;
  unsigned char v2:1;
  signed __tsi64 v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1i_BFu1c_BFs1ll_BFs1ll) C1{ Fi:1 Fc:1 FL:1 FL:1}



static void Test_BFs1i_BFu1c_BFs1ll_BFs1ll()
{
  {
    init_simple_test("BFs1i_BFu1c_BFs1ll_BFs1ll");
    static STRUCT_IF_C BFs1i_BFu1c_BFs1ll_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1c_BFs1ll_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1c_BFs1ll_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1c_BFs1ll_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1c_BFs1ll_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1c_BFs1ll_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1c_BFs1ll_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1c_BFs1ll_BFs1ll, BFs1i_BFu1c_BFs1ll_BFs1ll)
//============================================================================


struct  BFs1i_BFu1c_BFs1ll_BFs1s  {
  signed int v1:1;
  unsigned char v2:1;
  signed __tsi64 v3:1;
  signed short v4:1;
};
//SIG(1 BFs1i_BFu1c_BFs1ll_BFs1s) C1{ Fi:1 Fc:1 FL:1 Fs:1}



static void Test_BFs1i_BFu1c_BFs1ll_BFs1s()
{
  {
    init_simple_test("BFs1i_BFu1c_BFs1ll_BFs1s");
    static STRUCT_IF_C BFs1i_BFu1c_BFs1ll_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1c_BFs1ll_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1c_BFs1ll_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1c_BFs1ll_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1c_BFs1ll_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1c_BFs1ll_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1c_BFs1ll_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1c_BFs1ll_BFs1s, BFs1i_BFu1c_BFs1ll_BFs1s)
//============================================================================


struct  BFs1i_BFu1c_BFs1ll_BFu1c  {
  signed int v1:1;
  unsigned char v2:1;
  signed __tsi64 v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1i_BFu1c_BFs1ll_BFu1c) C1{ Fi:1 Fc:1 FL:1 Fc:1}



static void Test_BFs1i_BFu1c_BFs1ll_BFu1c()
{
  {
    init_simple_test("BFs1i_BFu1c_BFs1ll_BFu1c");
    static STRUCT_IF_C BFs1i_BFu1c_BFs1ll_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1c_BFs1ll_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1c_BFs1ll_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1c_BFs1ll_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1c_BFs1ll_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1c_BFs1ll_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1c_BFs1ll_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1c_BFs1ll_BFu1c, BFs1i_BFu1c_BFs1ll_BFu1c)
//============================================================================


struct  BFs1i_BFu1c_BFs1ll_BFu1i  {
  signed int v1:1;
  unsigned char v2:1;
  signed __tsi64 v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1i_BFu1c_BFs1ll_BFu1i) C1{ Fi:1 Fc:1 FL:1 Fi:1}



static void Test_BFs1i_BFu1c_BFs1ll_BFu1i()
{
  {
    init_simple_test("BFs1i_BFu1c_BFs1ll_BFu1i");
    static STRUCT_IF_C BFs1i_BFu1c_BFs1ll_BFu1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1c_BFs1ll_BFu1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1c_BFs1ll_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1c_BFs1ll_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1c_BFs1ll_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1c_BFs1ll_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1c_BFs1ll_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1c_BFs1ll_BFu1i, BFs1i_BFu1c_BFs1ll_BFu1i)
//============================================================================


struct  BFs1i_BFu1c_BFs1ll_BFu1ll  {
  signed int v1:1;
  unsigned char v2:1;
  signed __tsi64 v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1i_BFu1c_BFs1ll_BFu1ll) C1{ Fi:1 Fc:1 FL:1 FL:1}



static void Test_BFs1i_BFu1c_BFs1ll_BFu1ll()
{
  {
    init_simple_test("BFs1i_BFu1c_BFs1ll_BFu1ll");
    static STRUCT_IF_C BFs1i_BFu1c_BFs1ll_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1c_BFs1ll_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1c_BFs1ll_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1c_BFs1ll_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1c_BFs1ll_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1c_BFs1ll_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1c_BFs1ll_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1c_BFs1ll_BFu1ll, BFs1i_BFu1c_BFs1ll_BFu1ll)
//============================================================================


struct  BFs1i_BFu1c_BFs1ll_BFu1s  {
  signed int v1:1;
  unsigned char v2:1;
  signed __tsi64 v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1i_BFu1c_BFs1ll_BFu1s) C1{ Fi:1 Fc:1 FL:1 Fs:1}



static void Test_BFs1i_BFu1c_BFs1ll_BFu1s()
{
  {
    init_simple_test("BFs1i_BFu1c_BFs1ll_BFu1s");
    static STRUCT_IF_C BFs1i_BFu1c_BFs1ll_BFu1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1c_BFs1ll_BFu1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1c_BFs1ll_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1c_BFs1ll_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1c_BFs1ll_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1c_BFs1ll_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1c_BFs1ll_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1c_BFs1ll_BFu1s, BFs1i_BFu1c_BFs1ll_BFu1s)
//============================================================================


struct  BFs1i_BFu1c_BFs1s  {
  signed int v1:1;
  unsigned char v2:1;
  signed short v3:1;
};
//SIG(1 BFs1i_BFu1c_BFs1s) C1{ Fi:1 Fc:1 Fs:1}



static void Test_BFs1i_BFu1c_BFs1s()
{
  {
    init_simple_test("BFs1i_BFu1c_BFs1s");
    static STRUCT_IF_C BFs1i_BFu1c_BFs1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1c_BFs1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1c_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1c_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1c_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1c_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1c_BFs1s, BFs1i_BFu1c_BFs1s)
//============================================================================


struct  BFs1i_BFu1c_BFs1s_BFs1c  {
  signed int v1:1;
  unsigned char v2:1;
  signed short v3:1;
  signed char v4:1;
};
//SIG(1 BFs1i_BFu1c_BFs1s_BFs1c) C1{ Fi:1 Fc:1 Fs:1 Fc:1}



static void Test_BFs1i_BFu1c_BFs1s_BFs1c()
{
  {
    init_simple_test("BFs1i_BFu1c_BFs1s_BFs1c");
    static STRUCT_IF_C BFs1i_BFu1c_BFs1s_BFs1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1c_BFs1s_BFs1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1c_BFs1s_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1c_BFs1s_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1c_BFs1s_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1c_BFs1s_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1c_BFs1s_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1c_BFs1s_BFs1c, BFs1i_BFu1c_BFs1s_BFs1c)
//============================================================================


struct  BFs1i_BFu1c_BFs1s_BFs1i  {
  signed int v1:1;
  unsigned char v2:1;
  signed short v3:1;
  signed int v4:1;
};
//SIG(1 BFs1i_BFu1c_BFs1s_BFs1i) C1{ Fi:1 Fc:1 Fs:1 Fi:1}



static void Test_BFs1i_BFu1c_BFs1s_BFs1i()
{
  {
    init_simple_test("BFs1i_BFu1c_BFs1s_BFs1i");
    static STRUCT_IF_C BFs1i_BFu1c_BFs1s_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1c_BFs1s_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1c_BFs1s_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1c_BFs1s_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1c_BFs1s_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1c_BFs1s_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1c_BFs1s_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1c_BFs1s_BFs1i, BFs1i_BFu1c_BFs1s_BFs1i)
//============================================================================


struct  BFs1i_BFu1c_BFs1s_BFs1ll  {
  signed int v1:1;
  unsigned char v2:1;
  signed short v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1i_BFu1c_BFs1s_BFs1ll) C1{ Fi:1 Fc:1 Fs:1 FL:1}



static void Test_BFs1i_BFu1c_BFs1s_BFs1ll()
{
  {
    init_simple_test("BFs1i_BFu1c_BFs1s_BFs1ll");
    static STRUCT_IF_C BFs1i_BFu1c_BFs1s_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1c_BFs1s_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1c_BFs1s_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1c_BFs1s_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1c_BFs1s_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1c_BFs1s_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1c_BFs1s_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1c_BFs1s_BFs1ll, BFs1i_BFu1c_BFs1s_BFs1ll)
//============================================================================


struct  BFs1i_BFu1c_BFs1s_BFs1s  {
  signed int v1:1;
  unsigned char v2:1;
  signed short v3:1;
  signed short v4:1;
};
//SIG(1 BFs1i_BFu1c_BFs1s_BFs1s) C1{ Fi:1 Fc:1 Fs:1 Fs:1}



static void Test_BFs1i_BFu1c_BFs1s_BFs1s()
{
  {
    init_simple_test("BFs1i_BFu1c_BFs1s_BFs1s");
    static STRUCT_IF_C BFs1i_BFu1c_BFs1s_BFs1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1c_BFs1s_BFs1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1c_BFs1s_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1c_BFs1s_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1c_BFs1s_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1c_BFs1s_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1c_BFs1s_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1c_BFs1s_BFs1s, BFs1i_BFu1c_BFs1s_BFs1s)
//============================================================================


struct  BFs1i_BFu1c_BFs1s_BFu1c  {
  signed int v1:1;
  unsigned char v2:1;
  signed short v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1i_BFu1c_BFs1s_BFu1c) C1{ Fi:1 Fc:1 Fs:1 Fc:1}



static void Test_BFs1i_BFu1c_BFs1s_BFu1c()
{
  {
    init_simple_test("BFs1i_BFu1c_BFs1s_BFu1c");
    static STRUCT_IF_C BFs1i_BFu1c_BFs1s_BFu1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1c_BFs1s_BFu1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1c_BFs1s_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1c_BFs1s_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1c_BFs1s_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1c_BFs1s_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1c_BFs1s_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1c_BFs1s_BFu1c, BFs1i_BFu1c_BFs1s_BFu1c)
//============================================================================


struct  BFs1i_BFu1c_BFs1s_BFu1i  {
  signed int v1:1;
  unsigned char v2:1;
  signed short v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1i_BFu1c_BFs1s_BFu1i) C1{ Fi:1 Fc:1 Fs:1 Fi:1}



static void Test_BFs1i_BFu1c_BFs1s_BFu1i()
{
  {
    init_simple_test("BFs1i_BFu1c_BFs1s_BFu1i");
    static STRUCT_IF_C BFs1i_BFu1c_BFs1s_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1c_BFs1s_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1c_BFs1s_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1c_BFs1s_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1c_BFs1s_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1c_BFs1s_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1c_BFs1s_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1c_BFs1s_BFu1i, BFs1i_BFu1c_BFs1s_BFu1i)
//============================================================================


struct  BFs1i_BFu1c_BFs1s_BFu1ll  {
  signed int v1:1;
  unsigned char v2:1;
  signed short v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1i_BFu1c_BFs1s_BFu1ll) C1{ Fi:1 Fc:1 Fs:1 FL:1}



static void Test_BFs1i_BFu1c_BFs1s_BFu1ll()
{
  {
    init_simple_test("BFs1i_BFu1c_BFs1s_BFu1ll");
    static STRUCT_IF_C BFs1i_BFu1c_BFs1s_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1c_BFs1s_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1c_BFs1s_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1c_BFs1s_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1c_BFs1s_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1c_BFs1s_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1c_BFs1s_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1c_BFs1s_BFu1ll, BFs1i_BFu1c_BFs1s_BFu1ll)
//============================================================================


struct  BFs1i_BFu1c_BFs1s_BFu1s  {
  signed int v1:1;
  unsigned char v2:1;
  signed short v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1i_BFu1c_BFs1s_BFu1s) C1{ Fi:1 Fc:1 Fs:1 Fs:1}



static void Test_BFs1i_BFu1c_BFs1s_BFu1s()
{
  {
    init_simple_test("BFs1i_BFu1c_BFs1s_BFu1s");
    static STRUCT_IF_C BFs1i_BFu1c_BFs1s_BFu1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1c_BFs1s_BFu1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1c_BFs1s_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1c_BFs1s_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1c_BFs1s_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1c_BFs1s_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1c_BFs1s_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1c_BFs1s_BFu1s, BFs1i_BFu1c_BFs1s_BFu1s)
//============================================================================


struct  BFs1i_BFu1c_BFu1c  {
  signed int v1:1;
  unsigned char v2:1;
  unsigned char v3:1;
};
//SIG(1 BFs1i_BFu1c_BFu1c) C1{ Fi:1 Fc:1 Fc:1}



static void Test_BFs1i_BFu1c_BFu1c()
{
  {
    init_simple_test("BFs1i_BFu1c_BFu1c");
    static STRUCT_IF_C BFs1i_BFu1c_BFu1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1c_BFu1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1c_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1c_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1c_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1c_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1c_BFu1c, BFs1i_BFu1c_BFu1c)
//============================================================================


struct  BFs1i_BFu1c_BFu1c_BFs1c  {
  signed int v1:1;
  unsigned char v2:1;
  unsigned char v3:1;
  signed char v4:1;
};
//SIG(1 BFs1i_BFu1c_BFu1c_BFs1c) C1{ Fi:1 Fc:1 Fc:1 Fc:1}



static void Test_BFs1i_BFu1c_BFu1c_BFs1c()
{
  {
    init_simple_test("BFs1i_BFu1c_BFu1c_BFs1c");
    static STRUCT_IF_C BFs1i_BFu1c_BFu1c_BFs1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1c_BFu1c_BFs1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1c_BFu1c_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1c_BFu1c_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1c_BFu1c_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1c_BFu1c_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1c_BFu1c_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1c_BFu1c_BFs1c, BFs1i_BFu1c_BFu1c_BFs1c)
//============================================================================


struct  BFs1i_BFu1c_BFu1c_BFs1i  {
  signed int v1:1;
  unsigned char v2:1;
  unsigned char v3:1;
  signed int v4:1;
};
//SIG(1 BFs1i_BFu1c_BFu1c_BFs1i) C1{ Fi:1 Fc:1 Fc:1 Fi:1}



static void Test_BFs1i_BFu1c_BFu1c_BFs1i()
{
  {
    init_simple_test("BFs1i_BFu1c_BFu1c_BFs1i");
    static STRUCT_IF_C BFs1i_BFu1c_BFu1c_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1c_BFu1c_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1c_BFu1c_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1c_BFu1c_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1c_BFu1c_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1c_BFu1c_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1c_BFu1c_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1c_BFu1c_BFs1i, BFs1i_BFu1c_BFu1c_BFs1i)
//============================================================================


struct  BFs1i_BFu1c_BFu1c_BFs1ll  {
  signed int v1:1;
  unsigned char v2:1;
  unsigned char v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1i_BFu1c_BFu1c_BFs1ll) C1{ Fi:1 Fc:1 Fc:1 FL:1}



static void Test_BFs1i_BFu1c_BFu1c_BFs1ll()
{
  {
    init_simple_test("BFs1i_BFu1c_BFu1c_BFs1ll");
    static STRUCT_IF_C BFs1i_BFu1c_BFu1c_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1c_BFu1c_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1c_BFu1c_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1c_BFu1c_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1c_BFu1c_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1c_BFu1c_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1c_BFu1c_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1c_BFu1c_BFs1ll, BFs1i_BFu1c_BFu1c_BFs1ll)
//============================================================================


struct  BFs1i_BFu1c_BFu1c_BFs1s  {
  signed int v1:1;
  unsigned char v2:1;
  unsigned char v3:1;
  signed short v4:1;
};
//SIG(1 BFs1i_BFu1c_BFu1c_BFs1s) C1{ Fi:1 Fc:1 Fc:1 Fs:1}



static void Test_BFs1i_BFu1c_BFu1c_BFs1s()
{
  {
    init_simple_test("BFs1i_BFu1c_BFu1c_BFs1s");
    static STRUCT_IF_C BFs1i_BFu1c_BFu1c_BFs1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1c_BFu1c_BFs1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1c_BFu1c_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1c_BFu1c_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1c_BFu1c_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1c_BFu1c_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1c_BFu1c_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1c_BFu1c_BFs1s, BFs1i_BFu1c_BFu1c_BFs1s)
//============================================================================


struct  BFs1i_BFu1c_BFu1c_BFu1c  {
  signed int v1:1;
  unsigned char v2:1;
  unsigned char v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1i_BFu1c_BFu1c_BFu1c) C1{ Fi:1 Fc:1 Fc:1 Fc:1}



static void Test_BFs1i_BFu1c_BFu1c_BFu1c()
{
  {
    init_simple_test("BFs1i_BFu1c_BFu1c_BFu1c");
    static STRUCT_IF_C BFs1i_BFu1c_BFu1c_BFu1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1c_BFu1c_BFu1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1c_BFu1c_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1c_BFu1c_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1c_BFu1c_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1c_BFu1c_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1c_BFu1c_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1c_BFu1c_BFu1c, BFs1i_BFu1c_BFu1c_BFu1c)
//============================================================================


struct  BFs1i_BFu1c_BFu1c_BFu1i  {
  signed int v1:1;
  unsigned char v2:1;
  unsigned char v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1i_BFu1c_BFu1c_BFu1i) C1{ Fi:1 Fc:1 Fc:1 Fi:1}



static void Test_BFs1i_BFu1c_BFu1c_BFu1i()
{
  {
    init_simple_test("BFs1i_BFu1c_BFu1c_BFu1i");
    static STRUCT_IF_C BFs1i_BFu1c_BFu1c_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1c_BFu1c_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1c_BFu1c_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1c_BFu1c_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1c_BFu1c_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1c_BFu1c_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1c_BFu1c_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1c_BFu1c_BFu1i, BFs1i_BFu1c_BFu1c_BFu1i)
//============================================================================


struct  BFs1i_BFu1c_BFu1c_BFu1ll  {
  signed int v1:1;
  unsigned char v2:1;
  unsigned char v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1i_BFu1c_BFu1c_BFu1ll) C1{ Fi:1 Fc:1 Fc:1 FL:1}



static void Test_BFs1i_BFu1c_BFu1c_BFu1ll()
{
  {
    init_simple_test("BFs1i_BFu1c_BFu1c_BFu1ll");
    static STRUCT_IF_C BFs1i_BFu1c_BFu1c_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1c_BFu1c_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1c_BFu1c_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1c_BFu1c_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1c_BFu1c_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1c_BFu1c_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1c_BFu1c_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1c_BFu1c_BFu1ll, BFs1i_BFu1c_BFu1c_BFu1ll)
//============================================================================


struct  BFs1i_BFu1c_BFu1c_BFu1s  {
  signed int v1:1;
  unsigned char v2:1;
  unsigned char v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1i_BFu1c_BFu1c_BFu1s) C1{ Fi:1 Fc:1 Fc:1 Fs:1}



static void Test_BFs1i_BFu1c_BFu1c_BFu1s()
{
  {
    init_simple_test("BFs1i_BFu1c_BFu1c_BFu1s");
    static STRUCT_IF_C BFs1i_BFu1c_BFu1c_BFu1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1c_BFu1c_BFu1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1c_BFu1c_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1c_BFu1c_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1c_BFu1c_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1c_BFu1c_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1c_BFu1c_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1c_BFu1c_BFu1s, BFs1i_BFu1c_BFu1c_BFu1s)
//============================================================================


struct  BFs1i_BFu1c_BFu1i  {
  signed int v1:1;
  unsigned char v2:1;
  unsigned int v3:1;
};
//SIG(1 BFs1i_BFu1c_BFu1i) C1{ Fi:1 Fc:1 Fi:1}



static void Test_BFs1i_BFu1c_BFu1i()
{
  {
    init_simple_test("BFs1i_BFu1c_BFu1i");
    static STRUCT_IF_C BFs1i_BFu1c_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1c_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1c_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1c_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1c_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1c_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1c_BFu1i, BFs1i_BFu1c_BFu1i)
//============================================================================


struct  BFs1i_BFu1c_BFu1i_BFs1c  {
  signed int v1:1;
  unsigned char v2:1;
  unsigned int v3:1;
  signed char v4:1;
};
//SIG(1 BFs1i_BFu1c_BFu1i_BFs1c) C1{ Fi:1 Fc:1 Fi:1 Fc:1}



static void Test_BFs1i_BFu1c_BFu1i_BFs1c()
{
  {
    init_simple_test("BFs1i_BFu1c_BFu1i_BFs1c");
    static STRUCT_IF_C BFs1i_BFu1c_BFu1i_BFs1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1c_BFu1i_BFs1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1c_BFu1i_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1c_BFu1i_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1c_BFu1i_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1c_BFu1i_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1c_BFu1i_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1c_BFu1i_BFs1c, BFs1i_BFu1c_BFu1i_BFs1c)
//============================================================================


struct  BFs1i_BFu1c_BFu1i_BFs1i  {
  signed int v1:1;
  unsigned char v2:1;
  unsigned int v3:1;
  signed int v4:1;
};
//SIG(1 BFs1i_BFu1c_BFu1i_BFs1i) C1{ Fi:1 Fc:1 Fi:1 Fi:1}



static void Test_BFs1i_BFu1c_BFu1i_BFs1i()
{
  {
    init_simple_test("BFs1i_BFu1c_BFu1i_BFs1i");
    static STRUCT_IF_C BFs1i_BFu1c_BFu1i_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1c_BFu1i_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1c_BFu1i_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1c_BFu1i_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1c_BFu1i_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1c_BFu1i_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1c_BFu1i_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1c_BFu1i_BFs1i, BFs1i_BFu1c_BFu1i_BFs1i)
//============================================================================


struct  BFs1i_BFu1c_BFu1i_BFs1ll  {
  signed int v1:1;
  unsigned char v2:1;
  unsigned int v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1i_BFu1c_BFu1i_BFs1ll) C1{ Fi:1 Fc:1 Fi:1 FL:1}



static void Test_BFs1i_BFu1c_BFu1i_BFs1ll()
{
  {
    init_simple_test("BFs1i_BFu1c_BFu1i_BFs1ll");
    static STRUCT_IF_C BFs1i_BFu1c_BFu1i_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1c_BFu1i_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1c_BFu1i_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1c_BFu1i_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1c_BFu1i_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1c_BFu1i_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1c_BFu1i_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1c_BFu1i_BFs1ll, BFs1i_BFu1c_BFu1i_BFs1ll)
//============================================================================


struct  BFs1i_BFu1c_BFu1i_BFs1s  {
  signed int v1:1;
  unsigned char v2:1;
  unsigned int v3:1;
  signed short v4:1;
};
//SIG(1 BFs1i_BFu1c_BFu1i_BFs1s) C1{ Fi:1 Fc:1 Fi:1 Fs:1}



static void Test_BFs1i_BFu1c_BFu1i_BFs1s()
{
  {
    init_simple_test("BFs1i_BFu1c_BFu1i_BFs1s");
    static STRUCT_IF_C BFs1i_BFu1c_BFu1i_BFs1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1c_BFu1i_BFs1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1c_BFu1i_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1c_BFu1i_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1c_BFu1i_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1c_BFu1i_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1c_BFu1i_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1c_BFu1i_BFs1s, BFs1i_BFu1c_BFu1i_BFs1s)
//============================================================================


struct  BFs1i_BFu1c_BFu1i_BFu1c  {
  signed int v1:1;
  unsigned char v2:1;
  unsigned int v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1i_BFu1c_BFu1i_BFu1c) C1{ Fi:1 Fc:1 Fi:1 Fc:1}



static void Test_BFs1i_BFu1c_BFu1i_BFu1c()
{
  {
    init_simple_test("BFs1i_BFu1c_BFu1i_BFu1c");
    static STRUCT_IF_C BFs1i_BFu1c_BFu1i_BFu1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1c_BFu1i_BFu1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1c_BFu1i_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1c_BFu1i_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1c_BFu1i_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1c_BFu1i_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1c_BFu1i_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1c_BFu1i_BFu1c, BFs1i_BFu1c_BFu1i_BFu1c)
//============================================================================


struct  BFs1i_BFu1c_BFu1i_BFu1i  {
  signed int v1:1;
  unsigned char v2:1;
  unsigned int v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1i_BFu1c_BFu1i_BFu1i) C1{ Fi:1 Fc:1 Fi:1 Fi:1}



static void Test_BFs1i_BFu1c_BFu1i_BFu1i()
{
  {
    init_simple_test("BFs1i_BFu1c_BFu1i_BFu1i");
    static STRUCT_IF_C BFs1i_BFu1c_BFu1i_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1c_BFu1i_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1c_BFu1i_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1c_BFu1i_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1c_BFu1i_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1c_BFu1i_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1c_BFu1i_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1c_BFu1i_BFu1i, BFs1i_BFu1c_BFu1i_BFu1i)
//============================================================================


struct  BFs1i_BFu1c_BFu1i_BFu1ll  {
  signed int v1:1;
  unsigned char v2:1;
  unsigned int v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1i_BFu1c_BFu1i_BFu1ll) C1{ Fi:1 Fc:1 Fi:1 FL:1}



static void Test_BFs1i_BFu1c_BFu1i_BFu1ll()
{
  {
    init_simple_test("BFs1i_BFu1c_BFu1i_BFu1ll");
    static STRUCT_IF_C BFs1i_BFu1c_BFu1i_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1c_BFu1i_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1c_BFu1i_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1c_BFu1i_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1c_BFu1i_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1c_BFu1i_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1c_BFu1i_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1c_BFu1i_BFu1ll, BFs1i_BFu1c_BFu1i_BFu1ll)
//============================================================================


struct  BFs1i_BFu1c_BFu1i_BFu1s  {
  signed int v1:1;
  unsigned char v2:1;
  unsigned int v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1i_BFu1c_BFu1i_BFu1s) C1{ Fi:1 Fc:1 Fi:1 Fs:1}



static void Test_BFs1i_BFu1c_BFu1i_BFu1s()
{
  {
    init_simple_test("BFs1i_BFu1c_BFu1i_BFu1s");
    static STRUCT_IF_C BFs1i_BFu1c_BFu1i_BFu1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1c_BFu1i_BFu1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1c_BFu1i_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1c_BFu1i_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1c_BFu1i_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1c_BFu1i_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1c_BFu1i_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1c_BFu1i_BFu1s, BFs1i_BFu1c_BFu1i_BFu1s)
//============================================================================


struct  BFs1i_BFu1c_BFu1ll  {
  signed int v1:1;
  unsigned char v2:1;
  __tsu64 v3:1;
};
//SIG(1 BFs1i_BFu1c_BFu1ll) C1{ Fi:1 Fc:1 FL:1}



static void Test_BFs1i_BFu1c_BFu1ll()
{
  {
    init_simple_test("BFs1i_BFu1c_BFu1ll");
    static STRUCT_IF_C BFs1i_BFu1c_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1c_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1c_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1c_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1c_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1c_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1c_BFu1ll, BFs1i_BFu1c_BFu1ll)
//============================================================================


struct  BFs1i_BFu1c_BFu1ll_BFs1c  {
  signed int v1:1;
  unsigned char v2:1;
  __tsu64 v3:1;
  signed char v4:1;
};
//SIG(1 BFs1i_BFu1c_BFu1ll_BFs1c) C1{ Fi:1 Fc:1 FL:1 Fc:1}



static void Test_BFs1i_BFu1c_BFu1ll_BFs1c()
{
  {
    init_simple_test("BFs1i_BFu1c_BFu1ll_BFs1c");
    static STRUCT_IF_C BFs1i_BFu1c_BFu1ll_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1c_BFu1ll_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1c_BFu1ll_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1c_BFu1ll_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1c_BFu1ll_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1c_BFu1ll_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1c_BFu1ll_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1c_BFu1ll_BFs1c, BFs1i_BFu1c_BFu1ll_BFs1c)
//============================================================================


struct  BFs1i_BFu1c_BFu1ll_BFs1i  {
  signed int v1:1;
  unsigned char v2:1;
  __tsu64 v3:1;
  signed int v4:1;
};
//SIG(1 BFs1i_BFu1c_BFu1ll_BFs1i) C1{ Fi:1 Fc:1 FL:1 Fi:1}



static void Test_BFs1i_BFu1c_BFu1ll_BFs1i()
{
  {
    init_simple_test("BFs1i_BFu1c_BFu1ll_BFs1i");
    static STRUCT_IF_C BFs1i_BFu1c_BFu1ll_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1c_BFu1ll_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1c_BFu1ll_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1c_BFu1ll_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1c_BFu1ll_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1c_BFu1ll_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1c_BFu1ll_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1c_BFu1ll_BFs1i, BFs1i_BFu1c_BFu1ll_BFs1i)
//============================================================================


struct  BFs1i_BFu1c_BFu1ll_BFs1ll  {
  signed int v1:1;
  unsigned char v2:1;
  __tsu64 v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1i_BFu1c_BFu1ll_BFs1ll) C1{ Fi:1 Fc:1 FL:1 FL:1}



static void Test_BFs1i_BFu1c_BFu1ll_BFs1ll()
{
  {
    init_simple_test("BFs1i_BFu1c_BFu1ll_BFs1ll");
    static STRUCT_IF_C BFs1i_BFu1c_BFu1ll_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1c_BFu1ll_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1c_BFu1ll_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1c_BFu1ll_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1c_BFu1ll_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1c_BFu1ll_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1c_BFu1ll_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1c_BFu1ll_BFs1ll, BFs1i_BFu1c_BFu1ll_BFs1ll)
//============================================================================


struct  BFs1i_BFu1c_BFu1ll_BFs1s  {
  signed int v1:1;
  unsigned char v2:1;
  __tsu64 v3:1;
  signed short v4:1;
};
//SIG(1 BFs1i_BFu1c_BFu1ll_BFs1s) C1{ Fi:1 Fc:1 FL:1 Fs:1}



static void Test_BFs1i_BFu1c_BFu1ll_BFs1s()
{
  {
    init_simple_test("BFs1i_BFu1c_BFu1ll_BFs1s");
    static STRUCT_IF_C BFs1i_BFu1c_BFu1ll_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1c_BFu1ll_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1c_BFu1ll_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1c_BFu1ll_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1c_BFu1ll_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1c_BFu1ll_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1c_BFu1ll_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1c_BFu1ll_BFs1s, BFs1i_BFu1c_BFu1ll_BFs1s)
//============================================================================


struct  BFs1i_BFu1c_BFu1ll_BFu1c  {
  signed int v1:1;
  unsigned char v2:1;
  __tsu64 v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1i_BFu1c_BFu1ll_BFu1c) C1{ Fi:1 Fc:1 FL:1 Fc:1}



static void Test_BFs1i_BFu1c_BFu1ll_BFu1c()
{
  {
    init_simple_test("BFs1i_BFu1c_BFu1ll_BFu1c");
    static STRUCT_IF_C BFs1i_BFu1c_BFu1ll_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1c_BFu1ll_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1c_BFu1ll_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1c_BFu1ll_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1c_BFu1ll_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1c_BFu1ll_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1c_BFu1ll_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1c_BFu1ll_BFu1c, BFs1i_BFu1c_BFu1ll_BFu1c)
//============================================================================


struct  BFs1i_BFu1c_BFu1ll_BFu1i  {
  signed int v1:1;
  unsigned char v2:1;
  __tsu64 v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1i_BFu1c_BFu1ll_BFu1i) C1{ Fi:1 Fc:1 FL:1 Fi:1}



static void Test_BFs1i_BFu1c_BFu1ll_BFu1i()
{
  {
    init_simple_test("BFs1i_BFu1c_BFu1ll_BFu1i");
    static STRUCT_IF_C BFs1i_BFu1c_BFu1ll_BFu1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1c_BFu1ll_BFu1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1c_BFu1ll_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1c_BFu1ll_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1c_BFu1ll_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1c_BFu1ll_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1c_BFu1ll_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1c_BFu1ll_BFu1i, BFs1i_BFu1c_BFu1ll_BFu1i)
//============================================================================


struct  BFs1i_BFu1c_BFu1ll_BFu1ll  {
  signed int v1:1;
  unsigned char v2:1;
  __tsu64 v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1i_BFu1c_BFu1ll_BFu1ll) C1{ Fi:1 Fc:1 FL:1 FL:1}



static void Test_BFs1i_BFu1c_BFu1ll_BFu1ll()
{
  {
    init_simple_test("BFs1i_BFu1c_BFu1ll_BFu1ll");
    static STRUCT_IF_C BFs1i_BFu1c_BFu1ll_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1c_BFu1ll_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1c_BFu1ll_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1c_BFu1ll_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1c_BFu1ll_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1c_BFu1ll_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1c_BFu1ll_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1c_BFu1ll_BFu1ll, BFs1i_BFu1c_BFu1ll_BFu1ll)
//============================================================================


struct  BFs1i_BFu1c_BFu1ll_BFu1s  {
  signed int v1:1;
  unsigned char v2:1;
  __tsu64 v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1i_BFu1c_BFu1ll_BFu1s) C1{ Fi:1 Fc:1 FL:1 Fs:1}



static void Test_BFs1i_BFu1c_BFu1ll_BFu1s()
{
  {
    init_simple_test("BFs1i_BFu1c_BFu1ll_BFu1s");
    static STRUCT_IF_C BFs1i_BFu1c_BFu1ll_BFu1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1c_BFu1ll_BFu1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1c_BFu1ll_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1c_BFu1ll_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1c_BFu1ll_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1c_BFu1ll_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1c_BFu1ll_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1c_BFu1ll_BFu1s, BFs1i_BFu1c_BFu1ll_BFu1s)
//============================================================================


struct  BFs1i_BFu1c_BFu1s  {
  signed int v1:1;
  unsigned char v2:1;
  unsigned short v3:1;
};
//SIG(1 BFs1i_BFu1c_BFu1s) C1{ Fi:1 Fc:1 Fs:1}



static void Test_BFs1i_BFu1c_BFu1s()
{
  {
    init_simple_test("BFs1i_BFu1c_BFu1s");
    static STRUCT_IF_C BFs1i_BFu1c_BFu1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1c_BFu1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1c_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1c_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1c_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1c_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1c_BFu1s, BFs1i_BFu1c_BFu1s)
//============================================================================


struct  BFs1i_BFu1c_BFu1s_BFs1c  {
  signed int v1:1;
  unsigned char v2:1;
  unsigned short v3:1;
  signed char v4:1;
};
//SIG(1 BFs1i_BFu1c_BFu1s_BFs1c) C1{ Fi:1 Fc:1 Fs:1 Fc:1}



static void Test_BFs1i_BFu1c_BFu1s_BFs1c()
{
  {
    init_simple_test("BFs1i_BFu1c_BFu1s_BFs1c");
    static STRUCT_IF_C BFs1i_BFu1c_BFu1s_BFs1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1c_BFu1s_BFs1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1c_BFu1s_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1c_BFu1s_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1c_BFu1s_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1c_BFu1s_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1c_BFu1s_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1c_BFu1s_BFs1c, BFs1i_BFu1c_BFu1s_BFs1c)
//============================================================================


struct  BFs1i_BFu1c_BFu1s_BFs1i  {
  signed int v1:1;
  unsigned char v2:1;
  unsigned short v3:1;
  signed int v4:1;
};
//SIG(1 BFs1i_BFu1c_BFu1s_BFs1i) C1{ Fi:1 Fc:1 Fs:1 Fi:1}



static void Test_BFs1i_BFu1c_BFu1s_BFs1i()
{
  {
    init_simple_test("BFs1i_BFu1c_BFu1s_BFs1i");
    static STRUCT_IF_C BFs1i_BFu1c_BFu1s_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1c_BFu1s_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1c_BFu1s_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1c_BFu1s_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1c_BFu1s_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1c_BFu1s_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1c_BFu1s_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1c_BFu1s_BFs1i, BFs1i_BFu1c_BFu1s_BFs1i)
//============================================================================


struct  BFs1i_BFu1c_BFu1s_BFs1ll  {
  signed int v1:1;
  unsigned char v2:1;
  unsigned short v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1i_BFu1c_BFu1s_BFs1ll) C1{ Fi:1 Fc:1 Fs:1 FL:1}



static void Test_BFs1i_BFu1c_BFu1s_BFs1ll()
{
  {
    init_simple_test("BFs1i_BFu1c_BFu1s_BFs1ll");
    static STRUCT_IF_C BFs1i_BFu1c_BFu1s_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1c_BFu1s_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1c_BFu1s_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1c_BFu1s_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1c_BFu1s_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1c_BFu1s_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1c_BFu1s_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1c_BFu1s_BFs1ll, BFs1i_BFu1c_BFu1s_BFs1ll)
//============================================================================


struct  BFs1i_BFu1c_BFu1s_BFs1s  {
  signed int v1:1;
  unsigned char v2:1;
  unsigned short v3:1;
  signed short v4:1;
};
//SIG(1 BFs1i_BFu1c_BFu1s_BFs1s) C1{ Fi:1 Fc:1 Fs:1 Fs:1}



static void Test_BFs1i_BFu1c_BFu1s_BFs1s()
{
  {
    init_simple_test("BFs1i_BFu1c_BFu1s_BFs1s");
    static STRUCT_IF_C BFs1i_BFu1c_BFu1s_BFs1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1c_BFu1s_BFs1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1c_BFu1s_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1c_BFu1s_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1c_BFu1s_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1c_BFu1s_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1c_BFu1s_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1c_BFu1s_BFs1s, BFs1i_BFu1c_BFu1s_BFs1s)
//============================================================================


struct  BFs1i_BFu1c_BFu1s_BFu1c  {
  signed int v1:1;
  unsigned char v2:1;
  unsigned short v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1i_BFu1c_BFu1s_BFu1c) C1{ Fi:1 Fc:1 Fs:1 Fc:1}



static void Test_BFs1i_BFu1c_BFu1s_BFu1c()
{
  {
    init_simple_test("BFs1i_BFu1c_BFu1s_BFu1c");
    static STRUCT_IF_C BFs1i_BFu1c_BFu1s_BFu1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1c_BFu1s_BFu1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1c_BFu1s_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1c_BFu1s_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1c_BFu1s_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1c_BFu1s_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1c_BFu1s_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1c_BFu1s_BFu1c, BFs1i_BFu1c_BFu1s_BFu1c)
//============================================================================


struct  BFs1i_BFu1c_BFu1s_BFu1i  {
  signed int v1:1;
  unsigned char v2:1;
  unsigned short v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1i_BFu1c_BFu1s_BFu1i) C1{ Fi:1 Fc:1 Fs:1 Fi:1}



static void Test_BFs1i_BFu1c_BFu1s_BFu1i()
{
  {
    init_simple_test("BFs1i_BFu1c_BFu1s_BFu1i");
    static STRUCT_IF_C BFs1i_BFu1c_BFu1s_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1c_BFu1s_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1c_BFu1s_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1c_BFu1s_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1c_BFu1s_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1c_BFu1s_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1c_BFu1s_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1c_BFu1s_BFu1i, BFs1i_BFu1c_BFu1s_BFu1i)
//============================================================================


struct  BFs1i_BFu1c_BFu1s_BFu1ll  {
  signed int v1:1;
  unsigned char v2:1;
  unsigned short v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1i_BFu1c_BFu1s_BFu1ll) C1{ Fi:1 Fc:1 Fs:1 FL:1}



static void Test_BFs1i_BFu1c_BFu1s_BFu1ll()
{
  {
    init_simple_test("BFs1i_BFu1c_BFu1s_BFu1ll");
    static STRUCT_IF_C BFs1i_BFu1c_BFu1s_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1c_BFu1s_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1c_BFu1s_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1c_BFu1s_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1c_BFu1s_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1c_BFu1s_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1c_BFu1s_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1c_BFu1s_BFu1ll, BFs1i_BFu1c_BFu1s_BFu1ll)
//============================================================================


struct  BFs1i_BFu1c_BFu1s_BFu1s  {
  signed int v1:1;
  unsigned char v2:1;
  unsigned short v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1i_BFu1c_BFu1s_BFu1s) C1{ Fi:1 Fc:1 Fs:1 Fs:1}



static void Test_BFs1i_BFu1c_BFu1s_BFu1s()
{
  {
    init_simple_test("BFs1i_BFu1c_BFu1s_BFu1s");
    static STRUCT_IF_C BFs1i_BFu1c_BFu1s_BFu1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1c_BFu1s_BFu1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1c_BFu1s_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1c_BFu1s_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1c_BFu1s_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1c_BFu1s_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1c_BFu1s_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1c_BFu1s_BFu1s, BFs1i_BFu1c_BFu1s_BFu1s)
//============================================================================


struct  BFs1i_BFu1i  {
  signed int v1:1;
  unsigned int v2:1;
};
//SIG(1 BFs1i_BFu1i) C1{ Fi:1 Fi:1}



static void Test_BFs1i_BFu1i()
{
  {
    init_simple_test("BFs1i_BFu1i");
    static STRUCT_IF_C BFs1i_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1i, BFs1i_BFu1i)
//============================================================================


struct  BFs1i_BFu1i_BFs1c  {
  signed int v1:1;
  unsigned int v2:1;
  signed char v3:1;
};
//SIG(1 BFs1i_BFu1i_BFs1c) C1{ Fi:1 Fi:1 Fc:1}



static void Test_BFs1i_BFu1i_BFs1c()
{
  {
    init_simple_test("BFs1i_BFu1i_BFs1c");
    static STRUCT_IF_C BFs1i_BFu1i_BFs1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1i_BFs1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1i_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1i_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1i_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1i_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1i_BFs1c, BFs1i_BFu1i_BFs1c)
//============================================================================


struct  BFs1i_BFu1i_BFs1c_BFs1c  {
  signed int v1:1;
  unsigned int v2:1;
  signed char v3:1;
  signed char v4:1;
};
//SIG(1 BFs1i_BFu1i_BFs1c_BFs1c) C1{ Fi:1 Fi:1 Fc:1 Fc:1}



static void Test_BFs1i_BFu1i_BFs1c_BFs1c()
{
  {
    init_simple_test("BFs1i_BFu1i_BFs1c_BFs1c");
    static STRUCT_IF_C BFs1i_BFu1i_BFs1c_BFs1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1i_BFs1c_BFs1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1i_BFs1c_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1i_BFs1c_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1i_BFs1c_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1i_BFs1c_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1i_BFs1c_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1i_BFs1c_BFs1c, BFs1i_BFu1i_BFs1c_BFs1c)
//============================================================================


struct  BFs1i_BFu1i_BFs1c_BFs1i  {
  signed int v1:1;
  unsigned int v2:1;
  signed char v3:1;
  signed int v4:1;
};
//SIG(1 BFs1i_BFu1i_BFs1c_BFs1i) C1{ Fi:1 Fi:1 Fc:1 Fi:1}



static void Test_BFs1i_BFu1i_BFs1c_BFs1i()
{
  {
    init_simple_test("BFs1i_BFu1i_BFs1c_BFs1i");
    static STRUCT_IF_C BFs1i_BFu1i_BFs1c_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1i_BFs1c_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1i_BFs1c_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1i_BFs1c_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1i_BFs1c_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1i_BFs1c_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1i_BFs1c_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1i_BFs1c_BFs1i, BFs1i_BFu1i_BFs1c_BFs1i)
//============================================================================


struct  BFs1i_BFu1i_BFs1c_BFs1ll  {
  signed int v1:1;
  unsigned int v2:1;
  signed char v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1i_BFu1i_BFs1c_BFs1ll) C1{ Fi:1 Fi:1 Fc:1 FL:1}



static void Test_BFs1i_BFu1i_BFs1c_BFs1ll()
{
  {
    init_simple_test("BFs1i_BFu1i_BFs1c_BFs1ll");
    static STRUCT_IF_C BFs1i_BFu1i_BFs1c_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1i_BFs1c_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1i_BFs1c_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1i_BFs1c_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1i_BFs1c_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1i_BFs1c_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1i_BFs1c_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1i_BFs1c_BFs1ll, BFs1i_BFu1i_BFs1c_BFs1ll)
//============================================================================


struct  BFs1i_BFu1i_BFs1c_BFs1s  {
  signed int v1:1;
  unsigned int v2:1;
  signed char v3:1;
  signed short v4:1;
};
//SIG(1 BFs1i_BFu1i_BFs1c_BFs1s) C1{ Fi:1 Fi:1 Fc:1 Fs:1}



static void Test_BFs1i_BFu1i_BFs1c_BFs1s()
{
  {
    init_simple_test("BFs1i_BFu1i_BFs1c_BFs1s");
    static STRUCT_IF_C BFs1i_BFu1i_BFs1c_BFs1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1i_BFs1c_BFs1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1i_BFs1c_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1i_BFs1c_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1i_BFs1c_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1i_BFs1c_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1i_BFs1c_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1i_BFs1c_BFs1s, BFs1i_BFu1i_BFs1c_BFs1s)
//============================================================================


struct  BFs1i_BFu1i_BFs1c_BFu1c  {
  signed int v1:1;
  unsigned int v2:1;
  signed char v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1i_BFu1i_BFs1c_BFu1c) C1{ Fi:1 Fi:1 Fc:1 Fc:1}



static void Test_BFs1i_BFu1i_BFs1c_BFu1c()
{
  {
    init_simple_test("BFs1i_BFu1i_BFs1c_BFu1c");
    static STRUCT_IF_C BFs1i_BFu1i_BFs1c_BFu1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1i_BFs1c_BFu1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1i_BFs1c_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1i_BFs1c_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1i_BFs1c_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1i_BFs1c_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1i_BFs1c_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1i_BFs1c_BFu1c, BFs1i_BFu1i_BFs1c_BFu1c)
//============================================================================


struct  BFs1i_BFu1i_BFs1c_BFu1i  {
  signed int v1:1;
  unsigned int v2:1;
  signed char v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1i_BFu1i_BFs1c_BFu1i) C1{ Fi:1 Fi:1 Fc:1 Fi:1}



static void Test_BFs1i_BFu1i_BFs1c_BFu1i()
{
  {
    init_simple_test("BFs1i_BFu1i_BFs1c_BFu1i");
    static STRUCT_IF_C BFs1i_BFu1i_BFs1c_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1i_BFs1c_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1i_BFs1c_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1i_BFs1c_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1i_BFs1c_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1i_BFs1c_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1i_BFs1c_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1i_BFs1c_BFu1i, BFs1i_BFu1i_BFs1c_BFu1i)
//============================================================================


struct  BFs1i_BFu1i_BFs1c_BFu1ll  {
  signed int v1:1;
  unsigned int v2:1;
  signed char v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1i_BFu1i_BFs1c_BFu1ll) C1{ Fi:1 Fi:1 Fc:1 FL:1}



static void Test_BFs1i_BFu1i_BFs1c_BFu1ll()
{
  {
    init_simple_test("BFs1i_BFu1i_BFs1c_BFu1ll");
    static STRUCT_IF_C BFs1i_BFu1i_BFs1c_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1i_BFs1c_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1i_BFs1c_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1i_BFs1c_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1i_BFs1c_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1i_BFs1c_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1i_BFs1c_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1i_BFs1c_BFu1ll, BFs1i_BFu1i_BFs1c_BFu1ll)
//============================================================================


struct  BFs1i_BFu1i_BFs1c_BFu1s  {
  signed int v1:1;
  unsigned int v2:1;
  signed char v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1i_BFu1i_BFs1c_BFu1s) C1{ Fi:1 Fi:1 Fc:1 Fs:1}



static void Test_BFs1i_BFu1i_BFs1c_BFu1s()
{
  {
    init_simple_test("BFs1i_BFu1i_BFs1c_BFu1s");
    static STRUCT_IF_C BFs1i_BFu1i_BFs1c_BFu1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1i_BFs1c_BFu1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1i_BFs1c_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1i_BFs1c_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1i_BFs1c_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1i_BFs1c_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1i_BFs1c_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1i_BFs1c_BFu1s, BFs1i_BFu1i_BFs1c_BFu1s)
//============================================================================


struct  BFs1i_BFu1i_BFs1i  {
  signed int v1:1;
  unsigned int v2:1;
  signed int v3:1;
};
//SIG(1 BFs1i_BFu1i_BFs1i) C1{ Fi:1 Fi:1 Fi:1}



static void Test_BFs1i_BFu1i_BFs1i()
{
  {
    init_simple_test("BFs1i_BFu1i_BFs1i");
    static STRUCT_IF_C BFs1i_BFu1i_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1i_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1i_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1i_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1i_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1i_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1i_BFs1i, BFs1i_BFu1i_BFs1i)
//============================================================================


struct  BFs1i_BFu1i_BFs1i_BFs1c  {
  signed int v1:1;
  unsigned int v2:1;
  signed int v3:1;
  signed char v4:1;
};
//SIG(1 BFs1i_BFu1i_BFs1i_BFs1c) C1{ Fi:1 Fi:1 Fi:1 Fc:1}



static void Test_BFs1i_BFu1i_BFs1i_BFs1c()
{
  {
    init_simple_test("BFs1i_BFu1i_BFs1i_BFs1c");
    static STRUCT_IF_C BFs1i_BFu1i_BFs1i_BFs1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1i_BFs1i_BFs1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1i_BFs1i_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1i_BFs1i_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1i_BFs1i_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1i_BFs1i_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1i_BFs1i_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1i_BFs1i_BFs1c, BFs1i_BFu1i_BFs1i_BFs1c)
//============================================================================


struct  BFs1i_BFu1i_BFs1i_BFs1i  {
  signed int v1:1;
  unsigned int v2:1;
  signed int v3:1;
  signed int v4:1;
};
//SIG(1 BFs1i_BFu1i_BFs1i_BFs1i) C1{ Fi:1 Fi:1 Fi:1 Fi:1}



static void Test_BFs1i_BFu1i_BFs1i_BFs1i()
{
  {
    init_simple_test("BFs1i_BFu1i_BFs1i_BFs1i");
    static STRUCT_IF_C BFs1i_BFu1i_BFs1i_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1i_BFs1i_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1i_BFs1i_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1i_BFs1i_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1i_BFs1i_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1i_BFs1i_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1i_BFs1i_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1i_BFs1i_BFs1i, BFs1i_BFu1i_BFs1i_BFs1i)
//============================================================================


struct  BFs1i_BFu1i_BFs1i_BFs1ll  {
  signed int v1:1;
  unsigned int v2:1;
  signed int v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1i_BFu1i_BFs1i_BFs1ll) C1{ Fi:1 Fi:1 Fi:1 FL:1}



static void Test_BFs1i_BFu1i_BFs1i_BFs1ll()
{
  {
    init_simple_test("BFs1i_BFu1i_BFs1i_BFs1ll");
    static STRUCT_IF_C BFs1i_BFu1i_BFs1i_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1i_BFs1i_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1i_BFs1i_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1i_BFs1i_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1i_BFs1i_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1i_BFs1i_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1i_BFs1i_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1i_BFs1i_BFs1ll, BFs1i_BFu1i_BFs1i_BFs1ll)
//============================================================================


struct  BFs1i_BFu1i_BFs1i_BFs1s  {
  signed int v1:1;
  unsigned int v2:1;
  signed int v3:1;
  signed short v4:1;
};
//SIG(1 BFs1i_BFu1i_BFs1i_BFs1s) C1{ Fi:1 Fi:1 Fi:1 Fs:1}



static void Test_BFs1i_BFu1i_BFs1i_BFs1s()
{
  {
    init_simple_test("BFs1i_BFu1i_BFs1i_BFs1s");
    static STRUCT_IF_C BFs1i_BFu1i_BFs1i_BFs1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1i_BFs1i_BFs1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1i_BFs1i_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1i_BFs1i_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1i_BFs1i_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1i_BFs1i_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1i_BFs1i_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1i_BFs1i_BFs1s, BFs1i_BFu1i_BFs1i_BFs1s)
//============================================================================


struct  BFs1i_BFu1i_BFs1i_BFu1c  {
  signed int v1:1;
  unsigned int v2:1;
  signed int v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1i_BFu1i_BFs1i_BFu1c) C1{ Fi:1 Fi:1 Fi:1 Fc:1}



static void Test_BFs1i_BFu1i_BFs1i_BFu1c()
{
  {
    init_simple_test("BFs1i_BFu1i_BFs1i_BFu1c");
    static STRUCT_IF_C BFs1i_BFu1i_BFs1i_BFu1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1i_BFs1i_BFu1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1i_BFs1i_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1i_BFs1i_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1i_BFs1i_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1i_BFs1i_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1i_BFs1i_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1i_BFs1i_BFu1c, BFs1i_BFu1i_BFs1i_BFu1c)
//============================================================================


struct  BFs1i_BFu1i_BFs1i_BFu1i  {
  signed int v1:1;
  unsigned int v2:1;
  signed int v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1i_BFu1i_BFs1i_BFu1i) C1{ Fi:1 Fi:1 Fi:1 Fi:1}



static void Test_BFs1i_BFu1i_BFs1i_BFu1i()
{
  {
    init_simple_test("BFs1i_BFu1i_BFs1i_BFu1i");
    static STRUCT_IF_C BFs1i_BFu1i_BFs1i_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1i_BFs1i_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1i_BFs1i_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1i_BFs1i_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1i_BFs1i_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1i_BFs1i_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1i_BFs1i_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1i_BFs1i_BFu1i, BFs1i_BFu1i_BFs1i_BFu1i)
//============================================================================


struct  BFs1i_BFu1i_BFs1i_BFu1ll  {
  signed int v1:1;
  unsigned int v2:1;
  signed int v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1i_BFu1i_BFs1i_BFu1ll) C1{ Fi:1 Fi:1 Fi:1 FL:1}



static void Test_BFs1i_BFu1i_BFs1i_BFu1ll()
{
  {
    init_simple_test("BFs1i_BFu1i_BFs1i_BFu1ll");
    static STRUCT_IF_C BFs1i_BFu1i_BFs1i_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1i_BFs1i_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1i_BFs1i_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1i_BFs1i_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1i_BFs1i_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1i_BFs1i_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1i_BFs1i_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1i_BFs1i_BFu1ll, BFs1i_BFu1i_BFs1i_BFu1ll)
//============================================================================


struct  BFs1i_BFu1i_BFs1i_BFu1s  {
  signed int v1:1;
  unsigned int v2:1;
  signed int v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1i_BFu1i_BFs1i_BFu1s) C1{ Fi:1 Fi:1 Fi:1 Fs:1}



static void Test_BFs1i_BFu1i_BFs1i_BFu1s()
{
  {
    init_simple_test("BFs1i_BFu1i_BFs1i_BFu1s");
    static STRUCT_IF_C BFs1i_BFu1i_BFs1i_BFu1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1i_BFs1i_BFu1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1i_BFs1i_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1i_BFs1i_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1i_BFs1i_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1i_BFs1i_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1i_BFs1i_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1i_BFs1i_BFu1s, BFs1i_BFu1i_BFs1i_BFu1s)
//============================================================================


struct  BFs1i_BFu1i_BFs1ll  {
  signed int v1:1;
  unsigned int v2:1;
  signed __tsi64 v3:1;
};
//SIG(1 BFs1i_BFu1i_BFs1ll) C1{ Fi:1 Fi:1 FL:1}



static void Test_BFs1i_BFu1i_BFs1ll()
{
  {
    init_simple_test("BFs1i_BFu1i_BFs1ll");
    static STRUCT_IF_C BFs1i_BFu1i_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1i_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1i_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1i_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1i_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1i_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1i_BFs1ll, BFs1i_BFu1i_BFs1ll)
//============================================================================


struct  BFs1i_BFu1i_BFs1ll_BFs1c  {
  signed int v1:1;
  unsigned int v2:1;
  signed __tsi64 v3:1;
  signed char v4:1;
};
//SIG(1 BFs1i_BFu1i_BFs1ll_BFs1c) C1{ Fi:1 Fi:1 FL:1 Fc:1}



static void Test_BFs1i_BFu1i_BFs1ll_BFs1c()
{
  {
    init_simple_test("BFs1i_BFu1i_BFs1ll_BFs1c");
    static STRUCT_IF_C BFs1i_BFu1i_BFs1ll_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1i_BFs1ll_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1i_BFs1ll_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1i_BFs1ll_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1i_BFs1ll_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1i_BFs1ll_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1i_BFs1ll_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1i_BFs1ll_BFs1c, BFs1i_BFu1i_BFs1ll_BFs1c)
//============================================================================


struct  BFs1i_BFu1i_BFs1ll_BFs1i  {
  signed int v1:1;
  unsigned int v2:1;
  signed __tsi64 v3:1;
  signed int v4:1;
};
//SIG(1 BFs1i_BFu1i_BFs1ll_BFs1i) C1{ Fi:1 Fi:1 FL:1 Fi:1}



static void Test_BFs1i_BFu1i_BFs1ll_BFs1i()
{
  {
    init_simple_test("BFs1i_BFu1i_BFs1ll_BFs1i");
    static STRUCT_IF_C BFs1i_BFu1i_BFs1ll_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1i_BFs1ll_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1i_BFs1ll_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1i_BFs1ll_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1i_BFs1ll_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1i_BFs1ll_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1i_BFs1ll_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1i_BFs1ll_BFs1i, BFs1i_BFu1i_BFs1ll_BFs1i)
//============================================================================


struct  BFs1i_BFu1i_BFs1ll_BFs1ll  {
  signed int v1:1;
  unsigned int v2:1;
  signed __tsi64 v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1i_BFu1i_BFs1ll_BFs1ll) C1{ Fi:1 Fi:1 FL:1 FL:1}



static void Test_BFs1i_BFu1i_BFs1ll_BFs1ll()
{
  {
    init_simple_test("BFs1i_BFu1i_BFs1ll_BFs1ll");
    static STRUCT_IF_C BFs1i_BFu1i_BFs1ll_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1i_BFs1ll_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1i_BFs1ll_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1i_BFs1ll_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1i_BFs1ll_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1i_BFs1ll_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1i_BFs1ll_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1i_BFs1ll_BFs1ll, BFs1i_BFu1i_BFs1ll_BFs1ll)
//============================================================================


struct  BFs1i_BFu1i_BFs1ll_BFs1s  {
  signed int v1:1;
  unsigned int v2:1;
  signed __tsi64 v3:1;
  signed short v4:1;
};
//SIG(1 BFs1i_BFu1i_BFs1ll_BFs1s) C1{ Fi:1 Fi:1 FL:1 Fs:1}



static void Test_BFs1i_BFu1i_BFs1ll_BFs1s()
{
  {
    init_simple_test("BFs1i_BFu1i_BFs1ll_BFs1s");
    static STRUCT_IF_C BFs1i_BFu1i_BFs1ll_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1i_BFs1ll_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1i_BFs1ll_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1i_BFs1ll_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1i_BFs1ll_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1i_BFs1ll_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1i_BFs1ll_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1i_BFs1ll_BFs1s, BFs1i_BFu1i_BFs1ll_BFs1s)
//============================================================================


struct  BFs1i_BFu1i_BFs1ll_BFu1c  {
  signed int v1:1;
  unsigned int v2:1;
  signed __tsi64 v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1i_BFu1i_BFs1ll_BFu1c) C1{ Fi:1 Fi:1 FL:1 Fc:1}



static void Test_BFs1i_BFu1i_BFs1ll_BFu1c()
{
  {
    init_simple_test("BFs1i_BFu1i_BFs1ll_BFu1c");
    static STRUCT_IF_C BFs1i_BFu1i_BFs1ll_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1i_BFs1ll_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1i_BFs1ll_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1i_BFs1ll_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1i_BFs1ll_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1i_BFs1ll_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1i_BFs1ll_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1i_BFs1ll_BFu1c, BFs1i_BFu1i_BFs1ll_BFu1c)
//============================================================================


struct  BFs1i_BFu1i_BFs1ll_BFu1i  {
  signed int v1:1;
  unsigned int v2:1;
  signed __tsi64 v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1i_BFu1i_BFs1ll_BFu1i) C1{ Fi:1 Fi:1 FL:1 Fi:1}



static void Test_BFs1i_BFu1i_BFs1ll_BFu1i()
{
  {
    init_simple_test("BFs1i_BFu1i_BFs1ll_BFu1i");
    static STRUCT_IF_C BFs1i_BFu1i_BFs1ll_BFu1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1i_BFs1ll_BFu1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1i_BFs1ll_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1i_BFs1ll_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1i_BFs1ll_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1i_BFs1ll_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1i_BFs1ll_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1i_BFs1ll_BFu1i, BFs1i_BFu1i_BFs1ll_BFu1i)
//============================================================================


struct  BFs1i_BFu1i_BFs1ll_BFu1ll  {
  signed int v1:1;
  unsigned int v2:1;
  signed __tsi64 v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1i_BFu1i_BFs1ll_BFu1ll) C1{ Fi:1 Fi:1 FL:1 FL:1}



static void Test_BFs1i_BFu1i_BFs1ll_BFu1ll()
{
  {
    init_simple_test("BFs1i_BFu1i_BFs1ll_BFu1ll");
    static STRUCT_IF_C BFs1i_BFu1i_BFs1ll_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1i_BFs1ll_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1i_BFs1ll_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1i_BFs1ll_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1i_BFs1ll_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1i_BFs1ll_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1i_BFs1ll_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1i_BFs1ll_BFu1ll, BFs1i_BFu1i_BFs1ll_BFu1ll)
//============================================================================


struct  BFs1i_BFu1i_BFs1ll_BFu1s  {
  signed int v1:1;
  unsigned int v2:1;
  signed __tsi64 v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1i_BFu1i_BFs1ll_BFu1s) C1{ Fi:1 Fi:1 FL:1 Fs:1}



static void Test_BFs1i_BFu1i_BFs1ll_BFu1s()
{
  {
    init_simple_test("BFs1i_BFu1i_BFs1ll_BFu1s");
    static STRUCT_IF_C BFs1i_BFu1i_BFs1ll_BFu1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1i_BFs1ll_BFu1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1i_BFs1ll_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1i_BFs1ll_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1i_BFs1ll_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1i_BFs1ll_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1i_BFs1ll_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1i_BFs1ll_BFu1s, BFs1i_BFu1i_BFs1ll_BFu1s)
//============================================================================


struct  BFs1i_BFu1i_BFs1s  {
  signed int v1:1;
  unsigned int v2:1;
  signed short v3:1;
};
//SIG(1 BFs1i_BFu1i_BFs1s) C1{ Fi:1 Fi:1 Fs:1}



static void Test_BFs1i_BFu1i_BFs1s()
{
  {
    init_simple_test("BFs1i_BFu1i_BFs1s");
    static STRUCT_IF_C BFs1i_BFu1i_BFs1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1i_BFs1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1i_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1i_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1i_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1i_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1i_BFs1s, BFs1i_BFu1i_BFs1s)
//============================================================================


struct  BFs1i_BFu1i_BFs1s_BFs1c  {
  signed int v1:1;
  unsigned int v2:1;
  signed short v3:1;
  signed char v4:1;
};
//SIG(1 BFs1i_BFu1i_BFs1s_BFs1c) C1{ Fi:1 Fi:1 Fs:1 Fc:1}



static void Test_BFs1i_BFu1i_BFs1s_BFs1c()
{
  {
    init_simple_test("BFs1i_BFu1i_BFs1s_BFs1c");
    static STRUCT_IF_C BFs1i_BFu1i_BFs1s_BFs1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1i_BFs1s_BFs1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1i_BFs1s_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1i_BFs1s_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1i_BFs1s_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1i_BFs1s_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1i_BFs1s_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1i_BFs1s_BFs1c, BFs1i_BFu1i_BFs1s_BFs1c)
//============================================================================


struct  BFs1i_BFu1i_BFs1s_BFs1i  {
  signed int v1:1;
  unsigned int v2:1;
  signed short v3:1;
  signed int v4:1;
};
//SIG(1 BFs1i_BFu1i_BFs1s_BFs1i) C1{ Fi:1 Fi:1 Fs:1 Fi:1}



static void Test_BFs1i_BFu1i_BFs1s_BFs1i()
{
  {
    init_simple_test("BFs1i_BFu1i_BFs1s_BFs1i");
    static STRUCT_IF_C BFs1i_BFu1i_BFs1s_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1i_BFs1s_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1i_BFs1s_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1i_BFs1s_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1i_BFs1s_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1i_BFs1s_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1i_BFs1s_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1i_BFs1s_BFs1i, BFs1i_BFu1i_BFs1s_BFs1i)
//============================================================================


struct  BFs1i_BFu1i_BFs1s_BFs1ll  {
  signed int v1:1;
  unsigned int v2:1;
  signed short v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1i_BFu1i_BFs1s_BFs1ll) C1{ Fi:1 Fi:1 Fs:1 FL:1}



static void Test_BFs1i_BFu1i_BFs1s_BFs1ll()
{
  {
    init_simple_test("BFs1i_BFu1i_BFs1s_BFs1ll");
    static STRUCT_IF_C BFs1i_BFu1i_BFs1s_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1i_BFs1s_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1i_BFs1s_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1i_BFs1s_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1i_BFs1s_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1i_BFs1s_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1i_BFs1s_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1i_BFs1s_BFs1ll, BFs1i_BFu1i_BFs1s_BFs1ll)
//============================================================================


struct  BFs1i_BFu1i_BFs1s_BFs1s  {
  signed int v1:1;
  unsigned int v2:1;
  signed short v3:1;
  signed short v4:1;
};
//SIG(1 BFs1i_BFu1i_BFs1s_BFs1s) C1{ Fi:1 Fi:1 Fs:1 Fs:1}



static void Test_BFs1i_BFu1i_BFs1s_BFs1s()
{
  {
    init_simple_test("BFs1i_BFu1i_BFs1s_BFs1s");
    static STRUCT_IF_C BFs1i_BFu1i_BFs1s_BFs1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1i_BFs1s_BFs1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1i_BFs1s_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1i_BFs1s_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1i_BFs1s_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1i_BFs1s_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1i_BFs1s_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1i_BFs1s_BFs1s, BFs1i_BFu1i_BFs1s_BFs1s)
//============================================================================


struct  BFs1i_BFu1i_BFs1s_BFu1c  {
  signed int v1:1;
  unsigned int v2:1;
  signed short v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1i_BFu1i_BFs1s_BFu1c) C1{ Fi:1 Fi:1 Fs:1 Fc:1}



static void Test_BFs1i_BFu1i_BFs1s_BFu1c()
{
  {
    init_simple_test("BFs1i_BFu1i_BFs1s_BFu1c");
    static STRUCT_IF_C BFs1i_BFu1i_BFs1s_BFu1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1i_BFs1s_BFu1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1i_BFs1s_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1i_BFs1s_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1i_BFs1s_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1i_BFs1s_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1i_BFs1s_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1i_BFs1s_BFu1c, BFs1i_BFu1i_BFs1s_BFu1c)
//============================================================================


struct  BFs1i_BFu1i_BFs1s_BFu1i  {
  signed int v1:1;
  unsigned int v2:1;
  signed short v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1i_BFu1i_BFs1s_BFu1i) C1{ Fi:1 Fi:1 Fs:1 Fi:1}



static void Test_BFs1i_BFu1i_BFs1s_BFu1i()
{
  {
    init_simple_test("BFs1i_BFu1i_BFs1s_BFu1i");
    static STRUCT_IF_C BFs1i_BFu1i_BFs1s_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1i_BFs1s_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1i_BFs1s_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1i_BFs1s_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1i_BFs1s_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1i_BFs1s_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1i_BFs1s_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1i_BFs1s_BFu1i, BFs1i_BFu1i_BFs1s_BFu1i)
//============================================================================


struct  BFs1i_BFu1i_BFs1s_BFu1ll  {
  signed int v1:1;
  unsigned int v2:1;
  signed short v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1i_BFu1i_BFs1s_BFu1ll) C1{ Fi:1 Fi:1 Fs:1 FL:1}



static void Test_BFs1i_BFu1i_BFs1s_BFu1ll()
{
  {
    init_simple_test("BFs1i_BFu1i_BFs1s_BFu1ll");
    static STRUCT_IF_C BFs1i_BFu1i_BFs1s_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1i_BFs1s_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1i_BFs1s_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1i_BFs1s_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1i_BFs1s_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1i_BFs1s_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1i_BFs1s_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1i_BFs1s_BFu1ll, BFs1i_BFu1i_BFs1s_BFu1ll)
//============================================================================


struct  BFs1i_BFu1i_BFs1s_BFu1s  {
  signed int v1:1;
  unsigned int v2:1;
  signed short v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1i_BFu1i_BFs1s_BFu1s) C1{ Fi:1 Fi:1 Fs:1 Fs:1}



static void Test_BFs1i_BFu1i_BFs1s_BFu1s()
{
  {
    init_simple_test("BFs1i_BFu1i_BFs1s_BFu1s");
    static STRUCT_IF_C BFs1i_BFu1i_BFs1s_BFu1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1i_BFs1s_BFu1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1i_BFs1s_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1i_BFs1s_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1i_BFs1s_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1i_BFs1s_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1i_BFs1s_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1i_BFs1s_BFu1s, BFs1i_BFu1i_BFs1s_BFu1s)
//============================================================================


struct  BFs1i_BFu1i_BFu1c  {
  signed int v1:1;
  unsigned int v2:1;
  unsigned char v3:1;
};
//SIG(1 BFs1i_BFu1i_BFu1c) C1{ Fi:1 Fi:1 Fc:1}



static void Test_BFs1i_BFu1i_BFu1c()
{
  {
    init_simple_test("BFs1i_BFu1i_BFu1c");
    static STRUCT_IF_C BFs1i_BFu1i_BFu1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1i_BFu1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1i_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1i_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1i_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1i_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1i_BFu1c, BFs1i_BFu1i_BFu1c)
//============================================================================


struct  BFs1i_BFu1i_BFu1c_BFs1c  {
  signed int v1:1;
  unsigned int v2:1;
  unsigned char v3:1;
  signed char v4:1;
};
//SIG(1 BFs1i_BFu1i_BFu1c_BFs1c) C1{ Fi:1 Fi:1 Fc:1 Fc:1}



static void Test_BFs1i_BFu1i_BFu1c_BFs1c()
{
  {
    init_simple_test("BFs1i_BFu1i_BFu1c_BFs1c");
    static STRUCT_IF_C BFs1i_BFu1i_BFu1c_BFs1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1i_BFu1c_BFs1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1i_BFu1c_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1i_BFu1c_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1i_BFu1c_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1i_BFu1c_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1i_BFu1c_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1i_BFu1c_BFs1c, BFs1i_BFu1i_BFu1c_BFs1c)
//============================================================================


struct  BFs1i_BFu1i_BFu1c_BFs1i  {
  signed int v1:1;
  unsigned int v2:1;
  unsigned char v3:1;
  signed int v4:1;
};
//SIG(1 BFs1i_BFu1i_BFu1c_BFs1i) C1{ Fi:1 Fi:1 Fc:1 Fi:1}



static void Test_BFs1i_BFu1i_BFu1c_BFs1i()
{
  {
    init_simple_test("BFs1i_BFu1i_BFu1c_BFs1i");
    static STRUCT_IF_C BFs1i_BFu1i_BFu1c_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1i_BFu1c_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1i_BFu1c_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1i_BFu1c_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1i_BFu1c_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1i_BFu1c_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1i_BFu1c_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1i_BFu1c_BFs1i, BFs1i_BFu1i_BFu1c_BFs1i)
//============================================================================


struct  BFs1i_BFu1i_BFu1c_BFs1ll  {
  signed int v1:1;
  unsigned int v2:1;
  unsigned char v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1i_BFu1i_BFu1c_BFs1ll) C1{ Fi:1 Fi:1 Fc:1 FL:1}



static void Test_BFs1i_BFu1i_BFu1c_BFs1ll()
{
  {
    init_simple_test("BFs1i_BFu1i_BFu1c_BFs1ll");
    static STRUCT_IF_C BFs1i_BFu1i_BFu1c_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1i_BFu1c_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1i_BFu1c_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1i_BFu1c_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1i_BFu1c_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1i_BFu1c_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1i_BFu1c_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1i_BFu1c_BFs1ll, BFs1i_BFu1i_BFu1c_BFs1ll)
//============================================================================


struct  BFs1i_BFu1i_BFu1c_BFs1s  {
  signed int v1:1;
  unsigned int v2:1;
  unsigned char v3:1;
  signed short v4:1;
};
//SIG(1 BFs1i_BFu1i_BFu1c_BFs1s) C1{ Fi:1 Fi:1 Fc:1 Fs:1}



static void Test_BFs1i_BFu1i_BFu1c_BFs1s()
{
  {
    init_simple_test("BFs1i_BFu1i_BFu1c_BFs1s");
    static STRUCT_IF_C BFs1i_BFu1i_BFu1c_BFs1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1i_BFu1c_BFs1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1i_BFu1c_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1i_BFu1c_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1i_BFu1c_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1i_BFu1c_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1i_BFu1c_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1i_BFu1c_BFs1s, BFs1i_BFu1i_BFu1c_BFs1s)
//============================================================================


struct  BFs1i_BFu1i_BFu1c_BFu1c  {
  signed int v1:1;
  unsigned int v2:1;
  unsigned char v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1i_BFu1i_BFu1c_BFu1c) C1{ Fi:1 Fi:1 Fc:1 Fc:1}



static void Test_BFs1i_BFu1i_BFu1c_BFu1c()
{
  {
    init_simple_test("BFs1i_BFu1i_BFu1c_BFu1c");
    static STRUCT_IF_C BFs1i_BFu1i_BFu1c_BFu1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1i_BFu1c_BFu1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1i_BFu1c_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1i_BFu1c_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1i_BFu1c_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1i_BFu1c_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1i_BFu1c_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1i_BFu1c_BFu1c, BFs1i_BFu1i_BFu1c_BFu1c)
//============================================================================


struct  BFs1i_BFu1i_BFu1c_BFu1i  {
  signed int v1:1;
  unsigned int v2:1;
  unsigned char v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1i_BFu1i_BFu1c_BFu1i) C1{ Fi:1 Fi:1 Fc:1 Fi:1}



static void Test_BFs1i_BFu1i_BFu1c_BFu1i()
{
  {
    init_simple_test("BFs1i_BFu1i_BFu1c_BFu1i");
    static STRUCT_IF_C BFs1i_BFu1i_BFu1c_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1i_BFu1c_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1i_BFu1c_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1i_BFu1c_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1i_BFu1c_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1i_BFu1c_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1i_BFu1c_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1i_BFu1c_BFu1i, BFs1i_BFu1i_BFu1c_BFu1i)
//============================================================================


struct  BFs1i_BFu1i_BFu1c_BFu1ll  {
  signed int v1:1;
  unsigned int v2:1;
  unsigned char v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1i_BFu1i_BFu1c_BFu1ll) C1{ Fi:1 Fi:1 Fc:1 FL:1}



static void Test_BFs1i_BFu1i_BFu1c_BFu1ll()
{
  {
    init_simple_test("BFs1i_BFu1i_BFu1c_BFu1ll");
    static STRUCT_IF_C BFs1i_BFu1i_BFu1c_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1i_BFu1c_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1i_BFu1c_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1i_BFu1c_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1i_BFu1c_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1i_BFu1c_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1i_BFu1c_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1i_BFu1c_BFu1ll, BFs1i_BFu1i_BFu1c_BFu1ll)
//============================================================================


struct  BFs1i_BFu1i_BFu1c_BFu1s  {
  signed int v1:1;
  unsigned int v2:1;
  unsigned char v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1i_BFu1i_BFu1c_BFu1s) C1{ Fi:1 Fi:1 Fc:1 Fs:1}



static void Test_BFs1i_BFu1i_BFu1c_BFu1s()
{
  {
    init_simple_test("BFs1i_BFu1i_BFu1c_BFu1s");
    static STRUCT_IF_C BFs1i_BFu1i_BFu1c_BFu1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1i_BFu1c_BFu1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1i_BFu1c_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1i_BFu1c_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1i_BFu1c_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1i_BFu1c_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1i_BFu1c_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1i_BFu1c_BFu1s, BFs1i_BFu1i_BFu1c_BFu1s)
//============================================================================


struct  BFs1i_BFu1i_BFu1i  {
  signed int v1:1;
  unsigned int v2:1;
  unsigned int v3:1;
};
//SIG(1 BFs1i_BFu1i_BFu1i) C1{ Fi:1 Fi:1 Fi:1}



static void Test_BFs1i_BFu1i_BFu1i()
{
  {
    init_simple_test("BFs1i_BFu1i_BFu1i");
    static STRUCT_IF_C BFs1i_BFu1i_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1i_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1i_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1i_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1i_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1i_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1i_BFu1i, BFs1i_BFu1i_BFu1i)
//============================================================================


struct  BFs1i_BFu1i_BFu1i_BFs1c  {
  signed int v1:1;
  unsigned int v2:1;
  unsigned int v3:1;
  signed char v4:1;
};
//SIG(1 BFs1i_BFu1i_BFu1i_BFs1c) C1{ Fi:1 Fi:1 Fi:1 Fc:1}



static void Test_BFs1i_BFu1i_BFu1i_BFs1c()
{
  {
    init_simple_test("BFs1i_BFu1i_BFu1i_BFs1c");
    static STRUCT_IF_C BFs1i_BFu1i_BFu1i_BFs1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1i_BFu1i_BFs1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1i_BFu1i_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1i_BFu1i_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1i_BFu1i_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1i_BFu1i_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1i_BFu1i_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1i_BFu1i_BFs1c, BFs1i_BFu1i_BFu1i_BFs1c)
//============================================================================


struct  BFs1i_BFu1i_BFu1i_BFs1i  {
  signed int v1:1;
  unsigned int v2:1;
  unsigned int v3:1;
  signed int v4:1;
};
//SIG(1 BFs1i_BFu1i_BFu1i_BFs1i) C1{ Fi:1 Fi:1 Fi:1 Fi:1}



static void Test_BFs1i_BFu1i_BFu1i_BFs1i()
{
  {
    init_simple_test("BFs1i_BFu1i_BFu1i_BFs1i");
    static STRUCT_IF_C BFs1i_BFu1i_BFu1i_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1i_BFu1i_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1i_BFu1i_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1i_BFu1i_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1i_BFu1i_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1i_BFu1i_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1i_BFu1i_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1i_BFu1i_BFs1i, BFs1i_BFu1i_BFu1i_BFs1i)
//============================================================================


struct  BFs1i_BFu1i_BFu1i_BFs1ll  {
  signed int v1:1;
  unsigned int v2:1;
  unsigned int v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1i_BFu1i_BFu1i_BFs1ll) C1{ Fi:1 Fi:1 Fi:1 FL:1}



static void Test_BFs1i_BFu1i_BFu1i_BFs1ll()
{
  {
    init_simple_test("BFs1i_BFu1i_BFu1i_BFs1ll");
    static STRUCT_IF_C BFs1i_BFu1i_BFu1i_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1i_BFu1i_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1i_BFu1i_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1i_BFu1i_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1i_BFu1i_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1i_BFu1i_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1i_BFu1i_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1i_BFu1i_BFs1ll, BFs1i_BFu1i_BFu1i_BFs1ll)
//============================================================================


struct  BFs1i_BFu1i_BFu1i_BFs1s  {
  signed int v1:1;
  unsigned int v2:1;
  unsigned int v3:1;
  signed short v4:1;
};
//SIG(1 BFs1i_BFu1i_BFu1i_BFs1s) C1{ Fi:1 Fi:1 Fi:1 Fs:1}



static void Test_BFs1i_BFu1i_BFu1i_BFs1s()
{
  {
    init_simple_test("BFs1i_BFu1i_BFu1i_BFs1s");
    static STRUCT_IF_C BFs1i_BFu1i_BFu1i_BFs1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1i_BFu1i_BFs1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1i_BFu1i_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1i_BFu1i_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1i_BFu1i_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1i_BFu1i_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1i_BFu1i_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1i_BFu1i_BFs1s, BFs1i_BFu1i_BFu1i_BFs1s)
//============================================================================


struct  BFs1i_BFu1i_BFu1i_BFu1c  {
  signed int v1:1;
  unsigned int v2:1;
  unsigned int v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1i_BFu1i_BFu1i_BFu1c) C1{ Fi:1 Fi:1 Fi:1 Fc:1}



static void Test_BFs1i_BFu1i_BFu1i_BFu1c()
{
  {
    init_simple_test("BFs1i_BFu1i_BFu1i_BFu1c");
    static STRUCT_IF_C BFs1i_BFu1i_BFu1i_BFu1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1i_BFu1i_BFu1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1i_BFu1i_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1i_BFu1i_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1i_BFu1i_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1i_BFu1i_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1i_BFu1i_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1i_BFu1i_BFu1c, BFs1i_BFu1i_BFu1i_BFu1c)
//============================================================================


struct  BFs1i_BFu1i_BFu1i_BFu1i  {
  signed int v1:1;
  unsigned int v2:1;
  unsigned int v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1i_BFu1i_BFu1i_BFu1i) C1{ Fi:1 Fi:1 Fi:1 Fi:1}



static void Test_BFs1i_BFu1i_BFu1i_BFu1i()
{
  {
    init_simple_test("BFs1i_BFu1i_BFu1i_BFu1i");
    static STRUCT_IF_C BFs1i_BFu1i_BFu1i_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1i_BFu1i_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1i_BFu1i_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1i_BFu1i_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1i_BFu1i_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1i_BFu1i_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1i_BFu1i_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1i_BFu1i_BFu1i, BFs1i_BFu1i_BFu1i_BFu1i)
//============================================================================


struct  BFs1i_BFu1i_BFu1i_BFu1ll  {
  signed int v1:1;
  unsigned int v2:1;
  unsigned int v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1i_BFu1i_BFu1i_BFu1ll) C1{ Fi:1 Fi:1 Fi:1 FL:1}



static void Test_BFs1i_BFu1i_BFu1i_BFu1ll()
{
  {
    init_simple_test("BFs1i_BFu1i_BFu1i_BFu1ll");
    static STRUCT_IF_C BFs1i_BFu1i_BFu1i_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1i_BFu1i_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1i_BFu1i_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1i_BFu1i_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1i_BFu1i_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1i_BFu1i_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1i_BFu1i_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1i_BFu1i_BFu1ll, BFs1i_BFu1i_BFu1i_BFu1ll)
//============================================================================


struct  BFs1i_BFu1i_BFu1i_BFu1s  {
  signed int v1:1;
  unsigned int v2:1;
  unsigned int v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1i_BFu1i_BFu1i_BFu1s) C1{ Fi:1 Fi:1 Fi:1 Fs:1}



static void Test_BFs1i_BFu1i_BFu1i_BFu1s()
{
  {
    init_simple_test("BFs1i_BFu1i_BFu1i_BFu1s");
    static STRUCT_IF_C BFs1i_BFu1i_BFu1i_BFu1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1i_BFu1i_BFu1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1i_BFu1i_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1i_BFu1i_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1i_BFu1i_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1i_BFu1i_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1i_BFu1i_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1i_BFu1i_BFu1s, BFs1i_BFu1i_BFu1i_BFu1s)
//============================================================================


struct  BFs1i_BFu1i_BFu1ll  {
  signed int v1:1;
  unsigned int v2:1;
  __tsu64 v3:1;
};
//SIG(1 BFs1i_BFu1i_BFu1ll) C1{ Fi:1 Fi:1 FL:1}



static void Test_BFs1i_BFu1i_BFu1ll()
{
  {
    init_simple_test("BFs1i_BFu1i_BFu1ll");
    static STRUCT_IF_C BFs1i_BFu1i_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1i_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1i_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1i_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1i_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1i_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1i_BFu1ll, BFs1i_BFu1i_BFu1ll)
//============================================================================


struct  BFs1i_BFu1i_BFu1ll_BFs1c  {
  signed int v1:1;
  unsigned int v2:1;
  __tsu64 v3:1;
  signed char v4:1;
};
//SIG(1 BFs1i_BFu1i_BFu1ll_BFs1c) C1{ Fi:1 Fi:1 FL:1 Fc:1}



static void Test_BFs1i_BFu1i_BFu1ll_BFs1c()
{
  {
    init_simple_test("BFs1i_BFu1i_BFu1ll_BFs1c");
    static STRUCT_IF_C BFs1i_BFu1i_BFu1ll_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1i_BFu1ll_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1i_BFu1ll_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1i_BFu1ll_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1i_BFu1ll_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1i_BFu1ll_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1i_BFu1ll_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1i_BFu1ll_BFs1c, BFs1i_BFu1i_BFu1ll_BFs1c)
//============================================================================


struct  BFs1i_BFu1i_BFu1ll_BFs1i  {
  signed int v1:1;
  unsigned int v2:1;
  __tsu64 v3:1;
  signed int v4:1;
};
//SIG(1 BFs1i_BFu1i_BFu1ll_BFs1i) C1{ Fi:1 Fi:1 FL:1 Fi:1}



static void Test_BFs1i_BFu1i_BFu1ll_BFs1i()
{
  {
    init_simple_test("BFs1i_BFu1i_BFu1ll_BFs1i");
    static STRUCT_IF_C BFs1i_BFu1i_BFu1ll_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1i_BFu1ll_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1i_BFu1ll_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1i_BFu1ll_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1i_BFu1ll_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1i_BFu1ll_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1i_BFu1ll_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1i_BFu1ll_BFs1i, BFs1i_BFu1i_BFu1ll_BFs1i)
//============================================================================


struct  BFs1i_BFu1i_BFu1ll_BFs1ll  {
  signed int v1:1;
  unsigned int v2:1;
  __tsu64 v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1i_BFu1i_BFu1ll_BFs1ll) C1{ Fi:1 Fi:1 FL:1 FL:1}



static void Test_BFs1i_BFu1i_BFu1ll_BFs1ll()
{
  {
    init_simple_test("BFs1i_BFu1i_BFu1ll_BFs1ll");
    static STRUCT_IF_C BFs1i_BFu1i_BFu1ll_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1i_BFu1ll_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1i_BFu1ll_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1i_BFu1ll_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1i_BFu1ll_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1i_BFu1ll_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1i_BFu1ll_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1i_BFu1ll_BFs1ll, BFs1i_BFu1i_BFu1ll_BFs1ll)
//============================================================================


struct  BFs1i_BFu1i_BFu1ll_BFs1s  {
  signed int v1:1;
  unsigned int v2:1;
  __tsu64 v3:1;
  signed short v4:1;
};
//SIG(1 BFs1i_BFu1i_BFu1ll_BFs1s) C1{ Fi:1 Fi:1 FL:1 Fs:1}



static void Test_BFs1i_BFu1i_BFu1ll_BFs1s()
{
  {
    init_simple_test("BFs1i_BFu1i_BFu1ll_BFs1s");
    static STRUCT_IF_C BFs1i_BFu1i_BFu1ll_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1i_BFu1ll_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1i_BFu1ll_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1i_BFu1ll_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1i_BFu1ll_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1i_BFu1ll_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1i_BFu1ll_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1i_BFu1ll_BFs1s, BFs1i_BFu1i_BFu1ll_BFs1s)
//============================================================================


struct  BFs1i_BFu1i_BFu1ll_BFu1c  {
  signed int v1:1;
  unsigned int v2:1;
  __tsu64 v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1i_BFu1i_BFu1ll_BFu1c) C1{ Fi:1 Fi:1 FL:1 Fc:1}



static void Test_BFs1i_BFu1i_BFu1ll_BFu1c()
{
  {
    init_simple_test("BFs1i_BFu1i_BFu1ll_BFu1c");
    static STRUCT_IF_C BFs1i_BFu1i_BFu1ll_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1i_BFu1ll_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1i_BFu1ll_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1i_BFu1ll_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1i_BFu1ll_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1i_BFu1ll_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1i_BFu1ll_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1i_BFu1ll_BFu1c, BFs1i_BFu1i_BFu1ll_BFu1c)
//============================================================================


struct  BFs1i_BFu1i_BFu1ll_BFu1i  {
  signed int v1:1;
  unsigned int v2:1;
  __tsu64 v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1i_BFu1i_BFu1ll_BFu1i) C1{ Fi:1 Fi:1 FL:1 Fi:1}



static void Test_BFs1i_BFu1i_BFu1ll_BFu1i()
{
  {
    init_simple_test("BFs1i_BFu1i_BFu1ll_BFu1i");
    static STRUCT_IF_C BFs1i_BFu1i_BFu1ll_BFu1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1i_BFu1ll_BFu1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1i_BFu1ll_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1i_BFu1ll_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1i_BFu1ll_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1i_BFu1ll_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1i_BFu1ll_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1i_BFu1ll_BFu1i, BFs1i_BFu1i_BFu1ll_BFu1i)
//============================================================================


struct  BFs1i_BFu1i_BFu1ll_BFu1ll  {
  signed int v1:1;
  unsigned int v2:1;
  __tsu64 v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1i_BFu1i_BFu1ll_BFu1ll) C1{ Fi:1 Fi:1 FL:1 FL:1}



static void Test_BFs1i_BFu1i_BFu1ll_BFu1ll()
{
  {
    init_simple_test("BFs1i_BFu1i_BFu1ll_BFu1ll");
    static STRUCT_IF_C BFs1i_BFu1i_BFu1ll_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1i_BFu1ll_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1i_BFu1ll_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1i_BFu1ll_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1i_BFu1ll_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1i_BFu1ll_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1i_BFu1ll_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1i_BFu1ll_BFu1ll, BFs1i_BFu1i_BFu1ll_BFu1ll)
//============================================================================


struct  BFs1i_BFu1i_BFu1ll_BFu1s  {
  signed int v1:1;
  unsigned int v2:1;
  __tsu64 v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1i_BFu1i_BFu1ll_BFu1s) C1{ Fi:1 Fi:1 FL:1 Fs:1}



static void Test_BFs1i_BFu1i_BFu1ll_BFu1s()
{
  {
    init_simple_test("BFs1i_BFu1i_BFu1ll_BFu1s");
    static STRUCT_IF_C BFs1i_BFu1i_BFu1ll_BFu1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1i_BFu1ll_BFu1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1i_BFu1ll_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1i_BFu1ll_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1i_BFu1ll_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1i_BFu1ll_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1i_BFu1ll_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1i_BFu1ll_BFu1s, BFs1i_BFu1i_BFu1ll_BFu1s)
//============================================================================


struct  BFs1i_BFu1i_BFu1s  {
  signed int v1:1;
  unsigned int v2:1;
  unsigned short v3:1;
};
//SIG(1 BFs1i_BFu1i_BFu1s) C1{ Fi:1 Fi:1 Fs:1}



static void Test_BFs1i_BFu1i_BFu1s()
{
  {
    init_simple_test("BFs1i_BFu1i_BFu1s");
    static STRUCT_IF_C BFs1i_BFu1i_BFu1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1i_BFu1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1i_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1i_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1i_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1i_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1i_BFu1s, BFs1i_BFu1i_BFu1s)
//============================================================================


struct  BFs1i_BFu1i_BFu1s_BFs1c  {
  signed int v1:1;
  unsigned int v2:1;
  unsigned short v3:1;
  signed char v4:1;
};
//SIG(1 BFs1i_BFu1i_BFu1s_BFs1c) C1{ Fi:1 Fi:1 Fs:1 Fc:1}



static void Test_BFs1i_BFu1i_BFu1s_BFs1c()
{
  {
    init_simple_test("BFs1i_BFu1i_BFu1s_BFs1c");
    static STRUCT_IF_C BFs1i_BFu1i_BFu1s_BFs1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1i_BFu1s_BFs1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1i_BFu1s_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1i_BFu1s_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1i_BFu1s_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1i_BFu1s_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1i_BFu1s_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1i_BFu1s_BFs1c, BFs1i_BFu1i_BFu1s_BFs1c)
//============================================================================


struct  BFs1i_BFu1i_BFu1s_BFs1i  {
  signed int v1:1;
  unsigned int v2:1;
  unsigned short v3:1;
  signed int v4:1;
};
//SIG(1 BFs1i_BFu1i_BFu1s_BFs1i) C1{ Fi:1 Fi:1 Fs:1 Fi:1}



static void Test_BFs1i_BFu1i_BFu1s_BFs1i()
{
  {
    init_simple_test("BFs1i_BFu1i_BFu1s_BFs1i");
    static STRUCT_IF_C BFs1i_BFu1i_BFu1s_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1i_BFu1s_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1i_BFu1s_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1i_BFu1s_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1i_BFu1s_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1i_BFu1s_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1i_BFu1s_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1i_BFu1s_BFs1i, BFs1i_BFu1i_BFu1s_BFs1i)
//============================================================================


struct  BFs1i_BFu1i_BFu1s_BFs1ll  {
  signed int v1:1;
  unsigned int v2:1;
  unsigned short v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1i_BFu1i_BFu1s_BFs1ll) C1{ Fi:1 Fi:1 Fs:1 FL:1}



static void Test_BFs1i_BFu1i_BFu1s_BFs1ll()
{
  {
    init_simple_test("BFs1i_BFu1i_BFu1s_BFs1ll");
    static STRUCT_IF_C BFs1i_BFu1i_BFu1s_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1i_BFu1s_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1i_BFu1s_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1i_BFu1s_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1i_BFu1s_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1i_BFu1s_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1i_BFu1s_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1i_BFu1s_BFs1ll, BFs1i_BFu1i_BFu1s_BFs1ll)
//============================================================================


struct  BFs1i_BFu1i_BFu1s_BFs1s  {
  signed int v1:1;
  unsigned int v2:1;
  unsigned short v3:1;
  signed short v4:1;
};
//SIG(1 BFs1i_BFu1i_BFu1s_BFs1s) C1{ Fi:1 Fi:1 Fs:1 Fs:1}



static void Test_BFs1i_BFu1i_BFu1s_BFs1s()
{
  {
    init_simple_test("BFs1i_BFu1i_BFu1s_BFs1s");
    static STRUCT_IF_C BFs1i_BFu1i_BFu1s_BFs1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1i_BFu1s_BFs1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1i_BFu1s_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1i_BFu1s_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1i_BFu1s_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1i_BFu1s_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1i_BFu1s_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1i_BFu1s_BFs1s, BFs1i_BFu1i_BFu1s_BFs1s)
//============================================================================


struct  BFs1i_BFu1i_BFu1s_BFu1c  {
  signed int v1:1;
  unsigned int v2:1;
  unsigned short v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1i_BFu1i_BFu1s_BFu1c) C1{ Fi:1 Fi:1 Fs:1 Fc:1}



static void Test_BFs1i_BFu1i_BFu1s_BFu1c()
{
  {
    init_simple_test("BFs1i_BFu1i_BFu1s_BFu1c");
    static STRUCT_IF_C BFs1i_BFu1i_BFu1s_BFu1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1i_BFu1s_BFu1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1i_BFu1s_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1i_BFu1s_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1i_BFu1s_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1i_BFu1s_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1i_BFu1s_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1i_BFu1s_BFu1c, BFs1i_BFu1i_BFu1s_BFu1c)
//============================================================================


struct  BFs1i_BFu1i_BFu1s_BFu1i  {
  signed int v1:1;
  unsigned int v2:1;
  unsigned short v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1i_BFu1i_BFu1s_BFu1i) C1{ Fi:1 Fi:1 Fs:1 Fi:1}



static void Test_BFs1i_BFu1i_BFu1s_BFu1i()
{
  {
    init_simple_test("BFs1i_BFu1i_BFu1s_BFu1i");
    static STRUCT_IF_C BFs1i_BFu1i_BFu1s_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1i_BFu1s_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1i_BFu1s_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1i_BFu1s_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1i_BFu1s_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1i_BFu1s_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1i_BFu1s_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1i_BFu1s_BFu1i, BFs1i_BFu1i_BFu1s_BFu1i)
//============================================================================


struct  BFs1i_BFu1i_BFu1s_BFu1ll  {
  signed int v1:1;
  unsigned int v2:1;
  unsigned short v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1i_BFu1i_BFu1s_BFu1ll) C1{ Fi:1 Fi:1 Fs:1 FL:1}



static void Test_BFs1i_BFu1i_BFu1s_BFu1ll()
{
  {
    init_simple_test("BFs1i_BFu1i_BFu1s_BFu1ll");
    static STRUCT_IF_C BFs1i_BFu1i_BFu1s_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1i_BFu1s_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1i_BFu1s_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1i_BFu1s_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1i_BFu1s_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1i_BFu1s_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1i_BFu1s_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1i_BFu1s_BFu1ll, BFs1i_BFu1i_BFu1s_BFu1ll)
//============================================================================


struct  BFs1i_BFu1i_BFu1s_BFu1s  {
  signed int v1:1;
  unsigned int v2:1;
  unsigned short v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1i_BFu1i_BFu1s_BFu1s) C1{ Fi:1 Fi:1 Fs:1 Fs:1}



static void Test_BFs1i_BFu1i_BFu1s_BFu1s()
{
  {
    init_simple_test("BFs1i_BFu1i_BFu1s_BFu1s");
    static STRUCT_IF_C BFs1i_BFu1i_BFu1s_BFu1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1i_BFu1s_BFu1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1i_BFu1s_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1i_BFu1s_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1i_BFu1s_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1i_BFu1s_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1i_BFu1s_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1i_BFu1s_BFu1s, BFs1i_BFu1i_BFu1s_BFu1s)
//============================================================================


struct  BFs1i_BFu1ll  {
  signed int v1:1;
  __tsu64 v2:1;
};
//SIG(1 BFs1i_BFu1ll) C1{ Fi:1 FL:1}



static void Test_BFs1i_BFu1ll()
{
  {
    init_simple_test("BFs1i_BFu1ll");
    static STRUCT_IF_C BFs1i_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1ll, BFs1i_BFu1ll)
//============================================================================


struct  BFs1i_BFu1ll_BFs1c  {
  signed int v1:1;
  __tsu64 v2:1;
  signed char v3:1;
};
//SIG(1 BFs1i_BFu1ll_BFs1c) C1{ Fi:1 FL:1 Fc:1}



static void Test_BFs1i_BFu1ll_BFs1c()
{
  {
    init_simple_test("BFs1i_BFu1ll_BFs1c");
    static STRUCT_IF_C BFs1i_BFu1ll_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1ll_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1ll_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1ll_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1ll_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1ll_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1ll_BFs1c, BFs1i_BFu1ll_BFs1c)
//============================================================================


struct  BFs1i_BFu1ll_BFs1c_BFs1c  {
  signed int v1:1;
  __tsu64 v2:1;
  signed char v3:1;
  signed char v4:1;
};
//SIG(1 BFs1i_BFu1ll_BFs1c_BFs1c) C1{ Fi:1 FL:1 Fc:1 Fc:1}



static void Test_BFs1i_BFu1ll_BFs1c_BFs1c()
{
  {
    init_simple_test("BFs1i_BFu1ll_BFs1c_BFs1c");
    static STRUCT_IF_C BFs1i_BFu1ll_BFs1c_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1ll_BFs1c_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1ll_BFs1c_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1ll_BFs1c_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1ll_BFs1c_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1ll_BFs1c_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1ll_BFs1c_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1ll_BFs1c_BFs1c, BFs1i_BFu1ll_BFs1c_BFs1c)
//============================================================================


struct  BFs1i_BFu1ll_BFs1c_BFs1i  {
  signed int v1:1;
  __tsu64 v2:1;
  signed char v3:1;
  signed int v4:1;
};
//SIG(1 BFs1i_BFu1ll_BFs1c_BFs1i) C1{ Fi:1 FL:1 Fc:1 Fi:1}



static void Test_BFs1i_BFu1ll_BFs1c_BFs1i()
{
  {
    init_simple_test("BFs1i_BFu1ll_BFs1c_BFs1i");
    static STRUCT_IF_C BFs1i_BFu1ll_BFs1c_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1ll_BFs1c_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1ll_BFs1c_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1ll_BFs1c_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1ll_BFs1c_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1ll_BFs1c_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1ll_BFs1c_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1ll_BFs1c_BFs1i, BFs1i_BFu1ll_BFs1c_BFs1i)
//============================================================================


struct  BFs1i_BFu1ll_BFs1c_BFs1ll  {
  signed int v1:1;
  __tsu64 v2:1;
  signed char v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1i_BFu1ll_BFs1c_BFs1ll) C1{ Fi:1 FL:1 Fc:1 FL:1}



static void Test_BFs1i_BFu1ll_BFs1c_BFs1ll()
{
  {
    init_simple_test("BFs1i_BFu1ll_BFs1c_BFs1ll");
    static STRUCT_IF_C BFs1i_BFu1ll_BFs1c_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1ll_BFs1c_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1ll_BFs1c_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1ll_BFs1c_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1ll_BFs1c_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1ll_BFs1c_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1ll_BFs1c_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1ll_BFs1c_BFs1ll, BFs1i_BFu1ll_BFs1c_BFs1ll)
//============================================================================


struct  BFs1i_BFu1ll_BFs1c_BFs1s  {
  signed int v1:1;
  __tsu64 v2:1;
  signed char v3:1;
  signed short v4:1;
};
//SIG(1 BFs1i_BFu1ll_BFs1c_BFs1s) C1{ Fi:1 FL:1 Fc:1 Fs:1}



static void Test_BFs1i_BFu1ll_BFs1c_BFs1s()
{
  {
    init_simple_test("BFs1i_BFu1ll_BFs1c_BFs1s");
    static STRUCT_IF_C BFs1i_BFu1ll_BFs1c_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1ll_BFs1c_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1ll_BFs1c_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1ll_BFs1c_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1ll_BFs1c_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1ll_BFs1c_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1ll_BFs1c_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1ll_BFs1c_BFs1s, BFs1i_BFu1ll_BFs1c_BFs1s)
//============================================================================


struct  BFs1i_BFu1ll_BFs1c_BFu1c  {
  signed int v1:1;
  __tsu64 v2:1;
  signed char v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1i_BFu1ll_BFs1c_BFu1c) C1{ Fi:1 FL:1 Fc:1 Fc:1}



static void Test_BFs1i_BFu1ll_BFs1c_BFu1c()
{
  {
    init_simple_test("BFs1i_BFu1ll_BFs1c_BFu1c");
    static STRUCT_IF_C BFs1i_BFu1ll_BFs1c_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1ll_BFs1c_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1ll_BFs1c_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1ll_BFs1c_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1ll_BFs1c_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1ll_BFs1c_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1ll_BFs1c_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1ll_BFs1c_BFu1c, BFs1i_BFu1ll_BFs1c_BFu1c)
//============================================================================


struct  BFs1i_BFu1ll_BFs1c_BFu1i  {
  signed int v1:1;
  __tsu64 v2:1;
  signed char v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1i_BFu1ll_BFs1c_BFu1i) C1{ Fi:1 FL:1 Fc:1 Fi:1}



static void Test_BFs1i_BFu1ll_BFs1c_BFu1i()
{
  {
    init_simple_test("BFs1i_BFu1ll_BFs1c_BFu1i");
    static STRUCT_IF_C BFs1i_BFu1ll_BFs1c_BFu1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1ll_BFs1c_BFu1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1ll_BFs1c_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1ll_BFs1c_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1ll_BFs1c_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1ll_BFs1c_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1ll_BFs1c_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1ll_BFs1c_BFu1i, BFs1i_BFu1ll_BFs1c_BFu1i)
//============================================================================


struct  BFs1i_BFu1ll_BFs1c_BFu1ll  {
  signed int v1:1;
  __tsu64 v2:1;
  signed char v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1i_BFu1ll_BFs1c_BFu1ll) C1{ Fi:1 FL:1 Fc:1 FL:1}



static void Test_BFs1i_BFu1ll_BFs1c_BFu1ll()
{
  {
    init_simple_test("BFs1i_BFu1ll_BFs1c_BFu1ll");
    static STRUCT_IF_C BFs1i_BFu1ll_BFs1c_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1ll_BFs1c_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1ll_BFs1c_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1ll_BFs1c_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1ll_BFs1c_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1ll_BFs1c_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1ll_BFs1c_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1ll_BFs1c_BFu1ll, BFs1i_BFu1ll_BFs1c_BFu1ll)
//============================================================================


struct  BFs1i_BFu1ll_BFs1c_BFu1s  {
  signed int v1:1;
  __tsu64 v2:1;
  signed char v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1i_BFu1ll_BFs1c_BFu1s) C1{ Fi:1 FL:1 Fc:1 Fs:1}



static void Test_BFs1i_BFu1ll_BFs1c_BFu1s()
{
  {
    init_simple_test("BFs1i_BFu1ll_BFs1c_BFu1s");
    static STRUCT_IF_C BFs1i_BFu1ll_BFs1c_BFu1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1ll_BFs1c_BFu1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1ll_BFs1c_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1ll_BFs1c_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1ll_BFs1c_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1ll_BFs1c_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1ll_BFs1c_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1ll_BFs1c_BFu1s, BFs1i_BFu1ll_BFs1c_BFu1s)
//============================================================================


struct  BFs1i_BFu1ll_BFs1i  {
  signed int v1:1;
  __tsu64 v2:1;
  signed int v3:1;
};
//SIG(1 BFs1i_BFu1ll_BFs1i) C1{ Fi:1 FL:1 Fi:1}



static void Test_BFs1i_BFu1ll_BFs1i()
{
  {
    init_simple_test("BFs1i_BFu1ll_BFs1i");
    static STRUCT_IF_C BFs1i_BFu1ll_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1ll_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1ll_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1ll_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1ll_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1ll_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1ll_BFs1i, BFs1i_BFu1ll_BFs1i)
//============================================================================


struct  BFs1i_BFu1ll_BFs1i_BFs1c  {
  signed int v1:1;
  __tsu64 v2:1;
  signed int v3:1;
  signed char v4:1;
};
//SIG(1 BFs1i_BFu1ll_BFs1i_BFs1c) C1{ Fi:1 FL:1 Fi:1 Fc:1}



static void Test_BFs1i_BFu1ll_BFs1i_BFs1c()
{
  {
    init_simple_test("BFs1i_BFu1ll_BFs1i_BFs1c");
    static STRUCT_IF_C BFs1i_BFu1ll_BFs1i_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1ll_BFs1i_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1ll_BFs1i_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1ll_BFs1i_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1ll_BFs1i_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1ll_BFs1i_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1ll_BFs1i_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1ll_BFs1i_BFs1c, BFs1i_BFu1ll_BFs1i_BFs1c)
//============================================================================


struct  BFs1i_BFu1ll_BFs1i_BFs1i  {
  signed int v1:1;
  __tsu64 v2:1;
  signed int v3:1;
  signed int v4:1;
};
//SIG(1 BFs1i_BFu1ll_BFs1i_BFs1i) C1{ Fi:1 FL:1 Fi:1 Fi:1}



static void Test_BFs1i_BFu1ll_BFs1i_BFs1i()
{
  {
    init_simple_test("BFs1i_BFu1ll_BFs1i_BFs1i");
    static STRUCT_IF_C BFs1i_BFu1ll_BFs1i_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1ll_BFs1i_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1ll_BFs1i_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1ll_BFs1i_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1ll_BFs1i_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1ll_BFs1i_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1ll_BFs1i_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1ll_BFs1i_BFs1i, BFs1i_BFu1ll_BFs1i_BFs1i)
//============================================================================


struct  BFs1i_BFu1ll_BFs1i_BFs1ll  {
  signed int v1:1;
  __tsu64 v2:1;
  signed int v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1i_BFu1ll_BFs1i_BFs1ll) C1{ Fi:1 FL:1 Fi:1 FL:1}



static void Test_BFs1i_BFu1ll_BFs1i_BFs1ll()
{
  {
    init_simple_test("BFs1i_BFu1ll_BFs1i_BFs1ll");
    static STRUCT_IF_C BFs1i_BFu1ll_BFs1i_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1ll_BFs1i_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1ll_BFs1i_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1ll_BFs1i_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1ll_BFs1i_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1ll_BFs1i_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1ll_BFs1i_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1ll_BFs1i_BFs1ll, BFs1i_BFu1ll_BFs1i_BFs1ll)
//============================================================================


struct  BFs1i_BFu1ll_BFs1i_BFs1s  {
  signed int v1:1;
  __tsu64 v2:1;
  signed int v3:1;
  signed short v4:1;
};
//SIG(1 BFs1i_BFu1ll_BFs1i_BFs1s) C1{ Fi:1 FL:1 Fi:1 Fs:1}



static void Test_BFs1i_BFu1ll_BFs1i_BFs1s()
{
  {
    init_simple_test("BFs1i_BFu1ll_BFs1i_BFs1s");
    static STRUCT_IF_C BFs1i_BFu1ll_BFs1i_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1ll_BFs1i_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1ll_BFs1i_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1ll_BFs1i_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1ll_BFs1i_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1ll_BFs1i_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1ll_BFs1i_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1ll_BFs1i_BFs1s, BFs1i_BFu1ll_BFs1i_BFs1s)
//============================================================================


struct  BFs1i_BFu1ll_BFs1i_BFu1c  {
  signed int v1:1;
  __tsu64 v2:1;
  signed int v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1i_BFu1ll_BFs1i_BFu1c) C1{ Fi:1 FL:1 Fi:1 Fc:1}



static void Test_BFs1i_BFu1ll_BFs1i_BFu1c()
{
  {
    init_simple_test("BFs1i_BFu1ll_BFs1i_BFu1c");
    static STRUCT_IF_C BFs1i_BFu1ll_BFs1i_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1ll_BFs1i_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1ll_BFs1i_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1ll_BFs1i_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1ll_BFs1i_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1ll_BFs1i_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1ll_BFs1i_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1ll_BFs1i_BFu1c, BFs1i_BFu1ll_BFs1i_BFu1c)
//============================================================================


struct  BFs1i_BFu1ll_BFs1i_BFu1i  {
  signed int v1:1;
  __tsu64 v2:1;
  signed int v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1i_BFu1ll_BFs1i_BFu1i) C1{ Fi:1 FL:1 Fi:1 Fi:1}



static void Test_BFs1i_BFu1ll_BFs1i_BFu1i()
{
  {
    init_simple_test("BFs1i_BFu1ll_BFs1i_BFu1i");
    static STRUCT_IF_C BFs1i_BFu1ll_BFs1i_BFu1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1ll_BFs1i_BFu1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1ll_BFs1i_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1ll_BFs1i_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1ll_BFs1i_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1ll_BFs1i_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1ll_BFs1i_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1ll_BFs1i_BFu1i, BFs1i_BFu1ll_BFs1i_BFu1i)
//============================================================================


struct  BFs1i_BFu1ll_BFs1i_BFu1ll  {
  signed int v1:1;
  __tsu64 v2:1;
  signed int v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1i_BFu1ll_BFs1i_BFu1ll) C1{ Fi:1 FL:1 Fi:1 FL:1}



static void Test_BFs1i_BFu1ll_BFs1i_BFu1ll()
{
  {
    init_simple_test("BFs1i_BFu1ll_BFs1i_BFu1ll");
    static STRUCT_IF_C BFs1i_BFu1ll_BFs1i_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1ll_BFs1i_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1ll_BFs1i_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1ll_BFs1i_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1ll_BFs1i_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1ll_BFs1i_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1ll_BFs1i_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1ll_BFs1i_BFu1ll, BFs1i_BFu1ll_BFs1i_BFu1ll)
//============================================================================


struct  BFs1i_BFu1ll_BFs1i_BFu1s  {
  signed int v1:1;
  __tsu64 v2:1;
  signed int v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1i_BFu1ll_BFs1i_BFu1s) C1{ Fi:1 FL:1 Fi:1 Fs:1}



static void Test_BFs1i_BFu1ll_BFs1i_BFu1s()
{
  {
    init_simple_test("BFs1i_BFu1ll_BFs1i_BFu1s");
    static STRUCT_IF_C BFs1i_BFu1ll_BFs1i_BFu1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1ll_BFs1i_BFu1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1ll_BFs1i_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1ll_BFs1i_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1ll_BFs1i_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1ll_BFs1i_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1ll_BFs1i_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1ll_BFs1i_BFu1s, BFs1i_BFu1ll_BFs1i_BFu1s)
//============================================================================


struct  BFs1i_BFu1ll_BFs1ll  {
  signed int v1:1;
  __tsu64 v2:1;
  signed __tsi64 v3:1;
};
//SIG(1 BFs1i_BFu1ll_BFs1ll) C1{ Fi:1 FL:1 FL:1}



static void Test_BFs1i_BFu1ll_BFs1ll()
{
  {
    init_simple_test("BFs1i_BFu1ll_BFs1ll");
    static STRUCT_IF_C BFs1i_BFu1ll_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1ll_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1ll_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1ll_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1ll_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1ll_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1ll_BFs1ll, BFs1i_BFu1ll_BFs1ll)
//============================================================================


struct  BFs1i_BFu1ll_BFs1ll_BFs1c  {
  signed int v1:1;
  __tsu64 v2:1;
  signed __tsi64 v3:1;
  signed char v4:1;
};
//SIG(1 BFs1i_BFu1ll_BFs1ll_BFs1c) C1{ Fi:1 FL:1 FL:1 Fc:1}



static void Test_BFs1i_BFu1ll_BFs1ll_BFs1c()
{
  {
    init_simple_test("BFs1i_BFu1ll_BFs1ll_BFs1c");
    static STRUCT_IF_C BFs1i_BFu1ll_BFs1ll_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1ll_BFs1ll_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1ll_BFs1ll_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1ll_BFs1ll_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1ll_BFs1ll_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1ll_BFs1ll_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1ll_BFs1ll_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1ll_BFs1ll_BFs1c, BFs1i_BFu1ll_BFs1ll_BFs1c)
//============================================================================


struct  BFs1i_BFu1ll_BFs1ll_BFs1i  {
  signed int v1:1;
  __tsu64 v2:1;
  signed __tsi64 v3:1;
  signed int v4:1;
};
//SIG(1 BFs1i_BFu1ll_BFs1ll_BFs1i) C1{ Fi:1 FL:1 FL:1 Fi:1}



static void Test_BFs1i_BFu1ll_BFs1ll_BFs1i()
{
  {
    init_simple_test("BFs1i_BFu1ll_BFs1ll_BFs1i");
    static STRUCT_IF_C BFs1i_BFu1ll_BFs1ll_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1ll_BFs1ll_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1ll_BFs1ll_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1ll_BFs1ll_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1ll_BFs1ll_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1ll_BFs1ll_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1ll_BFs1ll_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1ll_BFs1ll_BFs1i, BFs1i_BFu1ll_BFs1ll_BFs1i)
//============================================================================


struct  BFs1i_BFu1ll_BFs1ll_BFs1ll  {
  signed int v1:1;
  __tsu64 v2:1;
  signed __tsi64 v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1i_BFu1ll_BFs1ll_BFs1ll) C1{ Fi:1 FL:1 FL:1 FL:1}



static void Test_BFs1i_BFu1ll_BFs1ll_BFs1ll()
{
  {
    init_simple_test("BFs1i_BFu1ll_BFs1ll_BFs1ll");
    static STRUCT_IF_C BFs1i_BFu1ll_BFs1ll_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1ll_BFs1ll_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1ll_BFs1ll_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1ll_BFs1ll_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1ll_BFs1ll_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1ll_BFs1ll_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1ll_BFs1ll_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1ll_BFs1ll_BFs1ll, BFs1i_BFu1ll_BFs1ll_BFs1ll)
//============================================================================


struct  BFs1i_BFu1ll_BFs1ll_BFs1s  {
  signed int v1:1;
  __tsu64 v2:1;
  signed __tsi64 v3:1;
  signed short v4:1;
};
//SIG(1 BFs1i_BFu1ll_BFs1ll_BFs1s) C1{ Fi:1 FL:1 FL:1 Fs:1}



static void Test_BFs1i_BFu1ll_BFs1ll_BFs1s()
{
  {
    init_simple_test("BFs1i_BFu1ll_BFs1ll_BFs1s");
    static STRUCT_IF_C BFs1i_BFu1ll_BFs1ll_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1ll_BFs1ll_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1ll_BFs1ll_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1ll_BFs1ll_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1ll_BFs1ll_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1ll_BFs1ll_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1ll_BFs1ll_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1ll_BFs1ll_BFs1s, BFs1i_BFu1ll_BFs1ll_BFs1s)
//============================================================================


struct  BFs1i_BFu1ll_BFs1ll_BFu1c  {
  signed int v1:1;
  __tsu64 v2:1;
  signed __tsi64 v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1i_BFu1ll_BFs1ll_BFu1c) C1{ Fi:1 FL:1 FL:1 Fc:1}



static void Test_BFs1i_BFu1ll_BFs1ll_BFu1c()
{
  {
    init_simple_test("BFs1i_BFu1ll_BFs1ll_BFu1c");
    static STRUCT_IF_C BFs1i_BFu1ll_BFs1ll_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1ll_BFs1ll_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1ll_BFs1ll_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1ll_BFs1ll_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1ll_BFs1ll_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1ll_BFs1ll_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1ll_BFs1ll_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1ll_BFs1ll_BFu1c, BFs1i_BFu1ll_BFs1ll_BFu1c)
//============================================================================


struct  BFs1i_BFu1ll_BFs1ll_BFu1i  {
  signed int v1:1;
  __tsu64 v2:1;
  signed __tsi64 v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1i_BFu1ll_BFs1ll_BFu1i) C1{ Fi:1 FL:1 FL:1 Fi:1}



static void Test_BFs1i_BFu1ll_BFs1ll_BFu1i()
{
  {
    init_simple_test("BFs1i_BFu1ll_BFs1ll_BFu1i");
    static STRUCT_IF_C BFs1i_BFu1ll_BFs1ll_BFu1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1ll_BFs1ll_BFu1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1ll_BFs1ll_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1ll_BFs1ll_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1ll_BFs1ll_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1ll_BFs1ll_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1ll_BFs1ll_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1ll_BFs1ll_BFu1i, BFs1i_BFu1ll_BFs1ll_BFu1i)
//============================================================================


struct  BFs1i_BFu1ll_BFs1ll_BFu1ll  {
  signed int v1:1;
  __tsu64 v2:1;
  signed __tsi64 v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1i_BFu1ll_BFs1ll_BFu1ll) C1{ Fi:1 FL:1 FL:1 FL:1}



static void Test_BFs1i_BFu1ll_BFs1ll_BFu1ll()
{
  {
    init_simple_test("BFs1i_BFu1ll_BFs1ll_BFu1ll");
    static STRUCT_IF_C BFs1i_BFu1ll_BFs1ll_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1ll_BFs1ll_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1ll_BFs1ll_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1ll_BFs1ll_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1ll_BFs1ll_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1ll_BFs1ll_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1ll_BFs1ll_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1ll_BFs1ll_BFu1ll, BFs1i_BFu1ll_BFs1ll_BFu1ll)
//============================================================================


struct  BFs1i_BFu1ll_BFs1ll_BFu1s  {
  signed int v1:1;
  __tsu64 v2:1;
  signed __tsi64 v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1i_BFu1ll_BFs1ll_BFu1s) C1{ Fi:1 FL:1 FL:1 Fs:1}



static void Test_BFs1i_BFu1ll_BFs1ll_BFu1s()
{
  {
    init_simple_test("BFs1i_BFu1ll_BFs1ll_BFu1s");
    static STRUCT_IF_C BFs1i_BFu1ll_BFs1ll_BFu1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1ll_BFs1ll_BFu1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1ll_BFs1ll_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1ll_BFs1ll_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1ll_BFs1ll_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1ll_BFs1ll_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1ll_BFs1ll_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1ll_BFs1ll_BFu1s, BFs1i_BFu1ll_BFs1ll_BFu1s)
//============================================================================


struct  BFs1i_BFu1ll_BFs1s  {
  signed int v1:1;
  __tsu64 v2:1;
  signed short v3:1;
};
//SIG(1 BFs1i_BFu1ll_BFs1s) C1{ Fi:1 FL:1 Fs:1}



static void Test_BFs1i_BFu1ll_BFs1s()
{
  {
    init_simple_test("BFs1i_BFu1ll_BFs1s");
    static STRUCT_IF_C BFs1i_BFu1ll_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1ll_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1ll_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1ll_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1ll_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1ll_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1ll_BFs1s, BFs1i_BFu1ll_BFs1s)
//============================================================================


struct  BFs1i_BFu1ll_BFs1s_BFs1c  {
  signed int v1:1;
  __tsu64 v2:1;
  signed short v3:1;
  signed char v4:1;
};
//SIG(1 BFs1i_BFu1ll_BFs1s_BFs1c) C1{ Fi:1 FL:1 Fs:1 Fc:1}



static void Test_BFs1i_BFu1ll_BFs1s_BFs1c()
{
  {
    init_simple_test("BFs1i_BFu1ll_BFs1s_BFs1c");
    static STRUCT_IF_C BFs1i_BFu1ll_BFs1s_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1ll_BFs1s_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1ll_BFs1s_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1ll_BFs1s_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1ll_BFs1s_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1ll_BFs1s_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1ll_BFs1s_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1ll_BFs1s_BFs1c, BFs1i_BFu1ll_BFs1s_BFs1c)
//============================================================================


struct  BFs1i_BFu1ll_BFs1s_BFs1i  {
  signed int v1:1;
  __tsu64 v2:1;
  signed short v3:1;
  signed int v4:1;
};
//SIG(1 BFs1i_BFu1ll_BFs1s_BFs1i) C1{ Fi:1 FL:1 Fs:1 Fi:1}



static void Test_BFs1i_BFu1ll_BFs1s_BFs1i()
{
  {
    init_simple_test("BFs1i_BFu1ll_BFs1s_BFs1i");
    static STRUCT_IF_C BFs1i_BFu1ll_BFs1s_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1ll_BFs1s_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1ll_BFs1s_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1ll_BFs1s_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1ll_BFs1s_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1ll_BFs1s_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1ll_BFs1s_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1ll_BFs1s_BFs1i, BFs1i_BFu1ll_BFs1s_BFs1i)
//============================================================================


struct  BFs1i_BFu1ll_BFs1s_BFs1ll  {
  signed int v1:1;
  __tsu64 v2:1;
  signed short v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1i_BFu1ll_BFs1s_BFs1ll) C1{ Fi:1 FL:1 Fs:1 FL:1}



static void Test_BFs1i_BFu1ll_BFs1s_BFs1ll()
{
  {
    init_simple_test("BFs1i_BFu1ll_BFs1s_BFs1ll");
    static STRUCT_IF_C BFs1i_BFu1ll_BFs1s_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1ll_BFs1s_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1ll_BFs1s_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1ll_BFs1s_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1ll_BFs1s_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1ll_BFs1s_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1ll_BFs1s_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1ll_BFs1s_BFs1ll, BFs1i_BFu1ll_BFs1s_BFs1ll)
//============================================================================


struct  BFs1i_BFu1ll_BFs1s_BFs1s  {
  signed int v1:1;
  __tsu64 v2:1;
  signed short v3:1;
  signed short v4:1;
};
//SIG(1 BFs1i_BFu1ll_BFs1s_BFs1s) C1{ Fi:1 FL:1 Fs:1 Fs:1}



static void Test_BFs1i_BFu1ll_BFs1s_BFs1s()
{
  {
    init_simple_test("BFs1i_BFu1ll_BFs1s_BFs1s");
    static STRUCT_IF_C BFs1i_BFu1ll_BFs1s_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1ll_BFs1s_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1ll_BFs1s_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1ll_BFs1s_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1ll_BFs1s_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1ll_BFs1s_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1ll_BFs1s_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1ll_BFs1s_BFs1s, BFs1i_BFu1ll_BFs1s_BFs1s)
//============================================================================


struct  BFs1i_BFu1ll_BFs1s_BFu1c  {
  signed int v1:1;
  __tsu64 v2:1;
  signed short v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1i_BFu1ll_BFs1s_BFu1c) C1{ Fi:1 FL:1 Fs:1 Fc:1}



static void Test_BFs1i_BFu1ll_BFs1s_BFu1c()
{
  {
    init_simple_test("BFs1i_BFu1ll_BFs1s_BFu1c");
    static STRUCT_IF_C BFs1i_BFu1ll_BFs1s_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1ll_BFs1s_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1ll_BFs1s_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1ll_BFs1s_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1ll_BFs1s_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1ll_BFs1s_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1ll_BFs1s_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1ll_BFs1s_BFu1c, BFs1i_BFu1ll_BFs1s_BFu1c)
//============================================================================


struct  BFs1i_BFu1ll_BFs1s_BFu1i  {
  signed int v1:1;
  __tsu64 v2:1;
  signed short v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1i_BFu1ll_BFs1s_BFu1i) C1{ Fi:1 FL:1 Fs:1 Fi:1}



static void Test_BFs1i_BFu1ll_BFs1s_BFu1i()
{
  {
    init_simple_test("BFs1i_BFu1ll_BFs1s_BFu1i");
    static STRUCT_IF_C BFs1i_BFu1ll_BFs1s_BFu1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1ll_BFs1s_BFu1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1ll_BFs1s_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1ll_BFs1s_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1ll_BFs1s_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1ll_BFs1s_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1ll_BFs1s_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1ll_BFs1s_BFu1i, BFs1i_BFu1ll_BFs1s_BFu1i)
//============================================================================


struct  BFs1i_BFu1ll_BFs1s_BFu1ll  {
  signed int v1:1;
  __tsu64 v2:1;
  signed short v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1i_BFu1ll_BFs1s_BFu1ll) C1{ Fi:1 FL:1 Fs:1 FL:1}



static void Test_BFs1i_BFu1ll_BFs1s_BFu1ll()
{
  {
    init_simple_test("BFs1i_BFu1ll_BFs1s_BFu1ll");
    static STRUCT_IF_C BFs1i_BFu1ll_BFs1s_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1ll_BFs1s_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1ll_BFs1s_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1ll_BFs1s_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1ll_BFs1s_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1ll_BFs1s_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1ll_BFs1s_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1ll_BFs1s_BFu1ll, BFs1i_BFu1ll_BFs1s_BFu1ll)
//============================================================================


struct  BFs1i_BFu1ll_BFs1s_BFu1s  {
  signed int v1:1;
  __tsu64 v2:1;
  signed short v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1i_BFu1ll_BFs1s_BFu1s) C1{ Fi:1 FL:1 Fs:1 Fs:1}



static void Test_BFs1i_BFu1ll_BFs1s_BFu1s()
{
  {
    init_simple_test("BFs1i_BFu1ll_BFs1s_BFu1s");
    static STRUCT_IF_C BFs1i_BFu1ll_BFs1s_BFu1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1ll_BFs1s_BFu1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1ll_BFs1s_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1ll_BFs1s_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1ll_BFs1s_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1ll_BFs1s_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1ll_BFs1s_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1ll_BFs1s_BFu1s, BFs1i_BFu1ll_BFs1s_BFu1s)
//============================================================================


struct  BFs1i_BFu1ll_BFu1c  {
  signed int v1:1;
  __tsu64 v2:1;
  unsigned char v3:1;
};
//SIG(1 BFs1i_BFu1ll_BFu1c) C1{ Fi:1 FL:1 Fc:1}



static void Test_BFs1i_BFu1ll_BFu1c()
{
  {
    init_simple_test("BFs1i_BFu1ll_BFu1c");
    static STRUCT_IF_C BFs1i_BFu1ll_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1ll_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1ll_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1ll_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1ll_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1ll_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1ll_BFu1c, BFs1i_BFu1ll_BFu1c)
//============================================================================


struct  BFs1i_BFu1ll_BFu1c_BFs1c  {
  signed int v1:1;
  __tsu64 v2:1;
  unsigned char v3:1;
  signed char v4:1;
};
//SIG(1 BFs1i_BFu1ll_BFu1c_BFs1c) C1{ Fi:1 FL:1 Fc:1 Fc:1}



static void Test_BFs1i_BFu1ll_BFu1c_BFs1c()
{
  {
    init_simple_test("BFs1i_BFu1ll_BFu1c_BFs1c");
    static STRUCT_IF_C BFs1i_BFu1ll_BFu1c_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1ll_BFu1c_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1ll_BFu1c_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1ll_BFu1c_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1ll_BFu1c_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1ll_BFu1c_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1ll_BFu1c_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1ll_BFu1c_BFs1c, BFs1i_BFu1ll_BFu1c_BFs1c)
//============================================================================


struct  BFs1i_BFu1ll_BFu1c_BFs1i  {
  signed int v1:1;
  __tsu64 v2:1;
  unsigned char v3:1;
  signed int v4:1;
};
//SIG(1 BFs1i_BFu1ll_BFu1c_BFs1i) C1{ Fi:1 FL:1 Fc:1 Fi:1}



static void Test_BFs1i_BFu1ll_BFu1c_BFs1i()
{
  {
    init_simple_test("BFs1i_BFu1ll_BFu1c_BFs1i");
    static STRUCT_IF_C BFs1i_BFu1ll_BFu1c_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1ll_BFu1c_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1ll_BFu1c_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1ll_BFu1c_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1ll_BFu1c_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1ll_BFu1c_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1ll_BFu1c_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1ll_BFu1c_BFs1i, BFs1i_BFu1ll_BFu1c_BFs1i)
//============================================================================


struct  BFs1i_BFu1ll_BFu1c_BFs1ll  {
  signed int v1:1;
  __tsu64 v2:1;
  unsigned char v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1i_BFu1ll_BFu1c_BFs1ll) C1{ Fi:1 FL:1 Fc:1 FL:1}



static void Test_BFs1i_BFu1ll_BFu1c_BFs1ll()
{
  {
    init_simple_test("BFs1i_BFu1ll_BFu1c_BFs1ll");
    static STRUCT_IF_C BFs1i_BFu1ll_BFu1c_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1ll_BFu1c_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1ll_BFu1c_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1ll_BFu1c_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1ll_BFu1c_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1ll_BFu1c_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1ll_BFu1c_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1ll_BFu1c_BFs1ll, BFs1i_BFu1ll_BFu1c_BFs1ll)
//============================================================================


struct  BFs1i_BFu1ll_BFu1c_BFs1s  {
  signed int v1:1;
  __tsu64 v2:1;
  unsigned char v3:1;
  signed short v4:1;
};
//SIG(1 BFs1i_BFu1ll_BFu1c_BFs1s) C1{ Fi:1 FL:1 Fc:1 Fs:1}



static void Test_BFs1i_BFu1ll_BFu1c_BFs1s()
{
  {
    init_simple_test("BFs1i_BFu1ll_BFu1c_BFs1s");
    static STRUCT_IF_C BFs1i_BFu1ll_BFu1c_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1ll_BFu1c_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1ll_BFu1c_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1ll_BFu1c_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1ll_BFu1c_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1ll_BFu1c_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1ll_BFu1c_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1ll_BFu1c_BFs1s, BFs1i_BFu1ll_BFu1c_BFs1s)
//============================================================================


struct  BFs1i_BFu1ll_BFu1c_BFu1c  {
  signed int v1:1;
  __tsu64 v2:1;
  unsigned char v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1i_BFu1ll_BFu1c_BFu1c) C1{ Fi:1 FL:1 Fc:1 Fc:1}



static void Test_BFs1i_BFu1ll_BFu1c_BFu1c()
{
  {
    init_simple_test("BFs1i_BFu1ll_BFu1c_BFu1c");
    static STRUCT_IF_C BFs1i_BFu1ll_BFu1c_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1ll_BFu1c_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1ll_BFu1c_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1ll_BFu1c_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1ll_BFu1c_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1ll_BFu1c_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1ll_BFu1c_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1ll_BFu1c_BFu1c, BFs1i_BFu1ll_BFu1c_BFu1c)
//============================================================================


struct  BFs1i_BFu1ll_BFu1c_BFu1i  {
  signed int v1:1;
  __tsu64 v2:1;
  unsigned char v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1i_BFu1ll_BFu1c_BFu1i) C1{ Fi:1 FL:1 Fc:1 Fi:1}



static void Test_BFs1i_BFu1ll_BFu1c_BFu1i()
{
  {
    init_simple_test("BFs1i_BFu1ll_BFu1c_BFu1i");
    static STRUCT_IF_C BFs1i_BFu1ll_BFu1c_BFu1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1ll_BFu1c_BFu1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1ll_BFu1c_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1ll_BFu1c_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1ll_BFu1c_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1ll_BFu1c_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1ll_BFu1c_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1ll_BFu1c_BFu1i, BFs1i_BFu1ll_BFu1c_BFu1i)
//============================================================================


struct  BFs1i_BFu1ll_BFu1c_BFu1ll  {
  signed int v1:1;
  __tsu64 v2:1;
  unsigned char v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1i_BFu1ll_BFu1c_BFu1ll) C1{ Fi:1 FL:1 Fc:1 FL:1}



static void Test_BFs1i_BFu1ll_BFu1c_BFu1ll()
{
  {
    init_simple_test("BFs1i_BFu1ll_BFu1c_BFu1ll");
    static STRUCT_IF_C BFs1i_BFu1ll_BFu1c_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1ll_BFu1c_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1ll_BFu1c_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1ll_BFu1c_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1ll_BFu1c_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1ll_BFu1c_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1ll_BFu1c_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1ll_BFu1c_BFu1ll, BFs1i_BFu1ll_BFu1c_BFu1ll)
//============================================================================


struct  BFs1i_BFu1ll_BFu1c_BFu1s  {
  signed int v1:1;
  __tsu64 v2:1;
  unsigned char v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1i_BFu1ll_BFu1c_BFu1s) C1{ Fi:1 FL:1 Fc:1 Fs:1}



static void Test_BFs1i_BFu1ll_BFu1c_BFu1s()
{
  {
    init_simple_test("BFs1i_BFu1ll_BFu1c_BFu1s");
    static STRUCT_IF_C BFs1i_BFu1ll_BFu1c_BFu1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1ll_BFu1c_BFu1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1ll_BFu1c_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1ll_BFu1c_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1ll_BFu1c_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1ll_BFu1c_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1ll_BFu1c_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1ll_BFu1c_BFu1s, BFs1i_BFu1ll_BFu1c_BFu1s)
//============================================================================


struct  BFs1i_BFu1ll_BFu1i  {
  signed int v1:1;
  __tsu64 v2:1;
  unsigned int v3:1;
};
//SIG(1 BFs1i_BFu1ll_BFu1i) C1{ Fi:1 FL:1 Fi:1}



static void Test_BFs1i_BFu1ll_BFu1i()
{
  {
    init_simple_test("BFs1i_BFu1ll_BFu1i");
    static STRUCT_IF_C BFs1i_BFu1ll_BFu1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1ll_BFu1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1ll_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1ll_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1ll_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1ll_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1ll_BFu1i, BFs1i_BFu1ll_BFu1i)
//============================================================================


struct  BFs1i_BFu1ll_BFu1i_BFs1c  {
  signed int v1:1;
  __tsu64 v2:1;
  unsigned int v3:1;
  signed char v4:1;
};
//SIG(1 BFs1i_BFu1ll_BFu1i_BFs1c) C1{ Fi:1 FL:1 Fi:1 Fc:1}



static void Test_BFs1i_BFu1ll_BFu1i_BFs1c()
{
  {
    init_simple_test("BFs1i_BFu1ll_BFu1i_BFs1c");
    static STRUCT_IF_C BFs1i_BFu1ll_BFu1i_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1ll_BFu1i_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1ll_BFu1i_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1ll_BFu1i_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1ll_BFu1i_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1ll_BFu1i_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1ll_BFu1i_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1ll_BFu1i_BFs1c, BFs1i_BFu1ll_BFu1i_BFs1c)
//============================================================================


struct  BFs1i_BFu1ll_BFu1i_BFs1i  {
  signed int v1:1;
  __tsu64 v2:1;
  unsigned int v3:1;
  signed int v4:1;
};
//SIG(1 BFs1i_BFu1ll_BFu1i_BFs1i) C1{ Fi:1 FL:1 Fi:1 Fi:1}



static void Test_BFs1i_BFu1ll_BFu1i_BFs1i()
{
  {
    init_simple_test("BFs1i_BFu1ll_BFu1i_BFs1i");
    static STRUCT_IF_C BFs1i_BFu1ll_BFu1i_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1ll_BFu1i_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1ll_BFu1i_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1ll_BFu1i_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1ll_BFu1i_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1ll_BFu1i_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1ll_BFu1i_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1ll_BFu1i_BFs1i, BFs1i_BFu1ll_BFu1i_BFs1i)
//============================================================================


struct  BFs1i_BFu1ll_BFu1i_BFs1ll  {
  signed int v1:1;
  __tsu64 v2:1;
  unsigned int v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1i_BFu1ll_BFu1i_BFs1ll) C1{ Fi:1 FL:1 Fi:1 FL:1}



static void Test_BFs1i_BFu1ll_BFu1i_BFs1ll()
{
  {
    init_simple_test("BFs1i_BFu1ll_BFu1i_BFs1ll");
    static STRUCT_IF_C BFs1i_BFu1ll_BFu1i_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1ll_BFu1i_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1ll_BFu1i_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1ll_BFu1i_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1ll_BFu1i_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1ll_BFu1i_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1ll_BFu1i_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1ll_BFu1i_BFs1ll, BFs1i_BFu1ll_BFu1i_BFs1ll)
//============================================================================


struct  BFs1i_BFu1ll_BFu1i_BFs1s  {
  signed int v1:1;
  __tsu64 v2:1;
  unsigned int v3:1;
  signed short v4:1;
};
//SIG(1 BFs1i_BFu1ll_BFu1i_BFs1s) C1{ Fi:1 FL:1 Fi:1 Fs:1}



static void Test_BFs1i_BFu1ll_BFu1i_BFs1s()
{
  {
    init_simple_test("BFs1i_BFu1ll_BFu1i_BFs1s");
    static STRUCT_IF_C BFs1i_BFu1ll_BFu1i_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1ll_BFu1i_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1ll_BFu1i_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1ll_BFu1i_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1ll_BFu1i_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1ll_BFu1i_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1ll_BFu1i_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1ll_BFu1i_BFs1s, BFs1i_BFu1ll_BFu1i_BFs1s)
//============================================================================


struct  BFs1i_BFu1ll_BFu1i_BFu1c  {
  signed int v1:1;
  __tsu64 v2:1;
  unsigned int v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1i_BFu1ll_BFu1i_BFu1c) C1{ Fi:1 FL:1 Fi:1 Fc:1}



static void Test_BFs1i_BFu1ll_BFu1i_BFu1c()
{
  {
    init_simple_test("BFs1i_BFu1ll_BFu1i_BFu1c");
    static STRUCT_IF_C BFs1i_BFu1ll_BFu1i_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1ll_BFu1i_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1ll_BFu1i_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1ll_BFu1i_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1ll_BFu1i_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1ll_BFu1i_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1ll_BFu1i_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1ll_BFu1i_BFu1c, BFs1i_BFu1ll_BFu1i_BFu1c)
//============================================================================


struct  BFs1i_BFu1ll_BFu1i_BFu1i  {
  signed int v1:1;
  __tsu64 v2:1;
  unsigned int v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1i_BFu1ll_BFu1i_BFu1i) C1{ Fi:1 FL:1 Fi:1 Fi:1}



static void Test_BFs1i_BFu1ll_BFu1i_BFu1i()
{
  {
    init_simple_test("BFs1i_BFu1ll_BFu1i_BFu1i");
    static STRUCT_IF_C BFs1i_BFu1ll_BFu1i_BFu1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1ll_BFu1i_BFu1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1ll_BFu1i_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1ll_BFu1i_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1ll_BFu1i_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1ll_BFu1i_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1ll_BFu1i_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1ll_BFu1i_BFu1i, BFs1i_BFu1ll_BFu1i_BFu1i)
//============================================================================


struct  BFs1i_BFu1ll_BFu1i_BFu1ll  {
  signed int v1:1;
  __tsu64 v2:1;
  unsigned int v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1i_BFu1ll_BFu1i_BFu1ll) C1{ Fi:1 FL:1 Fi:1 FL:1}



static void Test_BFs1i_BFu1ll_BFu1i_BFu1ll()
{
  {
    init_simple_test("BFs1i_BFu1ll_BFu1i_BFu1ll");
    static STRUCT_IF_C BFs1i_BFu1ll_BFu1i_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1ll_BFu1i_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1ll_BFu1i_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1ll_BFu1i_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1ll_BFu1i_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1ll_BFu1i_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1ll_BFu1i_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1ll_BFu1i_BFu1ll, BFs1i_BFu1ll_BFu1i_BFu1ll)
//============================================================================


struct  BFs1i_BFu1ll_BFu1i_BFu1s  {
  signed int v1:1;
  __tsu64 v2:1;
  unsigned int v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1i_BFu1ll_BFu1i_BFu1s) C1{ Fi:1 FL:1 Fi:1 Fs:1}



static void Test_BFs1i_BFu1ll_BFu1i_BFu1s()
{
  {
    init_simple_test("BFs1i_BFu1ll_BFu1i_BFu1s");
    static STRUCT_IF_C BFs1i_BFu1ll_BFu1i_BFu1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1ll_BFu1i_BFu1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1ll_BFu1i_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1ll_BFu1i_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1ll_BFu1i_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1ll_BFu1i_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1ll_BFu1i_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1ll_BFu1i_BFu1s, BFs1i_BFu1ll_BFu1i_BFu1s)
//============================================================================


struct  BFs1i_BFu1ll_BFu1ll  {
  signed int v1:1;
  __tsu64 v2:1;
  __tsu64 v3:1;
};
//SIG(1 BFs1i_BFu1ll_BFu1ll) C1{ Fi:1 FL:1 FL:1}



static void Test_BFs1i_BFu1ll_BFu1ll()
{
  {
    init_simple_test("BFs1i_BFu1ll_BFu1ll");
    static STRUCT_IF_C BFs1i_BFu1ll_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1ll_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1ll_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1ll_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1ll_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1ll_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1ll_BFu1ll, BFs1i_BFu1ll_BFu1ll)
//============================================================================


struct  BFs1i_BFu1ll_BFu1ll_BFs1c  {
  signed int v1:1;
  __tsu64 v2:1;
  __tsu64 v3:1;
  signed char v4:1;
};
//SIG(1 BFs1i_BFu1ll_BFu1ll_BFs1c) C1{ Fi:1 FL:1 FL:1 Fc:1}



static void Test_BFs1i_BFu1ll_BFu1ll_BFs1c()
{
  {
    init_simple_test("BFs1i_BFu1ll_BFu1ll_BFs1c");
    static STRUCT_IF_C BFs1i_BFu1ll_BFu1ll_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1ll_BFu1ll_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1ll_BFu1ll_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1ll_BFu1ll_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1ll_BFu1ll_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1ll_BFu1ll_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1ll_BFu1ll_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1ll_BFu1ll_BFs1c, BFs1i_BFu1ll_BFu1ll_BFs1c)
//============================================================================


struct  BFs1i_BFu1ll_BFu1ll_BFs1i  {
  signed int v1:1;
  __tsu64 v2:1;
  __tsu64 v3:1;
  signed int v4:1;
};
//SIG(1 BFs1i_BFu1ll_BFu1ll_BFs1i) C1{ Fi:1 FL:1 FL:1 Fi:1}



static void Test_BFs1i_BFu1ll_BFu1ll_BFs1i()
{
  {
    init_simple_test("BFs1i_BFu1ll_BFu1ll_BFs1i");
    static STRUCT_IF_C BFs1i_BFu1ll_BFu1ll_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1ll_BFu1ll_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1ll_BFu1ll_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1ll_BFu1ll_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1ll_BFu1ll_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1ll_BFu1ll_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1ll_BFu1ll_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1ll_BFu1ll_BFs1i, BFs1i_BFu1ll_BFu1ll_BFs1i)
//============================================================================


struct  BFs1i_BFu1ll_BFu1ll_BFs1ll  {
  signed int v1:1;
  __tsu64 v2:1;
  __tsu64 v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1i_BFu1ll_BFu1ll_BFs1ll) C1{ Fi:1 FL:1 FL:1 FL:1}



static void Test_BFs1i_BFu1ll_BFu1ll_BFs1ll()
{
  {
    init_simple_test("BFs1i_BFu1ll_BFu1ll_BFs1ll");
    static STRUCT_IF_C BFs1i_BFu1ll_BFu1ll_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1ll_BFu1ll_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1ll_BFu1ll_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1ll_BFu1ll_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1ll_BFu1ll_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1ll_BFu1ll_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1ll_BFu1ll_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1ll_BFu1ll_BFs1ll, BFs1i_BFu1ll_BFu1ll_BFs1ll)
//============================================================================


struct  BFs1i_BFu1ll_BFu1ll_BFs1s  {
  signed int v1:1;
  __tsu64 v2:1;
  __tsu64 v3:1;
  signed short v4:1;
};
//SIG(1 BFs1i_BFu1ll_BFu1ll_BFs1s) C1{ Fi:1 FL:1 FL:1 Fs:1}



static void Test_BFs1i_BFu1ll_BFu1ll_BFs1s()
{
  {
    init_simple_test("BFs1i_BFu1ll_BFu1ll_BFs1s");
    static STRUCT_IF_C BFs1i_BFu1ll_BFu1ll_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1ll_BFu1ll_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1ll_BFu1ll_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1ll_BFu1ll_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1ll_BFu1ll_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1ll_BFu1ll_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1ll_BFu1ll_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1ll_BFu1ll_BFs1s, BFs1i_BFu1ll_BFu1ll_BFs1s)
//============================================================================


struct  BFs1i_BFu1ll_BFu1ll_BFu1c  {
  signed int v1:1;
  __tsu64 v2:1;
  __tsu64 v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1i_BFu1ll_BFu1ll_BFu1c) C1{ Fi:1 FL:1 FL:1 Fc:1}



static void Test_BFs1i_BFu1ll_BFu1ll_BFu1c()
{
  {
    init_simple_test("BFs1i_BFu1ll_BFu1ll_BFu1c");
    static STRUCT_IF_C BFs1i_BFu1ll_BFu1ll_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1ll_BFu1ll_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1ll_BFu1ll_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1ll_BFu1ll_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1ll_BFu1ll_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1ll_BFu1ll_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1ll_BFu1ll_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1ll_BFu1ll_BFu1c, BFs1i_BFu1ll_BFu1ll_BFu1c)
//============================================================================


struct  BFs1i_BFu1ll_BFu1ll_BFu1i  {
  signed int v1:1;
  __tsu64 v2:1;
  __tsu64 v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1i_BFu1ll_BFu1ll_BFu1i) C1{ Fi:1 FL:1 FL:1 Fi:1}



static void Test_BFs1i_BFu1ll_BFu1ll_BFu1i()
{
  {
    init_simple_test("BFs1i_BFu1ll_BFu1ll_BFu1i");
    static STRUCT_IF_C BFs1i_BFu1ll_BFu1ll_BFu1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1ll_BFu1ll_BFu1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1ll_BFu1ll_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1ll_BFu1ll_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1ll_BFu1ll_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1ll_BFu1ll_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1ll_BFu1ll_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1ll_BFu1ll_BFu1i, BFs1i_BFu1ll_BFu1ll_BFu1i)
//============================================================================


struct  BFs1i_BFu1ll_BFu1ll_BFu1ll  {
  signed int v1:1;
  __tsu64 v2:1;
  __tsu64 v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1i_BFu1ll_BFu1ll_BFu1ll) C1{ Fi:1 FL:1 FL:1 FL:1}



static void Test_BFs1i_BFu1ll_BFu1ll_BFu1ll()
{
  {
    init_simple_test("BFs1i_BFu1ll_BFu1ll_BFu1ll");
    static STRUCT_IF_C BFs1i_BFu1ll_BFu1ll_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1ll_BFu1ll_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1ll_BFu1ll_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1ll_BFu1ll_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1ll_BFu1ll_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1ll_BFu1ll_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1ll_BFu1ll_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1ll_BFu1ll_BFu1ll, BFs1i_BFu1ll_BFu1ll_BFu1ll)
//============================================================================


struct  BFs1i_BFu1ll_BFu1ll_BFu1s  {
  signed int v1:1;
  __tsu64 v2:1;
  __tsu64 v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1i_BFu1ll_BFu1ll_BFu1s) C1{ Fi:1 FL:1 FL:1 Fs:1}



static void Test_BFs1i_BFu1ll_BFu1ll_BFu1s()
{
  {
    init_simple_test("BFs1i_BFu1ll_BFu1ll_BFu1s");
    static STRUCT_IF_C BFs1i_BFu1ll_BFu1ll_BFu1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1ll_BFu1ll_BFu1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1ll_BFu1ll_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1ll_BFu1ll_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1ll_BFu1ll_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1ll_BFu1ll_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1ll_BFu1ll_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1ll_BFu1ll_BFu1s, BFs1i_BFu1ll_BFu1ll_BFu1s)
//============================================================================


struct  BFs1i_BFu1ll_BFu1s  {
  signed int v1:1;
  __tsu64 v2:1;
  unsigned short v3:1;
};
//SIG(1 BFs1i_BFu1ll_BFu1s) C1{ Fi:1 FL:1 Fs:1}



static void Test_BFs1i_BFu1ll_BFu1s()
{
  {
    init_simple_test("BFs1i_BFu1ll_BFu1s");
    static STRUCT_IF_C BFs1i_BFu1ll_BFu1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1ll_BFu1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1ll_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1ll_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1ll_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1ll_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1ll_BFu1s, BFs1i_BFu1ll_BFu1s)
//============================================================================


struct  BFs1i_BFu1ll_BFu1s_BFs1c  {
  signed int v1:1;
  __tsu64 v2:1;
  unsigned short v3:1;
  signed char v4:1;
};
//SIG(1 BFs1i_BFu1ll_BFu1s_BFs1c) C1{ Fi:1 FL:1 Fs:1 Fc:1}



static void Test_BFs1i_BFu1ll_BFu1s_BFs1c()
{
  {
    init_simple_test("BFs1i_BFu1ll_BFu1s_BFs1c");
    static STRUCT_IF_C BFs1i_BFu1ll_BFu1s_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1ll_BFu1s_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1ll_BFu1s_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1ll_BFu1s_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1ll_BFu1s_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1ll_BFu1s_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1ll_BFu1s_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1ll_BFu1s_BFs1c, BFs1i_BFu1ll_BFu1s_BFs1c)
//============================================================================


struct  BFs1i_BFu1ll_BFu1s_BFs1i  {
  signed int v1:1;
  __tsu64 v2:1;
  unsigned short v3:1;
  signed int v4:1;
};
//SIG(1 BFs1i_BFu1ll_BFu1s_BFs1i) C1{ Fi:1 FL:1 Fs:1 Fi:1}



static void Test_BFs1i_BFu1ll_BFu1s_BFs1i()
{
  {
    init_simple_test("BFs1i_BFu1ll_BFu1s_BFs1i");
    static STRUCT_IF_C BFs1i_BFu1ll_BFu1s_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1ll_BFu1s_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1ll_BFu1s_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1ll_BFu1s_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1ll_BFu1s_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1ll_BFu1s_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1ll_BFu1s_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1ll_BFu1s_BFs1i, BFs1i_BFu1ll_BFu1s_BFs1i)
//============================================================================


struct  BFs1i_BFu1ll_BFu1s_BFs1ll  {
  signed int v1:1;
  __tsu64 v2:1;
  unsigned short v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1i_BFu1ll_BFu1s_BFs1ll) C1{ Fi:1 FL:1 Fs:1 FL:1}



static void Test_BFs1i_BFu1ll_BFu1s_BFs1ll()
{
  {
    init_simple_test("BFs1i_BFu1ll_BFu1s_BFs1ll");
    static STRUCT_IF_C BFs1i_BFu1ll_BFu1s_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1ll_BFu1s_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1ll_BFu1s_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1ll_BFu1s_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1ll_BFu1s_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1ll_BFu1s_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1ll_BFu1s_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1ll_BFu1s_BFs1ll, BFs1i_BFu1ll_BFu1s_BFs1ll)
//============================================================================


struct  BFs1i_BFu1ll_BFu1s_BFs1s  {
  signed int v1:1;
  __tsu64 v2:1;
  unsigned short v3:1;
  signed short v4:1;
};
//SIG(1 BFs1i_BFu1ll_BFu1s_BFs1s) C1{ Fi:1 FL:1 Fs:1 Fs:1}



static void Test_BFs1i_BFu1ll_BFu1s_BFs1s()
{
  {
    init_simple_test("BFs1i_BFu1ll_BFu1s_BFs1s");
    static STRUCT_IF_C BFs1i_BFu1ll_BFu1s_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1ll_BFu1s_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1ll_BFu1s_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1ll_BFu1s_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1ll_BFu1s_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1ll_BFu1s_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1ll_BFu1s_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1ll_BFu1s_BFs1s, BFs1i_BFu1ll_BFu1s_BFs1s)
//============================================================================


struct  BFs1i_BFu1ll_BFu1s_BFu1c  {
  signed int v1:1;
  __tsu64 v2:1;
  unsigned short v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1i_BFu1ll_BFu1s_BFu1c) C1{ Fi:1 FL:1 Fs:1 Fc:1}



static void Test_BFs1i_BFu1ll_BFu1s_BFu1c()
{
  {
    init_simple_test("BFs1i_BFu1ll_BFu1s_BFu1c");
    static STRUCT_IF_C BFs1i_BFu1ll_BFu1s_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1ll_BFu1s_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1ll_BFu1s_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1ll_BFu1s_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1ll_BFu1s_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1ll_BFu1s_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1ll_BFu1s_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1ll_BFu1s_BFu1c, BFs1i_BFu1ll_BFu1s_BFu1c)
//============================================================================


struct  BFs1i_BFu1ll_BFu1s_BFu1i  {
  signed int v1:1;
  __tsu64 v2:1;
  unsigned short v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1i_BFu1ll_BFu1s_BFu1i) C1{ Fi:1 FL:1 Fs:1 Fi:1}



static void Test_BFs1i_BFu1ll_BFu1s_BFu1i()
{
  {
    init_simple_test("BFs1i_BFu1ll_BFu1s_BFu1i");
    static STRUCT_IF_C BFs1i_BFu1ll_BFu1s_BFu1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1ll_BFu1s_BFu1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1ll_BFu1s_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1ll_BFu1s_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1ll_BFu1s_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1ll_BFu1s_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1ll_BFu1s_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1ll_BFu1s_BFu1i, BFs1i_BFu1ll_BFu1s_BFu1i)
//============================================================================


struct  BFs1i_BFu1ll_BFu1s_BFu1ll  {
  signed int v1:1;
  __tsu64 v2:1;
  unsigned short v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1i_BFu1ll_BFu1s_BFu1ll) C1{ Fi:1 FL:1 Fs:1 FL:1}



static void Test_BFs1i_BFu1ll_BFu1s_BFu1ll()
{
  {
    init_simple_test("BFs1i_BFu1ll_BFu1s_BFu1ll");
    static STRUCT_IF_C BFs1i_BFu1ll_BFu1s_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1ll_BFu1s_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1ll_BFu1s_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1ll_BFu1s_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1ll_BFu1s_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1ll_BFu1s_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1ll_BFu1s_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1ll_BFu1s_BFu1ll, BFs1i_BFu1ll_BFu1s_BFu1ll)
//============================================================================


struct  BFs1i_BFu1ll_BFu1s_BFu1s  {
  signed int v1:1;
  __tsu64 v2:1;
  unsigned short v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1i_BFu1ll_BFu1s_BFu1s) C1{ Fi:1 FL:1 Fs:1 Fs:1}



static void Test_BFs1i_BFu1ll_BFu1s_BFu1s()
{
  {
    init_simple_test("BFs1i_BFu1ll_BFu1s_BFu1s");
    static STRUCT_IF_C BFs1i_BFu1ll_BFu1s_BFu1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1ll_BFu1s_BFu1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1ll_BFu1s_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1ll_BFu1s_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1ll_BFu1s_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1ll_BFu1s_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1ll_BFu1s_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1ll_BFu1s_BFu1s, BFs1i_BFu1ll_BFu1s_BFu1s)
//============================================================================


struct  BFs1i_BFu1s  {
  signed int v1:1;
  unsigned short v2:1;
};
//SIG(1 BFs1i_BFu1s) C1{ Fi:1 Fs:1}



static void Test_BFs1i_BFu1s()
{
  {
    init_simple_test("BFs1i_BFu1s");
    static STRUCT_IF_C BFs1i_BFu1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1s, BFs1i_BFu1s)
//============================================================================


struct  BFs1i_BFu1s_BFs1c  {
  signed int v1:1;
  unsigned short v2:1;
  signed char v3:1;
};
//SIG(1 BFs1i_BFu1s_BFs1c) C1{ Fi:1 Fs:1 Fc:1}



static void Test_BFs1i_BFu1s_BFs1c()
{
  {
    init_simple_test("BFs1i_BFu1s_BFs1c");
    static STRUCT_IF_C BFs1i_BFu1s_BFs1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1s_BFs1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1s_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1s_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1s_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1s_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1s_BFs1c, BFs1i_BFu1s_BFs1c)
//============================================================================


struct  BFs1i_BFu1s_BFs1c_BFs1c  {
  signed int v1:1;
  unsigned short v2:1;
  signed char v3:1;
  signed char v4:1;
};
//SIG(1 BFs1i_BFu1s_BFs1c_BFs1c) C1{ Fi:1 Fs:1 Fc:1 Fc:1}



static void Test_BFs1i_BFu1s_BFs1c_BFs1c()
{
  {
    init_simple_test("BFs1i_BFu1s_BFs1c_BFs1c");
    static STRUCT_IF_C BFs1i_BFu1s_BFs1c_BFs1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1s_BFs1c_BFs1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1s_BFs1c_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1s_BFs1c_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1s_BFs1c_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1s_BFs1c_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1s_BFs1c_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1s_BFs1c_BFs1c, BFs1i_BFu1s_BFs1c_BFs1c)
//============================================================================


struct  BFs1i_BFu1s_BFs1c_BFs1i  {
  signed int v1:1;
  unsigned short v2:1;
  signed char v3:1;
  signed int v4:1;
};
//SIG(1 BFs1i_BFu1s_BFs1c_BFs1i) C1{ Fi:1 Fs:1 Fc:1 Fi:1}



static void Test_BFs1i_BFu1s_BFs1c_BFs1i()
{
  {
    init_simple_test("BFs1i_BFu1s_BFs1c_BFs1i");
    static STRUCT_IF_C BFs1i_BFu1s_BFs1c_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1s_BFs1c_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1s_BFs1c_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1s_BFs1c_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1s_BFs1c_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1s_BFs1c_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1s_BFs1c_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1s_BFs1c_BFs1i, BFs1i_BFu1s_BFs1c_BFs1i)
//============================================================================


struct  BFs1i_BFu1s_BFs1c_BFs1ll  {
  signed int v1:1;
  unsigned short v2:1;
  signed char v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1i_BFu1s_BFs1c_BFs1ll) C1{ Fi:1 Fs:1 Fc:1 FL:1}



static void Test_BFs1i_BFu1s_BFs1c_BFs1ll()
{
  {
    init_simple_test("BFs1i_BFu1s_BFs1c_BFs1ll");
    static STRUCT_IF_C BFs1i_BFu1s_BFs1c_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1s_BFs1c_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1s_BFs1c_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1s_BFs1c_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1s_BFs1c_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1s_BFs1c_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1s_BFs1c_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1s_BFs1c_BFs1ll, BFs1i_BFu1s_BFs1c_BFs1ll)
//============================================================================


struct  BFs1i_BFu1s_BFs1c_BFs1s  {
  signed int v1:1;
  unsigned short v2:1;
  signed char v3:1;
  signed short v4:1;
};
//SIG(1 BFs1i_BFu1s_BFs1c_BFs1s) C1{ Fi:1 Fs:1 Fc:1 Fs:1}



static void Test_BFs1i_BFu1s_BFs1c_BFs1s()
{
  {
    init_simple_test("BFs1i_BFu1s_BFs1c_BFs1s");
    static STRUCT_IF_C BFs1i_BFu1s_BFs1c_BFs1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1s_BFs1c_BFs1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1s_BFs1c_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1s_BFs1c_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1s_BFs1c_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1s_BFs1c_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1s_BFs1c_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1s_BFs1c_BFs1s, BFs1i_BFu1s_BFs1c_BFs1s)
//============================================================================


struct  BFs1i_BFu1s_BFs1c_BFu1c  {
  signed int v1:1;
  unsigned short v2:1;
  signed char v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1i_BFu1s_BFs1c_BFu1c) C1{ Fi:1 Fs:1 Fc:1 Fc:1}



static void Test_BFs1i_BFu1s_BFs1c_BFu1c()
{
  {
    init_simple_test("BFs1i_BFu1s_BFs1c_BFu1c");
    static STRUCT_IF_C BFs1i_BFu1s_BFs1c_BFu1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1s_BFs1c_BFu1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1s_BFs1c_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1s_BFs1c_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1s_BFs1c_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1s_BFs1c_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1s_BFs1c_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1s_BFs1c_BFu1c, BFs1i_BFu1s_BFs1c_BFu1c)
//============================================================================


struct  BFs1i_BFu1s_BFs1c_BFu1i  {
  signed int v1:1;
  unsigned short v2:1;
  signed char v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1i_BFu1s_BFs1c_BFu1i) C1{ Fi:1 Fs:1 Fc:1 Fi:1}



static void Test_BFs1i_BFu1s_BFs1c_BFu1i()
{
  {
    init_simple_test("BFs1i_BFu1s_BFs1c_BFu1i");
    static STRUCT_IF_C BFs1i_BFu1s_BFs1c_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1s_BFs1c_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1s_BFs1c_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1s_BFs1c_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1s_BFs1c_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1s_BFs1c_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1s_BFs1c_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1s_BFs1c_BFu1i, BFs1i_BFu1s_BFs1c_BFu1i)
//============================================================================


struct  BFs1i_BFu1s_BFs1c_BFu1ll  {
  signed int v1:1;
  unsigned short v2:1;
  signed char v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1i_BFu1s_BFs1c_BFu1ll) C1{ Fi:1 Fs:1 Fc:1 FL:1}



static void Test_BFs1i_BFu1s_BFs1c_BFu1ll()
{
  {
    init_simple_test("BFs1i_BFu1s_BFs1c_BFu1ll");
    static STRUCT_IF_C BFs1i_BFu1s_BFs1c_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1s_BFs1c_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1s_BFs1c_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1s_BFs1c_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1s_BFs1c_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1s_BFs1c_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1s_BFs1c_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1s_BFs1c_BFu1ll, BFs1i_BFu1s_BFs1c_BFu1ll)
//============================================================================


struct  BFs1i_BFu1s_BFs1c_BFu1s  {
  signed int v1:1;
  unsigned short v2:1;
  signed char v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1i_BFu1s_BFs1c_BFu1s) C1{ Fi:1 Fs:1 Fc:1 Fs:1}



static void Test_BFs1i_BFu1s_BFs1c_BFu1s()
{
  {
    init_simple_test("BFs1i_BFu1s_BFs1c_BFu1s");
    static STRUCT_IF_C BFs1i_BFu1s_BFs1c_BFu1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1s_BFs1c_BFu1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1s_BFs1c_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1s_BFs1c_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1s_BFs1c_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1s_BFs1c_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1s_BFs1c_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1s_BFs1c_BFu1s, BFs1i_BFu1s_BFs1c_BFu1s)
//============================================================================


struct  BFs1i_BFu1s_BFs1i  {
  signed int v1:1;
  unsigned short v2:1;
  signed int v3:1;
};
//SIG(1 BFs1i_BFu1s_BFs1i) C1{ Fi:1 Fs:1 Fi:1}



static void Test_BFs1i_BFu1s_BFs1i()
{
  {
    init_simple_test("BFs1i_BFu1s_BFs1i");
    static STRUCT_IF_C BFs1i_BFu1s_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1s_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1s_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1s_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1s_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1s_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1s_BFs1i, BFs1i_BFu1s_BFs1i)
//============================================================================


struct  BFs1i_BFu1s_BFs1i_BFs1c  {
  signed int v1:1;
  unsigned short v2:1;
  signed int v3:1;
  signed char v4:1;
};
//SIG(1 BFs1i_BFu1s_BFs1i_BFs1c) C1{ Fi:1 Fs:1 Fi:1 Fc:1}



static void Test_BFs1i_BFu1s_BFs1i_BFs1c()
{
  {
    init_simple_test("BFs1i_BFu1s_BFs1i_BFs1c");
    static STRUCT_IF_C BFs1i_BFu1s_BFs1i_BFs1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1s_BFs1i_BFs1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1s_BFs1i_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1s_BFs1i_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1s_BFs1i_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1s_BFs1i_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1s_BFs1i_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1s_BFs1i_BFs1c, BFs1i_BFu1s_BFs1i_BFs1c)
//============================================================================


struct  BFs1i_BFu1s_BFs1i_BFs1i  {
  signed int v1:1;
  unsigned short v2:1;
  signed int v3:1;
  signed int v4:1;
};
//SIG(1 BFs1i_BFu1s_BFs1i_BFs1i) C1{ Fi:1 Fs:1 Fi:1 Fi:1}



static void Test_BFs1i_BFu1s_BFs1i_BFs1i()
{
  {
    init_simple_test("BFs1i_BFu1s_BFs1i_BFs1i");
    static STRUCT_IF_C BFs1i_BFu1s_BFs1i_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1s_BFs1i_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1s_BFs1i_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1s_BFs1i_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1s_BFs1i_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1s_BFs1i_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1s_BFs1i_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1s_BFs1i_BFs1i, BFs1i_BFu1s_BFs1i_BFs1i)
//============================================================================


struct  BFs1i_BFu1s_BFs1i_BFs1ll  {
  signed int v1:1;
  unsigned short v2:1;
  signed int v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1i_BFu1s_BFs1i_BFs1ll) C1{ Fi:1 Fs:1 Fi:1 FL:1}



static void Test_BFs1i_BFu1s_BFs1i_BFs1ll()
{
  {
    init_simple_test("BFs1i_BFu1s_BFs1i_BFs1ll");
    static STRUCT_IF_C BFs1i_BFu1s_BFs1i_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1s_BFs1i_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1s_BFs1i_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1s_BFs1i_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1s_BFs1i_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1s_BFs1i_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1s_BFs1i_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1s_BFs1i_BFs1ll, BFs1i_BFu1s_BFs1i_BFs1ll)
//============================================================================


struct  BFs1i_BFu1s_BFs1i_BFs1s  {
  signed int v1:1;
  unsigned short v2:1;
  signed int v3:1;
  signed short v4:1;
};
//SIG(1 BFs1i_BFu1s_BFs1i_BFs1s) C1{ Fi:1 Fs:1 Fi:1 Fs:1}



static void Test_BFs1i_BFu1s_BFs1i_BFs1s()
{
  {
    init_simple_test("BFs1i_BFu1s_BFs1i_BFs1s");
    static STRUCT_IF_C BFs1i_BFu1s_BFs1i_BFs1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1s_BFs1i_BFs1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1s_BFs1i_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1s_BFs1i_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1s_BFs1i_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1s_BFs1i_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1s_BFs1i_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1s_BFs1i_BFs1s, BFs1i_BFu1s_BFs1i_BFs1s)
//============================================================================


struct  BFs1i_BFu1s_BFs1i_BFu1c  {
  signed int v1:1;
  unsigned short v2:1;
  signed int v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1i_BFu1s_BFs1i_BFu1c) C1{ Fi:1 Fs:1 Fi:1 Fc:1}



static void Test_BFs1i_BFu1s_BFs1i_BFu1c()
{
  {
    init_simple_test("BFs1i_BFu1s_BFs1i_BFu1c");
    static STRUCT_IF_C BFs1i_BFu1s_BFs1i_BFu1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1s_BFs1i_BFu1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1s_BFs1i_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1s_BFs1i_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1s_BFs1i_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1s_BFs1i_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1s_BFs1i_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1s_BFs1i_BFu1c, BFs1i_BFu1s_BFs1i_BFu1c)
//============================================================================


struct  BFs1i_BFu1s_BFs1i_BFu1i  {
  signed int v1:1;
  unsigned short v2:1;
  signed int v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1i_BFu1s_BFs1i_BFu1i) C1{ Fi:1 Fs:1 Fi:1 Fi:1}



static void Test_BFs1i_BFu1s_BFs1i_BFu1i()
{
  {
    init_simple_test("BFs1i_BFu1s_BFs1i_BFu1i");
    static STRUCT_IF_C BFs1i_BFu1s_BFs1i_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1s_BFs1i_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1s_BFs1i_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1s_BFs1i_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1s_BFs1i_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1s_BFs1i_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1s_BFs1i_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1s_BFs1i_BFu1i, BFs1i_BFu1s_BFs1i_BFu1i)
//============================================================================


struct  BFs1i_BFu1s_BFs1i_BFu1ll  {
  signed int v1:1;
  unsigned short v2:1;
  signed int v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1i_BFu1s_BFs1i_BFu1ll) C1{ Fi:1 Fs:1 Fi:1 FL:1}



static void Test_BFs1i_BFu1s_BFs1i_BFu1ll()
{
  {
    init_simple_test("BFs1i_BFu1s_BFs1i_BFu1ll");
    static STRUCT_IF_C BFs1i_BFu1s_BFs1i_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1s_BFs1i_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1s_BFs1i_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1s_BFs1i_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1s_BFs1i_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1s_BFs1i_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1s_BFs1i_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1s_BFs1i_BFu1ll, BFs1i_BFu1s_BFs1i_BFu1ll)
//============================================================================


struct  BFs1i_BFu1s_BFs1i_BFu1s  {
  signed int v1:1;
  unsigned short v2:1;
  signed int v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1i_BFu1s_BFs1i_BFu1s) C1{ Fi:1 Fs:1 Fi:1 Fs:1}



static void Test_BFs1i_BFu1s_BFs1i_BFu1s()
{
  {
    init_simple_test("BFs1i_BFu1s_BFs1i_BFu1s");
    static STRUCT_IF_C BFs1i_BFu1s_BFs1i_BFu1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1s_BFs1i_BFu1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1s_BFs1i_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1s_BFs1i_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1s_BFs1i_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1s_BFs1i_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1s_BFs1i_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1s_BFs1i_BFu1s, BFs1i_BFu1s_BFs1i_BFu1s)
//============================================================================


struct  BFs1i_BFu1s_BFs1ll  {
  signed int v1:1;
  unsigned short v2:1;
  signed __tsi64 v3:1;
};
//SIG(1 BFs1i_BFu1s_BFs1ll) C1{ Fi:1 Fs:1 FL:1}



static void Test_BFs1i_BFu1s_BFs1ll()
{
  {
    init_simple_test("BFs1i_BFu1s_BFs1ll");
    static STRUCT_IF_C BFs1i_BFu1s_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1s_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1s_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1s_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1s_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1s_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1s_BFs1ll, BFs1i_BFu1s_BFs1ll)
//============================================================================


struct  BFs1i_BFu1s_BFs1ll_BFs1c  {
  signed int v1:1;
  unsigned short v2:1;
  signed __tsi64 v3:1;
  signed char v4:1;
};
//SIG(1 BFs1i_BFu1s_BFs1ll_BFs1c) C1{ Fi:1 Fs:1 FL:1 Fc:1}



static void Test_BFs1i_BFu1s_BFs1ll_BFs1c()
{
  {
    init_simple_test("BFs1i_BFu1s_BFs1ll_BFs1c");
    static STRUCT_IF_C BFs1i_BFu1s_BFs1ll_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1s_BFs1ll_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1s_BFs1ll_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1s_BFs1ll_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1s_BFs1ll_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1s_BFs1ll_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1s_BFs1ll_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1s_BFs1ll_BFs1c, BFs1i_BFu1s_BFs1ll_BFs1c)
//============================================================================


struct  BFs1i_BFu1s_BFs1ll_BFs1i  {
  signed int v1:1;
  unsigned short v2:1;
  signed __tsi64 v3:1;
  signed int v4:1;
};
//SIG(1 BFs1i_BFu1s_BFs1ll_BFs1i) C1{ Fi:1 Fs:1 FL:1 Fi:1}



static void Test_BFs1i_BFu1s_BFs1ll_BFs1i()
{
  {
    init_simple_test("BFs1i_BFu1s_BFs1ll_BFs1i");
    static STRUCT_IF_C BFs1i_BFu1s_BFs1ll_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1s_BFs1ll_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1s_BFs1ll_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1s_BFs1ll_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1s_BFs1ll_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1s_BFs1ll_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1s_BFs1ll_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1s_BFs1ll_BFs1i, BFs1i_BFu1s_BFs1ll_BFs1i)
//============================================================================


struct  BFs1i_BFu1s_BFs1ll_BFs1ll  {
  signed int v1:1;
  unsigned short v2:1;
  signed __tsi64 v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1i_BFu1s_BFs1ll_BFs1ll) C1{ Fi:1 Fs:1 FL:1 FL:1}



static void Test_BFs1i_BFu1s_BFs1ll_BFs1ll()
{
  {
    init_simple_test("BFs1i_BFu1s_BFs1ll_BFs1ll");
    static STRUCT_IF_C BFs1i_BFu1s_BFs1ll_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1s_BFs1ll_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1s_BFs1ll_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1s_BFs1ll_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1s_BFs1ll_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1s_BFs1ll_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1s_BFs1ll_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1s_BFs1ll_BFs1ll, BFs1i_BFu1s_BFs1ll_BFs1ll)
//============================================================================


struct  BFs1i_BFu1s_BFs1ll_BFs1s  {
  signed int v1:1;
  unsigned short v2:1;
  signed __tsi64 v3:1;
  signed short v4:1;
};
//SIG(1 BFs1i_BFu1s_BFs1ll_BFs1s) C1{ Fi:1 Fs:1 FL:1 Fs:1}



static void Test_BFs1i_BFu1s_BFs1ll_BFs1s()
{
  {
    init_simple_test("BFs1i_BFu1s_BFs1ll_BFs1s");
    static STRUCT_IF_C BFs1i_BFu1s_BFs1ll_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1s_BFs1ll_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1s_BFs1ll_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1s_BFs1ll_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1s_BFs1ll_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1s_BFs1ll_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1s_BFs1ll_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1s_BFs1ll_BFs1s, BFs1i_BFu1s_BFs1ll_BFs1s)
//============================================================================


struct  BFs1i_BFu1s_BFs1ll_BFu1c  {
  signed int v1:1;
  unsigned short v2:1;
  signed __tsi64 v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1i_BFu1s_BFs1ll_BFu1c) C1{ Fi:1 Fs:1 FL:1 Fc:1}



static void Test_BFs1i_BFu1s_BFs1ll_BFu1c()
{
  {
    init_simple_test("BFs1i_BFu1s_BFs1ll_BFu1c");
    static STRUCT_IF_C BFs1i_BFu1s_BFs1ll_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1s_BFs1ll_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1s_BFs1ll_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1s_BFs1ll_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1s_BFs1ll_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1s_BFs1ll_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1s_BFs1ll_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1s_BFs1ll_BFu1c, BFs1i_BFu1s_BFs1ll_BFu1c)
//============================================================================


struct  BFs1i_BFu1s_BFs1ll_BFu1i  {
  signed int v1:1;
  unsigned short v2:1;
  signed __tsi64 v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1i_BFu1s_BFs1ll_BFu1i) C1{ Fi:1 Fs:1 FL:1 Fi:1}



static void Test_BFs1i_BFu1s_BFs1ll_BFu1i()
{
  {
    init_simple_test("BFs1i_BFu1s_BFs1ll_BFu1i");
    static STRUCT_IF_C BFs1i_BFu1s_BFs1ll_BFu1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1s_BFs1ll_BFu1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1s_BFs1ll_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1s_BFs1ll_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1s_BFs1ll_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1s_BFs1ll_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1s_BFs1ll_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1s_BFs1ll_BFu1i, BFs1i_BFu1s_BFs1ll_BFu1i)
//============================================================================


struct  BFs1i_BFu1s_BFs1ll_BFu1ll  {
  signed int v1:1;
  unsigned short v2:1;
  signed __tsi64 v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1i_BFu1s_BFs1ll_BFu1ll) C1{ Fi:1 Fs:1 FL:1 FL:1}



static void Test_BFs1i_BFu1s_BFs1ll_BFu1ll()
{
  {
    init_simple_test("BFs1i_BFu1s_BFs1ll_BFu1ll");
    static STRUCT_IF_C BFs1i_BFu1s_BFs1ll_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1s_BFs1ll_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1s_BFs1ll_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1s_BFs1ll_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1s_BFs1ll_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1s_BFs1ll_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1s_BFs1ll_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1s_BFs1ll_BFu1ll, BFs1i_BFu1s_BFs1ll_BFu1ll)
//============================================================================


struct  BFs1i_BFu1s_BFs1ll_BFu1s  {
  signed int v1:1;
  unsigned short v2:1;
  signed __tsi64 v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1i_BFu1s_BFs1ll_BFu1s) C1{ Fi:1 Fs:1 FL:1 Fs:1}



static void Test_BFs1i_BFu1s_BFs1ll_BFu1s()
{
  {
    init_simple_test("BFs1i_BFu1s_BFs1ll_BFu1s");
    static STRUCT_IF_C BFs1i_BFu1s_BFs1ll_BFu1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1s_BFs1ll_BFu1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1s_BFs1ll_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1s_BFs1ll_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1s_BFs1ll_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1s_BFs1ll_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1s_BFs1ll_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1s_BFs1ll_BFu1s, BFs1i_BFu1s_BFs1ll_BFu1s)
//============================================================================


struct  BFs1i_BFu1s_BFs1s  {
  signed int v1:1;
  unsigned short v2:1;
  signed short v3:1;
};
//SIG(1 BFs1i_BFu1s_BFs1s) C1{ Fi:1 Fs:1 Fs:1}



static void Test_BFs1i_BFu1s_BFs1s()
{
  {
    init_simple_test("BFs1i_BFu1s_BFs1s");
    static STRUCT_IF_C BFs1i_BFu1s_BFs1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1s_BFs1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1s_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1s_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1s_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1s_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1s_BFs1s, BFs1i_BFu1s_BFs1s)
//============================================================================


struct  BFs1i_BFu1s_BFs1s_BFs1c  {
  signed int v1:1;
  unsigned short v2:1;
  signed short v3:1;
  signed char v4:1;
};
//SIG(1 BFs1i_BFu1s_BFs1s_BFs1c) C1{ Fi:1 Fs:1 Fs:1 Fc:1}



static void Test_BFs1i_BFu1s_BFs1s_BFs1c()
{
  {
    init_simple_test("BFs1i_BFu1s_BFs1s_BFs1c");
    static STRUCT_IF_C BFs1i_BFu1s_BFs1s_BFs1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1s_BFs1s_BFs1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1s_BFs1s_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1s_BFs1s_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1s_BFs1s_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1s_BFs1s_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1s_BFs1s_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1s_BFs1s_BFs1c, BFs1i_BFu1s_BFs1s_BFs1c)
//============================================================================


struct  BFs1i_BFu1s_BFs1s_BFs1i  {
  signed int v1:1;
  unsigned short v2:1;
  signed short v3:1;
  signed int v4:1;
};
//SIG(1 BFs1i_BFu1s_BFs1s_BFs1i) C1{ Fi:1 Fs:1 Fs:1 Fi:1}



static void Test_BFs1i_BFu1s_BFs1s_BFs1i()
{
  {
    init_simple_test("BFs1i_BFu1s_BFs1s_BFs1i");
    static STRUCT_IF_C BFs1i_BFu1s_BFs1s_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1s_BFs1s_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1s_BFs1s_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1s_BFs1s_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1s_BFs1s_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1s_BFs1s_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1s_BFs1s_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1s_BFs1s_BFs1i, BFs1i_BFu1s_BFs1s_BFs1i)
//============================================================================


struct  BFs1i_BFu1s_BFs1s_BFs1ll  {
  signed int v1:1;
  unsigned short v2:1;
  signed short v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1i_BFu1s_BFs1s_BFs1ll) C1{ Fi:1 Fs:1 Fs:1 FL:1}



static void Test_BFs1i_BFu1s_BFs1s_BFs1ll()
{
  {
    init_simple_test("BFs1i_BFu1s_BFs1s_BFs1ll");
    static STRUCT_IF_C BFs1i_BFu1s_BFs1s_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1s_BFs1s_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1s_BFs1s_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1s_BFs1s_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1s_BFs1s_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1s_BFs1s_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1s_BFs1s_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1s_BFs1s_BFs1ll, BFs1i_BFu1s_BFs1s_BFs1ll)
//============================================================================


struct  BFs1i_BFu1s_BFs1s_BFs1s  {
  signed int v1:1;
  unsigned short v2:1;
  signed short v3:1;
  signed short v4:1;
};
//SIG(1 BFs1i_BFu1s_BFs1s_BFs1s) C1{ Fi:1 Fs:1 Fs:1 Fs:1}



static void Test_BFs1i_BFu1s_BFs1s_BFs1s()
{
  {
    init_simple_test("BFs1i_BFu1s_BFs1s_BFs1s");
    static STRUCT_IF_C BFs1i_BFu1s_BFs1s_BFs1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1s_BFs1s_BFs1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1s_BFs1s_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1s_BFs1s_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1s_BFs1s_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1s_BFs1s_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1s_BFs1s_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1s_BFs1s_BFs1s, BFs1i_BFu1s_BFs1s_BFs1s)
//============================================================================


struct  BFs1i_BFu1s_BFs1s_BFu1c  {
  signed int v1:1;
  unsigned short v2:1;
  signed short v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1i_BFu1s_BFs1s_BFu1c) C1{ Fi:1 Fs:1 Fs:1 Fc:1}



static void Test_BFs1i_BFu1s_BFs1s_BFu1c()
{
  {
    init_simple_test("BFs1i_BFu1s_BFs1s_BFu1c");
    static STRUCT_IF_C BFs1i_BFu1s_BFs1s_BFu1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1s_BFs1s_BFu1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1s_BFs1s_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1s_BFs1s_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1s_BFs1s_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1s_BFs1s_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1s_BFs1s_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1s_BFs1s_BFu1c, BFs1i_BFu1s_BFs1s_BFu1c)
//============================================================================


struct  BFs1i_BFu1s_BFs1s_BFu1i  {
  signed int v1:1;
  unsigned short v2:1;
  signed short v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1i_BFu1s_BFs1s_BFu1i) C1{ Fi:1 Fs:1 Fs:1 Fi:1}



static void Test_BFs1i_BFu1s_BFs1s_BFu1i()
{
  {
    init_simple_test("BFs1i_BFu1s_BFs1s_BFu1i");
    static STRUCT_IF_C BFs1i_BFu1s_BFs1s_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1s_BFs1s_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1s_BFs1s_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1s_BFs1s_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1s_BFs1s_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1s_BFs1s_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1s_BFs1s_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1s_BFs1s_BFu1i, BFs1i_BFu1s_BFs1s_BFu1i)
//============================================================================


struct  BFs1i_BFu1s_BFs1s_BFu1ll  {
  signed int v1:1;
  unsigned short v2:1;
  signed short v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1i_BFu1s_BFs1s_BFu1ll) C1{ Fi:1 Fs:1 Fs:1 FL:1}



static void Test_BFs1i_BFu1s_BFs1s_BFu1ll()
{
  {
    init_simple_test("BFs1i_BFu1s_BFs1s_BFu1ll");
    static STRUCT_IF_C BFs1i_BFu1s_BFs1s_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1s_BFs1s_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1s_BFs1s_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1s_BFs1s_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1s_BFs1s_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1s_BFs1s_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1s_BFs1s_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1s_BFs1s_BFu1ll, BFs1i_BFu1s_BFs1s_BFu1ll)
//============================================================================


struct  BFs1i_BFu1s_BFs1s_BFu1s  {
  signed int v1:1;
  unsigned short v2:1;
  signed short v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1i_BFu1s_BFs1s_BFu1s) C1{ Fi:1 Fs:1 Fs:1 Fs:1}



static void Test_BFs1i_BFu1s_BFs1s_BFu1s()
{
  {
    init_simple_test("BFs1i_BFu1s_BFs1s_BFu1s");
    static STRUCT_IF_C BFs1i_BFu1s_BFs1s_BFu1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1s_BFs1s_BFu1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1s_BFs1s_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1s_BFs1s_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1s_BFs1s_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1i_BFu1s_BFs1s_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1s_BFs1s_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1s_BFs1s_BFu1s, BFs1i_BFu1s_BFs1s_BFu1s)
//============================================================================


struct  BFs1i_BFu1s_BFu1c  {
  signed int v1:1;
  unsigned short v2:1;
  unsigned char v3:1;
};
//SIG(1 BFs1i_BFu1s_BFu1c) C1{ Fi:1 Fs:1 Fc:1}



static void Test_BFs1i_BFu1s_BFu1c()
{
  {
    init_simple_test("BFs1i_BFu1s_BFu1c");
    static STRUCT_IF_C BFs1i_BFu1s_BFu1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1s_BFu1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1s_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1s_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1s_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1s_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1s_BFu1c, BFs1i_BFu1s_BFu1c)
//============================================================================


struct  BFs1i_BFu1s_BFu1c_BFs1c  {
  signed int v1:1;
  unsigned short v2:1;
  unsigned char v3:1;
  signed char v4:1;
};
//SIG(1 BFs1i_BFu1s_BFu1c_BFs1c) C1{ Fi:1 Fs:1 Fc:1 Fc:1}



static void Test_BFs1i_BFu1s_BFu1c_BFs1c()
{
  {
    init_simple_test("BFs1i_BFu1s_BFu1c_BFs1c");
    static STRUCT_IF_C BFs1i_BFu1s_BFu1c_BFs1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1s_BFu1c_BFs1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1s_BFu1c_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1s_BFu1c_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1s_BFu1c_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1s_BFu1c_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1s_BFu1c_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1s_BFu1c_BFs1c, BFs1i_BFu1s_BFu1c_BFs1c)
//============================================================================


struct  BFs1i_BFu1s_BFu1c_BFs1i  {
  signed int v1:1;
  unsigned short v2:1;
  unsigned char v3:1;
  signed int v4:1;
};
//SIG(1 BFs1i_BFu1s_BFu1c_BFs1i) C1{ Fi:1 Fs:1 Fc:1 Fi:1}



static void Test_BFs1i_BFu1s_BFu1c_BFs1i()
{
  {
    init_simple_test("BFs1i_BFu1s_BFu1c_BFs1i");
    static STRUCT_IF_C BFs1i_BFu1s_BFu1c_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1s_BFu1c_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1s_BFu1c_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1s_BFu1c_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1s_BFu1c_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1s_BFu1c_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1s_BFu1c_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1s_BFu1c_BFs1i, BFs1i_BFu1s_BFu1c_BFs1i)
//============================================================================


struct  BFs1i_BFu1s_BFu1c_BFs1ll  {
  signed int v1:1;
  unsigned short v2:1;
  unsigned char v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1i_BFu1s_BFu1c_BFs1ll) C1{ Fi:1 Fs:1 Fc:1 FL:1}



static void Test_BFs1i_BFu1s_BFu1c_BFs1ll()
{
  {
    init_simple_test("BFs1i_BFu1s_BFu1c_BFs1ll");
    static STRUCT_IF_C BFs1i_BFu1s_BFu1c_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1s_BFu1c_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1s_BFu1c_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1s_BFu1c_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1s_BFu1c_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1s_BFu1c_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1s_BFu1c_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1s_BFu1c_BFs1ll, BFs1i_BFu1s_BFu1c_BFs1ll)
//============================================================================


struct  BFs1i_BFu1s_BFu1c_BFs1s  {
  signed int v1:1;
  unsigned short v2:1;
  unsigned char v3:1;
  signed short v4:1;
};
//SIG(1 BFs1i_BFu1s_BFu1c_BFs1s) C1{ Fi:1 Fs:1 Fc:1 Fs:1}



static void Test_BFs1i_BFu1s_BFu1c_BFs1s()
{
  {
    init_simple_test("BFs1i_BFu1s_BFu1c_BFs1s");
    static STRUCT_IF_C BFs1i_BFu1s_BFu1c_BFs1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1s_BFu1c_BFs1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1s_BFu1c_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1s_BFu1c_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1s_BFu1c_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1s_BFu1c_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1s_BFu1c_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1s_BFu1c_BFs1s, BFs1i_BFu1s_BFu1c_BFs1s)
//============================================================================


struct  BFs1i_BFu1s_BFu1c_BFu1c  {
  signed int v1:1;
  unsigned short v2:1;
  unsigned char v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1i_BFu1s_BFu1c_BFu1c) C1{ Fi:1 Fs:1 Fc:1 Fc:1}



static void Test_BFs1i_BFu1s_BFu1c_BFu1c()
{
  {
    init_simple_test("BFs1i_BFu1s_BFu1c_BFu1c");
    static STRUCT_IF_C BFs1i_BFu1s_BFu1c_BFu1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1s_BFu1c_BFu1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1s_BFu1c_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1s_BFu1c_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1s_BFu1c_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1s_BFu1c_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1s_BFu1c_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1s_BFu1c_BFu1c, BFs1i_BFu1s_BFu1c_BFu1c)
//============================================================================


struct  BFs1i_BFu1s_BFu1c_BFu1i  {
  signed int v1:1;
  unsigned short v2:1;
  unsigned char v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1i_BFu1s_BFu1c_BFu1i) C1{ Fi:1 Fs:1 Fc:1 Fi:1}



static void Test_BFs1i_BFu1s_BFu1c_BFu1i()
{
  {
    init_simple_test("BFs1i_BFu1s_BFu1c_BFu1i");
    static STRUCT_IF_C BFs1i_BFu1s_BFu1c_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1s_BFu1c_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1s_BFu1c_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1s_BFu1c_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1s_BFu1c_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1s_BFu1c_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1s_BFu1c_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1s_BFu1c_BFu1i, BFs1i_BFu1s_BFu1c_BFu1i)
//============================================================================


struct  BFs1i_BFu1s_BFu1c_BFu1ll  {
  signed int v1:1;
  unsigned short v2:1;
  unsigned char v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1i_BFu1s_BFu1c_BFu1ll) C1{ Fi:1 Fs:1 Fc:1 FL:1}



static void Test_BFs1i_BFu1s_BFu1c_BFu1ll()
{
  {
    init_simple_test("BFs1i_BFu1s_BFu1c_BFu1ll");
    static STRUCT_IF_C BFs1i_BFu1s_BFu1c_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1s_BFu1c_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1s_BFu1c_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1s_BFu1c_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1s_BFu1c_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1s_BFu1c_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1s_BFu1c_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1s_BFu1c_BFu1ll, BFs1i_BFu1s_BFu1c_BFu1ll)
//============================================================================


struct  BFs1i_BFu1s_BFu1c_BFu1s  {
  signed int v1:1;
  unsigned short v2:1;
  unsigned char v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1i_BFu1s_BFu1c_BFu1s) C1{ Fi:1 Fs:1 Fc:1 Fs:1}



static void Test_BFs1i_BFu1s_BFu1c_BFu1s()
{
  {
    init_simple_test("BFs1i_BFu1s_BFu1c_BFu1s");
    static STRUCT_IF_C BFs1i_BFu1s_BFu1c_BFu1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1s_BFu1c_BFu1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1s_BFu1c_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1s_BFu1c_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1s_BFu1c_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1s_BFu1c_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1s_BFu1c_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1s_BFu1c_BFu1s, BFs1i_BFu1s_BFu1c_BFu1s)
//============================================================================


struct  BFs1i_BFu1s_BFu1i  {
  signed int v1:1;
  unsigned short v2:1;
  unsigned int v3:1;
};
//SIG(1 BFs1i_BFu1s_BFu1i) C1{ Fi:1 Fs:1 Fi:1}



static void Test_BFs1i_BFu1s_BFu1i()
{
  {
    init_simple_test("BFs1i_BFu1s_BFu1i");
    static STRUCT_IF_C BFs1i_BFu1s_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1s_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1s_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1s_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1s_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1s_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1s_BFu1i, BFs1i_BFu1s_BFu1i)
//============================================================================


struct  BFs1i_BFu1s_BFu1i_BFs1c  {
  signed int v1:1;
  unsigned short v2:1;
  unsigned int v3:1;
  signed char v4:1;
};
//SIG(1 BFs1i_BFu1s_BFu1i_BFs1c) C1{ Fi:1 Fs:1 Fi:1 Fc:1}



static void Test_BFs1i_BFu1s_BFu1i_BFs1c()
{
  {
    init_simple_test("BFs1i_BFu1s_BFu1i_BFs1c");
    static STRUCT_IF_C BFs1i_BFu1s_BFu1i_BFs1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1s_BFu1i_BFs1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1s_BFu1i_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1s_BFu1i_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1s_BFu1i_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1s_BFu1i_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1s_BFu1i_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1s_BFu1i_BFs1c, BFs1i_BFu1s_BFu1i_BFs1c)
//============================================================================


struct  BFs1i_BFu1s_BFu1i_BFs1i  {
  signed int v1:1;
  unsigned short v2:1;
  unsigned int v3:1;
  signed int v4:1;
};
//SIG(1 BFs1i_BFu1s_BFu1i_BFs1i) C1{ Fi:1 Fs:1 Fi:1 Fi:1}



static void Test_BFs1i_BFu1s_BFu1i_BFs1i()
{
  {
    init_simple_test("BFs1i_BFu1s_BFu1i_BFs1i");
    static STRUCT_IF_C BFs1i_BFu1s_BFu1i_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1s_BFu1i_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1s_BFu1i_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1s_BFu1i_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1s_BFu1i_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1s_BFu1i_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1s_BFu1i_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1s_BFu1i_BFs1i, BFs1i_BFu1s_BFu1i_BFs1i)
//============================================================================


struct  BFs1i_BFu1s_BFu1i_BFs1ll  {
  signed int v1:1;
  unsigned short v2:1;
  unsigned int v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1i_BFu1s_BFu1i_BFs1ll) C1{ Fi:1 Fs:1 Fi:1 FL:1}



static void Test_BFs1i_BFu1s_BFu1i_BFs1ll()
{
  {
    init_simple_test("BFs1i_BFu1s_BFu1i_BFs1ll");
    static STRUCT_IF_C BFs1i_BFu1s_BFu1i_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1s_BFu1i_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1s_BFu1i_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1s_BFu1i_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1s_BFu1i_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1s_BFu1i_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1s_BFu1i_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1s_BFu1i_BFs1ll, BFs1i_BFu1s_BFu1i_BFs1ll)
//============================================================================


struct  BFs1i_BFu1s_BFu1i_BFs1s  {
  signed int v1:1;
  unsigned short v2:1;
  unsigned int v3:1;
  signed short v4:1;
};
//SIG(1 BFs1i_BFu1s_BFu1i_BFs1s) C1{ Fi:1 Fs:1 Fi:1 Fs:1}



static void Test_BFs1i_BFu1s_BFu1i_BFs1s()
{
  {
    init_simple_test("BFs1i_BFu1s_BFu1i_BFs1s");
    static STRUCT_IF_C BFs1i_BFu1s_BFu1i_BFs1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1s_BFu1i_BFs1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1s_BFu1i_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1s_BFu1i_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1s_BFu1i_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1s_BFu1i_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1s_BFu1i_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1s_BFu1i_BFs1s, BFs1i_BFu1s_BFu1i_BFs1s)
//============================================================================


struct  BFs1i_BFu1s_BFu1i_BFu1c  {
  signed int v1:1;
  unsigned short v2:1;
  unsigned int v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1i_BFu1s_BFu1i_BFu1c) C1{ Fi:1 Fs:1 Fi:1 Fc:1}



static void Test_BFs1i_BFu1s_BFu1i_BFu1c()
{
  {
    init_simple_test("BFs1i_BFu1s_BFu1i_BFu1c");
    static STRUCT_IF_C BFs1i_BFu1s_BFu1i_BFu1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1s_BFu1i_BFu1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1s_BFu1i_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1s_BFu1i_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1s_BFu1i_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1s_BFu1i_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1s_BFu1i_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1s_BFu1i_BFu1c, BFs1i_BFu1s_BFu1i_BFu1c)
//============================================================================


struct  BFs1i_BFu1s_BFu1i_BFu1i  {
  signed int v1:1;
  unsigned short v2:1;
  unsigned int v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1i_BFu1s_BFu1i_BFu1i) C1{ Fi:1 Fs:1 Fi:1 Fi:1}



static void Test_BFs1i_BFu1s_BFu1i_BFu1i()
{
  {
    init_simple_test("BFs1i_BFu1s_BFu1i_BFu1i");
    static STRUCT_IF_C BFs1i_BFu1s_BFu1i_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1s_BFu1i_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1s_BFu1i_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1s_BFu1i_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1s_BFu1i_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1s_BFu1i_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1s_BFu1i_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1s_BFu1i_BFu1i, BFs1i_BFu1s_BFu1i_BFu1i)
//============================================================================


struct  BFs1i_BFu1s_BFu1i_BFu1ll  {
  signed int v1:1;
  unsigned short v2:1;
  unsigned int v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1i_BFu1s_BFu1i_BFu1ll) C1{ Fi:1 Fs:1 Fi:1 FL:1}



static void Test_BFs1i_BFu1s_BFu1i_BFu1ll()
{
  {
    init_simple_test("BFs1i_BFu1s_BFu1i_BFu1ll");
    static STRUCT_IF_C BFs1i_BFu1s_BFu1i_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1s_BFu1i_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1s_BFu1i_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1s_BFu1i_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1s_BFu1i_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1s_BFu1i_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1s_BFu1i_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1s_BFu1i_BFu1ll, BFs1i_BFu1s_BFu1i_BFu1ll)
//============================================================================


struct  BFs1i_BFu1s_BFu1i_BFu1s  {
  signed int v1:1;
  unsigned short v2:1;
  unsigned int v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1i_BFu1s_BFu1i_BFu1s) C1{ Fi:1 Fs:1 Fi:1 Fs:1}



static void Test_BFs1i_BFu1s_BFu1i_BFu1s()
{
  {
    init_simple_test("BFs1i_BFu1s_BFu1i_BFu1s");
    static STRUCT_IF_C BFs1i_BFu1s_BFu1i_BFu1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1s_BFu1i_BFu1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1s_BFu1i_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1s_BFu1i_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1s_BFu1i_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1s_BFu1i_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1s_BFu1i_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1s_BFu1i_BFu1s, BFs1i_BFu1s_BFu1i_BFu1s)
//============================================================================


struct  BFs1i_BFu1s_BFu1ll  {
  signed int v1:1;
  unsigned short v2:1;
  __tsu64 v3:1;
};
//SIG(1 BFs1i_BFu1s_BFu1ll) C1{ Fi:1 Fs:1 FL:1}



static void Test_BFs1i_BFu1s_BFu1ll()
{
  {
    init_simple_test("BFs1i_BFu1s_BFu1ll");
    static STRUCT_IF_C BFs1i_BFu1s_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1s_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1s_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1s_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1s_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1s_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1s_BFu1ll, BFs1i_BFu1s_BFu1ll)
//============================================================================


struct  BFs1i_BFu1s_BFu1ll_BFs1c  {
  signed int v1:1;
  unsigned short v2:1;
  __tsu64 v3:1;
  signed char v4:1;
};
//SIG(1 BFs1i_BFu1s_BFu1ll_BFs1c) C1{ Fi:1 Fs:1 FL:1 Fc:1}



static void Test_BFs1i_BFu1s_BFu1ll_BFs1c()
{
  {
    init_simple_test("BFs1i_BFu1s_BFu1ll_BFs1c");
    static STRUCT_IF_C BFs1i_BFu1s_BFu1ll_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1s_BFu1ll_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1s_BFu1ll_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1s_BFu1ll_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1s_BFu1ll_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1s_BFu1ll_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1s_BFu1ll_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1s_BFu1ll_BFs1c, BFs1i_BFu1s_BFu1ll_BFs1c)
//============================================================================


struct  BFs1i_BFu1s_BFu1ll_BFs1i  {
  signed int v1:1;
  unsigned short v2:1;
  __tsu64 v3:1;
  signed int v4:1;
};
//SIG(1 BFs1i_BFu1s_BFu1ll_BFs1i) C1{ Fi:1 Fs:1 FL:1 Fi:1}



static void Test_BFs1i_BFu1s_BFu1ll_BFs1i()
{
  {
    init_simple_test("BFs1i_BFu1s_BFu1ll_BFs1i");
    static STRUCT_IF_C BFs1i_BFu1s_BFu1ll_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1s_BFu1ll_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1s_BFu1ll_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1s_BFu1ll_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1s_BFu1ll_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1s_BFu1ll_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1s_BFu1ll_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1s_BFu1ll_BFs1i, BFs1i_BFu1s_BFu1ll_BFs1i)
//============================================================================


struct  BFs1i_BFu1s_BFu1ll_BFs1ll  {
  signed int v1:1;
  unsigned short v2:1;
  __tsu64 v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1i_BFu1s_BFu1ll_BFs1ll) C1{ Fi:1 Fs:1 FL:1 FL:1}



static void Test_BFs1i_BFu1s_BFu1ll_BFs1ll()
{
  {
    init_simple_test("BFs1i_BFu1s_BFu1ll_BFs1ll");
    static STRUCT_IF_C BFs1i_BFu1s_BFu1ll_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1s_BFu1ll_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1s_BFu1ll_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1s_BFu1ll_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1s_BFu1ll_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1s_BFu1ll_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1s_BFu1ll_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1s_BFu1ll_BFs1ll, BFs1i_BFu1s_BFu1ll_BFs1ll)
//============================================================================


struct  BFs1i_BFu1s_BFu1ll_BFs1s  {
  signed int v1:1;
  unsigned short v2:1;
  __tsu64 v3:1;
  signed short v4:1;
};
//SIG(1 BFs1i_BFu1s_BFu1ll_BFs1s) C1{ Fi:1 Fs:1 FL:1 Fs:1}



static void Test_BFs1i_BFu1s_BFu1ll_BFs1s()
{
  {
    init_simple_test("BFs1i_BFu1s_BFu1ll_BFs1s");
    static STRUCT_IF_C BFs1i_BFu1s_BFu1ll_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1s_BFu1ll_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1s_BFu1ll_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1s_BFu1ll_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1s_BFu1ll_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1s_BFu1ll_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1s_BFu1ll_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1s_BFu1ll_BFs1s, BFs1i_BFu1s_BFu1ll_BFs1s)
//============================================================================


struct  BFs1i_BFu1s_BFu1ll_BFu1c  {
  signed int v1:1;
  unsigned short v2:1;
  __tsu64 v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1i_BFu1s_BFu1ll_BFu1c) C1{ Fi:1 Fs:1 FL:1 Fc:1}



static void Test_BFs1i_BFu1s_BFu1ll_BFu1c()
{
  {
    init_simple_test("BFs1i_BFu1s_BFu1ll_BFu1c");
    static STRUCT_IF_C BFs1i_BFu1s_BFu1ll_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1s_BFu1ll_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1s_BFu1ll_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1s_BFu1ll_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1s_BFu1ll_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1s_BFu1ll_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1s_BFu1ll_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1s_BFu1ll_BFu1c, BFs1i_BFu1s_BFu1ll_BFu1c)
//============================================================================


struct  BFs1i_BFu1s_BFu1ll_BFu1i  {
  signed int v1:1;
  unsigned short v2:1;
  __tsu64 v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1i_BFu1s_BFu1ll_BFu1i) C1{ Fi:1 Fs:1 FL:1 Fi:1}



static void Test_BFs1i_BFu1s_BFu1ll_BFu1i()
{
  {
    init_simple_test("BFs1i_BFu1s_BFu1ll_BFu1i");
    static STRUCT_IF_C BFs1i_BFu1s_BFu1ll_BFu1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1s_BFu1ll_BFu1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1s_BFu1ll_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1s_BFu1ll_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1s_BFu1ll_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1s_BFu1ll_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1s_BFu1ll_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1s_BFu1ll_BFu1i, BFs1i_BFu1s_BFu1ll_BFu1i)
//============================================================================


struct  BFs1i_BFu1s_BFu1ll_BFu1ll  {
  signed int v1:1;
  unsigned short v2:1;
  __tsu64 v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1i_BFu1s_BFu1ll_BFu1ll) C1{ Fi:1 Fs:1 FL:1 FL:1}



static void Test_BFs1i_BFu1s_BFu1ll_BFu1ll()
{
  {
    init_simple_test("BFs1i_BFu1s_BFu1ll_BFu1ll");
    static STRUCT_IF_C BFs1i_BFu1s_BFu1ll_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1s_BFu1ll_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1s_BFu1ll_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1s_BFu1ll_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1s_BFu1ll_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1s_BFu1ll_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1s_BFu1ll_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1s_BFu1ll_BFu1ll, BFs1i_BFu1s_BFu1ll_BFu1ll)
//============================================================================


struct  BFs1i_BFu1s_BFu1ll_BFu1s  {
  signed int v1:1;
  unsigned short v2:1;
  __tsu64 v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1i_BFu1s_BFu1ll_BFu1s) C1{ Fi:1 Fs:1 FL:1 Fs:1}



static void Test_BFs1i_BFu1s_BFu1ll_BFu1s()
{
  {
    init_simple_test("BFs1i_BFu1s_BFu1ll_BFu1s");
    static STRUCT_IF_C BFs1i_BFu1s_BFu1ll_BFu1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1s_BFu1ll_BFu1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1s_BFu1ll_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1s_BFu1ll_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1s_BFu1ll_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1s_BFu1ll_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1s_BFu1ll_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1s_BFu1ll_BFu1s, BFs1i_BFu1s_BFu1ll_BFu1s)
//============================================================================


struct  BFs1i_BFu1s_BFu1s  {
  signed int v1:1;
  unsigned short v2:1;
  unsigned short v3:1;
};
//SIG(1 BFs1i_BFu1s_BFu1s) C1{ Fi:1 Fs:1 Fs:1}



static void Test_BFs1i_BFu1s_BFu1s()
{
  {
    init_simple_test("BFs1i_BFu1s_BFu1s");
    static STRUCT_IF_C BFs1i_BFu1s_BFu1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1s_BFu1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1s_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1s_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1s_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1s_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1s_BFu1s, BFs1i_BFu1s_BFu1s)
//============================================================================


struct  BFs1i_BFu1s_BFu1s_BFs1c  {
  signed int v1:1;
  unsigned short v2:1;
  unsigned short v3:1;
  signed char v4:1;
};
//SIG(1 BFs1i_BFu1s_BFu1s_BFs1c) C1{ Fi:1 Fs:1 Fs:1 Fc:1}



static void Test_BFs1i_BFu1s_BFu1s_BFs1c()
{
  {
    init_simple_test("BFs1i_BFu1s_BFu1s_BFs1c");
    static STRUCT_IF_C BFs1i_BFu1s_BFu1s_BFs1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1s_BFu1s_BFs1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1s_BFu1s_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1s_BFu1s_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1s_BFu1s_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1s_BFu1s_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1s_BFu1s_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1s_BFu1s_BFs1c, BFs1i_BFu1s_BFu1s_BFs1c)
//============================================================================


struct  BFs1i_BFu1s_BFu1s_BFs1i  {
  signed int v1:1;
  unsigned short v2:1;
  unsigned short v3:1;
  signed int v4:1;
};
//SIG(1 BFs1i_BFu1s_BFu1s_BFs1i) C1{ Fi:1 Fs:1 Fs:1 Fi:1}



static void Test_BFs1i_BFu1s_BFu1s_BFs1i()
{
  {
    init_simple_test("BFs1i_BFu1s_BFu1s_BFs1i");
    static STRUCT_IF_C BFs1i_BFu1s_BFu1s_BFs1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1s_BFu1s_BFs1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1s_BFu1s_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1s_BFu1s_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1s_BFu1s_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1s_BFu1s_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1s_BFu1s_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1s_BFu1s_BFs1i, BFs1i_BFu1s_BFu1s_BFs1i)
//============================================================================


struct  BFs1i_BFu1s_BFu1s_BFs1ll  {
  signed int v1:1;
  unsigned short v2:1;
  unsigned short v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1i_BFu1s_BFu1s_BFs1ll) C1{ Fi:1 Fs:1 Fs:1 FL:1}



static void Test_BFs1i_BFu1s_BFu1s_BFs1ll()
{
  {
    init_simple_test("BFs1i_BFu1s_BFu1s_BFs1ll");
    static STRUCT_IF_C BFs1i_BFu1s_BFu1s_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1s_BFu1s_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1s_BFu1s_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1s_BFu1s_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1s_BFu1s_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1s_BFu1s_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1s_BFu1s_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1s_BFu1s_BFs1ll, BFs1i_BFu1s_BFu1s_BFs1ll)
//============================================================================


struct  BFs1i_BFu1s_BFu1s_BFs1s  {
  signed int v1:1;
  unsigned short v2:1;
  unsigned short v3:1;
  signed short v4:1;
};
//SIG(1 BFs1i_BFu1s_BFu1s_BFs1s) C1{ Fi:1 Fs:1 Fs:1 Fs:1}



static void Test_BFs1i_BFu1s_BFu1s_BFs1s()
{
  {
    init_simple_test("BFs1i_BFu1s_BFu1s_BFs1s");
    static STRUCT_IF_C BFs1i_BFu1s_BFu1s_BFs1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1s_BFu1s_BFs1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1s_BFu1s_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1s_BFu1s_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1s_BFu1s_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1s_BFu1s_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1i_BFu1s_BFu1s_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1s_BFu1s_BFs1s, BFs1i_BFu1s_BFu1s_BFs1s)
//============================================================================


struct  BFs1i_BFu1s_BFu1s_BFu1c  {
  signed int v1:1;
  unsigned short v2:1;
  unsigned short v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1i_BFu1s_BFu1s_BFu1c) C1{ Fi:1 Fs:1 Fs:1 Fc:1}



static void Test_BFs1i_BFu1s_BFu1s_BFu1c()
{
  {
    init_simple_test("BFs1i_BFu1s_BFu1s_BFu1c");
    static STRUCT_IF_C BFs1i_BFu1s_BFu1s_BFu1c lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1s_BFu1s_BFu1c)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1s_BFu1s_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1s_BFu1s_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1s_BFu1s_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1s_BFu1s_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1s_BFu1s_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1s_BFu1s_BFu1c, BFs1i_BFu1s_BFu1s_BFu1c)
//============================================================================


struct  BFs1i_BFu1s_BFu1s_BFu1i  {
  signed int v1:1;
  unsigned short v2:1;
  unsigned short v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1i_BFu1s_BFu1s_BFu1i) C1{ Fi:1 Fs:1 Fs:1 Fi:1}



static void Test_BFs1i_BFu1s_BFu1s_BFu1i()
{
  {
    init_simple_test("BFs1i_BFu1s_BFu1s_BFu1i");
    static STRUCT_IF_C BFs1i_BFu1s_BFu1s_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1s_BFu1s_BFu1i)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1s_BFu1s_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1s_BFu1s_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1s_BFu1s_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1s_BFu1s_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1s_BFu1s_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1s_BFu1s_BFu1i, BFs1i_BFu1s_BFu1s_BFu1i)
//============================================================================


struct  BFs1i_BFu1s_BFu1s_BFu1ll  {
  signed int v1:1;
  unsigned short v2:1;
  unsigned short v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1i_BFu1s_BFu1s_BFu1ll) C1{ Fi:1 Fs:1 Fs:1 FL:1}



static void Test_BFs1i_BFu1s_BFu1s_BFu1ll()
{
  {
    init_simple_test("BFs1i_BFu1s_BFu1s_BFu1ll");
    static STRUCT_IF_C BFs1i_BFu1s_BFu1s_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1i_BFu1s_BFu1s_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1i_BFu1s_BFu1s_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1s_BFu1s_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1s_BFu1s_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1s_BFu1s_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1s_BFu1s_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1s_BFu1s_BFu1ll, BFs1i_BFu1s_BFu1s_BFu1ll)
//============================================================================


struct  BFs1i_BFu1s_BFu1s_BFu1s  {
  signed int v1:1;
  unsigned short v2:1;
  unsigned short v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1i_BFu1s_BFu1s_BFu1s) C1{ Fi:1 Fs:1 Fs:1 Fs:1}



static void Test_BFs1i_BFu1s_BFu1s_BFu1s()
{
  {
    init_simple_test("BFs1i_BFu1s_BFu1s_BFu1s");
    static STRUCT_IF_C BFs1i_BFu1s_BFu1s_BFu1s lv;
    check2(sizeof(lv), 4, "sizeof(BFs1i_BFu1s_BFu1s_BFu1s)");
    check2(__alignof__(lv), 4, "__alignof__(BFs1i_BFu1s_BFu1s_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1i_BFu1s_BFu1s_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFs1i_BFu1s_BFu1s_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1i_BFu1s_BFu1s_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1i_BFu1s_BFu1s_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1i_BFu1s_BFu1s_BFu1s, BFs1i_BFu1s_BFu1s_BFu1s)
//============================================================================


struct  BFs1ll_BFs1c  {
  signed __tsi64 v1:1;
  signed char v2:1;
};
//SIG(1 BFs1ll_BFs1c) C1{ FL:1 Fc:1}



static void Test_BFs1ll_BFs1c()
{
  {
    init_simple_test("BFs1ll_BFs1c");
    static STRUCT_IF_C BFs1ll_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1c, BFs1ll_BFs1c)
//============================================================================


struct  BFs1ll_BFs1c_BFs1c  {
  signed __tsi64 v1:1;
  signed char v2:1;
  signed char v3:1;
};
//SIG(1 BFs1ll_BFs1c_BFs1c) C1{ FL:1 Fc:1 Fc:1}



static void Test_BFs1ll_BFs1c_BFs1c()
{
  {
    init_simple_test("BFs1ll_BFs1c_BFs1c");
    static STRUCT_IF_C BFs1ll_BFs1c_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1c_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1c_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1c_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1c_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1ll_BFs1c_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1c_BFs1c, BFs1ll_BFs1c_BFs1c)
//============================================================================


struct  BFs1ll_BFs1c_BFs1c_BFs1c  {
  signed __tsi64 v1:1;
  signed char v2:1;
  signed char v3:1;
  signed char v4:1;
};
//SIG(1 BFs1ll_BFs1c_BFs1c_BFs1c) C1{ FL:1 Fc:1 Fc:1 Fc:1}



static void Test_BFs1ll_BFs1c_BFs1c_BFs1c()
{
  {
    init_simple_test("BFs1ll_BFs1c_BFs1c_BFs1c");
    static STRUCT_IF_C BFs1ll_BFs1c_BFs1c_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1c_BFs1c_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1c_BFs1c_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1c_BFs1c_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1c_BFs1c_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1ll_BFs1c_BFs1c_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1ll_BFs1c_BFs1c_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1c_BFs1c_BFs1c, BFs1ll_BFs1c_BFs1c_BFs1c)
//============================================================================


struct  BFs1ll_BFs1c_BFs1c_BFs1i  {
  signed __tsi64 v1:1;
  signed char v2:1;
  signed char v3:1;
  signed int v4:1;
};
//SIG(1 BFs1ll_BFs1c_BFs1c_BFs1i) C1{ FL:1 Fc:1 Fc:1 Fi:1}



static void Test_BFs1ll_BFs1c_BFs1c_BFs1i()
{
  {
    init_simple_test("BFs1ll_BFs1c_BFs1c_BFs1i");
    static STRUCT_IF_C BFs1ll_BFs1c_BFs1c_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1c_BFs1c_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1c_BFs1c_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1c_BFs1c_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1c_BFs1c_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1ll_BFs1c_BFs1c_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1ll_BFs1c_BFs1c_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1c_BFs1c_BFs1i, BFs1ll_BFs1c_BFs1c_BFs1i)
//============================================================================


struct  BFs1ll_BFs1c_BFs1c_BFs1ll  {
  signed __tsi64 v1:1;
  signed char v2:1;
  signed char v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1ll_BFs1c_BFs1c_BFs1ll) C1{ FL:1 Fc:1 Fc:1 FL:1}



static void Test_BFs1ll_BFs1c_BFs1c_BFs1ll()
{
  {
    init_simple_test("BFs1ll_BFs1c_BFs1c_BFs1ll");
    static STRUCT_IF_C BFs1ll_BFs1c_BFs1c_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1c_BFs1c_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1c_BFs1c_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1c_BFs1c_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1c_BFs1c_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1ll_BFs1c_BFs1c_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1ll_BFs1c_BFs1c_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1c_BFs1c_BFs1ll, BFs1ll_BFs1c_BFs1c_BFs1ll)
//============================================================================


struct  BFs1ll_BFs1c_BFs1c_BFs1s  {
  signed __tsi64 v1:1;
  signed char v2:1;
  signed char v3:1;
  signed short v4:1;
};
//SIG(1 BFs1ll_BFs1c_BFs1c_BFs1s) C1{ FL:1 Fc:1 Fc:1 Fs:1}



static void Test_BFs1ll_BFs1c_BFs1c_BFs1s()
{
  {
    init_simple_test("BFs1ll_BFs1c_BFs1c_BFs1s");
    static STRUCT_IF_C BFs1ll_BFs1c_BFs1c_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1c_BFs1c_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1c_BFs1c_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1c_BFs1c_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1c_BFs1c_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1ll_BFs1c_BFs1c_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1ll_BFs1c_BFs1c_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1c_BFs1c_BFs1s, BFs1ll_BFs1c_BFs1c_BFs1s)
//============================================================================


struct  BFs1ll_BFs1c_BFs1c_BFu1c  {
  signed __tsi64 v1:1;
  signed char v2:1;
  signed char v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1ll_BFs1c_BFs1c_BFu1c) C1{ FL:1 Fc:1 Fc:1 Fc:1}



static void Test_BFs1ll_BFs1c_BFs1c_BFu1c()
{
  {
    init_simple_test("BFs1ll_BFs1c_BFs1c_BFu1c");
    static STRUCT_IF_C BFs1ll_BFs1c_BFs1c_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1c_BFs1c_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1c_BFs1c_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1c_BFs1c_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1c_BFs1c_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1ll_BFs1c_BFs1c_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1ll_BFs1c_BFs1c_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1c_BFs1c_BFu1c, BFs1ll_BFs1c_BFs1c_BFu1c)
//============================================================================


struct  BFs1ll_BFs1c_BFs1c_BFu1i  {
  signed __tsi64 v1:1;
  signed char v2:1;
  signed char v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1ll_BFs1c_BFs1c_BFu1i) C1{ FL:1 Fc:1 Fc:1 Fi:1}



static void Test_BFs1ll_BFs1c_BFs1c_BFu1i()
{
  {
    init_simple_test("BFs1ll_BFs1c_BFs1c_BFu1i");
    static STRUCT_IF_C BFs1ll_BFs1c_BFs1c_BFu1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1c_BFs1c_BFu1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1c_BFs1c_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1c_BFs1c_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1c_BFs1c_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1ll_BFs1c_BFs1c_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1ll_BFs1c_BFs1c_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1c_BFs1c_BFu1i, BFs1ll_BFs1c_BFs1c_BFu1i)
//============================================================================


struct  BFs1ll_BFs1c_BFs1c_BFu1ll  {
  signed __tsi64 v1:1;
  signed char v2:1;
  signed char v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1ll_BFs1c_BFs1c_BFu1ll) C1{ FL:1 Fc:1 Fc:1 FL:1}



static void Test_BFs1ll_BFs1c_BFs1c_BFu1ll()
{
  {
    init_simple_test("BFs1ll_BFs1c_BFs1c_BFu1ll");
    static STRUCT_IF_C BFs1ll_BFs1c_BFs1c_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1c_BFs1c_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1c_BFs1c_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1c_BFs1c_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1c_BFs1c_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1ll_BFs1c_BFs1c_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1ll_BFs1c_BFs1c_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1c_BFs1c_BFu1ll, BFs1ll_BFs1c_BFs1c_BFu1ll)
//============================================================================


struct  BFs1ll_BFs1c_BFs1c_BFu1s  {
  signed __tsi64 v1:1;
  signed char v2:1;
  signed char v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1ll_BFs1c_BFs1c_BFu1s) C1{ FL:1 Fc:1 Fc:1 Fs:1}



static void Test_BFs1ll_BFs1c_BFs1c_BFu1s()
{
  {
    init_simple_test("BFs1ll_BFs1c_BFs1c_BFu1s");
    static STRUCT_IF_C BFs1ll_BFs1c_BFs1c_BFu1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1c_BFs1c_BFu1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1c_BFs1c_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1c_BFs1c_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1c_BFs1c_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1ll_BFs1c_BFs1c_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1ll_BFs1c_BFs1c_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1c_BFs1c_BFu1s, BFs1ll_BFs1c_BFs1c_BFu1s)
//============================================================================


struct  BFs1ll_BFs1c_BFs1i  {
  signed __tsi64 v1:1;
  signed char v2:1;
  signed int v3:1;
};
//SIG(1 BFs1ll_BFs1c_BFs1i) C1{ FL:1 Fc:1 Fi:1}



static void Test_BFs1ll_BFs1c_BFs1i()
{
  {
    init_simple_test("BFs1ll_BFs1c_BFs1i");
    static STRUCT_IF_C BFs1ll_BFs1c_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1c_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1c_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1c_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1c_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1ll_BFs1c_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1c_BFs1i, BFs1ll_BFs1c_BFs1i)
//============================================================================


struct  BFs1ll_BFs1c_BFs1i_BFs1c  {
  signed __tsi64 v1:1;
  signed char v2:1;
  signed int v3:1;
  signed char v4:1;
};
//SIG(1 BFs1ll_BFs1c_BFs1i_BFs1c) C1{ FL:1 Fc:1 Fi:1 Fc:1}



static void Test_BFs1ll_BFs1c_BFs1i_BFs1c()
{
  {
    init_simple_test("BFs1ll_BFs1c_BFs1i_BFs1c");
    static STRUCT_IF_C BFs1ll_BFs1c_BFs1i_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1c_BFs1i_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1c_BFs1i_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1c_BFs1i_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1c_BFs1i_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1ll_BFs1c_BFs1i_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1ll_BFs1c_BFs1i_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1c_BFs1i_BFs1c, BFs1ll_BFs1c_BFs1i_BFs1c)
//============================================================================


struct  BFs1ll_BFs1c_BFs1i_BFs1i  {
  signed __tsi64 v1:1;
  signed char v2:1;
  signed int v3:1;
  signed int v4:1;
};
//SIG(1 BFs1ll_BFs1c_BFs1i_BFs1i) C1{ FL:1 Fc:1 Fi:1 Fi:1}



static void Test_BFs1ll_BFs1c_BFs1i_BFs1i()
{
  {
    init_simple_test("BFs1ll_BFs1c_BFs1i_BFs1i");
    static STRUCT_IF_C BFs1ll_BFs1c_BFs1i_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1c_BFs1i_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1c_BFs1i_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1c_BFs1i_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1c_BFs1i_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1ll_BFs1c_BFs1i_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1ll_BFs1c_BFs1i_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1c_BFs1i_BFs1i, BFs1ll_BFs1c_BFs1i_BFs1i)
//============================================================================


struct  BFs1ll_BFs1c_BFs1i_BFs1ll  {
  signed __tsi64 v1:1;
  signed char v2:1;
  signed int v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1ll_BFs1c_BFs1i_BFs1ll) C1{ FL:1 Fc:1 Fi:1 FL:1}



static void Test_BFs1ll_BFs1c_BFs1i_BFs1ll()
{
  {
    init_simple_test("BFs1ll_BFs1c_BFs1i_BFs1ll");
    static STRUCT_IF_C BFs1ll_BFs1c_BFs1i_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1c_BFs1i_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1c_BFs1i_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1c_BFs1i_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1c_BFs1i_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1ll_BFs1c_BFs1i_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1ll_BFs1c_BFs1i_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1c_BFs1i_BFs1ll, BFs1ll_BFs1c_BFs1i_BFs1ll)
//============================================================================


struct  BFs1ll_BFs1c_BFs1i_BFs1s  {
  signed __tsi64 v1:1;
  signed char v2:1;
  signed int v3:1;
  signed short v4:1;
};
//SIG(1 BFs1ll_BFs1c_BFs1i_BFs1s) C1{ FL:1 Fc:1 Fi:1 Fs:1}



static void Test_BFs1ll_BFs1c_BFs1i_BFs1s()
{
  {
    init_simple_test("BFs1ll_BFs1c_BFs1i_BFs1s");
    static STRUCT_IF_C BFs1ll_BFs1c_BFs1i_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1c_BFs1i_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1c_BFs1i_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1c_BFs1i_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1c_BFs1i_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1ll_BFs1c_BFs1i_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1ll_BFs1c_BFs1i_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1c_BFs1i_BFs1s, BFs1ll_BFs1c_BFs1i_BFs1s)
//============================================================================


struct  BFs1ll_BFs1c_BFs1i_BFu1c  {
  signed __tsi64 v1:1;
  signed char v2:1;
  signed int v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1ll_BFs1c_BFs1i_BFu1c) C1{ FL:1 Fc:1 Fi:1 Fc:1}



static void Test_BFs1ll_BFs1c_BFs1i_BFu1c()
{
  {
    init_simple_test("BFs1ll_BFs1c_BFs1i_BFu1c");
    static STRUCT_IF_C BFs1ll_BFs1c_BFs1i_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1c_BFs1i_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1c_BFs1i_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1c_BFs1i_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1c_BFs1i_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1ll_BFs1c_BFs1i_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1ll_BFs1c_BFs1i_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1c_BFs1i_BFu1c, BFs1ll_BFs1c_BFs1i_BFu1c)
//============================================================================


struct  BFs1ll_BFs1c_BFs1i_BFu1i  {
  signed __tsi64 v1:1;
  signed char v2:1;
  signed int v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1ll_BFs1c_BFs1i_BFu1i) C1{ FL:1 Fc:1 Fi:1 Fi:1}



static void Test_BFs1ll_BFs1c_BFs1i_BFu1i()
{
  {
    init_simple_test("BFs1ll_BFs1c_BFs1i_BFu1i");
    static STRUCT_IF_C BFs1ll_BFs1c_BFs1i_BFu1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1c_BFs1i_BFu1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1c_BFs1i_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1c_BFs1i_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1c_BFs1i_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1ll_BFs1c_BFs1i_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1ll_BFs1c_BFs1i_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1c_BFs1i_BFu1i, BFs1ll_BFs1c_BFs1i_BFu1i)
//============================================================================


struct  BFs1ll_BFs1c_BFs1i_BFu1ll  {
  signed __tsi64 v1:1;
  signed char v2:1;
  signed int v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1ll_BFs1c_BFs1i_BFu1ll) C1{ FL:1 Fc:1 Fi:1 FL:1}



static void Test_BFs1ll_BFs1c_BFs1i_BFu1ll()
{
  {
    init_simple_test("BFs1ll_BFs1c_BFs1i_BFu1ll");
    static STRUCT_IF_C BFs1ll_BFs1c_BFs1i_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1c_BFs1i_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1c_BFs1i_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1c_BFs1i_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1c_BFs1i_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1ll_BFs1c_BFs1i_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1ll_BFs1c_BFs1i_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1c_BFs1i_BFu1ll, BFs1ll_BFs1c_BFs1i_BFu1ll)
//============================================================================


struct  BFs1ll_BFs1c_BFs1i_BFu1s  {
  signed __tsi64 v1:1;
  signed char v2:1;
  signed int v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1ll_BFs1c_BFs1i_BFu1s) C1{ FL:1 Fc:1 Fi:1 Fs:1}



static void Test_BFs1ll_BFs1c_BFs1i_BFu1s()
{
  {
    init_simple_test("BFs1ll_BFs1c_BFs1i_BFu1s");
    static STRUCT_IF_C BFs1ll_BFs1c_BFs1i_BFu1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1c_BFs1i_BFu1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1c_BFs1i_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1c_BFs1i_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1c_BFs1i_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1ll_BFs1c_BFs1i_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1ll_BFs1c_BFs1i_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1c_BFs1i_BFu1s, BFs1ll_BFs1c_BFs1i_BFu1s)
//============================================================================


struct  BFs1ll_BFs1c_BFs1ll  {
  signed __tsi64 v1:1;
  signed char v2:1;
  signed __tsi64 v3:1;
};
//SIG(1 BFs1ll_BFs1c_BFs1ll) C1{ FL:1 Fc:1 FL:1}



static void Test_BFs1ll_BFs1c_BFs1ll()
{
  {
    init_simple_test("BFs1ll_BFs1c_BFs1ll");
    static STRUCT_IF_C BFs1ll_BFs1c_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1c_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1c_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1c_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1c_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1ll_BFs1c_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1c_BFs1ll, BFs1ll_BFs1c_BFs1ll)
//============================================================================


struct  BFs1ll_BFs1c_BFs1ll_BFs1c  {
  signed __tsi64 v1:1;
  signed char v2:1;
  signed __tsi64 v3:1;
  signed char v4:1;
};
//SIG(1 BFs1ll_BFs1c_BFs1ll_BFs1c) C1{ FL:1 Fc:1 FL:1 Fc:1}



static void Test_BFs1ll_BFs1c_BFs1ll_BFs1c()
{
  {
    init_simple_test("BFs1ll_BFs1c_BFs1ll_BFs1c");
    static STRUCT_IF_C BFs1ll_BFs1c_BFs1ll_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1c_BFs1ll_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1c_BFs1ll_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1c_BFs1ll_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1c_BFs1ll_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1ll_BFs1c_BFs1ll_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1ll_BFs1c_BFs1ll_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1c_BFs1ll_BFs1c, BFs1ll_BFs1c_BFs1ll_BFs1c)
//============================================================================


struct  BFs1ll_BFs1c_BFs1ll_BFs1i  {
  signed __tsi64 v1:1;
  signed char v2:1;
  signed __tsi64 v3:1;
  signed int v4:1;
};
//SIG(1 BFs1ll_BFs1c_BFs1ll_BFs1i) C1{ FL:1 Fc:1 FL:1 Fi:1}



static void Test_BFs1ll_BFs1c_BFs1ll_BFs1i()
{
  {
    init_simple_test("BFs1ll_BFs1c_BFs1ll_BFs1i");
    static STRUCT_IF_C BFs1ll_BFs1c_BFs1ll_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1c_BFs1ll_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1c_BFs1ll_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1c_BFs1ll_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1c_BFs1ll_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1ll_BFs1c_BFs1ll_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1ll_BFs1c_BFs1ll_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1c_BFs1ll_BFs1i, BFs1ll_BFs1c_BFs1ll_BFs1i)
//============================================================================


struct  BFs1ll_BFs1c_BFs1ll_BFs1ll  {
  signed __tsi64 v1:1;
  signed char v2:1;
  signed __tsi64 v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1ll_BFs1c_BFs1ll_BFs1ll) C1{ FL:1 Fc:1 FL:1 FL:1}



static void Test_BFs1ll_BFs1c_BFs1ll_BFs1ll()
{
  {
    init_simple_test("BFs1ll_BFs1c_BFs1ll_BFs1ll");
    static STRUCT_IF_C BFs1ll_BFs1c_BFs1ll_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1c_BFs1ll_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1c_BFs1ll_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1c_BFs1ll_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1c_BFs1ll_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1ll_BFs1c_BFs1ll_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1ll_BFs1c_BFs1ll_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1c_BFs1ll_BFs1ll, BFs1ll_BFs1c_BFs1ll_BFs1ll)
//============================================================================


struct  BFs1ll_BFs1c_BFs1ll_BFs1s  {
  signed __tsi64 v1:1;
  signed char v2:1;
  signed __tsi64 v3:1;
  signed short v4:1;
};
//SIG(1 BFs1ll_BFs1c_BFs1ll_BFs1s) C1{ FL:1 Fc:1 FL:1 Fs:1}



static void Test_BFs1ll_BFs1c_BFs1ll_BFs1s()
{
  {
    init_simple_test("BFs1ll_BFs1c_BFs1ll_BFs1s");
    static STRUCT_IF_C BFs1ll_BFs1c_BFs1ll_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1c_BFs1ll_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1c_BFs1ll_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1c_BFs1ll_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1c_BFs1ll_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1ll_BFs1c_BFs1ll_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1ll_BFs1c_BFs1ll_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1c_BFs1ll_BFs1s, BFs1ll_BFs1c_BFs1ll_BFs1s)
//============================================================================


struct  BFs1ll_BFs1c_BFs1ll_BFu1c  {
  signed __tsi64 v1:1;
  signed char v2:1;
  signed __tsi64 v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1ll_BFs1c_BFs1ll_BFu1c) C1{ FL:1 Fc:1 FL:1 Fc:1}



static void Test_BFs1ll_BFs1c_BFs1ll_BFu1c()
{
  {
    init_simple_test("BFs1ll_BFs1c_BFs1ll_BFu1c");
    static STRUCT_IF_C BFs1ll_BFs1c_BFs1ll_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1c_BFs1ll_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1c_BFs1ll_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1c_BFs1ll_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1c_BFs1ll_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1ll_BFs1c_BFs1ll_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1ll_BFs1c_BFs1ll_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1c_BFs1ll_BFu1c, BFs1ll_BFs1c_BFs1ll_BFu1c)
//============================================================================


struct  BFs1ll_BFs1c_BFs1ll_BFu1i  {
  signed __tsi64 v1:1;
  signed char v2:1;
  signed __tsi64 v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1ll_BFs1c_BFs1ll_BFu1i) C1{ FL:1 Fc:1 FL:1 Fi:1}



static void Test_BFs1ll_BFs1c_BFs1ll_BFu1i()
{
  {
    init_simple_test("BFs1ll_BFs1c_BFs1ll_BFu1i");
    static STRUCT_IF_C BFs1ll_BFs1c_BFs1ll_BFu1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1c_BFs1ll_BFu1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1c_BFs1ll_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1c_BFs1ll_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1c_BFs1ll_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1ll_BFs1c_BFs1ll_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1ll_BFs1c_BFs1ll_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1c_BFs1ll_BFu1i, BFs1ll_BFs1c_BFs1ll_BFu1i)
//============================================================================


struct  BFs1ll_BFs1c_BFs1ll_BFu1ll  {
  signed __tsi64 v1:1;
  signed char v2:1;
  signed __tsi64 v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1ll_BFs1c_BFs1ll_BFu1ll) C1{ FL:1 Fc:1 FL:1 FL:1}



static void Test_BFs1ll_BFs1c_BFs1ll_BFu1ll()
{
  {
    init_simple_test("BFs1ll_BFs1c_BFs1ll_BFu1ll");
    static STRUCT_IF_C BFs1ll_BFs1c_BFs1ll_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1c_BFs1ll_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1c_BFs1ll_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1c_BFs1ll_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1c_BFs1ll_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1ll_BFs1c_BFs1ll_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1ll_BFs1c_BFs1ll_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1c_BFs1ll_BFu1ll, BFs1ll_BFs1c_BFs1ll_BFu1ll)
//============================================================================


struct  BFs1ll_BFs1c_BFs1ll_BFu1s  {
  signed __tsi64 v1:1;
  signed char v2:1;
  signed __tsi64 v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1ll_BFs1c_BFs1ll_BFu1s) C1{ FL:1 Fc:1 FL:1 Fs:1}



static void Test_BFs1ll_BFs1c_BFs1ll_BFu1s()
{
  {
    init_simple_test("BFs1ll_BFs1c_BFs1ll_BFu1s");
    static STRUCT_IF_C BFs1ll_BFs1c_BFs1ll_BFu1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1c_BFs1ll_BFu1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1c_BFs1ll_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1c_BFs1ll_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1c_BFs1ll_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1ll_BFs1c_BFs1ll_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1ll_BFs1c_BFs1ll_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1c_BFs1ll_BFu1s, BFs1ll_BFs1c_BFs1ll_BFu1s)
//============================================================================


struct  BFs1ll_BFs1c_BFs1s  {
  signed __tsi64 v1:1;
  signed char v2:1;
  signed short v3:1;
};
//SIG(1 BFs1ll_BFs1c_BFs1s) C1{ FL:1 Fc:1 Fs:1}



static void Test_BFs1ll_BFs1c_BFs1s()
{
  {
    init_simple_test("BFs1ll_BFs1c_BFs1s");
    static STRUCT_IF_C BFs1ll_BFs1c_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1c_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1c_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1c_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1c_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1ll_BFs1c_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1c_BFs1s, BFs1ll_BFs1c_BFs1s)
//============================================================================


struct  BFs1ll_BFs1c_BFs1s_BFs1c  {
  signed __tsi64 v1:1;
  signed char v2:1;
  signed short v3:1;
  signed char v4:1;
};
//SIG(1 BFs1ll_BFs1c_BFs1s_BFs1c) C1{ FL:1 Fc:1 Fs:1 Fc:1}



static void Test_BFs1ll_BFs1c_BFs1s_BFs1c()
{
  {
    init_simple_test("BFs1ll_BFs1c_BFs1s_BFs1c");
    static STRUCT_IF_C BFs1ll_BFs1c_BFs1s_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1c_BFs1s_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1c_BFs1s_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1c_BFs1s_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1c_BFs1s_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1ll_BFs1c_BFs1s_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1ll_BFs1c_BFs1s_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1c_BFs1s_BFs1c, BFs1ll_BFs1c_BFs1s_BFs1c)
//============================================================================


struct  BFs1ll_BFs1c_BFs1s_BFs1i  {
  signed __tsi64 v1:1;
  signed char v2:1;
  signed short v3:1;
  signed int v4:1;
};
//SIG(1 BFs1ll_BFs1c_BFs1s_BFs1i) C1{ FL:1 Fc:1 Fs:1 Fi:1}



static void Test_BFs1ll_BFs1c_BFs1s_BFs1i()
{
  {
    init_simple_test("BFs1ll_BFs1c_BFs1s_BFs1i");
    static STRUCT_IF_C BFs1ll_BFs1c_BFs1s_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1c_BFs1s_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1c_BFs1s_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1c_BFs1s_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1c_BFs1s_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1ll_BFs1c_BFs1s_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1ll_BFs1c_BFs1s_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1c_BFs1s_BFs1i, BFs1ll_BFs1c_BFs1s_BFs1i)
//============================================================================


struct  BFs1ll_BFs1c_BFs1s_BFs1ll  {
  signed __tsi64 v1:1;
  signed char v2:1;
  signed short v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1ll_BFs1c_BFs1s_BFs1ll) C1{ FL:1 Fc:1 Fs:1 FL:1}



static void Test_BFs1ll_BFs1c_BFs1s_BFs1ll()
{
  {
    init_simple_test("BFs1ll_BFs1c_BFs1s_BFs1ll");
    static STRUCT_IF_C BFs1ll_BFs1c_BFs1s_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1c_BFs1s_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1c_BFs1s_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1c_BFs1s_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1c_BFs1s_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1ll_BFs1c_BFs1s_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1ll_BFs1c_BFs1s_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1c_BFs1s_BFs1ll, BFs1ll_BFs1c_BFs1s_BFs1ll)
//============================================================================


struct  BFs1ll_BFs1c_BFs1s_BFs1s  {
  signed __tsi64 v1:1;
  signed char v2:1;
  signed short v3:1;
  signed short v4:1;
};
//SIG(1 BFs1ll_BFs1c_BFs1s_BFs1s) C1{ FL:1 Fc:1 Fs:1 Fs:1}



static void Test_BFs1ll_BFs1c_BFs1s_BFs1s()
{
  {
    init_simple_test("BFs1ll_BFs1c_BFs1s_BFs1s");
    static STRUCT_IF_C BFs1ll_BFs1c_BFs1s_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1c_BFs1s_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1c_BFs1s_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1c_BFs1s_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1c_BFs1s_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1ll_BFs1c_BFs1s_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1ll_BFs1c_BFs1s_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1c_BFs1s_BFs1s, BFs1ll_BFs1c_BFs1s_BFs1s)
//============================================================================


struct  BFs1ll_BFs1c_BFs1s_BFu1c  {
  signed __tsi64 v1:1;
  signed char v2:1;
  signed short v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1ll_BFs1c_BFs1s_BFu1c) C1{ FL:1 Fc:1 Fs:1 Fc:1}



static void Test_BFs1ll_BFs1c_BFs1s_BFu1c()
{
  {
    init_simple_test("BFs1ll_BFs1c_BFs1s_BFu1c");
    static STRUCT_IF_C BFs1ll_BFs1c_BFs1s_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1c_BFs1s_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1c_BFs1s_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1c_BFs1s_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1c_BFs1s_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1ll_BFs1c_BFs1s_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1ll_BFs1c_BFs1s_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1c_BFs1s_BFu1c, BFs1ll_BFs1c_BFs1s_BFu1c)
//============================================================================


struct  BFs1ll_BFs1c_BFs1s_BFu1i  {
  signed __tsi64 v1:1;
  signed char v2:1;
  signed short v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1ll_BFs1c_BFs1s_BFu1i) C1{ FL:1 Fc:1 Fs:1 Fi:1}



static void Test_BFs1ll_BFs1c_BFs1s_BFu1i()
{
  {
    init_simple_test("BFs1ll_BFs1c_BFs1s_BFu1i");
    static STRUCT_IF_C BFs1ll_BFs1c_BFs1s_BFu1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1c_BFs1s_BFu1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1c_BFs1s_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1c_BFs1s_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1c_BFs1s_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1ll_BFs1c_BFs1s_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1ll_BFs1c_BFs1s_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1c_BFs1s_BFu1i, BFs1ll_BFs1c_BFs1s_BFu1i)
//============================================================================


struct  BFs1ll_BFs1c_BFs1s_BFu1ll  {
  signed __tsi64 v1:1;
  signed char v2:1;
  signed short v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1ll_BFs1c_BFs1s_BFu1ll) C1{ FL:1 Fc:1 Fs:1 FL:1}



static void Test_BFs1ll_BFs1c_BFs1s_BFu1ll()
{
  {
    init_simple_test("BFs1ll_BFs1c_BFs1s_BFu1ll");
    static STRUCT_IF_C BFs1ll_BFs1c_BFs1s_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1c_BFs1s_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1c_BFs1s_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1c_BFs1s_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1c_BFs1s_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1ll_BFs1c_BFs1s_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1ll_BFs1c_BFs1s_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1c_BFs1s_BFu1ll, BFs1ll_BFs1c_BFs1s_BFu1ll)
//============================================================================


struct  BFs1ll_BFs1c_BFs1s_BFu1s  {
  signed __tsi64 v1:1;
  signed char v2:1;
  signed short v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1ll_BFs1c_BFs1s_BFu1s) C1{ FL:1 Fc:1 Fs:1 Fs:1}



static void Test_BFs1ll_BFs1c_BFs1s_BFu1s()
{
  {
    init_simple_test("BFs1ll_BFs1c_BFs1s_BFu1s");
    static STRUCT_IF_C BFs1ll_BFs1c_BFs1s_BFu1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1c_BFs1s_BFu1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1c_BFs1s_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1c_BFs1s_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1c_BFs1s_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1ll_BFs1c_BFs1s_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1ll_BFs1c_BFs1s_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1c_BFs1s_BFu1s, BFs1ll_BFs1c_BFs1s_BFu1s)
//============================================================================


struct  BFs1ll_BFs1c_BFu1c  {
  signed __tsi64 v1:1;
  signed char v2:1;
  unsigned char v3:1;
};
//SIG(1 BFs1ll_BFs1c_BFu1c) C1{ FL:1 Fc:1 Fc:1}



static void Test_BFs1ll_BFs1c_BFu1c()
{
  {
    init_simple_test("BFs1ll_BFs1c_BFu1c");
    static STRUCT_IF_C BFs1ll_BFs1c_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1c_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1c_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1c_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1c_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1ll_BFs1c_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1c_BFu1c, BFs1ll_BFs1c_BFu1c)
//============================================================================


struct  BFs1ll_BFs1c_BFu1c_BFs1c  {
  signed __tsi64 v1:1;
  signed char v2:1;
  unsigned char v3:1;
  signed char v4:1;
};
//SIG(1 BFs1ll_BFs1c_BFu1c_BFs1c) C1{ FL:1 Fc:1 Fc:1 Fc:1}



static void Test_BFs1ll_BFs1c_BFu1c_BFs1c()
{
  {
    init_simple_test("BFs1ll_BFs1c_BFu1c_BFs1c");
    static STRUCT_IF_C BFs1ll_BFs1c_BFu1c_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1c_BFu1c_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1c_BFu1c_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1c_BFu1c_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1c_BFu1c_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1ll_BFs1c_BFu1c_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1ll_BFs1c_BFu1c_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1c_BFu1c_BFs1c, BFs1ll_BFs1c_BFu1c_BFs1c)
//============================================================================


struct  BFs1ll_BFs1c_BFu1c_BFs1i  {
  signed __tsi64 v1:1;
  signed char v2:1;
  unsigned char v3:1;
  signed int v4:1;
};
//SIG(1 BFs1ll_BFs1c_BFu1c_BFs1i) C1{ FL:1 Fc:1 Fc:1 Fi:1}



static void Test_BFs1ll_BFs1c_BFu1c_BFs1i()
{
  {
    init_simple_test("BFs1ll_BFs1c_BFu1c_BFs1i");
    static STRUCT_IF_C BFs1ll_BFs1c_BFu1c_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1c_BFu1c_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1c_BFu1c_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1c_BFu1c_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1c_BFu1c_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1ll_BFs1c_BFu1c_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1ll_BFs1c_BFu1c_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1c_BFu1c_BFs1i, BFs1ll_BFs1c_BFu1c_BFs1i)
//============================================================================


struct  BFs1ll_BFs1c_BFu1c_BFs1ll  {
  signed __tsi64 v1:1;
  signed char v2:1;
  unsigned char v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1ll_BFs1c_BFu1c_BFs1ll) C1{ FL:1 Fc:1 Fc:1 FL:1}



static void Test_BFs1ll_BFs1c_BFu1c_BFs1ll()
{
  {
    init_simple_test("BFs1ll_BFs1c_BFu1c_BFs1ll");
    static STRUCT_IF_C BFs1ll_BFs1c_BFu1c_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1c_BFu1c_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1c_BFu1c_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1c_BFu1c_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1c_BFu1c_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1ll_BFs1c_BFu1c_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1ll_BFs1c_BFu1c_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1c_BFu1c_BFs1ll, BFs1ll_BFs1c_BFu1c_BFs1ll)
//============================================================================


struct  BFs1ll_BFs1c_BFu1c_BFs1s  {
  signed __tsi64 v1:1;
  signed char v2:1;
  unsigned char v3:1;
  signed short v4:1;
};
//SIG(1 BFs1ll_BFs1c_BFu1c_BFs1s) C1{ FL:1 Fc:1 Fc:1 Fs:1}



static void Test_BFs1ll_BFs1c_BFu1c_BFs1s()
{
  {
    init_simple_test("BFs1ll_BFs1c_BFu1c_BFs1s");
    static STRUCT_IF_C BFs1ll_BFs1c_BFu1c_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1c_BFu1c_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1c_BFu1c_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1c_BFu1c_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1c_BFu1c_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1ll_BFs1c_BFu1c_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1ll_BFs1c_BFu1c_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1c_BFu1c_BFs1s, BFs1ll_BFs1c_BFu1c_BFs1s)
//============================================================================


struct  BFs1ll_BFs1c_BFu1c_BFu1c  {
  signed __tsi64 v1:1;
  signed char v2:1;
  unsigned char v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1ll_BFs1c_BFu1c_BFu1c) C1{ FL:1 Fc:1 Fc:1 Fc:1}



static void Test_BFs1ll_BFs1c_BFu1c_BFu1c()
{
  {
    init_simple_test("BFs1ll_BFs1c_BFu1c_BFu1c");
    static STRUCT_IF_C BFs1ll_BFs1c_BFu1c_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1c_BFu1c_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1c_BFu1c_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1c_BFu1c_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1c_BFu1c_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1ll_BFs1c_BFu1c_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1ll_BFs1c_BFu1c_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1c_BFu1c_BFu1c, BFs1ll_BFs1c_BFu1c_BFu1c)
//============================================================================


struct  BFs1ll_BFs1c_BFu1c_BFu1i  {
  signed __tsi64 v1:1;
  signed char v2:1;
  unsigned char v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1ll_BFs1c_BFu1c_BFu1i) C1{ FL:1 Fc:1 Fc:1 Fi:1}



static void Test_BFs1ll_BFs1c_BFu1c_BFu1i()
{
  {
    init_simple_test("BFs1ll_BFs1c_BFu1c_BFu1i");
    static STRUCT_IF_C BFs1ll_BFs1c_BFu1c_BFu1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1c_BFu1c_BFu1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1c_BFu1c_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1c_BFu1c_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1c_BFu1c_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1ll_BFs1c_BFu1c_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1ll_BFs1c_BFu1c_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1c_BFu1c_BFu1i, BFs1ll_BFs1c_BFu1c_BFu1i)
//============================================================================


struct  BFs1ll_BFs1c_BFu1c_BFu1ll  {
  signed __tsi64 v1:1;
  signed char v2:1;
  unsigned char v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1ll_BFs1c_BFu1c_BFu1ll) C1{ FL:1 Fc:1 Fc:1 FL:1}



static void Test_BFs1ll_BFs1c_BFu1c_BFu1ll()
{
  {
    init_simple_test("BFs1ll_BFs1c_BFu1c_BFu1ll");
    static STRUCT_IF_C BFs1ll_BFs1c_BFu1c_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1c_BFu1c_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1c_BFu1c_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1c_BFu1c_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1c_BFu1c_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1ll_BFs1c_BFu1c_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1ll_BFs1c_BFu1c_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1c_BFu1c_BFu1ll, BFs1ll_BFs1c_BFu1c_BFu1ll)
//============================================================================


struct  BFs1ll_BFs1c_BFu1c_BFu1s  {
  signed __tsi64 v1:1;
  signed char v2:1;
  unsigned char v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1ll_BFs1c_BFu1c_BFu1s) C1{ FL:1 Fc:1 Fc:1 Fs:1}



static void Test_BFs1ll_BFs1c_BFu1c_BFu1s()
{
  {
    init_simple_test("BFs1ll_BFs1c_BFu1c_BFu1s");
    static STRUCT_IF_C BFs1ll_BFs1c_BFu1c_BFu1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1c_BFu1c_BFu1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1c_BFu1c_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1c_BFu1c_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1c_BFu1c_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1ll_BFs1c_BFu1c_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1ll_BFs1c_BFu1c_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1c_BFu1c_BFu1s, BFs1ll_BFs1c_BFu1c_BFu1s)
//============================================================================


struct  BFs1ll_BFs1c_BFu1i  {
  signed __tsi64 v1:1;
  signed char v2:1;
  unsigned int v3:1;
};
//SIG(1 BFs1ll_BFs1c_BFu1i) C1{ FL:1 Fc:1 Fi:1}



static void Test_BFs1ll_BFs1c_BFu1i()
{
  {
    init_simple_test("BFs1ll_BFs1c_BFu1i");
    static STRUCT_IF_C BFs1ll_BFs1c_BFu1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1c_BFu1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1c_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1c_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1c_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1ll_BFs1c_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1c_BFu1i, BFs1ll_BFs1c_BFu1i)
//============================================================================


struct  BFs1ll_BFs1c_BFu1i_BFs1c  {
  signed __tsi64 v1:1;
  signed char v2:1;
  unsigned int v3:1;
  signed char v4:1;
};
//SIG(1 BFs1ll_BFs1c_BFu1i_BFs1c) C1{ FL:1 Fc:1 Fi:1 Fc:1}



static void Test_BFs1ll_BFs1c_BFu1i_BFs1c()
{
  {
    init_simple_test("BFs1ll_BFs1c_BFu1i_BFs1c");
    static STRUCT_IF_C BFs1ll_BFs1c_BFu1i_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1c_BFu1i_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1c_BFu1i_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1c_BFu1i_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1c_BFu1i_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1ll_BFs1c_BFu1i_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1ll_BFs1c_BFu1i_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1c_BFu1i_BFs1c, BFs1ll_BFs1c_BFu1i_BFs1c)
//============================================================================


struct  BFs1ll_BFs1c_BFu1i_BFs1i  {
  signed __tsi64 v1:1;
  signed char v2:1;
  unsigned int v3:1;
  signed int v4:1;
};
//SIG(1 BFs1ll_BFs1c_BFu1i_BFs1i) C1{ FL:1 Fc:1 Fi:1 Fi:1}



static void Test_BFs1ll_BFs1c_BFu1i_BFs1i()
{
  {
    init_simple_test("BFs1ll_BFs1c_BFu1i_BFs1i");
    static STRUCT_IF_C BFs1ll_BFs1c_BFu1i_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1c_BFu1i_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1c_BFu1i_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1c_BFu1i_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1c_BFu1i_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1ll_BFs1c_BFu1i_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1ll_BFs1c_BFu1i_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1c_BFu1i_BFs1i, BFs1ll_BFs1c_BFu1i_BFs1i)
//============================================================================


struct  BFs1ll_BFs1c_BFu1i_BFs1ll  {
  signed __tsi64 v1:1;
  signed char v2:1;
  unsigned int v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1ll_BFs1c_BFu1i_BFs1ll) C1{ FL:1 Fc:1 Fi:1 FL:1}



static void Test_BFs1ll_BFs1c_BFu1i_BFs1ll()
{
  {
    init_simple_test("BFs1ll_BFs1c_BFu1i_BFs1ll");
    static STRUCT_IF_C BFs1ll_BFs1c_BFu1i_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1c_BFu1i_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1c_BFu1i_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1c_BFu1i_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1c_BFu1i_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1ll_BFs1c_BFu1i_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1ll_BFs1c_BFu1i_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1c_BFu1i_BFs1ll, BFs1ll_BFs1c_BFu1i_BFs1ll)
//============================================================================


struct  BFs1ll_BFs1c_BFu1i_BFs1s  {
  signed __tsi64 v1:1;
  signed char v2:1;
  unsigned int v3:1;
  signed short v4:1;
};
//SIG(1 BFs1ll_BFs1c_BFu1i_BFs1s) C1{ FL:1 Fc:1 Fi:1 Fs:1}



static void Test_BFs1ll_BFs1c_BFu1i_BFs1s()
{
  {
    init_simple_test("BFs1ll_BFs1c_BFu1i_BFs1s");
    static STRUCT_IF_C BFs1ll_BFs1c_BFu1i_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1c_BFu1i_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1c_BFu1i_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1c_BFu1i_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1c_BFu1i_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1ll_BFs1c_BFu1i_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1ll_BFs1c_BFu1i_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1c_BFu1i_BFs1s, BFs1ll_BFs1c_BFu1i_BFs1s)
//============================================================================


struct  BFs1ll_BFs1c_BFu1i_BFu1c  {
  signed __tsi64 v1:1;
  signed char v2:1;
  unsigned int v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1ll_BFs1c_BFu1i_BFu1c) C1{ FL:1 Fc:1 Fi:1 Fc:1}



static void Test_BFs1ll_BFs1c_BFu1i_BFu1c()
{
  {
    init_simple_test("BFs1ll_BFs1c_BFu1i_BFu1c");
    static STRUCT_IF_C BFs1ll_BFs1c_BFu1i_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1c_BFu1i_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1c_BFu1i_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1c_BFu1i_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1c_BFu1i_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1ll_BFs1c_BFu1i_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1ll_BFs1c_BFu1i_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1c_BFu1i_BFu1c, BFs1ll_BFs1c_BFu1i_BFu1c)
//============================================================================


struct  BFs1ll_BFs1c_BFu1i_BFu1i  {
  signed __tsi64 v1:1;
  signed char v2:1;
  unsigned int v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1ll_BFs1c_BFu1i_BFu1i) C1{ FL:1 Fc:1 Fi:1 Fi:1}



static void Test_BFs1ll_BFs1c_BFu1i_BFu1i()
{
  {
    init_simple_test("BFs1ll_BFs1c_BFu1i_BFu1i");
    static STRUCT_IF_C BFs1ll_BFs1c_BFu1i_BFu1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1c_BFu1i_BFu1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1c_BFu1i_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1c_BFu1i_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1c_BFu1i_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1ll_BFs1c_BFu1i_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1ll_BFs1c_BFu1i_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1c_BFu1i_BFu1i, BFs1ll_BFs1c_BFu1i_BFu1i)
//============================================================================


struct  BFs1ll_BFs1c_BFu1i_BFu1ll  {
  signed __tsi64 v1:1;
  signed char v2:1;
  unsigned int v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1ll_BFs1c_BFu1i_BFu1ll) C1{ FL:1 Fc:1 Fi:1 FL:1}



static void Test_BFs1ll_BFs1c_BFu1i_BFu1ll()
{
  {
    init_simple_test("BFs1ll_BFs1c_BFu1i_BFu1ll");
    static STRUCT_IF_C BFs1ll_BFs1c_BFu1i_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1c_BFu1i_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1c_BFu1i_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1c_BFu1i_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1c_BFu1i_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1ll_BFs1c_BFu1i_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1ll_BFs1c_BFu1i_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1c_BFu1i_BFu1ll, BFs1ll_BFs1c_BFu1i_BFu1ll)
//============================================================================


struct  BFs1ll_BFs1c_BFu1i_BFu1s  {
  signed __tsi64 v1:1;
  signed char v2:1;
  unsigned int v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1ll_BFs1c_BFu1i_BFu1s) C1{ FL:1 Fc:1 Fi:1 Fs:1}



static void Test_BFs1ll_BFs1c_BFu1i_BFu1s()
{
  {
    init_simple_test("BFs1ll_BFs1c_BFu1i_BFu1s");
    static STRUCT_IF_C BFs1ll_BFs1c_BFu1i_BFu1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1c_BFu1i_BFu1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1c_BFu1i_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1c_BFu1i_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1c_BFu1i_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1ll_BFs1c_BFu1i_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1ll_BFs1c_BFu1i_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1c_BFu1i_BFu1s, BFs1ll_BFs1c_BFu1i_BFu1s)
//============================================================================


struct  BFs1ll_BFs1c_BFu1ll  {
  signed __tsi64 v1:1;
  signed char v2:1;
  __tsu64 v3:1;
};
//SIG(1 BFs1ll_BFs1c_BFu1ll) C1{ FL:1 Fc:1 FL:1}



static void Test_BFs1ll_BFs1c_BFu1ll()
{
  {
    init_simple_test("BFs1ll_BFs1c_BFu1ll");
    static STRUCT_IF_C BFs1ll_BFs1c_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1c_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1c_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1c_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1c_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1ll_BFs1c_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1c_BFu1ll, BFs1ll_BFs1c_BFu1ll)
//============================================================================


struct  BFs1ll_BFs1c_BFu1ll_BFs1c  {
  signed __tsi64 v1:1;
  signed char v2:1;
  __tsu64 v3:1;
  signed char v4:1;
};
//SIG(1 BFs1ll_BFs1c_BFu1ll_BFs1c) C1{ FL:1 Fc:1 FL:1 Fc:1}



static void Test_BFs1ll_BFs1c_BFu1ll_BFs1c()
{
  {
    init_simple_test("BFs1ll_BFs1c_BFu1ll_BFs1c");
    static STRUCT_IF_C BFs1ll_BFs1c_BFu1ll_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1c_BFu1ll_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1c_BFu1ll_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1c_BFu1ll_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1c_BFu1ll_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1ll_BFs1c_BFu1ll_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1ll_BFs1c_BFu1ll_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1c_BFu1ll_BFs1c, BFs1ll_BFs1c_BFu1ll_BFs1c)
//============================================================================


struct  BFs1ll_BFs1c_BFu1ll_BFs1i  {
  signed __tsi64 v1:1;
  signed char v2:1;
  __tsu64 v3:1;
  signed int v4:1;
};
//SIG(1 BFs1ll_BFs1c_BFu1ll_BFs1i) C1{ FL:1 Fc:1 FL:1 Fi:1}



static void Test_BFs1ll_BFs1c_BFu1ll_BFs1i()
{
  {
    init_simple_test("BFs1ll_BFs1c_BFu1ll_BFs1i");
    static STRUCT_IF_C BFs1ll_BFs1c_BFu1ll_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1c_BFu1ll_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1c_BFu1ll_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1c_BFu1ll_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1c_BFu1ll_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1ll_BFs1c_BFu1ll_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1ll_BFs1c_BFu1ll_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1c_BFu1ll_BFs1i, BFs1ll_BFs1c_BFu1ll_BFs1i)
//============================================================================


struct  BFs1ll_BFs1c_BFu1ll_BFs1ll  {
  signed __tsi64 v1:1;
  signed char v2:1;
  __tsu64 v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1ll_BFs1c_BFu1ll_BFs1ll) C1{ FL:1 Fc:1 FL:1 FL:1}



static void Test_BFs1ll_BFs1c_BFu1ll_BFs1ll()
{
  {
    init_simple_test("BFs1ll_BFs1c_BFu1ll_BFs1ll");
    static STRUCT_IF_C BFs1ll_BFs1c_BFu1ll_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1c_BFu1ll_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1c_BFu1ll_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1c_BFu1ll_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1c_BFu1ll_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1ll_BFs1c_BFu1ll_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1ll_BFs1c_BFu1ll_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1c_BFu1ll_BFs1ll, BFs1ll_BFs1c_BFu1ll_BFs1ll)
//============================================================================


struct  BFs1ll_BFs1c_BFu1ll_BFs1s  {
  signed __tsi64 v1:1;
  signed char v2:1;
  __tsu64 v3:1;
  signed short v4:1;
};
//SIG(1 BFs1ll_BFs1c_BFu1ll_BFs1s) C1{ FL:1 Fc:1 FL:1 Fs:1}



static void Test_BFs1ll_BFs1c_BFu1ll_BFs1s()
{
  {
    init_simple_test("BFs1ll_BFs1c_BFu1ll_BFs1s");
    static STRUCT_IF_C BFs1ll_BFs1c_BFu1ll_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1c_BFu1ll_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1c_BFu1ll_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1c_BFu1ll_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1c_BFu1ll_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1ll_BFs1c_BFu1ll_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1ll_BFs1c_BFu1ll_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1c_BFu1ll_BFs1s, BFs1ll_BFs1c_BFu1ll_BFs1s)
//============================================================================


struct  BFs1ll_BFs1c_BFu1ll_BFu1c  {
  signed __tsi64 v1:1;
  signed char v2:1;
  __tsu64 v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1ll_BFs1c_BFu1ll_BFu1c) C1{ FL:1 Fc:1 FL:1 Fc:1}



static void Test_BFs1ll_BFs1c_BFu1ll_BFu1c()
{
  {
    init_simple_test("BFs1ll_BFs1c_BFu1ll_BFu1c");
    static STRUCT_IF_C BFs1ll_BFs1c_BFu1ll_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1c_BFu1ll_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1c_BFu1ll_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1c_BFu1ll_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1c_BFu1ll_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1ll_BFs1c_BFu1ll_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1ll_BFs1c_BFu1ll_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1c_BFu1ll_BFu1c, BFs1ll_BFs1c_BFu1ll_BFu1c)
//============================================================================


struct  BFs1ll_BFs1c_BFu1ll_BFu1i  {
  signed __tsi64 v1:1;
  signed char v2:1;
  __tsu64 v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1ll_BFs1c_BFu1ll_BFu1i) C1{ FL:1 Fc:1 FL:1 Fi:1}



static void Test_BFs1ll_BFs1c_BFu1ll_BFu1i()
{
  {
    init_simple_test("BFs1ll_BFs1c_BFu1ll_BFu1i");
    static STRUCT_IF_C BFs1ll_BFs1c_BFu1ll_BFu1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1c_BFu1ll_BFu1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1c_BFu1ll_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1c_BFu1ll_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1c_BFu1ll_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1ll_BFs1c_BFu1ll_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1ll_BFs1c_BFu1ll_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1c_BFu1ll_BFu1i, BFs1ll_BFs1c_BFu1ll_BFu1i)
//============================================================================


struct  BFs1ll_BFs1c_BFu1ll_BFu1ll  {
  signed __tsi64 v1:1;
  signed char v2:1;
  __tsu64 v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1ll_BFs1c_BFu1ll_BFu1ll) C1{ FL:1 Fc:1 FL:1 FL:1}



static void Test_BFs1ll_BFs1c_BFu1ll_BFu1ll()
{
  {
    init_simple_test("BFs1ll_BFs1c_BFu1ll_BFu1ll");
    static STRUCT_IF_C BFs1ll_BFs1c_BFu1ll_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1c_BFu1ll_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1c_BFu1ll_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1c_BFu1ll_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1c_BFu1ll_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1ll_BFs1c_BFu1ll_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1ll_BFs1c_BFu1ll_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1c_BFu1ll_BFu1ll, BFs1ll_BFs1c_BFu1ll_BFu1ll)
//============================================================================


struct  BFs1ll_BFs1c_BFu1ll_BFu1s  {
  signed __tsi64 v1:1;
  signed char v2:1;
  __tsu64 v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1ll_BFs1c_BFu1ll_BFu1s) C1{ FL:1 Fc:1 FL:1 Fs:1}



static void Test_BFs1ll_BFs1c_BFu1ll_BFu1s()
{
  {
    init_simple_test("BFs1ll_BFs1c_BFu1ll_BFu1s");
    static STRUCT_IF_C BFs1ll_BFs1c_BFu1ll_BFu1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1c_BFu1ll_BFu1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1c_BFu1ll_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1c_BFu1ll_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1c_BFu1ll_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1ll_BFs1c_BFu1ll_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1ll_BFs1c_BFu1ll_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1c_BFu1ll_BFu1s, BFs1ll_BFs1c_BFu1ll_BFu1s)
//============================================================================


struct  BFs1ll_BFs1c_BFu1s  {
  signed __tsi64 v1:1;
  signed char v2:1;
  unsigned short v3:1;
};
//SIG(1 BFs1ll_BFs1c_BFu1s) C1{ FL:1 Fc:1 Fs:1}



static void Test_BFs1ll_BFs1c_BFu1s()
{
  {
    init_simple_test("BFs1ll_BFs1c_BFu1s");
    static STRUCT_IF_C BFs1ll_BFs1c_BFu1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1c_BFu1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1c_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1c_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1c_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1ll_BFs1c_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1c_BFu1s, BFs1ll_BFs1c_BFu1s)
//============================================================================


struct  BFs1ll_BFs1c_BFu1s_BFs1c  {
  signed __tsi64 v1:1;
  signed char v2:1;
  unsigned short v3:1;
  signed char v4:1;
};
//SIG(1 BFs1ll_BFs1c_BFu1s_BFs1c) C1{ FL:1 Fc:1 Fs:1 Fc:1}



static void Test_BFs1ll_BFs1c_BFu1s_BFs1c()
{
  {
    init_simple_test("BFs1ll_BFs1c_BFu1s_BFs1c");
    static STRUCT_IF_C BFs1ll_BFs1c_BFu1s_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1c_BFu1s_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1c_BFu1s_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1c_BFu1s_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1c_BFu1s_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1ll_BFs1c_BFu1s_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1ll_BFs1c_BFu1s_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1c_BFu1s_BFs1c, BFs1ll_BFs1c_BFu1s_BFs1c)
//============================================================================


struct  BFs1ll_BFs1c_BFu1s_BFs1i  {
  signed __tsi64 v1:1;
  signed char v2:1;
  unsigned short v3:1;
  signed int v4:1;
};
//SIG(1 BFs1ll_BFs1c_BFu1s_BFs1i) C1{ FL:1 Fc:1 Fs:1 Fi:1}



static void Test_BFs1ll_BFs1c_BFu1s_BFs1i()
{
  {
    init_simple_test("BFs1ll_BFs1c_BFu1s_BFs1i");
    static STRUCT_IF_C BFs1ll_BFs1c_BFu1s_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1c_BFu1s_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1c_BFu1s_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1c_BFu1s_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1c_BFu1s_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1ll_BFs1c_BFu1s_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1ll_BFs1c_BFu1s_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1c_BFu1s_BFs1i, BFs1ll_BFs1c_BFu1s_BFs1i)
//============================================================================


struct  BFs1ll_BFs1c_BFu1s_BFs1ll  {
  signed __tsi64 v1:1;
  signed char v2:1;
  unsigned short v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1ll_BFs1c_BFu1s_BFs1ll) C1{ FL:1 Fc:1 Fs:1 FL:1}



static void Test_BFs1ll_BFs1c_BFu1s_BFs1ll()
{
  {
    init_simple_test("BFs1ll_BFs1c_BFu1s_BFs1ll");
    static STRUCT_IF_C BFs1ll_BFs1c_BFu1s_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1c_BFu1s_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1c_BFu1s_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1c_BFu1s_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1c_BFu1s_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1ll_BFs1c_BFu1s_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1ll_BFs1c_BFu1s_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1c_BFu1s_BFs1ll, BFs1ll_BFs1c_BFu1s_BFs1ll)
//============================================================================


struct  BFs1ll_BFs1c_BFu1s_BFs1s  {
  signed __tsi64 v1:1;
  signed char v2:1;
  unsigned short v3:1;
  signed short v4:1;
};
//SIG(1 BFs1ll_BFs1c_BFu1s_BFs1s) C1{ FL:1 Fc:1 Fs:1 Fs:1}



static void Test_BFs1ll_BFs1c_BFu1s_BFs1s()
{
  {
    init_simple_test("BFs1ll_BFs1c_BFu1s_BFs1s");
    static STRUCT_IF_C BFs1ll_BFs1c_BFu1s_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1c_BFu1s_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1c_BFu1s_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1c_BFu1s_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1c_BFu1s_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1ll_BFs1c_BFu1s_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1ll_BFs1c_BFu1s_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1c_BFu1s_BFs1s, BFs1ll_BFs1c_BFu1s_BFs1s)
//============================================================================


struct  BFs1ll_BFs1c_BFu1s_BFu1c  {
  signed __tsi64 v1:1;
  signed char v2:1;
  unsigned short v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1ll_BFs1c_BFu1s_BFu1c) C1{ FL:1 Fc:1 Fs:1 Fc:1}



static void Test_BFs1ll_BFs1c_BFu1s_BFu1c()
{
  {
    init_simple_test("BFs1ll_BFs1c_BFu1s_BFu1c");
    static STRUCT_IF_C BFs1ll_BFs1c_BFu1s_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1c_BFu1s_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1c_BFu1s_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1c_BFu1s_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1c_BFu1s_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1ll_BFs1c_BFu1s_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1ll_BFs1c_BFu1s_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1c_BFu1s_BFu1c, BFs1ll_BFs1c_BFu1s_BFu1c)
//============================================================================


struct  BFs1ll_BFs1c_BFu1s_BFu1i  {
  signed __tsi64 v1:1;
  signed char v2:1;
  unsigned short v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1ll_BFs1c_BFu1s_BFu1i) C1{ FL:1 Fc:1 Fs:1 Fi:1}



static void Test_BFs1ll_BFs1c_BFu1s_BFu1i()
{
  {
    init_simple_test("BFs1ll_BFs1c_BFu1s_BFu1i");
    static STRUCT_IF_C BFs1ll_BFs1c_BFu1s_BFu1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1c_BFu1s_BFu1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1c_BFu1s_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1c_BFu1s_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1c_BFu1s_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1ll_BFs1c_BFu1s_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1ll_BFs1c_BFu1s_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1c_BFu1s_BFu1i, BFs1ll_BFs1c_BFu1s_BFu1i)
//============================================================================


struct  BFs1ll_BFs1c_BFu1s_BFu1ll  {
  signed __tsi64 v1:1;
  signed char v2:1;
  unsigned short v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1ll_BFs1c_BFu1s_BFu1ll) C1{ FL:1 Fc:1 Fs:1 FL:1}



static void Test_BFs1ll_BFs1c_BFu1s_BFu1ll()
{
  {
    init_simple_test("BFs1ll_BFs1c_BFu1s_BFu1ll");
    static STRUCT_IF_C BFs1ll_BFs1c_BFu1s_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1c_BFu1s_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1c_BFu1s_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1c_BFu1s_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1c_BFu1s_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1ll_BFs1c_BFu1s_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1ll_BFs1c_BFu1s_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1c_BFu1s_BFu1ll, BFs1ll_BFs1c_BFu1s_BFu1ll)
//============================================================================


struct  BFs1ll_BFs1c_BFu1s_BFu1s  {
  signed __tsi64 v1:1;
  signed char v2:1;
  unsigned short v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1ll_BFs1c_BFu1s_BFu1s) C1{ FL:1 Fc:1 Fs:1 Fs:1}



static void Test_BFs1ll_BFs1c_BFu1s_BFu1s()
{
  {
    init_simple_test("BFs1ll_BFs1c_BFu1s_BFu1s");
    static STRUCT_IF_C BFs1ll_BFs1c_BFu1s_BFu1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1c_BFu1s_BFu1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1c_BFu1s_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1c_BFu1s_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1c_BFu1s_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1ll_BFs1c_BFu1s_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1ll_BFs1c_BFu1s_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1c_BFu1s_BFu1s, BFs1ll_BFs1c_BFu1s_BFu1s)
//============================================================================


struct  BFs1ll_BFs1i  {
  signed __tsi64 v1:1;
  signed int v2:1;
};
//SIG(1 BFs1ll_BFs1i) C1{ FL:1 Fi:1}



static void Test_BFs1ll_BFs1i()
{
  {
    init_simple_test("BFs1ll_BFs1i");
    static STRUCT_IF_C BFs1ll_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1i, BFs1ll_BFs1i)
//============================================================================


struct  BFs1ll_BFs1i_BFs1c  {
  signed __tsi64 v1:1;
  signed int v2:1;
  signed char v3:1;
};
//SIG(1 BFs1ll_BFs1i_BFs1c) C1{ FL:1 Fi:1 Fc:1}



static void Test_BFs1ll_BFs1i_BFs1c()
{
  {
    init_simple_test("BFs1ll_BFs1i_BFs1c");
    static STRUCT_IF_C BFs1ll_BFs1i_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1i_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1i_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1i_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1i_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1ll_BFs1i_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1i_BFs1c, BFs1ll_BFs1i_BFs1c)
//============================================================================


struct  BFs1ll_BFs1i_BFs1c_BFs1c  {
  signed __tsi64 v1:1;
  signed int v2:1;
  signed char v3:1;
  signed char v4:1;
};
//SIG(1 BFs1ll_BFs1i_BFs1c_BFs1c) C1{ FL:1 Fi:1 Fc:1 Fc:1}



static void Test_BFs1ll_BFs1i_BFs1c_BFs1c()
{
  {
    init_simple_test("BFs1ll_BFs1i_BFs1c_BFs1c");
    static STRUCT_IF_C BFs1ll_BFs1i_BFs1c_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1i_BFs1c_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1i_BFs1c_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1i_BFs1c_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1i_BFs1c_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1ll_BFs1i_BFs1c_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1ll_BFs1i_BFs1c_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1i_BFs1c_BFs1c, BFs1ll_BFs1i_BFs1c_BFs1c)
//============================================================================


struct  BFs1ll_BFs1i_BFs1c_BFs1i  {
  signed __tsi64 v1:1;
  signed int v2:1;
  signed char v3:1;
  signed int v4:1;
};
//SIG(1 BFs1ll_BFs1i_BFs1c_BFs1i) C1{ FL:1 Fi:1 Fc:1 Fi:1}



static void Test_BFs1ll_BFs1i_BFs1c_BFs1i()
{
  {
    init_simple_test("BFs1ll_BFs1i_BFs1c_BFs1i");
    static STRUCT_IF_C BFs1ll_BFs1i_BFs1c_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1i_BFs1c_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1i_BFs1c_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1i_BFs1c_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1i_BFs1c_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1ll_BFs1i_BFs1c_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1ll_BFs1i_BFs1c_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1i_BFs1c_BFs1i, BFs1ll_BFs1i_BFs1c_BFs1i)
//============================================================================


struct  BFs1ll_BFs1i_BFs1c_BFs1ll  {
  signed __tsi64 v1:1;
  signed int v2:1;
  signed char v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1ll_BFs1i_BFs1c_BFs1ll) C1{ FL:1 Fi:1 Fc:1 FL:1}



static void Test_BFs1ll_BFs1i_BFs1c_BFs1ll()
{
  {
    init_simple_test("BFs1ll_BFs1i_BFs1c_BFs1ll");
    static STRUCT_IF_C BFs1ll_BFs1i_BFs1c_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1i_BFs1c_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1i_BFs1c_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1i_BFs1c_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1i_BFs1c_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1ll_BFs1i_BFs1c_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1ll_BFs1i_BFs1c_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1i_BFs1c_BFs1ll, BFs1ll_BFs1i_BFs1c_BFs1ll)
//============================================================================


struct  BFs1ll_BFs1i_BFs1c_BFs1s  {
  signed __tsi64 v1:1;
  signed int v2:1;
  signed char v3:1;
  signed short v4:1;
};
//SIG(1 BFs1ll_BFs1i_BFs1c_BFs1s) C1{ FL:1 Fi:1 Fc:1 Fs:1}



static void Test_BFs1ll_BFs1i_BFs1c_BFs1s()
{
  {
    init_simple_test("BFs1ll_BFs1i_BFs1c_BFs1s");
    static STRUCT_IF_C BFs1ll_BFs1i_BFs1c_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1i_BFs1c_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1i_BFs1c_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1i_BFs1c_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1i_BFs1c_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1ll_BFs1i_BFs1c_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1ll_BFs1i_BFs1c_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1i_BFs1c_BFs1s, BFs1ll_BFs1i_BFs1c_BFs1s)
//============================================================================


struct  BFs1ll_BFs1i_BFs1c_BFu1c  {
  signed __tsi64 v1:1;
  signed int v2:1;
  signed char v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1ll_BFs1i_BFs1c_BFu1c) C1{ FL:1 Fi:1 Fc:1 Fc:1}



static void Test_BFs1ll_BFs1i_BFs1c_BFu1c()
{
  {
    init_simple_test("BFs1ll_BFs1i_BFs1c_BFu1c");
    static STRUCT_IF_C BFs1ll_BFs1i_BFs1c_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1i_BFs1c_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1i_BFs1c_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1i_BFs1c_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1i_BFs1c_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1ll_BFs1i_BFs1c_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1ll_BFs1i_BFs1c_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1i_BFs1c_BFu1c, BFs1ll_BFs1i_BFs1c_BFu1c)
//============================================================================


struct  BFs1ll_BFs1i_BFs1c_BFu1i  {
  signed __tsi64 v1:1;
  signed int v2:1;
  signed char v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1ll_BFs1i_BFs1c_BFu1i) C1{ FL:1 Fi:1 Fc:1 Fi:1}



static void Test_BFs1ll_BFs1i_BFs1c_BFu1i()
{
  {
    init_simple_test("BFs1ll_BFs1i_BFs1c_BFu1i");
    static STRUCT_IF_C BFs1ll_BFs1i_BFs1c_BFu1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1i_BFs1c_BFu1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1i_BFs1c_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1i_BFs1c_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1i_BFs1c_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1ll_BFs1i_BFs1c_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1ll_BFs1i_BFs1c_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1i_BFs1c_BFu1i, BFs1ll_BFs1i_BFs1c_BFu1i)
//============================================================================


struct  BFs1ll_BFs1i_BFs1c_BFu1ll  {
  signed __tsi64 v1:1;
  signed int v2:1;
  signed char v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1ll_BFs1i_BFs1c_BFu1ll) C1{ FL:1 Fi:1 Fc:1 FL:1}



static void Test_BFs1ll_BFs1i_BFs1c_BFu1ll()
{
  {
    init_simple_test("BFs1ll_BFs1i_BFs1c_BFu1ll");
    static STRUCT_IF_C BFs1ll_BFs1i_BFs1c_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1i_BFs1c_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1i_BFs1c_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1i_BFs1c_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1i_BFs1c_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1ll_BFs1i_BFs1c_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1ll_BFs1i_BFs1c_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1i_BFs1c_BFu1ll, BFs1ll_BFs1i_BFs1c_BFu1ll)
//============================================================================


struct  BFs1ll_BFs1i_BFs1c_BFu1s  {
  signed __tsi64 v1:1;
  signed int v2:1;
  signed char v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1ll_BFs1i_BFs1c_BFu1s) C1{ FL:1 Fi:1 Fc:1 Fs:1}



static void Test_BFs1ll_BFs1i_BFs1c_BFu1s()
{
  {
    init_simple_test("BFs1ll_BFs1i_BFs1c_BFu1s");
    static STRUCT_IF_C BFs1ll_BFs1i_BFs1c_BFu1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1i_BFs1c_BFu1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1i_BFs1c_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1i_BFs1c_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1i_BFs1c_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1ll_BFs1i_BFs1c_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1ll_BFs1i_BFs1c_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1i_BFs1c_BFu1s, BFs1ll_BFs1i_BFs1c_BFu1s)
//============================================================================


struct  BFs1ll_BFs1i_BFs1i  {
  signed __tsi64 v1:1;
  signed int v2:1;
  signed int v3:1;
};
//SIG(1 BFs1ll_BFs1i_BFs1i) C1{ FL:1 Fi:1 Fi:1}



static void Test_BFs1ll_BFs1i_BFs1i()
{
  {
    init_simple_test("BFs1ll_BFs1i_BFs1i");
    static STRUCT_IF_C BFs1ll_BFs1i_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1i_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1i_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1i_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1i_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1ll_BFs1i_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1i_BFs1i, BFs1ll_BFs1i_BFs1i)
//============================================================================


struct  BFs1ll_BFs1i_BFs1i_BFs1c  {
  signed __tsi64 v1:1;
  signed int v2:1;
  signed int v3:1;
  signed char v4:1;
};
//SIG(1 BFs1ll_BFs1i_BFs1i_BFs1c) C1{ FL:1 Fi:1 Fi:1 Fc:1}



static void Test_BFs1ll_BFs1i_BFs1i_BFs1c()
{
  {
    init_simple_test("BFs1ll_BFs1i_BFs1i_BFs1c");
    static STRUCT_IF_C BFs1ll_BFs1i_BFs1i_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1i_BFs1i_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1i_BFs1i_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1i_BFs1i_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1i_BFs1i_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1ll_BFs1i_BFs1i_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1ll_BFs1i_BFs1i_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1i_BFs1i_BFs1c, BFs1ll_BFs1i_BFs1i_BFs1c)
//============================================================================


struct  BFs1ll_BFs1i_BFs1i_BFs1i  {
  signed __tsi64 v1:1;
  signed int v2:1;
  signed int v3:1;
  signed int v4:1;
};
//SIG(1 BFs1ll_BFs1i_BFs1i_BFs1i) C1{ FL:1 Fi:1 Fi:1 Fi:1}



static void Test_BFs1ll_BFs1i_BFs1i_BFs1i()
{
  {
    init_simple_test("BFs1ll_BFs1i_BFs1i_BFs1i");
    static STRUCT_IF_C BFs1ll_BFs1i_BFs1i_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1i_BFs1i_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1i_BFs1i_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1i_BFs1i_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1i_BFs1i_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1ll_BFs1i_BFs1i_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1ll_BFs1i_BFs1i_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1i_BFs1i_BFs1i, BFs1ll_BFs1i_BFs1i_BFs1i)
//============================================================================


struct  BFs1ll_BFs1i_BFs1i_BFs1ll  {
  signed __tsi64 v1:1;
  signed int v2:1;
  signed int v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1ll_BFs1i_BFs1i_BFs1ll) C1{ FL:1 Fi:1 Fi:1 FL:1}



static void Test_BFs1ll_BFs1i_BFs1i_BFs1ll()
{
  {
    init_simple_test("BFs1ll_BFs1i_BFs1i_BFs1ll");
    static STRUCT_IF_C BFs1ll_BFs1i_BFs1i_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1i_BFs1i_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1i_BFs1i_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1i_BFs1i_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1i_BFs1i_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1ll_BFs1i_BFs1i_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1ll_BFs1i_BFs1i_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1i_BFs1i_BFs1ll, BFs1ll_BFs1i_BFs1i_BFs1ll)
//============================================================================


struct  BFs1ll_BFs1i_BFs1i_BFs1s  {
  signed __tsi64 v1:1;
  signed int v2:1;
  signed int v3:1;
  signed short v4:1;
};
//SIG(1 BFs1ll_BFs1i_BFs1i_BFs1s) C1{ FL:1 Fi:1 Fi:1 Fs:1}



static void Test_BFs1ll_BFs1i_BFs1i_BFs1s()
{
  {
    init_simple_test("BFs1ll_BFs1i_BFs1i_BFs1s");
    static STRUCT_IF_C BFs1ll_BFs1i_BFs1i_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1i_BFs1i_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1i_BFs1i_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1i_BFs1i_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1i_BFs1i_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1ll_BFs1i_BFs1i_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1ll_BFs1i_BFs1i_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1i_BFs1i_BFs1s, BFs1ll_BFs1i_BFs1i_BFs1s)
//============================================================================


struct  BFs1ll_BFs1i_BFs1i_BFu1c  {
  signed __tsi64 v1:1;
  signed int v2:1;
  signed int v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1ll_BFs1i_BFs1i_BFu1c) C1{ FL:1 Fi:1 Fi:1 Fc:1}



static void Test_BFs1ll_BFs1i_BFs1i_BFu1c()
{
  {
    init_simple_test("BFs1ll_BFs1i_BFs1i_BFu1c");
    static STRUCT_IF_C BFs1ll_BFs1i_BFs1i_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1i_BFs1i_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1i_BFs1i_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1i_BFs1i_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1i_BFs1i_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1ll_BFs1i_BFs1i_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1ll_BFs1i_BFs1i_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1i_BFs1i_BFu1c, BFs1ll_BFs1i_BFs1i_BFu1c)
//============================================================================


struct  BFs1ll_BFs1i_BFs1i_BFu1i  {
  signed __tsi64 v1:1;
  signed int v2:1;
  signed int v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1ll_BFs1i_BFs1i_BFu1i) C1{ FL:1 Fi:1 Fi:1 Fi:1}



static void Test_BFs1ll_BFs1i_BFs1i_BFu1i()
{
  {
    init_simple_test("BFs1ll_BFs1i_BFs1i_BFu1i");
    static STRUCT_IF_C BFs1ll_BFs1i_BFs1i_BFu1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1i_BFs1i_BFu1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1i_BFs1i_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1i_BFs1i_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1i_BFs1i_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1ll_BFs1i_BFs1i_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1ll_BFs1i_BFs1i_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1i_BFs1i_BFu1i, BFs1ll_BFs1i_BFs1i_BFu1i)
//============================================================================


struct  BFs1ll_BFs1i_BFs1i_BFu1ll  {
  signed __tsi64 v1:1;
  signed int v2:1;
  signed int v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1ll_BFs1i_BFs1i_BFu1ll) C1{ FL:1 Fi:1 Fi:1 FL:1}



static void Test_BFs1ll_BFs1i_BFs1i_BFu1ll()
{
  {
    init_simple_test("BFs1ll_BFs1i_BFs1i_BFu1ll");
    static STRUCT_IF_C BFs1ll_BFs1i_BFs1i_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1i_BFs1i_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1i_BFs1i_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1i_BFs1i_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1i_BFs1i_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1ll_BFs1i_BFs1i_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1ll_BFs1i_BFs1i_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1i_BFs1i_BFu1ll, BFs1ll_BFs1i_BFs1i_BFu1ll)
//============================================================================


struct  BFs1ll_BFs1i_BFs1i_BFu1s  {
  signed __tsi64 v1:1;
  signed int v2:1;
  signed int v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1ll_BFs1i_BFs1i_BFu1s) C1{ FL:1 Fi:1 Fi:1 Fs:1}



static void Test_BFs1ll_BFs1i_BFs1i_BFu1s()
{
  {
    init_simple_test("BFs1ll_BFs1i_BFs1i_BFu1s");
    static STRUCT_IF_C BFs1ll_BFs1i_BFs1i_BFu1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1i_BFs1i_BFu1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1i_BFs1i_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1i_BFs1i_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1i_BFs1i_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1ll_BFs1i_BFs1i_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1ll_BFs1i_BFs1i_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1i_BFs1i_BFu1s, BFs1ll_BFs1i_BFs1i_BFu1s)
//============================================================================


struct  BFs1ll_BFs1i_BFs1ll  {
  signed __tsi64 v1:1;
  signed int v2:1;
  signed __tsi64 v3:1;
};
//SIG(1 BFs1ll_BFs1i_BFs1ll) C1{ FL:1 Fi:1 FL:1}



static void Test_BFs1ll_BFs1i_BFs1ll()
{
  {
    init_simple_test("BFs1ll_BFs1i_BFs1ll");
    static STRUCT_IF_C BFs1ll_BFs1i_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1i_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1i_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1i_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1i_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1ll_BFs1i_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1i_BFs1ll, BFs1ll_BFs1i_BFs1ll)
//============================================================================


struct  BFs1ll_BFs1i_BFs1ll_BFs1c  {
  signed __tsi64 v1:1;
  signed int v2:1;
  signed __tsi64 v3:1;
  signed char v4:1;
};
//SIG(1 BFs1ll_BFs1i_BFs1ll_BFs1c) C1{ FL:1 Fi:1 FL:1 Fc:1}



static void Test_BFs1ll_BFs1i_BFs1ll_BFs1c()
{
  {
    init_simple_test("BFs1ll_BFs1i_BFs1ll_BFs1c");
    static STRUCT_IF_C BFs1ll_BFs1i_BFs1ll_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1i_BFs1ll_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1i_BFs1ll_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1i_BFs1ll_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1i_BFs1ll_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1ll_BFs1i_BFs1ll_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1ll_BFs1i_BFs1ll_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1i_BFs1ll_BFs1c, BFs1ll_BFs1i_BFs1ll_BFs1c)
//============================================================================


struct  BFs1ll_BFs1i_BFs1ll_BFs1i  {
  signed __tsi64 v1:1;
  signed int v2:1;
  signed __tsi64 v3:1;
  signed int v4:1;
};
//SIG(1 BFs1ll_BFs1i_BFs1ll_BFs1i) C1{ FL:1 Fi:1 FL:1 Fi:1}



static void Test_BFs1ll_BFs1i_BFs1ll_BFs1i()
{
  {
    init_simple_test("BFs1ll_BFs1i_BFs1ll_BFs1i");
    static STRUCT_IF_C BFs1ll_BFs1i_BFs1ll_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1i_BFs1ll_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1i_BFs1ll_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1i_BFs1ll_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1i_BFs1ll_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1ll_BFs1i_BFs1ll_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1ll_BFs1i_BFs1ll_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1i_BFs1ll_BFs1i, BFs1ll_BFs1i_BFs1ll_BFs1i)
//============================================================================


struct  BFs1ll_BFs1i_BFs1ll_BFs1ll  {
  signed __tsi64 v1:1;
  signed int v2:1;
  signed __tsi64 v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1ll_BFs1i_BFs1ll_BFs1ll) C1{ FL:1 Fi:1 FL:1 FL:1}



static void Test_BFs1ll_BFs1i_BFs1ll_BFs1ll()
{
  {
    init_simple_test("BFs1ll_BFs1i_BFs1ll_BFs1ll");
    static STRUCT_IF_C BFs1ll_BFs1i_BFs1ll_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1i_BFs1ll_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1i_BFs1ll_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1i_BFs1ll_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1i_BFs1ll_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1ll_BFs1i_BFs1ll_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1ll_BFs1i_BFs1ll_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1i_BFs1ll_BFs1ll, BFs1ll_BFs1i_BFs1ll_BFs1ll)
//============================================================================


struct  BFs1ll_BFs1i_BFs1ll_BFs1s  {
  signed __tsi64 v1:1;
  signed int v2:1;
  signed __tsi64 v3:1;
  signed short v4:1;
};
//SIG(1 BFs1ll_BFs1i_BFs1ll_BFs1s) C1{ FL:1 Fi:1 FL:1 Fs:1}



static void Test_BFs1ll_BFs1i_BFs1ll_BFs1s()
{
  {
    init_simple_test("BFs1ll_BFs1i_BFs1ll_BFs1s");
    static STRUCT_IF_C BFs1ll_BFs1i_BFs1ll_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1i_BFs1ll_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1i_BFs1ll_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1i_BFs1ll_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1i_BFs1ll_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1ll_BFs1i_BFs1ll_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1ll_BFs1i_BFs1ll_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1i_BFs1ll_BFs1s, BFs1ll_BFs1i_BFs1ll_BFs1s)
//============================================================================


struct  BFs1ll_BFs1i_BFs1ll_BFu1c  {
  signed __tsi64 v1:1;
  signed int v2:1;
  signed __tsi64 v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1ll_BFs1i_BFs1ll_BFu1c) C1{ FL:1 Fi:1 FL:1 Fc:1}



static void Test_BFs1ll_BFs1i_BFs1ll_BFu1c()
{
  {
    init_simple_test("BFs1ll_BFs1i_BFs1ll_BFu1c");
    static STRUCT_IF_C BFs1ll_BFs1i_BFs1ll_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1i_BFs1ll_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1i_BFs1ll_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1i_BFs1ll_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1i_BFs1ll_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1ll_BFs1i_BFs1ll_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1ll_BFs1i_BFs1ll_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1i_BFs1ll_BFu1c, BFs1ll_BFs1i_BFs1ll_BFu1c)
//============================================================================


struct  BFs1ll_BFs1i_BFs1ll_BFu1i  {
  signed __tsi64 v1:1;
  signed int v2:1;
  signed __tsi64 v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1ll_BFs1i_BFs1ll_BFu1i) C1{ FL:1 Fi:1 FL:1 Fi:1}



static void Test_BFs1ll_BFs1i_BFs1ll_BFu1i()
{
  {
    init_simple_test("BFs1ll_BFs1i_BFs1ll_BFu1i");
    static STRUCT_IF_C BFs1ll_BFs1i_BFs1ll_BFu1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1i_BFs1ll_BFu1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1i_BFs1ll_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1i_BFs1ll_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1i_BFs1ll_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1ll_BFs1i_BFs1ll_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1ll_BFs1i_BFs1ll_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1i_BFs1ll_BFu1i, BFs1ll_BFs1i_BFs1ll_BFu1i)
//============================================================================


struct  BFs1ll_BFs1i_BFs1ll_BFu1ll  {
  signed __tsi64 v1:1;
  signed int v2:1;
  signed __tsi64 v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1ll_BFs1i_BFs1ll_BFu1ll) C1{ FL:1 Fi:1 FL:1 FL:1}



static void Test_BFs1ll_BFs1i_BFs1ll_BFu1ll()
{
  {
    init_simple_test("BFs1ll_BFs1i_BFs1ll_BFu1ll");
    static STRUCT_IF_C BFs1ll_BFs1i_BFs1ll_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1i_BFs1ll_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1i_BFs1ll_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1i_BFs1ll_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1i_BFs1ll_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1ll_BFs1i_BFs1ll_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1ll_BFs1i_BFs1ll_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1i_BFs1ll_BFu1ll, BFs1ll_BFs1i_BFs1ll_BFu1ll)
//============================================================================


struct  BFs1ll_BFs1i_BFs1ll_BFu1s  {
  signed __tsi64 v1:1;
  signed int v2:1;
  signed __tsi64 v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1ll_BFs1i_BFs1ll_BFu1s) C1{ FL:1 Fi:1 FL:1 Fs:1}



static void Test_BFs1ll_BFs1i_BFs1ll_BFu1s()
{
  {
    init_simple_test("BFs1ll_BFs1i_BFs1ll_BFu1s");
    static STRUCT_IF_C BFs1ll_BFs1i_BFs1ll_BFu1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1i_BFs1ll_BFu1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1i_BFs1ll_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1i_BFs1ll_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1i_BFs1ll_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1ll_BFs1i_BFs1ll_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1ll_BFs1i_BFs1ll_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1i_BFs1ll_BFu1s, BFs1ll_BFs1i_BFs1ll_BFu1s)
//============================================================================


struct  BFs1ll_BFs1i_BFs1s  {
  signed __tsi64 v1:1;
  signed int v2:1;
  signed short v3:1;
};
//SIG(1 BFs1ll_BFs1i_BFs1s) C1{ FL:1 Fi:1 Fs:1}



static void Test_BFs1ll_BFs1i_BFs1s()
{
  {
    init_simple_test("BFs1ll_BFs1i_BFs1s");
    static STRUCT_IF_C BFs1ll_BFs1i_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1i_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1i_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1i_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1i_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1ll_BFs1i_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1i_BFs1s, BFs1ll_BFs1i_BFs1s)
//============================================================================


struct  BFs1ll_BFs1i_BFs1s_BFs1c  {
  signed __tsi64 v1:1;
  signed int v2:1;
  signed short v3:1;
  signed char v4:1;
};
//SIG(1 BFs1ll_BFs1i_BFs1s_BFs1c) C1{ FL:1 Fi:1 Fs:1 Fc:1}



static void Test_BFs1ll_BFs1i_BFs1s_BFs1c()
{
  {
    init_simple_test("BFs1ll_BFs1i_BFs1s_BFs1c");
    static STRUCT_IF_C BFs1ll_BFs1i_BFs1s_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1i_BFs1s_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1i_BFs1s_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1i_BFs1s_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1i_BFs1s_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1ll_BFs1i_BFs1s_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1ll_BFs1i_BFs1s_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1i_BFs1s_BFs1c, BFs1ll_BFs1i_BFs1s_BFs1c)
//============================================================================


struct  BFs1ll_BFs1i_BFs1s_BFs1i  {
  signed __tsi64 v1:1;
  signed int v2:1;
  signed short v3:1;
  signed int v4:1;
};
//SIG(1 BFs1ll_BFs1i_BFs1s_BFs1i) C1{ FL:1 Fi:1 Fs:1 Fi:1}



static void Test_BFs1ll_BFs1i_BFs1s_BFs1i()
{
  {
    init_simple_test("BFs1ll_BFs1i_BFs1s_BFs1i");
    static STRUCT_IF_C BFs1ll_BFs1i_BFs1s_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1i_BFs1s_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1i_BFs1s_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1i_BFs1s_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1i_BFs1s_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1ll_BFs1i_BFs1s_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1ll_BFs1i_BFs1s_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1i_BFs1s_BFs1i, BFs1ll_BFs1i_BFs1s_BFs1i)
//============================================================================


struct  BFs1ll_BFs1i_BFs1s_BFs1ll  {
  signed __tsi64 v1:1;
  signed int v2:1;
  signed short v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1ll_BFs1i_BFs1s_BFs1ll) C1{ FL:1 Fi:1 Fs:1 FL:1}



static void Test_BFs1ll_BFs1i_BFs1s_BFs1ll()
{
  {
    init_simple_test("BFs1ll_BFs1i_BFs1s_BFs1ll");
    static STRUCT_IF_C BFs1ll_BFs1i_BFs1s_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1i_BFs1s_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1i_BFs1s_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1i_BFs1s_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1i_BFs1s_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1ll_BFs1i_BFs1s_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1ll_BFs1i_BFs1s_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1i_BFs1s_BFs1ll, BFs1ll_BFs1i_BFs1s_BFs1ll)
//============================================================================


struct  BFs1ll_BFs1i_BFs1s_BFs1s  {
  signed __tsi64 v1:1;
  signed int v2:1;
  signed short v3:1;
  signed short v4:1;
};
//SIG(1 BFs1ll_BFs1i_BFs1s_BFs1s) C1{ FL:1 Fi:1 Fs:1 Fs:1}



static void Test_BFs1ll_BFs1i_BFs1s_BFs1s()
{
  {
    init_simple_test("BFs1ll_BFs1i_BFs1s_BFs1s");
    static STRUCT_IF_C BFs1ll_BFs1i_BFs1s_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1i_BFs1s_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1i_BFs1s_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1i_BFs1s_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1i_BFs1s_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1ll_BFs1i_BFs1s_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1ll_BFs1i_BFs1s_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1i_BFs1s_BFs1s, BFs1ll_BFs1i_BFs1s_BFs1s)
//============================================================================


struct  BFs1ll_BFs1i_BFs1s_BFu1c  {
  signed __tsi64 v1:1;
  signed int v2:1;
  signed short v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1ll_BFs1i_BFs1s_BFu1c) C1{ FL:1 Fi:1 Fs:1 Fc:1}



static void Test_BFs1ll_BFs1i_BFs1s_BFu1c()
{
  {
    init_simple_test("BFs1ll_BFs1i_BFs1s_BFu1c");
    static STRUCT_IF_C BFs1ll_BFs1i_BFs1s_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1i_BFs1s_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1i_BFs1s_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1i_BFs1s_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1i_BFs1s_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1ll_BFs1i_BFs1s_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1ll_BFs1i_BFs1s_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1i_BFs1s_BFu1c, BFs1ll_BFs1i_BFs1s_BFu1c)
//============================================================================


struct  BFs1ll_BFs1i_BFs1s_BFu1i  {
  signed __tsi64 v1:1;
  signed int v2:1;
  signed short v3:1;
  unsigned int v4:1;
};
//SIG(1 BFs1ll_BFs1i_BFs1s_BFu1i) C1{ FL:1 Fi:1 Fs:1 Fi:1}



static void Test_BFs1ll_BFs1i_BFs1s_BFu1i()
{
  {
    init_simple_test("BFs1ll_BFs1i_BFs1s_BFu1i");
    static STRUCT_IF_C BFs1ll_BFs1i_BFs1s_BFu1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1i_BFs1s_BFu1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1i_BFs1s_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1i_BFs1s_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1i_BFs1s_BFu1i");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1ll_BFs1i_BFs1s_BFu1i");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1ll_BFs1i_BFs1s_BFu1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1i_BFs1s_BFu1i, BFs1ll_BFs1i_BFs1s_BFu1i)
//============================================================================


struct  BFs1ll_BFs1i_BFs1s_BFu1ll  {
  signed __tsi64 v1:1;
  signed int v2:1;
  signed short v3:1;
  __tsu64 v4:1;
};
//SIG(1 BFs1ll_BFs1i_BFs1s_BFu1ll) C1{ FL:1 Fi:1 Fs:1 FL:1}



static void Test_BFs1ll_BFs1i_BFs1s_BFu1ll()
{
  {
    init_simple_test("BFs1ll_BFs1i_BFs1s_BFu1ll");
    static STRUCT_IF_C BFs1ll_BFs1i_BFs1s_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1i_BFs1s_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1i_BFs1s_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1i_BFs1s_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1i_BFs1s_BFu1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1ll_BFs1i_BFs1s_BFu1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1ll_BFs1i_BFs1s_BFu1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1i_BFs1s_BFu1ll, BFs1ll_BFs1i_BFs1s_BFu1ll)
//============================================================================


struct  BFs1ll_BFs1i_BFs1s_BFu1s  {
  signed __tsi64 v1:1;
  signed int v2:1;
  signed short v3:1;
  unsigned short v4:1;
};
//SIG(1 BFs1ll_BFs1i_BFs1s_BFu1s) C1{ FL:1 Fi:1 Fs:1 Fs:1}



static void Test_BFs1ll_BFs1i_BFs1s_BFu1s()
{
  {
    init_simple_test("BFs1ll_BFs1i_BFs1s_BFu1s");
    static STRUCT_IF_C BFs1ll_BFs1i_BFs1s_BFu1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1i_BFs1s_BFu1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1i_BFs1s_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1i_BFs1s_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1i_BFs1s_BFu1s");
    set_bf_and_test(lv, v3, 0, 2, 1, -1, "BFs1ll_BFs1i_BFs1s_BFu1s");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1ll_BFs1i_BFs1s_BFu1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1i_BFs1s_BFu1s, BFs1ll_BFs1i_BFs1s_BFu1s)
//============================================================================


struct  BFs1ll_BFs1i_BFu1c  {
  signed __tsi64 v1:1;
  signed int v2:1;
  unsigned char v3:1;
};
//SIG(1 BFs1ll_BFs1i_BFu1c) C1{ FL:1 Fi:1 Fc:1}



static void Test_BFs1ll_BFs1i_BFu1c()
{
  {
    init_simple_test("BFs1ll_BFs1i_BFu1c");
    static STRUCT_IF_C BFs1ll_BFs1i_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1i_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1i_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1i_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1i_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1ll_BFs1i_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1i_BFu1c, BFs1ll_BFs1i_BFu1c)
//============================================================================


struct  BFs1ll_BFs1i_BFu1c_BFs1c  {
  signed __tsi64 v1:1;
  signed int v2:1;
  unsigned char v3:1;
  signed char v4:1;
};
//SIG(1 BFs1ll_BFs1i_BFu1c_BFs1c) C1{ FL:1 Fi:1 Fc:1 Fc:1}



static void Test_BFs1ll_BFs1i_BFu1c_BFs1c()
{
  {
    init_simple_test("BFs1ll_BFs1i_BFu1c_BFs1c");
    static STRUCT_IF_C BFs1ll_BFs1i_BFu1c_BFs1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1i_BFu1c_BFs1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1i_BFu1c_BFs1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1i_BFu1c_BFs1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1i_BFu1c_BFs1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1ll_BFs1i_BFu1c_BFs1c");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1ll_BFs1i_BFu1c_BFs1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1i_BFu1c_BFs1c, BFs1ll_BFs1i_BFu1c_BFs1c)
//============================================================================


struct  BFs1ll_BFs1i_BFu1c_BFs1i  {
  signed __tsi64 v1:1;
  signed int v2:1;
  unsigned char v3:1;
  signed int v4:1;
};
//SIG(1 BFs1ll_BFs1i_BFu1c_BFs1i) C1{ FL:1 Fi:1 Fc:1 Fi:1}



static void Test_BFs1ll_BFs1i_BFu1c_BFs1i()
{
  {
    init_simple_test("BFs1ll_BFs1i_BFu1c_BFs1i");
    static STRUCT_IF_C BFs1ll_BFs1i_BFu1c_BFs1i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1i_BFu1c_BFs1i)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1i_BFu1c_BFs1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1i_BFu1c_BFs1i");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1i_BFu1c_BFs1i");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1ll_BFs1i_BFu1c_BFs1i");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1ll_BFs1i_BFu1c_BFs1i");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1i_BFu1c_BFs1i, BFs1ll_BFs1i_BFu1c_BFs1i)
//============================================================================


struct  BFs1ll_BFs1i_BFu1c_BFs1ll  {
  signed __tsi64 v1:1;
  signed int v2:1;
  unsigned char v3:1;
  signed __tsi64 v4:1;
};
//SIG(1 BFs1ll_BFs1i_BFu1c_BFs1ll) C1{ FL:1 Fi:1 Fc:1 FL:1}



static void Test_BFs1ll_BFs1i_BFu1c_BFs1ll()
{
  {
    init_simple_test("BFs1ll_BFs1i_BFu1c_BFs1ll");
    static STRUCT_IF_C BFs1ll_BFs1i_BFu1c_BFs1ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1i_BFu1c_BFs1ll)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1i_BFu1c_BFs1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1i_BFu1c_BFs1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1i_BFu1c_BFs1ll");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1ll_BFs1i_BFu1c_BFs1ll");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1ll_BFs1i_BFu1c_BFs1ll");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1i_BFu1c_BFs1ll, BFs1ll_BFs1i_BFu1c_BFs1ll)
//============================================================================


struct  BFs1ll_BFs1i_BFu1c_BFs1s  {
  signed __tsi64 v1:1;
  signed int v2:1;
  unsigned char v3:1;
  signed short v4:1;
};
//SIG(1 BFs1ll_BFs1i_BFu1c_BFs1s) C1{ FL:1 Fi:1 Fc:1 Fs:1}



static void Test_BFs1ll_BFs1i_BFu1c_BFs1s()
{
  {
    init_simple_test("BFs1ll_BFs1i_BFu1c_BFs1s");
    static STRUCT_IF_C BFs1ll_BFs1i_BFu1c_BFs1s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1i_BFu1c_BFs1s)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1i_BFu1c_BFs1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1i_BFu1c_BFs1s");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1i_BFu1c_BFs1s");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1ll_BFs1i_BFu1c_BFs1s");
    set_bf_and_test(lv, v4, 0, 3, 1, -1, "BFs1ll_BFs1i_BFu1c_BFs1s");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1i_BFu1c_BFs1s, BFs1ll_BFs1i_BFu1c_BFs1s)
//============================================================================


struct  BFs1ll_BFs1i_BFu1c_BFu1c  {
  signed __tsi64 v1:1;
  signed int v2:1;
  unsigned char v3:1;
  unsigned char v4:1;
};
//SIG(1 BFs1ll_BFs1i_BFu1c_BFu1c) C1{ FL:1 Fi:1 Fc:1 Fc:1}



static void Test_BFs1ll_BFs1i_BFu1c_BFu1c()
{
  {
    init_simple_test("BFs1ll_BFs1i_BFu1c_BFu1c");
    static STRUCT_IF_C BFs1ll_BFs1i_BFu1c_BFu1c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFs1ll_BFs1i_BFu1c_BFu1c)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(BFs1ll_BFs1i_BFu1c_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, -1, "BFs1ll_BFs1i_BFu1c_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, -1, "BFs1ll_BFs1i_BFu1c_BFu1c");
    set_bf_and_test(lv, v3, 0, 2, 1, 1, "BFs1ll_BFs1i_BFu1c_BFu1c");
    set_bf_and_test(lv, v4, 0, 3, 1, 1, "BFs1ll_BFs1i_BFu1c_BFu1c");
  }
}
ARRANGE_TO_CALL_ME(Test_BFs1ll_BFs1i_BFu1c_BFu1c, BFs1ll_BFs1i_BFu1c_BFu1c)
//============================================================================

