summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/ARM
diff options
context:
space:
mode:
authorSimon Pilgrim <llvm-dev@redking.me.uk>2020-01-04 13:15:50 +0000
committerSimon Pilgrim <llvm-dev@redking.me.uk>2020-01-04 13:15:50 +0000
commiteb0e1978df7b9e7df3e645bb48fbf655f8aab69a (patch)
treee410d5a72291fca50a9ce6248a587b0f294bb457 /llvm/test/CodeGen/ARM
parent1737cc750c464b454ec14b397ce1b7cf504e17a7 (diff)
downloadbcm5719-llvm-eb0e1978df7b9e7df3e645bb48fbf655f8aab69a.tar.gz
bcm5719-llvm-eb0e1978df7b9e7df3e645bb48fbf655f8aab69a.zip
[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
Diffstat (limited to 'llvm/test/CodeGen/ARM')
-rw-r--r--llvm/test/CodeGen/ARM/dagcombine-anyexttozeroext.ll9
1 files changed, 3 insertions, 6 deletions
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
OpenPOWER on IntegriCloud