Need to reorder properly the scalars, when evaluating the costs for the external uses/geps to prevent differences in the calculating of the profitability costs, used to choose between gather/compressed loads. Fixes https://github.com/llvm/llvm-project/pull/132099#issuecomment-2789627454
30 lines
1.2 KiB
LLVM
30 lines
1.2 KiB
LLVM
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5
|
|
; RUN: opt -S --passes=slp-vectorizer -mtriple=aarch64-unknown-linux-gnu < %s -mcpu=neoverse-512tvb | FileCheck %s
|
|
|
|
define i32 @test(ptr %0, i64 %1) vscale_range(2,2) {
|
|
; CHECK-LABEL: define i32 @test(
|
|
; CHECK-SAME: ptr [[TMP0:%.*]], i64 [[TMP1:%.*]]) #[[ATTR0:[0-9]+]] {
|
|
; CHECK-NEXT: [[ENTRY:.*:]]
|
|
; CHECK-NEXT: br label %[[FOR_BODY48:.*]]
|
|
; CHECK: [[FOR_BODY48]]:
|
|
; CHECK-NEXT: [[TMP2:%.*]] = getelementptr float, ptr [[TMP0]], i64 [[TMP1]]
|
|
; CHECK-NEXT: [[ARRAYIDX52:%.*]] = getelementptr i8, ptr [[TMP2]], i64 8
|
|
; CHECK-NEXT: [[TMP3:%.*]] = load float, ptr [[ARRAYIDX52]], align 4
|
|
; CHECK-NEXT: [[TMP4:%.*]] = load float, ptr [[TMP2]], align 4
|
|
; CHECK-NEXT: [[ADD56:%.*]] = fadd float [[TMP3]], [[TMP4]]
|
|
; CHECK-NEXT: store float [[ADD56]], ptr [[TMP0]], align 4
|
|
; CHECK-NEXT: br label %[[FOR_BODY48]]
|
|
;
|
|
entry:
|
|
br label %for.body48
|
|
|
|
for.body48:
|
|
%2 = getelementptr float, ptr %0, i64 %1
|
|
%arrayidx52 = getelementptr i8, ptr %2, i64 8
|
|
%3 = load float, ptr %arrayidx52, align 4
|
|
%4 = load float, ptr %2, align 4
|
|
%add56 = fadd float %3, %4
|
|
store float %add56, ptr %0, align 4
|
|
br label %for.body48
|
|
}
|