From ddd575101d97d6167fd4a011e2d4f02c7afa9935 Mon Sep 17 00:00:00 2001 From: "Vikram S. Adve" Date: Thu, 22 Aug 2002 03:05:13 +0000 Subject: [PATCH] Add functions castbool and boolexpr. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3448 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/CodeGen/Generic/select.ll | 24 ++++++++++++++++++++++++ test/LLC/select.ll | 24 ++++++++++++++++++++++++ 2 files changed, 48 insertions(+) diff --git a/test/CodeGen/Generic/select.ll b/test/CodeGen/Generic/select.ll index 5976e5f88d4..4a34d587852 100644 --- a/test/CodeGen/Generic/select.ll +++ b/test/CodeGen/Generic/select.ll @@ -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 ; [#uses=1] + %cast110 = cast bool %cond213 to ubyte ; [#uses=1] + %cast109 = cast ubyte %cast110 to 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 diff --git a/test/LLC/select.ll b/test/LLC/select.ll index 5976e5f88d4..4a34d587852 100644 --- a/test/LLC/select.ll +++ b/test/LLC/select.ll @@ -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 ; [#uses=1] + %cast110 = cast bool %cond213 to ubyte ; [#uses=1] + %cast109 = cast ubyte %cast110 to 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