1746cea3eSYeting Kuo; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5 21cb59983SLuke Lau; RUN: llc -mtriple=riscv32 -mattr=+v,+d,+zvfh -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,RV32 31cb59983SLuke Lau; RUN: llc -mtriple=riscv64 -mattr=+v,+d,+zvfh -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,RV64 4746cea3eSYeting Kuo 5746cea3eSYeting Kuodefine <1 x i8> @vp_splat_v1i8(i8 %val, <1 x i1> %m, i32 zeroext %evl) { 6746cea3eSYeting Kuo; CHECK-LABEL: vp_splat_v1i8: 7746cea3eSYeting Kuo; CHECK: # %bb.0: 8746cea3eSYeting Kuo; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma 9746cea3eSYeting Kuo; CHECK-NEXT: vmv.v.x v8, a0 10746cea3eSYeting Kuo; CHECK-NEXT: ret 11746cea3eSYeting Kuo %splat = call <1 x i8> @llvm.experimental.vp.splat.v1i8(i8 %val, <1 x i1> %m, i32 %evl) 12746cea3eSYeting Kuo ret <1 x i8> %splat 13746cea3eSYeting Kuo} 14746cea3eSYeting Kuo 15746cea3eSYeting Kuodefine <2 x i8> @vp_splat_v2i8(i8 %val, <2 x i1> %m, i32 zeroext %evl) { 16746cea3eSYeting Kuo; CHECK-LABEL: vp_splat_v2i8: 17746cea3eSYeting Kuo; CHECK: # %bb.0: 18746cea3eSYeting Kuo; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma 19746cea3eSYeting Kuo; CHECK-NEXT: vmv.v.x v8, a0 20746cea3eSYeting Kuo; CHECK-NEXT: ret 21746cea3eSYeting Kuo %splat = call <2 x i8> @llvm.experimental.vp.splat.v2i8(i8 %val, <2 x i1> %m, i32 %evl) 22746cea3eSYeting Kuo ret <2 x i8> %splat 23746cea3eSYeting Kuo} 24746cea3eSYeting Kuo 25746cea3eSYeting Kuodefine <4 x i8> @vp_splat_v4i8(i8 %val, <4 x i1> %m, i32 zeroext %evl) { 26746cea3eSYeting Kuo; CHECK-LABEL: vp_splat_v4i8: 27746cea3eSYeting Kuo; CHECK: # %bb.0: 28746cea3eSYeting Kuo; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma 29746cea3eSYeting Kuo; CHECK-NEXT: vmv.v.x v8, a0 30746cea3eSYeting Kuo; CHECK-NEXT: ret 31746cea3eSYeting Kuo %splat = call <4 x i8> @llvm.experimental.vp.splat.v4i8(i8 %val, <4 x i1> %m, i32 %evl) 32746cea3eSYeting Kuo ret <4 x i8> %splat 33746cea3eSYeting Kuo} 34746cea3eSYeting Kuo 35746cea3eSYeting Kuodefine <8 x i8> @vp_splat_v8i8(i8 %val, <8 x i1> %m, i32 zeroext %evl) { 36746cea3eSYeting Kuo; CHECK-LABEL: vp_splat_v8i8: 37746cea3eSYeting Kuo; CHECK: # %bb.0: 38746cea3eSYeting Kuo; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma 39746cea3eSYeting Kuo; CHECK-NEXT: vmv.v.x v8, a0 40746cea3eSYeting Kuo; CHECK-NEXT: ret 41746cea3eSYeting Kuo %splat = call <8 x i8> @llvm.experimental.vp.splat.v8i8(i8 %val, <8 x i1> %m, i32 %evl) 42746cea3eSYeting Kuo ret <8 x i8> %splat 43746cea3eSYeting Kuo} 44746cea3eSYeting Kuo 45746cea3eSYeting Kuodefine <16 x i8> @vp_splat_v16i8(i8 %val, <16 x i1> %m, i32 zeroext %evl) { 46746cea3eSYeting Kuo; CHECK-LABEL: vp_splat_v16i8: 47746cea3eSYeting Kuo; CHECK: # %bb.0: 48746cea3eSYeting Kuo; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma 49746cea3eSYeting Kuo; CHECK-NEXT: vmv.v.x v8, a0 50746cea3eSYeting Kuo; CHECK-NEXT: ret 51746cea3eSYeting Kuo %splat = call <16 x i8> @llvm.experimental.vp.splat.v16i8(i8 %val, <16 x i1> %m, i32 %evl) 52746cea3eSYeting Kuo ret <16 x i8> %splat 53746cea3eSYeting Kuo} 54746cea3eSYeting Kuo 55746cea3eSYeting Kuodefine <32 x i8> @vp_splat_v32i8(i8 %val, <32 x i1> %m, i32 zeroext %evl) { 56746cea3eSYeting Kuo; CHECK-LABEL: vp_splat_v32i8: 57746cea3eSYeting Kuo; CHECK: # %bb.0: 58746cea3eSYeting Kuo; CHECK-NEXT: vsetvli zero, a1, e8, m2, ta, ma 59746cea3eSYeting Kuo; CHECK-NEXT: vmv.v.x v8, a0 60746cea3eSYeting Kuo; CHECK-NEXT: ret 61746cea3eSYeting Kuo %splat = call <32 x i8> @llvm.experimental.vp.splat.v32i8(i8 %val, <32 x i1> %m, i32 %evl) 62746cea3eSYeting Kuo ret <32 x i8> %splat 63746cea3eSYeting Kuo} 64746cea3eSYeting Kuo 65746cea3eSYeting Kuodefine <64 x i8> @vp_splat_v64i8(i8 %val, <64 x i1> %m, i32 zeroext %evl) { 66746cea3eSYeting Kuo; CHECK-LABEL: vp_splat_v64i8: 67746cea3eSYeting Kuo; CHECK: # %bb.0: 68746cea3eSYeting Kuo; CHECK-NEXT: vsetvli zero, a1, e8, m4, ta, ma 69746cea3eSYeting Kuo; CHECK-NEXT: vmv.v.x v8, a0 70746cea3eSYeting Kuo; CHECK-NEXT: ret 71746cea3eSYeting Kuo %splat = call <64 x i8> @llvm.experimental.vp.splat.v64i8(i8 %val, <64 x i1> %m, i32 %evl) 72746cea3eSYeting Kuo ret <64 x i8> %splat 73746cea3eSYeting Kuo} 74746cea3eSYeting Kuo 75746cea3eSYeting Kuodefine <1 x i16> @vp_splat_v1i16(i16 %val, <1 x i1> %m, i32 zeroext %evl) { 76746cea3eSYeting Kuo; CHECK-LABEL: vp_splat_v1i16: 77746cea3eSYeting Kuo; CHECK: # %bb.0: 78746cea3eSYeting Kuo; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 79746cea3eSYeting Kuo; CHECK-NEXT: vmv.v.x v8, a0 80746cea3eSYeting Kuo; CHECK-NEXT: ret 81746cea3eSYeting Kuo %splat = call <1 x i16> @llvm.experimental.vp.splat.v1i16(i16 %val, <1 x i1> %m, i32 %evl) 82746cea3eSYeting Kuo ret <1 x i16> %splat 83746cea3eSYeting Kuo} 84746cea3eSYeting Kuo 85746cea3eSYeting Kuodefine <2 x i16> @vp_splat_v2i16(i16 %val, <2 x i1> %m, i32 zeroext %evl) { 86746cea3eSYeting Kuo; CHECK-LABEL: vp_splat_v2i16: 87746cea3eSYeting Kuo; CHECK: # %bb.0: 88746cea3eSYeting Kuo; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma 89746cea3eSYeting Kuo; CHECK-NEXT: vmv.v.x v8, a0 90746cea3eSYeting Kuo; CHECK-NEXT: ret 91746cea3eSYeting Kuo %splat = call <2 x i16> @llvm.experimental.vp.splat.v2i16(i16 %val, <2 x i1> %m, i32 %evl) 92746cea3eSYeting Kuo ret <2 x i16> %splat 93746cea3eSYeting Kuo} 94746cea3eSYeting Kuo 95746cea3eSYeting Kuodefine <4 x i16> @vp_splat_v4i16(i16 %val, <4 x i1> %m, i32 zeroext %evl) { 96746cea3eSYeting Kuo; CHECK-LABEL: vp_splat_v4i16: 97746cea3eSYeting Kuo; CHECK: # %bb.0: 98746cea3eSYeting Kuo; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma 99746cea3eSYeting Kuo; CHECK-NEXT: vmv.v.x v8, a0 100746cea3eSYeting Kuo; CHECK-NEXT: ret 101746cea3eSYeting Kuo %splat = call <4 x i16> @llvm.experimental.vp.splat.v4i16(i16 %val, <4 x i1> %m, i32 %evl) 102746cea3eSYeting Kuo ret <4 x i16> %splat 103746cea3eSYeting Kuo} 104746cea3eSYeting Kuo 105746cea3eSYeting Kuodefine <8 x i16> @vp_splat_v8i16(i16 %val, <8 x i1> %m, i32 zeroext %evl) { 106746cea3eSYeting Kuo; CHECK-LABEL: vp_splat_v8i16: 107746cea3eSYeting Kuo; CHECK: # %bb.0: 108746cea3eSYeting Kuo; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma 109746cea3eSYeting Kuo; CHECK-NEXT: vmv.v.x v8, a0 110746cea3eSYeting Kuo; CHECK-NEXT: ret 111746cea3eSYeting Kuo %splat = call <8 x i16> @llvm.experimental.vp.splat.v8i16(i16 %val, <8 x i1> %m, i32 %evl) 112746cea3eSYeting Kuo ret <8 x i16> %splat 113746cea3eSYeting Kuo} 114746cea3eSYeting Kuo 115746cea3eSYeting Kuodefine <16 x i16> @vp_splat_v16i16(i16 %val, <16 x i1> %m, i32 zeroext %evl) { 116746cea3eSYeting Kuo; CHECK-LABEL: vp_splat_v16i16: 117746cea3eSYeting Kuo; CHECK: # %bb.0: 118746cea3eSYeting Kuo; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma 119746cea3eSYeting Kuo; CHECK-NEXT: vmv.v.x v8, a0 120746cea3eSYeting Kuo; CHECK-NEXT: ret 121746cea3eSYeting Kuo %splat = call <16 x i16> @llvm.experimental.vp.splat.v16i16(i16 %val, <16 x i1> %m, i32 %evl) 122746cea3eSYeting Kuo ret <16 x i16> %splat 123746cea3eSYeting Kuo} 124746cea3eSYeting Kuo 125746cea3eSYeting Kuodefine <32 x i16> @vp_splat_v32i16(i16 %val, <32 x i1> %m, i32 zeroext %evl) { 126746cea3eSYeting Kuo; CHECK-LABEL: vp_splat_v32i16: 127746cea3eSYeting Kuo; CHECK: # %bb.0: 128746cea3eSYeting Kuo; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma 129746cea3eSYeting Kuo; CHECK-NEXT: vmv.v.x v8, a0 130746cea3eSYeting Kuo; CHECK-NEXT: ret 131746cea3eSYeting Kuo %splat = call <32 x i16> @llvm.experimental.vp.splat.v32i16(i16 %val, <32 x i1> %m, i32 %evl) 132746cea3eSYeting Kuo ret <32 x i16> %splat 133746cea3eSYeting Kuo} 134746cea3eSYeting Kuo 135746cea3eSYeting Kuodefine <1 x i32> @vp_splat_v1i32(i32 %val, <1 x i1> %m, i32 zeroext %evl) { 136746cea3eSYeting Kuo; CHECK-LABEL: vp_splat_v1i32: 137746cea3eSYeting Kuo; CHECK: # %bb.0: 138746cea3eSYeting Kuo; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 139746cea3eSYeting Kuo; CHECK-NEXT: vmv.v.x v8, a0 140746cea3eSYeting Kuo; CHECK-NEXT: ret 141746cea3eSYeting Kuo %splat = call <1 x i32> @llvm.experimental.vp.splat.v1i32(i32 %val, <1 x i1> %m, i32 %evl) 142746cea3eSYeting Kuo ret <1 x i32> %splat 143746cea3eSYeting Kuo} 144746cea3eSYeting Kuo 145746cea3eSYeting Kuodefine <2 x i32> @vp_splat_v2i32(i32 %val, <2 x i1> %m, i32 zeroext %evl) { 146746cea3eSYeting Kuo; CHECK-LABEL: vp_splat_v2i32: 147746cea3eSYeting Kuo; CHECK: # %bb.0: 148746cea3eSYeting Kuo; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma 149746cea3eSYeting Kuo; CHECK-NEXT: vmv.v.x v8, a0 150746cea3eSYeting Kuo; CHECK-NEXT: ret 151746cea3eSYeting Kuo %splat = call <2 x i32> @llvm.experimental.vp.splat.v2i32(i32 %val, <2 x i1> %m, i32 %evl) 152746cea3eSYeting Kuo ret <2 x i32> %splat 153746cea3eSYeting Kuo} 154746cea3eSYeting Kuo 155746cea3eSYeting Kuodefine <4 x i32> @vp_splat_v4i32(i32 %val, <4 x i1> %m, i32 zeroext %evl) { 156746cea3eSYeting Kuo; CHECK-LABEL: vp_splat_v4i32: 157746cea3eSYeting Kuo; CHECK: # %bb.0: 158746cea3eSYeting Kuo; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma 159746cea3eSYeting Kuo; CHECK-NEXT: vmv.v.x v8, a0 160746cea3eSYeting Kuo; CHECK-NEXT: ret 161746cea3eSYeting Kuo %splat = call <4 x i32> @llvm.experimental.vp.splat.v4i32(i32 %val, <4 x i1> %m, i32 %evl) 162746cea3eSYeting Kuo ret <4 x i32> %splat 163746cea3eSYeting Kuo} 164746cea3eSYeting Kuo 165746cea3eSYeting Kuodefine <8 x i32> @vp_splat_v8i32(i32 %val, <8 x i1> %m, i32 zeroext %evl) { 166746cea3eSYeting Kuo; CHECK-LABEL: vp_splat_v8i32: 167746cea3eSYeting Kuo; CHECK: # %bb.0: 168746cea3eSYeting Kuo; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma 169746cea3eSYeting Kuo; CHECK-NEXT: vmv.v.x v8, a0 170746cea3eSYeting Kuo; CHECK-NEXT: ret 171746cea3eSYeting Kuo %splat = call <8 x i32> @llvm.experimental.vp.splat.v8i32(i32 %val, <8 x i1> %m, i32 %evl) 172746cea3eSYeting Kuo ret <8 x i32> %splat 173746cea3eSYeting Kuo} 174746cea3eSYeting Kuo 175746cea3eSYeting Kuodefine <16 x i32> @vp_splat_v16i32(i32 %val, <16 x i1> %m, i32 zeroext %evl) { 176746cea3eSYeting Kuo; CHECK-LABEL: vp_splat_v16i32: 177746cea3eSYeting Kuo; CHECK: # %bb.0: 178746cea3eSYeting Kuo; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma 179746cea3eSYeting Kuo; CHECK-NEXT: vmv.v.x v8, a0 180746cea3eSYeting Kuo; CHECK-NEXT: ret 181746cea3eSYeting Kuo %splat = call <16 x i32> @llvm.experimental.vp.splat.v16i32(i32 %val, <16 x i1> %m, i32 %evl) 182746cea3eSYeting Kuo ret <16 x i32> %splat 183746cea3eSYeting Kuo} 184746cea3eSYeting Kuo 185746cea3eSYeting Kuodefine <1 x i64> @vp_splat_v1i64(i64 %val, <1 x i1> %m, i32 zeroext %evl) { 186746cea3eSYeting Kuo; RV32-LABEL: vp_splat_v1i64: 187746cea3eSYeting Kuo; RV32: # %bb.0: 188746cea3eSYeting Kuo; RV32-NEXT: addi sp, sp, -16 189746cea3eSYeting Kuo; RV32-NEXT: .cfi_def_cfa_offset 16 190746cea3eSYeting Kuo; RV32-NEXT: sw a0, 8(sp) 1912967e5f8SAlex Bradbury; RV32-NEXT: sw a1, 12(sp) 192746cea3eSYeting Kuo; RV32-NEXT: addi a0, sp, 8 193746cea3eSYeting Kuo; RV32-NEXT: vsetivli zero, 1, e64, m1, ta, ma 194746cea3eSYeting Kuo; RV32-NEXT: vlse64.v v8, (a0), zero 195746cea3eSYeting Kuo; RV32-NEXT: addi sp, sp, 16 196*97982a8cSdlav-sc; RV32-NEXT: .cfi_def_cfa_offset 0 197746cea3eSYeting Kuo; RV32-NEXT: ret 198746cea3eSYeting Kuo; 199746cea3eSYeting Kuo; RV64-LABEL: vp_splat_v1i64: 200746cea3eSYeting Kuo; RV64: # %bb.0: 201746cea3eSYeting Kuo; RV64-NEXT: vsetvli zero, a1, e64, m1, ta, ma 202746cea3eSYeting Kuo; RV64-NEXT: vmv.v.x v8, a0 203746cea3eSYeting Kuo; RV64-NEXT: ret 204746cea3eSYeting Kuo %splat = call <1 x i64> @llvm.experimental.vp.splat.v1i64(i64 %val, <1 x i1> %m, i32 %evl) 205746cea3eSYeting Kuo ret <1 x i64> %splat 206746cea3eSYeting Kuo} 207746cea3eSYeting Kuo 208746cea3eSYeting Kuodefine <2 x i64> @vp_splat_v2i64(i64 %val, <2 x i1> %m, i32 zeroext %evl) { 209746cea3eSYeting Kuo; RV32-LABEL: vp_splat_v2i64: 210746cea3eSYeting Kuo; RV32: # %bb.0: 211746cea3eSYeting Kuo; RV32-NEXT: addi sp, sp, -16 212746cea3eSYeting Kuo; RV32-NEXT: .cfi_def_cfa_offset 16 213746cea3eSYeting Kuo; RV32-NEXT: sw a0, 8(sp) 2142967e5f8SAlex Bradbury; RV32-NEXT: sw a1, 12(sp) 215746cea3eSYeting Kuo; RV32-NEXT: addi a0, sp, 8 216746cea3eSYeting Kuo; RV32-NEXT: vsetivli zero, 2, e64, m1, ta, ma 217746cea3eSYeting Kuo; RV32-NEXT: vlse64.v v8, (a0), zero 218746cea3eSYeting Kuo; RV32-NEXT: addi sp, sp, 16 219*97982a8cSdlav-sc; RV32-NEXT: .cfi_def_cfa_offset 0 220746cea3eSYeting Kuo; RV32-NEXT: ret 221746cea3eSYeting Kuo; 222746cea3eSYeting Kuo; RV64-LABEL: vp_splat_v2i64: 223746cea3eSYeting Kuo; RV64: # %bb.0: 224746cea3eSYeting Kuo; RV64-NEXT: vsetvli zero, a1, e64, m1, ta, ma 225746cea3eSYeting Kuo; RV64-NEXT: vmv.v.x v8, a0 226746cea3eSYeting Kuo; RV64-NEXT: ret 227746cea3eSYeting Kuo %splat = call <2 x i64> @llvm.experimental.vp.splat.v2i64(i64 %val, <2 x i1> %m, i32 %evl) 228746cea3eSYeting Kuo ret <2 x i64> %splat 229746cea3eSYeting Kuo} 230746cea3eSYeting Kuo 231746cea3eSYeting Kuodefine <4 x i64> @vp_splat_v4i64(i64 %val, <4 x i1> %m, i32 zeroext %evl) { 232746cea3eSYeting Kuo; RV32-LABEL: vp_splat_v4i64: 233746cea3eSYeting Kuo; RV32: # %bb.0: 234746cea3eSYeting Kuo; RV32-NEXT: addi sp, sp, -16 235746cea3eSYeting Kuo; RV32-NEXT: .cfi_def_cfa_offset 16 236746cea3eSYeting Kuo; RV32-NEXT: sw a0, 8(sp) 2372967e5f8SAlex Bradbury; RV32-NEXT: sw a1, 12(sp) 238746cea3eSYeting Kuo; RV32-NEXT: addi a0, sp, 8 239746cea3eSYeting Kuo; RV32-NEXT: vsetivli zero, 4, e64, m2, ta, ma 240746cea3eSYeting Kuo; RV32-NEXT: vlse64.v v8, (a0), zero 241746cea3eSYeting Kuo; RV32-NEXT: addi sp, sp, 16 242*97982a8cSdlav-sc; RV32-NEXT: .cfi_def_cfa_offset 0 243746cea3eSYeting Kuo; RV32-NEXT: ret 244746cea3eSYeting Kuo; 245746cea3eSYeting Kuo; RV64-LABEL: vp_splat_v4i64: 246746cea3eSYeting Kuo; RV64: # %bb.0: 247746cea3eSYeting Kuo; RV64-NEXT: vsetvli zero, a1, e64, m2, ta, ma 248746cea3eSYeting Kuo; RV64-NEXT: vmv.v.x v8, a0 249746cea3eSYeting Kuo; RV64-NEXT: ret 250746cea3eSYeting Kuo %splat = call <4 x i64> @llvm.experimental.vp.splat.v4i64(i64 %val, <4 x i1> %m, i32 %evl) 251746cea3eSYeting Kuo ret <4 x i64> %splat 252746cea3eSYeting Kuo} 253746cea3eSYeting Kuo 254746cea3eSYeting Kuodefine <8 x i64> @vp_splat_v8i64(i64 %val, <8 x i1> %m, i32 zeroext %evl) { 255746cea3eSYeting Kuo; RV32-LABEL: vp_splat_v8i64: 256746cea3eSYeting Kuo; RV32: # %bb.0: 257746cea3eSYeting Kuo; RV32-NEXT: addi sp, sp, -16 258746cea3eSYeting Kuo; RV32-NEXT: .cfi_def_cfa_offset 16 259746cea3eSYeting Kuo; RV32-NEXT: sw a0, 8(sp) 2602967e5f8SAlex Bradbury; RV32-NEXT: sw a1, 12(sp) 261746cea3eSYeting Kuo; RV32-NEXT: addi a0, sp, 8 262746cea3eSYeting Kuo; RV32-NEXT: vsetivli zero, 8, e64, m4, ta, ma 263746cea3eSYeting Kuo; RV32-NEXT: vlse64.v v8, (a0), zero 264746cea3eSYeting Kuo; RV32-NEXT: addi sp, sp, 16 265*97982a8cSdlav-sc; RV32-NEXT: .cfi_def_cfa_offset 0 266746cea3eSYeting Kuo; RV32-NEXT: ret 267746cea3eSYeting Kuo; 268746cea3eSYeting Kuo; RV64-LABEL: vp_splat_v8i64: 269746cea3eSYeting Kuo; RV64: # %bb.0: 270746cea3eSYeting Kuo; RV64-NEXT: vsetvli zero, a1, e64, m4, ta, ma 271746cea3eSYeting Kuo; RV64-NEXT: vmv.v.x v8, a0 272746cea3eSYeting Kuo; RV64-NEXT: ret 273746cea3eSYeting Kuo %splat = call <8 x i64> @llvm.experimental.vp.splat.v8i64(i64 %val, <8 x i1> %m, i32 %evl) 274746cea3eSYeting Kuo ret <8 x i64> %splat 275746cea3eSYeting Kuo} 276746cea3eSYeting Kuo 277746cea3eSYeting Kuodefine <1 x half> @vp_splat_v1f16(half %val, <1 x i1> %m, i32 zeroext %evl) { 278746cea3eSYeting Kuo; CHECK-LABEL: vp_splat_v1f16: 279746cea3eSYeting Kuo; CHECK: # %bb.0: 280746cea3eSYeting Kuo; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma 281746cea3eSYeting Kuo; CHECK-NEXT: vfmv.v.f v8, fa0 282746cea3eSYeting Kuo; CHECK-NEXT: ret 283746cea3eSYeting Kuo %splat = call <1 x half> @llvm.experimental.vp.splat.v1f16(half %val, <1 x i1> %m, i32 %evl) 284746cea3eSYeting Kuo ret <1 x half> %splat 285746cea3eSYeting Kuo} 286746cea3eSYeting Kuo 287746cea3eSYeting Kuodefine <2 x half> @vp_splat_v2f16(half %val, <2 x i1> %m, i32 zeroext %evl) { 288746cea3eSYeting Kuo; CHECK-LABEL: vp_splat_v2f16: 289746cea3eSYeting Kuo; CHECK: # %bb.0: 290746cea3eSYeting Kuo; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma 291746cea3eSYeting Kuo; CHECK-NEXT: vfmv.v.f v8, fa0 292746cea3eSYeting Kuo; CHECK-NEXT: ret 293746cea3eSYeting Kuo %splat = call <2 x half> @llvm.experimental.vp.splat.v2f16(half %val, <2 x i1> %m, i32 %evl) 294746cea3eSYeting Kuo ret <2 x half> %splat 295746cea3eSYeting Kuo} 296746cea3eSYeting Kuo 297746cea3eSYeting Kuodefine <4 x half> @vp_splat_v4f16(half %val, <4 x i1> %m, i32 zeroext %evl) { 298746cea3eSYeting Kuo; CHECK-LABEL: vp_splat_v4f16: 299746cea3eSYeting Kuo; CHECK: # %bb.0: 300746cea3eSYeting Kuo; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma 301746cea3eSYeting Kuo; CHECK-NEXT: vfmv.v.f v8, fa0 302746cea3eSYeting Kuo; CHECK-NEXT: ret 303746cea3eSYeting Kuo %splat = call <4 x half> @llvm.experimental.vp.splat.v4f16(half %val, <4 x i1> %m, i32 %evl) 304746cea3eSYeting Kuo ret <4 x half> %splat 305746cea3eSYeting Kuo} 306746cea3eSYeting Kuo 307746cea3eSYeting Kuodefine <8 x half> @vp_splat_v8f16(half %val, <8 x i1> %m, i32 zeroext %evl) { 308746cea3eSYeting Kuo; CHECK-LABEL: vp_splat_v8f16: 309746cea3eSYeting Kuo; CHECK: # %bb.0: 310746cea3eSYeting Kuo; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma 311746cea3eSYeting Kuo; CHECK-NEXT: vfmv.v.f v8, fa0 312746cea3eSYeting Kuo; CHECK-NEXT: ret 313746cea3eSYeting Kuo %splat = call <8 x half> @llvm.experimental.vp.splat.v8f16(half %val, <8 x i1> %m, i32 %evl) 314746cea3eSYeting Kuo ret <8 x half> %splat 315746cea3eSYeting Kuo} 316746cea3eSYeting Kuo 317746cea3eSYeting Kuodefine <16 x half> @vp_splat_v16f16(half %val, <16 x i1> %m, i32 zeroext %evl) { 318746cea3eSYeting Kuo; CHECK-LABEL: vp_splat_v16f16: 319746cea3eSYeting Kuo; CHECK: # %bb.0: 320746cea3eSYeting Kuo; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma 321746cea3eSYeting Kuo; CHECK-NEXT: vfmv.v.f v8, fa0 322746cea3eSYeting Kuo; CHECK-NEXT: ret 323746cea3eSYeting Kuo %splat = call <16 x half> @llvm.experimental.vp.splat.v16f16(half %val, <16 x i1> %m, i32 %evl) 324746cea3eSYeting Kuo ret <16 x half> %splat 325746cea3eSYeting Kuo} 326746cea3eSYeting Kuo 327746cea3eSYeting Kuodefine <32 x half> @vp_splat_v32f16(half %val, <32 x i1> %m, i32 zeroext %evl) { 328746cea3eSYeting Kuo; CHECK-LABEL: vp_splat_v32f16: 329746cea3eSYeting Kuo; CHECK: # %bb.0: 330746cea3eSYeting Kuo; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma 331746cea3eSYeting Kuo; CHECK-NEXT: vfmv.v.f v8, fa0 332746cea3eSYeting Kuo; CHECK-NEXT: ret 333746cea3eSYeting Kuo %splat = call <32 x half> @llvm.experimental.vp.splat.v32f16(half %val, <32 x i1> %m, i32 %evl) 334746cea3eSYeting Kuo ret <32 x half> %splat 335746cea3eSYeting Kuo} 336746cea3eSYeting Kuo 337746cea3eSYeting Kuodefine <1 x float> @vp_splat_v1f32(float %val, <1 x i1> %m, i32 zeroext %evl) { 338746cea3eSYeting Kuo; CHECK-LABEL: vp_splat_v1f32: 339746cea3eSYeting Kuo; CHECK: # %bb.0: 340746cea3eSYeting Kuo; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma 341746cea3eSYeting Kuo; CHECK-NEXT: vfmv.v.f v8, fa0 342746cea3eSYeting Kuo; CHECK-NEXT: ret 343746cea3eSYeting Kuo %splat = call <1 x float> @llvm.experimental.vp.splat.v1f32(float %val, <1 x i1> %m, i32 %evl) 344746cea3eSYeting Kuo ret <1 x float> %splat 345746cea3eSYeting Kuo} 346746cea3eSYeting Kuo 347746cea3eSYeting Kuodefine <2 x float> @vp_splat_v2f32(float %val, <2 x i1> %m, i32 zeroext %evl) { 348746cea3eSYeting Kuo; CHECK-LABEL: vp_splat_v2f32: 349746cea3eSYeting Kuo; CHECK: # %bb.0: 350746cea3eSYeting Kuo; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma 351746cea3eSYeting Kuo; CHECK-NEXT: vfmv.v.f v8, fa0 352746cea3eSYeting Kuo; CHECK-NEXT: ret 353746cea3eSYeting Kuo %splat = call <2 x float> @llvm.experimental.vp.splat.v2f32(float %val, <2 x i1> %m, i32 %evl) 354746cea3eSYeting Kuo ret <2 x float> %splat 355746cea3eSYeting Kuo} 356746cea3eSYeting Kuo 357746cea3eSYeting Kuodefine <4 x float> @vp_splat_v4f32(float %val, <4 x i1> %m, i32 zeroext %evl) { 358746cea3eSYeting Kuo; CHECK-LABEL: vp_splat_v4f32: 359746cea3eSYeting Kuo; CHECK: # %bb.0: 360746cea3eSYeting Kuo; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma 361746cea3eSYeting Kuo; CHECK-NEXT: vfmv.v.f v8, fa0 362746cea3eSYeting Kuo; CHECK-NEXT: ret 363746cea3eSYeting Kuo %splat = call <4 x float> @llvm.experimental.vp.splat.v4f32(float %val, <4 x i1> %m, i32 %evl) 364746cea3eSYeting Kuo ret <4 x float> %splat 365746cea3eSYeting Kuo} 366746cea3eSYeting Kuo 367746cea3eSYeting Kuodefine <8 x float> @vp_splat_v8f32(float %val, <8 x i1> %m, i32 zeroext %evl) { 368746cea3eSYeting Kuo; CHECK-LABEL: vp_splat_v8f32: 369746cea3eSYeting Kuo; CHECK: # %bb.0: 370746cea3eSYeting Kuo; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma 371746cea3eSYeting Kuo; CHECK-NEXT: vfmv.v.f v8, fa0 372746cea3eSYeting Kuo; CHECK-NEXT: ret 373746cea3eSYeting Kuo %splat = call <8 x float> @llvm.experimental.vp.splat.v8f32(float %val, <8 x i1> %m, i32 %evl) 374746cea3eSYeting Kuo ret <8 x float> %splat 375746cea3eSYeting Kuo} 376746cea3eSYeting Kuo 377746cea3eSYeting Kuodefine <16 x float> @vp_splat_v16f32(float %val, <16 x i1> %m, i32 zeroext %evl) { 378746cea3eSYeting Kuo; CHECK-LABEL: vp_splat_v16f32: 379746cea3eSYeting Kuo; CHECK: # %bb.0: 380746cea3eSYeting Kuo; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma 381746cea3eSYeting Kuo; CHECK-NEXT: vfmv.v.f v8, fa0 382746cea3eSYeting Kuo; CHECK-NEXT: ret 383746cea3eSYeting Kuo %splat = call <16 x float> @llvm.experimental.vp.splat.v16f32(float %val, <16 x i1> %m, i32 %evl) 384746cea3eSYeting Kuo ret <16 x float> %splat 385746cea3eSYeting Kuo} 386746cea3eSYeting Kuo 387746cea3eSYeting Kuodefine <1 x double> @vp_splat_v1f64(double %val, <1 x i1> %m, i32 zeroext %evl) { 388746cea3eSYeting Kuo; CHECK-LABEL: vp_splat_v1f64: 389746cea3eSYeting Kuo; CHECK: # %bb.0: 390746cea3eSYeting Kuo; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma 391746cea3eSYeting Kuo; CHECK-NEXT: vfmv.v.f v8, fa0 392746cea3eSYeting Kuo; CHECK-NEXT: ret 393746cea3eSYeting Kuo %splat = call <1 x double> @llvm.experimental.vp.splat.v1f64(double %val, <1 x i1> %m, i32 %evl) 394746cea3eSYeting Kuo ret <1 x double> %splat 395746cea3eSYeting Kuo} 396746cea3eSYeting Kuo 397746cea3eSYeting Kuodefine <2 x double> @vp_splat_v2f64(double %val, <2 x i1> %m, i32 zeroext %evl) { 398746cea3eSYeting Kuo; CHECK-LABEL: vp_splat_v2f64: 399746cea3eSYeting Kuo; CHECK: # %bb.0: 400746cea3eSYeting Kuo; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma 401746cea3eSYeting Kuo; CHECK-NEXT: vfmv.v.f v8, fa0 402746cea3eSYeting Kuo; CHECK-NEXT: ret 403746cea3eSYeting Kuo %splat = call <2 x double> @llvm.experimental.vp.splat.v2f64(double %val, <2 x i1> %m, i32 %evl) 404746cea3eSYeting Kuo ret <2 x double> %splat 405746cea3eSYeting Kuo} 406746cea3eSYeting Kuo 407746cea3eSYeting Kuodefine <4 x double> @vp_splat_v4f64(double %val, <4 x i1> %m, i32 zeroext %evl) { 408746cea3eSYeting Kuo; CHECK-LABEL: vp_splat_v4f64: 409746cea3eSYeting Kuo; CHECK: # %bb.0: 410746cea3eSYeting Kuo; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma 411746cea3eSYeting Kuo; CHECK-NEXT: vfmv.v.f v8, fa0 412746cea3eSYeting Kuo; CHECK-NEXT: ret 413746cea3eSYeting Kuo %splat = call <4 x double> @llvm.experimental.vp.splat.v4f64(double %val, <4 x i1> %m, i32 %evl) 414746cea3eSYeting Kuo ret <4 x double> %splat 415746cea3eSYeting Kuo} 416746cea3eSYeting Kuo 417746cea3eSYeting Kuodefine <8 x double> @vp_splat_v8f64(double %val, <8 x i1> %m, i32 zeroext %evl) { 418746cea3eSYeting Kuo; CHECK-LABEL: vp_splat_v8f64: 419746cea3eSYeting Kuo; CHECK: # %bb.0: 420746cea3eSYeting Kuo; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma 421746cea3eSYeting Kuo; CHECK-NEXT: vfmv.v.f v8, fa0 422746cea3eSYeting Kuo; CHECK-NEXT: ret 423746cea3eSYeting Kuo %splat = call <8 x double> @llvm.experimental.vp.splat.v8f64(double %val, <8 x i1> %m, i32 %evl) 424746cea3eSYeting Kuo ret <8 x double> %splat 425746cea3eSYeting Kuo} 426746cea3eSYeting Kuo 427746cea3eSYeting Kuodefine <16 x i31> @vp_splat_v16i31(i31 %val, <16 x i1> %m, i32 zeroext %evl) { 428746cea3eSYeting Kuo; CHECK-LABEL: vp_splat_v16i31: 429746cea3eSYeting Kuo; CHECK: # %bb.0: 430746cea3eSYeting Kuo; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma 431746cea3eSYeting Kuo; CHECK-NEXT: vmv.v.x v8, a0 432746cea3eSYeting Kuo; CHECK-NEXT: ret 433746cea3eSYeting Kuo %splat = call <16 x i31> @llvm.experimental.vp.splat.v16i31(i31 %val, <16 x i1> %m, i32 %evl) 434746cea3eSYeting Kuo ret <16 x i31> %splat 435746cea3eSYeting Kuo} 436746cea3eSYeting Kuo 437746cea3eSYeting Kuodefine <15 x i32> @vp_splat_v15i32(i32 %val, <15 x i1> %m, i32 zeroext %evl) { 438746cea3eSYeting Kuo; CHECK-LABEL: vp_splat_v15i32: 439746cea3eSYeting Kuo; CHECK: # %bb.0: 440746cea3eSYeting Kuo; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma 441746cea3eSYeting Kuo; CHECK-NEXT: vmv.v.x v8, a0 442746cea3eSYeting Kuo; CHECK-NEXT: ret 443746cea3eSYeting Kuo %splat = call <15 x i32> @llvm.experimental.vp.splat.v15i32(i32 %val, <15 x i1> %m, i32 %evl) 444746cea3eSYeting Kuo ret <15 x i32> %splat 445746cea3eSYeting Kuo} 446746cea3eSYeting Kuo 447746cea3eSYeting Kuo; Split case. 448746cea3eSYeting Kuodefine <32 x i32> @vp_splat_v32i32(i32 %val, <32 x i1> %m, i32 zeroext %evl) { 449746cea3eSYeting Kuo; CHECK-LABEL: vp_splat_v32i32: 450746cea3eSYeting Kuo; CHECK: # %bb.0: 451746cea3eSYeting Kuo; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma 452746cea3eSYeting Kuo; CHECK-NEXT: vmv.v.x v8, a0 453746cea3eSYeting Kuo; CHECK-NEXT: ret 454746cea3eSYeting Kuo %splat = call <32 x i32> @llvm.experimental.vp.splat.v32i32(i32 %val, <32 x i1> %m, i32 %evl) 455746cea3eSYeting Kuo ret <32 x i32> %splat 456746cea3eSYeting Kuo} 457