// RUN: %llvmgcc -S %s -o - | llvm-as -o /dev/null

#include <stdlib.h>
#include <stdio.h>
#include <sys/types.h>

int
main(int argc, char** argv)
{
  char     c1;
  short    s1, ssf1, ssd1;
  unsigned char  ubs0;
  signed char   bs0;
  unsigned char ubc0, uc2;
  unsigned short us2, usf1, usd1;
  int ic3, is3, sif1, sid1;
  unsigned int     uic4, uis4, uif1, uid1;
  long     slf1, sld1;
  unsigned long    ulf1, uld1;
  float    f1;
  double   d1;
  
  /* Test integer to integer conversions */
  
  c1 = (char)  (argc >= 2)? atoi(argv[1]) : 0xff64; /* 100 = 'd' */
  s1 = (short) (argc >= 3)? atoi(argv[2]) : -769;   /* 0xf7ff = -769 */
  
  ubc0 = (unsigned char) c1;                      /* 100 = 'd' */
  ubs0 = (unsigned char) s1;                            /* 0xff = 255 */
  bs0  = (signed char) s1;                             /* 0xff = -1 */
  
  uc2 = (unsigned char) c1;                       /* 100 = 'd' */
  us2 = (unsigned short) s1;                      /* 0xf7ff = 64767 */
  
  ic3 = (int) c1;                                 /* 100 = 'd' */
  is3 = (int) s1;                                 /* 0xfffff7ff = -769 */
  
  uic4 = (unsigned int) c1;                       /*  100 = 'd' */
  uis4 = (unsigned int) s1;                       /* 0xfffff7ff = 4294966527 */
  
  printf("ubc0 = '%c'\n", ubc0);
  printf("ubs0 = %u\n",   ubs0);
  printf("bs0  = %d\n",   bs0);
  printf("c1   = '%c'\n", c1);
  printf("s1   = %d\n",   s1);
  printf("uc2  = '%c'\n", uc2);
  printf("us2  = %u\n",   us2);
  printf("ic3  = '%c'\n", ic3);
  printf("is3  = %d\n",   is3);
  printf("uic4 = '%c'\n", uic4);
  printf("uis4 = %u\n",   uis4);
  
  /* Test floating-point to integer conversions */
  f1 = (float)  (argc >= 4)? atof(argv[3]) : 1.0;
  d1 =          (argc >= 5)? atof(argv[4]) : 2.0;
  
  usf1 = (unsigned short) f1;
  usd1 = (unsigned short) d1;
  uif1 = (unsigned int) f1;
  uid1 = (unsigned int) d1;
  ulf1 = (unsigned long) f1;
  uld1 = (unsigned long) d1;
  
  ssf1 = (short) f1;
  ssd1 = (short) d1;
  sif1 = (int) f1;
  sid1 = (int) d1;
  slf1 = (long) f1;
  sld1 = (long) d1;
  
  printf("usf1 = %u\n", usf1);
  printf("usd1 = %u\n", usd1);
  printf("uif1 = %u\n", uif1);
  printf("uid1 = %u\n", uid1);
  printf("ulf1 = %u\n", ulf1);
  printf("uld1 = %u\n", uld1);
  
  printf("ssf1 = %d\n", ssf1);
  printf("ssd1 = %d\n", ssd1);
  printf("sif1 = %d\n", sif1);
  printf("sid1 = %d\n", sid1);
  printf("slf1 = %d\n", slf1);
  printf("sld1 = %d\n", sld1);
  
  return 0;
}
