blob: 07a54badc04e97b6e83eec3e4664745d95372a19 [file] [edit]
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 6
; RUN: llc -mtriple=riscv32 -mattr=+experimental-p,+m,+zbb -verify-machineinstrs < %s | FileCheck %s --check-prefixes=RV32
; RUN: llc -mtriple=riscv64 -mattr=+experimental-p,+m,+zbb -verify-machineinstrs < %s | FileCheck %s --check-prefixes=RV64
define <8 x i8> @insert_zero_v4i8(<4 x i8> %v) {
; RV32-LABEL: insert_zero_v4i8:
; RV32: # %bb.0:
; RV32-NEXT: li a1, 0
; RV32-NEXT: ret
;
; RV64-LABEL: insert_zero_v4i8:
; RV64: # %bb.0:
; RV64-NEXT: zext.w a0, a0
; RV64-NEXT: ret
%r = call <8 x i8> @llvm.vector.insert.v8i8.v4i8(<8 x i8> zeroinitializer, <4 x i8> %v, i64 0)
ret <8 x i8> %r
}
define <4 x i16> @insert_zero_v2i16(<2 x i16> %v) {
; RV32-LABEL: insert_zero_v2i16:
; RV32: # %bb.0:
; RV32-NEXT: li a1, 0
; RV32-NEXT: ret
;
; RV64-LABEL: insert_zero_v2i16:
; RV64: # %bb.0:
; RV64-NEXT: zext.w a0, a0
; RV64-NEXT: ret
%r = call <4 x i16> @llvm.vector.insert.v4i16.v2i16(<4 x i16> zeroinitializer, <2 x i16> %v, i64 0)
ret <4 x i16> %r
}
define <2 x i32> @insert_zero_v1i32(<1 x i32> %v) {
; RV32-LABEL: insert_zero_v1i32:
; RV32: # %bb.0:
; RV32-NEXT: li a1, 0
; RV32-NEXT: ret
;
; RV64-LABEL: insert_zero_v1i32:
; RV64: # %bb.0:
; RV64-NEXT: pack a0, a0, zero
; RV64-NEXT: ret
%r = call <2 x i32> @llvm.vector.insert.v2i32.v1i32(<2 x i32> zeroinitializer, <1 x i32> %v, i64 0)
ret <2 x i32> %r
}