[llvm-commits] CVS: llvm-test/SingleSource/UnitTests/Integer/APInt/sign.cpp

Reid Spencer reid at x10sys.com
Mon Jan 29 17:09:08 PST 2007



Changes in directory llvm-test/SingleSource/UnitTests/Integer/APInt:

sign.cpp added (r1.1)
---
Log message:

Add a new test case.


---
Diffs of the changes:  (+63 -0)

 sign.cpp |   63 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 63 insertions(+)


Index: llvm-test/SingleSource/UnitTests/Integer/APInt/sign.cpp
diff -c /dev/null llvm-test/SingleSource/UnitTests/Integer/APInt/sign.cpp:1.1
*** /dev/null	Mon Jan 29 19:09:02 2007
--- llvm-test/SingleSource/UnitTests/Integer/APInt/sign.cpp	Mon Jan 29 19:08:52 2007
***************
*** 0 ****
--- 1,63 ----
+ //===--- sign.c --- Test Cases for Bit Accurate Types --------------------===//
+ //
+ // This file was developed by Guoling Han and is distributed under the 
+ // University of Illinois Open Source License. See LICENSE.TXT for details.
+ //
+ //===----------------------------------------------------------------------===//
+ //
+ // This is a general test for arithmetic operations with signed and
+ // unsigned operands.
+ //
+ //===----------------------------------------------------------------------===//
+ 
+ #include "llvm/ADT/APInt.h"
+ #include <stdio.h>
+ 
+ using namespace llvm;
+ 
+ int
+ main ( int argc, char** argv)
+ {
+   int num, r;
+   APInt x(24), y(24), z(24);
+   APInt ux(24), uy(24), uz(24);
+ 
+   r = rand();
+   r = r - 1804289384; // -1
+ 
+   y = r; // -1
+   uy = r; // 0xffffff
+   
+   if (argc > 1)
+     num = atoi(argv[1]);
+ 
+   
+   num = num - 0xdf5e75; //0x1000001
+ 
+   x = num;
+   ux = num;
+   printf("x = %d, ux = %u, y=%d, uy = %u\n", int(x), (unsigned int)ux, 
+          int(y), (unsigned int)uy);
+     
+   z = x * y;  // 0x1000001 * (-1)
+   uz = ux * uy;
+   printf("z=%d, uz=%u\n", int(z), (unsigned int)uz);
+ 
+   z = x % 314;
+   uz = ux % 314;
+   printf("z=%d, uz=%u\n", int(z), (unsigned int)uz);
+ 
+   z = x / 314;
+   uz = ux / 314;
+   printf("z=%d, uz=%u\n", int(z), (unsigned int)uz);
+ 
+   z = (x+0xf28) / 314;
+   uz = (ux + 0xf28) / 314;
+   printf("z=%d, uz=%u\n", int(z), (unsigned int)uz);
+ 
+   z = (x - 580) / 314;
+   uz = (((ux - 580)) / 314);
+   printf("z=%d, uz=%u\n", int(z), (unsigned int)uz);
+ 
+   return 0;
+ }






More information about the llvm-commits mailing list