From eb0e1978df7b9e7df3e645bb48fbf655f8aab69a Mon Sep 17 00:00:00 2001 From: Simon Pilgrim Date: Sat, 4 Jan 2020 13:15:50 +0000 Subject: [TargetLowering] SimplifyDemandedBits - call SimplifyMultipleUseDemandedBits for ISD::EXTRACT_VECTOR_ELT (REAPPLIED) This patch attempts to peek through vectors based on the demanded bits/elt of a particular ISD::EXTRACT_VECTOR_ELT node, allowing us to avoid dependencies on ops that have no impact on the extract. In particular this helps remove some unnecessary scalar->vector->scalar patterns. The wasm shift patterns are annoying - @tlively has indicated that the wasm vector shift codegen are to be refactored in the near-term and isn't considered a major issue. Reapplied after reversion at rL368660 due to PR42982 which was fixed at rGca7fdd41bda0. Differential Revision: https://reviews.llvm.org/D65887 --- llvm/test/CodeGen/ARM/dagcombine-anyexttozeroext.ll | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) (limited to 'llvm/test/CodeGen/ARM') diff --git a/llvm/test/CodeGen/ARM/dagcombine-anyexttozeroext.ll b/llvm/test/CodeGen/ARM/dagcombine-anyexttozeroext.ll index de24681470d..643468c6dc8 100644 --- a/llvm/test/CodeGen/ARM/dagcombine-anyexttozeroext.ll +++ b/llvm/test/CodeGen/ARM/dagcombine-anyexttozeroext.ll @@ -113,17 +113,14 @@ define float @k(<8 x i8>* nocapture %in) { } define float @KnownUpperZero(<4 x i16> %v) { -; FIXME: uxtb are not required ; CHECK-LABEL: KnownUpperZero: ; CHECK: @ %bb.0: -; CHECK-NEXT: vmov.i16 d16, #0x3 -; CHECK-NEXT: vmov d17, r0, r1 -; CHECK-NEXT: vand d16, d17, d16 +; CHECK-NEXT: vmov d16, r0, r1 ; CHECK-NEXT: vmov.u16 r0, d16[0] ; CHECK-NEXT: vmov.u16 r1, d16[3] -; CHECK-NEXT: uxtb r0, r0 +; CHECK-NEXT: and r0, r0, #3 ; CHECK-NEXT: vmov s0, r0 -; CHECK-NEXT: uxtb r0, r1 +; CHECK-NEXT: and r0, r1, #3 ; CHECK-NEXT: vmov s2, r0 ; CHECK-NEXT: vcvt.f32.s32 s0, s0 ; CHECK-NEXT: vcvt.f32.s32 s2, s2 -- cgit v1.2.3