brintos

brintos / llvm-project-archived public Read only

0
0
Text · 45.5 KiB · 7c6e0ce Raw
1328 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=riscv32 -mattr=+d,+zfh,+zfbfmin,+zvfh,+zvfbfmin,+v -target-abi=ilp32d \3; RUN:     -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,ZVFH4; RUN: llc -mtriple=riscv64 -mattr=+d,+zfh,+zfbfmin,+zvfh,+zvfbfmin,+v -target-abi=lp64d \5; RUN:     -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,ZVFH6; RUN: llc -mtriple=riscv32 -mattr=+d,+zfh,+zfbfmin,+zvfhmin,+zvfbfmin,+v -target-abi=ilp32d \7; RUN:     -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,ZVFHMIN8; RUN: llc -mtriple=riscv64 -mattr=+d,+zfh,+zfbfmin,+zvfhmin,+zvfbfmin,+v -target-abi=lp64d \9; RUN:     -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,ZVFHMIN10; RUN: llc -mtriple=riscv32 -mattr=+d,+zfh,+zvfhmin,+experimental-zvfbfa,+v -target-abi=ilp32d \11; RUN:     -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,ZVFBFA12; RUN: llc -mtriple=riscv64 -mattr=+d,+zfh,+zvfhmin,+experimental-zvfbfa,+v -target-abi=lp64d \13; RUN:     -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,ZVFBFA14 15define <vscale x 1 x bfloat> @insertelt_nxv1bf16_0(<vscale x 1 x bfloat> %v, bfloat %elt) {16; ZVFH-LABEL: insertelt_nxv1bf16_0:17; ZVFH:       # %bb.0:18; ZVFH-NEXT:    fmv.x.h a0, fa019; ZVFH-NEXT:    vsetvli a1, zero, e16, m1, tu, ma20; ZVFH-NEXT:    vmv.s.x v8, a021; ZVFH-NEXT:    ret22;23; ZVFHMIN-LABEL: insertelt_nxv1bf16_0:24; ZVFHMIN:       # %bb.0:25; ZVFHMIN-NEXT:    fmv.x.h a0, fa026; ZVFHMIN-NEXT:    vsetvli a1, zero, e16, m1, tu, ma27; ZVFHMIN-NEXT:    vmv.s.x v8, a028; ZVFHMIN-NEXT:    ret29;30; ZVFBFA-LABEL: insertelt_nxv1bf16_0:31; ZVFBFA:       # %bb.0:32; ZVFBFA-NEXT:    vsetvli a0, zero, e16alt, m1, tu, ma33; ZVFBFA-NEXT:    vfmv.s.f v8, fa034; ZVFBFA-NEXT:    ret35  %r = insertelement <vscale x 1 x bfloat> %v, bfloat %elt, i32 036  ret <vscale x 1 x bfloat> %r37}38 39define <vscale x 1 x bfloat> @insertelt_nxv1bf16_imm(<vscale x 1 x bfloat> %v, bfloat %elt) {40; ZVFH-LABEL: insertelt_nxv1bf16_imm:41; ZVFH:       # %bb.0:42; ZVFH-NEXT:    fmv.x.h a0, fa043; ZVFH-NEXT:    vsetivli zero, 4, e16, mf4, tu, ma44; ZVFH-NEXT:    vmv.s.x v9, a045; ZVFH-NEXT:    vslideup.vi v8, v9, 346; ZVFH-NEXT:    ret47;48; ZVFHMIN-LABEL: insertelt_nxv1bf16_imm:49; ZVFHMIN:       # %bb.0:50; ZVFHMIN-NEXT:    fmv.x.h a0, fa051; ZVFHMIN-NEXT:    vsetivli zero, 4, e16, mf4, tu, ma52; ZVFHMIN-NEXT:    vmv.s.x v9, a053; ZVFHMIN-NEXT:    vslideup.vi v8, v9, 354; ZVFHMIN-NEXT:    ret55;56; ZVFBFA-LABEL: insertelt_nxv1bf16_imm:57; ZVFBFA:       # %bb.0:58; ZVFBFA-NEXT:    vsetivli zero, 4, e16alt, mf4, tu, ma59; ZVFBFA-NEXT:    vfmv.s.f v9, fa060; ZVFBFA-NEXT:    vslideup.vi v8, v9, 361; ZVFBFA-NEXT:    ret62  %r = insertelement <vscale x 1 x bfloat> %v, bfloat %elt, i32 363  ret <vscale x 1 x bfloat> %r64}65 66define <vscale x 1 x bfloat> @insertelt_nxv1bf16_idx(<vscale x 1 x bfloat> %v, bfloat %elt, i32 zeroext %idx) {67; ZVFH-LABEL: insertelt_nxv1bf16_idx:68; ZVFH:       # %bb.0:69; ZVFH-NEXT:    addi a1, a0, 170; ZVFH-NEXT:    fmv.x.h a2, fa071; ZVFH-NEXT:    vsetvli a3, zero, e16, m1, ta, ma72; ZVFH-NEXT:    vmv.s.x v9, a273; ZVFH-NEXT:    vsetvli zero, a1, e16, mf4, tu, ma74; ZVFH-NEXT:    vslideup.vx v8, v9, a075; ZVFH-NEXT:    ret76;77; ZVFHMIN-LABEL: insertelt_nxv1bf16_idx:78; ZVFHMIN:       # %bb.0:79; ZVFHMIN-NEXT:    addi a1, a0, 180; ZVFHMIN-NEXT:    fmv.x.h a2, fa081; ZVFHMIN-NEXT:    vsetvli a3, zero, e16, m1, ta, ma82; ZVFHMIN-NEXT:    vmv.s.x v9, a283; ZVFHMIN-NEXT:    vsetvli zero, a1, e16, mf4, tu, ma84; ZVFHMIN-NEXT:    vslideup.vx v8, v9, a085; ZVFHMIN-NEXT:    ret86;87; ZVFBFA-LABEL: insertelt_nxv1bf16_idx:88; ZVFBFA:       # %bb.0:89; ZVFBFA-NEXT:    addi a1, a0, 190; ZVFBFA-NEXT:    vsetvli a2, zero, e16alt, m1, ta, ma91; ZVFBFA-NEXT:    vfmv.s.f v9, fa092; ZVFBFA-NEXT:    vsetvli zero, a1, e16alt, mf4, tu, ma93; ZVFBFA-NEXT:    vslideup.vx v8, v9, a094; ZVFBFA-NEXT:    ret95  %r = insertelement <vscale x 1 x bfloat> %v, bfloat %elt, i32 %idx96  ret <vscale x 1 x bfloat> %r97}98 99define <vscale x 2 x bfloat> @insertelt_nxv2bf16_0(<vscale x 2 x bfloat> %v, bfloat %elt) {100; ZVFH-LABEL: insertelt_nxv2bf16_0:101; ZVFH:       # %bb.0:102; ZVFH-NEXT:    fmv.x.h a0, fa0103; ZVFH-NEXT:    vsetvli a1, zero, e16, m1, tu, ma104; ZVFH-NEXT:    vmv.s.x v8, a0105; ZVFH-NEXT:    ret106;107; ZVFHMIN-LABEL: insertelt_nxv2bf16_0:108; ZVFHMIN:       # %bb.0:109; ZVFHMIN-NEXT:    fmv.x.h a0, fa0110; ZVFHMIN-NEXT:    vsetvli a1, zero, e16, m1, tu, ma111; ZVFHMIN-NEXT:    vmv.s.x v8, a0112; ZVFHMIN-NEXT:    ret113;114; ZVFBFA-LABEL: insertelt_nxv2bf16_0:115; ZVFBFA:       # %bb.0:116; ZVFBFA-NEXT:    vsetvli a0, zero, e16alt, m1, tu, ma117; ZVFBFA-NEXT:    vfmv.s.f v8, fa0118; ZVFBFA-NEXT:    ret119  %r = insertelement <vscale x 2 x bfloat> %v, bfloat %elt, i32 0120  ret <vscale x 2 x bfloat> %r121}122 123define <vscale x 2 x bfloat> @insertelt_nxv2bf16_imm(<vscale x 2 x bfloat> %v, bfloat %elt) {124; ZVFH-LABEL: insertelt_nxv2bf16_imm:125; ZVFH:       # %bb.0:126; ZVFH-NEXT:    fmv.x.h a0, fa0127; ZVFH-NEXT:    vsetivli zero, 4, e16, mf2, tu, ma128; ZVFH-NEXT:    vmv.s.x v9, a0129; ZVFH-NEXT:    vslideup.vi v8, v9, 3130; ZVFH-NEXT:    ret131;132; ZVFHMIN-LABEL: insertelt_nxv2bf16_imm:133; ZVFHMIN:       # %bb.0:134; ZVFHMIN-NEXT:    fmv.x.h a0, fa0135; ZVFHMIN-NEXT:    vsetivli zero, 4, e16, mf2, tu, ma136; ZVFHMIN-NEXT:    vmv.s.x v9, a0137; ZVFHMIN-NEXT:    vslideup.vi v8, v9, 3138; ZVFHMIN-NEXT:    ret139;140; ZVFBFA-LABEL: insertelt_nxv2bf16_imm:141; ZVFBFA:       # %bb.0:142; ZVFBFA-NEXT:    vsetivli zero, 4, e16alt, mf2, tu, ma143; ZVFBFA-NEXT:    vfmv.s.f v9, fa0144; ZVFBFA-NEXT:    vslideup.vi v8, v9, 3145; ZVFBFA-NEXT:    ret146  %r = insertelement <vscale x 2 x bfloat> %v, bfloat %elt, i32 3147  ret <vscale x 2 x bfloat> %r148}149 150define <vscale x 2 x bfloat> @insertelt_nxv2bf16_idx(<vscale x 2 x bfloat> %v, bfloat %elt, i32 zeroext %idx) {151; ZVFH-LABEL: insertelt_nxv2bf16_idx:152; ZVFH:       # %bb.0:153; ZVFH-NEXT:    addi a1, a0, 1154; ZVFH-NEXT:    fmv.x.h a2, fa0155; ZVFH-NEXT:    vsetvli a3, zero, e16, m1, ta, ma156; ZVFH-NEXT:    vmv.s.x v9, a2157; ZVFH-NEXT:    vsetvli zero, a1, e16, mf2, tu, ma158; ZVFH-NEXT:    vslideup.vx v8, v9, a0159; ZVFH-NEXT:    ret160;161; ZVFHMIN-LABEL: insertelt_nxv2bf16_idx:162; ZVFHMIN:       # %bb.0:163; ZVFHMIN-NEXT:    addi a1, a0, 1164; ZVFHMIN-NEXT:    fmv.x.h a2, fa0165; ZVFHMIN-NEXT:    vsetvli a3, zero, e16, m1, ta, ma166; ZVFHMIN-NEXT:    vmv.s.x v9, a2167; ZVFHMIN-NEXT:    vsetvli zero, a1, e16, mf2, tu, ma168; ZVFHMIN-NEXT:    vslideup.vx v8, v9, a0169; ZVFHMIN-NEXT:    ret170;171; ZVFBFA-LABEL: insertelt_nxv2bf16_idx:172; ZVFBFA:       # %bb.0:173; ZVFBFA-NEXT:    addi a1, a0, 1174; ZVFBFA-NEXT:    vsetvli a2, zero, e16alt, m1, ta, ma175; ZVFBFA-NEXT:    vfmv.s.f v9, fa0176; ZVFBFA-NEXT:    vsetvli zero, a1, e16alt, mf2, tu, ma177; ZVFBFA-NEXT:    vslideup.vx v8, v9, a0178; ZVFBFA-NEXT:    ret179  %r = insertelement <vscale x 2 x bfloat> %v, bfloat %elt, i32 %idx180  ret <vscale x 2 x bfloat> %r181}182 183define <vscale x 4 x bfloat> @insertelt_nxv4bf16_0(<vscale x 4 x bfloat> %v, bfloat %elt) {184; ZVFH-LABEL: insertelt_nxv4bf16_0:185; ZVFH:       # %bb.0:186; ZVFH-NEXT:    fmv.x.h a0, fa0187; ZVFH-NEXT:    vsetvli a1, zero, e16, m1, tu, ma188; ZVFH-NEXT:    vmv.s.x v8, a0189; ZVFH-NEXT:    ret190;191; ZVFHMIN-LABEL: insertelt_nxv4bf16_0:192; ZVFHMIN:       # %bb.0:193; ZVFHMIN-NEXT:    fmv.x.h a0, fa0194; ZVFHMIN-NEXT:    vsetvli a1, zero, e16, m1, tu, ma195; ZVFHMIN-NEXT:    vmv.s.x v8, a0196; ZVFHMIN-NEXT:    ret197;198; ZVFBFA-LABEL: insertelt_nxv4bf16_0:199; ZVFBFA:       # %bb.0:200; ZVFBFA-NEXT:    vsetvli a0, zero, e16alt, m1, tu, ma201; ZVFBFA-NEXT:    vfmv.s.f v8, fa0202; ZVFBFA-NEXT:    ret203  %r = insertelement <vscale x 4 x bfloat> %v, bfloat %elt, i32 0204  ret <vscale x 4 x bfloat> %r205}206 207define <vscale x 4 x bfloat> @insertelt_nxv4bf16_imm(<vscale x 4 x bfloat> %v, bfloat %elt) {208; ZVFH-LABEL: insertelt_nxv4bf16_imm:209; ZVFH:       # %bb.0:210; ZVFH-NEXT:    fmv.x.h a0, fa0211; ZVFH-NEXT:    vsetivli zero, 4, e16, m1, tu, ma212; ZVFH-NEXT:    vmv.s.x v9, a0213; ZVFH-NEXT:    vslideup.vi v8, v9, 3214; ZVFH-NEXT:    ret215;216; ZVFHMIN-LABEL: insertelt_nxv4bf16_imm:217; ZVFHMIN:       # %bb.0:218; ZVFHMIN-NEXT:    fmv.x.h a0, fa0219; ZVFHMIN-NEXT:    vsetivli zero, 4, e16, m1, tu, ma220; ZVFHMIN-NEXT:    vmv.s.x v9, a0221; ZVFHMIN-NEXT:    vslideup.vi v8, v9, 3222; ZVFHMIN-NEXT:    ret223;224; ZVFBFA-LABEL: insertelt_nxv4bf16_imm:225; ZVFBFA:       # %bb.0:226; ZVFBFA-NEXT:    vsetivli zero, 4, e16alt, m1, tu, ma227; ZVFBFA-NEXT:    vfmv.s.f v9, fa0228; ZVFBFA-NEXT:    vslideup.vi v8, v9, 3229; ZVFBFA-NEXT:    ret230  %r = insertelement <vscale x 4 x bfloat> %v, bfloat %elt, i32 3231  ret <vscale x 4 x bfloat> %r232}233 234define <vscale x 4 x bfloat> @insertelt_nxv4bf16_idx(<vscale x 4 x bfloat> %v, bfloat %elt, i32 zeroext %idx) {235; ZVFH-LABEL: insertelt_nxv4bf16_idx:236; ZVFH:       # %bb.0:237; ZVFH-NEXT:    addi a1, a0, 1238; ZVFH-NEXT:    fmv.x.h a2, fa0239; ZVFH-NEXT:    vsetvli a3, zero, e16, m1, ta, ma240; ZVFH-NEXT:    vmv.s.x v9, a2241; ZVFH-NEXT:    vsetvli zero, a1, e16, m1, tu, ma242; ZVFH-NEXT:    vslideup.vx v8, v9, a0243; ZVFH-NEXT:    ret244;245; ZVFHMIN-LABEL: insertelt_nxv4bf16_idx:246; ZVFHMIN:       # %bb.0:247; ZVFHMIN-NEXT:    addi a1, a0, 1248; ZVFHMIN-NEXT:    fmv.x.h a2, fa0249; ZVFHMIN-NEXT:    vsetvli a3, zero, e16, m1, ta, ma250; ZVFHMIN-NEXT:    vmv.s.x v9, a2251; ZVFHMIN-NEXT:    vsetvli zero, a1, e16, m1, tu, ma252; ZVFHMIN-NEXT:    vslideup.vx v8, v9, a0253; ZVFHMIN-NEXT:    ret254;255; ZVFBFA-LABEL: insertelt_nxv4bf16_idx:256; ZVFBFA:       # %bb.0:257; ZVFBFA-NEXT:    addi a1, a0, 1258; ZVFBFA-NEXT:    vsetvli a2, zero, e16alt, m1, ta, ma259; ZVFBFA-NEXT:    vfmv.s.f v9, fa0260; ZVFBFA-NEXT:    vsetvli zero, a1, e16alt, m1, tu, ma261; ZVFBFA-NEXT:    vslideup.vx v8, v9, a0262; ZVFBFA-NEXT:    ret263  %r = insertelement <vscale x 4 x bfloat> %v, bfloat %elt, i32 %idx264  ret <vscale x 4 x bfloat> %r265}266 267define <vscale x 8 x bfloat> @insertelt_nxv8bf16_0(<vscale x 8 x bfloat> %v, bfloat %elt) {268; ZVFH-LABEL: insertelt_nxv8bf16_0:269; ZVFH:       # %bb.0:270; ZVFH-NEXT:    fmv.x.h a0, fa0271; ZVFH-NEXT:    vsetvli a1, zero, e16, m1, tu, ma272; ZVFH-NEXT:    vmv.s.x v8, a0273; ZVFH-NEXT:    ret274;275; ZVFHMIN-LABEL: insertelt_nxv8bf16_0:276; ZVFHMIN:       # %bb.0:277; ZVFHMIN-NEXT:    fmv.x.h a0, fa0278; ZVFHMIN-NEXT:    vsetvli a1, zero, e16, m1, tu, ma279; ZVFHMIN-NEXT:    vmv.s.x v8, a0280; ZVFHMIN-NEXT:    ret281;282; ZVFBFA-LABEL: insertelt_nxv8bf16_0:283; ZVFBFA:       # %bb.0:284; ZVFBFA-NEXT:    vsetvli a0, zero, e16alt, m1, tu, ma285; ZVFBFA-NEXT:    vfmv.s.f v8, fa0286; ZVFBFA-NEXT:    ret287  %r = insertelement <vscale x 8 x bfloat> %v, bfloat %elt, i32 0288  ret <vscale x 8 x bfloat> %r289}290 291define <vscale x 8 x bfloat> @insertelt_nxv8bf16_imm(<vscale x 8 x bfloat> %v, bfloat %elt) {292; ZVFH-LABEL: insertelt_nxv8bf16_imm:293; ZVFH:       # %bb.0:294; ZVFH-NEXT:    fmv.x.h a0, fa0295; ZVFH-NEXT:    vsetivli zero, 4, e16, m1, tu, ma296; ZVFH-NEXT:    vmv.s.x v10, a0297; ZVFH-NEXT:    vslideup.vi v8, v10, 3298; ZVFH-NEXT:    ret299;300; ZVFHMIN-LABEL: insertelt_nxv8bf16_imm:301; ZVFHMIN:       # %bb.0:302; ZVFHMIN-NEXT:    fmv.x.h a0, fa0303; ZVFHMIN-NEXT:    vsetivli zero, 4, e16, m1, tu, ma304; ZVFHMIN-NEXT:    vmv.s.x v10, a0305; ZVFHMIN-NEXT:    vslideup.vi v8, v10, 3306; ZVFHMIN-NEXT:    ret307;308; ZVFBFA-LABEL: insertelt_nxv8bf16_imm:309; ZVFBFA:       # %bb.0:310; ZVFBFA-NEXT:    vsetivli zero, 4, e16alt, m1, tu, ma311; ZVFBFA-NEXT:    vfmv.s.f v10, fa0312; ZVFBFA-NEXT:    vslideup.vi v8, v10, 3313; ZVFBFA-NEXT:    ret314  %r = insertelement <vscale x 8 x bfloat> %v, bfloat %elt, i32 3315  ret <vscale x 8 x bfloat> %r316}317 318define <vscale x 8 x bfloat> @insertelt_nxv8bf16_idx(<vscale x 8 x bfloat> %v, bfloat %elt, i32 zeroext %idx) {319; ZVFH-LABEL: insertelt_nxv8bf16_idx:320; ZVFH:       # %bb.0:321; ZVFH-NEXT:    fmv.x.h a1, fa0322; ZVFH-NEXT:    vsetvli a2, zero, e16, m1, ta, ma323; ZVFH-NEXT:    vmv.s.x v10, a1324; ZVFH-NEXT:    addi a1, a0, 1325; ZVFH-NEXT:    vsetvli zero, a1, e16, m2, tu, ma326; ZVFH-NEXT:    vslideup.vx v8, v10, a0327; ZVFH-NEXT:    ret328;329; ZVFHMIN-LABEL: insertelt_nxv8bf16_idx:330; ZVFHMIN:       # %bb.0:331; ZVFHMIN-NEXT:    fmv.x.h a1, fa0332; ZVFHMIN-NEXT:    vsetvli a2, zero, e16, m1, ta, ma333; ZVFHMIN-NEXT:    vmv.s.x v10, a1334; ZVFHMIN-NEXT:    addi a1, a0, 1335; ZVFHMIN-NEXT:    vsetvli zero, a1, e16, m2, tu, ma336; ZVFHMIN-NEXT:    vslideup.vx v8, v10, a0337; ZVFHMIN-NEXT:    ret338;339; ZVFBFA-LABEL: insertelt_nxv8bf16_idx:340; ZVFBFA:       # %bb.0:341; ZVFBFA-NEXT:    vsetvli a1, zero, e16alt, m1, ta, ma342; ZVFBFA-NEXT:    vfmv.s.f v10, fa0343; ZVFBFA-NEXT:    addi a1, a0, 1344; ZVFBFA-NEXT:    vsetvli zero, a1, e16alt, m2, tu, ma345; ZVFBFA-NEXT:    vslideup.vx v8, v10, a0346; ZVFBFA-NEXT:    ret347  %r = insertelement <vscale x 8 x bfloat> %v, bfloat %elt, i32 %idx348  ret <vscale x 8 x bfloat> %r349}350 351define <vscale x 16 x bfloat> @insertelt_nxv16bf16_0(<vscale x 16 x bfloat> %v, bfloat %elt) {352; ZVFH-LABEL: insertelt_nxv16bf16_0:353; ZVFH:       # %bb.0:354; ZVFH-NEXT:    fmv.x.h a0, fa0355; ZVFH-NEXT:    vsetvli a1, zero, e16, m1, tu, ma356; ZVFH-NEXT:    vmv.s.x v8, a0357; ZVFH-NEXT:    ret358;359; ZVFHMIN-LABEL: insertelt_nxv16bf16_0:360; ZVFHMIN:       # %bb.0:361; ZVFHMIN-NEXT:    fmv.x.h a0, fa0362; ZVFHMIN-NEXT:    vsetvli a1, zero, e16, m1, tu, ma363; ZVFHMIN-NEXT:    vmv.s.x v8, a0364; ZVFHMIN-NEXT:    ret365;366; ZVFBFA-LABEL: insertelt_nxv16bf16_0:367; ZVFBFA:       # %bb.0:368; ZVFBFA-NEXT:    vsetvli a0, zero, e16alt, m1, tu, ma369; ZVFBFA-NEXT:    vfmv.s.f v8, fa0370; ZVFBFA-NEXT:    ret371  %r = insertelement <vscale x 16 x bfloat> %v, bfloat %elt, i32 0372  ret <vscale x 16 x bfloat> %r373}374 375define <vscale x 16 x bfloat> @insertelt_nxv16bf16_imm(<vscale x 16 x bfloat> %v, bfloat %elt) {376; ZVFH-LABEL: insertelt_nxv16bf16_imm:377; ZVFH:       # %bb.0:378; ZVFH-NEXT:    fmv.x.h a0, fa0379; ZVFH-NEXT:    vsetivli zero, 4, e16, m1, tu, ma380; ZVFH-NEXT:    vmv.s.x v12, a0381; ZVFH-NEXT:    vslideup.vi v8, v12, 3382; ZVFH-NEXT:    ret383;384; ZVFHMIN-LABEL: insertelt_nxv16bf16_imm:385; ZVFHMIN:       # %bb.0:386; ZVFHMIN-NEXT:    fmv.x.h a0, fa0387; ZVFHMIN-NEXT:    vsetivli zero, 4, e16, m1, tu, ma388; ZVFHMIN-NEXT:    vmv.s.x v12, a0389; ZVFHMIN-NEXT:    vslideup.vi v8, v12, 3390; ZVFHMIN-NEXT:    ret391;392; ZVFBFA-LABEL: insertelt_nxv16bf16_imm:393; ZVFBFA:       # %bb.0:394; ZVFBFA-NEXT:    vsetivli zero, 4, e16alt, m1, tu, ma395; ZVFBFA-NEXT:    vfmv.s.f v12, fa0396; ZVFBFA-NEXT:    vslideup.vi v8, v12, 3397; ZVFBFA-NEXT:    ret398  %r = insertelement <vscale x 16 x bfloat> %v, bfloat %elt, i32 3399  ret <vscale x 16 x bfloat> %r400}401 402define <vscale x 16 x bfloat> @insertelt_nxv16bf16_idx(<vscale x 16 x bfloat> %v, bfloat %elt, i32 zeroext %idx) {403; ZVFH-LABEL: insertelt_nxv16bf16_idx:404; ZVFH:       # %bb.0:405; ZVFH-NEXT:    fmv.x.h a1, fa0406; ZVFH-NEXT:    vsetvli a2, zero, e16, m1, ta, ma407; ZVFH-NEXT:    vmv.s.x v12, a1408; ZVFH-NEXT:    addi a1, a0, 1409; ZVFH-NEXT:    vsetvli zero, a1, e16, m4, tu, ma410; ZVFH-NEXT:    vslideup.vx v8, v12, a0411; ZVFH-NEXT:    ret412;413; ZVFHMIN-LABEL: insertelt_nxv16bf16_idx:414; ZVFHMIN:       # %bb.0:415; ZVFHMIN-NEXT:    fmv.x.h a1, fa0416; ZVFHMIN-NEXT:    vsetvli a2, zero, e16, m1, ta, ma417; ZVFHMIN-NEXT:    vmv.s.x v12, a1418; ZVFHMIN-NEXT:    addi a1, a0, 1419; ZVFHMIN-NEXT:    vsetvli zero, a1, e16, m4, tu, ma420; ZVFHMIN-NEXT:    vslideup.vx v8, v12, a0421; ZVFHMIN-NEXT:    ret422;423; ZVFBFA-LABEL: insertelt_nxv16bf16_idx:424; ZVFBFA:       # %bb.0:425; ZVFBFA-NEXT:    vsetvli a1, zero, e16alt, m1, ta, ma426; ZVFBFA-NEXT:    vfmv.s.f v12, fa0427; ZVFBFA-NEXT:    addi a1, a0, 1428; ZVFBFA-NEXT:    vsetvli zero, a1, e16alt, m4, tu, ma429; ZVFBFA-NEXT:    vslideup.vx v8, v12, a0430; ZVFBFA-NEXT:    ret431  %r = insertelement <vscale x 16 x bfloat> %v, bfloat %elt, i32 %idx432  ret <vscale x 16 x bfloat> %r433}434 435define <vscale x 32 x bfloat> @insertelt_nxv32bf16_0(<vscale x 32 x bfloat> %v, bfloat %elt) {436; ZVFH-LABEL: insertelt_nxv32bf16_0:437; ZVFH:       # %bb.0:438; ZVFH-NEXT:    fmv.x.h a0, fa0439; ZVFH-NEXT:    vsetvli a1, zero, e16, m1, tu, ma440; ZVFH-NEXT:    vmv.s.x v8, a0441; ZVFH-NEXT:    ret442;443; ZVFHMIN-LABEL: insertelt_nxv32bf16_0:444; ZVFHMIN:       # %bb.0:445; ZVFHMIN-NEXT:    fmv.x.h a0, fa0446; ZVFHMIN-NEXT:    vsetvli a1, zero, e16, m1, tu, ma447; ZVFHMIN-NEXT:    vmv.s.x v8, a0448; ZVFHMIN-NEXT:    ret449;450; ZVFBFA-LABEL: insertelt_nxv32bf16_0:451; ZVFBFA:       # %bb.0:452; ZVFBFA-NEXT:    vsetvli a0, zero, e16alt, m1, tu, ma453; ZVFBFA-NEXT:    vfmv.s.f v8, fa0454; ZVFBFA-NEXT:    ret455  %r = insertelement <vscale x 32 x bfloat> %v, bfloat %elt, i32 0456  ret <vscale x 32 x bfloat> %r457}458 459define <vscale x 32 x bfloat> @insertelt_nxv32bf16_imm(<vscale x 32 x bfloat> %v, bfloat %elt) {460; ZVFH-LABEL: insertelt_nxv32bf16_imm:461; ZVFH:       # %bb.0:462; ZVFH-NEXT:    fmv.x.h a0, fa0463; ZVFH-NEXT:    vsetivli zero, 4, e16, m1, tu, ma464; ZVFH-NEXT:    vmv.s.x v16, a0465; ZVFH-NEXT:    vslideup.vi v8, v16, 3466; ZVFH-NEXT:    ret467;468; ZVFHMIN-LABEL: insertelt_nxv32bf16_imm:469; ZVFHMIN:       # %bb.0:470; ZVFHMIN-NEXT:    fmv.x.h a0, fa0471; ZVFHMIN-NEXT:    vsetivli zero, 4, e16, m1, tu, ma472; ZVFHMIN-NEXT:    vmv.s.x v16, a0473; ZVFHMIN-NEXT:    vslideup.vi v8, v16, 3474; ZVFHMIN-NEXT:    ret475;476; ZVFBFA-LABEL: insertelt_nxv32bf16_imm:477; ZVFBFA:       # %bb.0:478; ZVFBFA-NEXT:    vsetivli zero, 4, e16alt, m1, tu, ma479; ZVFBFA-NEXT:    vfmv.s.f v16, fa0480; ZVFBFA-NEXT:    vslideup.vi v8, v16, 3481; ZVFBFA-NEXT:    ret482  %r = insertelement <vscale x 32 x bfloat> %v, bfloat %elt, i32 3483  ret <vscale x 32 x bfloat> %r484}485 486define <vscale x 32 x bfloat> @insertelt_nxv32bf16_idx(<vscale x 32 x bfloat> %v, bfloat %elt, i32 zeroext %idx) {487; ZVFH-LABEL: insertelt_nxv32bf16_idx:488; ZVFH:       # %bb.0:489; ZVFH-NEXT:    fmv.x.h a1, fa0490; ZVFH-NEXT:    vsetvli a2, zero, e16, m1, ta, ma491; ZVFH-NEXT:    vmv.s.x v16, a1492; ZVFH-NEXT:    addi a1, a0, 1493; ZVFH-NEXT:    vsetvli zero, a1, e16, m8, tu, ma494; ZVFH-NEXT:    vslideup.vx v8, v16, a0495; ZVFH-NEXT:    ret496;497; ZVFHMIN-LABEL: insertelt_nxv32bf16_idx:498; ZVFHMIN:       # %bb.0:499; ZVFHMIN-NEXT:    fmv.x.h a1, fa0500; ZVFHMIN-NEXT:    vsetvli a2, zero, e16, m1, ta, ma501; ZVFHMIN-NEXT:    vmv.s.x v16, a1502; ZVFHMIN-NEXT:    addi a1, a0, 1503; ZVFHMIN-NEXT:    vsetvli zero, a1, e16, m8, tu, ma504; ZVFHMIN-NEXT:    vslideup.vx v8, v16, a0505; ZVFHMIN-NEXT:    ret506;507; ZVFBFA-LABEL: insertelt_nxv32bf16_idx:508; ZVFBFA:       # %bb.0:509; ZVFBFA-NEXT:    vsetvli a1, zero, e16alt, m1, ta, ma510; ZVFBFA-NEXT:    vfmv.s.f v16, fa0511; ZVFBFA-NEXT:    addi a1, a0, 1512; ZVFBFA-NEXT:    vsetvli zero, a1, e16alt, m8, tu, ma513; ZVFBFA-NEXT:    vslideup.vx v8, v16, a0514; ZVFBFA-NEXT:    ret515  %r = insertelement <vscale x 32 x bfloat> %v, bfloat %elt, i32 %idx516  ret <vscale x 32 x bfloat> %r517}518 519define <vscale x 1 x half> @insertelt_nxv1f16_0(<vscale x 1 x half> %v, half %elt) {520; ZVFH-LABEL: insertelt_nxv1f16_0:521; ZVFH:       # %bb.0:522; ZVFH-NEXT:    vsetvli a0, zero, e16, m1, tu, ma523; ZVFH-NEXT:    vfmv.s.f v8, fa0524; ZVFH-NEXT:    ret525;526; ZVFHMIN-LABEL: insertelt_nxv1f16_0:527; ZVFHMIN:       # %bb.0:528; ZVFHMIN-NEXT:    fmv.x.h a0, fa0529; ZVFHMIN-NEXT:    vsetvli a1, zero, e16, m1, tu, ma530; ZVFHMIN-NEXT:    vmv.s.x v8, a0531; ZVFHMIN-NEXT:    ret532;533; ZVFBFA-LABEL: insertelt_nxv1f16_0:534; ZVFBFA:       # %bb.0:535; ZVFBFA-NEXT:    fmv.x.h a0, fa0536; ZVFBFA-NEXT:    vsetvli a1, zero, e16, m1, tu, ma537; ZVFBFA-NEXT:    vmv.s.x v8, a0538; ZVFBFA-NEXT:    ret539  %r = insertelement <vscale x 1 x half> %v, half %elt, i32 0540  ret <vscale x 1 x half> %r541}542 543define <vscale x 1 x half> @insertelt_nxv1f16_imm(<vscale x 1 x half> %v, half %elt) {544; ZVFH-LABEL: insertelt_nxv1f16_imm:545; ZVFH:       # %bb.0:546; ZVFH-NEXT:    vsetivli zero, 4, e16, mf4, tu, ma547; ZVFH-NEXT:    vfmv.s.f v9, fa0548; ZVFH-NEXT:    vslideup.vi v8, v9, 3549; ZVFH-NEXT:    ret550;551; ZVFHMIN-LABEL: insertelt_nxv1f16_imm:552; ZVFHMIN:       # %bb.0:553; ZVFHMIN-NEXT:    fmv.x.h a0, fa0554; ZVFHMIN-NEXT:    vsetivli zero, 4, e16, mf4, tu, ma555; ZVFHMIN-NEXT:    vmv.s.x v9, a0556; ZVFHMIN-NEXT:    vslideup.vi v8, v9, 3557; ZVFHMIN-NEXT:    ret558;559; ZVFBFA-LABEL: insertelt_nxv1f16_imm:560; ZVFBFA:       # %bb.0:561; ZVFBFA-NEXT:    fmv.x.h a0, fa0562; ZVFBFA-NEXT:    vsetivli zero, 4, e16, mf4, tu, ma563; ZVFBFA-NEXT:    vmv.s.x v9, a0564; ZVFBFA-NEXT:    vslideup.vi v8, v9, 3565; ZVFBFA-NEXT:    ret566  %r = insertelement <vscale x 1 x half> %v, half %elt, i32 3567  ret <vscale x 1 x half> %r568}569 570define <vscale x 1 x half> @insertelt_nxv1f16_idx(<vscale x 1 x half> %v, half %elt, i32 zeroext %idx) {571; ZVFH-LABEL: insertelt_nxv1f16_idx:572; ZVFH:       # %bb.0:573; ZVFH-NEXT:    addi a1, a0, 1574; ZVFH-NEXT:    vsetvli a2, zero, e16, m1, ta, ma575; ZVFH-NEXT:    vfmv.s.f v9, fa0576; ZVFH-NEXT:    vsetvli zero, a1, e16, mf4, tu, ma577; ZVFH-NEXT:    vslideup.vx v8, v9, a0578; ZVFH-NEXT:    ret579;580; ZVFHMIN-LABEL: insertelt_nxv1f16_idx:581; ZVFHMIN:       # %bb.0:582; ZVFHMIN-NEXT:    addi a1, a0, 1583; ZVFHMIN-NEXT:    fmv.x.h a2, fa0584; ZVFHMIN-NEXT:    vsetvli a3, zero, e16, m1, ta, ma585; ZVFHMIN-NEXT:    vmv.s.x v9, a2586; ZVFHMIN-NEXT:    vsetvli zero, a1, e16, mf4, tu, ma587; ZVFHMIN-NEXT:    vslideup.vx v8, v9, a0588; ZVFHMIN-NEXT:    ret589;590; ZVFBFA-LABEL: insertelt_nxv1f16_idx:591; ZVFBFA:       # %bb.0:592; ZVFBFA-NEXT:    addi a1, a0, 1593; ZVFBFA-NEXT:    fmv.x.h a2, fa0594; ZVFBFA-NEXT:    vsetvli a3, zero, e16, m1, ta, ma595; ZVFBFA-NEXT:    vmv.s.x v9, a2596; ZVFBFA-NEXT:    vsetvli zero, a1, e16, mf4, tu, ma597; ZVFBFA-NEXT:    vslideup.vx v8, v9, a0598; ZVFBFA-NEXT:    ret599  %r = insertelement <vscale x 1 x half> %v, half %elt, i32 %idx600  ret <vscale x 1 x half> %r601}602 603define <vscale x 2 x half> @insertelt_nxv2f16_0(<vscale x 2 x half> %v, half %elt) {604; ZVFH-LABEL: insertelt_nxv2f16_0:605; ZVFH:       # %bb.0:606; ZVFH-NEXT:    vsetvli a0, zero, e16, m1, tu, ma607; ZVFH-NEXT:    vfmv.s.f v8, fa0608; ZVFH-NEXT:    ret609;610; ZVFHMIN-LABEL: insertelt_nxv2f16_0:611; ZVFHMIN:       # %bb.0:612; ZVFHMIN-NEXT:    fmv.x.h a0, fa0613; ZVFHMIN-NEXT:    vsetvli a1, zero, e16, m1, tu, ma614; ZVFHMIN-NEXT:    vmv.s.x v8, a0615; ZVFHMIN-NEXT:    ret616;617; ZVFBFA-LABEL: insertelt_nxv2f16_0:618; ZVFBFA:       # %bb.0:619; ZVFBFA-NEXT:    fmv.x.h a0, fa0620; ZVFBFA-NEXT:    vsetvli a1, zero, e16, m1, tu, ma621; ZVFBFA-NEXT:    vmv.s.x v8, a0622; ZVFBFA-NEXT:    ret623  %r = insertelement <vscale x 2 x half> %v, half %elt, i32 0624  ret <vscale x 2 x half> %r625}626 627define <vscale x 2 x half> @insertelt_nxv2f16_imm(<vscale x 2 x half> %v, half %elt) {628; ZVFH-LABEL: insertelt_nxv2f16_imm:629; ZVFH:       # %bb.0:630; ZVFH-NEXT:    vsetivli zero, 4, e16, mf2, tu, ma631; ZVFH-NEXT:    vfmv.s.f v9, fa0632; ZVFH-NEXT:    vslideup.vi v8, v9, 3633; ZVFH-NEXT:    ret634;635; ZVFHMIN-LABEL: insertelt_nxv2f16_imm:636; ZVFHMIN:       # %bb.0:637; ZVFHMIN-NEXT:    fmv.x.h a0, fa0638; ZVFHMIN-NEXT:    vsetivli zero, 4, e16, mf2, tu, ma639; ZVFHMIN-NEXT:    vmv.s.x v9, a0640; ZVFHMIN-NEXT:    vslideup.vi v8, v9, 3641; ZVFHMIN-NEXT:    ret642;643; ZVFBFA-LABEL: insertelt_nxv2f16_imm:644; ZVFBFA:       # %bb.0:645; ZVFBFA-NEXT:    fmv.x.h a0, fa0646; ZVFBFA-NEXT:    vsetivli zero, 4, e16, mf2, tu, ma647; ZVFBFA-NEXT:    vmv.s.x v9, a0648; ZVFBFA-NEXT:    vslideup.vi v8, v9, 3649; ZVFBFA-NEXT:    ret650  %r = insertelement <vscale x 2 x half> %v, half %elt, i32 3651  ret <vscale x 2 x half> %r652}653 654define <vscale x 2 x half> @insertelt_nxv2f16_idx(<vscale x 2 x half> %v, half %elt, i32 zeroext %idx) {655; ZVFH-LABEL: insertelt_nxv2f16_idx:656; ZVFH:       # %bb.0:657; ZVFH-NEXT:    addi a1, a0, 1658; ZVFH-NEXT:    vsetvli a2, zero, e16, m1, ta, ma659; ZVFH-NEXT:    vfmv.s.f v9, fa0660; ZVFH-NEXT:    vsetvli zero, a1, e16, mf2, tu, ma661; ZVFH-NEXT:    vslideup.vx v8, v9, a0662; ZVFH-NEXT:    ret663;664; ZVFHMIN-LABEL: insertelt_nxv2f16_idx:665; ZVFHMIN:       # %bb.0:666; ZVFHMIN-NEXT:    addi a1, a0, 1667; ZVFHMIN-NEXT:    fmv.x.h a2, fa0668; ZVFHMIN-NEXT:    vsetvli a3, zero, e16, m1, ta, ma669; ZVFHMIN-NEXT:    vmv.s.x v9, a2670; ZVFHMIN-NEXT:    vsetvli zero, a1, e16, mf2, tu, ma671; ZVFHMIN-NEXT:    vslideup.vx v8, v9, a0672; ZVFHMIN-NEXT:    ret673;674; ZVFBFA-LABEL: insertelt_nxv2f16_idx:675; ZVFBFA:       # %bb.0:676; ZVFBFA-NEXT:    addi a1, a0, 1677; ZVFBFA-NEXT:    fmv.x.h a2, fa0678; ZVFBFA-NEXT:    vsetvli a3, zero, e16, m1, ta, ma679; ZVFBFA-NEXT:    vmv.s.x v9, a2680; ZVFBFA-NEXT:    vsetvli zero, a1, e16, mf2, tu, ma681; ZVFBFA-NEXT:    vslideup.vx v8, v9, a0682; ZVFBFA-NEXT:    ret683  %r = insertelement <vscale x 2 x half> %v, half %elt, i32 %idx684  ret <vscale x 2 x half> %r685}686 687define <vscale x 4 x half> @insertelt_nxv4f16_0(<vscale x 4 x half> %v, half %elt) {688; ZVFH-LABEL: insertelt_nxv4f16_0:689; ZVFH:       # %bb.0:690; ZVFH-NEXT:    vsetvli a0, zero, e16, m1, tu, ma691; ZVFH-NEXT:    vfmv.s.f v8, fa0692; ZVFH-NEXT:    ret693;694; ZVFHMIN-LABEL: insertelt_nxv4f16_0:695; ZVFHMIN:       # %bb.0:696; ZVFHMIN-NEXT:    fmv.x.h a0, fa0697; ZVFHMIN-NEXT:    vsetvli a1, zero, e16, m1, tu, ma698; ZVFHMIN-NEXT:    vmv.s.x v8, a0699; ZVFHMIN-NEXT:    ret700;701; ZVFBFA-LABEL: insertelt_nxv4f16_0:702; ZVFBFA:       # %bb.0:703; ZVFBFA-NEXT:    fmv.x.h a0, fa0704; ZVFBFA-NEXT:    vsetvli a1, zero, e16, m1, tu, ma705; ZVFBFA-NEXT:    vmv.s.x v8, a0706; ZVFBFA-NEXT:    ret707  %r = insertelement <vscale x 4 x half> %v, half %elt, i32 0708  ret <vscale x 4 x half> %r709}710 711define <vscale x 4 x half> @insertelt_nxv4f16_imm(<vscale x 4 x half> %v, half %elt) {712; ZVFH-LABEL: insertelt_nxv4f16_imm:713; ZVFH:       # %bb.0:714; ZVFH-NEXT:    vsetivli zero, 4, e16, m1, tu, ma715; ZVFH-NEXT:    vfmv.s.f v9, fa0716; ZVFH-NEXT:    vslideup.vi v8, v9, 3717; ZVFH-NEXT:    ret718;719; ZVFHMIN-LABEL: insertelt_nxv4f16_imm:720; ZVFHMIN:       # %bb.0:721; ZVFHMIN-NEXT:    fmv.x.h a0, fa0722; ZVFHMIN-NEXT:    vsetivli zero, 4, e16, m1, tu, ma723; ZVFHMIN-NEXT:    vmv.s.x v9, a0724; ZVFHMIN-NEXT:    vslideup.vi v8, v9, 3725; ZVFHMIN-NEXT:    ret726;727; ZVFBFA-LABEL: insertelt_nxv4f16_imm:728; ZVFBFA:       # %bb.0:729; ZVFBFA-NEXT:    fmv.x.h a0, fa0730; ZVFBFA-NEXT:    vsetivli zero, 4, e16, m1, tu, ma731; ZVFBFA-NEXT:    vmv.s.x v9, a0732; ZVFBFA-NEXT:    vslideup.vi v8, v9, 3733; ZVFBFA-NEXT:    ret734  %r = insertelement <vscale x 4 x half> %v, half %elt, i32 3735  ret <vscale x 4 x half> %r736}737 738define <vscale x 4 x half> @insertelt_nxv4f16_idx(<vscale x 4 x half> %v, half %elt, i32 zeroext %idx) {739; ZVFH-LABEL: insertelt_nxv4f16_idx:740; ZVFH:       # %bb.0:741; ZVFH-NEXT:    addi a1, a0, 1742; ZVFH-NEXT:    vsetvli a2, zero, e16, m1, ta, ma743; ZVFH-NEXT:    vfmv.s.f v9, fa0744; ZVFH-NEXT:    vsetvli zero, a1, e16, m1, tu, ma745; ZVFH-NEXT:    vslideup.vx v8, v9, a0746; ZVFH-NEXT:    ret747;748; ZVFHMIN-LABEL: insertelt_nxv4f16_idx:749; ZVFHMIN:       # %bb.0:750; ZVFHMIN-NEXT:    addi a1, a0, 1751; ZVFHMIN-NEXT:    fmv.x.h a2, fa0752; ZVFHMIN-NEXT:    vsetvli a3, zero, e16, m1, ta, ma753; ZVFHMIN-NEXT:    vmv.s.x v9, a2754; ZVFHMIN-NEXT:    vsetvli zero, a1, e16, m1, tu, ma755; ZVFHMIN-NEXT:    vslideup.vx v8, v9, a0756; ZVFHMIN-NEXT:    ret757;758; ZVFBFA-LABEL: insertelt_nxv4f16_idx:759; ZVFBFA:       # %bb.0:760; ZVFBFA-NEXT:    addi a1, a0, 1761; ZVFBFA-NEXT:    fmv.x.h a2, fa0762; ZVFBFA-NEXT:    vsetvli a3, zero, e16, m1, ta, ma763; ZVFBFA-NEXT:    vmv.s.x v9, a2764; ZVFBFA-NEXT:    vsetvli zero, a1, e16, m1, tu, ma765; ZVFBFA-NEXT:    vslideup.vx v8, v9, a0766; ZVFBFA-NEXT:    ret767  %r = insertelement <vscale x 4 x half> %v, half %elt, i32 %idx768  ret <vscale x 4 x half> %r769}770 771define <vscale x 8 x half> @insertelt_nxv8f16_0(<vscale x 8 x half> %v, half %elt) {772; ZVFH-LABEL: insertelt_nxv8f16_0:773; ZVFH:       # %bb.0:774; ZVFH-NEXT:    vsetvli a0, zero, e16, m1, tu, ma775; ZVFH-NEXT:    vfmv.s.f v8, fa0776; ZVFH-NEXT:    ret777;778; ZVFHMIN-LABEL: insertelt_nxv8f16_0:779; ZVFHMIN:       # %bb.0:780; ZVFHMIN-NEXT:    fmv.x.h a0, fa0781; ZVFHMIN-NEXT:    vsetvli a1, zero, e16, m1, tu, ma782; ZVFHMIN-NEXT:    vmv.s.x v8, a0783; ZVFHMIN-NEXT:    ret784;785; ZVFBFA-LABEL: insertelt_nxv8f16_0:786; ZVFBFA:       # %bb.0:787; ZVFBFA-NEXT:    fmv.x.h a0, fa0788; ZVFBFA-NEXT:    vsetvli a1, zero, e16, m1, tu, ma789; ZVFBFA-NEXT:    vmv.s.x v8, a0790; ZVFBFA-NEXT:    ret791  %r = insertelement <vscale x 8 x half> %v, half %elt, i32 0792  ret <vscale x 8 x half> %r793}794 795define <vscale x 8 x half> @insertelt_nxv8f16_imm(<vscale x 8 x half> %v, half %elt) {796; ZVFH-LABEL: insertelt_nxv8f16_imm:797; ZVFH:       # %bb.0:798; ZVFH-NEXT:    vsetivli zero, 4, e16, m1, tu, ma799; ZVFH-NEXT:    vfmv.s.f v10, fa0800; ZVFH-NEXT:    vslideup.vi v8, v10, 3801; ZVFH-NEXT:    ret802;803; ZVFHMIN-LABEL: insertelt_nxv8f16_imm:804; ZVFHMIN:       # %bb.0:805; ZVFHMIN-NEXT:    fmv.x.h a0, fa0806; ZVFHMIN-NEXT:    vsetivli zero, 4, e16, m1, tu, ma807; ZVFHMIN-NEXT:    vmv.s.x v10, a0808; ZVFHMIN-NEXT:    vslideup.vi v8, v10, 3809; ZVFHMIN-NEXT:    ret810;811; ZVFBFA-LABEL: insertelt_nxv8f16_imm:812; ZVFBFA:       # %bb.0:813; ZVFBFA-NEXT:    fmv.x.h a0, fa0814; ZVFBFA-NEXT:    vsetivli zero, 4, e16, m1, tu, ma815; ZVFBFA-NEXT:    vmv.s.x v10, a0816; ZVFBFA-NEXT:    vslideup.vi v8, v10, 3817; ZVFBFA-NEXT:    ret818  %r = insertelement <vscale x 8 x half> %v, half %elt, i32 3819  ret <vscale x 8 x half> %r820}821 822define <vscale x 8 x half> @insertelt_nxv8f16_idx(<vscale x 8 x half> %v, half %elt, i32 zeroext %idx) {823; ZVFH-LABEL: insertelt_nxv8f16_idx:824; ZVFH:       # %bb.0:825; ZVFH-NEXT:    vsetvli a1, zero, e16, m1, ta, ma826; ZVFH-NEXT:    vfmv.s.f v10, fa0827; ZVFH-NEXT:    addi a1, a0, 1828; ZVFH-NEXT:    vsetvli zero, a1, e16, m2, tu, ma829; ZVFH-NEXT:    vslideup.vx v8, v10, a0830; ZVFH-NEXT:    ret831;832; ZVFHMIN-LABEL: insertelt_nxv8f16_idx:833; ZVFHMIN:       # %bb.0:834; ZVFHMIN-NEXT:    fmv.x.h a1, fa0835; ZVFHMIN-NEXT:    vsetvli a2, zero, e16, m1, ta, ma836; ZVFHMIN-NEXT:    vmv.s.x v10, a1837; ZVFHMIN-NEXT:    addi a1, a0, 1838; ZVFHMIN-NEXT:    vsetvli zero, a1, e16, m2, tu, ma839; ZVFHMIN-NEXT:    vslideup.vx v8, v10, a0840; ZVFHMIN-NEXT:    ret841;842; ZVFBFA-LABEL: insertelt_nxv8f16_idx:843; ZVFBFA:       # %bb.0:844; ZVFBFA-NEXT:    fmv.x.h a1, fa0845; ZVFBFA-NEXT:    vsetvli a2, zero, e16, m1, ta, ma846; ZVFBFA-NEXT:    vmv.s.x v10, a1847; ZVFBFA-NEXT:    addi a1, a0, 1848; ZVFBFA-NEXT:    vsetvli zero, a1, e16, m2, tu, ma849; ZVFBFA-NEXT:    vslideup.vx v8, v10, a0850; ZVFBFA-NEXT:    ret851  %r = insertelement <vscale x 8 x half> %v, half %elt, i32 %idx852  ret <vscale x 8 x half> %r853}854 855define <vscale x 16 x half> @insertelt_nxv16f16_0(<vscale x 16 x half> %v, half %elt) {856; ZVFH-LABEL: insertelt_nxv16f16_0:857; ZVFH:       # %bb.0:858; ZVFH-NEXT:    vsetvli a0, zero, e16, m1, tu, ma859; ZVFH-NEXT:    vfmv.s.f v8, fa0860; ZVFH-NEXT:    ret861;862; ZVFHMIN-LABEL: insertelt_nxv16f16_0:863; ZVFHMIN:       # %bb.0:864; ZVFHMIN-NEXT:    fmv.x.h a0, fa0865; ZVFHMIN-NEXT:    vsetvli a1, zero, e16, m1, tu, ma866; ZVFHMIN-NEXT:    vmv.s.x v8, a0867; ZVFHMIN-NEXT:    ret868;869; ZVFBFA-LABEL: insertelt_nxv16f16_0:870; ZVFBFA:       # %bb.0:871; ZVFBFA-NEXT:    fmv.x.h a0, fa0872; ZVFBFA-NEXT:    vsetvli a1, zero, e16, m1, tu, ma873; ZVFBFA-NEXT:    vmv.s.x v8, a0874; ZVFBFA-NEXT:    ret875  %r = insertelement <vscale x 16 x half> %v, half %elt, i32 0876  ret <vscale x 16 x half> %r877}878 879define <vscale x 16 x half> @insertelt_nxv16f16_imm(<vscale x 16 x half> %v, half %elt) {880; ZVFH-LABEL: insertelt_nxv16f16_imm:881; ZVFH:       # %bb.0:882; ZVFH-NEXT:    vsetivli zero, 4, e16, m1, tu, ma883; ZVFH-NEXT:    vfmv.s.f v12, fa0884; ZVFH-NEXT:    vslideup.vi v8, v12, 3885; ZVFH-NEXT:    ret886;887; ZVFHMIN-LABEL: insertelt_nxv16f16_imm:888; ZVFHMIN:       # %bb.0:889; ZVFHMIN-NEXT:    fmv.x.h a0, fa0890; ZVFHMIN-NEXT:    vsetivli zero, 4, e16, m1, tu, ma891; ZVFHMIN-NEXT:    vmv.s.x v12, a0892; ZVFHMIN-NEXT:    vslideup.vi v8, v12, 3893; ZVFHMIN-NEXT:    ret894;895; ZVFBFA-LABEL: insertelt_nxv16f16_imm:896; ZVFBFA:       # %bb.0:897; ZVFBFA-NEXT:    fmv.x.h a0, fa0898; ZVFBFA-NEXT:    vsetivli zero, 4, e16, m1, tu, ma899; ZVFBFA-NEXT:    vmv.s.x v12, a0900; ZVFBFA-NEXT:    vslideup.vi v8, v12, 3901; ZVFBFA-NEXT:    ret902  %r = insertelement <vscale x 16 x half> %v, half %elt, i32 3903  ret <vscale x 16 x half> %r904}905 906define <vscale x 16 x half> @insertelt_nxv16f16_idx(<vscale x 16 x half> %v, half %elt, i32 zeroext %idx) {907; ZVFH-LABEL: insertelt_nxv16f16_idx:908; ZVFH:       # %bb.0:909; ZVFH-NEXT:    vsetvli a1, zero, e16, m1, ta, ma910; ZVFH-NEXT:    vfmv.s.f v12, fa0911; ZVFH-NEXT:    addi a1, a0, 1912; ZVFH-NEXT:    vsetvli zero, a1, e16, m4, tu, ma913; ZVFH-NEXT:    vslideup.vx v8, v12, a0914; ZVFH-NEXT:    ret915;916; ZVFHMIN-LABEL: insertelt_nxv16f16_idx:917; ZVFHMIN:       # %bb.0:918; ZVFHMIN-NEXT:    fmv.x.h a1, fa0919; ZVFHMIN-NEXT:    vsetvli a2, zero, e16, m1, ta, ma920; ZVFHMIN-NEXT:    vmv.s.x v12, a1921; ZVFHMIN-NEXT:    addi a1, a0, 1922; ZVFHMIN-NEXT:    vsetvli zero, a1, e16, m4, tu, ma923; ZVFHMIN-NEXT:    vslideup.vx v8, v12, a0924; ZVFHMIN-NEXT:    ret925;926; ZVFBFA-LABEL: insertelt_nxv16f16_idx:927; ZVFBFA:       # %bb.0:928; ZVFBFA-NEXT:    fmv.x.h a1, fa0929; ZVFBFA-NEXT:    vsetvli a2, zero, e16, m1, ta, ma930; ZVFBFA-NEXT:    vmv.s.x v12, a1931; ZVFBFA-NEXT:    addi a1, a0, 1932; ZVFBFA-NEXT:    vsetvli zero, a1, e16, m4, tu, ma933; ZVFBFA-NEXT:    vslideup.vx v8, v12, a0934; ZVFBFA-NEXT:    ret935  %r = insertelement <vscale x 16 x half> %v, half %elt, i32 %idx936  ret <vscale x 16 x half> %r937}938 939define <vscale x 32 x half> @insertelt_nxv32f16_0(<vscale x 32 x half> %v, half %elt) {940; ZVFH-LABEL: insertelt_nxv32f16_0:941; ZVFH:       # %bb.0:942; ZVFH-NEXT:    vsetvli a0, zero, e16, m1, tu, ma943; ZVFH-NEXT:    vfmv.s.f v8, fa0944; ZVFH-NEXT:    ret945;946; ZVFHMIN-LABEL: insertelt_nxv32f16_0:947; ZVFHMIN:       # %bb.0:948; ZVFHMIN-NEXT:    fmv.x.h a0, fa0949; ZVFHMIN-NEXT:    vsetvli a1, zero, e16, m1, tu, ma950; ZVFHMIN-NEXT:    vmv.s.x v8, a0951; ZVFHMIN-NEXT:    ret952;953; ZVFBFA-LABEL: insertelt_nxv32f16_0:954; ZVFBFA:       # %bb.0:955; ZVFBFA-NEXT:    fmv.x.h a0, fa0956; ZVFBFA-NEXT:    vsetvli a1, zero, e16, m1, tu, ma957; ZVFBFA-NEXT:    vmv.s.x v8, a0958; ZVFBFA-NEXT:    ret959  %r = insertelement <vscale x 32 x half> %v, half %elt, i32 0960  ret <vscale x 32 x half> %r961}962 963define <vscale x 32 x half> @insertelt_nxv32f16_imm(<vscale x 32 x half> %v, half %elt) {964; ZVFH-LABEL: insertelt_nxv32f16_imm:965; ZVFH:       # %bb.0:966; ZVFH-NEXT:    vsetivli zero, 4, e16, m1, tu, ma967; ZVFH-NEXT:    vfmv.s.f v16, fa0968; ZVFH-NEXT:    vslideup.vi v8, v16, 3969; ZVFH-NEXT:    ret970;971; ZVFHMIN-LABEL: insertelt_nxv32f16_imm:972; ZVFHMIN:       # %bb.0:973; ZVFHMIN-NEXT:    fmv.x.h a0, fa0974; ZVFHMIN-NEXT:    vsetivli zero, 4, e16, m1, tu, ma975; ZVFHMIN-NEXT:    vmv.s.x v16, a0976; ZVFHMIN-NEXT:    vslideup.vi v8, v16, 3977; ZVFHMIN-NEXT:    ret978;979; ZVFBFA-LABEL: insertelt_nxv32f16_imm:980; ZVFBFA:       # %bb.0:981; ZVFBFA-NEXT:    fmv.x.h a0, fa0982; ZVFBFA-NEXT:    vsetivli zero, 4, e16, m1, tu, ma983; ZVFBFA-NEXT:    vmv.s.x v16, a0984; ZVFBFA-NEXT:    vslideup.vi v8, v16, 3985; ZVFBFA-NEXT:    ret986  %r = insertelement <vscale x 32 x half> %v, half %elt, i32 3987  ret <vscale x 32 x half> %r988}989 990define <vscale x 32 x half> @insertelt_nxv32f16_idx(<vscale x 32 x half> %v, half %elt, i32 zeroext %idx) {991; ZVFH-LABEL: insertelt_nxv32f16_idx:992; ZVFH:       # %bb.0:993; ZVFH-NEXT:    vsetvli a1, zero, e16, m1, ta, ma994; ZVFH-NEXT:    vfmv.s.f v16, fa0995; ZVFH-NEXT:    addi a1, a0, 1996; ZVFH-NEXT:    vsetvli zero, a1, e16, m8, tu, ma997; ZVFH-NEXT:    vslideup.vx v8, v16, a0998; ZVFH-NEXT:    ret999;1000; ZVFHMIN-LABEL: insertelt_nxv32f16_idx:1001; ZVFHMIN:       # %bb.0:1002; ZVFHMIN-NEXT:    fmv.x.h a1, fa01003; ZVFHMIN-NEXT:    vsetvli a2, zero, e16, m1, ta, ma1004; ZVFHMIN-NEXT:    vmv.s.x v16, a11005; ZVFHMIN-NEXT:    addi a1, a0, 11006; ZVFHMIN-NEXT:    vsetvli zero, a1, e16, m8, tu, ma1007; ZVFHMIN-NEXT:    vslideup.vx v8, v16, a01008; ZVFHMIN-NEXT:    ret1009;1010; ZVFBFA-LABEL: insertelt_nxv32f16_idx:1011; ZVFBFA:       # %bb.0:1012; ZVFBFA-NEXT:    fmv.x.h a1, fa01013; ZVFBFA-NEXT:    vsetvli a2, zero, e16, m1, ta, ma1014; ZVFBFA-NEXT:    vmv.s.x v16, a11015; ZVFBFA-NEXT:    addi a1, a0, 11016; ZVFBFA-NEXT:    vsetvli zero, a1, e16, m8, tu, ma1017; ZVFBFA-NEXT:    vslideup.vx v8, v16, a01018; ZVFBFA-NEXT:    ret1019  %r = insertelement <vscale x 32 x half> %v, half %elt, i32 %idx1020  ret <vscale x 32 x half> %r1021}1022 1023define <vscale x 1 x float> @insertelt_nxv1f32_0(<vscale x 1 x float> %v, float %elt) {1024; CHECK-LABEL: insertelt_nxv1f32_0:1025; CHECK:       # %bb.0:1026; CHECK-NEXT:    vsetvli a0, zero, e32, m1, tu, ma1027; CHECK-NEXT:    vfmv.s.f v8, fa01028; CHECK-NEXT:    ret1029  %r = insertelement <vscale x 1 x float> %v, float %elt, i32 01030  ret <vscale x 1 x float> %r1031}1032 1033define <vscale x 1 x float> @insertelt_nxv1f32_imm(<vscale x 1 x float> %v, float %elt) {1034; CHECK-LABEL: insertelt_nxv1f32_imm:1035; CHECK:       # %bb.0:1036; CHECK-NEXT:    vsetivli zero, 4, e32, mf2, tu, ma1037; CHECK-NEXT:    vfmv.s.f v9, fa01038; CHECK-NEXT:    vslideup.vi v8, v9, 31039; CHECK-NEXT:    ret1040  %r = insertelement <vscale x 1 x float> %v, float %elt, i32 31041  ret <vscale x 1 x float> %r1042}1043 1044define <vscale x 1 x float> @insertelt_nxv1f32_idx(<vscale x 1 x float> %v, float %elt, i32 zeroext %idx) {1045; CHECK-LABEL: insertelt_nxv1f32_idx:1046; CHECK:       # %bb.0:1047; CHECK-NEXT:    addi a1, a0, 11048; CHECK-NEXT:    vsetvli a2, zero, e32, m1, ta, ma1049; CHECK-NEXT:    vfmv.s.f v9, fa01050; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, tu, ma1051; CHECK-NEXT:    vslideup.vx v8, v9, a01052; CHECK-NEXT:    ret1053  %r = insertelement <vscale x 1 x float> %v, float %elt, i32 %idx1054  ret <vscale x 1 x float> %r1055}1056 1057define <vscale x 2 x float> @insertelt_nxv2f32_0(<vscale x 2 x float> %v, float %elt) {1058; CHECK-LABEL: insertelt_nxv2f32_0:1059; CHECK:       # %bb.0:1060; CHECK-NEXT:    vsetvli a0, zero, e32, m1, tu, ma1061; CHECK-NEXT:    vfmv.s.f v8, fa01062; CHECK-NEXT:    ret1063  %r = insertelement <vscale x 2 x float> %v, float %elt, i32 01064  ret <vscale x 2 x float> %r1065}1066 1067define <vscale x 2 x float> @insertelt_nxv2f32_imm(<vscale x 2 x float> %v, float %elt) {1068; CHECK-LABEL: insertelt_nxv2f32_imm:1069; CHECK:       # %bb.0:1070; CHECK-NEXT:    vsetivli zero, 4, e32, m1, tu, ma1071; CHECK-NEXT:    vfmv.s.f v9, fa01072; CHECK-NEXT:    vslideup.vi v8, v9, 31073; CHECK-NEXT:    ret1074  %r = insertelement <vscale x 2 x float> %v, float %elt, i32 31075  ret <vscale x 2 x float> %r1076}1077 1078define <vscale x 2 x float> @insertelt_nxv2f32_idx(<vscale x 2 x float> %v, float %elt, i32 zeroext %idx) {1079; CHECK-LABEL: insertelt_nxv2f32_idx:1080; CHECK:       # %bb.0:1081; CHECK-NEXT:    addi a1, a0, 11082; CHECK-NEXT:    vsetvli a2, zero, e32, m1, ta, ma1083; CHECK-NEXT:    vfmv.s.f v9, fa01084; CHECK-NEXT:    vsetvli zero, a1, e32, m1, tu, ma1085; CHECK-NEXT:    vslideup.vx v8, v9, a01086; CHECK-NEXT:    ret1087  %r = insertelement <vscale x 2 x float> %v, float %elt, i32 %idx1088  ret <vscale x 2 x float> %r1089}1090 1091define <vscale x 4 x float> @insertelt_nxv4f32_0(<vscale x 4 x float> %v, float %elt) {1092; CHECK-LABEL: insertelt_nxv4f32_0:1093; CHECK:       # %bb.0:1094; CHECK-NEXT:    vsetvli a0, zero, e32, m1, tu, ma1095; CHECK-NEXT:    vfmv.s.f v8, fa01096; CHECK-NEXT:    ret1097  %r = insertelement <vscale x 4 x float> %v, float %elt, i32 01098  ret <vscale x 4 x float> %r1099}1100 1101define <vscale x 4 x float> @insertelt_nxv4f32_imm(<vscale x 4 x float> %v, float %elt) {1102; CHECK-LABEL: insertelt_nxv4f32_imm:1103; CHECK:       # %bb.0:1104; CHECK-NEXT:    vsetivli zero, 4, e32, m1, tu, ma1105; CHECK-NEXT:    vfmv.s.f v10, fa01106; CHECK-NEXT:    vslideup.vi v8, v10, 31107; CHECK-NEXT:    ret1108  %r = insertelement <vscale x 4 x float> %v, float %elt, i32 31109  ret <vscale x 4 x float> %r1110}1111 1112define <vscale x 4 x float> @insertelt_nxv4f32_idx(<vscale x 4 x float> %v, float %elt, i32 zeroext %idx) {1113; CHECK-LABEL: insertelt_nxv4f32_idx:1114; CHECK:       # %bb.0:1115; CHECK-NEXT:    vsetvli a1, zero, e32, m1, ta, ma1116; CHECK-NEXT:    vfmv.s.f v10, fa01117; CHECK-NEXT:    addi a1, a0, 11118; CHECK-NEXT:    vsetvli zero, a1, e32, m2, tu, ma1119; CHECK-NEXT:    vslideup.vx v8, v10, a01120; CHECK-NEXT:    ret1121  %r = insertelement <vscale x 4 x float> %v, float %elt, i32 %idx1122  ret <vscale x 4 x float> %r1123}1124 1125define <vscale x 8 x float> @insertelt_nxv8f32_0(<vscale x 8 x float> %v, float %elt) {1126; CHECK-LABEL: insertelt_nxv8f32_0:1127; CHECK:       # %bb.0:1128; CHECK-NEXT:    vsetvli a0, zero, e32, m1, tu, ma1129; CHECK-NEXT:    vfmv.s.f v8, fa01130; CHECK-NEXT:    ret1131  %r = insertelement <vscale x 8 x float> %v, float %elt, i32 01132  ret <vscale x 8 x float> %r1133}1134 1135define <vscale x 8 x float> @insertelt_nxv8f32_imm(<vscale x 8 x float> %v, float %elt) {1136; CHECK-LABEL: insertelt_nxv8f32_imm:1137; CHECK:       # %bb.0:1138; CHECK-NEXT:    vsetivli zero, 4, e32, m1, tu, ma1139; CHECK-NEXT:    vfmv.s.f v12, fa01140; CHECK-NEXT:    vslideup.vi v8, v12, 31141; CHECK-NEXT:    ret1142  %r = insertelement <vscale x 8 x float> %v, float %elt, i32 31143  ret <vscale x 8 x float> %r1144}1145 1146define <vscale x 8 x float> @insertelt_nxv8f32_idx(<vscale x 8 x float> %v, float %elt, i32 zeroext %idx) {1147; CHECK-LABEL: insertelt_nxv8f32_idx:1148; CHECK:       # %bb.0:1149; CHECK-NEXT:    vsetvli a1, zero, e32, m1, ta, ma1150; CHECK-NEXT:    vfmv.s.f v12, fa01151; CHECK-NEXT:    addi a1, a0, 11152; CHECK-NEXT:    vsetvli zero, a1, e32, m4, tu, ma1153; CHECK-NEXT:    vslideup.vx v8, v12, a01154; CHECK-NEXT:    ret1155  %r = insertelement <vscale x 8 x float> %v, float %elt, i32 %idx1156  ret <vscale x 8 x float> %r1157}1158 1159define <vscale x 16 x float> @insertelt_nxv16f32_0(<vscale x 16 x float> %v, float %elt) {1160; CHECK-LABEL: insertelt_nxv16f32_0:1161; CHECK:       # %bb.0:1162; CHECK-NEXT:    vsetvli a0, zero, e32, m1, tu, ma1163; CHECK-NEXT:    vfmv.s.f v8, fa01164; CHECK-NEXT:    ret1165  %r = insertelement <vscale x 16 x float> %v, float %elt, i32 01166  ret <vscale x 16 x float> %r1167}1168 1169define <vscale x 16 x float> @insertelt_nxv16f32_imm(<vscale x 16 x float> %v, float %elt) {1170; CHECK-LABEL: insertelt_nxv16f32_imm:1171; CHECK:       # %bb.0:1172; CHECK-NEXT:    vsetivli zero, 4, e32, m1, tu, ma1173; CHECK-NEXT:    vfmv.s.f v16, fa01174; CHECK-NEXT:    vslideup.vi v8, v16, 31175; CHECK-NEXT:    ret1176  %r = insertelement <vscale x 16 x float> %v, float %elt, i32 31177  ret <vscale x 16 x float> %r1178}1179 1180define <vscale x 16 x float> @insertelt_nxv16f32_idx(<vscale x 16 x float> %v, float %elt, i32 zeroext %idx) {1181; CHECK-LABEL: insertelt_nxv16f32_idx:1182; CHECK:       # %bb.0:1183; CHECK-NEXT:    vsetvli a1, zero, e32, m1, ta, ma1184; CHECK-NEXT:    vfmv.s.f v16, fa01185; CHECK-NEXT:    addi a1, a0, 11186; CHECK-NEXT:    vsetvli zero, a1, e32, m8, tu, ma1187; CHECK-NEXT:    vslideup.vx v8, v16, a01188; CHECK-NEXT:    ret1189  %r = insertelement <vscale x 16 x float> %v, float %elt, i32 %idx1190  ret <vscale x 16 x float> %r1191}1192 1193define <vscale x 1 x double> @insertelt_nxv1f64_0(<vscale x 1 x double> %v, double %elt) {1194; CHECK-LABEL: insertelt_nxv1f64_0:1195; CHECK:       # %bb.0:1196; CHECK-NEXT:    vsetvli a0, zero, e64, m1, tu, ma1197; CHECK-NEXT:    vfmv.s.f v8, fa01198; CHECK-NEXT:    ret1199  %r = insertelement <vscale x 1 x double> %v, double %elt, i32 01200  ret <vscale x 1 x double> %r1201}1202 1203define <vscale x 1 x double> @insertelt_nxv1f64_imm(<vscale x 1 x double> %v, double %elt) {1204; CHECK-LABEL: insertelt_nxv1f64_imm:1205; CHECK:       # %bb.0:1206; CHECK-NEXT:    vsetivli zero, 4, e64, m1, tu, ma1207; CHECK-NEXT:    vfmv.s.f v9, fa01208; CHECK-NEXT:    vslideup.vi v8, v9, 31209; CHECK-NEXT:    ret1210  %r = insertelement <vscale x 1 x double> %v, double %elt, i32 31211  ret <vscale x 1 x double> %r1212}1213 1214define <vscale x 1 x double> @insertelt_nxv1f64_idx(<vscale x 1 x double> %v, double %elt, i32 zeroext %idx) {1215; CHECK-LABEL: insertelt_nxv1f64_idx:1216; CHECK:       # %bb.0:1217; CHECK-NEXT:    addi a1, a0, 11218; CHECK-NEXT:    vsetvli a2, zero, e64, m1, ta, ma1219; CHECK-NEXT:    vfmv.s.f v9, fa01220; CHECK-NEXT:    vsetvli zero, a1, e64, m1, tu, ma1221; CHECK-NEXT:    vslideup.vx v8, v9, a01222; CHECK-NEXT:    ret1223  %r = insertelement <vscale x 1 x double> %v, double %elt, i32 %idx1224  ret <vscale x 1 x double> %r1225}1226 1227define <vscale x 2 x double> @insertelt_nxv2f64_0(<vscale x 2 x double> %v, double %elt) {1228; CHECK-LABEL: insertelt_nxv2f64_0:1229; CHECK:       # %bb.0:1230; CHECK-NEXT:    vsetvli a0, zero, e64, m1, tu, ma1231; CHECK-NEXT:    vfmv.s.f v8, fa01232; CHECK-NEXT:    ret1233  %r = insertelement <vscale x 2 x double> %v, double %elt, i32 01234  ret <vscale x 2 x double> %r1235}1236 1237define <vscale x 2 x double> @insertelt_nxv2f64_imm(<vscale x 2 x double> %v, double %elt) {1238; CHECK-LABEL: insertelt_nxv2f64_imm:1239; CHECK:       # %bb.0:1240; CHECK-NEXT:    vsetivli zero, 4, e64, m2, tu, ma1241; CHECK-NEXT:    vfmv.s.f v10, fa01242; CHECK-NEXT:    vslideup.vi v8, v10, 31243; CHECK-NEXT:    ret1244  %r = insertelement <vscale x 2 x double> %v, double %elt, i32 31245  ret <vscale x 2 x double> %r1246}1247 1248define <vscale x 2 x double> @insertelt_nxv2f64_idx(<vscale x 2 x double> %v, double %elt, i32 zeroext %idx) {1249; CHECK-LABEL: insertelt_nxv2f64_idx:1250; CHECK:       # %bb.0:1251; CHECK-NEXT:    vsetvli a1, zero, e64, m1, ta, ma1252; CHECK-NEXT:    vfmv.s.f v10, fa01253; CHECK-NEXT:    addi a1, a0, 11254; CHECK-NEXT:    vsetvli zero, a1, e64, m2, tu, ma1255; CHECK-NEXT:    vslideup.vx v8, v10, a01256; CHECK-NEXT:    ret1257  %r = insertelement <vscale x 2 x double> %v, double %elt, i32 %idx1258  ret <vscale x 2 x double> %r1259}1260 1261define <vscale x 4 x double> @insertelt_nxv4f64_0(<vscale x 4 x double> %v, double %elt) {1262; CHECK-LABEL: insertelt_nxv4f64_0:1263; CHECK:       # %bb.0:1264; CHECK-NEXT:    vsetvli a0, zero, e64, m1, tu, ma1265; CHECK-NEXT:    vfmv.s.f v8, fa01266; CHECK-NEXT:    ret1267  %r = insertelement <vscale x 4 x double> %v, double %elt, i32 01268  ret <vscale x 4 x double> %r1269}1270 1271define <vscale x 4 x double> @insertelt_nxv4f64_imm(<vscale x 4 x double> %v, double %elt) {1272; CHECK-LABEL: insertelt_nxv4f64_imm:1273; CHECK:       # %bb.0:1274; CHECK-NEXT:    vsetivli zero, 4, e64, m2, tu, ma1275; CHECK-NEXT:    vfmv.s.f v12, fa01276; CHECK-NEXT:    vslideup.vi v8, v12, 31277; CHECK-NEXT:    ret1278  %r = insertelement <vscale x 4 x double> %v, double %elt, i32 31279  ret <vscale x 4 x double> %r1280}1281 1282define <vscale x 4 x double> @insertelt_nxv4f64_idx(<vscale x 4 x double> %v, double %elt, i32 zeroext %idx) {1283; CHECK-LABEL: insertelt_nxv4f64_idx:1284; CHECK:       # %bb.0:1285; CHECK-NEXT:    vsetvli a1, zero, e64, m1, ta, ma1286; CHECK-NEXT:    vfmv.s.f v12, fa01287; CHECK-NEXT:    addi a1, a0, 11288; CHECK-NEXT:    vsetvli zero, a1, e64, m4, tu, ma1289; CHECK-NEXT:    vslideup.vx v8, v12, a01290; CHECK-NEXT:    ret1291  %r = insertelement <vscale x 4 x double> %v, double %elt, i32 %idx1292  ret <vscale x 4 x double> %r1293}1294 1295define <vscale x 8 x double> @insertelt_nxv8f64_0(<vscale x 8 x double> %v, double %elt) {1296; CHECK-LABEL: insertelt_nxv8f64_0:1297; CHECK:       # %bb.0:1298; CHECK-NEXT:    vsetvli a0, zero, e64, m1, tu, ma1299; CHECK-NEXT:    vfmv.s.f v8, fa01300; CHECK-NEXT:    ret1301  %r = insertelement <vscale x 8 x double> %v, double %elt, i32 01302  ret <vscale x 8 x double> %r1303}1304 1305define <vscale x 8 x double> @insertelt_nxv8f64_imm(<vscale x 8 x double> %v, double %elt) {1306; CHECK-LABEL: insertelt_nxv8f64_imm:1307; CHECK:       # %bb.0:1308; CHECK-NEXT:    vsetivli zero, 4, e64, m2, tu, ma1309; CHECK-NEXT:    vfmv.s.f v16, fa01310; CHECK-NEXT:    vslideup.vi v8, v16, 31311; CHECK-NEXT:    ret1312  %r = insertelement <vscale x 8 x double> %v, double %elt, i32 31313  ret <vscale x 8 x double> %r1314}1315 1316define <vscale x 8 x double> @insertelt_nxv8f64_idx(<vscale x 8 x double> %v, double %elt, i32 zeroext %idx) {1317; CHECK-LABEL: insertelt_nxv8f64_idx:1318; CHECK:       # %bb.0:1319; CHECK-NEXT:    vsetvli a1, zero, e64, m1, ta, ma1320; CHECK-NEXT:    vfmv.s.f v16, fa01321; CHECK-NEXT:    addi a1, a0, 11322; CHECK-NEXT:    vsetvli zero, a1, e64, m8, tu, ma1323; CHECK-NEXT:    vslideup.vx v8, v16, a01324; CHECK-NEXT:    ret1325  %r = insertelement <vscale x 8 x double> %v, double %elt, i32 %idx1326  ret <vscale x 8 x double> %r1327}1328