[PATCH] D140069: [DAGCombiner] Scalarize vectorized loads that are splatted

Luke Lau via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Dec 15 03:41:31 PST 2022


luke added a comment.

In D140069#3997198 <https://reviews.llvm.org/D140069#3997198>, @pengfei wrote:

> Checked changes in X86 tests are all correct.

Thanks! It looks like some other X86 tests are still failing, I'll try to address them also.

On aarch64 some tests in `arm64-dup.ll` are failing:

  define <8 x i8> @vduplane8(<8 x i8>* %A) nounwind {
  ; CHECK-LABEL: vduplane8:
  ; CHECK:       // %bb.0:
  ; CHECK-NEXT:    ldr d0, [x0]
  ; CHECK-NEXT:    dup.8b v0, v0[1]
  ; CHECK-NEXT:    ret
  	%tmp1 = load <8 x i8>, <8 x i8>* %A
  	%tmp2 = shufflevector <8 x i8> %tmp1, <8 x i8> undef, <8 x i32> < i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1 >
  	ret <8 x i8> %tmp2
  }

Is now being selected as a broadcasted load:

  vduplane8:                              // @vduplane8
  // %bb.0:
  	add	x8, x0, #1
  	ld1r.8b	{ v0 }, [x8]
  	ret

I'm not familiar with aarch64, but is it not possible to fold the offset in like this?

  vduplane8:                              // @vduplane8
  // %bb.0:
  	ld1r.8b	{ v0 }, [x0], #1
  	ret


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D140069/new/

https://reviews.llvm.org/D140069



More information about the llvm-commits mailing list