1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py 2; RUN: opt < %s -instsimplify -S | FileCheck %s 3 4declare i32 @llvm.vector.reduce.add.v1i32(<1 x i32> %a) 5declare i32 @llvm.vector.reduce.add.v8i32(<8 x i32> %a) 6declare i32 @llvm.vector.reduce.mul.v1i32(<1 x i32> %a) 7declare i32 @llvm.vector.reduce.mul.v8i32(<8 x i32> %a) 8declare i32 @llvm.vector.reduce.and.v1i32(<1 x i32> %a) 9declare i32 @llvm.vector.reduce.and.v8i32(<8 x i32> %a) 10declare i32 @llvm.vector.reduce.or.v1i32(<1 x i32> %a) 11declare i32 @llvm.vector.reduce.or.v8i32(<8 x i32> %a) 12declare i32 @llvm.vector.reduce.xor.v1i32(<1 x i32> %a) 13declare i32 @llvm.vector.reduce.xor.v8i32(<8 x i32> %a) 14declare i32 @llvm.vector.reduce.smin.v1i32(<1 x i32> %a) 15declare i32 @llvm.vector.reduce.smin.v8i32(<8 x i32> %a) 16declare i32 @llvm.vector.reduce.smax.v1i32(<1 x i32> %a) 17declare i32 @llvm.vector.reduce.smax.v8i32(<8 x i32> %a) 18declare i32 @llvm.vector.reduce.umin.v1i32(<1 x i32> %a) 19declare i32 @llvm.vector.reduce.umin.v8i32(<8 x i32> %a) 20declare i32 @llvm.vector.reduce.umax.v1i32(<1 x i32> %a) 21declare i32 @llvm.vector.reduce.umax.v8i32(<8 x i32> %a) 22 23 24define i32 @add_0() { 25; CHECK-LABEL: @add_0( 26; CHECK-NEXT: ret i32 0 27; 28 %x = call i32 @llvm.vector.reduce.add.v8i32(<8 x i32> zeroinitializer) 29 ret i32 %x 30} 31 32define i32 @add_1() { 33; CHECK-LABEL: @add_1( 34; CHECK-NEXT: ret i32 8 35; 36 %x = call i32 @llvm.vector.reduce.add.v8i32(<8 x i32> <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>) 37 ret i32 %x 38} 39 40define i32 @add_inc() { 41; CHECK-LABEL: @add_inc( 42; CHECK-NEXT: ret i32 18 43; 44 %x = call i32 @llvm.vector.reduce.add.v8i32(<8 x i32> <i32 1, i32 -3, i32 5, i32 7, i32 2, i32 4, i32 -6, i32 8>) 45 ret i32 %x 46} 47 48define i32 @add_1v() { 49; CHECK-LABEL: @add_1v( 50; CHECK-NEXT: ret i32 10 51; 52 %x = call i32 @llvm.vector.reduce.add.v1i32(<1 x i32> <i32 10>) 53 ret i32 %x 54} 55 56define i32 @add_undef() { 57; CHECK-LABEL: @add_undef( 58; CHECK-NEXT: [[X:%.*]] = call i32 @llvm.vector.reduce.add.v8i32(<8 x i32> undef) 59; CHECK-NEXT: ret i32 [[X]] 60; 61 %x = call i32 @llvm.vector.reduce.add.v8i32(<8 x i32> undef) 62 ret i32 %x 63} 64 65define i32 @add_undef1() { 66; CHECK-LABEL: @add_undef1( 67; CHECK-NEXT: [[X:%.*]] = call i32 @llvm.vector.reduce.add.v8i32(<8 x i32> <i32 1, i32 1, i32 undef, i32 1, i32 1, i32 1, i32 1, i32 1>) 68; CHECK-NEXT: ret i32 [[X]] 69; 70 %x = call i32 @llvm.vector.reduce.add.v8i32(<8 x i32> <i32 1, i32 1, i32 undef, i32 1, i32 1, i32 1, i32 1, i32 1>) 71 ret i32 %x 72} 73 74define i32 @add_poison() { 75; CHECK-LABEL: @add_poison( 76; CHECK-NEXT: ret i32 poison 77; 78 %x = call i32 @llvm.vector.reduce.add.v8i32(<8 x i32> poison) 79 ret i32 %x 80} 81 82 83 84define i32 @mul_0() { 85; CHECK-LABEL: @mul_0( 86; CHECK-NEXT: ret i32 0 87; 88 %x = call i32 @llvm.vector.reduce.mul.v8i32(<8 x i32> zeroinitializer) 89 ret i32 %x 90} 91 92define i32 @mul_1() { 93; CHECK-LABEL: @mul_1( 94; CHECK-NEXT: ret i32 1 95; 96 %x = call i32 @llvm.vector.reduce.mul.v8i32(<8 x i32> <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>) 97 ret i32 %x 98} 99 100define i32 @mul_inc() { 101; CHECK-LABEL: @mul_inc( 102; CHECK-NEXT: ret i32 40320 103; 104 %x = call i32 @llvm.vector.reduce.mul.v8i32(<8 x i32> <i32 1, i32 -3, i32 5, i32 7, i32 2, i32 4, i32 -6, i32 8>) 105 ret i32 %x 106} 107 108define i32 @mul_1v() { 109; CHECK-LABEL: @mul_1v( 110; CHECK-NEXT: ret i32 10 111; 112 %x = call i32 @llvm.vector.reduce.mul.v1i32(<1 x i32> <i32 10>) 113 ret i32 %x 114} 115 116define i32 @mul_undef() { 117; CHECK-LABEL: @mul_undef( 118; CHECK-NEXT: [[X:%.*]] = call i32 @llvm.vector.reduce.mul.v8i32(<8 x i32> undef) 119; CHECK-NEXT: ret i32 [[X]] 120; 121 %x = call i32 @llvm.vector.reduce.mul.v8i32(<8 x i32> undef) 122 ret i32 %x 123} 124 125define i32 @mul_undef1() { 126; CHECK-LABEL: @mul_undef1( 127; CHECK-NEXT: [[X:%.*]] = call i32 @llvm.vector.reduce.mul.v8i32(<8 x i32> <i32 1, i32 1, i32 undef, i32 1, i32 1, i32 1, i32 1, i32 1>) 128; CHECK-NEXT: ret i32 [[X]] 129; 130 %x = call i32 @llvm.vector.reduce.mul.v8i32(<8 x i32> <i32 1, i32 1, i32 undef, i32 1, i32 1, i32 1, i32 1, i32 1>) 131 ret i32 %x 132} 133 134define i32 @mul_poison() { 135; CHECK-LABEL: @mul_poison( 136; CHECK-NEXT: ret i32 poison 137; 138 %x = call i32 @llvm.vector.reduce.mul.v8i32(<8 x i32> poison) 139 ret i32 %x 140} 141 142 143define i32 @and_0() { 144; CHECK-LABEL: @and_0( 145; CHECK-NEXT: ret i32 0 146; 147 %x = call i32 @llvm.vector.reduce.and.v8i32(<8 x i32> zeroinitializer) 148 ret i32 %x 149} 150 151define i32 @and_1() { 152; CHECK-LABEL: @and_1( 153; CHECK-NEXT: ret i32 1 154; 155 %x = call i32 @llvm.vector.reduce.and.v8i32(<8 x i32> <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>) 156 ret i32 %x 157} 158 159define i32 @and_inc() { 160; CHECK-LABEL: @and_inc( 161; CHECK-NEXT: ret i32 0 162; 163 %x = call i32 @llvm.vector.reduce.and.v8i32(<8 x i32> <i32 1, i32 -3, i32 5, i32 7, i32 2, i32 4, i32 -6, i32 8>) 164 ret i32 %x 165} 166 167define i32 @and_1v() { 168; CHECK-LABEL: @and_1v( 169; CHECK-NEXT: ret i32 10 170; 171 %x = call i32 @llvm.vector.reduce.and.v1i32(<1 x i32> <i32 10>) 172 ret i32 %x 173} 174 175define i32 @and_undef() { 176; CHECK-LABEL: @and_undef( 177; CHECK-NEXT: [[X:%.*]] = call i32 @llvm.vector.reduce.and.v8i32(<8 x i32> undef) 178; CHECK-NEXT: ret i32 [[X]] 179; 180 %x = call i32 @llvm.vector.reduce.and.v8i32(<8 x i32> undef) 181 ret i32 %x 182} 183 184define i32 @and_undef1() { 185; CHECK-LABEL: @and_undef1( 186; CHECK-NEXT: [[X:%.*]] = call i32 @llvm.vector.reduce.and.v8i32(<8 x i32> <i32 1, i32 1, i32 undef, i32 1, i32 1, i32 1, i32 1, i32 1>) 187; CHECK-NEXT: ret i32 [[X]] 188; 189 %x = call i32 @llvm.vector.reduce.and.v8i32(<8 x i32> <i32 1, i32 1, i32 undef, i32 1, i32 1, i32 1, i32 1, i32 1>) 190 ret i32 %x 191} 192 193define i32 @and_poison() { 194; CHECK-LABEL: @and_poison( 195; CHECK-NEXT: ret i32 poison 196; 197 %x = call i32 @llvm.vector.reduce.and.v8i32(<8 x i32> poison) 198 ret i32 %x 199} 200 201 202define i32 @or_0() { 203; CHECK-LABEL: @or_0( 204; CHECK-NEXT: ret i32 0 205; 206 %x = call i32 @llvm.vector.reduce.or.v8i32(<8 x i32> zeroinitializer) 207 ret i32 %x 208} 209 210define i32 @or_1() { 211; CHECK-LABEL: @or_1( 212; CHECK-NEXT: ret i32 1 213; 214 %x = call i32 @llvm.vector.reduce.or.v8i32(<8 x i32> <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>) 215 ret i32 %x 216} 217 218define i32 @or_inc() { 219; CHECK-LABEL: @or_inc( 220; CHECK-NEXT: ret i32 -1 221; 222 %x = call i32 @llvm.vector.reduce.or.v8i32(<8 x i32> <i32 1, i32 -3, i32 5, i32 7, i32 2, i32 4, i32 -6, i32 8>) 223 ret i32 %x 224} 225 226define i32 @or_1v() { 227; CHECK-LABEL: @or_1v( 228; CHECK-NEXT: ret i32 10 229; 230 %x = call i32 @llvm.vector.reduce.or.v1i32(<1 x i32> <i32 10>) 231 ret i32 %x 232} 233 234define i32 @or_undef() { 235; CHECK-LABEL: @or_undef( 236; CHECK-NEXT: [[X:%.*]] = call i32 @llvm.vector.reduce.or.v8i32(<8 x i32> undef) 237; CHECK-NEXT: ret i32 [[X]] 238; 239 %x = call i32 @llvm.vector.reduce.or.v8i32(<8 x i32> undef) 240 ret i32 %x 241} 242 243define i32 @or_undef1() { 244; CHECK-LABEL: @or_undef1( 245; CHECK-NEXT: [[X:%.*]] = call i32 @llvm.vector.reduce.or.v8i32(<8 x i32> <i32 1, i32 1, i32 undef, i32 1, i32 1, i32 1, i32 1, i32 1>) 246; CHECK-NEXT: ret i32 [[X]] 247; 248 %x = call i32 @llvm.vector.reduce.or.v8i32(<8 x i32> <i32 1, i32 1, i32 undef, i32 1, i32 1, i32 1, i32 1, i32 1>) 249 ret i32 %x 250} 251 252define i32 @or_poison() { 253; CHECK-LABEL: @or_poison( 254; CHECK-NEXT: ret i32 poison 255; 256 %x = call i32 @llvm.vector.reduce.or.v8i32(<8 x i32> poison) 257 ret i32 %x 258} 259 260 261define i32 @xor_0() { 262; CHECK-LABEL: @xor_0( 263; CHECK-NEXT: ret i32 0 264; 265 %x = call i32 @llvm.vector.reduce.xor.v8i32(<8 x i32> zeroinitializer) 266 ret i32 %x 267} 268 269define i32 @xor_1() { 270; CHECK-LABEL: @xor_1( 271; CHECK-NEXT: ret i32 0 272; 273 %x = call i32 @llvm.vector.reduce.xor.v8i32(<8 x i32> <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>) 274 ret i32 %x 275} 276 277define i32 @xor_inc() { 278; CHECK-LABEL: @xor_inc( 279; CHECK-NEXT: ret i32 10 280; 281 %x = call i32 @llvm.vector.reduce.xor.v8i32(<8 x i32> <i32 1, i32 -3, i32 5, i32 7, i32 2, i32 4, i32 -6, i32 8>) 282 ret i32 %x 283} 284 285define i32 @xor_1v() { 286; CHECK-LABEL: @xor_1v( 287; CHECK-NEXT: ret i32 10 288; 289 %x = call i32 @llvm.vector.reduce.xor.v1i32(<1 x i32> <i32 10>) 290 ret i32 %x 291} 292 293define i32 @xor_undef() { 294; CHECK-LABEL: @xor_undef( 295; CHECK-NEXT: [[X:%.*]] = call i32 @llvm.vector.reduce.xor.v8i32(<8 x i32> undef) 296; CHECK-NEXT: ret i32 [[X]] 297; 298 %x = call i32 @llvm.vector.reduce.xor.v8i32(<8 x i32> undef) 299 ret i32 %x 300} 301 302define i32 @xor_undef1() { 303; CHECK-LABEL: @xor_undef1( 304; CHECK-NEXT: [[X:%.*]] = call i32 @llvm.vector.reduce.xor.v8i32(<8 x i32> <i32 1, i32 1, i32 undef, i32 1, i32 1, i32 1, i32 1, i32 1>) 305; CHECK-NEXT: ret i32 [[X]] 306; 307 %x = call i32 @llvm.vector.reduce.xor.v8i32(<8 x i32> <i32 1, i32 1, i32 undef, i32 1, i32 1, i32 1, i32 1, i32 1>) 308 ret i32 %x 309} 310 311define i32 @xor_poison() { 312; CHECK-LABEL: @xor_poison( 313; CHECK-NEXT: ret i32 poison 314; 315 %x = call i32 @llvm.vector.reduce.xor.v8i32(<8 x i32> poison) 316 ret i32 %x 317} 318 319 320define i32 @smin_0() { 321; CHECK-LABEL: @smin_0( 322; CHECK-NEXT: ret i32 0 323; 324 %x = call i32 @llvm.vector.reduce.smin.v8i32(<8 x i32> zeroinitializer) 325 ret i32 %x 326} 327 328define i32 @smin_1() { 329; CHECK-LABEL: @smin_1( 330; CHECK-NEXT: ret i32 1 331; 332 %x = call i32 @llvm.vector.reduce.smin.v8i32(<8 x i32> <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>) 333 ret i32 %x 334} 335 336define i32 @smin_inc() { 337; CHECK-LABEL: @smin_inc( 338; CHECK-NEXT: ret i32 -6 339; 340 %x = call i32 @llvm.vector.reduce.smin.v8i32(<8 x i32> <i32 1, i32 -3, i32 5, i32 7, i32 2, i32 4, i32 -6, i32 8>) 341 ret i32 %x 342} 343 344define i32 @smin_1v() { 345; CHECK-LABEL: @smin_1v( 346; CHECK-NEXT: ret i32 10 347; 348 %x = call i32 @llvm.vector.reduce.smin.v1i32(<1 x i32> <i32 10>) 349 ret i32 %x 350} 351 352define i32 @smin_undef() { 353; CHECK-LABEL: @smin_undef( 354; CHECK-NEXT: [[X:%.*]] = call i32 @llvm.vector.reduce.smin.v8i32(<8 x i32> undef) 355; CHECK-NEXT: ret i32 [[X]] 356; 357 %x = call i32 @llvm.vector.reduce.smin.v8i32(<8 x i32> undef) 358 ret i32 %x 359} 360 361define i32 @smin_undef1() { 362; CHECK-LABEL: @smin_undef1( 363; CHECK-NEXT: [[X:%.*]] = call i32 @llvm.vector.reduce.smin.v8i32(<8 x i32> <i32 1, i32 1, i32 undef, i32 1, i32 1, i32 1, i32 1, i32 1>) 364; CHECK-NEXT: ret i32 [[X]] 365; 366 %x = call i32 @llvm.vector.reduce.smin.v8i32(<8 x i32> <i32 1, i32 1, i32 undef, i32 1, i32 1, i32 1, i32 1, i32 1>) 367 ret i32 %x 368} 369 370define i32 @smin_poison() { 371; CHECK-LABEL: @smin_poison( 372; CHECK-NEXT: ret i32 poison 373; 374 %x = call i32 @llvm.vector.reduce.smin.v8i32(<8 x i32> poison) 375 ret i32 %x 376} 377 378 379define i32 @smax_0() { 380; CHECK-LABEL: @smax_0( 381; CHECK-NEXT: ret i32 0 382; 383 %x = call i32 @llvm.vector.reduce.smax.v8i32(<8 x i32> zeroinitializer) 384 ret i32 %x 385} 386 387define i32 @smax_1() { 388; CHECK-LABEL: @smax_1( 389; CHECK-NEXT: ret i32 1 390; 391 %x = call i32 @llvm.vector.reduce.smax.v8i32(<8 x i32> <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>) 392 ret i32 %x 393} 394 395define i32 @smax_inc() { 396; CHECK-LABEL: @smax_inc( 397; CHECK-NEXT: ret i32 8 398; 399 %x = call i32 @llvm.vector.reduce.smax.v8i32(<8 x i32> <i32 1, i32 -3, i32 5, i32 7, i32 2, i32 4, i32 -6, i32 8>) 400 ret i32 %x 401} 402 403define i32 @smax_1v() { 404; CHECK-LABEL: @smax_1v( 405; CHECK-NEXT: ret i32 10 406; 407 %x = call i32 @llvm.vector.reduce.smax.v1i32(<1 x i32> <i32 10>) 408 ret i32 %x 409} 410 411define i32 @smax_undef() { 412; CHECK-LABEL: @smax_undef( 413; CHECK-NEXT: [[X:%.*]] = call i32 @llvm.vector.reduce.smax.v8i32(<8 x i32> undef) 414; CHECK-NEXT: ret i32 [[X]] 415; 416 %x = call i32 @llvm.vector.reduce.smax.v8i32(<8 x i32> undef) 417 ret i32 %x 418} 419 420define i32 @smax_undef1() { 421; CHECK-LABEL: @smax_undef1( 422; CHECK-NEXT: [[X:%.*]] = call i32 @llvm.vector.reduce.smax.v8i32(<8 x i32> <i32 1, i32 1, i32 undef, i32 1, i32 1, i32 1, i32 1, i32 1>) 423; CHECK-NEXT: ret i32 [[X]] 424; 425 %x = call i32 @llvm.vector.reduce.smax.v8i32(<8 x i32> <i32 1, i32 1, i32 undef, i32 1, i32 1, i32 1, i32 1, i32 1>) 426 ret i32 %x 427} 428 429define i32 @smax_poison() { 430; CHECK-LABEL: @smax_poison( 431; CHECK-NEXT: ret i32 poison 432; 433 %x = call i32 @llvm.vector.reduce.smax.v8i32(<8 x i32> poison) 434 ret i32 %x 435} 436 437 438define i32 @umin_0() { 439; CHECK-LABEL: @umin_0( 440; CHECK-NEXT: ret i32 0 441; 442 %x = call i32 @llvm.vector.reduce.umin.v8i32(<8 x i32> zeroinitializer) 443 ret i32 %x 444} 445 446define i32 @umin_1() { 447; CHECK-LABEL: @umin_1( 448; CHECK-NEXT: ret i32 1 449; 450 %x = call i32 @llvm.vector.reduce.umin.v8i32(<8 x i32> <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>) 451 ret i32 %x 452} 453 454define i32 @umin_inc() { 455; CHECK-LABEL: @umin_inc( 456; CHECK-NEXT: ret i32 1 457; 458 %x = call i32 @llvm.vector.reduce.umin.v8i32(<8 x i32> <i32 1, i32 -3, i32 5, i32 7, i32 2, i32 4, i32 -6, i32 8>) 459 ret i32 %x 460} 461 462define i32 @umin_1v() { 463; CHECK-LABEL: @umin_1v( 464; CHECK-NEXT: ret i32 10 465; 466 %x = call i32 @llvm.vector.reduce.umin.v1i32(<1 x i32> <i32 10>) 467 ret i32 %x 468} 469 470define i32 @umin_undef() { 471; CHECK-LABEL: @umin_undef( 472; CHECK-NEXT: [[X:%.*]] = call i32 @llvm.vector.reduce.umin.v8i32(<8 x i32> undef) 473; CHECK-NEXT: ret i32 [[X]] 474; 475 %x = call i32 @llvm.vector.reduce.umin.v8i32(<8 x i32> undef) 476 ret i32 %x 477} 478 479define i32 @umin_undef1() { 480; CHECK-LABEL: @umin_undef1( 481; CHECK-NEXT: [[X:%.*]] = call i32 @llvm.vector.reduce.umin.v8i32(<8 x i32> <i32 1, i32 1, i32 undef, i32 1, i32 1, i32 1, i32 1, i32 1>) 482; CHECK-NEXT: ret i32 [[X]] 483; 484 %x = call i32 @llvm.vector.reduce.umin.v8i32(<8 x i32> <i32 1, i32 1, i32 undef, i32 1, i32 1, i32 1, i32 1, i32 1>) 485 ret i32 %x 486} 487 488define i32 @umin_poison() { 489; CHECK-LABEL: @umin_poison( 490; CHECK-NEXT: ret i32 poison 491; 492 %x = call i32 @llvm.vector.reduce.umin.v8i32(<8 x i32> poison) 493 ret i32 %x 494} 495 496 497define i32 @umax_0() { 498; CHECK-LABEL: @umax_0( 499; CHECK-NEXT: ret i32 0 500; 501 %x = call i32 @llvm.vector.reduce.umax.v8i32(<8 x i32> zeroinitializer) 502 ret i32 %x 503} 504 505define i32 @umax_1() { 506; CHECK-LABEL: @umax_1( 507; CHECK-NEXT: ret i32 1 508; 509 %x = call i32 @llvm.vector.reduce.umax.v8i32(<8 x i32> <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>) 510 ret i32 %x 511} 512 513define i32 @umax_inc() { 514; CHECK-LABEL: @umax_inc( 515; CHECK-NEXT: ret i32 -3 516; 517 %x = call i32 @llvm.vector.reduce.umax.v8i32(<8 x i32> <i32 1, i32 -3, i32 5, i32 7, i32 2, i32 4, i32 -6, i32 8>) 518 ret i32 %x 519} 520 521define i32 @umax_1v() { 522; CHECK-LABEL: @umax_1v( 523; CHECK-NEXT: ret i32 10 524; 525 %x = call i32 @llvm.vector.reduce.umax.v1i32(<1 x i32> <i32 10>) 526 ret i32 %x 527} 528 529define i32 @umax_undef() { 530; CHECK-LABEL: @umax_undef( 531; CHECK-NEXT: [[X:%.*]] = call i32 @llvm.vector.reduce.umax.v8i32(<8 x i32> undef) 532; CHECK-NEXT: ret i32 [[X]] 533; 534 %x = call i32 @llvm.vector.reduce.umax.v8i32(<8 x i32> undef) 535 ret i32 %x 536} 537 538define i32 @umax_undef1d() { 539; CHECK-LABEL: @umax_undef1d( 540; CHECK-NEXT: [[X:%.*]] = call i32 @llvm.vector.reduce.umax.v8i32(<8 x i32> <i32 1, i32 1, i32 undef, i32 1, i32 1, i32 1, i32 1, i32 1>) 541; CHECK-NEXT: ret i32 [[X]] 542; 543 %x = call i32 @llvm.vector.reduce.umax.v8i32(<8 x i32> <i32 1, i32 1, i32 undef, i32 1, i32 1, i32 1, i32 1, i32 1>) 544 ret i32 %x 545} 546 547define i32 @umax_poison() { 548; CHECK-LABEL: @umax_poison( 549; CHECK-NEXT: ret i32 poison 550; 551 %x = call i32 @llvm.vector.reduce.umax.v8i32(<8 x i32> poison) 552 ret i32 %x 553} 554