modernc.org/ccgo/v3@v3.16.14/lib/testdata/tcc-0.9.27/tests/tests2/73_arm64.c (about)

     1  // This program is designed to test some arm64-specific things, such as the
     2  // calling convention, but should give the same results on any architecture.
     3  
     4  #include <stdarg.h>
     5  #include <stdint.h>
     6  #include <stdio.h>
     7  
     8  struct s1 { char x[1]; } s1 = { "0" };
     9  struct s2 { char x[2]; } s2 = { "12" };
    10  struct s3 { char x[3]; } s3 = { "345" };
    11  struct s4 { char x[4]; } s4 = { "6789" };
    12  struct s5 { char x[5]; } s5 = { "abcde" };
    13  struct s6 { char x[6]; } s6 = { "fghijk" };
    14  struct s7 { char x[7]; } s7 = { "lmnopqr" };
    15  struct s8 { char x[8]; } s8 = { "stuvwxyz" };
    16  struct s9 { char x[9]; } s9 = { "ABCDEFGHI" };
    17  struct s10 { char x[10]; } s10 = { "JKLMNOPQRS" };
    18  struct s11 { char x[11]; } s11 = { "TUVWXYZ0123" };
    19  struct s12 { char x[12]; } s12 = { "456789abcdef" };
    20  struct s13 { char x[13]; } s13 = { "ghijklmnopqrs" };
    21  struct s14 { char x[14]; } s14 = { "tuvwxyzABCDEFG" };
    22  struct s15 { char x[15]; } s15 = { "HIJKLMNOPQRSTUV" };
    23  struct s16 { char x[16]; } s16 = { "WXYZ0123456789ab" };
    24  struct s17 { char x[17]; } s17 = { "cdefghijklmnopqrs" };
    25  
    26  struct hfa11 { float a; } hfa11 = { 11.1 };
    27  struct hfa12 { float a, b; } hfa12 = { 12.1, 12.2 };
    28  struct hfa13 { float a, b, c; } hfa13 = { 13.1, 13.2, 13.3 };
    29  struct hfa14 { float a, b, c, d; } hfa14 = { 14.1, 14.2, 14.3, 14.4 };
    30  
    31  struct hfa21 { double a; } hfa21 = { 21.1 };
    32  struct hfa22 { double a, b; } hfa22 = { 22.1, 22.2 };
    33  struct hfa23 { double a, b, c; } hfa23 = { 23.1, 23.2, 23.3 };
    34  struct hfa24 { double a, b, c, d; } hfa24 = { 24.1, 24.2, 24.3, 24.4 };
    35  
    36  struct hfa31 { long double a; } hfa31 = { 31.1 };
    37  struct hfa32 { long double a, b; } hfa32 = { 32.1, 32.2 };
    38  struct hfa33 { long double a, b, c; } hfa33 = { 33.1, 33.2, 33.3 };
    39  struct hfa34 { long double a, b, c, d; } hfa34 = { 34.1, 34.2, 34.3, 34.4 };
    40  
    41  void fa_s1(struct s1 a) { printf("%.1s\n", a.x); }
    42  void fa_s2(struct s2 a) { printf("%.2s\n", a.x); }
    43  void fa_s3(struct s3 a) { printf("%.3s\n", a.x); }
    44  void fa_s4(struct s4 a) { printf("%.4s\n", a.x); }
    45  void fa_s5(struct s5 a) { printf("%.5s\n", a.x); }
    46  void fa_s6(struct s6 a) { printf("%.6s\n", a.x); }
    47  void fa_s7(struct s7 a) { printf("%.7s\n", a.x); }
    48  void fa_s8(struct s8 a) { printf("%.8s\n", a.x); }
    49  void fa_s9(struct s9 a) { printf("%.9s\n", a.x); }
    50  void fa_s10(struct s10 a) { printf("%.10s\n", a.x); }
    51  void fa_s11(struct s11 a) { printf("%.11s\n", a.x); }
    52  void fa_s12(struct s12 a) { printf("%.12s\n", a.x); }
    53  void fa_s13(struct s13 a) { printf("%.13s\n", a.x); }
    54  void fa_s14(struct s14 a) { printf("%.14s\n", a.x); }
    55  void fa_s15(struct s15 a) { printf("%.15s\n", a.x); }
    56  void fa_s16(struct s16 a) { printf("%.16s\n", a.x); }
    57  void fa_s17(struct s17 a) { printf("%.17s\n", a.x); }
    58  
    59  void fa_hfa11(struct hfa11 a)
    60  { printf("%.1f\n", a.a); }
    61  void fa_hfa12(struct hfa12 a)
    62  { printf("%.1f %.1f\n", a.a, a.a); }
    63  void fa_hfa13(struct hfa13 a)
    64  { printf("%.1f %.1f %.1f\n", a.a, a.b, a.c); }
    65  void fa_hfa14(struct hfa14 a)
    66  { printf("%.1f %.1f %.1f %.1f\n", a.a, a.b, a.c, a.d); }
    67  
    68  void fa_hfa21(struct hfa21 a)
    69  { printf("%.1f\n", a.a); }
    70  void fa_hfa22(struct hfa22 a)
    71  { printf("%.1f %.1f\n", a.a, a.a); }
    72  void fa_hfa23(struct hfa23 a)
    73  { printf("%.1f %.1f %.1f\n", a.a, a.b, a.c); }
    74  void fa_hfa24(struct hfa24 a)
    75  { printf("%.1f %.1f %.1f %.1f\n", a.a, a.b, a.c, a.d); }
    76  
    77  void fa_hfa31(struct hfa31 a)
    78  { printf("%.1Lf\n", a.a); }
    79  void fa_hfa32(struct hfa32 a)
    80  { printf("%.1Lf %.1Lf\n", a.a, a.a); }
    81  void fa_hfa33(struct hfa33 a)
    82  { printf("%.1Lf %.1Lf %.1Lf\n", a.a, a.b, a.c); }
    83  void fa_hfa34(struct hfa34 a)
    84  { printf("%.1Lf %.1Lf %.1Lf %.1Lf\n", a.a, a.b, a.c, a.d); }
    85  
    86  void fa1(struct s8 a, struct s9 b, struct s10 c, struct s11 d,
    87           struct s12 e, struct s13 f)
    88  {
    89      printf("%.3s %.3s %.3s %.3s %.3s %.3s\n", a.x, b.x, c.x, d.x, e.x, f.x);
    90  }
    91  
    92  void fa2(struct s9 a, struct s10 b, struct s11 c, struct s12 d,
    93           struct s13 e, struct s14 f)
    94  {
    95      printf("%.3s %.3s %.3s %.3s %.3s %.3s\n", a.x, b.x, c.x, d.x, e.x, f.x);
    96  }
    97  
    98  void fa3(struct hfa14 a, struct hfa23 b, struct hfa32 c)
    99  {
   100      printf("%.1f %.1f %.1f %.1f %.1Lf %.1Lf\n",
   101             a.a, a.d, b.a, b.c, c.a, c.b);
   102  }
   103  
   104  void fa4(struct s1 a, struct hfa14 b, struct s2 c, struct hfa24 d,
   105           struct s3 e, struct hfa34 f)
   106  {
   107      printf("%.1s %.1f %.1f %.2s %.1f %.1f %.3s %.1Lf %.1Lf\n",
   108             a.x, b.a, b.d, c.x, d.a, d.d, e.x, f.a, f.d);
   109  }
   110  
   111  void arg(void)
   112  {
   113      printf("Arguments:\n");
   114      fa_s1(s1);
   115      fa_s2(s2);
   116      fa_s3(s3);
   117      fa_s4(s4);
   118      fa_s5(s5);
   119      fa_s6(s6);
   120      fa_s7(s7);
   121      fa_s8(s8);
   122      fa_s9(s9);
   123      fa_s10(s10);
   124      fa_s11(s11);
   125      fa_s12(s12);
   126      fa_s13(s13);
   127      fa_s14(s14);
   128      fa_s15(s15);
   129      fa_s16(s16);
   130      fa_s17(s17);
   131      fa_hfa11(hfa11);
   132      fa_hfa12(hfa12);
   133      fa_hfa13(hfa13);
   134      fa_hfa14(hfa14);
   135      fa_hfa21(hfa21);
   136      fa_hfa22(hfa22);
   137      fa_hfa23(hfa23);
   138      fa_hfa24(hfa24);
   139      fa_hfa31(hfa31);
   140      fa_hfa32(hfa32);
   141      fa_hfa33(hfa33);
   142      fa_hfa34(hfa34);
   143      fa1(s8, s9, s10, s11, s12, s13);
   144      fa2(s9, s10, s11, s12, s13, s14);
   145      fa3(hfa14, hfa23, hfa32);
   146      fa4(s1, hfa14, s2, hfa24, s3, hfa34);
   147  }
   148  
   149  struct s1 fr_s1(void) { return s1; }
   150  struct s2 fr_s2(void) { return s2; }
   151  struct s3 fr_s3(void) { return s3; }
   152  struct s4 fr_s4(void) { return s4; }
   153  struct s5 fr_s5(void) { return s5; }
   154  struct s6 fr_s6(void) { return s6; }
   155  struct s7 fr_s7(void) { return s7; }
   156  struct s8 fr_s8(void) { return s8; }
   157  struct s9 fr_s9(void) { return s9; }
   158  struct s10 fr_s10(void) { return s10; }
   159  struct s11 fr_s11(void) { return s11; }
   160  struct s12 fr_s12(void) { return s12; }
   161  struct s13 fr_s13(void) { return s13; }
   162  struct s14 fr_s14(void) { return s14; }
   163  struct s15 fr_s15(void) { return s15; }
   164  struct s16 fr_s16(void) { return s16; }
   165  struct s17 fr_s17(void) { return s17; }
   166  
   167  struct hfa11 fr_hfa11(void) { return hfa11; }
   168  struct hfa12 fr_hfa12(void) { return hfa12; }
   169  struct hfa13 fr_hfa13(void) { return hfa13; }
   170  struct hfa14 fr_hfa14(void) { return hfa14; }
   171  
   172  struct hfa21 fr_hfa21(void) { return hfa21; }
   173  struct hfa22 fr_hfa22(void) { return hfa22; }
   174  struct hfa23 fr_hfa23(void) { return hfa23; }
   175  struct hfa24 fr_hfa24(void) { return hfa24; }
   176  
   177  struct hfa31 fr_hfa31(void) { return hfa31; }
   178  struct hfa32 fr_hfa32(void) { return hfa32; }
   179  struct hfa33 fr_hfa33(void) { return hfa33; }
   180  struct hfa34 fr_hfa34(void) { return hfa34; }
   181  
   182  void ret(void)
   183  {
   184      struct s1 t1 = fr_s1();
   185      struct s2 t2 = fr_s2();
   186      struct s3 t3 = fr_s3();
   187      struct s4 t4 = fr_s4();
   188      struct s5 t5 = fr_s5();
   189      struct s6 t6 = fr_s6();
   190      struct s7 t7 = fr_s7();
   191      struct s8 t8 = fr_s8();
   192      struct s9 t9 = fr_s9();
   193      struct s10 t10 = fr_s10();
   194      struct s11 t11 = fr_s11();
   195      struct s12 t12 = fr_s12();
   196      struct s13 t13 = fr_s13();
   197      struct s14 t14 = fr_s14();
   198      struct s15 t15 = fr_s15();
   199      struct s16 t16 = fr_s16();
   200      struct s17 t17 = fr_s17();
   201      printf("Return values:\n");
   202      printf("%.1s\n", t1.x);
   203      printf("%.2s\n", t2.x);
   204      printf("%.3s\n", t3.x);
   205      printf("%.4s\n", t4.x);
   206      printf("%.5s\n", t5.x);
   207      printf("%.6s\n", t6.x);
   208      printf("%.7s\n", t7.x);
   209      printf("%.8s\n", t8.x);
   210      printf("%.9s\n", t9.x);
   211      printf("%.10s\n", t10.x);
   212      printf("%.11s\n", t11.x);
   213      printf("%.12s\n", t12.x);
   214      printf("%.13s\n", t13.x);
   215      printf("%.14s\n", t14.x);
   216      printf("%.15s\n", t15.x);
   217      printf("%.16s\n", t16.x);
   218      printf("%.17s\n", t17.x);
   219      printf("%.1f\n", fr_hfa11().a);
   220      printf("%.1f %.1f\n", fr_hfa12().a, fr_hfa12().b);
   221      printf("%.1f %.1f\n", fr_hfa13().a, fr_hfa13().c);
   222      printf("%.1f %.1f\n", fr_hfa14().a, fr_hfa14().d);
   223      printf("%.1f\n", fr_hfa21().a);
   224      printf("%.1f %.1f\n", fr_hfa22().a, fr_hfa22().b);
   225      printf("%.1f %.1f\n", fr_hfa23().a, fr_hfa23().c);
   226      printf("%.1f %.1f\n", fr_hfa24().a, fr_hfa24().d);
   227      printf("%.1Lf\n", fr_hfa31().a);
   228      printf("%.1Lf %.1Lf\n", fr_hfa32().a, fr_hfa32().b);
   229      printf("%.1Lf %.1Lf\n", fr_hfa33().a, fr_hfa33().c);
   230      printf("%.1Lf %.1Lf\n", fr_hfa34().a, fr_hfa34().d);
   231  }
   232  
   233  int match(const char **s, const char *f)
   234  {
   235      const char *p = *s;
   236      for (p = *s; *f && *f == *p; f++, p++)
   237          ;
   238      if (!*f) {
   239          *s = p - 1;
   240          return 1;
   241      }
   242      return 0;
   243  }
   244  
   245  void myprintf(const char *format, ...)
   246  {
   247      const char *s;
   248      va_list ap;
   249      va_start(ap, format);
   250      for (s = format; *s; s++) {
   251          if (match(&s, "%7s")) {
   252              struct s7 t7 = va_arg(ap, struct s7);
   253              printf("%.7s", t7.x);
   254          }
   255          else if (match(&s, "%9s")) {
   256              struct s9 t9 = va_arg(ap, struct s9);
   257              printf("%.9s", t9.x);
   258          }
   259          else if (match(&s, "%hfa11")) {
   260              struct hfa11 x = va_arg(ap, struct hfa11);
   261              printf("%.1f,%.1f", x.a, x.a);
   262          }
   263          else if (match(&s, "%hfa12")) {
   264              struct hfa12 x = va_arg(ap, struct hfa12);
   265              printf("%.1f,%.1f", x.a, x.b);
   266          }
   267          else if (match(&s, "%hfa13")) {
   268              struct hfa13 x = va_arg(ap, struct hfa13);
   269              printf("%.1f,%.1f", x.a, x.c);
   270          }
   271          else if (match(&s, "%hfa14")) {
   272              struct hfa14 x = va_arg(ap, struct hfa14);
   273              printf("%.1f,%.1f", x.a, x.d);
   274          }
   275          else if (match(&s, "%hfa21")) {
   276              struct hfa21 x = va_arg(ap, struct hfa21);
   277              printf("%.1f,%.1f", x.a, x.a);
   278          }
   279          else if (match(&s, "%hfa22")) {
   280              struct hfa22 x = va_arg(ap, struct hfa22);
   281              printf("%.1f,%.1f", x.a, x.b);
   282          }
   283          else if (match(&s, "%hfa23")) {
   284              struct hfa23 x = va_arg(ap, struct hfa23);
   285              printf("%.1f,%.1f", x.a, x.c);
   286          }
   287          else if (match(&s, "%hfa24")) {
   288              struct hfa24 x = va_arg(ap, struct hfa24);
   289              printf("%.1f,%.1f", x.a, x.d);
   290          }
   291          else if (match(&s, "%hfa31")) {
   292              struct hfa31 x = va_arg(ap, struct hfa31);
   293              printf("%.1Lf,%.1Lf", x.a, x.a);
   294          }
   295          else if (match(&s, "%hfa32")) {
   296              struct hfa32 x = va_arg(ap, struct hfa32);
   297              printf("%.1Lf,%.1Lf", x.a, x.b);
   298          }
   299          else if (match(&s, "%hfa33")) {
   300              struct hfa33 x = va_arg(ap, struct hfa33);
   301              printf("%.1Lf,%.1Lf", x.a, x.c);
   302          }
   303          else if (match(&s, "%hfa34")) {
   304              struct hfa34 x = va_arg(ap, struct hfa34);
   305              printf("%.1Lf,%.1Lf", x.a, x.d);
   306          }
   307          else
   308              putchar(*s);
   309      }
   310      putchar('\n');
   311  }
   312  
   313  void stdarg(void)
   314  {
   315      printf("stdarg:\n");
   316      myprintf("%9s %9s %9s %9s %9s %9s", s9, s9, s9, s9, s9, s9);
   317      myprintf("%7s %9s %9s %9s %9s %9s", s7, s9, s9, s9, s9, s9);
   318  
   319      myprintf("HFA long double:");
   320      myprintf("%hfa34 %hfa34 %hfa34 %hfa34", hfa34, hfa34, hfa34, hfa34);
   321      myprintf("%hfa33 %hfa34 %hfa34 %hfa34", hfa33, hfa34, hfa34, hfa34);
   322      myprintf("%hfa32 %hfa34 %hfa34 %hfa34", hfa32, hfa34, hfa34, hfa34);
   323      myprintf("%hfa31 %hfa34 %hfa34 %hfa34", hfa31, hfa34, hfa34, hfa34);
   324  
   325      myprintf("%hfa32 %hfa33 %hfa33 %hfa33 %hfa33",
   326               hfa32, hfa33, hfa33, hfa33, hfa33);
   327      myprintf("%hfa31 %hfa33 %hfa33 %hfa33 %hfa33",
   328               hfa31, hfa33, hfa33, hfa33, hfa33);
   329      myprintf("%hfa33 %hfa33 %hfa33 %hfa33",
   330               hfa33, hfa33, hfa33, hfa33);
   331  
   332      myprintf("%hfa34 %hfa32 %hfa32 %hfa32 %hfa32",
   333               hfa34, hfa32, hfa32, hfa32, hfa32);
   334      myprintf("%hfa33 %hfa32 %hfa32 %hfa32 %hfa32",
   335               hfa33, hfa32, hfa32, hfa32, hfa32);
   336  
   337      myprintf("%hfa34 %hfa32 %hfa31 %hfa31 %hfa31 %hfa31",
   338               hfa34, hfa32, hfa31, hfa31, hfa31, hfa31);
   339  
   340      myprintf("HFA double:");
   341      myprintf("%hfa24 %hfa24 %hfa24 %hfa24", hfa24, hfa24, hfa24, hfa24);
   342      myprintf("%hfa23 %hfa24 %hfa24 %hfa24", hfa23, hfa24, hfa24, hfa24);
   343      myprintf("%hfa22 %hfa24 %hfa24 %hfa24", hfa22, hfa24, hfa24, hfa24);
   344      myprintf("%hfa21 %hfa24 %hfa24 %hfa24", hfa21, hfa24, hfa24, hfa24);
   345  
   346      myprintf("%hfa22 %hfa23 %hfa23 %hfa23 %hfa23",
   347               hfa22, hfa23, hfa23, hfa23, hfa23);
   348      myprintf("%hfa21 %hfa23 %hfa23 %hfa23 %hfa23",
   349               hfa21, hfa23, hfa23, hfa23, hfa23);
   350      myprintf("%hfa23 %hfa23 %hfa23 %hfa23",
   351               hfa23, hfa23, hfa23, hfa23);
   352  
   353      myprintf("%hfa24 %hfa22 %hfa22 %hfa22 %hfa22",
   354               hfa24, hfa22, hfa22, hfa22, hfa22);
   355      myprintf("%hfa23 %hfa22 %hfa22 %hfa22 %hfa22",
   356               hfa23, hfa22, hfa22, hfa22, hfa22);
   357  
   358      myprintf("%hfa24 %hfa22 %hfa21 %hfa21 %hfa21 %hfa21",
   359               hfa24, hfa22, hfa21, hfa21, hfa21, hfa21);
   360  
   361      myprintf("HFA float:");
   362      myprintf("%hfa14 %hfa14 %hfa14 %hfa14", hfa14, hfa14, hfa14, hfa14);
   363      myprintf("%hfa13 %hfa14 %hfa14 %hfa14", hfa13, hfa14, hfa14, hfa14);
   364      myprintf("%hfa12 %hfa14 %hfa14 %hfa14", hfa12, hfa14, hfa14, hfa14);
   365      myprintf("%hfa11 %hfa14 %hfa14 %hfa14", hfa11, hfa14, hfa14, hfa14);
   366  
   367      myprintf("%hfa12 %hfa13 %hfa13 %hfa13 %hfa13",
   368               hfa12, hfa13, hfa13, hfa13, hfa13);
   369      myprintf("%hfa11 %hfa13 %hfa13 %hfa13 %hfa13",
   370               hfa11, hfa13, hfa13, hfa13, hfa13);
   371      myprintf("%hfa13 %hfa13 %hfa13 %hfa13",
   372               hfa13, hfa13, hfa13, hfa13);
   373  
   374      myprintf("%hfa14 %hfa12 %hfa12 %hfa12 %hfa12",
   375               hfa14, hfa12, hfa12, hfa12, hfa12);
   376      myprintf("%hfa13 %hfa12 %hfa12 %hfa12 %hfa12",
   377               hfa13, hfa12, hfa12, hfa12, hfa12);
   378  
   379      myprintf("%hfa14 %hfa12 %hfa11 %hfa11 %hfa11 %hfa11",
   380               hfa14, hfa12, hfa11, hfa11, hfa11, hfa11);
   381  }
   382  
   383  void pll(unsigned long long x)
   384  {
   385      printf("%llx\n", x);
   386  }
   387  
   388  void movi(void)
   389  {
   390      printf("MOVI:\n");
   391      pll(0);
   392      pll(0xabcd);
   393      pll(0xabcd0000);
   394      pll(0xabcd00000000);
   395      pll(0xabcd000000000000);
   396      pll(0xffffabcd);
   397      pll(0xabcdffff);
   398      pll(0xffffffffffffabcd);
   399      pll(0xffffffffabcdffff);
   400      pll(0xffffabcdffffffff);
   401      pll(0xabcdffffffffffff);
   402      pll(0xaaaaaaaa);
   403      pll(0x5555555555555555);
   404      pll(0x77777777);
   405      pll(0x3333333333333333);
   406      pll(0xf8f8f8f8);
   407      pll(0x1e1e1e1e1e1e1e1e);
   408      pll(0x3f803f80);
   409      pll(0x01ff01ff01ff01ff);
   410      pll(0x007fffc0);
   411      pll(0x03fff80003fff800);
   412      pll(0x0007fffffffffe00);
   413  
   414      pll(0xabcd1234);
   415      pll(0xabcd00001234);
   416      pll(0xabcd000000001234);
   417      pll(0xabcd12340000);
   418      pll(0xabcd000012340000);
   419      pll(0xabcd123400000000);
   420      pll(0xffffffffabcd1234);
   421      pll(0xffffabcdffff1234);
   422      pll(0xabcdffffffff1234);
   423      pll(0xffffabcd1234ffff);
   424      pll(0xabcdffff1234ffff);
   425      pll(0xabcd1234ffffffff);
   426  
   427      pll(0xffffef0123456789);
   428      pll(0xabcdef012345ffff);
   429  
   430      pll(0xabcdef0123456789);
   431  }
   432  
   433  static uint32_t addip0(uint32_t x) { return x + 0; }
   434  static uint64_t sublp0(uint64_t x) { return x - 0; }
   435  static uint32_t addip123(uint32_t x) { return x + 123; }
   436  static uint64_t addlm123(uint64_t x) { return x + -123; }
   437  static uint64_t sublp4095(uint64_t x) { return x - 4095; }
   438  static uint32_t subim503808(uint32_t x) { return x - -503808; }
   439  static uint64_t addp12345(uint64_t x) { return x + 12345; }
   440  static uint32_t subp12345(uint32_t x) { return x - 12345; }
   441  
   442  static uint32_t mvni(uint32_t x) { return 0xffffffff - x; }
   443  static uint64_t negl(uint64_t x) { return 0 - x; }
   444  static uint32_t rsbi123(uint32_t x) { return 123 - x; }
   445  static uint64_t rsbl123(uint64_t x) { return 123 - x; }
   446  
   447  static uint32_t andi0(uint32_t x) { return x & 0; }
   448  static uint64_t andlm1(uint64_t x) { return x & -1; }
   449  static uint64_t orrl0(uint64_t x) { return x | 0; }
   450  static uint32_t orrim1(uint32_t x) { return x | -1; }
   451  static uint32_t eori0(uint32_t x) { return x ^ 0; }
   452  static uint64_t eorlm1(uint64_t x) { return x ^ -1; }
   453  static uint32_t and0xf0(uint32_t x) { return x & 0xf0; }
   454  static uint64_t orr0xf0(uint64_t x) { return x | 0xf0; }
   455  static uint64_t eor0xf0(uint64_t x) { return x ^ 0xf0; }
   456  
   457  static uint32_t lsli0(uint32_t x) { return x << 0; }
   458  static uint32_t lsri0(uint32_t x) { return x >> 0; }
   459  static int64_t asrl0(int64_t x) { return x >> 0; }
   460  static uint32_t lsli1(uint32_t x) { return x << 1; }
   461  static uint32_t lsli31(uint32_t x) { return x << 31; }
   462  static uint64_t lsll1(uint64_t x) { return x << 1; }
   463  static uint64_t lsll63(uint64_t x) { return x << 63; }
   464  static uint32_t lsri1(uint32_t x) { return x >> 1; }
   465  static uint32_t lsri31(uint32_t x) { return x >> 31; }
   466  static uint64_t lsrl1(uint64_t x) { return x >> 1; }
   467  static uint64_t lsrl63(uint64_t x) { return x >> 63; }
   468  static int32_t asri1(int32_t x) { return x >> 1; }
   469  static int32_t asri31(int32_t x) { return x >> 31; }
   470  static int64_t asrl1(int64_t x) { return x >> 1; }
   471  static int64_t asrl63(int64_t x) { return x >> 63; }
   472  
   473  void opi(void)
   474  {
   475      int x = 1000;
   476      pll(addip0(x));
   477      pll(sublp0(x));
   478      pll(addip123(x));
   479      pll(addlm123(x));
   480      pll(sublp4095(x));
   481      pll(subim503808(x));
   482      pll(addp12345(x));
   483      pll(subp12345(x));
   484      pll(mvni(x));
   485      pll(negl(x));
   486      pll(rsbi123(x));
   487      pll(rsbl123(x));
   488      pll(andi0(x));
   489      pll(andlm1(x));
   490      pll(orrl0(x));
   491      pll(orrim1(x));
   492      pll(eori0(x));
   493      pll(eorlm1(x));
   494      pll(and0xf0(x));
   495      pll(orr0xf0(x));
   496      pll(eor0xf0(x));
   497      pll(lsli0(x));
   498      pll(lsri0(x));
   499      pll(asrl0(x));
   500      pll(lsli1(x));
   501      pll(lsli31(x));
   502      pll(lsll1(x));
   503      pll(lsll63(x));
   504      pll(lsri1(x));
   505      pll(lsri31(x));
   506      pll(lsrl1(x));
   507      pll(lsrl63(x));
   508      pll(asri1(x));
   509      pll(asri31(x));
   510      pll(asrl1(x));
   511      pll(asrl63(x));
   512  }
   513  
   514  void pcs(void)
   515  {
   516      arg();
   517      ret();
   518      stdarg();
   519      movi();
   520      opi();
   521  }
   522  
   523  int main()
   524  {
   525      pcs();
   526      return 0;
   527  }