blob: 0561466b564be118708f0436beaff14fb1ecd952 [file] [log] [blame]
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
; RUN: opt -passes=slp-vectorizer -S -slp-threshold=-9999 -mtriple=riscv64-unknown-linux-gnu -mattr=+v < %s | FileCheck %s
define i32 @main(ptr %q, ptr %a, i8 %.pre) {
; CHECK-LABEL: define i32 @main(
; CHECK-SAME: ptr [[Q:%.*]], ptr [[A:%.*]], i8 [[DOTPRE:%.*]]) #[[ATTR0:[0-9]+]] {
; CHECK-NEXT: [[ENTRY:.*:]]
; CHECK-NEXT: [[DOTPRE1:%.*]] = load i8, ptr [[Q]], align 1
; CHECK-NEXT: [[TMP0:%.*]] = insertelement <2 x i8> poison, i8 [[DOTPRE]], i32 0
; CHECK-NEXT: [[TMP1:%.*]] = insertelement <2 x i8> [[TMP0]], i8 [[DOTPRE1]], i32 1
; CHECK-NEXT: [[TMP2:%.*]] = sext <2 x i8> [[TMP1]] to <2 x i32>
; CHECK-NEXT: [[TMP3:%.*]] = add <2 x i32> [[TMP2]], <i32 0, i32 1>
; CHECK-NEXT: [[TMP4:%.*]] = shufflevector <2 x i32> [[TMP2]], <2 x i32> <i32 poison, i32 1>, <2 x i32> <i32 0, i32 3>
; CHECK-NEXT: [[TMP5:%.*]] = shl <2 x i32> [[TMP4]], [[TMP3]]
; CHECK-NEXT: [[TMP6:%.*]] = trunc <2 x i32> [[TMP5]] to <2 x i16>
; CHECK-NEXT: store <2 x i16> [[TMP6]], ptr [[A]], align 2
; CHECK-NEXT: ret i32 0
;
entry:
%.pre1 = load i8, ptr %q, align 1
%conv11.i = sext i8 %.pre to i32
%shl18.i = shl i32 %conv11.i, %conv11.i
%conv19.i = trunc i32 %shl18.i to i16
store i16 %conv19.i, ptr %a, align 2
%0 = sext i8 %.pre1 to i32
%1 = add i32 %0, 1
%shl18.i.1 = shl i32 1, %1
%conv19.i.1 = trunc i32 %shl18.i.1 to i16
%arrayidx21.i.1 = getelementptr i8, ptr %a, i64 2
store i16 %conv19.i.1, ptr %arrayidx21.i.1, align 2
ret i32 0
}