[llvm-commits] CVS: llvm/test/Regression/CodeGen/X86/trunc-to-bool.ll

Reid Spencer reid at x10sys.com
Sun Nov 26 17:06:22 PST 2006



Changes in directory llvm/test/Regression/CodeGen/X86:

trunc-to-bool.ll added (r1.1)
---
Log message:

For PR950: http://llvm.org/PR950 :
The long awaited CAST patch. This introduces 12 new instructions into LLVM
to replace the cast instruction. Corresponding changes throughout LLVM are
provided. This passes llvm-test, llvm/test, and SPEC CPUINT2000 with the
exception of 175.vpr which fails only on a slight floating point output
difference.


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

 trunc-to-bool.ll |   32 ++++++++++++++++++++++++++++++++
 1 files changed, 32 insertions(+)


Index: llvm/test/Regression/CodeGen/X86/trunc-to-bool.ll
diff -c /dev/null llvm/test/Regression/CodeGen/X86/trunc-to-bool.ll:1.1
*** /dev/null	Sun Nov 26 19:05:21 2006
--- llvm/test/Regression/CodeGen/X86/trunc-to-bool.ll	Sun Nov 26 19:05:10 2006
***************
*** 0 ****
--- 1,32 ----
+ ; An integer truncation to bool should be done with an and instruction to make
+ ; sure only the LSBit survives. Test that this is the case both for a returned
+ ; value and as the operand of a branch.
+ ; RUN: llvm-as < %s | llc -march=x86 &&
+ ; RUN: llvm-as < %s | llc -march=x86 | grep '\(and\)\|\(test.*1\)' | wc -l | grep 3
+ bool %test1(int %X) {
+     %Y = trunc int %X to bool
+     ret bool %Y
+ }
+ 
+ bool %test2(int %val, int %mask) {
+ entry:
+     %mask     = trunc int %mask to ubyte
+     %shifted  = ashr int %val, ubyte %mask
+     %anded    = and int %shifted, 1
+     %trunced  = trunc int %anded to bool
+     br bool %trunced, label %ret_true, label %ret_false
+ ret_true:
+     ret bool true
+ ret_false:
+     ret bool false
+ }
+ 
+ int %test3(sbyte* %ptr) {
+     %val = load sbyte* %ptr
+     %tmp = trunc sbyte %val to bool             ; %<bool> [#uses=1]
+     br bool %tmp, label %cond_true, label %cond_false
+ cond_true:
+     ret int 21
+ cond_false:
+     ret int 42
+ }






More information about the llvm-commits mailing list