// 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)
//============================================================================

