1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; RUN: llc -mtriple=riscv32 -mattr=+experimental-v -riscv-v-vector-bits-min=128 -riscv-v-fixed-length-vector-lmul-max=1 -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,CHECK-RV32,RV32-LMULMAX1 3; RUN: llc -mtriple=riscv64 -mattr=+experimental-v -riscv-v-vector-bits-min=128 -riscv-v-fixed-length-vector-lmul-max=1 -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,CHECK-RV64,RV64-LMULMAX1 4; RUN: llc -mtriple=riscv32 -mattr=+experimental-v -riscv-v-vector-bits-min=128 -riscv-v-fixed-length-vector-lmul-max=2 -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,CHECK-RV32,RV32-LMULMAX2 5; RUN: llc -mtriple=riscv64 -mattr=+experimental-v -riscv-v-vector-bits-min=128 -riscv-v-fixed-length-vector-lmul-max=2 -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,CHECK-RV64,RV64-LMULMAX2 6; RUN: llc -mtriple=riscv32 -mattr=+experimental-v -riscv-v-vector-bits-min=128 -riscv-v-fixed-length-vector-lmul-max=4 -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,CHECK-RV32,RV32-LMULMAX4 7; RUN: llc -mtriple=riscv64 -mattr=+experimental-v -riscv-v-vector-bits-min=128 -riscv-v-fixed-length-vector-lmul-max=4 -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,CHECK-RV64,RV64-LMULMAX4 8; RUN: llc -mtriple=riscv32 -mattr=+experimental-v -riscv-v-vector-bits-min=128 -riscv-v-fixed-length-vector-lmul-max=8 -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,CHECK-RV32,RV32-LMULMAX8 9; RUN: llc -mtriple=riscv64 -mattr=+experimental-v -riscv-v-vector-bits-min=128 -riscv-v-fixed-length-vector-lmul-max=8 -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,CHECK-RV64,RV64-LMULMAX8 10 11define <1 x i1> @buildvec_mask_nonconst_v1i1(i1 %x) { 12; CHECK-LABEL: buildvec_mask_nonconst_v1i1: 13; CHECK: # %bb.0: 14; CHECK-NEXT: andi a0, a0, 1 15; CHECK-NEXT: vsetivli zero, 1, e8, mf8, ta, mu 16; CHECK-NEXT: vmv.v.x v25, a0 17; CHECK-NEXT: vmsne.vi v0, v25, 0 18; CHECK-NEXT: ret 19 %1 = insertelement <1 x i1> undef, i1 %x, i32 0 20 ret <1 x i1> %1 21} 22 23define <1 x i1> @buildvec_mask_optsize_nonconst_v1i1(i1 %x) optsize { 24; CHECK-LABEL: buildvec_mask_optsize_nonconst_v1i1: 25; CHECK: # %bb.0: 26; CHECK-NEXT: andi a0, a0, 1 27; CHECK-NEXT: vsetivli zero, 1, e8, mf8, ta, mu 28; CHECK-NEXT: vmv.v.x v25, a0 29; CHECK-NEXT: vmsne.vi v0, v25, 0 30; CHECK-NEXT: ret 31 %1 = insertelement <1 x i1> undef, i1 %x, i32 0 32 ret <1 x i1> %1 33} 34 35define <2 x i1> @buildvec_mask_nonconst_v2i1(i1 %x, i1 %y) { 36; CHECK-LABEL: buildvec_mask_nonconst_v2i1: 37; CHECK: # %bb.0: 38; CHECK-NEXT: vsetivli zero, 2, e8, mf8, ta, mu 39; CHECK-NEXT: vmv.v.x v25, a1 40; CHECK-NEXT: vsetvli zero, zero, e8, mf8, tu, mu 41; CHECK-NEXT: vmv.s.x v25, a0 42; CHECK-NEXT: vsetvli zero, zero, e8, mf8, ta, mu 43; CHECK-NEXT: vand.vi v25, v25, 1 44; CHECK-NEXT: vmsne.vi v0, v25, 0 45; CHECK-NEXT: ret 46 %1 = insertelement <2 x i1> undef, i1 %x, i32 0 47 %2 = insertelement <2 x i1> %1, i1 %y, i32 1 48 ret <2 x i1> %2 49} 50 51; FIXME: optsize isn't smaller than the code above 52define <2 x i1> @buildvec_mask_optsize_nonconst_v2i1(i1 %x, i1 %y) optsize { 53; CHECK-LABEL: buildvec_mask_optsize_nonconst_v2i1: 54; CHECK: # %bb.0: 55; CHECK-NEXT: addi sp, sp, -16 56; CHECK-NEXT: .cfi_def_cfa_offset 16 57; CHECK-NEXT: sb a1, 15(sp) 58; CHECK-NEXT: sb a0, 14(sp) 59; CHECK-NEXT: vsetivli zero, 2, e8, mf8, ta, mu 60; CHECK-NEXT: addi a0, sp, 14 61; CHECK-NEXT: vle8.v v25, (a0) 62; CHECK-NEXT: vand.vi v25, v25, 1 63; CHECK-NEXT: vmsne.vi v0, v25, 0 64; CHECK-NEXT: addi sp, sp, 16 65; CHECK-NEXT: ret 66 %1 = insertelement <2 x i1> undef, i1 %x, i32 0 67 %2 = insertelement <2 x i1> %1, i1 %y, i32 1 68 ret <2 x i1> %2 69} 70 71define <3 x i1> @buildvec_mask_v1i1() { 72; CHECK-LABEL: buildvec_mask_v1i1: 73; CHECK: # %bb.0: 74; CHECK-NEXT: addi a0, zero, 2 75; CHECK-NEXT: vsetivli zero, 1, e8, mf8, ta, mu 76; CHECK-NEXT: vmv.s.x v0, a0 77; CHECK-NEXT: ret 78 ret <3 x i1> <i1 0, i1 1, i1 0> 79} 80 81define <3 x i1> @buildvec_mask_optsize_v1i1() optsize { 82; CHECK-LABEL: buildvec_mask_optsize_v1i1: 83; CHECK: # %bb.0: 84; CHECK-NEXT: addi a0, zero, 2 85; CHECK-NEXT: vsetivli zero, 1, e8, mf8, ta, mu 86; CHECK-NEXT: vmv.s.x v0, a0 87; CHECK-NEXT: ret 88 ret <3 x i1> <i1 0, i1 1, i1 0> 89} 90 91define <4 x i1> @buildvec_mask_v4i1() { 92; CHECK-LABEL: buildvec_mask_v4i1: 93; CHECK: # %bb.0: 94; CHECK-NEXT: addi a0, zero, 6 95; CHECK-NEXT: vsetivli zero, 1, e8, mf8, ta, mu 96; CHECK-NEXT: vmv.s.x v0, a0 97; CHECK-NEXT: ret 98 ret <4 x i1> <i1 0, i1 1, i1 1, i1 0> 99} 100 101define <4 x i1> @buildvec_mask_nonconst_v4i1(i1 %x, i1 %y) { 102; CHECK-LABEL: buildvec_mask_nonconst_v4i1: 103; CHECK: # %bb.0: 104; CHECK-NEXT: addi a2, zero, 3 105; CHECK-NEXT: vsetivli zero, 1, e8, mf8, ta, mu 106; CHECK-NEXT: vmv.s.x v0, a2 107; CHECK-NEXT: vsetivli zero, 4, e8, mf4, ta, mu 108; CHECK-NEXT: vmv.v.x v25, a1 109; CHECK-NEXT: vmerge.vxm v25, v25, a0, v0 110; CHECK-NEXT: vand.vi v25, v25, 1 111; CHECK-NEXT: vmsne.vi v0, v25, 0 112; CHECK-NEXT: ret 113 %1 = insertelement <4 x i1> undef, i1 %x, i32 0 114 %2 = insertelement <4 x i1> %1, i1 %x, i32 1 115 %3 = insertelement <4 x i1> %2, i1 %y, i32 2 116 %4 = insertelement <4 x i1> %3, i1 %y, i32 3 117 ret <4 x i1> %4 118} 119 120; FIXME: optsize isn't smaller than the code above 121define <4 x i1> @buildvec_mask_optsize_nonconst_v4i1(i1 %x, i1 %y) optsize { 122; CHECK-LABEL: buildvec_mask_optsize_nonconst_v4i1: 123; CHECK: # %bb.0: 124; CHECK-NEXT: addi sp, sp, -16 125; CHECK-NEXT: .cfi_def_cfa_offset 16 126; CHECK-NEXT: sb a1, 15(sp) 127; CHECK-NEXT: sb a1, 14(sp) 128; CHECK-NEXT: sb a0, 13(sp) 129; CHECK-NEXT: sb a0, 12(sp) 130; CHECK-NEXT: vsetivli zero, 4, e8, mf4, ta, mu 131; CHECK-NEXT: addi a0, sp, 12 132; CHECK-NEXT: vle8.v v25, (a0) 133; CHECK-NEXT: vand.vi v25, v25, 1 134; CHECK-NEXT: vmsne.vi v0, v25, 0 135; CHECK-NEXT: addi sp, sp, 16 136; CHECK-NEXT: ret 137 %1 = insertelement <4 x i1> undef, i1 %x, i32 0 138 %2 = insertelement <4 x i1> %1, i1 %x, i32 1 139 %3 = insertelement <4 x i1> %2, i1 %y, i32 2 140 %4 = insertelement <4 x i1> %3, i1 %y, i32 3 141 ret <4 x i1> %4 142} 143 144define <4 x i1> @buildvec_mask_nonconst_v4i1_2(i1 %x, i1 %y) { 145; CHECK-LABEL: buildvec_mask_nonconst_v4i1_2: 146; CHECK: # %bb.0: 147; CHECK-NEXT: addi sp, sp, -16 148; CHECK-NEXT: .cfi_def_cfa_offset 16 149; CHECK-NEXT: sb a1, 15(sp) 150; CHECK-NEXT: addi a1, zero, 1 151; CHECK-NEXT: sb a1, 14(sp) 152; CHECK-NEXT: sb a0, 13(sp) 153; CHECK-NEXT: sb zero, 12(sp) 154; CHECK-NEXT: vsetivli zero, 4, e8, mf4, ta, mu 155; CHECK-NEXT: addi a0, sp, 12 156; CHECK-NEXT: vle8.v v25, (a0) 157; CHECK-NEXT: vand.vi v25, v25, 1 158; CHECK-NEXT: vmsne.vi v0, v25, 0 159; CHECK-NEXT: addi sp, sp, 16 160; CHECK-NEXT: ret 161 %1 = insertelement <4 x i1> undef, i1 0, i32 0 162 %2 = insertelement <4 x i1> %1, i1 %x, i32 1 163 %3 = insertelement <4 x i1> %2, i1 1, i32 2 164 %4 = insertelement <4 x i1> %3, i1 %y, i32 3 165 ret <4 x i1> %4 166} 167 168define <8 x i1> @buildvec_mask_v8i1() { 169; CHECK-LABEL: buildvec_mask_v8i1: 170; CHECK: # %bb.0: 171; CHECK-NEXT: addi a0, zero, 182 172; CHECK-NEXT: vsetivli zero, 1, e8, mf8, ta, mu 173; CHECK-NEXT: vmv.s.x v0, a0 174; CHECK-NEXT: ret 175 ret <8 x i1> <i1 0, i1 1, i1 1, i1 0, i1 1, i1 1, i1 0, i1 1> 176} 177 178define <8 x i1> @buildvec_mask_nonconst_v8i1(i1 %x, i1 %y) { 179; CHECK-LABEL: buildvec_mask_nonconst_v8i1: 180; CHECK: # %bb.0: 181; CHECK-NEXT: addi a2, zero, 19 182; CHECK-NEXT: vsetivli zero, 1, e8, mf8, ta, mu 183; CHECK-NEXT: vmv.s.x v0, a2 184; CHECK-NEXT: vsetivli zero, 8, e8, mf2, ta, mu 185; CHECK-NEXT: vmv.v.x v25, a1 186; CHECK-NEXT: vmerge.vxm v25, v25, a0, v0 187; CHECK-NEXT: vand.vi v25, v25, 1 188; CHECK-NEXT: vmsne.vi v0, v25, 0 189; CHECK-NEXT: ret 190 %1 = insertelement <8 x i1> undef, i1 %x, i32 0 191 %2 = insertelement <8 x i1> %1, i1 %x, i32 1 192 %3 = insertelement <8 x i1> %2, i1 %y, i32 2 193 %4 = insertelement <8 x i1> %3, i1 %y, i32 3 194 %5 = insertelement <8 x i1> %4, i1 %x, i32 4 195 %6 = insertelement <8 x i1> %5, i1 %y, i32 5 196 %7 = insertelement <8 x i1> %6, i1 %y, i32 6 197 %8 = insertelement <8 x i1> %7, i1 %y, i32 7 198 ret <8 x i1> %8 199} 200 201define <8 x i1> @buildvec_mask_nonconst_v8i1_2(i1 %x, i1 %y, i1 %z, i1 %w) { 202; CHECK-LABEL: buildvec_mask_nonconst_v8i1_2: 203; CHECK: # %bb.0: 204; CHECK-NEXT: addi sp, sp, -16 205; CHECK-NEXT: .cfi_def_cfa_offset 16 206; CHECK-NEXT: sb a2, 15(sp) 207; CHECK-NEXT: sb zero, 14(sp) 208; CHECK-NEXT: sb a3, 13(sp) 209; CHECK-NEXT: sb a0, 12(sp) 210; CHECK-NEXT: sb a1, 11(sp) 211; CHECK-NEXT: addi a1, zero, 1 212; CHECK-NEXT: sb a1, 10(sp) 213; CHECK-NEXT: sb a0, 9(sp) 214; CHECK-NEXT: sb a0, 8(sp) 215; CHECK-NEXT: vsetivli zero, 8, e8, mf2, ta, mu 216; CHECK-NEXT: addi a0, sp, 8 217; CHECK-NEXT: vle8.v v25, (a0) 218; CHECK-NEXT: vand.vi v25, v25, 1 219; CHECK-NEXT: vmsne.vi v0, v25, 0 220; CHECK-NEXT: addi sp, sp, 16 221; CHECK-NEXT: ret 222 %1 = insertelement <8 x i1> undef, i1 %x, i32 0 223 %2 = insertelement <8 x i1> %1, i1 %x, i32 1 224 %3 = insertelement <8 x i1> %2, i1 1, i32 2 225 %4 = insertelement <8 x i1> %3, i1 %y, i32 3 226 %5 = insertelement <8 x i1> %4, i1 %x, i32 4 227 %6 = insertelement <8 x i1> %5, i1 %w, i32 5 228 %7 = insertelement <8 x i1> %6, i1 0, i32 6 229 %8 = insertelement <8 x i1> %7, i1 %z, i32 7 230 ret <8 x i1> %8 231} 232 233define <8 x i1> @buildvec_mask_optsize_nonconst_v8i1_2(i1 %x, i1 %y, i1 %z, i1 %w) optsize { 234; CHECK-LABEL: buildvec_mask_optsize_nonconst_v8i1_2: 235; CHECK: # %bb.0: 236; CHECK-NEXT: addi sp, sp, -16 237; CHECK-NEXT: .cfi_def_cfa_offset 16 238; CHECK-NEXT: sb a2, 15(sp) 239; CHECK-NEXT: sb zero, 14(sp) 240; CHECK-NEXT: sb a3, 13(sp) 241; CHECK-NEXT: sb a0, 12(sp) 242; CHECK-NEXT: sb a1, 11(sp) 243; CHECK-NEXT: addi a1, zero, 1 244; CHECK-NEXT: sb a1, 10(sp) 245; CHECK-NEXT: sb a0, 9(sp) 246; CHECK-NEXT: sb a0, 8(sp) 247; CHECK-NEXT: vsetivli zero, 8, e8, mf2, ta, mu 248; CHECK-NEXT: addi a0, sp, 8 249; CHECK-NEXT: vle8.v v25, (a0) 250; CHECK-NEXT: vand.vi v25, v25, 1 251; CHECK-NEXT: vmsne.vi v0, v25, 0 252; CHECK-NEXT: addi sp, sp, 16 253; CHECK-NEXT: ret 254 %1 = insertelement <8 x i1> undef, i1 %x, i32 0 255 %2 = insertelement <8 x i1> %1, i1 %x, i32 1 256 %3 = insertelement <8 x i1> %2, i1 1, i32 2 257 %4 = insertelement <8 x i1> %3, i1 %y, i32 3 258 %5 = insertelement <8 x i1> %4, i1 %x, i32 4 259 %6 = insertelement <8 x i1> %5, i1 %w, i32 5 260 %7 = insertelement <8 x i1> %6, i1 0, i32 6 261 %8 = insertelement <8 x i1> %7, i1 %z, i32 7 262 ret <8 x i1> %8 263} 264 265define <8 x i1> @buildvec_mask_optsize_nonconst_v8i1(i1 %x, i1 %y) optsize { 266; CHECK-LABEL: buildvec_mask_optsize_nonconst_v8i1: 267; CHECK: # %bb.0: 268; CHECK-NEXT: addi sp, sp, -16 269; CHECK-NEXT: .cfi_def_cfa_offset 16 270; CHECK-NEXT: sb a1, 15(sp) 271; CHECK-NEXT: sb a1, 14(sp) 272; CHECK-NEXT: sb a1, 13(sp) 273; CHECK-NEXT: sb a0, 12(sp) 274; CHECK-NEXT: sb a1, 11(sp) 275; CHECK-NEXT: sb a1, 10(sp) 276; CHECK-NEXT: sb a0, 9(sp) 277; CHECK-NEXT: sb a0, 8(sp) 278; CHECK-NEXT: vsetivli zero, 8, e8, mf2, ta, mu 279; CHECK-NEXT: addi a0, sp, 8 280; CHECK-NEXT: vle8.v v25, (a0) 281; CHECK-NEXT: vand.vi v25, v25, 1 282; CHECK-NEXT: vmsne.vi v0, v25, 0 283; CHECK-NEXT: addi sp, sp, 16 284; CHECK-NEXT: ret 285 %1 = insertelement <8 x i1> undef, i1 %x, i32 0 286 %2 = insertelement <8 x i1> %1, i1 %x, i32 1 287 %3 = insertelement <8 x i1> %2, i1 %y, i32 2 288 %4 = insertelement <8 x i1> %3, i1 %y, i32 3 289 %5 = insertelement <8 x i1> %4, i1 %x, i32 4 290 %6 = insertelement <8 x i1> %5, i1 %y, i32 5 291 %7 = insertelement <8 x i1> %6, i1 %y, i32 6 292 %8 = insertelement <8 x i1> %7, i1 %y, i32 7 293 ret <8 x i1> %8 294} 295 296define <10 x i1> @buildvec_mask_v10i1() { 297; CHECK-LABEL: buildvec_mask_v10i1: 298; CHECK: # %bb.0: 299; CHECK-NEXT: addi a0, zero, 949 300; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, mu 301; CHECK-NEXT: vmv.s.x v0, a0 302; CHECK-NEXT: ret 303 ret <10 x i1> <i1 1, i1 0, i1 1, i1 0, i1 1, i1 1, i1 0, i1 1, i1 1, i1 1> 304} 305 306define <16 x i1> @buildvec_mask_v16i1() { 307; CHECK-RV32-LABEL: buildvec_mask_v16i1: 308; CHECK-RV32: # %bb.0: 309; CHECK-RV32-NEXT: lui a0, 11 310; CHECK-RV32-NEXT: addi a0, a0, 1718 311; CHECK-RV32-NEXT: vsetivli zero, 1, e16, mf4, ta, mu 312; CHECK-RV32-NEXT: vmv.s.x v0, a0 313; CHECK-RV32-NEXT: ret 314; 315; CHECK-RV64-LABEL: buildvec_mask_v16i1: 316; CHECK-RV64: # %bb.0: 317; CHECK-RV64-NEXT: lui a0, 11 318; CHECK-RV64-NEXT: addiw a0, a0, 1718 319; CHECK-RV64-NEXT: vsetivli zero, 1, e16, mf4, ta, mu 320; CHECK-RV64-NEXT: vmv.s.x v0, a0 321; CHECK-RV64-NEXT: ret 322 ret <16 x i1> <i1 0, i1 1, i1 1, i1 0, i1 1, i1 1, i1 0, i1 1, i1 0, i1 1, i1 1, i1 0, i1 1, i1 1, i1 0, i1 1> 323} 324 325define <16 x i1> @buildvec_mask_v16i1_undefs() { 326; CHECK-LABEL: buildvec_mask_v16i1_undefs: 327; CHECK: # %bb.0: 328; CHECK-NEXT: addi a0, zero, 1722 329; CHECK-NEXT: vsetivli zero, 1, e16, mf4, ta, mu 330; CHECK-NEXT: vmv.s.x v0, a0 331; CHECK-NEXT: ret 332 ret <16 x i1> <i1 undef, i1 1, i1 undef, i1 1, i1 1, i1 1, i1 0, i1 1, i1 0, i1 1, i1 1, i1 undef, i1 undef, i1 undef, i1 undef, i1 undef> 333} 334 335define <32 x i1> @buildvec_mask_v32i1() { 336; RV32-LMULMAX1-LABEL: buildvec_mask_v32i1: 337; RV32-LMULMAX1: # %bb.0: 338; RV32-LMULMAX1-NEXT: addi a0, zero, 1776 339; RV32-LMULMAX1-NEXT: vsetivli zero, 1, e16, mf4, ta, mu 340; RV32-LMULMAX1-NEXT: vmv.s.x v0, a0 341; RV32-LMULMAX1-NEXT: lui a0, 11 342; RV32-LMULMAX1-NEXT: addi a0, a0, 1718 343; RV32-LMULMAX1-NEXT: vmv.s.x v8, a0 344; RV32-LMULMAX1-NEXT: ret 345; 346; RV64-LMULMAX1-LABEL: buildvec_mask_v32i1: 347; RV64-LMULMAX1: # %bb.0: 348; RV64-LMULMAX1-NEXT: addi a0, zero, 1776 349; RV64-LMULMAX1-NEXT: vsetivli zero, 1, e16, mf4, ta, mu 350; RV64-LMULMAX1-NEXT: vmv.s.x v0, a0 351; RV64-LMULMAX1-NEXT: lui a0, 11 352; RV64-LMULMAX1-NEXT: addiw a0, a0, 1718 353; RV64-LMULMAX1-NEXT: vmv.s.x v8, a0 354; RV64-LMULMAX1-NEXT: ret 355; 356; RV32-LMULMAX2-LABEL: buildvec_mask_v32i1: 357; RV32-LMULMAX2: # %bb.0: 358; RV32-LMULMAX2-NEXT: lui a0, 748384 359; RV32-LMULMAX2-NEXT: addi a0, a0, 1776 360; RV32-LMULMAX2-NEXT: vsetivli zero, 1, e32, mf2, ta, mu 361; RV32-LMULMAX2-NEXT: vmv.s.x v0, a0 362; RV32-LMULMAX2-NEXT: ret 363; 364; RV64-LMULMAX2-LABEL: buildvec_mask_v32i1: 365; RV64-LMULMAX2: # %bb.0: 366; RV64-LMULMAX2-NEXT: lui a0, 748384 367; RV64-LMULMAX2-NEXT: addiw a0, a0, 1776 368; RV64-LMULMAX2-NEXT: vsetivli zero, 1, e32, mf2, ta, mu 369; RV64-LMULMAX2-NEXT: vmv.s.x v0, a0 370; RV64-LMULMAX2-NEXT: ret 371; 372; RV32-LMULMAX4-LABEL: buildvec_mask_v32i1: 373; RV32-LMULMAX4: # %bb.0: 374; RV32-LMULMAX4-NEXT: lui a0, 748384 375; RV32-LMULMAX4-NEXT: addi a0, a0, 1776 376; RV32-LMULMAX4-NEXT: vsetivli zero, 1, e32, mf2, ta, mu 377; RV32-LMULMAX4-NEXT: vmv.s.x v0, a0 378; RV32-LMULMAX4-NEXT: ret 379; 380; RV64-LMULMAX4-LABEL: buildvec_mask_v32i1: 381; RV64-LMULMAX4: # %bb.0: 382; RV64-LMULMAX4-NEXT: lui a0, 748384 383; RV64-LMULMAX4-NEXT: addiw a0, a0, 1776 384; RV64-LMULMAX4-NEXT: vsetivli zero, 1, e32, mf2, ta, mu 385; RV64-LMULMAX4-NEXT: vmv.s.x v0, a0 386; RV64-LMULMAX4-NEXT: ret 387; 388; RV32-LMULMAX8-LABEL: buildvec_mask_v32i1: 389; RV32-LMULMAX8: # %bb.0: 390; RV32-LMULMAX8-NEXT: lui a0, 748384 391; RV32-LMULMAX8-NEXT: addi a0, a0, 1776 392; RV32-LMULMAX8-NEXT: vsetivli zero, 1, e32, mf2, ta, mu 393; RV32-LMULMAX8-NEXT: vmv.s.x v0, a0 394; RV32-LMULMAX8-NEXT: ret 395; 396; RV64-LMULMAX8-LABEL: buildvec_mask_v32i1: 397; RV64-LMULMAX8: # %bb.0: 398; RV64-LMULMAX8-NEXT: lui a0, 748384 399; RV64-LMULMAX8-NEXT: addiw a0, a0, 1776 400; RV64-LMULMAX8-NEXT: vsetivli zero, 1, e32, mf2, ta, mu 401; RV64-LMULMAX8-NEXT: vmv.s.x v0, a0 402; RV64-LMULMAX8-NEXT: ret 403 ret <32 x i1> <i1 0, i1 0, i1 0, i1 0, i1 1, i1 1, i1 1, i1 1, i1 0, i1 1, i1 1, i1 0, i1 0, i1 0, i1 0, i1 0, i1 0, i1 1, i1 1, i1 0, i1 1, i1 1, i1 0, i1 1, i1 0, i1 1, i1 1, i1 0, i1 1, i1 1, i1 0, i1 1> 404} 405 406define <64 x i1> @buildvec_mask_v64i1() { 407; RV32-LMULMAX1-LABEL: buildvec_mask_v64i1: 408; RV32-LMULMAX1: # %bb.0: 409; RV32-LMULMAX1-NEXT: addi a0, zero, 1776 410; RV32-LMULMAX1-NEXT: vsetivli zero, 1, e16, mf4, ta, mu 411; RV32-LMULMAX1-NEXT: vmv.s.x v0, a0 412; RV32-LMULMAX1-NEXT: lui a0, 4 413; RV32-LMULMAX1-NEXT: addi a0, a0, -1793 414; RV32-LMULMAX1-NEXT: vmv.s.x v9, a0 415; RV32-LMULMAX1-NEXT: lui a0, 11 416; RV32-LMULMAX1-NEXT: addi a0, a0, 1718 417; RV32-LMULMAX1-NEXT: vmv.s.x v8, a0 418; RV32-LMULMAX1-NEXT: vmv1r.v v10, v8 419; RV32-LMULMAX1-NEXT: ret 420; 421; RV64-LMULMAX1-LABEL: buildvec_mask_v64i1: 422; RV64-LMULMAX1: # %bb.0: 423; RV64-LMULMAX1-NEXT: addi a0, zero, 1776 424; RV64-LMULMAX1-NEXT: vsetivli zero, 1, e16, mf4, ta, mu 425; RV64-LMULMAX1-NEXT: vmv.s.x v0, a0 426; RV64-LMULMAX1-NEXT: lui a0, 4 427; RV64-LMULMAX1-NEXT: addiw a0, a0, -1793 428; RV64-LMULMAX1-NEXT: vmv.s.x v9, a0 429; RV64-LMULMAX1-NEXT: lui a0, 11 430; RV64-LMULMAX1-NEXT: addiw a0, a0, 1718 431; RV64-LMULMAX1-NEXT: vmv.s.x v8, a0 432; RV64-LMULMAX1-NEXT: vmv1r.v v10, v8 433; RV64-LMULMAX1-NEXT: ret 434; 435; RV32-LMULMAX2-LABEL: buildvec_mask_v64i1: 436; RV32-LMULMAX2: # %bb.0: 437; RV32-LMULMAX2-NEXT: lui a0, 748384 438; RV32-LMULMAX2-NEXT: addi a0, a0, 1776 439; RV32-LMULMAX2-NEXT: vsetivli zero, 1, e32, mf2, ta, mu 440; RV32-LMULMAX2-NEXT: vmv.s.x v0, a0 441; RV32-LMULMAX2-NEXT: lui a0, 748388 442; RV32-LMULMAX2-NEXT: addi a0, a0, -1793 443; RV32-LMULMAX2-NEXT: vmv.s.x v8, a0 444; RV32-LMULMAX2-NEXT: ret 445; 446; RV64-LMULMAX2-LABEL: buildvec_mask_v64i1: 447; RV64-LMULMAX2: # %bb.0: 448; RV64-LMULMAX2-NEXT: lui a0, 748384 449; RV64-LMULMAX2-NEXT: addiw a0, a0, 1776 450; RV64-LMULMAX2-NEXT: vsetivli zero, 1, e32, mf2, ta, mu 451; RV64-LMULMAX2-NEXT: vmv.s.x v0, a0 452; RV64-LMULMAX2-NEXT: lui a0, 748388 453; RV64-LMULMAX2-NEXT: addiw a0, a0, -1793 454; RV64-LMULMAX2-NEXT: vmv.s.x v8, a0 455; RV64-LMULMAX2-NEXT: ret 456; 457; RV32-LMULMAX4-LABEL: buildvec_mask_v64i1: 458; RV32-LMULMAX4: # %bb.0: 459; RV32-LMULMAX4-NEXT: lui a0, 748388 460; RV32-LMULMAX4-NEXT: addi a0, a0, -1793 461; RV32-LMULMAX4-NEXT: vsetivli zero, 2, e32, mf2, ta, mu 462; RV32-LMULMAX4-NEXT: vmv.s.x v25, a0 463; RV32-LMULMAX4-NEXT: lui a0, 748384 464; RV32-LMULMAX4-NEXT: addi a0, a0, 1776 465; RV32-LMULMAX4-NEXT: vmv.s.x v0, a0 466; RV32-LMULMAX4-NEXT: vsetvli zero, zero, e32, mf2, tu, mu 467; RV32-LMULMAX4-NEXT: vslideup.vi v0, v25, 1 468; RV32-LMULMAX4-NEXT: ret 469; 470; RV64-LMULMAX4-LABEL: buildvec_mask_v64i1: 471; RV64-LMULMAX4: # %bb.0: 472; RV64-LMULMAX4-NEXT: lui a0, 1048429 473; RV64-LMULMAX4-NEXT: addiw a0, a0, 1735 474; RV64-LMULMAX4-NEXT: slli a0, a0, 13 475; RV64-LMULMAX4-NEXT: addi a0, a0, 1023 476; RV64-LMULMAX4-NEXT: slli a0, a0, 13 477; RV64-LMULMAX4-NEXT: addi a0, a0, -1189 478; RV64-LMULMAX4-NEXT: slli a0, a0, 17 479; RV64-LMULMAX4-NEXT: addi a0, a0, 1776 480; RV64-LMULMAX4-NEXT: vsetivli zero, 1, e64, m1, ta, mu 481; RV64-LMULMAX4-NEXT: vmv.s.x v0, a0 482; RV64-LMULMAX4-NEXT: ret 483; 484; RV32-LMULMAX8-LABEL: buildvec_mask_v64i1: 485; RV32-LMULMAX8: # %bb.0: 486; RV32-LMULMAX8-NEXT: lui a0, 748388 487; RV32-LMULMAX8-NEXT: addi a0, a0, -1793 488; RV32-LMULMAX8-NEXT: vsetivli zero, 2, e32, mf2, ta, mu 489; RV32-LMULMAX8-NEXT: vmv.s.x v25, a0 490; RV32-LMULMAX8-NEXT: lui a0, 748384 491; RV32-LMULMAX8-NEXT: addi a0, a0, 1776 492; RV32-LMULMAX8-NEXT: vmv.s.x v0, a0 493; RV32-LMULMAX8-NEXT: vsetvli zero, zero, e32, mf2, tu, mu 494; RV32-LMULMAX8-NEXT: vslideup.vi v0, v25, 1 495; RV32-LMULMAX8-NEXT: ret 496; 497; RV64-LMULMAX8-LABEL: buildvec_mask_v64i1: 498; RV64-LMULMAX8: # %bb.0: 499; RV64-LMULMAX8-NEXT: lui a0, 1048429 500; RV64-LMULMAX8-NEXT: addiw a0, a0, 1735 501; RV64-LMULMAX8-NEXT: slli a0, a0, 13 502; RV64-LMULMAX8-NEXT: addi a0, a0, 1023 503; RV64-LMULMAX8-NEXT: slli a0, a0, 13 504; RV64-LMULMAX8-NEXT: addi a0, a0, -1189 505; RV64-LMULMAX8-NEXT: slli a0, a0, 17 506; RV64-LMULMAX8-NEXT: addi a0, a0, 1776 507; RV64-LMULMAX8-NEXT: vsetivli zero, 1, e64, m1, ta, mu 508; RV64-LMULMAX8-NEXT: vmv.s.x v0, a0 509; RV64-LMULMAX8-NEXT: ret 510 ret <64 x i1> <i1 0, i1 0, i1 0, i1 0, i1 1, i1 1, i1 1, i1 1, i1 0, i1 1, i1 1, i1 0, i1 0, i1 0, i1 0, i1 0, i1 0, i1 1, i1 1, i1 0, i1 1, i1 1, i1 0, i1 1, i1 0, i1 1, i1 1, i1 0, i1 1, i1 1, i1 0, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 0, i1 0, i1 0, i1 1, i1 1, i1 1, i1 0, i1 0, i1 0, i1 1, i1 1, i1 0, i1 1, i1 1, i1 0, i1 1, i1 0, i1 1, i1 1, i1 0, i1 1, i1 1, i1 0, i1 1> 511} 512 513define <128 x i1> @buildvec_mask_v128i1() { 514; RV32-LMULMAX1-LABEL: buildvec_mask_v128i1: 515; RV32-LMULMAX1: # %bb.0: 516; RV32-LMULMAX1-NEXT: addi a0, zero, 1776 517; RV32-LMULMAX1-NEXT: vsetivli zero, 1, e16, mf4, ta, mu 518; RV32-LMULMAX1-NEXT: vmv.s.x v0, a0 519; RV32-LMULMAX1-NEXT: lui a0, 11 520; RV32-LMULMAX1-NEXT: addi a0, a0, 1718 521; RV32-LMULMAX1-NEXT: vmv.s.x v8, a0 522; RV32-LMULMAX1-NEXT: lui a0, 8 523; RV32-LMULMAX1-NEXT: addi a0, a0, 1718 524; RV32-LMULMAX1-NEXT: vmv.s.x v12, a0 525; RV32-LMULMAX1-NEXT: lui a0, 4 526; RV32-LMULMAX1-NEXT: addi a0, a0, -1793 527; RV32-LMULMAX1-NEXT: vmv.s.x v9, a0 528; RV32-LMULMAX1-NEXT: lui a0, 14 529; RV32-LMULMAX1-NEXT: addi a0, a0, 1722 530; RV32-LMULMAX1-NEXT: vmv.s.x v14, a0 531; RV32-LMULMAX1-NEXT: vmv1r.v v10, v8 532; RV32-LMULMAX1-NEXT: vmv1r.v v11, v0 533; RV32-LMULMAX1-NEXT: vmv1r.v v13, v9 534; RV32-LMULMAX1-NEXT: ret 535; 536; RV64-LMULMAX1-LABEL: buildvec_mask_v128i1: 537; RV64-LMULMAX1: # %bb.0: 538; RV64-LMULMAX1-NEXT: addi a0, zero, 1776 539; RV64-LMULMAX1-NEXT: vsetivli zero, 1, e16, mf4, ta, mu 540; RV64-LMULMAX1-NEXT: vmv.s.x v0, a0 541; RV64-LMULMAX1-NEXT: lui a0, 11 542; RV64-LMULMAX1-NEXT: addiw a0, a0, 1718 543; RV64-LMULMAX1-NEXT: vmv.s.x v8, a0 544; RV64-LMULMAX1-NEXT: lui a0, 8 545; RV64-LMULMAX1-NEXT: addiw a0, a0, 1718 546; RV64-LMULMAX1-NEXT: vmv.s.x v12, a0 547; RV64-LMULMAX1-NEXT: lui a0, 4 548; RV64-LMULMAX1-NEXT: addiw a0, a0, -1793 549; RV64-LMULMAX1-NEXT: vmv.s.x v9, a0 550; RV64-LMULMAX1-NEXT: lui a0, 14 551; RV64-LMULMAX1-NEXT: addiw a0, a0, 1722 552; RV64-LMULMAX1-NEXT: vmv.s.x v14, a0 553; RV64-LMULMAX1-NEXT: vmv1r.v v10, v8 554; RV64-LMULMAX1-NEXT: vmv1r.v v11, v0 555; RV64-LMULMAX1-NEXT: vmv1r.v v13, v9 556; RV64-LMULMAX1-NEXT: ret 557; 558; RV32-LMULMAX2-LABEL: buildvec_mask_v128i1: 559; RV32-LMULMAX2: # %bb.0: 560; RV32-LMULMAX2-NEXT: lui a0, 748384 561; RV32-LMULMAX2-NEXT: addi a0, a0, 1776 562; RV32-LMULMAX2-NEXT: vsetivli zero, 1, e32, mf2, ta, mu 563; RV32-LMULMAX2-NEXT: vmv.s.x v0, a0 564; RV32-LMULMAX2-NEXT: lui a0, 748388 565; RV32-LMULMAX2-NEXT: addi a0, a0, -1793 566; RV32-LMULMAX2-NEXT: vmv.s.x v8, a0 567; RV32-LMULMAX2-NEXT: lui a0, 551776 568; RV32-LMULMAX2-NEXT: addi a0, a0, 1776 569; RV32-LMULMAX2-NEXT: vmv.s.x v9, a0 570; RV32-LMULMAX2-NEXT: lui a0, 945060 571; RV32-LMULMAX2-NEXT: addi a0, a0, -1793 572; RV32-LMULMAX2-NEXT: vmv.s.x v10, a0 573; RV32-LMULMAX2-NEXT: ret 574; 575; RV64-LMULMAX2-LABEL: buildvec_mask_v128i1: 576; RV64-LMULMAX2: # %bb.0: 577; RV64-LMULMAX2-NEXT: lui a0, 748384 578; RV64-LMULMAX2-NEXT: addiw a0, a0, 1776 579; RV64-LMULMAX2-NEXT: vsetivli zero, 1, e32, mf2, ta, mu 580; RV64-LMULMAX2-NEXT: vmv.s.x v0, a0 581; RV64-LMULMAX2-NEXT: lui a0, 748388 582; RV64-LMULMAX2-NEXT: addiw a0, a0, -1793 583; RV64-LMULMAX2-NEXT: vmv.s.x v8, a0 584; RV64-LMULMAX2-NEXT: lui a0, 551776 585; RV64-LMULMAX2-NEXT: addiw a0, a0, 1776 586; RV64-LMULMAX2-NEXT: vmv.s.x v9, a0 587; RV64-LMULMAX2-NEXT: lui a0, 945060 588; RV64-LMULMAX2-NEXT: addiw a0, a0, -1793 589; RV64-LMULMAX2-NEXT: vmv.s.x v10, a0 590; RV64-LMULMAX2-NEXT: ret 591; 592; RV32-LMULMAX4-LABEL: buildvec_mask_v128i1: 593; RV32-LMULMAX4: # %bb.0: 594; RV32-LMULMAX4-NEXT: lui a0, 748388 595; RV32-LMULMAX4-NEXT: addi a0, a0, -1793 596; RV32-LMULMAX4-NEXT: vsetivli zero, 2, e32, mf2, ta, mu 597; RV32-LMULMAX4-NEXT: vmv.s.x v25, a0 598; RV32-LMULMAX4-NEXT: lui a0, 748384 599; RV32-LMULMAX4-NEXT: addi a0, a0, 1776 600; RV32-LMULMAX4-NEXT: vmv.s.x v0, a0 601; RV32-LMULMAX4-NEXT: vsetvli zero, zero, e32, mf2, tu, mu 602; RV32-LMULMAX4-NEXT: vslideup.vi v0, v25, 1 603; RV32-LMULMAX4-NEXT: lui a0, 945060 604; RV32-LMULMAX4-NEXT: addi a0, a0, -1793 605; RV32-LMULMAX4-NEXT: vsetvli zero, zero, e32, mf2, ta, mu 606; RV32-LMULMAX4-NEXT: vmv.s.x v25, a0 607; RV32-LMULMAX4-NEXT: lui a0, 551776 608; RV32-LMULMAX4-NEXT: addi a0, a0, 1776 609; RV32-LMULMAX4-NEXT: vmv.s.x v8, a0 610; RV32-LMULMAX4-NEXT: vsetvli zero, zero, e32, mf2, tu, mu 611; RV32-LMULMAX4-NEXT: vslideup.vi v8, v25, 1 612; RV32-LMULMAX4-NEXT: ret 613; 614; RV64-LMULMAX4-LABEL: buildvec_mask_v128i1: 615; RV64-LMULMAX4: # %bb.0: 616; RV64-LMULMAX4-NEXT: lui a0, 841543 617; RV64-LMULMAX4-NEXT: addiw a0, a0, 511 618; RV64-LMULMAX4-NEXT: slli a0, a0, 14 619; RV64-LMULMAX4-NEXT: addi a0, a0, 859 620; RV64-LMULMAX4-NEXT: slli a0, a0, 17 621; RV64-LMULMAX4-NEXT: addi a0, a0, 1776 622; RV64-LMULMAX4-NEXT: vsetivli zero, 1, e64, m1, ta, mu 623; RV64-LMULMAX4-NEXT: vmv.s.x v8, a0 624; RV64-LMULMAX4-NEXT: lui a0, 1048429 625; RV64-LMULMAX4-NEXT: addiw a0, a0, 1735 626; RV64-LMULMAX4-NEXT: slli a0, a0, 13 627; RV64-LMULMAX4-NEXT: addi a0, a0, 1023 628; RV64-LMULMAX4-NEXT: slli a0, a0, 13 629; RV64-LMULMAX4-NEXT: addi a0, a0, -1189 630; RV64-LMULMAX4-NEXT: slli a0, a0, 17 631; RV64-LMULMAX4-NEXT: addi a0, a0, 1776 632; RV64-LMULMAX4-NEXT: vmv.s.x v0, a0 633; RV64-LMULMAX4-NEXT: ret 634; 635; RV32-LMULMAX8-LABEL: buildvec_mask_v128i1: 636; RV32-LMULMAX8: # %bb.0: 637; RV32-LMULMAX8-NEXT: lui a0, 748388 638; RV32-LMULMAX8-NEXT: addi a0, a0, -1793 639; RV32-LMULMAX8-NEXT: vsetivli zero, 4, e32, m1, ta, mu 640; RV32-LMULMAX8-NEXT: vmv.s.x v25, a0 641; RV32-LMULMAX8-NEXT: lui a0, 748384 642; RV32-LMULMAX8-NEXT: addi a0, a0, 1776 643; RV32-LMULMAX8-NEXT: vmv.s.x v0, a0 644; RV32-LMULMAX8-NEXT: vsetivli zero, 2, e32, m1, tu, mu 645; RV32-LMULMAX8-NEXT: vslideup.vi v0, v25, 1 646; RV32-LMULMAX8-NEXT: lui a0, 551776 647; RV32-LMULMAX8-NEXT: addi a0, a0, 1776 648; RV32-LMULMAX8-NEXT: vsetivli zero, 4, e32, m1, ta, mu 649; RV32-LMULMAX8-NEXT: vmv.s.x v25, a0 650; RV32-LMULMAX8-NEXT: vsetivli zero, 3, e32, m1, tu, mu 651; RV32-LMULMAX8-NEXT: vslideup.vi v0, v25, 2 652; RV32-LMULMAX8-NEXT: lui a0, 945060 653; RV32-LMULMAX8-NEXT: addi a0, a0, -1793 654; RV32-LMULMAX8-NEXT: vsetivli zero, 4, e32, m1, ta, mu 655; RV32-LMULMAX8-NEXT: vmv.s.x v25, a0 656; RV32-LMULMAX8-NEXT: vsetvli zero, zero, e32, m1, tu, mu 657; RV32-LMULMAX8-NEXT: vslideup.vi v0, v25, 3 658; RV32-LMULMAX8-NEXT: ret 659; 660; RV64-LMULMAX8-LABEL: buildvec_mask_v128i1: 661; RV64-LMULMAX8: # %bb.0: 662; RV64-LMULMAX8-NEXT: lui a0, 841543 663; RV64-LMULMAX8-NEXT: addiw a0, a0, 511 664; RV64-LMULMAX8-NEXT: slli a0, a0, 14 665; RV64-LMULMAX8-NEXT: addi a0, a0, 859 666; RV64-LMULMAX8-NEXT: slli a0, a0, 17 667; RV64-LMULMAX8-NEXT: addi a0, a0, 1776 668; RV64-LMULMAX8-NEXT: vsetivli zero, 2, e64, m1, ta, mu 669; RV64-LMULMAX8-NEXT: vmv.s.x v25, a0 670; RV64-LMULMAX8-NEXT: lui a0, 1048429 671; RV64-LMULMAX8-NEXT: addiw a0, a0, 1735 672; RV64-LMULMAX8-NEXT: slli a0, a0, 13 673; RV64-LMULMAX8-NEXT: addi a0, a0, 1023 674; RV64-LMULMAX8-NEXT: slli a0, a0, 13 675; RV64-LMULMAX8-NEXT: addi a0, a0, -1189 676; RV64-LMULMAX8-NEXT: slli a0, a0, 17 677; RV64-LMULMAX8-NEXT: addi a0, a0, 1776 678; RV64-LMULMAX8-NEXT: vmv.s.x v0, a0 679; RV64-LMULMAX8-NEXT: vsetvli zero, zero, e64, m1, tu, mu 680; RV64-LMULMAX8-NEXT: vslideup.vi v0, v25, 1 681; RV64-LMULMAX8-NEXT: ret 682 ret <128 x i1> <i1 0, i1 0, i1 0, i1 0, i1 1, i1 1, i1 1, i1 1, i1 0, i1 1, i1 1, i1 0, i1 0, i1 0, i1 0, i1 0, i1 0, i1 1, i1 1, i1 0, i1 1, i1 1, i1 0, i1 1, i1 0, i1 1, i1 1, i1 0, i1 1, i1 1, i1 0, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 0, i1 0, i1 0, i1 1, i1 1, i1 1, i1 0, i1 0, i1 0, i1 1, i1 1, i1 0, i1 1, i1 1, i1 0, i1 1, i1 0, i1 1, i1 1, i1 0, i1 1, i1 1, i1 0, i1 1, i1 0, i1 0, i1 0, i1 0, i1 1, i1 1, i1 1, i1 1, i1 0, i1 1, i1 1, i1 0, i1 0, i1 0, i1 0, i1 0, i1 0, i1 1, i1 1, i1 0, i1 1, i1 1, i1 0, i1 1, i1 0, i1 1, i1 1, i1 0, i1 0, i1 0, i1 0, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 0, i1 0, i1 0, i1 1, i1 1, i1 1, i1 0, i1 0, i1 0, i1 1, i1 0, i1 1, i1 1, i1 1, i1 0, i1 1, i1 0, i1 1, i1 1, i1 0, i1 0, i1 1, i1 1, i1 1> 683} 684 685define <128 x i1> @buildvec_mask_optsize_v128i1() optsize { 686; RV32-LMULMAX1-LABEL: buildvec_mask_optsize_v128i1: 687; RV32-LMULMAX1: # %bb.0: 688; RV32-LMULMAX1-NEXT: addi a0, zero, 1776 689; RV32-LMULMAX1-NEXT: vsetivli zero, 1, e16, mf4, ta, mu 690; RV32-LMULMAX1-NEXT: vmv.s.x v0, a0 691; RV32-LMULMAX1-NEXT: lui a0, 11 692; RV32-LMULMAX1-NEXT: addi a0, a0, 1718 693; RV32-LMULMAX1-NEXT: vmv.s.x v8, a0 694; RV32-LMULMAX1-NEXT: lui a0, 8 695; RV32-LMULMAX1-NEXT: addi a0, a0, 1718 696; RV32-LMULMAX1-NEXT: vmv.s.x v12, a0 697; RV32-LMULMAX1-NEXT: lui a0, 4 698; RV32-LMULMAX1-NEXT: addi a0, a0, -1793 699; RV32-LMULMAX1-NEXT: vmv.s.x v9, a0 700; RV32-LMULMAX1-NEXT: lui a0, 14 701; RV32-LMULMAX1-NEXT: addi a0, a0, 1722 702; RV32-LMULMAX1-NEXT: vmv.s.x v14, a0 703; RV32-LMULMAX1-NEXT: vmv1r.v v10, v8 704; RV32-LMULMAX1-NEXT: vmv1r.v v11, v0 705; RV32-LMULMAX1-NEXT: vmv1r.v v13, v9 706; RV32-LMULMAX1-NEXT: ret 707; 708; RV64-LMULMAX1-LABEL: buildvec_mask_optsize_v128i1: 709; RV64-LMULMAX1: # %bb.0: 710; RV64-LMULMAX1-NEXT: addi a0, zero, 1776 711; RV64-LMULMAX1-NEXT: vsetivli zero, 1, e16, mf4, ta, mu 712; RV64-LMULMAX1-NEXT: vmv.s.x v0, a0 713; RV64-LMULMAX1-NEXT: lui a0, 11 714; RV64-LMULMAX1-NEXT: addiw a0, a0, 1718 715; RV64-LMULMAX1-NEXT: vmv.s.x v8, a0 716; RV64-LMULMAX1-NEXT: lui a0, 8 717; RV64-LMULMAX1-NEXT: addiw a0, a0, 1718 718; RV64-LMULMAX1-NEXT: vmv.s.x v12, a0 719; RV64-LMULMAX1-NEXT: lui a0, 4 720; RV64-LMULMAX1-NEXT: addiw a0, a0, -1793 721; RV64-LMULMAX1-NEXT: vmv.s.x v9, a0 722; RV64-LMULMAX1-NEXT: lui a0, 14 723; RV64-LMULMAX1-NEXT: addiw a0, a0, 1722 724; RV64-LMULMAX1-NEXT: vmv.s.x v14, a0 725; RV64-LMULMAX1-NEXT: vmv1r.v v10, v8 726; RV64-LMULMAX1-NEXT: vmv1r.v v11, v0 727; RV64-LMULMAX1-NEXT: vmv1r.v v13, v9 728; RV64-LMULMAX1-NEXT: ret 729; 730; RV32-LMULMAX2-LABEL: buildvec_mask_optsize_v128i1: 731; RV32-LMULMAX2: # %bb.0: 732; RV32-LMULMAX2-NEXT: lui a0, 748384 733; RV32-LMULMAX2-NEXT: addi a0, a0, 1776 734; RV32-LMULMAX2-NEXT: vsetivli zero, 1, e32, mf2, ta, mu 735; RV32-LMULMAX2-NEXT: vmv.s.x v0, a0 736; RV32-LMULMAX2-NEXT: lui a0, 748388 737; RV32-LMULMAX2-NEXT: addi a0, a0, -1793 738; RV32-LMULMAX2-NEXT: vmv.s.x v8, a0 739; RV32-LMULMAX2-NEXT: lui a0, 551776 740; RV32-LMULMAX2-NEXT: addi a0, a0, 1776 741; RV32-LMULMAX2-NEXT: vmv.s.x v9, a0 742; RV32-LMULMAX2-NEXT: lui a0, 945060 743; RV32-LMULMAX2-NEXT: addi a0, a0, -1793 744; RV32-LMULMAX2-NEXT: vmv.s.x v10, a0 745; RV32-LMULMAX2-NEXT: ret 746; 747; RV64-LMULMAX2-LABEL: buildvec_mask_optsize_v128i1: 748; RV64-LMULMAX2: # %bb.0: 749; RV64-LMULMAX2-NEXT: lui a0, 748384 750; RV64-LMULMAX2-NEXT: addiw a0, a0, 1776 751; RV64-LMULMAX2-NEXT: vsetivli zero, 1, e32, mf2, ta, mu 752; RV64-LMULMAX2-NEXT: vmv.s.x v0, a0 753; RV64-LMULMAX2-NEXT: lui a0, 748388 754; RV64-LMULMAX2-NEXT: addiw a0, a0, -1793 755; RV64-LMULMAX2-NEXT: vmv.s.x v8, a0 756; RV64-LMULMAX2-NEXT: lui a0, 551776 757; RV64-LMULMAX2-NEXT: addiw a0, a0, 1776 758; RV64-LMULMAX2-NEXT: vmv.s.x v9, a0 759; RV64-LMULMAX2-NEXT: lui a0, 945060 760; RV64-LMULMAX2-NEXT: addiw a0, a0, -1793 761; RV64-LMULMAX2-NEXT: vmv.s.x v10, a0 762; RV64-LMULMAX2-NEXT: ret 763; 764; RV32-LMULMAX4-LABEL: buildvec_mask_optsize_v128i1: 765; RV32-LMULMAX4: # %bb.0: 766; RV32-LMULMAX4-NEXT: lui a0, %hi(.LCPI21_0) 767; RV32-LMULMAX4-NEXT: addi a0, a0, %lo(.LCPI21_0) 768; RV32-LMULMAX4-NEXT: addi a1, zero, 64 769; RV32-LMULMAX4-NEXT: vsetvli zero, a1, e8, m4, ta, mu 770; RV32-LMULMAX4-NEXT: vle1.v v0, (a0) 771; RV32-LMULMAX4-NEXT: lui a0, %hi(.LCPI21_1) 772; RV32-LMULMAX4-NEXT: addi a0, a0, %lo(.LCPI21_1) 773; RV32-LMULMAX4-NEXT: vle1.v v8, (a0) 774; RV32-LMULMAX4-NEXT: ret 775; 776; RV64-LMULMAX4-LABEL: buildvec_mask_optsize_v128i1: 777; RV64-LMULMAX4: # %bb.0: 778; RV64-LMULMAX4-NEXT: lui a0, 841543 779; RV64-LMULMAX4-NEXT: addiw a0, a0, 511 780; RV64-LMULMAX4-NEXT: slli a0, a0, 14 781; RV64-LMULMAX4-NEXT: addi a0, a0, 859 782; RV64-LMULMAX4-NEXT: slli a0, a0, 17 783; RV64-LMULMAX4-NEXT: addi a0, a0, 1776 784; RV64-LMULMAX4-NEXT: vsetivli zero, 1, e64, m1, ta, mu 785; RV64-LMULMAX4-NEXT: vmv.s.x v8, a0 786; RV64-LMULMAX4-NEXT: lui a0, 1048429 787; RV64-LMULMAX4-NEXT: addiw a0, a0, 1735 788; RV64-LMULMAX4-NEXT: slli a0, a0, 13 789; RV64-LMULMAX4-NEXT: addi a0, a0, 1023 790; RV64-LMULMAX4-NEXT: slli a0, a0, 13 791; RV64-LMULMAX4-NEXT: addi a0, a0, -1189 792; RV64-LMULMAX4-NEXT: slli a0, a0, 17 793; RV64-LMULMAX4-NEXT: addi a0, a0, 1776 794; RV64-LMULMAX4-NEXT: vmv.s.x v0, a0 795; RV64-LMULMAX4-NEXT: ret 796; 797; RV32-LMULMAX8-LABEL: buildvec_mask_optsize_v128i1: 798; RV32-LMULMAX8: # %bb.0: 799; RV32-LMULMAX8-NEXT: lui a0, %hi(.LCPI21_0) 800; RV32-LMULMAX8-NEXT: addi a0, a0, %lo(.LCPI21_0) 801; RV32-LMULMAX8-NEXT: addi a1, zero, 128 802; RV32-LMULMAX8-NEXT: vsetvli zero, a1, e8, m8, ta, mu 803; RV32-LMULMAX8-NEXT: vle1.v v0, (a0) 804; RV32-LMULMAX8-NEXT: ret 805; 806; RV64-LMULMAX8-LABEL: buildvec_mask_optsize_v128i1: 807; RV64-LMULMAX8: # %bb.0: 808; RV64-LMULMAX8-NEXT: lui a0, %hi(.LCPI21_0) 809; RV64-LMULMAX8-NEXT: addi a0, a0, %lo(.LCPI21_0) 810; RV64-LMULMAX8-NEXT: addi a1, zero, 128 811; RV64-LMULMAX8-NEXT: vsetvli zero, a1, e8, m8, ta, mu 812; RV64-LMULMAX8-NEXT: vle1.v v0, (a0) 813; RV64-LMULMAX8-NEXT: ret 814 ret <128 x i1> <i1 0, i1 0, i1 0, i1 0, i1 1, i1 1, i1 1, i1 1, i1 0, i1 1, i1 1, i1 0, i1 0, i1 0, i1 0, i1 0, i1 0, i1 1, i1 1, i1 0, i1 1, i1 1, i1 0, i1 1, i1 0, i1 1, i1 1, i1 0, i1 1, i1 1, i1 0, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 0, i1 0, i1 0, i1 1, i1 1, i1 1, i1 0, i1 0, i1 0, i1 1, i1 1, i1 0, i1 1, i1 1, i1 0, i1 1, i1 0, i1 1, i1 1, i1 0, i1 1, i1 1, i1 0, i1 1, i1 0, i1 0, i1 0, i1 0, i1 1, i1 1, i1 1, i1 1, i1 0, i1 1, i1 1, i1 0, i1 0, i1 0, i1 0, i1 0, i1 0, i1 1, i1 1, i1 0, i1 1, i1 1, i1 0, i1 1, i1 0, i1 1, i1 1, i1 0, i1 0, i1 0, i1 0, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 0, i1 0, i1 0, i1 1, i1 1, i1 1, i1 0, i1 0, i1 0, i1 1, i1 0, i1 1, i1 1, i1 1, i1 0, i1 1, i1 0, i1 1, i1 1, i1 0, i1 0, i1 1, i1 1, i1 1> 815} 816