1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; RUN: llc -mtriple=riscv64 -mattr=+experimental-v -verify-machineinstrs < %s | FileCheck %s 3 4define <vscale x 1 x i8> @vor_vx_nxv1i8(<vscale x 1 x i8> %va, i8 signext %b) { 5; CHECK-LABEL: vor_vx_nxv1i8: 6; CHECK: # %bb.0: 7; CHECK-NEXT: vsetvli a1, zero, e8, mf8, ta, mu 8; CHECK-NEXT: vor.vx v8, v8, a0 9; CHECK-NEXT: ret 10 %head = insertelement <vscale x 1 x i8> undef, i8 %b, i32 0 11 %splat = shufflevector <vscale x 1 x i8> %head, <vscale x 1 x i8> undef, <vscale x 1 x i32> zeroinitializer 12 %vc = or <vscale x 1 x i8> %va, %splat 13 ret <vscale x 1 x i8> %vc 14} 15 16define <vscale x 1 x i8> @vor_vx_nxv1i8_0(<vscale x 1 x i8> %va) { 17; CHECK-LABEL: vor_vx_nxv1i8_0: 18; CHECK: # %bb.0: 19; CHECK-NEXT: vsetvli a0, zero, e8, mf8, ta, mu 20; CHECK-NEXT: vor.vi v8, v8, -12 21; CHECK-NEXT: ret 22 %head = insertelement <vscale x 1 x i8> undef, i8 -12, i32 0 23 %splat = shufflevector <vscale x 1 x i8> %head, <vscale x 1 x i8> undef, <vscale x 1 x i32> zeroinitializer 24 %vc = or <vscale x 1 x i8> %va, %splat 25 ret <vscale x 1 x i8> %vc 26} 27 28define <vscale x 1 x i8> @vor_vx_nxv1i8_1(<vscale x 1 x i8> %va) { 29; CHECK-LABEL: vor_vx_nxv1i8_1: 30; CHECK: # %bb.0: 31; CHECK-NEXT: vsetvli a0, zero, e8, mf8, ta, mu 32; CHECK-NEXT: vor.vi v8, v8, 15 33; CHECK-NEXT: ret 34 %head = insertelement <vscale x 1 x i8> undef, i8 15, i32 0 35 %splat = shufflevector <vscale x 1 x i8> %head, <vscale x 1 x i8> undef, <vscale x 1 x i32> zeroinitializer 36 %vc = or <vscale x 1 x i8> %va, %splat 37 ret <vscale x 1 x i8> %vc 38} 39 40define <vscale x 1 x i8> @vor_vx_nxv1i8_2(<vscale x 1 x i8> %va) { 41; CHECK-LABEL: vor_vx_nxv1i8_2: 42; CHECK: # %bb.0: 43; CHECK-NEXT: addi a0, zero, 16 44; CHECK-NEXT: vsetvli a1, zero, e8, mf8, ta, mu 45; CHECK-NEXT: vor.vx v8, v8, a0 46; CHECK-NEXT: ret 47 %head = insertelement <vscale x 1 x i8> undef, i8 16, i32 0 48 %splat = shufflevector <vscale x 1 x i8> %head, <vscale x 1 x i8> undef, <vscale x 1 x i32> zeroinitializer 49 %vc = or <vscale x 1 x i8> %va, %splat 50 ret <vscale x 1 x i8> %vc 51} 52 53define <vscale x 2 x i8> @vor_vx_nxv2i8(<vscale x 2 x i8> %va, i8 signext %b) { 54; CHECK-LABEL: vor_vx_nxv2i8: 55; CHECK: # %bb.0: 56; CHECK-NEXT: vsetvli a1, zero, e8, mf4, ta, mu 57; CHECK-NEXT: vor.vx v8, v8, a0 58; CHECK-NEXT: ret 59 %head = insertelement <vscale x 2 x i8> undef, i8 %b, i32 0 60 %splat = shufflevector <vscale x 2 x i8> %head, <vscale x 2 x i8> undef, <vscale x 2 x i32> zeroinitializer 61 %vc = or <vscale x 2 x i8> %va, %splat 62 ret <vscale x 2 x i8> %vc 63} 64 65define <vscale x 2 x i8> @vor_vx_nxv2i8_0(<vscale x 2 x i8> %va) { 66; CHECK-LABEL: vor_vx_nxv2i8_0: 67; CHECK: # %bb.0: 68; CHECK-NEXT: vsetvli a0, zero, e8, mf4, ta, mu 69; CHECK-NEXT: vor.vi v8, v8, -12 70; CHECK-NEXT: ret 71 %head = insertelement <vscale x 2 x i8> undef, i8 -12, i32 0 72 %splat = shufflevector <vscale x 2 x i8> %head, <vscale x 2 x i8> undef, <vscale x 2 x i32> zeroinitializer 73 %vc = or <vscale x 2 x i8> %va, %splat 74 ret <vscale x 2 x i8> %vc 75} 76 77define <vscale x 2 x i8> @vor_vx_nxv2i8_1(<vscale x 2 x i8> %va) { 78; CHECK-LABEL: vor_vx_nxv2i8_1: 79; CHECK: # %bb.0: 80; CHECK-NEXT: vsetvli a0, zero, e8, mf4, ta, mu 81; CHECK-NEXT: vor.vi v8, v8, 15 82; CHECK-NEXT: ret 83 %head = insertelement <vscale x 2 x i8> undef, i8 15, i32 0 84 %splat = shufflevector <vscale x 2 x i8> %head, <vscale x 2 x i8> undef, <vscale x 2 x i32> zeroinitializer 85 %vc = or <vscale x 2 x i8> %va, %splat 86 ret <vscale x 2 x i8> %vc 87} 88 89define <vscale x 2 x i8> @vor_vx_nxv2i8_2(<vscale x 2 x i8> %va) { 90; CHECK-LABEL: vor_vx_nxv2i8_2: 91; CHECK: # %bb.0: 92; CHECK-NEXT: addi a0, zero, 16 93; CHECK-NEXT: vsetvli a1, zero, e8, mf4, ta, mu 94; CHECK-NEXT: vor.vx v8, v8, a0 95; CHECK-NEXT: ret 96 %head = insertelement <vscale x 2 x i8> undef, i8 16, i32 0 97 %splat = shufflevector <vscale x 2 x i8> %head, <vscale x 2 x i8> undef, <vscale x 2 x i32> zeroinitializer 98 %vc = or <vscale x 2 x i8> %va, %splat 99 ret <vscale x 2 x i8> %vc 100} 101 102define <vscale x 4 x i8> @vor_vx_nxv4i8(<vscale x 4 x i8> %va, i8 signext %b) { 103; CHECK-LABEL: vor_vx_nxv4i8: 104; CHECK: # %bb.0: 105; CHECK-NEXT: vsetvli a1, zero, e8, mf2, ta, mu 106; CHECK-NEXT: vor.vx v8, v8, a0 107; CHECK-NEXT: ret 108 %head = insertelement <vscale x 4 x i8> undef, i8 %b, i32 0 109 %splat = shufflevector <vscale x 4 x i8> %head, <vscale x 4 x i8> undef, <vscale x 4 x i32> zeroinitializer 110 %vc = or <vscale x 4 x i8> %va, %splat 111 ret <vscale x 4 x i8> %vc 112} 113 114define <vscale x 4 x i8> @vor_vx_nxv4i8_0(<vscale x 4 x i8> %va) { 115; CHECK-LABEL: vor_vx_nxv4i8_0: 116; CHECK: # %bb.0: 117; CHECK-NEXT: vsetvli a0, zero, e8, mf2, ta, mu 118; CHECK-NEXT: vor.vi v8, v8, -12 119; CHECK-NEXT: ret 120 %head = insertelement <vscale x 4 x i8> undef, i8 -12, i32 0 121 %splat = shufflevector <vscale x 4 x i8> %head, <vscale x 4 x i8> undef, <vscale x 4 x i32> zeroinitializer 122 %vc = or <vscale x 4 x i8> %va, %splat 123 ret <vscale x 4 x i8> %vc 124} 125 126define <vscale x 4 x i8> @vor_vx_nxv4i8_1(<vscale x 4 x i8> %va) { 127; CHECK-LABEL: vor_vx_nxv4i8_1: 128; CHECK: # %bb.0: 129; CHECK-NEXT: vsetvli a0, zero, e8, mf2, ta, mu 130; CHECK-NEXT: vor.vi v8, v8, 15 131; CHECK-NEXT: ret 132 %head = insertelement <vscale x 4 x i8> undef, i8 15, i32 0 133 %splat = shufflevector <vscale x 4 x i8> %head, <vscale x 4 x i8> undef, <vscale x 4 x i32> zeroinitializer 134 %vc = or <vscale x 4 x i8> %va, %splat 135 ret <vscale x 4 x i8> %vc 136} 137 138define <vscale x 4 x i8> @vor_vx_nxv4i8_2(<vscale x 4 x i8> %va) { 139; CHECK-LABEL: vor_vx_nxv4i8_2: 140; CHECK: # %bb.0: 141; CHECK-NEXT: addi a0, zero, 16 142; CHECK-NEXT: vsetvli a1, zero, e8, mf2, ta, mu 143; CHECK-NEXT: vor.vx v8, v8, a0 144; CHECK-NEXT: ret 145 %head = insertelement <vscale x 4 x i8> undef, i8 16, i32 0 146 %splat = shufflevector <vscale x 4 x i8> %head, <vscale x 4 x i8> undef, <vscale x 4 x i32> zeroinitializer 147 %vc = or <vscale x 4 x i8> %va, %splat 148 ret <vscale x 4 x i8> %vc 149} 150 151define <vscale x 8 x i8> @vor_vx_nxv8i8(<vscale x 8 x i8> %va, i8 signext %b) { 152; CHECK-LABEL: vor_vx_nxv8i8: 153; CHECK: # %bb.0: 154; CHECK-NEXT: vsetvli a1, zero, e8, m1, ta, mu 155; CHECK-NEXT: vor.vx v8, v8, a0 156; CHECK-NEXT: ret 157 %head = insertelement <vscale x 8 x i8> undef, i8 %b, i32 0 158 %splat = shufflevector <vscale x 8 x i8> %head, <vscale x 8 x i8> undef, <vscale x 8 x i32> zeroinitializer 159 %vc = or <vscale x 8 x i8> %va, %splat 160 ret <vscale x 8 x i8> %vc 161} 162 163define <vscale x 8 x i8> @vor_vx_nxv8i8_0(<vscale x 8 x i8> %va) { 164; CHECK-LABEL: vor_vx_nxv8i8_0: 165; CHECK: # %bb.0: 166; CHECK-NEXT: vsetvli a0, zero, e8, m1, ta, mu 167; CHECK-NEXT: vor.vi v8, v8, -12 168; CHECK-NEXT: ret 169 %head = insertelement <vscale x 8 x i8> undef, i8 -12, i32 0 170 %splat = shufflevector <vscale x 8 x i8> %head, <vscale x 8 x i8> undef, <vscale x 8 x i32> zeroinitializer 171 %vc = or <vscale x 8 x i8> %va, %splat 172 ret <vscale x 8 x i8> %vc 173} 174 175define <vscale x 8 x i8> @vor_vx_nxv8i8_1(<vscale x 8 x i8> %va) { 176; CHECK-LABEL: vor_vx_nxv8i8_1: 177; CHECK: # %bb.0: 178; CHECK-NEXT: vsetvli a0, zero, e8, m1, ta, mu 179; CHECK-NEXT: vor.vi v8, v8, 15 180; CHECK-NEXT: ret 181 %head = insertelement <vscale x 8 x i8> undef, i8 15, i32 0 182 %splat = shufflevector <vscale x 8 x i8> %head, <vscale x 8 x i8> undef, <vscale x 8 x i32> zeroinitializer 183 %vc = or <vscale x 8 x i8> %va, %splat 184 ret <vscale x 8 x i8> %vc 185} 186 187define <vscale x 8 x i8> @vor_vx_nxv8i8_2(<vscale x 8 x i8> %va) { 188; CHECK-LABEL: vor_vx_nxv8i8_2: 189; CHECK: # %bb.0: 190; CHECK-NEXT: addi a0, zero, 16 191; CHECK-NEXT: vsetvli a1, zero, e8, m1, ta, mu 192; CHECK-NEXT: vor.vx v8, v8, a0 193; CHECK-NEXT: ret 194 %head = insertelement <vscale x 8 x i8> undef, i8 16, i32 0 195 %splat = shufflevector <vscale x 8 x i8> %head, <vscale x 8 x i8> undef, <vscale x 8 x i32> zeroinitializer 196 %vc = or <vscale x 8 x i8> %va, %splat 197 ret <vscale x 8 x i8> %vc 198} 199 200define <vscale x 16 x i8> @vor_vx_nxv16i8(<vscale x 16 x i8> %va, i8 signext %b) { 201; CHECK-LABEL: vor_vx_nxv16i8: 202; CHECK: # %bb.0: 203; CHECK-NEXT: vsetvli a1, zero, e8, m2, ta, mu 204; CHECK-NEXT: vor.vx v8, v8, a0 205; CHECK-NEXT: ret 206 %head = insertelement <vscale x 16 x i8> undef, i8 %b, i32 0 207 %splat = shufflevector <vscale x 16 x i8> %head, <vscale x 16 x i8> undef, <vscale x 16 x i32> zeroinitializer 208 %vc = or <vscale x 16 x i8> %va, %splat 209 ret <vscale x 16 x i8> %vc 210} 211 212define <vscale x 16 x i8> @vor_vx_nxv16i8_0(<vscale x 16 x i8> %va) { 213; CHECK-LABEL: vor_vx_nxv16i8_0: 214; CHECK: # %bb.0: 215; CHECK-NEXT: vsetvli a0, zero, e8, m2, ta, mu 216; CHECK-NEXT: vor.vi v8, v8, -12 217; CHECK-NEXT: ret 218 %head = insertelement <vscale x 16 x i8> undef, i8 -12, i32 0 219 %splat = shufflevector <vscale x 16 x i8> %head, <vscale x 16 x i8> undef, <vscale x 16 x i32> zeroinitializer 220 %vc = or <vscale x 16 x i8> %va, %splat 221 ret <vscale x 16 x i8> %vc 222} 223 224define <vscale x 16 x i8> @vor_vx_nxv16i8_1(<vscale x 16 x i8> %va) { 225; CHECK-LABEL: vor_vx_nxv16i8_1: 226; CHECK: # %bb.0: 227; CHECK-NEXT: vsetvli a0, zero, e8, m2, ta, mu 228; CHECK-NEXT: vor.vi v8, v8, 15 229; CHECK-NEXT: ret 230 %head = insertelement <vscale x 16 x i8> undef, i8 15, i32 0 231 %splat = shufflevector <vscale x 16 x i8> %head, <vscale x 16 x i8> undef, <vscale x 16 x i32> zeroinitializer 232 %vc = or <vscale x 16 x i8> %va, %splat 233 ret <vscale x 16 x i8> %vc 234} 235 236define <vscale x 16 x i8> @vor_vx_nxv16i8_2(<vscale x 16 x i8> %va) { 237; CHECK-LABEL: vor_vx_nxv16i8_2: 238; CHECK: # %bb.0: 239; CHECK-NEXT: addi a0, zero, 16 240; CHECK-NEXT: vsetvli a1, zero, e8, m2, ta, mu 241; CHECK-NEXT: vor.vx v8, v8, a0 242; CHECK-NEXT: ret 243 %head = insertelement <vscale x 16 x i8> undef, i8 16, i32 0 244 %splat = shufflevector <vscale x 16 x i8> %head, <vscale x 16 x i8> undef, <vscale x 16 x i32> zeroinitializer 245 %vc = or <vscale x 16 x i8> %va, %splat 246 ret <vscale x 16 x i8> %vc 247} 248 249define <vscale x 32 x i8> @vor_vx_nxv32i8(<vscale x 32 x i8> %va, i8 signext %b) { 250; CHECK-LABEL: vor_vx_nxv32i8: 251; CHECK: # %bb.0: 252; CHECK-NEXT: vsetvli a1, zero, e8, m4, ta, mu 253; CHECK-NEXT: vor.vx v8, v8, a0 254; CHECK-NEXT: ret 255 %head = insertelement <vscale x 32 x i8> undef, i8 %b, i32 0 256 %splat = shufflevector <vscale x 32 x i8> %head, <vscale x 32 x i8> undef, <vscale x 32 x i32> zeroinitializer 257 %vc = or <vscale x 32 x i8> %va, %splat 258 ret <vscale x 32 x i8> %vc 259} 260 261define <vscale x 32 x i8> @vor_vx_nxv32i8_0(<vscale x 32 x i8> %va) { 262; CHECK-LABEL: vor_vx_nxv32i8_0: 263; CHECK: # %bb.0: 264; CHECK-NEXT: vsetvli a0, zero, e8, m4, ta, mu 265; CHECK-NEXT: vor.vi v8, v8, -12 266; CHECK-NEXT: ret 267 %head = insertelement <vscale x 32 x i8> undef, i8 -12, i32 0 268 %splat = shufflevector <vscale x 32 x i8> %head, <vscale x 32 x i8> undef, <vscale x 32 x i32> zeroinitializer 269 %vc = or <vscale x 32 x i8> %va, %splat 270 ret <vscale x 32 x i8> %vc 271} 272 273define <vscale x 32 x i8> @vor_vx_nxv32i8_1(<vscale x 32 x i8> %va) { 274; CHECK-LABEL: vor_vx_nxv32i8_1: 275; CHECK: # %bb.0: 276; CHECK-NEXT: vsetvli a0, zero, e8, m4, ta, mu 277; CHECK-NEXT: vor.vi v8, v8, 15 278; CHECK-NEXT: ret 279 %head = insertelement <vscale x 32 x i8> undef, i8 15, i32 0 280 %splat = shufflevector <vscale x 32 x i8> %head, <vscale x 32 x i8> undef, <vscale x 32 x i32> zeroinitializer 281 %vc = or <vscale x 32 x i8> %va, %splat 282 ret <vscale x 32 x i8> %vc 283} 284 285define <vscale x 32 x i8> @vor_vx_nxv32i8_2(<vscale x 32 x i8> %va) { 286; CHECK-LABEL: vor_vx_nxv32i8_2: 287; CHECK: # %bb.0: 288; CHECK-NEXT: addi a0, zero, 16 289; CHECK-NEXT: vsetvli a1, zero, e8, m4, ta, mu 290; CHECK-NEXT: vor.vx v8, v8, a0 291; CHECK-NEXT: ret 292 %head = insertelement <vscale x 32 x i8> undef, i8 16, i32 0 293 %splat = shufflevector <vscale x 32 x i8> %head, <vscale x 32 x i8> undef, <vscale x 32 x i32> zeroinitializer 294 %vc = or <vscale x 32 x i8> %va, %splat 295 ret <vscale x 32 x i8> %vc 296} 297 298define <vscale x 64 x i8> @vor_vx_nxv64i8(<vscale x 64 x i8> %va, i8 signext %b) { 299; CHECK-LABEL: vor_vx_nxv64i8: 300; CHECK: # %bb.0: 301; CHECK-NEXT: vsetvli a1, zero, e8, m8, ta, mu 302; CHECK-NEXT: vor.vx v8, v8, a0 303; CHECK-NEXT: ret 304 %head = insertelement <vscale x 64 x i8> undef, i8 %b, i32 0 305 %splat = shufflevector <vscale x 64 x i8> %head, <vscale x 64 x i8> undef, <vscale x 64 x i32> zeroinitializer 306 %vc = or <vscale x 64 x i8> %va, %splat 307 ret <vscale x 64 x i8> %vc 308} 309 310define <vscale x 64 x i8> @vor_vx_nxv64i8_0(<vscale x 64 x i8> %va) { 311; CHECK-LABEL: vor_vx_nxv64i8_0: 312; CHECK: # %bb.0: 313; CHECK-NEXT: vsetvli a0, zero, e8, m8, ta, mu 314; CHECK-NEXT: vor.vi v8, v8, -12 315; CHECK-NEXT: ret 316 %head = insertelement <vscale x 64 x i8> undef, i8 -12, i32 0 317 %splat = shufflevector <vscale x 64 x i8> %head, <vscale x 64 x i8> undef, <vscale x 64 x i32> zeroinitializer 318 %vc = or <vscale x 64 x i8> %va, %splat 319 ret <vscale x 64 x i8> %vc 320} 321 322define <vscale x 64 x i8> @vor_vx_nxv64i8_1(<vscale x 64 x i8> %va) { 323; CHECK-LABEL: vor_vx_nxv64i8_1: 324; CHECK: # %bb.0: 325; CHECK-NEXT: vsetvli a0, zero, e8, m8, ta, mu 326; CHECK-NEXT: vor.vi v8, v8, 15 327; CHECK-NEXT: ret 328 %head = insertelement <vscale x 64 x i8> undef, i8 15, i32 0 329 %splat = shufflevector <vscale x 64 x i8> %head, <vscale x 64 x i8> undef, <vscale x 64 x i32> zeroinitializer 330 %vc = or <vscale x 64 x i8> %va, %splat 331 ret <vscale x 64 x i8> %vc 332} 333 334define <vscale x 64 x i8> @vor_vx_nxv64i8_2(<vscale x 64 x i8> %va) { 335; CHECK-LABEL: vor_vx_nxv64i8_2: 336; CHECK: # %bb.0: 337; CHECK-NEXT: addi a0, zero, 16 338; CHECK-NEXT: vsetvli a1, zero, e8, m8, ta, mu 339; CHECK-NEXT: vor.vx v8, v8, a0 340; CHECK-NEXT: ret 341 %head = insertelement <vscale x 64 x i8> undef, i8 16, i32 0 342 %splat = shufflevector <vscale x 64 x i8> %head, <vscale x 64 x i8> undef, <vscale x 64 x i32> zeroinitializer 343 %vc = or <vscale x 64 x i8> %va, %splat 344 ret <vscale x 64 x i8> %vc 345} 346 347define <vscale x 1 x i16> @vor_vx_nxv1i16(<vscale x 1 x i16> %va, i16 signext %b) { 348; CHECK-LABEL: vor_vx_nxv1i16: 349; CHECK: # %bb.0: 350; CHECK-NEXT: vsetvli a1, zero, e16, mf4, ta, mu 351; CHECK-NEXT: vor.vx v8, v8, a0 352; CHECK-NEXT: ret 353 %head = insertelement <vscale x 1 x i16> undef, i16 %b, i32 0 354 %splat = shufflevector <vscale x 1 x i16> %head, <vscale x 1 x i16> undef, <vscale x 1 x i32> zeroinitializer 355 %vc = or <vscale x 1 x i16> %va, %splat 356 ret <vscale x 1 x i16> %vc 357} 358 359define <vscale x 1 x i16> @vor_vx_nxv1i16_0(<vscale x 1 x i16> %va) { 360; CHECK-LABEL: vor_vx_nxv1i16_0: 361; CHECK: # %bb.0: 362; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, mu 363; CHECK-NEXT: vor.vi v8, v8, -12 364; CHECK-NEXT: ret 365 %head = insertelement <vscale x 1 x i16> undef, i16 -12, i32 0 366 %splat = shufflevector <vscale x 1 x i16> %head, <vscale x 1 x i16> undef, <vscale x 1 x i32> zeroinitializer 367 %vc = or <vscale x 1 x i16> %va, %splat 368 ret <vscale x 1 x i16> %vc 369} 370 371define <vscale x 1 x i16> @vor_vx_nxv1i16_1(<vscale x 1 x i16> %va) { 372; CHECK-LABEL: vor_vx_nxv1i16_1: 373; CHECK: # %bb.0: 374; CHECK-NEXT: vsetvli a0, zero, e16, mf4, ta, mu 375; CHECK-NEXT: vor.vi v8, v8, 15 376; CHECK-NEXT: ret 377 %head = insertelement <vscale x 1 x i16> undef, i16 15, i32 0 378 %splat = shufflevector <vscale x 1 x i16> %head, <vscale x 1 x i16> undef, <vscale x 1 x i32> zeroinitializer 379 %vc = or <vscale x 1 x i16> %va, %splat 380 ret <vscale x 1 x i16> %vc 381} 382 383define <vscale x 1 x i16> @vor_vx_nxv1i16_2(<vscale x 1 x i16> %va) { 384; CHECK-LABEL: vor_vx_nxv1i16_2: 385; CHECK: # %bb.0: 386; CHECK-NEXT: addi a0, zero, 16 387; CHECK-NEXT: vsetvli a1, zero, e16, mf4, ta, mu 388; CHECK-NEXT: vor.vx v8, v8, a0 389; CHECK-NEXT: ret 390 %head = insertelement <vscale x 1 x i16> undef, i16 16, i32 0 391 %splat = shufflevector <vscale x 1 x i16> %head, <vscale x 1 x i16> undef, <vscale x 1 x i32> zeroinitializer 392 %vc = or <vscale x 1 x i16> %va, %splat 393 ret <vscale x 1 x i16> %vc 394} 395 396define <vscale x 2 x i16> @vor_vx_nxv2i16(<vscale x 2 x i16> %va, i16 signext %b) { 397; CHECK-LABEL: vor_vx_nxv2i16: 398; CHECK: # %bb.0: 399; CHECK-NEXT: vsetvli a1, zero, e16, mf2, ta, mu 400; CHECK-NEXT: vor.vx v8, v8, a0 401; CHECK-NEXT: ret 402 %head = insertelement <vscale x 2 x i16> undef, i16 %b, i32 0 403 %splat = shufflevector <vscale x 2 x i16> %head, <vscale x 2 x i16> undef, <vscale x 2 x i32> zeroinitializer 404 %vc = or <vscale x 2 x i16> %va, %splat 405 ret <vscale x 2 x i16> %vc 406} 407 408define <vscale x 2 x i16> @vor_vx_nxv2i16_0(<vscale x 2 x i16> %va) { 409; CHECK-LABEL: vor_vx_nxv2i16_0: 410; CHECK: # %bb.0: 411; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, mu 412; CHECK-NEXT: vor.vi v8, v8, -12 413; CHECK-NEXT: ret 414 %head = insertelement <vscale x 2 x i16> undef, i16 -12, i32 0 415 %splat = shufflevector <vscale x 2 x i16> %head, <vscale x 2 x i16> undef, <vscale x 2 x i32> zeroinitializer 416 %vc = or <vscale x 2 x i16> %va, %splat 417 ret <vscale x 2 x i16> %vc 418} 419 420define <vscale x 2 x i16> @vor_vx_nxv2i16_1(<vscale x 2 x i16> %va) { 421; CHECK-LABEL: vor_vx_nxv2i16_1: 422; CHECK: # %bb.0: 423; CHECK-NEXT: vsetvli a0, zero, e16, mf2, ta, mu 424; CHECK-NEXT: vor.vi v8, v8, 15 425; CHECK-NEXT: ret 426 %head = insertelement <vscale x 2 x i16> undef, i16 15, i32 0 427 %splat = shufflevector <vscale x 2 x i16> %head, <vscale x 2 x i16> undef, <vscale x 2 x i32> zeroinitializer 428 %vc = or <vscale x 2 x i16> %va, %splat 429 ret <vscale x 2 x i16> %vc 430} 431 432define <vscale x 2 x i16> @vor_vx_nxv2i16_2(<vscale x 2 x i16> %va) { 433; CHECK-LABEL: vor_vx_nxv2i16_2: 434; CHECK: # %bb.0: 435; CHECK-NEXT: addi a0, zero, 16 436; CHECK-NEXT: vsetvli a1, zero, e16, mf2, ta, mu 437; CHECK-NEXT: vor.vx v8, v8, a0 438; CHECK-NEXT: ret 439 %head = insertelement <vscale x 2 x i16> undef, i16 16, i32 0 440 %splat = shufflevector <vscale x 2 x i16> %head, <vscale x 2 x i16> undef, <vscale x 2 x i32> zeroinitializer 441 %vc = or <vscale x 2 x i16> %va, %splat 442 ret <vscale x 2 x i16> %vc 443} 444 445define <vscale x 4 x i16> @vor_vx_nxv4i16(<vscale x 4 x i16> %va, i16 signext %b) { 446; CHECK-LABEL: vor_vx_nxv4i16: 447; CHECK: # %bb.0: 448; CHECK-NEXT: vsetvli a1, zero, e16, m1, ta, mu 449; CHECK-NEXT: vor.vx v8, v8, a0 450; CHECK-NEXT: ret 451 %head = insertelement <vscale x 4 x i16> undef, i16 %b, i32 0 452 %splat = shufflevector <vscale x 4 x i16> %head, <vscale x 4 x i16> undef, <vscale x 4 x i32> zeroinitializer 453 %vc = or <vscale x 4 x i16> %va, %splat 454 ret <vscale x 4 x i16> %vc 455} 456 457define <vscale x 4 x i16> @vor_vx_nxv4i16_0(<vscale x 4 x i16> %va) { 458; CHECK-LABEL: vor_vx_nxv4i16_0: 459; CHECK: # %bb.0: 460; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, mu 461; CHECK-NEXT: vor.vi v8, v8, -12 462; CHECK-NEXT: ret 463 %head = insertelement <vscale x 4 x i16> undef, i16 -12, i32 0 464 %splat = shufflevector <vscale x 4 x i16> %head, <vscale x 4 x i16> undef, <vscale x 4 x i32> zeroinitializer 465 %vc = or <vscale x 4 x i16> %va, %splat 466 ret <vscale x 4 x i16> %vc 467} 468 469define <vscale x 4 x i16> @vor_vx_nxv4i16_1(<vscale x 4 x i16> %va) { 470; CHECK-LABEL: vor_vx_nxv4i16_1: 471; CHECK: # %bb.0: 472; CHECK-NEXT: vsetvli a0, zero, e16, m1, ta, mu 473; CHECK-NEXT: vor.vi v8, v8, 15 474; CHECK-NEXT: ret 475 %head = insertelement <vscale x 4 x i16> undef, i16 15, i32 0 476 %splat = shufflevector <vscale x 4 x i16> %head, <vscale x 4 x i16> undef, <vscale x 4 x i32> zeroinitializer 477 %vc = or <vscale x 4 x i16> %va, %splat 478 ret <vscale x 4 x i16> %vc 479} 480 481define <vscale x 4 x i16> @vor_vx_nxv4i16_2(<vscale x 4 x i16> %va) { 482; CHECK-LABEL: vor_vx_nxv4i16_2: 483; CHECK: # %bb.0: 484; CHECK-NEXT: addi a0, zero, 16 485; CHECK-NEXT: vsetvli a1, zero, e16, m1, ta, mu 486; CHECK-NEXT: vor.vx v8, v8, a0 487; CHECK-NEXT: ret 488 %head = insertelement <vscale x 4 x i16> undef, i16 16, i32 0 489 %splat = shufflevector <vscale x 4 x i16> %head, <vscale x 4 x i16> undef, <vscale x 4 x i32> zeroinitializer 490 %vc = or <vscale x 4 x i16> %va, %splat 491 ret <vscale x 4 x i16> %vc 492} 493 494define <vscale x 8 x i16> @vor_vx_nxv8i16(<vscale x 8 x i16> %va, i16 signext %b) { 495; CHECK-LABEL: vor_vx_nxv8i16: 496; CHECK: # %bb.0: 497; CHECK-NEXT: vsetvli a1, zero, e16, m2, ta, mu 498; CHECK-NEXT: vor.vx v8, v8, a0 499; CHECK-NEXT: ret 500 %head = insertelement <vscale x 8 x i16> undef, i16 %b, i32 0 501 %splat = shufflevector <vscale x 8 x i16> %head, <vscale x 8 x i16> undef, <vscale x 8 x i32> zeroinitializer 502 %vc = or <vscale x 8 x i16> %va, %splat 503 ret <vscale x 8 x i16> %vc 504} 505 506define <vscale x 8 x i16> @vor_vx_nxv8i16_0(<vscale x 8 x i16> %va) { 507; CHECK-LABEL: vor_vx_nxv8i16_0: 508; CHECK: # %bb.0: 509; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, mu 510; CHECK-NEXT: vor.vi v8, v8, -12 511; CHECK-NEXT: ret 512 %head = insertelement <vscale x 8 x i16> undef, i16 -12, i32 0 513 %splat = shufflevector <vscale x 8 x i16> %head, <vscale x 8 x i16> undef, <vscale x 8 x i32> zeroinitializer 514 %vc = or <vscale x 8 x i16> %va, %splat 515 ret <vscale x 8 x i16> %vc 516} 517 518define <vscale x 8 x i16> @vor_vx_nxv8i16_1(<vscale x 8 x i16> %va) { 519; CHECK-LABEL: vor_vx_nxv8i16_1: 520; CHECK: # %bb.0: 521; CHECK-NEXT: vsetvli a0, zero, e16, m2, ta, mu 522; CHECK-NEXT: vor.vi v8, v8, 15 523; CHECK-NEXT: ret 524 %head = insertelement <vscale x 8 x i16> undef, i16 15, i32 0 525 %splat = shufflevector <vscale x 8 x i16> %head, <vscale x 8 x i16> undef, <vscale x 8 x i32> zeroinitializer 526 %vc = or <vscale x 8 x i16> %va, %splat 527 ret <vscale x 8 x i16> %vc 528} 529 530define <vscale x 8 x i16> @vor_vx_nxv8i16_2(<vscale x 8 x i16> %va) { 531; CHECK-LABEL: vor_vx_nxv8i16_2: 532; CHECK: # %bb.0: 533; CHECK-NEXT: addi a0, zero, 16 534; CHECK-NEXT: vsetvli a1, zero, e16, m2, ta, mu 535; CHECK-NEXT: vor.vx v8, v8, a0 536; CHECK-NEXT: ret 537 %head = insertelement <vscale x 8 x i16> undef, i16 16, i32 0 538 %splat = shufflevector <vscale x 8 x i16> %head, <vscale x 8 x i16> undef, <vscale x 8 x i32> zeroinitializer 539 %vc = or <vscale x 8 x i16> %va, %splat 540 ret <vscale x 8 x i16> %vc 541} 542 543define <vscale x 16 x i16> @vor_vx_nxv16i16(<vscale x 16 x i16> %va, i16 signext %b) { 544; CHECK-LABEL: vor_vx_nxv16i16: 545; CHECK: # %bb.0: 546; CHECK-NEXT: vsetvli a1, zero, e16, m4, ta, mu 547; CHECK-NEXT: vor.vx v8, v8, a0 548; CHECK-NEXT: ret 549 %head = insertelement <vscale x 16 x i16> undef, i16 %b, i32 0 550 %splat = shufflevector <vscale x 16 x i16> %head, <vscale x 16 x i16> undef, <vscale x 16 x i32> zeroinitializer 551 %vc = or <vscale x 16 x i16> %va, %splat 552 ret <vscale x 16 x i16> %vc 553} 554 555define <vscale x 16 x i16> @vor_vx_nxv16i16_0(<vscale x 16 x i16> %va) { 556; CHECK-LABEL: vor_vx_nxv16i16_0: 557; CHECK: # %bb.0: 558; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, mu 559; CHECK-NEXT: vor.vi v8, v8, -12 560; CHECK-NEXT: ret 561 %head = insertelement <vscale x 16 x i16> undef, i16 -12, i32 0 562 %splat = shufflevector <vscale x 16 x i16> %head, <vscale x 16 x i16> undef, <vscale x 16 x i32> zeroinitializer 563 %vc = or <vscale x 16 x i16> %va, %splat 564 ret <vscale x 16 x i16> %vc 565} 566 567define <vscale x 16 x i16> @vor_vx_nxv16i16_1(<vscale x 16 x i16> %va) { 568; CHECK-LABEL: vor_vx_nxv16i16_1: 569; CHECK: # %bb.0: 570; CHECK-NEXT: vsetvli a0, zero, e16, m4, ta, mu 571; CHECK-NEXT: vor.vi v8, v8, 15 572; CHECK-NEXT: ret 573 %head = insertelement <vscale x 16 x i16> undef, i16 15, i32 0 574 %splat = shufflevector <vscale x 16 x i16> %head, <vscale x 16 x i16> undef, <vscale x 16 x i32> zeroinitializer 575 %vc = or <vscale x 16 x i16> %va, %splat 576 ret <vscale x 16 x i16> %vc 577} 578 579define <vscale x 16 x i16> @vor_vx_nxv16i16_2(<vscale x 16 x i16> %va) { 580; CHECK-LABEL: vor_vx_nxv16i16_2: 581; CHECK: # %bb.0: 582; CHECK-NEXT: addi a0, zero, 16 583; CHECK-NEXT: vsetvli a1, zero, e16, m4, ta, mu 584; CHECK-NEXT: vor.vx v8, v8, a0 585; CHECK-NEXT: ret 586 %head = insertelement <vscale x 16 x i16> undef, i16 16, i32 0 587 %splat = shufflevector <vscale x 16 x i16> %head, <vscale x 16 x i16> undef, <vscale x 16 x i32> zeroinitializer 588 %vc = or <vscale x 16 x i16> %va, %splat 589 ret <vscale x 16 x i16> %vc 590} 591 592define <vscale x 32 x i16> @vor_vx_nxv32i16(<vscale x 32 x i16> %va, i16 signext %b) { 593; CHECK-LABEL: vor_vx_nxv32i16: 594; CHECK: # %bb.0: 595; CHECK-NEXT: vsetvli a1, zero, e16, m8, ta, mu 596; CHECK-NEXT: vor.vx v8, v8, a0 597; CHECK-NEXT: ret 598 %head = insertelement <vscale x 32 x i16> undef, i16 %b, i32 0 599 %splat = shufflevector <vscale x 32 x i16> %head, <vscale x 32 x i16> undef, <vscale x 32 x i32> zeroinitializer 600 %vc = or <vscale x 32 x i16> %va, %splat 601 ret <vscale x 32 x i16> %vc 602} 603 604define <vscale x 32 x i16> @vor_vx_nxv32i16_0(<vscale x 32 x i16> %va) { 605; CHECK-LABEL: vor_vx_nxv32i16_0: 606; CHECK: # %bb.0: 607; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, mu 608; CHECK-NEXT: vor.vi v8, v8, -12 609; CHECK-NEXT: ret 610 %head = insertelement <vscale x 32 x i16> undef, i16 -12, i32 0 611 %splat = shufflevector <vscale x 32 x i16> %head, <vscale x 32 x i16> undef, <vscale x 32 x i32> zeroinitializer 612 %vc = or <vscale x 32 x i16> %va, %splat 613 ret <vscale x 32 x i16> %vc 614} 615 616define <vscale x 32 x i16> @vor_vx_nxv32i16_1(<vscale x 32 x i16> %va) { 617; CHECK-LABEL: vor_vx_nxv32i16_1: 618; CHECK: # %bb.0: 619; CHECK-NEXT: vsetvli a0, zero, e16, m8, ta, mu 620; CHECK-NEXT: vor.vi v8, v8, 15 621; CHECK-NEXT: ret 622 %head = insertelement <vscale x 32 x i16> undef, i16 15, i32 0 623 %splat = shufflevector <vscale x 32 x i16> %head, <vscale x 32 x i16> undef, <vscale x 32 x i32> zeroinitializer 624 %vc = or <vscale x 32 x i16> %va, %splat 625 ret <vscale x 32 x i16> %vc 626} 627 628define <vscale x 32 x i16> @vor_vx_nxv32i16_2(<vscale x 32 x i16> %va) { 629; CHECK-LABEL: vor_vx_nxv32i16_2: 630; CHECK: # %bb.0: 631; CHECK-NEXT: addi a0, zero, 16 632; CHECK-NEXT: vsetvli a1, zero, e16, m8, ta, mu 633; CHECK-NEXT: vor.vx v8, v8, a0 634; CHECK-NEXT: ret 635 %head = insertelement <vscale x 32 x i16> undef, i16 16, i32 0 636 %splat = shufflevector <vscale x 32 x i16> %head, <vscale x 32 x i16> undef, <vscale x 32 x i32> zeroinitializer 637 %vc = or <vscale x 32 x i16> %va, %splat 638 ret <vscale x 32 x i16> %vc 639} 640 641define <vscale x 1 x i32> @vor_vx_nxv1i32(<vscale x 1 x i32> %va, i32 signext %b) { 642; CHECK-LABEL: vor_vx_nxv1i32: 643; CHECK: # %bb.0: 644; CHECK-NEXT: vsetvli a1, zero, e32, mf2, ta, mu 645; CHECK-NEXT: vor.vx v8, v8, a0 646; CHECK-NEXT: ret 647 %head = insertelement <vscale x 1 x i32> undef, i32 %b, i32 0 648 %splat = shufflevector <vscale x 1 x i32> %head, <vscale x 1 x i32> undef, <vscale x 1 x i32> zeroinitializer 649 %vc = or <vscale x 1 x i32> %va, %splat 650 ret <vscale x 1 x i32> %vc 651} 652 653define <vscale x 1 x i32> @vor_vx_nxv1i32_0(<vscale x 1 x i32> %va) { 654; CHECK-LABEL: vor_vx_nxv1i32_0: 655; CHECK: # %bb.0: 656; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, mu 657; CHECK-NEXT: vor.vi v8, v8, -12 658; CHECK-NEXT: ret 659 %head = insertelement <vscale x 1 x i32> undef, i32 -12, i32 0 660 %splat = shufflevector <vscale x 1 x i32> %head, <vscale x 1 x i32> undef, <vscale x 1 x i32> zeroinitializer 661 %vc = or <vscale x 1 x i32> %va, %splat 662 ret <vscale x 1 x i32> %vc 663} 664 665define <vscale x 1 x i32> @vor_vx_nxv1i32_1(<vscale x 1 x i32> %va) { 666; CHECK-LABEL: vor_vx_nxv1i32_1: 667; CHECK: # %bb.0: 668; CHECK-NEXT: vsetvli a0, zero, e32, mf2, ta, mu 669; CHECK-NEXT: vor.vi v8, v8, 15 670; CHECK-NEXT: ret 671 %head = insertelement <vscale x 1 x i32> undef, i32 15, i32 0 672 %splat = shufflevector <vscale x 1 x i32> %head, <vscale x 1 x i32> undef, <vscale x 1 x i32> zeroinitializer 673 %vc = or <vscale x 1 x i32> %va, %splat 674 ret <vscale x 1 x i32> %vc 675} 676 677define <vscale x 1 x i32> @vor_vx_nxv1i32_2(<vscale x 1 x i32> %va) { 678; CHECK-LABEL: vor_vx_nxv1i32_2: 679; CHECK: # %bb.0: 680; CHECK-NEXT: addi a0, zero, 16 681; CHECK-NEXT: vsetvli a1, zero, e32, mf2, ta, mu 682; CHECK-NEXT: vor.vx v8, v8, a0 683; CHECK-NEXT: ret 684 %head = insertelement <vscale x 1 x i32> undef, i32 16, i32 0 685 %splat = shufflevector <vscale x 1 x i32> %head, <vscale x 1 x i32> undef, <vscale x 1 x i32> zeroinitializer 686 %vc = or <vscale x 1 x i32> %va, %splat 687 ret <vscale x 1 x i32> %vc 688} 689 690define <vscale x 2 x i32> @vor_vx_nxv2i32(<vscale x 2 x i32> %va, i32 signext %b) { 691; CHECK-LABEL: vor_vx_nxv2i32: 692; CHECK: # %bb.0: 693; CHECK-NEXT: vsetvli a1, zero, e32, m1, ta, mu 694; CHECK-NEXT: vor.vx v8, v8, a0 695; CHECK-NEXT: ret 696 %head = insertelement <vscale x 2 x i32> undef, i32 %b, i32 0 697 %splat = shufflevector <vscale x 2 x i32> %head, <vscale x 2 x i32> undef, <vscale x 2 x i32> zeroinitializer 698 %vc = or <vscale x 2 x i32> %va, %splat 699 ret <vscale x 2 x i32> %vc 700} 701 702define <vscale x 2 x i32> @vor_vx_nxv2i32_0(<vscale x 2 x i32> %va) { 703; CHECK-LABEL: vor_vx_nxv2i32_0: 704; CHECK: # %bb.0: 705; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, mu 706; CHECK-NEXT: vor.vi v8, v8, -12 707; CHECK-NEXT: ret 708 %head = insertelement <vscale x 2 x i32> undef, i32 -12, i32 0 709 %splat = shufflevector <vscale x 2 x i32> %head, <vscale x 2 x i32> undef, <vscale x 2 x i32> zeroinitializer 710 %vc = or <vscale x 2 x i32> %va, %splat 711 ret <vscale x 2 x i32> %vc 712} 713 714define <vscale x 2 x i32> @vor_vx_nxv2i32_1(<vscale x 2 x i32> %va) { 715; CHECK-LABEL: vor_vx_nxv2i32_1: 716; CHECK: # %bb.0: 717; CHECK-NEXT: vsetvli a0, zero, e32, m1, ta, mu 718; CHECK-NEXT: vor.vi v8, v8, 15 719; CHECK-NEXT: ret 720 %head = insertelement <vscale x 2 x i32> undef, i32 15, i32 0 721 %splat = shufflevector <vscale x 2 x i32> %head, <vscale x 2 x i32> undef, <vscale x 2 x i32> zeroinitializer 722 %vc = or <vscale x 2 x i32> %va, %splat 723 ret <vscale x 2 x i32> %vc 724} 725 726define <vscale x 2 x i32> @vor_vx_nxv2i32_2(<vscale x 2 x i32> %va) { 727; CHECK-LABEL: vor_vx_nxv2i32_2: 728; CHECK: # %bb.0: 729; CHECK-NEXT: addi a0, zero, 16 730; CHECK-NEXT: vsetvli a1, zero, e32, m1, ta, mu 731; CHECK-NEXT: vor.vx v8, v8, a0 732; CHECK-NEXT: ret 733 %head = insertelement <vscale x 2 x i32> undef, i32 16, i32 0 734 %splat = shufflevector <vscale x 2 x i32> %head, <vscale x 2 x i32> undef, <vscale x 2 x i32> zeroinitializer 735 %vc = or <vscale x 2 x i32> %va, %splat 736 ret <vscale x 2 x i32> %vc 737} 738 739define <vscale x 4 x i32> @vor_vx_nxv4i32(<vscale x 4 x i32> %va, i32 signext %b) { 740; CHECK-LABEL: vor_vx_nxv4i32: 741; CHECK: # %bb.0: 742; CHECK-NEXT: vsetvli a1, zero, e32, m2, ta, mu 743; CHECK-NEXT: vor.vx v8, v8, a0 744; CHECK-NEXT: ret 745 %head = insertelement <vscale x 4 x i32> undef, i32 %b, i32 0 746 %splat = shufflevector <vscale x 4 x i32> %head, <vscale x 4 x i32> undef, <vscale x 4 x i32> zeroinitializer 747 %vc = or <vscale x 4 x i32> %va, %splat 748 ret <vscale x 4 x i32> %vc 749} 750 751define <vscale x 4 x i32> @vor_vx_nxv4i32_0(<vscale x 4 x i32> %va) { 752; CHECK-LABEL: vor_vx_nxv4i32_0: 753; CHECK: # %bb.0: 754; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, mu 755; CHECK-NEXT: vor.vi v8, v8, -12 756; CHECK-NEXT: ret 757 %head = insertelement <vscale x 4 x i32> undef, i32 -12, i32 0 758 %splat = shufflevector <vscale x 4 x i32> %head, <vscale x 4 x i32> undef, <vscale x 4 x i32> zeroinitializer 759 %vc = or <vscale x 4 x i32> %va, %splat 760 ret <vscale x 4 x i32> %vc 761} 762 763define <vscale x 4 x i32> @vor_vx_nxv4i32_1(<vscale x 4 x i32> %va) { 764; CHECK-LABEL: vor_vx_nxv4i32_1: 765; CHECK: # %bb.0: 766; CHECK-NEXT: vsetvli a0, zero, e32, m2, ta, mu 767; CHECK-NEXT: vor.vi v8, v8, 15 768; CHECK-NEXT: ret 769 %head = insertelement <vscale x 4 x i32> undef, i32 15, i32 0 770 %splat = shufflevector <vscale x 4 x i32> %head, <vscale x 4 x i32> undef, <vscale x 4 x i32> zeroinitializer 771 %vc = or <vscale x 4 x i32> %va, %splat 772 ret <vscale x 4 x i32> %vc 773} 774 775define <vscale x 4 x i32> @vor_vx_nxv4i32_2(<vscale x 4 x i32> %va) { 776; CHECK-LABEL: vor_vx_nxv4i32_2: 777; CHECK: # %bb.0: 778; CHECK-NEXT: addi a0, zero, 16 779; CHECK-NEXT: vsetvli a1, zero, e32, m2, ta, mu 780; CHECK-NEXT: vor.vx v8, v8, a0 781; CHECK-NEXT: ret 782 %head = insertelement <vscale x 4 x i32> undef, i32 16, i32 0 783 %splat = shufflevector <vscale x 4 x i32> %head, <vscale x 4 x i32> undef, <vscale x 4 x i32> zeroinitializer 784 %vc = or <vscale x 4 x i32> %va, %splat 785 ret <vscale x 4 x i32> %vc 786} 787 788define <vscale x 8 x i32> @vor_vx_nxv8i32(<vscale x 8 x i32> %va, i32 signext %b) { 789; CHECK-LABEL: vor_vx_nxv8i32: 790; CHECK: # %bb.0: 791; CHECK-NEXT: vsetvli a1, zero, e32, m4, ta, mu 792; CHECK-NEXT: vor.vx v8, v8, a0 793; CHECK-NEXT: ret 794 %head = insertelement <vscale x 8 x i32> undef, i32 %b, i32 0 795 %splat = shufflevector <vscale x 8 x i32> %head, <vscale x 8 x i32> undef, <vscale x 8 x i32> zeroinitializer 796 %vc = or <vscale x 8 x i32> %va, %splat 797 ret <vscale x 8 x i32> %vc 798} 799 800define <vscale x 8 x i32> @vor_vx_nxv8i32_0(<vscale x 8 x i32> %va) { 801; CHECK-LABEL: vor_vx_nxv8i32_0: 802; CHECK: # %bb.0: 803; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, mu 804; CHECK-NEXT: vor.vi v8, v8, -12 805; CHECK-NEXT: ret 806 %head = insertelement <vscale x 8 x i32> undef, i32 -12, i32 0 807 %splat = shufflevector <vscale x 8 x i32> %head, <vscale x 8 x i32> undef, <vscale x 8 x i32> zeroinitializer 808 %vc = or <vscale x 8 x i32> %va, %splat 809 ret <vscale x 8 x i32> %vc 810} 811 812define <vscale x 8 x i32> @vor_vx_nxv8i32_1(<vscale x 8 x i32> %va) { 813; CHECK-LABEL: vor_vx_nxv8i32_1: 814; CHECK: # %bb.0: 815; CHECK-NEXT: vsetvli a0, zero, e32, m4, ta, mu 816; CHECK-NEXT: vor.vi v8, v8, 15 817; CHECK-NEXT: ret 818 %head = insertelement <vscale x 8 x i32> undef, i32 15, i32 0 819 %splat = shufflevector <vscale x 8 x i32> %head, <vscale x 8 x i32> undef, <vscale x 8 x i32> zeroinitializer 820 %vc = or <vscale x 8 x i32> %va, %splat 821 ret <vscale x 8 x i32> %vc 822} 823 824define <vscale x 8 x i32> @vor_vx_nxv8i32_2(<vscale x 8 x i32> %va) { 825; CHECK-LABEL: vor_vx_nxv8i32_2: 826; CHECK: # %bb.0: 827; CHECK-NEXT: addi a0, zero, 16 828; CHECK-NEXT: vsetvli a1, zero, e32, m4, ta, mu 829; CHECK-NEXT: vor.vx v8, v8, a0 830; CHECK-NEXT: ret 831 %head = insertelement <vscale x 8 x i32> undef, i32 16, i32 0 832 %splat = shufflevector <vscale x 8 x i32> %head, <vscale x 8 x i32> undef, <vscale x 8 x i32> zeroinitializer 833 %vc = or <vscale x 8 x i32> %va, %splat 834 ret <vscale x 8 x i32> %vc 835} 836 837define <vscale x 16 x i32> @vor_vx_nxv16i32(<vscale x 16 x i32> %va, i32 signext %b) { 838; CHECK-LABEL: vor_vx_nxv16i32: 839; CHECK: # %bb.0: 840; CHECK-NEXT: vsetvli a1, zero, e32, m8, ta, mu 841; CHECK-NEXT: vor.vx v8, v8, a0 842; CHECK-NEXT: ret 843 %head = insertelement <vscale x 16 x i32> undef, i32 %b, i32 0 844 %splat = shufflevector <vscale x 16 x i32> %head, <vscale x 16 x i32> undef, <vscale x 16 x i32> zeroinitializer 845 %vc = or <vscale x 16 x i32> %va, %splat 846 ret <vscale x 16 x i32> %vc 847} 848 849define <vscale x 16 x i32> @vor_vx_nxv16i32_0(<vscale x 16 x i32> %va) { 850; CHECK-LABEL: vor_vx_nxv16i32_0: 851; CHECK: # %bb.0: 852; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, mu 853; CHECK-NEXT: vor.vi v8, v8, -12 854; CHECK-NEXT: ret 855 %head = insertelement <vscale x 16 x i32> undef, i32 -12, i32 0 856 %splat = shufflevector <vscale x 16 x i32> %head, <vscale x 16 x i32> undef, <vscale x 16 x i32> zeroinitializer 857 %vc = or <vscale x 16 x i32> %va, %splat 858 ret <vscale x 16 x i32> %vc 859} 860 861define <vscale x 16 x i32> @vor_vx_nxv16i32_1(<vscale x 16 x i32> %va) { 862; CHECK-LABEL: vor_vx_nxv16i32_1: 863; CHECK: # %bb.0: 864; CHECK-NEXT: vsetvli a0, zero, e32, m8, ta, mu 865; CHECK-NEXT: vor.vi v8, v8, 15 866; CHECK-NEXT: ret 867 %head = insertelement <vscale x 16 x i32> undef, i32 15, i32 0 868 %splat = shufflevector <vscale x 16 x i32> %head, <vscale x 16 x i32> undef, <vscale x 16 x i32> zeroinitializer 869 %vc = or <vscale x 16 x i32> %va, %splat 870 ret <vscale x 16 x i32> %vc 871} 872 873define <vscale x 16 x i32> @vor_vx_nxv16i32_2(<vscale x 16 x i32> %va) { 874; CHECK-LABEL: vor_vx_nxv16i32_2: 875; CHECK: # %bb.0: 876; CHECK-NEXT: addi a0, zero, 16 877; CHECK-NEXT: vsetvli a1, zero, e32, m8, ta, mu 878; CHECK-NEXT: vor.vx v8, v8, a0 879; CHECK-NEXT: ret 880 %head = insertelement <vscale x 16 x i32> undef, i32 16, i32 0 881 %splat = shufflevector <vscale x 16 x i32> %head, <vscale x 16 x i32> undef, <vscale x 16 x i32> zeroinitializer 882 %vc = or <vscale x 16 x i32> %va, %splat 883 ret <vscale x 16 x i32> %vc 884} 885 886define <vscale x 1 x i64> @vor_vx_nxv1i64(<vscale x 1 x i64> %va, i64 %b) { 887; CHECK-LABEL: vor_vx_nxv1i64: 888; CHECK: # %bb.0: 889; CHECK-NEXT: vsetvli a1, zero, e64, m1, ta, mu 890; CHECK-NEXT: vor.vx v8, v8, a0 891; CHECK-NEXT: ret 892 %head = insertelement <vscale x 1 x i64> undef, i64 %b, i32 0 893 %splat = shufflevector <vscale x 1 x i64> %head, <vscale x 1 x i64> undef, <vscale x 1 x i32> zeroinitializer 894 %vc = or <vscale x 1 x i64> %va, %splat 895 ret <vscale x 1 x i64> %vc 896} 897 898define <vscale x 1 x i64> @vor_vx_nxv1i64_0(<vscale x 1 x i64> %va) { 899; CHECK-LABEL: vor_vx_nxv1i64_0: 900; CHECK: # %bb.0: 901; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, mu 902; CHECK-NEXT: vor.vi v8, v8, -12 903; CHECK-NEXT: ret 904 %head = insertelement <vscale x 1 x i64> undef, i64 -12, i32 0 905 %splat = shufflevector <vscale x 1 x i64> %head, <vscale x 1 x i64> undef, <vscale x 1 x i32> zeroinitializer 906 %vc = or <vscale x 1 x i64> %va, %splat 907 ret <vscale x 1 x i64> %vc 908} 909 910define <vscale x 1 x i64> @vor_vx_nxv1i64_1(<vscale x 1 x i64> %va) { 911; CHECK-LABEL: vor_vx_nxv1i64_1: 912; CHECK: # %bb.0: 913; CHECK-NEXT: vsetvli a0, zero, e64, m1, ta, mu 914; CHECK-NEXT: vor.vi v8, v8, 15 915; CHECK-NEXT: ret 916 %head = insertelement <vscale x 1 x i64> undef, i64 15, i32 0 917 %splat = shufflevector <vscale x 1 x i64> %head, <vscale x 1 x i64> undef, <vscale x 1 x i32> zeroinitializer 918 %vc = or <vscale x 1 x i64> %va, %splat 919 ret <vscale x 1 x i64> %vc 920} 921 922define <vscale x 1 x i64> @vor_vx_nxv1i64_2(<vscale x 1 x i64> %va) { 923; CHECK-LABEL: vor_vx_nxv1i64_2: 924; CHECK: # %bb.0: 925; CHECK-NEXT: addi a0, zero, 16 926; CHECK-NEXT: vsetvli a1, zero, e64, m1, ta, mu 927; CHECK-NEXT: vor.vx v8, v8, a0 928; CHECK-NEXT: ret 929 %head = insertelement <vscale x 1 x i64> undef, i64 16, i32 0 930 %splat = shufflevector <vscale x 1 x i64> %head, <vscale x 1 x i64> undef, <vscale x 1 x i32> zeroinitializer 931 %vc = or <vscale x 1 x i64> %va, %splat 932 ret <vscale x 1 x i64> %vc 933} 934 935define <vscale x 2 x i64> @vor_vx_nxv2i64(<vscale x 2 x i64> %va, i64 %b) { 936; CHECK-LABEL: vor_vx_nxv2i64: 937; CHECK: # %bb.0: 938; CHECK-NEXT: vsetvli a1, zero, e64, m2, ta, mu 939; CHECK-NEXT: vor.vx v8, v8, a0 940; CHECK-NEXT: ret 941 %head = insertelement <vscale x 2 x i64> undef, i64 %b, i32 0 942 %splat = shufflevector <vscale x 2 x i64> %head, <vscale x 2 x i64> undef, <vscale x 2 x i32> zeroinitializer 943 %vc = or <vscale x 2 x i64> %va, %splat 944 ret <vscale x 2 x i64> %vc 945} 946 947define <vscale x 2 x i64> @vor_vx_nxv2i64_0(<vscale x 2 x i64> %va) { 948; CHECK-LABEL: vor_vx_nxv2i64_0: 949; CHECK: # %bb.0: 950; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, mu 951; CHECK-NEXT: vor.vi v8, v8, -12 952; CHECK-NEXT: ret 953 %head = insertelement <vscale x 2 x i64> undef, i64 -12, i32 0 954 %splat = shufflevector <vscale x 2 x i64> %head, <vscale x 2 x i64> undef, <vscale x 2 x i32> zeroinitializer 955 %vc = or <vscale x 2 x i64> %va, %splat 956 ret <vscale x 2 x i64> %vc 957} 958 959define <vscale x 2 x i64> @vor_vx_nxv2i64_1(<vscale x 2 x i64> %va) { 960; CHECK-LABEL: vor_vx_nxv2i64_1: 961; CHECK: # %bb.0: 962; CHECK-NEXT: vsetvli a0, zero, e64, m2, ta, mu 963; CHECK-NEXT: vor.vi v8, v8, 15 964; CHECK-NEXT: ret 965 %head = insertelement <vscale x 2 x i64> undef, i64 15, i32 0 966 %splat = shufflevector <vscale x 2 x i64> %head, <vscale x 2 x i64> undef, <vscale x 2 x i32> zeroinitializer 967 %vc = or <vscale x 2 x i64> %va, %splat 968 ret <vscale x 2 x i64> %vc 969} 970 971define <vscale x 2 x i64> @vor_vx_nxv2i64_2(<vscale x 2 x i64> %va) { 972; CHECK-LABEL: vor_vx_nxv2i64_2: 973; CHECK: # %bb.0: 974; CHECK-NEXT: addi a0, zero, 16 975; CHECK-NEXT: vsetvli a1, zero, e64, m2, ta, mu 976; CHECK-NEXT: vor.vx v8, v8, a0 977; CHECK-NEXT: ret 978 %head = insertelement <vscale x 2 x i64> undef, i64 16, i32 0 979 %splat = shufflevector <vscale x 2 x i64> %head, <vscale x 2 x i64> undef, <vscale x 2 x i32> zeroinitializer 980 %vc = or <vscale x 2 x i64> %va, %splat 981 ret <vscale x 2 x i64> %vc 982} 983 984define <vscale x 4 x i64> @vor_vx_nxv4i64(<vscale x 4 x i64> %va, i64 %b) { 985; CHECK-LABEL: vor_vx_nxv4i64: 986; CHECK: # %bb.0: 987; CHECK-NEXT: vsetvli a1, zero, e64, m4, ta, mu 988; CHECK-NEXT: vor.vx v8, v8, a0 989; CHECK-NEXT: ret 990 %head = insertelement <vscale x 4 x i64> undef, i64 %b, i32 0 991 %splat = shufflevector <vscale x 4 x i64> %head, <vscale x 4 x i64> undef, <vscale x 4 x i32> zeroinitializer 992 %vc = or <vscale x 4 x i64> %va, %splat 993 ret <vscale x 4 x i64> %vc 994} 995 996define <vscale x 4 x i64> @vor_vx_nxv4i64_0(<vscale x 4 x i64> %va) { 997; CHECK-LABEL: vor_vx_nxv4i64_0: 998; CHECK: # %bb.0: 999; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, mu 1000; CHECK-NEXT: vor.vi v8, v8, -12 1001; CHECK-NEXT: ret 1002 %head = insertelement <vscale x 4 x i64> undef, i64 -12, i32 0 1003 %splat = shufflevector <vscale x 4 x i64> %head, <vscale x 4 x i64> undef, <vscale x 4 x i32> zeroinitializer 1004 %vc = or <vscale x 4 x i64> %va, %splat 1005 ret <vscale x 4 x i64> %vc 1006} 1007 1008define <vscale x 4 x i64> @vor_vx_nxv4i64_1(<vscale x 4 x i64> %va) { 1009; CHECK-LABEL: vor_vx_nxv4i64_1: 1010; CHECK: # %bb.0: 1011; CHECK-NEXT: vsetvli a0, zero, e64, m4, ta, mu 1012; CHECK-NEXT: vor.vi v8, v8, 15 1013; CHECK-NEXT: ret 1014 %head = insertelement <vscale x 4 x i64> undef, i64 15, i32 0 1015 %splat = shufflevector <vscale x 4 x i64> %head, <vscale x 4 x i64> undef, <vscale x 4 x i32> zeroinitializer 1016 %vc = or <vscale x 4 x i64> %va, %splat 1017 ret <vscale x 4 x i64> %vc 1018} 1019 1020define <vscale x 4 x i64> @vor_vx_nxv4i64_2(<vscale x 4 x i64> %va) { 1021; CHECK-LABEL: vor_vx_nxv4i64_2: 1022; CHECK: # %bb.0: 1023; CHECK-NEXT: addi a0, zero, 16 1024; CHECK-NEXT: vsetvli a1, zero, e64, m4, ta, mu 1025; CHECK-NEXT: vor.vx v8, v8, a0 1026; CHECK-NEXT: ret 1027 %head = insertelement <vscale x 4 x i64> undef, i64 16, i32 0 1028 %splat = shufflevector <vscale x 4 x i64> %head, <vscale x 4 x i64> undef, <vscale x 4 x i32> zeroinitializer 1029 %vc = or <vscale x 4 x i64> %va, %splat 1030 ret <vscale x 4 x i64> %vc 1031} 1032 1033define <vscale x 8 x i64> @vor_vx_nxv8i64(<vscale x 8 x i64> %va, i64 %b) { 1034; CHECK-LABEL: vor_vx_nxv8i64: 1035; CHECK: # %bb.0: 1036; CHECK-NEXT: vsetvli a1, zero, e64, m8, ta, mu 1037; CHECK-NEXT: vor.vx v8, v8, a0 1038; CHECK-NEXT: ret 1039 %head = insertelement <vscale x 8 x i64> undef, i64 %b, i32 0 1040 %splat = shufflevector <vscale x 8 x i64> %head, <vscale x 8 x i64> undef, <vscale x 8 x i32> zeroinitializer 1041 %vc = or <vscale x 8 x i64> %va, %splat 1042 ret <vscale x 8 x i64> %vc 1043} 1044 1045define <vscale x 8 x i64> @vor_vx_nxv8i64_0(<vscale x 8 x i64> %va) { 1046; CHECK-LABEL: vor_vx_nxv8i64_0: 1047; CHECK: # %bb.0: 1048; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, mu 1049; CHECK-NEXT: vor.vi v8, v8, -12 1050; CHECK-NEXT: ret 1051 %head = insertelement <vscale x 8 x i64> undef, i64 -12, i32 0 1052 %splat = shufflevector <vscale x 8 x i64> %head, <vscale x 8 x i64> undef, <vscale x 8 x i32> zeroinitializer 1053 %vc = or <vscale x 8 x i64> %va, %splat 1054 ret <vscale x 8 x i64> %vc 1055} 1056 1057define <vscale x 8 x i64> @vor_vx_nxv8i64_1(<vscale x 8 x i64> %va) { 1058; CHECK-LABEL: vor_vx_nxv8i64_1: 1059; CHECK: # %bb.0: 1060; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, mu 1061; CHECK-NEXT: vor.vi v8, v8, 15 1062; CHECK-NEXT: ret 1063 %head = insertelement <vscale x 8 x i64> undef, i64 15, i32 0 1064 %splat = shufflevector <vscale x 8 x i64> %head, <vscale x 8 x i64> undef, <vscale x 8 x i32> zeroinitializer 1065 %vc = or <vscale x 8 x i64> %va, %splat 1066 ret <vscale x 8 x i64> %vc 1067} 1068 1069define <vscale x 8 x i64> @vor_vx_nxv8i64_2(<vscale x 8 x i64> %va) { 1070; CHECK-LABEL: vor_vx_nxv8i64_2: 1071; CHECK: # %bb.0: 1072; CHECK-NEXT: addi a0, zero, 16 1073; CHECK-NEXT: vsetvli a1, zero, e64, m8, ta, mu 1074; CHECK-NEXT: vor.vx v8, v8, a0 1075; CHECK-NEXT: ret 1076 %head = insertelement <vscale x 8 x i64> undef, i64 16, i32 0 1077 %splat = shufflevector <vscale x 8 x i64> %head, <vscale x 8 x i64> undef, <vscale x 8 x i32> zeroinitializer 1078 %vc = or <vscale x 8 x i64> %va, %splat 1079 ret <vscale x 8 x i64> %vc 1080} 1081 1082 1083define <vscale x 8 x i64> @vor_vx_nxv8i64_3(<vscale x 8 x i64> %va) { 1084; CHECK-LABEL: vor_vx_nxv8i64_3: 1085; CHECK: # %bb.0: 1086; CHECK-NEXT: vsetvli a0, zero, e64, m8, ta, mu 1087; CHECK-NEXT: vmv.v.i v8, -1 1088; CHECK-NEXT: ret 1089 %head = insertelement <vscale x 8 x i64> undef, i64 -1, i32 0 1090 %splat = shufflevector <vscale x 8 x i64> %head, <vscale x 8 x i64> undef, <vscale x 8 x i32> zeroinitializer 1091 %vc = or <vscale x 8 x i64> %va, %splat 1092 ret <vscale x 8 x i64> %vc 1093} 1094