From ce4caf146ffd843f7677b7d6466ae32af24767bb Mon Sep 17 00:00:00 2001 From: Tom Stellard Date: Wed, 3 Sep 2014 15:22:41 +0000 Subject: [PATCH] R600/SI: Add a pattern for i64 and in a branch git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@217041 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/R600/SIInstructions.td | 1 + test/CodeGen/R600/and.ll | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/lib/Target/R600/SIInstructions.td b/lib/Target/R600/SIInstructions.td index 47ca42c00b1..71792d12074 100644 --- a/lib/Target/R600/SIInstructions.td +++ b/lib/Target/R600/SIInstructions.td @@ -1897,6 +1897,7 @@ class BinOp64Pat : Pat < (EXTRACT_SUBREG i64:$src1, sub1)), sub1) >; +def : BinOp64Pat ; def : BinOp64Pat ; def : BinOp64Pat ; diff --git a/test/CodeGen/R600/and.ll b/test/CodeGen/R600/and.ll index e20037e6bb6..7bbbec2d969 100644 --- a/test/CodeGen/R600/and.ll +++ b/test/CodeGen/R600/and.ll @@ -108,6 +108,26 @@ define void @v_and_i64(i64 addrspace(1)* %out, i64 addrspace(1)* %aptr, i64 addr ret void } +; FUNC-LABEL: @v_and_i64_br +; SI: V_AND_B32 +; SI: V_AND_B32 +define void @v_and_i64_br(i64 addrspace(1)* %out, i64 addrspace(1)* %aptr, i64 addrspace(1)* %bptr, i32 %cond) { +entry: + %tmp0 = icmp eq i32 %cond, 0 + br i1 %tmp0, label %if, label %endif + +if: + %a = load i64 addrspace(1)* %aptr, align 8 + %b = load i64 addrspace(1)* %bptr, align 8 + %and = and i64 %a, %b + br label %endif + +endif: + %tmp1 = phi i64 [%and, %if], [0, %entry] + store i64 %tmp1, i64 addrspace(1)* %out, align 8 + ret void +} + ; FUNC-LABEL: @v_and_constant_i64 ; SI: V_AND_B32 ; SI: V_AND_B32 -- 2.34.1