Add functions castbool and boolexpr.
authorVikram S. Adve <vadve@cs.uiuc.edu>
Thu, 22 Aug 2002 03:05:13 +0000 (03:05 +0000)
committerVikram S. Adve <vadve@cs.uiuc.edu>
Thu, 22 Aug 2002 03:05:13 +0000 (03:05 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3448 91177308-0d34-0410-b5e6-96231b3b80d8

test/CodeGen/Generic/select.ll
test/LLC/select.ll

index 5976e5f88d42e2293e5432775b449b15ddf6b8ff..4a34d587852504ec24852cdbec268fb748c47fe2 100644 (file)
@@ -108,6 +108,30 @@ retlbl:
 end
 
 
+;; Test use of a boolean result in cast operations.
+;; Requires converting a condition code result into a 0/1 value in a reg.
+;; 
+implementation
+
+int %castbool(int %A, int %B) {
+bb0:                                           ; [#uses=0]
+    %cond213 = setlt int %A, %B                        ; <bool> [#uses=1]
+    %cast110 = cast bool %cond213 to ubyte      ; <ubyte> [#uses=1]
+    %cast109 = cast ubyte %cast110 to int       ; <int> [#uses=1]
+    ret int %cast109
+}
+
+
+;; Test use of a boolean result in arithmetic and logical operations.
+;; Requires converting a condition code result into a 0/1 value in a reg.
+;; 
+bool %boolexpr(bool %b, int %N) {
+    %b2 = setge int %N, 0
+    %b3 = and bool %b, %b2
+    ret bool %b3
+}
+
+
 ; Test branch on floating point comparison
 ;
 void "testfloatbool"(float %x, float %y)   ; Def %0, %1 - float
index 5976e5f88d42e2293e5432775b449b15ddf6b8ff..4a34d587852504ec24852cdbec268fb748c47fe2 100644 (file)
@@ -108,6 +108,30 @@ retlbl:
 end
 
 
+;; Test use of a boolean result in cast operations.
+;; Requires converting a condition code result into a 0/1 value in a reg.
+;; 
+implementation
+
+int %castbool(int %A, int %B) {
+bb0:                                           ; [#uses=0]
+    %cond213 = setlt int %A, %B                        ; <bool> [#uses=1]
+    %cast110 = cast bool %cond213 to ubyte      ; <ubyte> [#uses=1]
+    %cast109 = cast ubyte %cast110 to int       ; <int> [#uses=1]
+    ret int %cast109
+}
+
+
+;; Test use of a boolean result in arithmetic and logical operations.
+;; Requires converting a condition code result into a 0/1 value in a reg.
+;; 
+bool %boolexpr(bool %b, int %N) {
+    %b2 = setge int %N, 0
+    %b3 = and bool %b, %b2
+    ret bool %b3
+}
+
+
 ; Test branch on floating point comparison
 ;
 void "testfloatbool"(float %x, float %y)   ; Def %0, %1 - float