ARM cost model: Fix costs for some vector selects
I was too pessimistic in r177105. Vector selects that fit into a legal register type lower just fine. I was mislead by the code fragment that I was using. The stores/loads that I saw in those cases came from lowering the conditional off an address. Changing the code fragment to: %T0_3 = type <8 x i18> %T1_3 = type <8 x i1> define void @func_blend3(%T0_3* %loadaddr, %T0_3* %loadaddr2, %T1_3* %blend, %T0_3* %storeaddr) { %v0 = load %T0_3* %loadaddr %v1 = load %T0_3* %loadaddr2 ==> FROM: ;%c = load %T1_3* %blend ==> TO: %c = icmp slt %T0_3 %v0, %v1 ==> USE: %r = select %T1_3 %c, %T0_3 %v0, %T0_3 %v1 store %T0_3 %r, %T0_3* %storeaddr ret void } revealed this mistake. radar://13403975 llvm-svn: 177170
Showing
- llvm/lib/Target/ARM/ARMTargetTransformInfo.cpp 0 additions, 5 deletionsllvm/lib/Target/ARM/ARMTargetTransformInfo.cpp
- llvm/test/Analysis/CostModel/ARM/select.ll 5 additions, 5 deletionsllvm/test/Analysis/CostModel/ARM/select.ll
- llvm/test/CodeGen/ARM/vselect_imax.ll 10 additions, 106 deletionsllvm/test/CodeGen/ARM/vselect_imax.ll
Loading
Please register or sign in to comment