mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-11-02 07:11:49 +00:00
ARM: Mark VSELECT as 'expand'.
The backend already pattern matches to form VBSL when it can. We may want to teach it to use the vbsl intrinsics at some point to prevent machine licm from mucking with this, but using the Expand is completely correct. http://llvm.org/bugs/show_bug.cgi?id=13831 http://llvm.org/bugs/show_bug.cgi?id=13961 Patch by Peter Couperus <peter.couperus@st.com>. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165845 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
6e006d3de8
commit
4346fa9437
@ -122,6 +122,7 @@ void ARMTargetLowering::addTypeForNEON(MVT VT, MVT PromotedLdStVT,
|
||||
setOperationAction(ISD::EXTRACT_SUBVECTOR, VT, Legal);
|
||||
setOperationAction(ISD::SELECT, VT, Expand);
|
||||
setOperationAction(ISD::SELECT_CC, VT, Expand);
|
||||
setOperationAction(ISD::VSELECT, VT, Expand);
|
||||
setOperationAction(ISD::SIGN_EXTEND_INREG, VT, Expand);
|
||||
if (VT.isInteger()) {
|
||||
setOperationAction(ISD::SHL, VT, Custom);
|
||||
|
12
test/CodeGen/ARM/vselect_imax.ll
Normal file
12
test/CodeGen/ARM/vselect_imax.ll
Normal file
@ -0,0 +1,12 @@
|
||||
; RUN: llc < %s -march=arm -mattr=+neon | FileCheck %s
|
||||
; Make sure that ARM backend with NEON handles vselect.
|
||||
|
||||
define void @vmax_v4i32(<4 x i32>* %m, <4 x i32> %a, <4 x i32> %b) {
|
||||
; CHECK: vcgt.s32 [[QR:q[0-9]+]], [[Q1:q[0-9]+]], [[Q2:q[0-9]+]]
|
||||
; CHECK: vbsl [[QR]], [[Q1]], [[Q2]]
|
||||
%cmpres = icmp sgt <4 x i32> %a, %b
|
||||
%maxres = select <4 x i1> %cmpres, <4 x i32> %a, <4 x i32> %b
|
||||
store <4 x i32> %maxres, <4 x i32>* %m
|
||||
ret void
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user