Revert "AArch64: Use CMP;CCMP sequences for and/or/setcc trees."

The patch triggers a miscompile on SPEC 2006 403.gcc with the (ref)
200.i and scilab.i inputs. I opened PR23866 to track analysis of this.

This reverts commit r238793.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@239880 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Matthias Braun
2015-06-17 04:02:32 +00:00
parent 1c19be4cd3
commit e460807bcd
5 changed files with 72 additions and 295 deletions

View File

@@ -287,43 +287,3 @@ sw.bb.i.i:
%code1.i.i.phi.trans.insert = getelementptr inbounds %str1, %str1* %0, i64 0, i32 0, i32 0, i64 16
br label %sw.bb.i.i
}
; CHECK-LABEL: select_and
define i64 @select_and(i32 %v1, i32 %v2, i64 %a, i64 %b) {
; CHECK: cmp
; CHECK: ccmp{{.*}}, #0, ne
; CHECK: csel{{.*}}, lt
%1 = icmp slt i32 %v1, %v2
%2 = icmp ne i32 5, %v2
%3 = and i1 %1, %2
%sel = select i1 %3, i64 %a, i64 %b
ret i64 %sel
}
; CHECK-LABEL: select_or
define i64 @select_or(i32 %v1, i32 %v2, i64 %a, i64 %b) {
; CHECK: cmp
; CHECK: ccmp{{.*}}, #8, eq
; CHECK: csel{{.*}}, lt
%1 = icmp slt i32 %v1, %v2
%2 = icmp ne i32 5, %v2
%3 = or i1 %1, %2
%sel = select i1 %3, i64 %a, i64 %b
ret i64 %sel
}
; CHECK-LABEL: select_complicated
define i16 @select_complicated(double %v1, double %v2, i16 %a, i16 %b) {
; CHECK: fcmp
; CHECK: fccmp{{.*}}, #4, ne
; CHECK: fccmp{{.*}}, #1, ne
; CHECK: fccmp{{.*}}, #4, vc
; CEHCK: csel{{.*}}, eq
%1 = fcmp one double %v1, %v2
%2 = fcmp oeq double %v2, 13.0
%3 = fcmp oeq double %v1, 42.0
%or0 = or i1 %2, %3
%or1 = or i1 %1, %or0
%sel = select i1 %or1, i16 %a, i16 %b
ret i16 %sel
}