(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
x86_64/
abi/
bf16/
test_passing_floats.c
       1  /* This is an autogenerated file. Do not edit.  */
       2  
       3  #include "bf16-check.h"
       4  #include "defines.h"
       5  #include "macros.h"
       6  #include "args.h"
       7  
       8  struct IntegerRegisters iregs;
       9  struct FloatRegisters fregs;
      10  unsigned int num_iregs, num_fregs;
      11  
      12  /* This struct holds values for argument checking.  */
      13  struct
      14  {
      15    __bf16 f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14,
      16      f15, f16, f17, f18, f19, f20, f21, f22, f23;
      17  } values___bf16;
      18  
      19  void
      20  fun_check_bf16_passing_8_values (__bf16 f0 ATTRIBUTE_UNUSED,
      21  				 __bf16 f1 ATTRIBUTE_UNUSED,
      22  				 __bf16 f2 ATTRIBUTE_UNUSED,
      23  				 __bf16 f3 ATTRIBUTE_UNUSED,
      24  				 __bf16 f4 ATTRIBUTE_UNUSED,
      25  				 __bf16 f5 ATTRIBUTE_UNUSED,
      26  				 __bf16 f6 ATTRIBUTE_UNUSED,
      27  				 __bf16 f7 ATTRIBUTE_UNUSED)
      28  {
      29    /* Check argument values.  */
      30    check_bf16 (values___bf16.f0, f0);
      31    check_bf16 (values___bf16.f1, f1);
      32    check_bf16 (values___bf16.f2, f2);
      33    check_bf16 (values___bf16.f3, f3);
      34    check_bf16 (values___bf16.f4, f4);
      35    check_bf16 (values___bf16.f5, f5);
      36    check_bf16 (values___bf16.f6, f6);
      37    check_bf16 (values___bf16.f7, f7);
      38  }
      39  
      40  void
      41  fun_check_bf16_passing_8_regs (__bf16 f0 ATTRIBUTE_UNUSED,
      42  			       __bf16 f1 ATTRIBUTE_UNUSED,
      43  			       __bf16 f2 ATTRIBUTE_UNUSED,
      44  			       __bf16 f3 ATTRIBUTE_UNUSED,
      45  			       __bf16 f4 ATTRIBUTE_UNUSED,
      46  			       __bf16 f5 ATTRIBUTE_UNUSED,
      47  			       __bf16 f6 ATTRIBUTE_UNUSED,
      48  			       __bf16 f7 ATTRIBUTE_UNUSED)
      49  {
      50    /* Check register contents.  */
      51    check_bf16_arguments;
      52  }
      53  
      54  void
      55  fun_check_bf16_passing_16_values (__bf16 f0 ATTRIBUTE_UNUSED,
      56  				  __bf16 f1 ATTRIBUTE_UNUSED,
      57  				  __bf16 f2 ATTRIBUTE_UNUSED,
      58  				  __bf16 f3 ATTRIBUTE_UNUSED,
      59  				  __bf16 f4 ATTRIBUTE_UNUSED,
      60  				  __bf16 f5 ATTRIBUTE_UNUSED,
      61  				  __bf16 f6 ATTRIBUTE_UNUSED,
      62  				  __bf16 f7 ATTRIBUTE_UNUSED,
      63  				  __bf16 f8 ATTRIBUTE_UNUSED,
      64  				  __bf16 f9 ATTRIBUTE_UNUSED,
      65  				  __bf16 f10 ATTRIBUTE_UNUSED,
      66  				  __bf16 f11 ATTRIBUTE_UNUSED,
      67  				  __bf16 f12 ATTRIBUTE_UNUSED,
      68  				  __bf16 f13 ATTRIBUTE_UNUSED,
      69  				  __bf16 f14 ATTRIBUTE_UNUSED,
      70  				  __bf16 f15 ATTRIBUTE_UNUSED)
      71  {
      72    /* Check argument values.  */
      73    check_bf16 (values___bf16.f0, f0);
      74    check_bf16 (values___bf16.f1, f1);
      75    check_bf16 (values___bf16.f2, f2);
      76    check_bf16 (values___bf16.f3, f3);
      77    check_bf16 (values___bf16.f4, f4);
      78    check_bf16 (values___bf16.f5, f5);
      79    check_bf16 (values___bf16.f6, f6);
      80    check_bf16 (values___bf16.f7, f7);
      81    check_bf16 (values___bf16.f8, f8);
      82    check_bf16 (values___bf16.f9, f9);
      83    check_bf16 (values___bf16.f10, f10);
      84    check_bf16 (values___bf16.f11, f11);
      85    check_bf16 (values___bf16.f12, f12);
      86    check_bf16 (values___bf16.f13, f13);
      87    check_bf16 (values___bf16.f14, f14);
      88    check_bf16 (values___bf16.f15, f15);
      89  }
      90  
      91  void
      92  fun_check_bf16_passing_16_regs (__bf16 f0 ATTRIBUTE_UNUSED,
      93  				__bf16 f1 ATTRIBUTE_UNUSED,
      94  				__bf16 f2 ATTRIBUTE_UNUSED,
      95  				__bf16 f3 ATTRIBUTE_UNUSED,
      96  				__bf16 f4 ATTRIBUTE_UNUSED,
      97  				__bf16 f5 ATTRIBUTE_UNUSED,
      98  				__bf16 f6 ATTRIBUTE_UNUSED,
      99  				__bf16 f7 ATTRIBUTE_UNUSED,
     100  				__bf16 f8 ATTRIBUTE_UNUSED,
     101  				__bf16 f9 ATTRIBUTE_UNUSED,
     102  				__bf16 f10 ATTRIBUTE_UNUSED,
     103  				__bf16 f11 ATTRIBUTE_UNUSED,
     104  				__bf16 f12 ATTRIBUTE_UNUSED,
     105  				__bf16 f13 ATTRIBUTE_UNUSED,
     106  				__bf16 f14 ATTRIBUTE_UNUSED,
     107  				__bf16 f15 ATTRIBUTE_UNUSED)
     108  {
     109    /* Check register contents.  */
     110    check_bf16_arguments;
     111  }
     112  
     113  void
     114  fun_check_bf16_passing_20_values (__bf16 f0 ATTRIBUTE_UNUSED,
     115  				  __bf16 f1 ATTRIBUTE_UNUSED,
     116  				  __bf16 f2 ATTRIBUTE_UNUSED,
     117  				  __bf16 f3 ATTRIBUTE_UNUSED,
     118  				  __bf16 f4 ATTRIBUTE_UNUSED,
     119  				  __bf16 f5 ATTRIBUTE_UNUSED,
     120  				  __bf16 f6 ATTRIBUTE_UNUSED,
     121  				  __bf16 f7 ATTRIBUTE_UNUSED,
     122  				  __bf16 f8 ATTRIBUTE_UNUSED,
     123  				  __bf16 f9 ATTRIBUTE_UNUSED,
     124  				  __bf16 f10 ATTRIBUTE_UNUSED,
     125  				  __bf16 f11 ATTRIBUTE_UNUSED,
     126  				  __bf16 f12 ATTRIBUTE_UNUSED,
     127  				  __bf16 f13 ATTRIBUTE_UNUSED,
     128  				  __bf16 f14 ATTRIBUTE_UNUSED,
     129  				  __bf16 f15 ATTRIBUTE_UNUSED,
     130  				  __bf16 f16 ATTRIBUTE_UNUSED,
     131  				  __bf16 f17 ATTRIBUTE_UNUSED,
     132  				  __bf16 f18 ATTRIBUTE_UNUSED,
     133  				  __bf16 f19 ATTRIBUTE_UNUSED)
     134  {
     135    /* Check argument values.  */
     136    check_bf16 (values___bf16.f0, f0);
     137    check_bf16 (values___bf16.f1, f1);
     138    check_bf16 (values___bf16.f2, f2);
     139    check_bf16 (values___bf16.f3, f3);
     140    check_bf16 (values___bf16.f4, f4);
     141    check_bf16 (values___bf16.f5, f5);
     142    check_bf16 (values___bf16.f6, f6);
     143    check_bf16 (values___bf16.f7, f7);
     144    check_bf16 (values___bf16.f8, f8);
     145    check_bf16 (values___bf16.f9, f9);
     146    check_bf16 (values___bf16.f10, f10);
     147    check_bf16 (values___bf16.f11, f11);
     148    check_bf16 (values___bf16.f12, f12);
     149    check_bf16 (values___bf16.f13, f13);
     150    check_bf16 (values___bf16.f14, f14);
     151    check_bf16 (values___bf16.f15, f15);
     152    check_bf16 (values___bf16.f16, f16);
     153    check_bf16 (values___bf16.f17, f17);
     154    check_bf16 (values___bf16.f18, f18);
     155    check_bf16 (values___bf16.f19, f19);
     156  }
     157  
     158  void
     159  fun_check_bf16_passing_20_regs (__bf16 f0 ATTRIBUTE_UNUSED,
     160  				__bf16 f1 ATTRIBUTE_UNUSED,
     161  				__bf16 f2 ATTRIBUTE_UNUSED,
     162  				__bf16 f3 ATTRIBUTE_UNUSED,
     163  				__bf16 f4 ATTRIBUTE_UNUSED,
     164  				__bf16 f5 ATTRIBUTE_UNUSED,
     165  				__bf16 f6 ATTRIBUTE_UNUSED,
     166  				__bf16 f7 ATTRIBUTE_UNUSED,
     167  				__bf16 f8 ATTRIBUTE_UNUSED,
     168  				__bf16 f9 ATTRIBUTE_UNUSED,
     169  				__bf16 f10 ATTRIBUTE_UNUSED,
     170  				__bf16 f11 ATTRIBUTE_UNUSED,
     171  				__bf16 f12 ATTRIBUTE_UNUSED,
     172  				__bf16 f13 ATTRIBUTE_UNUSED,
     173  				__bf16 f14 ATTRIBUTE_UNUSED,
     174  				__bf16 f15 ATTRIBUTE_UNUSED,
     175  				__bf16 f16 ATTRIBUTE_UNUSED,
     176  				__bf16 f17 ATTRIBUTE_UNUSED,
     177  				__bf16 f18 ATTRIBUTE_UNUSED,
     178  				__bf16 f19 ATTRIBUTE_UNUSED)
     179  {
     180    /* Check register contents.  */
     181    check_bf16_arguments;
     182  }
     183  
     184  #define def_check_bf16_passing8(_f0, _f1, _f2, _f3, _f4, _f5, _f6,\
     185  				   _f7, _func1, _func2, TYPE) \
     186    values_ ## TYPE .f0 = _f0; \
     187    values_ ## TYPE .f1 = _f1; \
     188    values_ ## TYPE .f2 = _f2; \
     189    values_ ## TYPE .f3 = _f3; \
     190    values_ ## TYPE .f4 = _f4; \
     191    values_ ## TYPE .f5 = _f5; \
     192    values_ ## TYPE .f6 = _f6; \
     193    values_ ## TYPE .f7 = _f7; \
     194    WRAP_CALL(_func1) (_f0, _f1, _f2, _f3, _f4, _f5, _f6, _f7); \
     195    clear_float_registers; \
     196    fregs.F0._ ## TYPE [0] = _f0; \
     197    fregs.F1._ ## TYPE [0] = _f1; \
     198    fregs.F2._ ## TYPE [0] = _f2; \
     199    fregs.F3._ ## TYPE [0] = _f3; \
     200    fregs.F4._ ## TYPE [0] = _f4; \
     201    fregs.F5._ ## TYPE [0] = _f5; \
     202    fregs.F6._ ## TYPE [0] = _f6; \
     203    fregs.F7._ ## TYPE [0] = _f7; \
     204    num_fregs = 8; \
     205    WRAP_CALL(_func2) (_f0, _f1, _f2, _f3, _f4, _f5, _f6, _f7);
     206  
     207  #define def_check_bf16_passing16(_f0, _f1, _f2, _f3, _f4, _f5, _f6, \
     208  				    _f7, _f8, _f9, _f10, _f11, _f12, _f13, \
     209  				    _f14, _f15, _func1, _func2, TYPE) \
     210    values_ ## TYPE .f0 = _f0; \
     211    values_ ## TYPE .f1 = _f1; \
     212    values_ ## TYPE .f2 = _f2; \
     213    values_ ## TYPE .f3 = _f3; \
     214    values_ ## TYPE .f4 = _f4; \
     215    values_ ## TYPE .f5 = _f5; \
     216    values_ ## TYPE .f6 = _f6; \
     217    values_ ## TYPE .f7 = _f7; \
     218    values_ ## TYPE .f8 = _f8; \
     219    values_ ## TYPE .f9 = _f9; \
     220    values_ ## TYPE .f10 = _f10; \
     221    values_ ## TYPE .f11 = _f11; \
     222    values_ ## TYPE .f12 = _f12; \
     223    values_ ## TYPE .f13 = _f13; \
     224    values_ ## TYPE .f14 = _f14; \
     225    values_ ## TYPE .f15 = _f15; \
     226    WRAP_CALL(_func1) (_f0, _f1, _f2, _f3, _f4, _f5, _f6, _f7, _f8, _f9, \
     227  		     _f10, _f11, _f12, _f13, _f14, _f15); \
     228    clear_float_registers; \
     229    fregs.F0._ ## TYPE [0] = _f0; \
     230    fregs.F1._ ## TYPE [0] = _f1; \
     231    fregs.F2._ ## TYPE [0] = _f2; \
     232    fregs.F3._ ## TYPE [0] = _f3; \
     233    fregs.F4._ ## TYPE [0] = _f4; \
     234    fregs.F5._ ## TYPE [0] = _f5; \
     235    fregs.F6._ ## TYPE [0] = _f6; \
     236    fregs.F7._ ## TYPE [0] = _f7; \
     237    num_fregs = 8; \
     238    WRAP_CALL(_func2) (_f0, _f1, _f2, _f3, _f4, _f5, _f6, _f7, _f8, _f9, \
     239  		     _f10, _f11, _f12, _f13, _f14, _f15);
     240  
     241  #define def_check_bf16_passing20(_f0, _f1, _f2, _f3, _f4, _f5, _f6, \
     242  				    _f7, _f8, _f9, _f10, _f11, _f12, \
     243  				    _f13, _f14, _f15, _f16, _f17, \
     244  				    _f18, _f19, _func1, _func2, TYPE) \
     245    values_ ## TYPE .f0 = _f0; \
     246    values_ ## TYPE .f1 = _f1; \
     247    values_ ## TYPE .f2 = _f2; \
     248    values_ ## TYPE .f3 = _f3; \
     249    values_ ## TYPE .f4 = _f4; \
     250    values_ ## TYPE .f5 = _f5; \
     251    values_ ## TYPE .f6 = _f6; \
     252    values_ ## TYPE .f7 = _f7; \
     253    values_ ## TYPE .f8 = _f8; \
     254    values_ ## TYPE .f9 = _f9; \
     255    values_ ## TYPE .f10 = _f10; \
     256    values_ ## TYPE .f11 = _f11; \
     257    values_ ## TYPE .f12 = _f12; \
     258    values_ ## TYPE .f13 = _f13; \
     259    values_ ## TYPE .f14 = _f14; \
     260    values_ ## TYPE .f15 = _f15; \
     261    values_ ## TYPE .f16 = _f16; \
     262    values_ ## TYPE .f17 = _f17; \
     263    values_ ## TYPE .f18 = _f18; \
     264    values_ ## TYPE .f19 = _f19; \
     265    WRAP_CALL(_func1) (_f0, _f1, _f2, _f3, _f4, _f5, _f6, _f7, _f8, \
     266  		     _f9, _f10, _f11, _f12, _f13, _f14, _f15, _f16, \
     267  		     _f17, _f18, _f19); \
     268    clear_float_registers; \
     269    fregs.F0._ ## TYPE [0] = _f0; \
     270    fregs.F1._ ## TYPE [0] = _f1; \
     271    fregs.F2._ ## TYPE [0] = _f2; \
     272    fregs.F3._ ## TYPE [0] = _f3; \
     273    fregs.F4._ ## TYPE [0] = _f4; \
     274    fregs.F5._ ## TYPE [0] = _f5; \
     275    fregs.F6._ ## TYPE [0] = _f6; \
     276    fregs.F7._ ## TYPE [0] = _f7; \
     277    num_fregs = 8; \
     278    WRAP_CALL(_func2) (_f0, _f1, _f2, _f3, _f4, _f5, _f6, _f7, _f8, _f9, \
     279  		     _f10, _f11, _f12, _f13, _f14, _f15, _f16, _f17, \
     280  		     _f18, _f19);
     281  
     282  volatile __bf16 bf1, bf2, bf3, bf4, bf5, bf6, bf7, bf8, bf9, bf10,
     283  		bf11,bf12,bf13,bf14,bf15,bf16,bf17,bf18,bf19,bf20;
     284  
     285  void
     286  test_bf16_on_stack ()
     287  {
     288    def_check_bf16_passing8 (bf1, bf2, bf3, bf4, bf5, bf6, bf7, bf8,
     289  			   fun_check_bf16_passing_8_values,
     290  			   fun_check_bf16_passing_8_regs, __bf16);
     291  
     292    def_check_bf16_passing16 (bf1, bf2, bf3, bf4, bf5, bf6, bf7, bf8,
     293  			    bf9, bf10,bf11,bf12,bf13,bf14,bf15,bf16,
     294  			    fun_check_bf16_passing_16_values,
     295  			    fun_check_bf16_passing_16_regs, __bf16);
     296  }
     297  
     298  void
     299  test_too_many_bf16 ()
     300  {
     301    def_check_bf16_passing20 (bf1, bf2, bf3, bf4, bf5, bf6, bf7, bf8, bf9, bf10,
     302  			    bf11,bf12,bf13,bf14,bf15,bf16,bf17,bf18,bf19,bf20,
     303  			    fun_check_bf16_passing_20_values,
     304  			    fun_check_bf16_passing_20_regs, __bf16);
     305  }
     306  
     307  static void
     308  do_test (void)
     309  {
     310    test_bf16_on_stack ();
     311    test_too_many_bf16 ();
     312  }