64 lines
1.9 KiB
LLVM
64 lines
1.9 KiB
LLVM
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
|
|
; RUN: opt < %s -slp-vectorizer -mtriple=riscv64 -mattr=+v \
|
|
; RUN: -riscv-v-vector-bits-min=-1 -S | FileCheck %s --check-prefixes=CHECK
|
|
|
|
define void @simple_copy(ptr %dest, ptr %p) {
|
|
; CHECK-LABEL: @simple_copy(
|
|
; CHECK-NEXT: entry:
|
|
; CHECK-NEXT: [[TMP0:%.*]] = load <2 x i16>, ptr [[P:%.*]], align 4
|
|
; CHECK-NEXT: store <2 x i16> [[TMP0]], ptr [[DEST:%.*]], align 4
|
|
; CHECK-NEXT: ret void
|
|
;
|
|
entry:
|
|
%e0 = load i16, ptr %p, align 4
|
|
%inc = getelementptr inbounds i16, ptr %p, i64 1
|
|
%e1 = load i16, ptr %inc, align 2
|
|
|
|
store i16 %e0, ptr %dest, align 4
|
|
%inc2 = getelementptr inbounds i16, ptr %dest, i64 1
|
|
store i16 %e1, ptr %inc2, align 2
|
|
ret void
|
|
}
|
|
|
|
define void @vec_add(ptr %dest, ptr %p) {
|
|
; CHECK-LABEL: @vec_add(
|
|
; CHECK-NEXT: entry:
|
|
; CHECK-NEXT: [[TMP0:%.*]] = load <2 x i16>, ptr [[P:%.*]], align 4
|
|
; CHECK-NEXT: [[TMP1:%.*]] = add <2 x i16> [[TMP0]], <i16 1, i16 1>
|
|
; CHECK-NEXT: store <2 x i16> [[TMP1]], ptr [[DEST:%.*]], align 4
|
|
; CHECK-NEXT: ret void
|
|
;
|
|
entry:
|
|
%e0 = load i16, ptr %p, align 4
|
|
%inc = getelementptr inbounds i16, ptr %p, i64 1
|
|
%e1 = load i16, ptr %inc, align 2
|
|
|
|
%a0 = add i16 %e0, 1
|
|
%a1 = add i16 %e1, 1
|
|
|
|
store i16 %a0, ptr %dest, align 4
|
|
%inc2 = getelementptr inbounds i16, ptr %dest, i64 1
|
|
store i16 %a1, ptr %inc2, align 2
|
|
ret void
|
|
}
|
|
|
|
|
|
define void @splat_store(ptr %dest, ptr %p) {
|
|
; CHECK-LABEL: @splat_store(
|
|
; CHECK-NEXT: entry:
|
|
; CHECK-NEXT: [[E0:%.*]] = load i16, ptr [[P:%.*]], align 4
|
|
; CHECK-NEXT: store i16 [[E0]], ptr [[DEST:%.*]], align 4
|
|
; CHECK-NEXT: [[INC2:%.*]] = getelementptr inbounds i16, ptr [[DEST]], i64 1
|
|
; CHECK-NEXT: store i16 [[E0]], ptr [[INC2]], align 2
|
|
; CHECK-NEXT: ret void
|
|
;
|
|
entry:
|
|
%e0 = load i16, ptr %p, align 4
|
|
|
|
store i16 %e0, ptr %dest, align 4
|
|
%inc2 = getelementptr inbounds i16, ptr %dest, i64 1
|
|
store i16 %e0, ptr %inc2, align 2
|
|
ret void
|
|
}
|
|
|