blob: c74c599e01b5a74d197f04c3480924ecc0213702 [file] [edit]
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5
; RUN: opt -S -passes=slp-vectorizer -mtriple=riscv32-unknown-linux-gnu -mattr=+m,+v,+unaligned-vector-mem < %s | FileCheck %s
define void @load(ptr %pl, ptr %ps) {
; CHECK-LABEL: define void @load(
; CHECK-SAME: ptr [[PL:%.*]], ptr [[PS:%.*]]) #[[ATTR0:[0-9]+]] {
; CHECK-NEXT: [[TMP1:%.*]] = call <2 x i64> @llvm.experimental.vp.strided.load.v2i64.p0.i32(ptr align 4 [[PL]], i32 40, <2 x i1> splat (i1 true), i32 2)
; CHECK-NEXT: [[TMP2:%.*]] = bitcast <2 x i64> [[TMP1]] to <4 x i32>
; CHECK-NEXT: [[TMP3:%.*]] = inttoptr <4 x i32> [[TMP2]] to <4 x ptr>
; CHECK-NEXT: store <4 x ptr> [[TMP3]], ptr [[PS]], align 4
; CHECK-NEXT: ret void
;
%gl1 = getelementptr inbounds ptr, ptr %pl, i32 1
%gl2 = getelementptr inbounds ptr, ptr %pl, i32 10
%gl3 = getelementptr inbounds ptr, ptr %pl, i32 11
%l0 = load ptr, ptr %pl, align 4
%l1 = load ptr, ptr %gl1, align 4
%l2 = load ptr, ptr %gl2, align 4
%l3 = load ptr, ptr %gl3, align 4
%gs1 = getelementptr inbounds ptr, ptr %ps, i32 1
%gs2 = getelementptr inbounds ptr, ptr %ps, i32 2
%gs3 = getelementptr inbounds ptr, ptr %ps, i32 3
store ptr %l0, ptr %ps, align 4
store ptr %l1, ptr %gs1, align 4
store ptr %l2, ptr %gs2, align 4
store ptr %l3, ptr %gs3, align 4
ret void
}