1  /* Functional tests for the "target" attribute and pragma.  */
       2  
       3  /* { dg-do assemble { target { ! lp64 } } } */
       4  /* { dg-require-effective-target target_attribute } */
       5  /* { dg-options "-save-temps -mdebug -m31 -march=z10 -mtune=z13 -mstack-size=2048 -mstack-guard=16 -mbranch-cost=1 -mwarn-framesize=512 -mno-hard-dfp -mbackchain -msoft-float -mno-vx -mno-htm -mno-packed-stack -msmall-exec -mno-zvector -mmvcle -mesa -mno-warn-dynamicstack" } */
       6  
       7  /**
       8   **
       9   ** Start
      10   **
      11   **/
      12  
      13  void fn_default_start (void) { }
      14  /* { dg-final { scan-assembler "fn:fn_default_start ar4" } } */
      15  /* { dg-final { scan-assembler "fn:fn_default_start tu7" } } */
      16  /* { dg-final { scan-assembler "fn:fn_default_start ss2048" } } */
      17  /* { dg-final { scan-assembler "fn:fn_default_start sg16" } } */
      18  /* { dg-final { scan-assembler "fn:fn_default_start bc1" } } */
      19  /* { dg-final { scan-assembler "fn:fn_default_start wf512" } } */
      20  /* { dg-final { scan-assembler "fn:fn_default_start hd0" } } */
      21  /* { dg-final { scan-assembler "fn:fn_default_start ba1" } } */
      22  /* { dg-final { scan-assembler "fn:fn_default_start hf0" } } */
      23  /* { dg-final { scan-assembler "fn:fn_default_start vx0" } } */
      24  /* { dg-final { scan-assembler "fn:fn_default_start ht0" } } */
      25  /* { dg-final { scan-assembler "fn:fn_default_start ps0" } } */
      26  /* { dg-final { scan-assembler "fn:fn_default_start se1" } } */
      27  /* { dg-final { scan-assembler "fn:fn_default_start zv0" } } */
      28  /* { dg-final { scan-assembler "fn:fn_default_start mv1" } } */
      29  /* { dg-final { scan-assembler "fn:fn_default_start wd0" } } */
      30  
      31  /**
      32   **
      33   ** Pragma
      34   **
      35   **/
      36  
      37  #pragma GCC target ("no-zvector")
      38  void fn_pragma_0 (void) { }
      39  /* { dg-final { scan-assembler "fn:fn_pragma_0 zv0" } } */
      40  /* { dg-final { scan-assembler "fn:fn_pragma_0 ar4" } } */
      41  /* { dg-final { scan-assembler "fn:fn_pragma_0 tu7" } } */
      42  /* { dg-final { scan-assembler "fn:fn_pragma_0 ss2048" } } */
      43  /* { dg-final { scan-assembler "fn:fn_pragma_0 sg16" } } */
      44  /* { dg-final { scan-assembler "fn:fn_pragma_0 bc1" } } */
      45  /* { dg-final { scan-assembler "fn:fn_pragma_0 wf512" } } */
      46  /* { dg-final { scan-assembler "fn:fn_pragma_0 hd0" } } */
      47  /* { dg-final { scan-assembler "fn:fn_pragma_0 ba1" } } */
      48  /* { dg-final { scan-assembler "fn:fn_pragma_0 hf0" } } */
      49  /* { dg-final { scan-assembler "fn:fn_pragma_0 vx0" } } */
      50  /* { dg-final { scan-assembler "fn:fn_pragma_0 ht0" } } */
      51  /* { dg-final { scan-assembler "fn:fn_pragma_0 ps0" } } */
      52  /* { dg-final { scan-assembler "fn:fn_pragma_0 se1" } } */
      53  /* { dg-final { scan-assembler "fn:fn_pragma_0 mv1" } } */
      54  /* { dg-final { scan-assembler "fn:fn_pragma_0 wd0" } } */
      55  #pragma GCC reset_options
      56  
      57  void fn_pragma_0_default (void) { }
      58  /* { dg-final { scan-assembler "fn:fn_pragma_0_default ar4" } } */
      59  /* { dg-final { scan-assembler "fn:fn_pragma_0_default tu7" } } */
      60  /* { dg-final { scan-assembler "fn:fn_pragma_0_default ss2048" } } */
      61  /* { dg-final { scan-assembler "fn:fn_pragma_0_default sg16" } } */
      62  /* { dg-final { scan-assembler "fn:fn_pragma_0_default bc1" } } */
      63  /* { dg-final { scan-assembler "fn:fn_pragma_0_default wf512" } } */
      64  /* { dg-final { scan-assembler "fn:fn_pragma_0_default hd0" } } */
      65  /* { dg-final { scan-assembler "fn:fn_pragma_0_default ba1" } } */
      66  /* { dg-final { scan-assembler "fn:fn_pragma_0_default hf0" } } */
      67  /* { dg-final { scan-assembler "fn:fn_pragma_0_default vx0" } } */
      68  /* { dg-final { scan-assembler "fn:fn_pragma_0_default ht0" } } */
      69  /* { dg-final { scan-assembler "fn:fn_pragma_0_default ps0" } } */
      70  /* { dg-final { scan-assembler "fn:fn_pragma_0_default se1" } } */
      71  /* { dg-final { scan-assembler "fn:fn_pragma_0_default zv0" } } */
      72  /* { dg-final { scan-assembler "fn:fn_pragma_0_default mv1" } } */
      73  /* { dg-final { scan-assembler "fn:fn_pragma_0_default wd0" } } */
      74  
      75  #pragma GCC target ("zvector")
      76  void fn_pragma_1 (void) { }
      77  /* { dg-final { scan-assembler "fn:fn_pragma_1 zv1" } } */
      78  /* { dg-final { scan-assembler "fn:fn_pragma_1 ar4" } } */
      79  /* { dg-final { scan-assembler "fn:fn_pragma_1 tu7" } } */
      80  /* { dg-final { scan-assembler "fn:fn_pragma_1 ss2048" } } */
      81  /* { dg-final { scan-assembler "fn:fn_pragma_1 sg16" } } */
      82  /* { dg-final { scan-assembler "fn:fn_pragma_1 bc1" } } */
      83  /* { dg-final { scan-assembler "fn:fn_pragma_1 wf512" } } */
      84  /* { dg-final { scan-assembler "fn:fn_pragma_1 hd0" } } */
      85  /* { dg-final { scan-assembler "fn:fn_pragma_1 ba1" } } */
      86  /* { dg-final { scan-assembler "fn:fn_pragma_1 hf0" } } */
      87  /* { dg-final { scan-assembler "fn:fn_pragma_1 vx0" } } */
      88  /* { dg-final { scan-assembler "fn:fn_pragma_1 ht0" } } */
      89  /* { dg-final { scan-assembler "fn:fn_pragma_1 ps0" } } */
      90  /* { dg-final { scan-assembler "fn:fn_pragma_1 se1" } } */
      91  /* { dg-final { scan-assembler "fn:fn_pragma_1 mv1" } } */
      92  /* { dg-final { scan-assembler "fn:fn_pragma_1 wd0" } } */
      93  #pragma GCC reset_options
      94  
      95  void fn_pragma_1_default (void) { }
      96  /* { dg-final { scan-assembler "fn:fn_pragma_1_default ar4" } } */
      97  /* { dg-final { scan-assembler "fn:fn_pragma_1_default tu7" } } */
      98  /* { dg-final { scan-assembler "fn:fn_pragma_1_default ss2048" } } */
      99  /* { dg-final { scan-assembler "fn:fn_pragma_1_default sg16" } } */
     100  /* { dg-final { scan-assembler "fn:fn_pragma_1_default bc1" } } */
     101  /* { dg-final { scan-assembler "fn:fn_pragma_1_default wf512" } } */
     102  /* { dg-final { scan-assembler "fn:fn_pragma_1_default hd0" } } */
     103  /* { dg-final { scan-assembler "fn:fn_pragma_1_default ba1" } } */
     104  /* { dg-final { scan-assembler "fn:fn_pragma_1_default hf0" } } */
     105  /* { dg-final { scan-assembler "fn:fn_pragma_1_default vx0" } } */
     106  /* { dg-final { scan-assembler "fn:fn_pragma_1_default ht0" } } */
     107  /* { dg-final { scan-assembler "fn:fn_pragma_1_default ps0" } } */
     108  /* { dg-final { scan-assembler "fn:fn_pragma_1_default se1" } } */
     109  /* { dg-final { scan-assembler "fn:fn_pragma_1_default zv0" } } */
     110  /* { dg-final { scan-assembler "fn:fn_pragma_1_default mv1" } } */
     111  /* { dg-final { scan-assembler "fn:fn_pragma_1_default wd0" } } */
     112  
     113  #pragma GCC target ("zvector")
     114  #pragma GCC target ("no-zvector")
     115  void fn_pragma_1_0 (void) { }
     116  /* { dg-final { scan-assembler "fn:fn_pragma_1_0 zv0" } } */
     117  /* { dg-final { scan-assembler "fn:fn_pragma_1_0 ar4" } } */
     118  /* { dg-final { scan-assembler "fn:fn_pragma_1_0 tu7" } } */
     119  /* { dg-final { scan-assembler "fn:fn_pragma_1_0 ss2048" } } */
     120  /* { dg-final { scan-assembler "fn:fn_pragma_1_0 sg16" } } */
     121  /* { dg-final { scan-assembler "fn:fn_pragma_1_0 bc1" } } */
     122  /* { dg-final { scan-assembler "fn:fn_pragma_1_0 wf512" } } */
     123  /* { dg-final { scan-assembler "fn:fn_pragma_1_0 hd0" } } */
     124  /* { dg-final { scan-assembler "fn:fn_pragma_1_0 ba1" } } */
     125  /* { dg-final { scan-assembler "fn:fn_pragma_1_0 hf0" } } */
     126  /* { dg-final { scan-assembler "fn:fn_pragma_1_0 vx0" } } */
     127  /* { dg-final { scan-assembler "fn:fn_pragma_1_0 ht0" } } */
     128  /* { dg-final { scan-assembler "fn:fn_pragma_1_0 ps0" } } */
     129  /* { dg-final { scan-assembler "fn:fn_pragma_1_0 se1" } } */
     130  /* { dg-final { scan-assembler "fn:fn_pragma_1_0 mv1" } } */
     131  /* { dg-final { scan-assembler "fn:fn_pragma_1_0 wd0" } } */
     132  #pragma GCC reset_options
     133  
     134  #pragma GCC target ("no-zvector")
     135  #pragma GCC target ("zvector")
     136  void fn_pragma_0_1 (void) { }
     137  /* { dg-final { scan-assembler "fn:fn_pragma_0_1 zv1" } } */
     138  /* { dg-final { scan-assembler "fn:fn_pragma_0_1 ar4" } } */
     139  /* { dg-final { scan-assembler "fn:fn_pragma_0_1 tu7" } } */
     140  /* { dg-final { scan-assembler "fn:fn_pragma_0_1 ss2048" } } */
     141  /* { dg-final { scan-assembler "fn:fn_pragma_0_1 sg16" } } */
     142  /* { dg-final { scan-assembler "fn:fn_pragma_0_1 bc1" } } */
     143  /* { dg-final { scan-assembler "fn:fn_pragma_0_1 wf512" } } */
     144  /* { dg-final { scan-assembler "fn:fn_pragma_0_1 hd0" } } */
     145  /* { dg-final { scan-assembler "fn:fn_pragma_0_1 ba1" } } */
     146  /* { dg-final { scan-assembler "fn:fn_pragma_0_1 hf0" } } */
     147  /* { dg-final { scan-assembler "fn:fn_pragma_0_1 vx0" } } */
     148  /* { dg-final { scan-assembler "fn:fn_pragma_0_1 ht0" } } */
     149  /* { dg-final { scan-assembler "fn:fn_pragma_0_1 ps0" } } */
     150  /* { dg-final { scan-assembler "fn:fn_pragma_0_1 se1" } } */
     151  /* { dg-final { scan-assembler "fn:fn_pragma_0_1 mv1" } } */
     152  /* { dg-final { scan-assembler "fn:fn_pragma_0_1 wd0" } } */
     153  #pragma GCC reset_options
     154  
     155  /**
     156   **
     157   ** End
     158   **
     159   **/
     160  
     161  void fn_default_end (void) { }
     162  /* { dg-final { scan-assembler "fn:fn_default_end ar4" } } */
     163  /* { dg-final { scan-assembler "fn:fn_default_end tu7" } } */
     164  /* { dg-final { scan-assembler "fn:fn_default_end ss2048" } } */
     165  /* { dg-final { scan-assembler "fn:fn_default_end sg16" } } */
     166  /* { dg-final { scan-assembler "fn:fn_default_end bc1" } } */
     167  /* { dg-final { scan-assembler "fn:fn_default_end wf512" } } */
     168  /* { dg-final { scan-assembler "fn:fn_default_end hd0" } } */
     169  /* { dg-final { scan-assembler "fn:fn_default_end ba1" } } */
     170  /* { dg-final { scan-assembler "fn:fn_default_end hf0" } } */
     171  /* { dg-final { scan-assembler "fn:fn_default_end vx0" } } */
     172  /* { dg-final { scan-assembler "fn:fn_default_end ht0" } } */
     173  /* { dg-final { scan-assembler "fn:fn_default_end ps0" } } */
     174  /* { dg-final { scan-assembler "fn:fn_default_end se1" } } */
     175  /* { dg-final { scan-assembler "fn:fn_default_end zv0" } } */
     176  /* { dg-final { scan-assembler "fn:fn_default_end mv1" } } */
     177  /* { dg-final { scan-assembler "fn:fn_default_end wd0" } } */