mono_hwcap_arch_init ()
{
  int D.5864;
  int edx.0;
  int D.5868;
  int D.5871;
  int D.5874;
  int D.5877;
  int ecx.1;
  int D.5881;
  int D.5884;
  int D.5887;
  int D.5890;
  int D.5893;
  int eax.2;
  unsigned int eax.3;
  int ebx.4;
  int D.5907;
  int D.5910;
  int D.5913;
  _Bool D.5914;
  int mono_hwcap_x86_is_xen.5;
  int eax;
  int ebx;
  int ecx;
  int edx;

  try
    {
      D.5864 = cpuid (1, &eax, &ebx, &ecx, &edx);
      if (D.5864 != 0) goto <D.5865>; else goto <D.5866>;
      <D.5865>:
      edx.0 = edx;
      D.5868 = edx.0 & 32768;
      if (D.5868 != 0) goto <D.5869>; else goto <D.5870>;
      <D.5869>:
      mono_hwcap_x86_has_cmov = 1;
      edx.0 = edx;
      D.5871 = edx.0 & 1;
      if (D.5871 != 0) goto <D.5872>; else goto <D.5873>;
      <D.5872>:
      mono_hwcap_x86_has_fcmov = 1;
      <D.5873>:
      <D.5870>:
      edx.0 = edx;
      D.5874 = edx.0 & 33554432;
      if (D.5874 != 0) goto <D.5875>; else goto <D.5876>;
      <D.5875>:
      mono_hwcap_x86_has_sse1 = 1;
      <D.5876>:
      edx.0 = edx;
      D.5877 = edx.0 & 67108864;
      if (D.5877 != 0) goto <D.5878>; else goto <D.5879>;
      <D.5878>:
      mono_hwcap_x86_has_sse2 = 1;
      <D.5879>:
      ecx.1 = ecx;
      D.5881 = ecx.1 & 1;
      if (D.5881 != 0) goto <D.5882>; else goto <D.5883>;
      <D.5882>:
      mono_hwcap_x86_has_sse3 = 1;
      <D.5883>:
      ecx.1 = ecx;
      D.5884 = ecx.1 & 512;
      if (D.5884 != 0) goto <D.5885>; else goto <D.5886>;
      <D.5885>:
      mono_hwcap_x86_has_ssse3 = 1;
      <D.5886>:
      ecx.1 = ecx;
      D.5887 = ecx.1 & 524288;
      if (D.5887 != 0) goto <D.5888>; else goto <D.5889>;
      <D.5888>:
      mono_hwcap_x86_has_sse41 = 1;
      <D.5889>:
      ecx.1 = ecx;
      D.5890 = ecx.1 & 1048576;
      if (D.5890 != 0) goto <D.5891>; else goto <D.5892>;
      <D.5891>:
      mono_hwcap_x86_has_sse42 = 1;
      <D.5892>:
      <D.5866>:
      D.5893 = cpuid (-2147483648, &eax, &ebx, &ecx, &edx);
      if (D.5893 != 0) goto <D.5894>; else goto <D.5895>;
      <D.5894>:
      eax.2 = eax;
      eax.3 = (unsigned int) eax.2;
      if (eax.3 > 2147483648) goto <D.5898>; else goto <D.5899>;
      <D.5898>:
      ebx.4 = ebx;
      if (ebx.4 == 1752462657) goto <D.5901>; else goto <D.5902>;
      <D.5901>:
      ecx.1 = ecx;
      if (ecx.1 == 1145913699) goto <D.5903>; else goto <D.5904>;
      <D.5903>:
      edx.0 = edx;
      if (edx.0 == 1769238117) goto <D.5905>; else goto <D.5906>;
      <D.5905>:
      D.5907 = cpuid (-2147483647, &eax, &ebx, &ecx, &edx);
      if (D.5907 != 0) goto <D.5908>; else goto <D.5909>;
      <D.5908>:
      ecx.1 = ecx;
      D.5910 = ecx.1 & 64;
      if (D.5910 != 0) goto <D.5911>; else goto <D.5912>;
      <D.5911>:
      mono_hwcap_x86_has_sse4a = 1;
      <D.5912>:
      <D.5909>:
      <D.5906>:
      <D.5904>:
      <D.5902>:
      <D.5899>:
      <D.5895>:
      D.5913 = access ("/proc/xen", 0);
      D.5914 = D.5913 == 0;
      mono_hwcap_x86_is_xen.5 = (int) D.5914;
      mono_hwcap_x86_is_xen = mono_hwcap_x86_is_xen.5;
    }
  finally
    {
      eax = {CLOBBER};
      ebx = {CLOBBER};
      ecx = {CLOBBER};
      edx = {CLOBBER};
    }
}


cpuid (int id, int * p_eax, int * p_ebx, int * p_ecx, int * p_edx)
{
  gboolean D.5916;

  __asm__ __volatile__("cpuid
	" : "=a" *p_eax, "=b" *p_ebx, "=c" *p_ecx, "=d" *p_edx : "a" id);
  D.5916 = 1;
  return D.5916;
}


mono_hwcap_print (struct FILE * f)
{
  int mono_hwcap_x86_is_xen.6;
  int mono_hwcap_x86_has_cmov.7;
  int mono_hwcap_x86_has_fcmov.8;
  int mono_hwcap_x86_has_sse1.9;
  int mono_hwcap_x86_has_sse2.10;
  int mono_hwcap_x86_has_sse3.11;
  int mono_hwcap_x86_has_ssse3.12;
  int mono_hwcap_x86_has_sse41.13;
  int mono_hwcap_x86_has_sse42.14;
  int mono_hwcap_x86_has_sse4a.15;

  mono_hwcap_x86_is_xen.6 = mono_hwcap_x86_is_xen;
  monoeg_g_fprintf (f, "mono_hwcap_x86_is_xen = %i\n", mono_hwcap_x86_is_xen.6);
  mono_hwcap_x86_has_cmov.7 = mono_hwcap_x86_has_cmov;
  monoeg_g_fprintf (f, "mono_hwcap_x86_has_cmov = %i\n", mono_hwcap_x86_has_cmov.7);
  mono_hwcap_x86_has_fcmov.8 = mono_hwcap_x86_has_fcmov;
  monoeg_g_fprintf (f, "mono_hwcap_x86_has_fcmov = %i\n", mono_hwcap_x86_has_fcmov.8);
  mono_hwcap_x86_has_sse1.9 = mono_hwcap_x86_has_sse1;
  monoeg_g_fprintf (f, "mono_hwcap_x86_has_sse1 = %i\n", mono_hwcap_x86_has_sse1.9);
  mono_hwcap_x86_has_sse2.10 = mono_hwcap_x86_has_sse2;
  monoeg_g_fprintf (f, "mono_hwcap_x86_has_sse2 = %i\n", mono_hwcap_x86_has_sse2.10);
  mono_hwcap_x86_has_sse3.11 = mono_hwcap_x86_has_sse3;
  monoeg_g_fprintf (f, "mono_hwcap_x86_has_sse3 = %i\n", mono_hwcap_x86_has_sse3.11);
  mono_hwcap_x86_has_ssse3.12 = mono_hwcap_x86_has_ssse3;
  monoeg_g_fprintf (f, "mono_hwcap_x86_has_ssse3 = %i\n", mono_hwcap_x86_has_ssse3.12);
  mono_hwcap_x86_has_sse41.13 = mono_hwcap_x86_has_sse41;
  monoeg_g_fprintf (f, "mono_hwcap_x86_has_sse41 = %i\n", mono_hwcap_x86_has_sse41.13);
  mono_hwcap_x86_has_sse42.14 = mono_hwcap_x86_has_sse42;
  monoeg_g_fprintf (f, "mono_hwcap_x86_has_sse42 = %i\n", mono_hwcap_x86_has_sse42.14);
  mono_hwcap_x86_has_sse4a.15 = mono_hwcap_x86_has_sse4a;
  monoeg_g_fprintf (f, "mono_hwcap_x86_has_sse4a = %i\n", mono_hwcap_x86_has_sse4a.15);
}


