forked from OSchip/llvm-project
R600/SI: Add a pattern for i64 and in a branch
llvm-svn: 217041
This commit is contained in:
parent
b8b841366a
commit
102c68786c
|
@ -1897,6 +1897,7 @@ class BinOp64Pat <SDNode node, Instruction inst> : Pat <
|
|||
(EXTRACT_SUBREG i64:$src1, sub1)), sub1)
|
||||
>;
|
||||
|
||||
def : BinOp64Pat <and, V_AND_B32_e32>;
|
||||
def : BinOp64Pat <or, V_OR_B32_e32>;
|
||||
def : BinOp64Pat <xor, V_XOR_B32_e32>;
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue