; 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
}
