1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; NOTE: Test functions have been generated by multivalue-stackify.py. 3 4; RUN: llc < %s -verify-machineinstrs -mattr=+multivalue -target-abi=experimental-mv | FileCheck %s 5 6; Test that the multivalue stackification works 7 8target triple = "wasm32-unknown-unknown" 9 10declare {i32} @op_0_to_1() 11declare {i32, i32} @op_0_to_2() 12declare {i32, i32, i32} @op_0_to_3() 13declare void @op_1_to_0(i32 %t0) 14declare {i32} @op_1_to_1(i32 %t0) 15declare {i32, i32} @op_1_to_2(i32 %t0) 16declare {i32, i32, i32} @op_1_to_3(i32 %t0) 17declare void @op_2_to_0(i32 %t0, i32 %t1) 18declare {i32} @op_2_to_1(i32 %t0, i32 %t1) 19declare {i32, i32} @op_2_to_2(i32 %t0, i32 %t1) 20declare {i32, i32, i32} @op_2_to_3(i32 %t0, i32 %t1) 21 22define void @f2() { 23; CHECK-LABEL: f2: 24; CHECK: .functype f2 () -> () 25; CHECK-NEXT: # %bb.0: 26; CHECK-NEXT: call op_0_to_2 27; CHECK-NEXT: drop 28; CHECK-NEXT: drop 29; CHECK-NEXT: # fallthrough-return 30 %t0 = call {i32, i32} @op_0_to_2() 31 ret void 32} 33 34define void @f3() { 35; CHECK-LABEL: f3: 36; CHECK: .functype f3 () -> () 37; CHECK-NEXT: # %bb.0: 38; CHECK-NEXT: call op_0_to_3 39; CHECK-NEXT: drop 40; CHECK-NEXT: drop 41; CHECK-NEXT: drop 42; CHECK-NEXT: # fallthrough-return 43 %t0 = call {i32, i32, i32} @op_0_to_3() 44 ret void 45} 46 47define void @f12() { 48; CHECK-LABEL: f12: 49; CHECK: .functype f12 () -> () 50; CHECK-NEXT: # %bb.0: 51; CHECK-NEXT: call op_0_to_2 52; CHECK-NEXT: drop 53; CHECK-NEXT: call op_1_to_0 54; CHECK-NEXT: # fallthrough-return 55 %t0 = call {i32, i32} @op_0_to_2() 56 %t1 = extractvalue {i32, i32} %t0, 0 57 call void @op_1_to_0(i32 %t1) 58 ret void 59} 60 61define void @f13() { 62; CHECK-LABEL: f13: 63; CHECK: .functype f13 () -> () 64; CHECK-NEXT: .local i32 65; CHECK-NEXT: # %bb.0: 66; CHECK-NEXT: call op_0_to_2 67; CHECK-NEXT: local.set 0 68; CHECK-NEXT: drop 69; CHECK-NEXT: local.get 0 70; CHECK-NEXT: call op_1_to_0 71; CHECK-NEXT: # fallthrough-return 72 %t0 = call {i32, i32} @op_0_to_2() 73 %t1 = extractvalue {i32, i32} %t0, 1 74 call void @op_1_to_0(i32 %t1) 75 ret void 76} 77 78define void @f14() { 79; CHECK-LABEL: f14: 80; CHECK: .functype f14 () -> () 81; CHECK-NEXT: .local i32 82; CHECK-NEXT: # %bb.0: 83; CHECK-NEXT: call op_0_to_2 84; CHECK-NEXT: drop 85; CHECK-NEXT: local.tee 0 86; CHECK-NEXT: local.get 0 87; CHECK-NEXT: call op_2_to_0 88; CHECK-NEXT: # fallthrough-return 89 %t0 = call {i32, i32} @op_0_to_2() 90 %t1 = extractvalue {i32, i32} %t0, 0 91 %t2 = extractvalue {i32, i32} %t0, 0 92 call void @op_2_to_0(i32 %t1, i32 %t2) 93 ret void 94} 95 96define void @f15() { 97; CHECK-LABEL: f15: 98; CHECK: .functype f15 () -> () 99; CHECK-NEXT: # %bb.0: 100; CHECK-NEXT: call op_0_to_2 101; CHECK-NEXT: call op_2_to_0 102; CHECK-NEXT: # fallthrough-return 103 %t0 = call {i32, i32} @op_0_to_2() 104 %t1 = extractvalue {i32, i32} %t0, 0 105 %t2 = extractvalue {i32, i32} %t0, 1 106 call void @op_2_to_0(i32 %t1, i32 %t2) 107 ret void 108} 109 110define void @f16() { 111; CHECK-LABEL: f16: 112; CHECK: .functype f16 () -> () 113; CHECK-NEXT: .local i32, i32 114; CHECK-NEXT: # %bb.0: 115; CHECK-NEXT: call op_0_to_2 116; CHECK-NEXT: local.set 1 117; CHECK-NEXT: local.set 0 118; CHECK-NEXT: local.get 1 119; CHECK-NEXT: local.get 0 120; CHECK-NEXT: call op_2_to_0 121; CHECK-NEXT: # fallthrough-return 122 %t0 = call {i32, i32} @op_0_to_2() 123 %t1 = extractvalue {i32, i32} %t0, 1 124 %t2 = extractvalue {i32, i32} %t0, 0 125 call void @op_2_to_0(i32 %t1, i32 %t2) 126 ret void 127} 128 129define void @f17() { 130; CHECK-LABEL: f17: 131; CHECK: .functype f17 () -> () 132; CHECK-NEXT: .local i32 133; CHECK-NEXT: # %bb.0: 134; CHECK-NEXT: call op_0_to_2 135; CHECK-NEXT: local.set 0 136; CHECK-NEXT: drop 137; CHECK-NEXT: local.get 0 138; CHECK-NEXT: local.get 0 139; CHECK-NEXT: call op_2_to_0 140; CHECK-NEXT: # fallthrough-return 141 %t0 = call {i32, i32} @op_0_to_2() 142 %t1 = extractvalue {i32, i32} %t0, 1 143 %t2 = extractvalue {i32, i32} %t0, 1 144 call void @op_2_to_0(i32 %t1, i32 %t2) 145 ret void 146} 147 148define void @f25() { 149; CHECK-LABEL: f25: 150; CHECK: .functype f25 () -> () 151; CHECK-NEXT: # %bb.0: 152; CHECK-NEXT: call op_0_to_3 153; CHECK-NEXT: drop 154; CHECK-NEXT: drop 155; CHECK-NEXT: call op_1_to_0 156; CHECK-NEXT: # fallthrough-return 157 %t0 = call {i32, i32, i32} @op_0_to_3() 158 %t1 = extractvalue {i32, i32, i32} %t0, 0 159 call void @op_1_to_0(i32 %t1) 160 ret void 161} 162 163define void @f26() { 164; CHECK-LABEL: f26: 165; CHECK: .functype f26 () -> () 166; CHECK-NEXT: .local i32 167; CHECK-NEXT: # %bb.0: 168; CHECK-NEXT: call op_0_to_3 169; CHECK-NEXT: drop 170; CHECK-NEXT: local.set 0 171; CHECK-NEXT: drop 172; CHECK-NEXT: local.get 0 173; CHECK-NEXT: call op_1_to_0 174; CHECK-NEXT: # fallthrough-return 175 %t0 = call {i32, i32, i32} @op_0_to_3() 176 %t1 = extractvalue {i32, i32, i32} %t0, 1 177 call void @op_1_to_0(i32 %t1) 178 ret void 179} 180 181define void @f27() { 182; CHECK-LABEL: f27: 183; CHECK: .functype f27 () -> () 184; CHECK-NEXT: .local i32 185; CHECK-NEXT: # %bb.0: 186; CHECK-NEXT: call op_0_to_3 187; CHECK-NEXT: local.set 0 188; CHECK-NEXT: drop 189; CHECK-NEXT: drop 190; CHECK-NEXT: local.get 0 191; CHECK-NEXT: call op_1_to_0 192; CHECK-NEXT: # fallthrough-return 193 %t0 = call {i32, i32, i32} @op_0_to_3() 194 %t1 = extractvalue {i32, i32, i32} %t0, 2 195 call void @op_1_to_0(i32 %t1) 196 ret void 197} 198 199define void @f28() { 200; CHECK-LABEL: f28: 201; CHECK: .functype f28 () -> () 202; CHECK-NEXT: .local i32 203; CHECK-NEXT: # %bb.0: 204; CHECK-NEXT: call op_0_to_3 205; CHECK-NEXT: drop 206; CHECK-NEXT: drop 207; CHECK-NEXT: local.tee 0 208; CHECK-NEXT: local.get 0 209; CHECK-NEXT: call op_2_to_0 210; CHECK-NEXT: # fallthrough-return 211 %t0 = call {i32, i32, i32} @op_0_to_3() 212 %t1 = extractvalue {i32, i32, i32} %t0, 0 213 %t2 = extractvalue {i32, i32, i32} %t0, 0 214 call void @op_2_to_0(i32 %t1, i32 %t2) 215 ret void 216} 217 218define void @f29() { 219; CHECK-LABEL: f29: 220; CHECK: .functype f29 () -> () 221; CHECK-NEXT: # %bb.0: 222; CHECK-NEXT: call op_0_to_3 223; CHECK-NEXT: drop 224; CHECK-NEXT: call op_2_to_0 225; CHECK-NEXT: # fallthrough-return 226 %t0 = call {i32, i32, i32} @op_0_to_3() 227 %t1 = extractvalue {i32, i32, i32} %t0, 0 228 %t2 = extractvalue {i32, i32, i32} %t0, 1 229 call void @op_2_to_0(i32 %t1, i32 %t2) 230 ret void 231} 232 233define void @f30() { 234; CHECK-LABEL: f30: 235; CHECK: .functype f30 () -> () 236; CHECK-NEXT: .local i32 237; CHECK-NEXT: # %bb.0: 238; CHECK-NEXT: call op_0_to_3 239; CHECK-NEXT: local.set 0 240; CHECK-NEXT: drop 241; CHECK-NEXT: local.get 0 242; CHECK-NEXT: call op_2_to_0 243; CHECK-NEXT: # fallthrough-return 244 %t0 = call {i32, i32, i32} @op_0_to_3() 245 %t1 = extractvalue {i32, i32, i32} %t0, 0 246 %t2 = extractvalue {i32, i32, i32} %t0, 2 247 call void @op_2_to_0(i32 %t1, i32 %t2) 248 ret void 249} 250 251define void @f31() { 252; CHECK-LABEL: f31: 253; CHECK: .functype f31 () -> () 254; CHECK-NEXT: .local i32, i32 255; CHECK-NEXT: # %bb.0: 256; CHECK-NEXT: call op_0_to_3 257; CHECK-NEXT: drop 258; CHECK-NEXT: local.set 1 259; CHECK-NEXT: local.set 0 260; CHECK-NEXT: local.get 1 261; CHECK-NEXT: local.get 0 262; CHECK-NEXT: call op_2_to_0 263; CHECK-NEXT: # fallthrough-return 264 %t0 = call {i32, i32, i32} @op_0_to_3() 265 %t1 = extractvalue {i32, i32, i32} %t0, 1 266 %t2 = extractvalue {i32, i32, i32} %t0, 0 267 call void @op_2_to_0(i32 %t1, i32 %t2) 268 ret void 269} 270 271define void @f32() { 272; CHECK-LABEL: f32: 273; CHECK: .functype f32 () -> () 274; CHECK-NEXT: .local i32 275; CHECK-NEXT: # %bb.0: 276; CHECK-NEXT: call op_0_to_3 277; CHECK-NEXT: drop 278; CHECK-NEXT: local.set 0 279; CHECK-NEXT: drop 280; CHECK-NEXT: local.get 0 281; CHECK-NEXT: local.get 0 282; CHECK-NEXT: call op_2_to_0 283; CHECK-NEXT: # fallthrough-return 284 %t0 = call {i32, i32, i32} @op_0_to_3() 285 %t1 = extractvalue {i32, i32, i32} %t0, 1 286 %t2 = extractvalue {i32, i32, i32} %t0, 1 287 call void @op_2_to_0(i32 %t1, i32 %t2) 288 ret void 289} 290 291define void @f33() { 292; CHECK-LABEL: f33: 293; CHECK: .functype f33 () -> () 294; CHECK-NEXT: .local i32, i32 295; CHECK-NEXT: # %bb.0: 296; CHECK-NEXT: call op_0_to_3 297; CHECK-NEXT: local.set 1 298; CHECK-NEXT: local.set 0 299; CHECK-NEXT: drop 300; CHECK-NEXT: local.get 0 301; CHECK-NEXT: local.get 1 302; CHECK-NEXT: call op_2_to_0 303; CHECK-NEXT: # fallthrough-return 304 %t0 = call {i32, i32, i32} @op_0_to_3() 305 %t1 = extractvalue {i32, i32, i32} %t0, 1 306 %t2 = extractvalue {i32, i32, i32} %t0, 2 307 call void @op_2_to_0(i32 %t1, i32 %t2) 308 ret void 309} 310 311define void @f34() { 312; CHECK-LABEL: f34: 313; CHECK: .functype f34 () -> () 314; CHECK-NEXT: .local i32, i32 315; CHECK-NEXT: # %bb.0: 316; CHECK-NEXT: call op_0_to_3 317; CHECK-NEXT: local.set 1 318; CHECK-NEXT: drop 319; CHECK-NEXT: local.set 0 320; CHECK-NEXT: local.get 1 321; CHECK-NEXT: local.get 0 322; CHECK-NEXT: call op_2_to_0 323; CHECK-NEXT: # fallthrough-return 324 %t0 = call {i32, i32, i32} @op_0_to_3() 325 %t1 = extractvalue {i32, i32, i32} %t0, 2 326 %t2 = extractvalue {i32, i32, i32} %t0, 0 327 call void @op_2_to_0(i32 %t1, i32 %t2) 328 ret void 329} 330 331define void @f35() { 332; CHECK-LABEL: f35: 333; CHECK: .functype f35 () -> () 334; CHECK-NEXT: .local i32, i32 335; CHECK-NEXT: # %bb.0: 336; CHECK-NEXT: call op_0_to_3 337; CHECK-NEXT: local.set 1 338; CHECK-NEXT: local.set 0 339; CHECK-NEXT: drop 340; CHECK-NEXT: local.get 1 341; CHECK-NEXT: local.get 0 342; CHECK-NEXT: call op_2_to_0 343; CHECK-NEXT: # fallthrough-return 344 %t0 = call {i32, i32, i32} @op_0_to_3() 345 %t1 = extractvalue {i32, i32, i32} %t0, 2 346 %t2 = extractvalue {i32, i32, i32} %t0, 1 347 call void @op_2_to_0(i32 %t1, i32 %t2) 348 ret void 349} 350 351define void @f36() { 352; CHECK-LABEL: f36: 353; CHECK: .functype f36 () -> () 354; CHECK-NEXT: .local i32 355; CHECK-NEXT: # %bb.0: 356; CHECK-NEXT: call op_0_to_3 357; CHECK-NEXT: local.set 0 358; CHECK-NEXT: drop 359; CHECK-NEXT: drop 360; CHECK-NEXT: local.get 0 361; CHECK-NEXT: local.get 0 362; CHECK-NEXT: call op_2_to_0 363; CHECK-NEXT: # fallthrough-return 364 %t0 = call {i32, i32, i32} @op_0_to_3() 365 %t1 = extractvalue {i32, i32, i32} %t0, 2 366 %t2 = extractvalue {i32, i32, i32} %t0, 2 367 call void @op_2_to_0(i32 %t1, i32 %t2) 368 ret void 369} 370 371define void @f129() { 372; CHECK-LABEL: f129: 373; CHECK: .functype f129 () -> () 374; CHECK-NEXT: .local i32 375; CHECK-NEXT: # %bb.0: 376; CHECK-NEXT: call op_0_to_2 377; CHECK-NEXT: local.set 0 378; CHECK-NEXT: call op_1_to_0 379; CHECK-NEXT: local.get 0 380; CHECK-NEXT: call op_1_to_0 381; CHECK-NEXT: # fallthrough-return 382 %t0 = call {i32, i32} @op_0_to_2() 383 %t1 = extractvalue {i32, i32} %t0, 0 384 call void @op_1_to_0(i32 %t1) 385 %t2 = extractvalue {i32, i32} %t0, 1 386 call void @op_1_to_0(i32 %t2) 387 ret void 388} 389 390define void @f131() { 391; CHECK-LABEL: f131: 392; CHECK: .functype f131 () -> () 393; CHECK-NEXT: .local i32, i32 394; CHECK-NEXT: # %bb.0: 395; CHECK-NEXT: call op_0_to_2 396; CHECK-NEXT: local.set 0 397; CHECK-NEXT: local.tee 1 398; CHECK-NEXT: call op_1_to_0 399; CHECK-NEXT: local.get 1 400; CHECK-NEXT: local.get 0 401; CHECK-NEXT: call op_2_to_0 402; CHECK-NEXT: # fallthrough-return 403 %t0 = call {i32, i32} @op_0_to_2() 404 %t1 = extractvalue {i32, i32} %t0, 0 405 call void @op_1_to_0(i32 %t1) 406 %t2 = extractvalue {i32, i32} %t0, 0 407 %t3 = extractvalue {i32, i32} %t0, 1 408 call void @op_2_to_0(i32 %t2, i32 %t3) 409 ret void 410} 411 412define void @f132() { 413; CHECK-LABEL: f132: 414; CHECK: .functype f132 () -> () 415; CHECK-NEXT: .local i32, i32 416; CHECK-NEXT: # %bb.0: 417; CHECK-NEXT: call op_0_to_2 418; CHECK-NEXT: local.set 0 419; CHECK-NEXT: local.tee 1 420; CHECK-NEXT: call op_1_to_0 421; CHECK-NEXT: local.get 0 422; CHECK-NEXT: local.get 1 423; CHECK-NEXT: call op_2_to_0 424; CHECK-NEXT: # fallthrough-return 425 %t0 = call {i32, i32} @op_0_to_2() 426 %t1 = extractvalue {i32, i32} %t0, 0 427 call void @op_1_to_0(i32 %t1) 428 %t2 = extractvalue {i32, i32} %t0, 1 429 %t3 = extractvalue {i32, i32} %t0, 0 430 call void @op_2_to_0(i32 %t2, i32 %t3) 431 ret void 432} 433 434define void @f133() { 435; CHECK-LABEL: f133: 436; CHECK: .functype f133 () -> () 437; CHECK-NEXT: .local i32 438; CHECK-NEXT: # %bb.0: 439; CHECK-NEXT: call op_0_to_2 440; CHECK-NEXT: local.set 0 441; CHECK-NEXT: call op_1_to_0 442; CHECK-NEXT: local.get 0 443; CHECK-NEXT: local.get 0 444; CHECK-NEXT: call op_2_to_0 445; CHECK-NEXT: # fallthrough-return 446 %t0 = call {i32, i32} @op_0_to_2() 447 %t1 = extractvalue {i32, i32} %t0, 0 448 call void @op_1_to_0(i32 %t1) 449 %t2 = extractvalue {i32, i32} %t0, 1 450 %t3 = extractvalue {i32, i32} %t0, 1 451 call void @op_2_to_0(i32 %t2, i32 %t3) 452 ret void 453} 454 455define void @f141() { 456; CHECK-LABEL: f141: 457; CHECK: .functype f141 () -> () 458; CHECK-NEXT: .local i32, i32 459; CHECK-NEXT: # %bb.0: 460; CHECK-NEXT: call op_0_to_2 461; CHECK-NEXT: local.set 1 462; CHECK-NEXT: local.set 0 463; CHECK-NEXT: local.get 1 464; CHECK-NEXT: call op_1_to_0 465; CHECK-NEXT: local.get 0 466; CHECK-NEXT: call op_1_to_0 467; CHECK-NEXT: # fallthrough-return 468 %t0 = call {i32, i32} @op_0_to_2() 469 %t1 = extractvalue {i32, i32} %t0, 1 470 call void @op_1_to_0(i32 %t1) 471 %t2 = extractvalue {i32, i32} %t0, 0 472 call void @op_1_to_0(i32 %t2) 473 ret void 474} 475 476define void @f143() { 477; CHECK-LABEL: f143: 478; CHECK: .functype f143 () -> () 479; CHECK-NEXT: .local i32, i32 480; CHECK-NEXT: # %bb.0: 481; CHECK-NEXT: call op_0_to_2 482; CHECK-NEXT: local.set 1 483; CHECK-NEXT: local.set 0 484; CHECK-NEXT: local.get 1 485; CHECK-NEXT: call op_1_to_0 486; CHECK-NEXT: local.get 0 487; CHECK-NEXT: local.get 0 488; CHECK-NEXT: call op_2_to_0 489; CHECK-NEXT: # fallthrough-return 490 %t0 = call {i32, i32} @op_0_to_2() 491 %t1 = extractvalue {i32, i32} %t0, 1 492 call void @op_1_to_0(i32 %t1) 493 %t2 = extractvalue {i32, i32} %t0, 0 494 %t3 = extractvalue {i32, i32} %t0, 0 495 call void @op_2_to_0(i32 %t2, i32 %t3) 496 ret void 497} 498 499define void @f144() { 500; CHECK-LABEL: f144: 501; CHECK: .functype f144 () -> () 502; CHECK-NEXT: .local i32, i32 503; CHECK-NEXT: # %bb.0: 504; CHECK-NEXT: call op_0_to_2 505; CHECK-NEXT: local.set 1 506; CHECK-NEXT: local.set 0 507; CHECK-NEXT: local.get 1 508; CHECK-NEXT: call op_1_to_0 509; CHECK-NEXT: local.get 0 510; CHECK-NEXT: local.get 1 511; CHECK-NEXT: call op_2_to_0 512; CHECK-NEXT: # fallthrough-return 513 %t0 = call {i32, i32} @op_0_to_2() 514 %t1 = extractvalue {i32, i32} %t0, 1 515 call void @op_1_to_0(i32 %t1) 516 %t2 = extractvalue {i32, i32} %t0, 0 517 %t3 = extractvalue {i32, i32} %t0, 1 518 call void @op_2_to_0(i32 %t2, i32 %t3) 519 ret void 520} 521 522define void @f145() { 523; CHECK-LABEL: f145: 524; CHECK: .functype f145 () -> () 525; CHECK-NEXT: .local i32, i32 526; CHECK-NEXT: # %bb.0: 527; CHECK-NEXT: call op_0_to_2 528; CHECK-NEXT: local.set 1 529; CHECK-NEXT: local.set 0 530; CHECK-NEXT: local.get 1 531; CHECK-NEXT: call op_1_to_0 532; CHECK-NEXT: local.get 1 533; CHECK-NEXT: local.get 0 534; CHECK-NEXT: call op_2_to_0 535; CHECK-NEXT: # fallthrough-return 536 %t0 = call {i32, i32} @op_0_to_2() 537 %t1 = extractvalue {i32, i32} %t0, 1 538 call void @op_1_to_0(i32 %t1) 539 %t2 = extractvalue {i32, i32} %t0, 1 540 %t3 = extractvalue {i32, i32} %t0, 0 541 call void @op_2_to_0(i32 %t2, i32 %t3) 542 ret void 543} 544 545define void @f155() { 546; CHECK-LABEL: f155: 547; CHECK: .functype f155 () -> () 548; CHECK-NEXT: .local i32, i32 549; CHECK-NEXT: # %bb.0: 550; CHECK-NEXT: call op_0_to_2 551; CHECK-NEXT: local.set 0 552; CHECK-NEXT: local.tee 1 553; CHECK-NEXT: local.get 1 554; CHECK-NEXT: call op_2_to_0 555; CHECK-NEXT: local.get 0 556; CHECK-NEXT: call op_1_to_0 557; CHECK-NEXT: # fallthrough-return 558 %t0 = call {i32, i32} @op_0_to_2() 559 %t1 = extractvalue {i32, i32} %t0, 0 560 %t2 = extractvalue {i32, i32} %t0, 0 561 call void @op_2_to_0(i32 %t1, i32 %t2) 562 %t3 = extractvalue {i32, i32} %t0, 1 563 call void @op_1_to_0(i32 %t3) 564 ret void 565} 566 567define void @f159() { 568; CHECK-LABEL: f159: 569; CHECK: .functype f159 () -> () 570; CHECK-NEXT: .local i32, i32 571; CHECK-NEXT: # %bb.0: 572; CHECK-NEXT: call op_0_to_2 573; CHECK-NEXT: local.set 0 574; CHECK-NEXT: local.tee 1 575; CHECK-NEXT: local.get 1 576; CHECK-NEXT: call op_2_to_0 577; CHECK-NEXT: local.get 0 578; CHECK-NEXT: local.get 0 579; CHECK-NEXT: call op_2_to_0 580; CHECK-NEXT: # fallthrough-return 581 %t0 = call {i32, i32} @op_0_to_2() 582 %t1 = extractvalue {i32, i32} %t0, 0 583 %t2 = extractvalue {i32, i32} %t0, 0 584 call void @op_2_to_0(i32 %t1, i32 %t2) 585 %t3 = extractvalue {i32, i32} %t0, 1 586 %t4 = extractvalue {i32, i32} %t0, 1 587 call void @op_2_to_0(i32 %t3, i32 %t4) 588 ret void 589} 590 591define void @f167() { 592; CHECK-LABEL: f167: 593; CHECK: .functype f167 () -> () 594; CHECK-NEXT: .local i32, i32 595; CHECK-NEXT: # %bb.0: 596; CHECK-NEXT: call op_0_to_2 597; CHECK-NEXT: local.set 0 598; CHECK-NEXT: local.tee 1 599; CHECK-NEXT: local.get 0 600; CHECK-NEXT: call op_2_to_0 601; CHECK-NEXT: local.get 1 602; CHECK-NEXT: call op_1_to_0 603; CHECK-NEXT: # fallthrough-return 604 %t0 = call {i32, i32} @op_0_to_2() 605 %t1 = extractvalue {i32, i32} %t0, 0 606 %t2 = extractvalue {i32, i32} %t0, 1 607 call void @op_2_to_0(i32 %t1, i32 %t2) 608 %t3 = extractvalue {i32, i32} %t0, 0 609 call void @op_1_to_0(i32 %t3) 610 ret void 611} 612 613define void @f168() { 614; CHECK-LABEL: f168: 615; CHECK: .functype f168 () -> () 616; CHECK-NEXT: .local i32 617; CHECK-NEXT: # %bb.0: 618; CHECK-NEXT: call op_0_to_2 619; CHECK-NEXT: local.set 0 620; CHECK-NEXT: local.get 0 621; CHECK-NEXT: call op_2_to_0 622; CHECK-NEXT: local.get 0 623; CHECK-NEXT: call op_1_to_0 624; CHECK-NEXT: # fallthrough-return 625 %t0 = call {i32, i32} @op_0_to_2() 626 %t1 = extractvalue {i32, i32} %t0, 0 627 %t2 = extractvalue {i32, i32} %t0, 1 628 call void @op_2_to_0(i32 %t1, i32 %t2) 629 %t3 = extractvalue {i32, i32} %t0, 1 630 call void @op_1_to_0(i32 %t3) 631 ret void 632} 633 634define void @f171() { 635; CHECK-LABEL: f171: 636; CHECK: .functype f171 () -> () 637; CHECK-NEXT: .local i32, i32 638; CHECK-NEXT: # %bb.0: 639; CHECK-NEXT: call op_0_to_2 640; CHECK-NEXT: local.set 0 641; CHECK-NEXT: local.tee 1 642; CHECK-NEXT: local.get 0 643; CHECK-NEXT: call op_2_to_0 644; CHECK-NEXT: local.get 0 645; CHECK-NEXT: local.get 1 646; CHECK-NEXT: call op_2_to_0 647; CHECK-NEXT: # fallthrough-return 648 %t0 = call {i32, i32} @op_0_to_2() 649 %t1 = extractvalue {i32, i32} %t0, 0 650 %t2 = extractvalue {i32, i32} %t0, 1 651 call void @op_2_to_0(i32 %t1, i32 %t2) 652 %t3 = extractvalue {i32, i32} %t0, 1 653 %t4 = extractvalue {i32, i32} %t0, 0 654 call void @op_2_to_0(i32 %t3, i32 %t4) 655 ret void 656} 657 658define void @f180() { 659; CHECK-LABEL: f180: 660; CHECK: .functype f180 () -> () 661; CHECK-NEXT: .local i32, i32 662; CHECK-NEXT: # %bb.0: 663; CHECK-NEXT: call op_0_to_2 664; CHECK-NEXT: local.set 1 665; CHECK-NEXT: local.set 0 666; CHECK-NEXT: local.get 1 667; CHECK-NEXT: local.get 0 668; CHECK-NEXT: call op_2_to_0 669; CHECK-NEXT: local.get 0 670; CHECK-NEXT: call op_1_to_0 671; CHECK-NEXT: # fallthrough-return 672 %t0 = call {i32, i32} @op_0_to_2() 673 %t1 = extractvalue {i32, i32} %t0, 1 674 %t2 = extractvalue {i32, i32} %t0, 0 675 call void @op_2_to_0(i32 %t1, i32 %t2) 676 %t3 = extractvalue {i32, i32} %t0, 0 677 call void @op_1_to_0(i32 %t3) 678 ret void 679} 680 681define void @f181() { 682; CHECK-LABEL: f181: 683; CHECK: .functype f181 () -> () 684; CHECK-NEXT: .local i32, i32 685; CHECK-NEXT: # %bb.0: 686; CHECK-NEXT: call op_0_to_2 687; CHECK-NEXT: local.set 1 688; CHECK-NEXT: local.set 0 689; CHECK-NEXT: local.get 1 690; CHECK-NEXT: local.get 0 691; CHECK-NEXT: call op_2_to_0 692; CHECK-NEXT: local.get 1 693; CHECK-NEXT: call op_1_to_0 694; CHECK-NEXT: # fallthrough-return 695 %t0 = call {i32, i32} @op_0_to_2() 696 %t1 = extractvalue {i32, i32} %t0, 1 697 %t2 = extractvalue {i32, i32} %t0, 0 698 call void @op_2_to_0(i32 %t1, i32 %t2) 699 %t3 = extractvalue {i32, i32} %t0, 1 700 call void @op_1_to_0(i32 %t3) 701 ret void 702} 703 704define void @f183() { 705; CHECK-LABEL: f183: 706; CHECK: .functype f183 () -> () 707; CHECK-NEXT: .local i32, i32 708; CHECK-NEXT: # %bb.0: 709; CHECK-NEXT: call op_0_to_2 710; CHECK-NEXT: local.set 1 711; CHECK-NEXT: local.set 0 712; CHECK-NEXT: local.get 1 713; CHECK-NEXT: local.get 0 714; CHECK-NEXT: call op_2_to_0 715; CHECK-NEXT: local.get 0 716; CHECK-NEXT: local.get 1 717; CHECK-NEXT: call op_2_to_0 718; CHECK-NEXT: # fallthrough-return 719 %t0 = call {i32, i32} @op_0_to_2() 720 %t1 = extractvalue {i32, i32} %t0, 1 721 %t2 = extractvalue {i32, i32} %t0, 0 722 call void @op_2_to_0(i32 %t1, i32 %t2) 723 %t3 = extractvalue {i32, i32} %t0, 0 724 %t4 = extractvalue {i32, i32} %t0, 1 725 call void @op_2_to_0(i32 %t3, i32 %t4) 726 ret void 727} 728 729define void @f193() { 730; CHECK-LABEL: f193: 731; CHECK: .functype f193 () -> () 732; CHECK-NEXT: .local i32, i32 733; CHECK-NEXT: # %bb.0: 734; CHECK-NEXT: call op_0_to_2 735; CHECK-NEXT: local.set 1 736; CHECK-NEXT: local.set 0 737; CHECK-NEXT: local.get 1 738; CHECK-NEXT: local.get 1 739; CHECK-NEXT: call op_2_to_0 740; CHECK-NEXT: local.get 0 741; CHECK-NEXT: call op_1_to_0 742; CHECK-NEXT: # fallthrough-return 743 %t0 = call {i32, i32} @op_0_to_2() 744 %t1 = extractvalue {i32, i32} %t0, 1 745 %t2 = extractvalue {i32, i32} %t0, 1 746 call void @op_2_to_0(i32 %t1, i32 %t2) 747 %t3 = extractvalue {i32, i32} %t0, 0 748 call void @op_1_to_0(i32 %t3) 749 ret void 750} 751 752define void @f195() { 753; CHECK-LABEL: f195: 754; CHECK: .functype f195 () -> () 755; CHECK-NEXT: .local i32, i32 756; CHECK-NEXT: # %bb.0: 757; CHECK-NEXT: call op_0_to_2 758; CHECK-NEXT: local.set 1 759; CHECK-NEXT: local.set 0 760; CHECK-NEXT: local.get 1 761; CHECK-NEXT: local.get 1 762; CHECK-NEXT: call op_2_to_0 763; CHECK-NEXT: local.get 0 764; CHECK-NEXT: local.get 0 765; CHECK-NEXT: call op_2_to_0 766; CHECK-NEXT: # fallthrough-return 767 %t0 = call {i32, i32} @op_0_to_2() 768 %t1 = extractvalue {i32, i32} %t0, 1 769 %t2 = extractvalue {i32, i32} %t0, 1 770 call void @op_2_to_0(i32 %t1, i32 %t2) 771 %t3 = extractvalue {i32, i32} %t0, 0 772 %t4 = extractvalue {i32, i32} %t0, 0 773 call void @op_2_to_0(i32 %t3, i32 %t4) 774 ret void 775} 776 777define void @f291() { 778; CHECK-LABEL: f291: 779; CHECK: .functype f291 () -> () 780; CHECK-NEXT: .local i32 781; CHECK-NEXT: # %bb.0: 782; CHECK-NEXT: call op_0_to_3 783; CHECK-NEXT: drop 784; CHECK-NEXT: local.set 0 785; CHECK-NEXT: call op_1_to_0 786; CHECK-NEXT: local.get 0 787; CHECK-NEXT: call op_1_to_0 788; CHECK-NEXT: # fallthrough-return 789 %t0 = call {i32, i32, i32} @op_0_to_3() 790 %t1 = extractvalue {i32, i32, i32} %t0, 0 791 call void @op_1_to_0(i32 %t1) 792 %t2 = extractvalue {i32, i32, i32} %t0, 1 793 call void @op_1_to_0(i32 %t2) 794 ret void 795} 796 797define void @f292() { 798; CHECK-LABEL: f292: 799; CHECK: .functype f292 () -> () 800; CHECK-NEXT: .local i32 801; CHECK-NEXT: # %bb.0: 802; CHECK-NEXT: call op_0_to_3 803; CHECK-NEXT: local.set 0 804; CHECK-NEXT: drop 805; CHECK-NEXT: call op_1_to_0 806; CHECK-NEXT: local.get 0 807; CHECK-NEXT: call op_1_to_0 808; CHECK-NEXT: # fallthrough-return 809 %t0 = call {i32, i32, i32} @op_0_to_3() 810 %t1 = extractvalue {i32, i32, i32} %t0, 0 811 call void @op_1_to_0(i32 %t1) 812 %t2 = extractvalue {i32, i32, i32} %t0, 2 813 call void @op_1_to_0(i32 %t2) 814 ret void 815} 816 817define void @f294() { 818; CHECK-LABEL: f294: 819; CHECK: .functype f294 () -> () 820; CHECK-NEXT: .local i32, i32 821; CHECK-NEXT: # %bb.0: 822; CHECK-NEXT: call op_0_to_3 823; CHECK-NEXT: drop 824; CHECK-NEXT: local.set 0 825; CHECK-NEXT: local.tee 1 826; CHECK-NEXT: call op_1_to_0 827; CHECK-NEXT: local.get 1 828; CHECK-NEXT: local.get 0 829; CHECK-NEXT: call op_2_to_0 830; CHECK-NEXT: # fallthrough-return 831 %t0 = call {i32, i32, i32} @op_0_to_3() 832 %t1 = extractvalue {i32, i32, i32} %t0, 0 833 call void @op_1_to_0(i32 %t1) 834 %t2 = extractvalue {i32, i32, i32} %t0, 0 835 %t3 = extractvalue {i32, i32, i32} %t0, 1 836 call void @op_2_to_0(i32 %t2, i32 %t3) 837 ret void 838} 839 840define void @f295() { 841; CHECK-LABEL: f295: 842; CHECK: .functype f295 () -> () 843; CHECK-NEXT: .local i32, i32 844; CHECK-NEXT: # %bb.0: 845; CHECK-NEXT: call op_0_to_3 846; CHECK-NEXT: local.set 0 847; CHECK-NEXT: drop 848; CHECK-NEXT: local.tee 1 849; CHECK-NEXT: call op_1_to_0 850; CHECK-NEXT: local.get 1 851; CHECK-NEXT: local.get 0 852; CHECK-NEXT: call op_2_to_0 853; CHECK-NEXT: # fallthrough-return 854 %t0 = call {i32, i32, i32} @op_0_to_3() 855 %t1 = extractvalue {i32, i32, i32} %t0, 0 856 call void @op_1_to_0(i32 %t1) 857 %t2 = extractvalue {i32, i32, i32} %t0, 0 858 %t3 = extractvalue {i32, i32, i32} %t0, 2 859 call void @op_2_to_0(i32 %t2, i32 %t3) 860 ret void 861} 862 863define void @f296() { 864; CHECK-LABEL: f296: 865; CHECK: .functype f296 () -> () 866; CHECK-NEXT: .local i32, i32 867; CHECK-NEXT: # %bb.0: 868; CHECK-NEXT: call op_0_to_3 869; CHECK-NEXT: drop 870; CHECK-NEXT: local.set 0 871; CHECK-NEXT: local.tee 1 872; CHECK-NEXT: call op_1_to_0 873; CHECK-NEXT: local.get 0 874; CHECK-NEXT: local.get 1 875; CHECK-NEXT: call op_2_to_0 876; CHECK-NEXT: # fallthrough-return 877 %t0 = call {i32, i32, i32} @op_0_to_3() 878 %t1 = extractvalue {i32, i32, i32} %t0, 0 879 call void @op_1_to_0(i32 %t1) 880 %t2 = extractvalue {i32, i32, i32} %t0, 1 881 %t3 = extractvalue {i32, i32, i32} %t0, 0 882 call void @op_2_to_0(i32 %t2, i32 %t3) 883 ret void 884} 885 886define void @f297() { 887; CHECK-LABEL: f297: 888; CHECK: .functype f297 () -> () 889; CHECK-NEXT: .local i32 890; CHECK-NEXT: # %bb.0: 891; CHECK-NEXT: call op_0_to_3 892; CHECK-NEXT: drop 893; CHECK-NEXT: local.set 0 894; CHECK-NEXT: call op_1_to_0 895; CHECK-NEXT: local.get 0 896; CHECK-NEXT: local.get 0 897; CHECK-NEXT: call op_2_to_0 898; CHECK-NEXT: # fallthrough-return 899 %t0 = call {i32, i32, i32} @op_0_to_3() 900 %t1 = extractvalue {i32, i32, i32} %t0, 0 901 call void @op_1_to_0(i32 %t1) 902 %t2 = extractvalue {i32, i32, i32} %t0, 1 903 %t3 = extractvalue {i32, i32, i32} %t0, 1 904 call void @op_2_to_0(i32 %t2, i32 %t3) 905 ret void 906} 907 908define void @f298() { 909; CHECK-LABEL: f298: 910; CHECK: .functype f298 () -> () 911; CHECK-NEXT: .local i32, i32 912; CHECK-NEXT: # %bb.0: 913; CHECK-NEXT: call op_0_to_3 914; CHECK-NEXT: local.set 1 915; CHECK-NEXT: local.set 0 916; CHECK-NEXT: call op_1_to_0 917; CHECK-NEXT: local.get 0 918; CHECK-NEXT: local.get 1 919; CHECK-NEXT: call op_2_to_0 920; CHECK-NEXT: # fallthrough-return 921 %t0 = call {i32, i32, i32} @op_0_to_3() 922 %t1 = extractvalue {i32, i32, i32} %t0, 0 923 call void @op_1_to_0(i32 %t1) 924 %t2 = extractvalue {i32, i32, i32} %t0, 1 925 %t3 = extractvalue {i32, i32, i32} %t0, 2 926 call void @op_2_to_0(i32 %t2, i32 %t3) 927 ret void 928} 929 930define void @f299() { 931; CHECK-LABEL: f299: 932; CHECK: .functype f299 () -> () 933; CHECK-NEXT: .local i32, i32 934; CHECK-NEXT: # %bb.0: 935; CHECK-NEXT: call op_0_to_3 936; CHECK-NEXT: local.set 0 937; CHECK-NEXT: drop 938; CHECK-NEXT: local.tee 1 939; CHECK-NEXT: call op_1_to_0 940; CHECK-NEXT: local.get 0 941; CHECK-NEXT: local.get 1 942; CHECK-NEXT: call op_2_to_0 943; CHECK-NEXT: # fallthrough-return 944 %t0 = call {i32, i32, i32} @op_0_to_3() 945 %t1 = extractvalue {i32, i32, i32} %t0, 0 946 call void @op_1_to_0(i32 %t1) 947 %t2 = extractvalue {i32, i32, i32} %t0, 2 948 %t3 = extractvalue {i32, i32, i32} %t0, 0 949 call void @op_2_to_0(i32 %t2, i32 %t3) 950 ret void 951} 952 953define void @f300() { 954; CHECK-LABEL: f300: 955; CHECK: .functype f300 () -> () 956; CHECK-NEXT: .local i32, i32 957; CHECK-NEXT: # %bb.0: 958; CHECK-NEXT: call op_0_to_3 959; CHECK-NEXT: local.set 1 960; CHECK-NEXT: local.set 0 961; CHECK-NEXT: call op_1_to_0 962; CHECK-NEXT: local.get 1 963; CHECK-NEXT: local.get 0 964; CHECK-NEXT: call op_2_to_0 965; CHECK-NEXT: # fallthrough-return 966 %t0 = call {i32, i32, i32} @op_0_to_3() 967 %t1 = extractvalue {i32, i32, i32} %t0, 0 968 call void @op_1_to_0(i32 %t1) 969 %t2 = extractvalue {i32, i32, i32} %t0, 2 970 %t3 = extractvalue {i32, i32, i32} %t0, 1 971 call void @op_2_to_0(i32 %t2, i32 %t3) 972 ret void 973} 974 975define void @f301() { 976; CHECK-LABEL: f301: 977; CHECK: .functype f301 () -> () 978; CHECK-NEXT: .local i32 979; CHECK-NEXT: # %bb.0: 980; CHECK-NEXT: call op_0_to_3 981; CHECK-NEXT: local.set 0 982; CHECK-NEXT: drop 983; CHECK-NEXT: call op_1_to_0 984; CHECK-NEXT: local.get 0 985; CHECK-NEXT: local.get 0 986; CHECK-NEXT: call op_2_to_0 987; CHECK-NEXT: # fallthrough-return 988 %t0 = call {i32, i32, i32} @op_0_to_3() 989 %t1 = extractvalue {i32, i32, i32} %t0, 0 990 call void @op_1_to_0(i32 %t1) 991 %t2 = extractvalue {i32, i32, i32} %t0, 2 992 %t3 = extractvalue {i32, i32, i32} %t0, 2 993 call void @op_2_to_0(i32 %t2, i32 %t3) 994 ret void 995} 996 997define void @f302() { 998; CHECK-LABEL: f302: 999; CHECK: .functype f302 () -> () 1000; CHECK-NEXT: .local i32, i32 1001; CHECK-NEXT: # %bb.0: 1002; CHECK-NEXT: call op_0_to_3 1003; CHECK-NEXT: drop 1004; CHECK-NEXT: local.set 1 1005; CHECK-NEXT: local.set 0 1006; CHECK-NEXT: local.get 1 1007; CHECK-NEXT: call op_1_to_0 1008; CHECK-NEXT: local.get 0 1009; CHECK-NEXT: call op_1_to_0 1010; CHECK-NEXT: # fallthrough-return 1011 %t0 = call {i32, i32, i32} @op_0_to_3() 1012 %t1 = extractvalue {i32, i32, i32} %t0, 1 1013 call void @op_1_to_0(i32 %t1) 1014 %t2 = extractvalue {i32, i32, i32} %t0, 0 1015 call void @op_1_to_0(i32 %t2) 1016 ret void 1017} 1018 1019define void @f304() { 1020; CHECK-LABEL: f304: 1021; CHECK: .functype f304 () -> () 1022; CHECK-NEXT: .local i32, i32 1023; CHECK-NEXT: # %bb.0: 1024; CHECK-NEXT: call op_0_to_3 1025; CHECK-NEXT: local.set 1 1026; CHECK-NEXT: local.set 0 1027; CHECK-NEXT: drop 1028; CHECK-NEXT: local.get 0 1029; CHECK-NEXT: call op_1_to_0 1030; CHECK-NEXT: local.get 1 1031; CHECK-NEXT: call op_1_to_0 1032; CHECK-NEXT: # fallthrough-return 1033 %t0 = call {i32, i32, i32} @op_0_to_3() 1034 %t1 = extractvalue {i32, i32, i32} %t0, 1 1035 call void @op_1_to_0(i32 %t1) 1036 %t2 = extractvalue {i32, i32, i32} %t0, 2 1037 call void @op_1_to_0(i32 %t2) 1038 ret void 1039} 1040 1041define void @f305() { 1042; CHECK-LABEL: f305: 1043; CHECK: .functype f305 () -> () 1044; CHECK-NEXT: .local i32, i32 1045; CHECK-NEXT: # %bb.0: 1046; CHECK-NEXT: call op_0_to_3 1047; CHECK-NEXT: drop 1048; CHECK-NEXT: local.set 1 1049; CHECK-NEXT: local.set 0 1050; CHECK-NEXT: local.get 1 1051; CHECK-NEXT: call op_1_to_0 1052; CHECK-NEXT: local.get 0 1053; CHECK-NEXT: local.get 0 1054; CHECK-NEXT: call op_2_to_0 1055; CHECK-NEXT: # fallthrough-return 1056 %t0 = call {i32, i32, i32} @op_0_to_3() 1057 %t1 = extractvalue {i32, i32, i32} %t0, 1 1058 call void @op_1_to_0(i32 %t1) 1059 %t2 = extractvalue {i32, i32, i32} %t0, 0 1060 %t3 = extractvalue {i32, i32, i32} %t0, 0 1061 call void @op_2_to_0(i32 %t2, i32 %t3) 1062 ret void 1063} 1064 1065define void @f306() { 1066; CHECK-LABEL: f306: 1067; CHECK: .functype f306 () -> () 1068; CHECK-NEXT: .local i32, i32 1069; CHECK-NEXT: # %bb.0: 1070; CHECK-NEXT: call op_0_to_3 1071; CHECK-NEXT: drop 1072; CHECK-NEXT: local.set 1 1073; CHECK-NEXT: local.set 0 1074; CHECK-NEXT: local.get 1 1075; CHECK-NEXT: call op_1_to_0 1076; CHECK-NEXT: local.get 0 1077; CHECK-NEXT: local.get 1 1078; CHECK-NEXT: call op_2_to_0 1079; CHECK-NEXT: # fallthrough-return 1080 %t0 = call {i32, i32, i32} @op_0_to_3() 1081 %t1 = extractvalue {i32, i32, i32} %t0, 1 1082 call void @op_1_to_0(i32 %t1) 1083 %t2 = extractvalue {i32, i32, i32} %t0, 0 1084 %t3 = extractvalue {i32, i32, i32} %t0, 1 1085 call void @op_2_to_0(i32 %t2, i32 %t3) 1086 ret void 1087} 1088 1089define void @f307() { 1090; CHECK-LABEL: f307: 1091; CHECK: .functype f307 () -> () 1092; CHECK-NEXT: .local i32, i32, i32 1093; CHECK-NEXT: # %bb.0: 1094; CHECK-NEXT: call op_0_to_3 1095; CHECK-NEXT: local.set 2 1096; CHECK-NEXT: local.set 1 1097; CHECK-NEXT: local.set 0 1098; CHECK-NEXT: local.get 1 1099; CHECK-NEXT: call op_1_to_0 1100; CHECK-NEXT: local.get 0 1101; CHECK-NEXT: local.get 2 1102; CHECK-NEXT: call op_2_to_0 1103; CHECK-NEXT: # fallthrough-return 1104 %t0 = call {i32, i32, i32} @op_0_to_3() 1105 %t1 = extractvalue {i32, i32, i32} %t0, 1 1106 call void @op_1_to_0(i32 %t1) 1107 %t2 = extractvalue {i32, i32, i32} %t0, 0 1108 %t3 = extractvalue {i32, i32, i32} %t0, 2 1109 call void @op_2_to_0(i32 %t2, i32 %t3) 1110 ret void 1111} 1112 1113define void @f308() { 1114; CHECK-LABEL: f308: 1115; CHECK: .functype f308 () -> () 1116; CHECK-NEXT: .local i32, i32 1117; CHECK-NEXT: # %bb.0: 1118; CHECK-NEXT: call op_0_to_3 1119; CHECK-NEXT: drop 1120; CHECK-NEXT: local.set 1 1121; CHECK-NEXT: local.set 0 1122; CHECK-NEXT: local.get 1 1123; CHECK-NEXT: call op_1_to_0 1124; CHECK-NEXT: local.get 1 1125; CHECK-NEXT: local.get 0 1126; CHECK-NEXT: call op_2_to_0 1127; CHECK-NEXT: # fallthrough-return 1128 %t0 = call {i32, i32, i32} @op_0_to_3() 1129 %t1 = extractvalue {i32, i32, i32} %t0, 1 1130 call void @op_1_to_0(i32 %t1) 1131 %t2 = extractvalue {i32, i32, i32} %t0, 1 1132 %t3 = extractvalue {i32, i32, i32} %t0, 0 1133 call void @op_2_to_0(i32 %t2, i32 %t3) 1134 ret void 1135} 1136 1137define void @f310() { 1138; CHECK-LABEL: f310: 1139; CHECK: .functype f310 () -> () 1140; CHECK-NEXT: .local i32, i32 1141; CHECK-NEXT: # %bb.0: 1142; CHECK-NEXT: call op_0_to_3 1143; CHECK-NEXT: local.set 1 1144; CHECK-NEXT: local.set 0 1145; CHECK-NEXT: drop 1146; CHECK-NEXT: local.get 0 1147; CHECK-NEXT: call op_1_to_0 1148; CHECK-NEXT: local.get 0 1149; CHECK-NEXT: local.get 1 1150; CHECK-NEXT: call op_2_to_0 1151; CHECK-NEXT: # fallthrough-return 1152 %t0 = call {i32, i32, i32} @op_0_to_3() 1153 %t1 = extractvalue {i32, i32, i32} %t0, 1 1154 call void @op_1_to_0(i32 %t1) 1155 %t2 = extractvalue {i32, i32, i32} %t0, 1 1156 %t3 = extractvalue {i32, i32, i32} %t0, 2 1157 call void @op_2_to_0(i32 %t2, i32 %t3) 1158 ret void 1159} 1160 1161define void @f311() { 1162; CHECK-LABEL: f311: 1163; CHECK: .functype f311 () -> () 1164; CHECK-NEXT: .local i32, i32, i32 1165; CHECK-NEXT: # %bb.0: 1166; CHECK-NEXT: call op_0_to_3 1167; CHECK-NEXT: local.set 2 1168; CHECK-NEXT: local.set 1 1169; CHECK-NEXT: local.set 0 1170; CHECK-NEXT: local.get 1 1171; CHECK-NEXT: call op_1_to_0 1172; CHECK-NEXT: local.get 2 1173; CHECK-NEXT: local.get 0 1174; CHECK-NEXT: call op_2_to_0 1175; CHECK-NEXT: # fallthrough-return 1176 %t0 = call {i32, i32, i32} @op_0_to_3() 1177 %t1 = extractvalue {i32, i32, i32} %t0, 1 1178 call void @op_1_to_0(i32 %t1) 1179 %t2 = extractvalue {i32, i32, i32} %t0, 2 1180 %t3 = extractvalue {i32, i32, i32} %t0, 0 1181 call void @op_2_to_0(i32 %t2, i32 %t3) 1182 ret void 1183} 1184 1185define void @f312() { 1186; CHECK-LABEL: f312: 1187; CHECK: .functype f312 () -> () 1188; CHECK-NEXT: .local i32, i32 1189; CHECK-NEXT: # %bb.0: 1190; CHECK-NEXT: call op_0_to_3 1191; CHECK-NEXT: local.set 1 1192; CHECK-NEXT: local.set 0 1193; CHECK-NEXT: drop 1194; CHECK-NEXT: local.get 0 1195; CHECK-NEXT: call op_1_to_0 1196; CHECK-NEXT: local.get 1 1197; CHECK-NEXT: local.get 0 1198; CHECK-NEXT: call op_2_to_0 1199; CHECK-NEXT: # fallthrough-return 1200 %t0 = call {i32, i32, i32} @op_0_to_3() 1201 %t1 = extractvalue {i32, i32, i32} %t0, 1 1202 call void @op_1_to_0(i32 %t1) 1203 %t2 = extractvalue {i32, i32, i32} %t0, 2 1204 %t3 = extractvalue {i32, i32, i32} %t0, 1 1205 call void @op_2_to_0(i32 %t2, i32 %t3) 1206 ret void 1207} 1208 1209define void @f313() { 1210; CHECK-LABEL: f313: 1211; CHECK: .functype f313 () -> () 1212; CHECK-NEXT: .local i32, i32 1213; CHECK-NEXT: # %bb.0: 1214; CHECK-NEXT: call op_0_to_3 1215; CHECK-NEXT: local.set 1 1216; CHECK-NEXT: local.set 0 1217; CHECK-NEXT: drop 1218; CHECK-NEXT: local.get 0 1219; CHECK-NEXT: call op_1_to_0 1220; CHECK-NEXT: local.get 1 1221; CHECK-NEXT: local.get 1 1222; CHECK-NEXT: call op_2_to_0 1223; CHECK-NEXT: # fallthrough-return 1224 %t0 = call {i32, i32, i32} @op_0_to_3() 1225 %t1 = extractvalue {i32, i32, i32} %t0, 1 1226 call void @op_1_to_0(i32 %t1) 1227 %t2 = extractvalue {i32, i32, i32} %t0, 2 1228 %t3 = extractvalue {i32, i32, i32} %t0, 2 1229 call void @op_2_to_0(i32 %t2, i32 %t3) 1230 ret void 1231} 1232 1233define void @f314() { 1234; CHECK-LABEL: f314: 1235; CHECK: .functype f314 () -> () 1236; CHECK-NEXT: .local i32, i32 1237; CHECK-NEXT: # %bb.0: 1238; CHECK-NEXT: call op_0_to_3 1239; CHECK-NEXT: local.set 1 1240; CHECK-NEXT: drop 1241; CHECK-NEXT: local.set 0 1242; CHECK-NEXT: local.get 1 1243; CHECK-NEXT: call op_1_to_0 1244; CHECK-NEXT: local.get 0 1245; CHECK-NEXT: call op_1_to_0 1246; CHECK-NEXT: # fallthrough-return 1247 %t0 = call {i32, i32, i32} @op_0_to_3() 1248 %t1 = extractvalue {i32, i32, i32} %t0, 2 1249 call void @op_1_to_0(i32 %t1) 1250 %t2 = extractvalue {i32, i32, i32} %t0, 0 1251 call void @op_1_to_0(i32 %t2) 1252 ret void 1253} 1254 1255define void @f315() { 1256; CHECK-LABEL: f315: 1257; CHECK: .functype f315 () -> () 1258; CHECK-NEXT: .local i32, i32 1259; CHECK-NEXT: # %bb.0: 1260; CHECK-NEXT: call op_0_to_3 1261; CHECK-NEXT: local.set 1 1262; CHECK-NEXT: local.set 0 1263; CHECK-NEXT: drop 1264; CHECK-NEXT: local.get 1 1265; CHECK-NEXT: call op_1_to_0 1266; CHECK-NEXT: local.get 0 1267; CHECK-NEXT: call op_1_to_0 1268; CHECK-NEXT: # fallthrough-return 1269 %t0 = call {i32, i32, i32} @op_0_to_3() 1270 %t1 = extractvalue {i32, i32, i32} %t0, 2 1271 call void @op_1_to_0(i32 %t1) 1272 %t2 = extractvalue {i32, i32, i32} %t0, 1 1273 call void @op_1_to_0(i32 %t2) 1274 ret void 1275} 1276 1277define void @f317() { 1278; CHECK-LABEL: f317: 1279; CHECK: .functype f317 () -> () 1280; CHECK-NEXT: .local i32, i32 1281; CHECK-NEXT: # %bb.0: 1282; CHECK-NEXT: call op_0_to_3 1283; CHECK-NEXT: local.set 1 1284; CHECK-NEXT: drop 1285; CHECK-NEXT: local.set 0 1286; CHECK-NEXT: local.get 1 1287; CHECK-NEXT: call op_1_to_0 1288; CHECK-NEXT: local.get 0 1289; CHECK-NEXT: local.get 0 1290; CHECK-NEXT: call op_2_to_0 1291; CHECK-NEXT: # fallthrough-return 1292 %t0 = call {i32, i32, i32} @op_0_to_3() 1293 %t1 = extractvalue {i32, i32, i32} %t0, 2 1294 call void @op_1_to_0(i32 %t1) 1295 %t2 = extractvalue {i32, i32, i32} %t0, 0 1296 %t3 = extractvalue {i32, i32, i32} %t0, 0 1297 call void @op_2_to_0(i32 %t2, i32 %t3) 1298 ret void 1299} 1300 1301define void @f318() { 1302; CHECK-LABEL: f318: 1303; CHECK: .functype f318 () -> () 1304; CHECK-NEXT: .local i32, i32, i32 1305; CHECK-NEXT: # %bb.0: 1306; CHECK-NEXT: call op_0_to_3 1307; CHECK-NEXT: local.set 2 1308; CHECK-NEXT: local.set 1 1309; CHECK-NEXT: local.set 0 1310; CHECK-NEXT: local.get 2 1311; CHECK-NEXT: call op_1_to_0 1312; CHECK-NEXT: local.get 0 1313; CHECK-NEXT: local.get 1 1314; CHECK-NEXT: call op_2_to_0 1315; CHECK-NEXT: # fallthrough-return 1316 %t0 = call {i32, i32, i32} @op_0_to_3() 1317 %t1 = extractvalue {i32, i32, i32} %t0, 2 1318 call void @op_1_to_0(i32 %t1) 1319 %t2 = extractvalue {i32, i32, i32} %t0, 0 1320 %t3 = extractvalue {i32, i32, i32} %t0, 1 1321 call void @op_2_to_0(i32 %t2, i32 %t3) 1322 ret void 1323} 1324 1325define void @f319() { 1326; CHECK-LABEL: f319: 1327; CHECK: .functype f319 () -> () 1328; CHECK-NEXT: .local i32, i32 1329; CHECK-NEXT: # %bb.0: 1330; CHECK-NEXT: call op_0_to_3 1331; CHECK-NEXT: local.set 1 1332; CHECK-NEXT: drop 1333; CHECK-NEXT: local.set 0 1334; CHECK-NEXT: local.get 1 1335; CHECK-NEXT: call op_1_to_0 1336; CHECK-NEXT: local.get 0 1337; CHECK-NEXT: local.get 1 1338; CHECK-NEXT: call op_2_to_0 1339; CHECK-NEXT: # fallthrough-return 1340 %t0 = call {i32, i32, i32} @op_0_to_3() 1341 %t1 = extractvalue {i32, i32, i32} %t0, 2 1342 call void @op_1_to_0(i32 %t1) 1343 %t2 = extractvalue {i32, i32, i32} %t0, 0 1344 %t3 = extractvalue {i32, i32, i32} %t0, 2 1345 call void @op_2_to_0(i32 %t2, i32 %t3) 1346 ret void 1347} 1348 1349define void @f320() { 1350; CHECK-LABEL: f320: 1351; CHECK: .functype f320 () -> () 1352; CHECK-NEXT: .local i32, i32, i32 1353; CHECK-NEXT: # %bb.0: 1354; CHECK-NEXT: call op_0_to_3 1355; CHECK-NEXT: local.set 2 1356; CHECK-NEXT: local.set 1 1357; CHECK-NEXT: local.set 0 1358; CHECK-NEXT: local.get 2 1359; CHECK-NEXT: call op_1_to_0 1360; CHECK-NEXT: local.get 1 1361; CHECK-NEXT: local.get 0 1362; CHECK-NEXT: call op_2_to_0 1363; CHECK-NEXT: # fallthrough-return 1364 %t0 = call {i32, i32, i32} @op_0_to_3() 1365 %t1 = extractvalue {i32, i32, i32} %t0, 2 1366 call void @op_1_to_0(i32 %t1) 1367 %t2 = extractvalue {i32, i32, i32} %t0, 1 1368 %t3 = extractvalue {i32, i32, i32} %t0, 0 1369 call void @op_2_to_0(i32 %t2, i32 %t3) 1370 ret void 1371} 1372 1373define void @f321() { 1374; CHECK-LABEL: f321: 1375; CHECK: .functype f321 () -> () 1376; CHECK-NEXT: .local i32, i32 1377; CHECK-NEXT: # %bb.0: 1378; CHECK-NEXT: call op_0_to_3 1379; CHECK-NEXT: local.set 1 1380; CHECK-NEXT: local.set 0 1381; CHECK-NEXT: drop 1382; CHECK-NEXT: local.get 1 1383; CHECK-NEXT: call op_1_to_0 1384; CHECK-NEXT: local.get 0 1385; CHECK-NEXT: local.get 0 1386; CHECK-NEXT: call op_2_to_0 1387; CHECK-NEXT: # fallthrough-return 1388 %t0 = call {i32, i32, i32} @op_0_to_3() 1389 %t1 = extractvalue {i32, i32, i32} %t0, 2 1390 call void @op_1_to_0(i32 %t1) 1391 %t2 = extractvalue {i32, i32, i32} %t0, 1 1392 %t3 = extractvalue {i32, i32, i32} %t0, 1 1393 call void @op_2_to_0(i32 %t2, i32 %t3) 1394 ret void 1395} 1396 1397define void @f322() { 1398; CHECK-LABEL: f322: 1399; CHECK: .functype f322 () -> () 1400; CHECK-NEXT: .local i32, i32 1401; CHECK-NEXT: # %bb.0: 1402; CHECK-NEXT: call op_0_to_3 1403; CHECK-NEXT: local.set 1 1404; CHECK-NEXT: local.set 0 1405; CHECK-NEXT: drop 1406; CHECK-NEXT: local.get 1 1407; CHECK-NEXT: call op_1_to_0 1408; CHECK-NEXT: local.get 0 1409; CHECK-NEXT: local.get 1 1410; CHECK-NEXT: call op_2_to_0 1411; CHECK-NEXT: # fallthrough-return 1412 %t0 = call {i32, i32, i32} @op_0_to_3() 1413 %t1 = extractvalue {i32, i32, i32} %t0, 2 1414 call void @op_1_to_0(i32 %t1) 1415 %t2 = extractvalue {i32, i32, i32} %t0, 1 1416 %t3 = extractvalue {i32, i32, i32} %t0, 2 1417 call void @op_2_to_0(i32 %t2, i32 %t3) 1418 ret void 1419} 1420 1421define void @f323() { 1422; CHECK-LABEL: f323: 1423; CHECK: .functype f323 () -> () 1424; CHECK-NEXT: .local i32, i32 1425; CHECK-NEXT: # %bb.0: 1426; CHECK-NEXT: call op_0_to_3 1427; CHECK-NEXT: local.set 1 1428; CHECK-NEXT: drop 1429; CHECK-NEXT: local.set 0 1430; CHECK-NEXT: local.get 1 1431; CHECK-NEXT: call op_1_to_0 1432; CHECK-NEXT: local.get 1 1433; CHECK-NEXT: local.get 0 1434; CHECK-NEXT: call op_2_to_0 1435; CHECK-NEXT: # fallthrough-return 1436 %t0 = call {i32, i32, i32} @op_0_to_3() 1437 %t1 = extractvalue {i32, i32, i32} %t0, 2 1438 call void @op_1_to_0(i32 %t1) 1439 %t2 = extractvalue {i32, i32, i32} %t0, 2 1440 %t3 = extractvalue {i32, i32, i32} %t0, 0 1441 call void @op_2_to_0(i32 %t2, i32 %t3) 1442 ret void 1443} 1444 1445define void @f324() { 1446; CHECK-LABEL: f324: 1447; CHECK: .functype f324 () -> () 1448; CHECK-NEXT: .local i32, i32 1449; CHECK-NEXT: # %bb.0: 1450; CHECK-NEXT: call op_0_to_3 1451; CHECK-NEXT: local.set 1 1452; CHECK-NEXT: local.set 0 1453; CHECK-NEXT: drop 1454; CHECK-NEXT: local.get 1 1455; CHECK-NEXT: call op_1_to_0 1456; CHECK-NEXT: local.get 1 1457; CHECK-NEXT: local.get 0 1458; CHECK-NEXT: call op_2_to_0 1459; CHECK-NEXT: # fallthrough-return 1460 %t0 = call {i32, i32, i32} @op_0_to_3() 1461 %t1 = extractvalue {i32, i32, i32} %t0, 2 1462 call void @op_1_to_0(i32 %t1) 1463 %t2 = extractvalue {i32, i32, i32} %t0, 2 1464 %t3 = extractvalue {i32, i32, i32} %t0, 1 1465 call void @op_2_to_0(i32 %t2, i32 %t3) 1466 ret void 1467} 1468 1469define void @f327() { 1470; CHECK-LABEL: f327: 1471; CHECK: .functype f327 () -> () 1472; CHECK-NEXT: .local i32, i32 1473; CHECK-NEXT: # %bb.0: 1474; CHECK-NEXT: call op_0_to_3 1475; CHECK-NEXT: drop 1476; CHECK-NEXT: local.set 0 1477; CHECK-NEXT: local.tee 1 1478; CHECK-NEXT: local.get 1 1479; CHECK-NEXT: call op_2_to_0 1480; CHECK-NEXT: local.get 0 1481; CHECK-NEXT: call op_1_to_0 1482; CHECK-NEXT: # fallthrough-return 1483 %t0 = call {i32, i32, i32} @op_0_to_3() 1484 %t1 = extractvalue {i32, i32, i32} %t0, 0 1485 %t2 = extractvalue {i32, i32, i32} %t0, 0 1486 call void @op_2_to_0(i32 %t1, i32 %t2) 1487 %t3 = extractvalue {i32, i32, i32} %t0, 1 1488 call void @op_1_to_0(i32 %t3) 1489 ret void 1490} 1491 1492define void @f328() { 1493; CHECK-LABEL: f328: 1494; CHECK: .functype f328 () -> () 1495; CHECK-NEXT: .local i32, i32 1496; CHECK-NEXT: # %bb.0: 1497; CHECK-NEXT: call op_0_to_3 1498; CHECK-NEXT: local.set 0 1499; CHECK-NEXT: drop 1500; CHECK-NEXT: local.tee 1 1501; CHECK-NEXT: local.get 1 1502; CHECK-NEXT: call op_2_to_0 1503; CHECK-NEXT: local.get 0 1504; CHECK-NEXT: call op_1_to_0 1505; CHECK-NEXT: # fallthrough-return 1506 %t0 = call {i32, i32, i32} @op_0_to_3() 1507 %t1 = extractvalue {i32, i32, i32} %t0, 0 1508 %t2 = extractvalue {i32, i32, i32} %t0, 0 1509 call void @op_2_to_0(i32 %t1, i32 %t2) 1510 %t3 = extractvalue {i32, i32, i32} %t0, 2 1511 call void @op_1_to_0(i32 %t3) 1512 ret void 1513} 1514 1515define void @f333() { 1516; CHECK-LABEL: f333: 1517; CHECK: .functype f333 () -> () 1518; CHECK-NEXT: .local i32, i32 1519; CHECK-NEXT: # %bb.0: 1520; CHECK-NEXT: call op_0_to_3 1521; CHECK-NEXT: drop 1522; CHECK-NEXT: local.set 0 1523; CHECK-NEXT: local.tee 1 1524; CHECK-NEXT: local.get 1 1525; CHECK-NEXT: call op_2_to_0 1526; CHECK-NEXT: local.get 0 1527; CHECK-NEXT: local.get 0 1528; CHECK-NEXT: call op_2_to_0 1529; CHECK-NEXT: # fallthrough-return 1530 %t0 = call {i32, i32, i32} @op_0_to_3() 1531 %t1 = extractvalue {i32, i32, i32} %t0, 0 1532 %t2 = extractvalue {i32, i32, i32} %t0, 0 1533 call void @op_2_to_0(i32 %t1, i32 %t2) 1534 %t3 = extractvalue {i32, i32, i32} %t0, 1 1535 %t4 = extractvalue {i32, i32, i32} %t0, 1 1536 call void @op_2_to_0(i32 %t3, i32 %t4) 1537 ret void 1538} 1539 1540define void @f334() { 1541; CHECK-LABEL: f334: 1542; CHECK: .functype f334 () -> () 1543; CHECK-NEXT: .local i32, i32, i32 1544; CHECK-NEXT: # %bb.0: 1545; CHECK-NEXT: call op_0_to_3 1546; CHECK-NEXT: local.set 1 1547; CHECK-NEXT: local.set 0 1548; CHECK-NEXT: local.tee 2 1549; CHECK-NEXT: local.get 2 1550; CHECK-NEXT: call op_2_to_0 1551; CHECK-NEXT: local.get 0 1552; CHECK-NEXT: local.get 1 1553; CHECK-NEXT: call op_2_to_0 1554; CHECK-NEXT: # fallthrough-return 1555 %t0 = call {i32, i32, i32} @op_0_to_3() 1556 %t1 = extractvalue {i32, i32, i32} %t0, 0 1557 %t2 = extractvalue {i32, i32, i32} %t0, 0 1558 call void @op_2_to_0(i32 %t1, i32 %t2) 1559 %t3 = extractvalue {i32, i32, i32} %t0, 1 1560 %t4 = extractvalue {i32, i32, i32} %t0, 2 1561 call void @op_2_to_0(i32 %t3, i32 %t4) 1562 ret void 1563} 1564 1565define void @f336() { 1566; CHECK-LABEL: f336: 1567; CHECK: .functype f336 () -> () 1568; CHECK-NEXT: .local i32, i32, i32 1569; CHECK-NEXT: # %bb.0: 1570; CHECK-NEXT: call op_0_to_3 1571; CHECK-NEXT: local.set 1 1572; CHECK-NEXT: local.set 0 1573; CHECK-NEXT: local.tee 2 1574; CHECK-NEXT: local.get 2 1575; CHECK-NEXT: call op_2_to_0 1576; CHECK-NEXT: local.get 1 1577; CHECK-NEXT: local.get 0 1578; CHECK-NEXT: call op_2_to_0 1579; CHECK-NEXT: # fallthrough-return 1580 %t0 = call {i32, i32, i32} @op_0_to_3() 1581 %t1 = extractvalue {i32, i32, i32} %t0, 0 1582 %t2 = extractvalue {i32, i32, i32} %t0, 0 1583 call void @op_2_to_0(i32 %t1, i32 %t2) 1584 %t3 = extractvalue {i32, i32, i32} %t0, 2 1585 %t4 = extractvalue {i32, i32, i32} %t0, 1 1586 call void @op_2_to_0(i32 %t3, i32 %t4) 1587 ret void 1588} 1589 1590define void @f337() { 1591; CHECK-LABEL: f337: 1592; CHECK: .functype f337 () -> () 1593; CHECK-NEXT: .local i32, i32 1594; CHECK-NEXT: # %bb.0: 1595; CHECK-NEXT: call op_0_to_3 1596; CHECK-NEXT: local.set 0 1597; CHECK-NEXT: drop 1598; CHECK-NEXT: local.tee 1 1599; CHECK-NEXT: local.get 1 1600; CHECK-NEXT: call op_2_to_0 1601; CHECK-NEXT: local.get 0 1602; CHECK-NEXT: local.get 0 1603; CHECK-NEXT: call op_2_to_0 1604; CHECK-NEXT: # fallthrough-return 1605 %t0 = call {i32, i32, i32} @op_0_to_3() 1606 %t1 = extractvalue {i32, i32, i32} %t0, 0 1607 %t2 = extractvalue {i32, i32, i32} %t0, 0 1608 call void @op_2_to_0(i32 %t1, i32 %t2) 1609 %t3 = extractvalue {i32, i32, i32} %t0, 2 1610 %t4 = extractvalue {i32, i32, i32} %t0, 2 1611 call void @op_2_to_0(i32 %t3, i32 %t4) 1612 ret void 1613} 1614 1615define void @f338() { 1616; CHECK-LABEL: f338: 1617; CHECK: .functype f338 () -> () 1618; CHECK-NEXT: .local i32, i32 1619; CHECK-NEXT: # %bb.0: 1620; CHECK-NEXT: call op_0_to_3 1621; CHECK-NEXT: drop 1622; CHECK-NEXT: local.set 0 1623; CHECK-NEXT: local.tee 1 1624; CHECK-NEXT: local.get 0 1625; CHECK-NEXT: call op_2_to_0 1626; CHECK-NEXT: local.get 1 1627; CHECK-NEXT: call op_1_to_0 1628; CHECK-NEXT: # fallthrough-return 1629 %t0 = call {i32, i32, i32} @op_0_to_3() 1630 %t1 = extractvalue {i32, i32, i32} %t0, 0 1631 %t2 = extractvalue {i32, i32, i32} %t0, 1 1632 call void @op_2_to_0(i32 %t1, i32 %t2) 1633 %t3 = extractvalue {i32, i32, i32} %t0, 0 1634 call void @op_1_to_0(i32 %t3) 1635 ret void 1636} 1637 1638define void @f339() { 1639; CHECK-LABEL: f339: 1640; CHECK: .functype f339 () -> () 1641; CHECK-NEXT: .local i32 1642; CHECK-NEXT: # %bb.0: 1643; CHECK-NEXT: call op_0_to_3 1644; CHECK-NEXT: drop 1645; CHECK-NEXT: local.set 0 1646; CHECK-NEXT: local.get 0 1647; CHECK-NEXT: call op_2_to_0 1648; CHECK-NEXT: local.get 0 1649; CHECK-NEXT: call op_1_to_0 1650; CHECK-NEXT: # fallthrough-return 1651 %t0 = call {i32, i32, i32} @op_0_to_3() 1652 %t1 = extractvalue {i32, i32, i32} %t0, 0 1653 %t2 = extractvalue {i32, i32, i32} %t0, 1 1654 call void @op_2_to_0(i32 %t1, i32 %t2) 1655 %t3 = extractvalue {i32, i32, i32} %t0, 1 1656 call void @op_1_to_0(i32 %t3) 1657 ret void 1658} 1659 1660define void @f340() { 1661; CHECK-LABEL: f340: 1662; CHECK: .functype f340 () -> () 1663; CHECK-NEXT: .local i32 1664; CHECK-NEXT: # %bb.0: 1665; CHECK-NEXT: call op_0_to_3 1666; CHECK-NEXT: local.set 0 1667; CHECK-NEXT: call op_2_to_0 1668; CHECK-NEXT: local.get 0 1669; CHECK-NEXT: call op_1_to_0 1670; CHECK-NEXT: # fallthrough-return 1671 %t0 = call {i32, i32, i32} @op_0_to_3() 1672 %t1 = extractvalue {i32, i32, i32} %t0, 0 1673 %t2 = extractvalue {i32, i32, i32} %t0, 1 1674 call void @op_2_to_0(i32 %t1, i32 %t2) 1675 %t3 = extractvalue {i32, i32, i32} %t0, 2 1676 call void @op_1_to_0(i32 %t3) 1677 ret void 1678} 1679 1680define void @f343() { 1681; CHECK-LABEL: f343: 1682; CHECK: .functype f343 () -> () 1683; CHECK-NEXT: .local i32, i32, i32 1684; CHECK-NEXT: # %bb.0: 1685; CHECK-NEXT: call op_0_to_3 1686; CHECK-NEXT: local.set 1 1687; CHECK-NEXT: local.set 0 1688; CHECK-NEXT: local.tee 2 1689; CHECK-NEXT: local.get 0 1690; CHECK-NEXT: call op_2_to_0 1691; CHECK-NEXT: local.get 2 1692; CHECK-NEXT: local.get 1 1693; CHECK-NEXT: call op_2_to_0 1694; CHECK-NEXT: # fallthrough-return 1695 %t0 = call {i32, i32, i32} @op_0_to_3() 1696 %t1 = extractvalue {i32, i32, i32} %t0, 0 1697 %t2 = extractvalue {i32, i32, i32} %t0, 1 1698 call void @op_2_to_0(i32 %t1, i32 %t2) 1699 %t3 = extractvalue {i32, i32, i32} %t0, 0 1700 %t4 = extractvalue {i32, i32, i32} %t0, 2 1701 call void @op_2_to_0(i32 %t3, i32 %t4) 1702 ret void 1703} 1704 1705define void @f344() { 1706; CHECK-LABEL: f344: 1707; CHECK: .functype f344 () -> () 1708; CHECK-NEXT: .local i32, i32 1709; CHECK-NEXT: # %bb.0: 1710; CHECK-NEXT: call op_0_to_3 1711; CHECK-NEXT: drop 1712; CHECK-NEXT: local.set 0 1713; CHECK-NEXT: local.tee 1 1714; CHECK-NEXT: local.get 0 1715; CHECK-NEXT: call op_2_to_0 1716; CHECK-NEXT: local.get 0 1717; CHECK-NEXT: local.get 1 1718; CHECK-NEXT: call op_2_to_0 1719; CHECK-NEXT: # fallthrough-return 1720 %t0 = call {i32, i32, i32} @op_0_to_3() 1721 %t1 = extractvalue {i32, i32, i32} %t0, 0 1722 %t2 = extractvalue {i32, i32, i32} %t0, 1 1723 call void @op_2_to_0(i32 %t1, i32 %t2) 1724 %t3 = extractvalue {i32, i32, i32} %t0, 1 1725 %t4 = extractvalue {i32, i32, i32} %t0, 0 1726 call void @op_2_to_0(i32 %t3, i32 %t4) 1727 ret void 1728} 1729 1730define void @f346() { 1731; CHECK-LABEL: f346: 1732; CHECK: .functype f346 () -> () 1733; CHECK-NEXT: .local i32, i32 1734; CHECK-NEXT: # %bb.0: 1735; CHECK-NEXT: call op_0_to_3 1736; CHECK-NEXT: local.set 1 1737; CHECK-NEXT: local.set 0 1738; CHECK-NEXT: local.get 0 1739; CHECK-NEXT: call op_2_to_0 1740; CHECK-NEXT: local.get 0 1741; CHECK-NEXT: local.get 1 1742; CHECK-NEXT: call op_2_to_0 1743; CHECK-NEXT: # fallthrough-return 1744 %t0 = call {i32, i32, i32} @op_0_to_3() 1745 %t1 = extractvalue {i32, i32, i32} %t0, 0 1746 %t2 = extractvalue {i32, i32, i32} %t0, 1 1747 call void @op_2_to_0(i32 %t1, i32 %t2) 1748 %t3 = extractvalue {i32, i32, i32} %t0, 1 1749 %t4 = extractvalue {i32, i32, i32} %t0, 2 1750 call void @op_2_to_0(i32 %t3, i32 %t4) 1751 ret void 1752} 1753 1754define void @f347() { 1755; CHECK-LABEL: f347: 1756; CHECK: .functype f347 () -> () 1757; CHECK-NEXT: .local i32, i32, i32 1758; CHECK-NEXT: # %bb.0: 1759; CHECK-NEXT: call op_0_to_3 1760; CHECK-NEXT: local.set 1 1761; CHECK-NEXT: local.set 0 1762; CHECK-NEXT: local.tee 2 1763; CHECK-NEXT: local.get 0 1764; CHECK-NEXT: call op_2_to_0 1765; CHECK-NEXT: local.get 1 1766; CHECK-NEXT: local.get 2 1767; CHECK-NEXT: call op_2_to_0 1768; CHECK-NEXT: # fallthrough-return 1769 %t0 = call {i32, i32, i32} @op_0_to_3() 1770 %t1 = extractvalue {i32, i32, i32} %t0, 0 1771 %t2 = extractvalue {i32, i32, i32} %t0, 1 1772 call void @op_2_to_0(i32 %t1, i32 %t2) 1773 %t3 = extractvalue {i32, i32, i32} %t0, 2 1774 %t4 = extractvalue {i32, i32, i32} %t0, 0 1775 call void @op_2_to_0(i32 %t3, i32 %t4) 1776 ret void 1777} 1778 1779define void @f348() { 1780; CHECK-LABEL: f348: 1781; CHECK: .functype f348 () -> () 1782; CHECK-NEXT: .local i32, i32 1783; CHECK-NEXT: # %bb.0: 1784; CHECK-NEXT: call op_0_to_3 1785; CHECK-NEXT: local.set 1 1786; CHECK-NEXT: local.set 0 1787; CHECK-NEXT: local.get 0 1788; CHECK-NEXT: call op_2_to_0 1789; CHECK-NEXT: local.get 1 1790; CHECK-NEXT: local.get 0 1791; CHECK-NEXT: call op_2_to_0 1792; CHECK-NEXT: # fallthrough-return 1793 %t0 = call {i32, i32, i32} @op_0_to_3() 1794 %t1 = extractvalue {i32, i32, i32} %t0, 0 1795 %t2 = extractvalue {i32, i32, i32} %t0, 1 1796 call void @op_2_to_0(i32 %t1, i32 %t2) 1797 %t3 = extractvalue {i32, i32, i32} %t0, 2 1798 %t4 = extractvalue {i32, i32, i32} %t0, 1 1799 call void @op_2_to_0(i32 %t3, i32 %t4) 1800 ret void 1801} 1802 1803define void @f349() { 1804; CHECK-LABEL: f349: 1805; CHECK: .functype f349 () -> () 1806; CHECK-NEXT: .local i32 1807; CHECK-NEXT: # %bb.0: 1808; CHECK-NEXT: call op_0_to_3 1809; CHECK-NEXT: local.set 0 1810; CHECK-NEXT: call op_2_to_0 1811; CHECK-NEXT: local.get 0 1812; CHECK-NEXT: local.get 0 1813; CHECK-NEXT: call op_2_to_0 1814; CHECK-NEXT: # fallthrough-return 1815 %t0 = call {i32, i32, i32} @op_0_to_3() 1816 %t1 = extractvalue {i32, i32, i32} %t0, 0 1817 %t2 = extractvalue {i32, i32, i32} %t0, 1 1818 call void @op_2_to_0(i32 %t1, i32 %t2) 1819 %t3 = extractvalue {i32, i32, i32} %t0, 2 1820 %t4 = extractvalue {i32, i32, i32} %t0, 2 1821 call void @op_2_to_0(i32 %t3, i32 %t4) 1822 ret void 1823} 1824 1825define void @f350() { 1826; CHECK-LABEL: f350: 1827; CHECK: .functype f350 () -> () 1828; CHECK-NEXT: .local i32, i32 1829; CHECK-NEXT: # %bb.0: 1830; CHECK-NEXT: call op_0_to_3 1831; CHECK-NEXT: local.set 0 1832; CHECK-NEXT: drop 1833; CHECK-NEXT: local.tee 1 1834; CHECK-NEXT: local.get 0 1835; CHECK-NEXT: call op_2_to_0 1836; CHECK-NEXT: local.get 1 1837; CHECK-NEXT: call op_1_to_0 1838; CHECK-NEXT: # fallthrough-return 1839 %t0 = call {i32, i32, i32} @op_0_to_3() 1840 %t1 = extractvalue {i32, i32, i32} %t0, 0 1841 %t2 = extractvalue {i32, i32, i32} %t0, 2 1842 call void @op_2_to_0(i32 %t1, i32 %t2) 1843 %t3 = extractvalue {i32, i32, i32} %t0, 0 1844 call void @op_1_to_0(i32 %t3) 1845 ret void 1846} 1847 1848define void @f351() { 1849; CHECK-LABEL: f351: 1850; CHECK: .functype f351 () -> () 1851; CHECK-NEXT: .local i32, i32 1852; CHECK-NEXT: # %bb.0: 1853; CHECK-NEXT: call op_0_to_3 1854; CHECK-NEXT: local.set 1 1855; CHECK-NEXT: local.set 0 1856; CHECK-NEXT: local.get 1 1857; CHECK-NEXT: call op_2_to_0 1858; CHECK-NEXT: local.get 0 1859; CHECK-NEXT: call op_1_to_0 1860; CHECK-NEXT: # fallthrough-return 1861 %t0 = call {i32, i32, i32} @op_0_to_3() 1862 %t1 = extractvalue {i32, i32, i32} %t0, 0 1863 %t2 = extractvalue {i32, i32, i32} %t0, 2 1864 call void @op_2_to_0(i32 %t1, i32 %t2) 1865 %t3 = extractvalue {i32, i32, i32} %t0, 1 1866 call void @op_1_to_0(i32 %t3) 1867 ret void 1868} 1869 1870define void @f352() { 1871; CHECK-LABEL: f352: 1872; CHECK: .functype f352 () -> () 1873; CHECK-NEXT: .local i32 1874; CHECK-NEXT: # %bb.0: 1875; CHECK-NEXT: call op_0_to_3 1876; CHECK-NEXT: local.set 0 1877; CHECK-NEXT: drop 1878; CHECK-NEXT: local.get 0 1879; CHECK-NEXT: call op_2_to_0 1880; CHECK-NEXT: local.get 0 1881; CHECK-NEXT: call op_1_to_0 1882; CHECK-NEXT: # fallthrough-return 1883 %t0 = call {i32, i32, i32} @op_0_to_3() 1884 %t1 = extractvalue {i32, i32, i32} %t0, 0 1885 %t2 = extractvalue {i32, i32, i32} %t0, 2 1886 call void @op_2_to_0(i32 %t1, i32 %t2) 1887 %t3 = extractvalue {i32, i32, i32} %t0, 2 1888 call void @op_1_to_0(i32 %t3) 1889 ret void 1890} 1891 1892define void @f354() { 1893; CHECK-LABEL: f354: 1894; CHECK: .functype f354 () -> () 1895; CHECK-NEXT: .local i32, i32, i32 1896; CHECK-NEXT: # %bb.0: 1897; CHECK-NEXT: call op_0_to_3 1898; CHECK-NEXT: local.set 1 1899; CHECK-NEXT: local.set 0 1900; CHECK-NEXT: local.tee 2 1901; CHECK-NEXT: local.get 1 1902; CHECK-NEXT: call op_2_to_0 1903; CHECK-NEXT: local.get 2 1904; CHECK-NEXT: local.get 0 1905; CHECK-NEXT: call op_2_to_0 1906; CHECK-NEXT: # fallthrough-return 1907 %t0 = call {i32, i32, i32} @op_0_to_3() 1908 %t1 = extractvalue {i32, i32, i32} %t0, 0 1909 %t2 = extractvalue {i32, i32, i32} %t0, 2 1910 call void @op_2_to_0(i32 %t1, i32 %t2) 1911 %t3 = extractvalue {i32, i32, i32} %t0, 0 1912 %t4 = extractvalue {i32, i32, i32} %t0, 1 1913 call void @op_2_to_0(i32 %t3, i32 %t4) 1914 ret void 1915} 1916 1917define void @f356() { 1918; CHECK-LABEL: f356: 1919; CHECK: .functype f356 () -> () 1920; CHECK-NEXT: .local i32, i32, i32 1921; CHECK-NEXT: # %bb.0: 1922; CHECK-NEXT: call op_0_to_3 1923; CHECK-NEXT: local.set 1 1924; CHECK-NEXT: local.set 0 1925; CHECK-NEXT: local.tee 2 1926; CHECK-NEXT: local.get 1 1927; CHECK-NEXT: call op_2_to_0 1928; CHECK-NEXT: local.get 0 1929; CHECK-NEXT: local.get 2 1930; CHECK-NEXT: call op_2_to_0 1931; CHECK-NEXT: # fallthrough-return 1932 %t0 = call {i32, i32, i32} @op_0_to_3() 1933 %t1 = extractvalue {i32, i32, i32} %t0, 0 1934 %t2 = extractvalue {i32, i32, i32} %t0, 2 1935 call void @op_2_to_0(i32 %t1, i32 %t2) 1936 %t3 = extractvalue {i32, i32, i32} %t0, 1 1937 %t4 = extractvalue {i32, i32, i32} %t0, 0 1938 call void @op_2_to_0(i32 %t3, i32 %t4) 1939 ret void 1940} 1941 1942define void @f357() { 1943; CHECK-LABEL: f357: 1944; CHECK: .functype f357 () -> () 1945; CHECK-NEXT: .local i32, i32 1946; CHECK-NEXT: # %bb.0: 1947; CHECK-NEXT: call op_0_to_3 1948; CHECK-NEXT: local.set 1 1949; CHECK-NEXT: local.set 0 1950; CHECK-NEXT: local.get 1 1951; CHECK-NEXT: call op_2_to_0 1952; CHECK-NEXT: local.get 0 1953; CHECK-NEXT: local.get 0 1954; CHECK-NEXT: call op_2_to_0 1955; CHECK-NEXT: # fallthrough-return 1956 %t0 = call {i32, i32, i32} @op_0_to_3() 1957 %t1 = extractvalue {i32, i32, i32} %t0, 0 1958 %t2 = extractvalue {i32, i32, i32} %t0, 2 1959 call void @op_2_to_0(i32 %t1, i32 %t2) 1960 %t3 = extractvalue {i32, i32, i32} %t0, 1 1961 %t4 = extractvalue {i32, i32, i32} %t0, 1 1962 call void @op_2_to_0(i32 %t3, i32 %t4) 1963 ret void 1964} 1965 1966define void @f358() { 1967; CHECK-LABEL: f358: 1968; CHECK: .functype f358 () -> () 1969; CHECK-NEXT: .local i32, i32 1970; CHECK-NEXT: # %bb.0: 1971; CHECK-NEXT: call op_0_to_3 1972; CHECK-NEXT: local.set 1 1973; CHECK-NEXT: local.set 0 1974; CHECK-NEXT: local.get 1 1975; CHECK-NEXT: call op_2_to_0 1976; CHECK-NEXT: local.get 0 1977; CHECK-NEXT: local.get 1 1978; CHECK-NEXT: call op_2_to_0 1979; CHECK-NEXT: # fallthrough-return 1980 %t0 = call {i32, i32, i32} @op_0_to_3() 1981 %t1 = extractvalue {i32, i32, i32} %t0, 0 1982 %t2 = extractvalue {i32, i32, i32} %t0, 2 1983 call void @op_2_to_0(i32 %t1, i32 %t2) 1984 %t3 = extractvalue {i32, i32, i32} %t0, 1 1985 %t4 = extractvalue {i32, i32, i32} %t0, 2 1986 call void @op_2_to_0(i32 %t3, i32 %t4) 1987 ret void 1988} 1989 1990define void @f359() { 1991; CHECK-LABEL: f359: 1992; CHECK: .functype f359 () -> () 1993; CHECK-NEXT: .local i32, i32 1994; CHECK-NEXT: # %bb.0: 1995; CHECK-NEXT: call op_0_to_3 1996; CHECK-NEXT: local.set 0 1997; CHECK-NEXT: drop 1998; CHECK-NEXT: local.tee 1 1999; CHECK-NEXT: local.get 0 2000; CHECK-NEXT: call op_2_to_0 2001; CHECK-NEXT: local.get 0 2002; CHECK-NEXT: local.get 1 2003; CHECK-NEXT: call op_2_to_0 2004; CHECK-NEXT: # fallthrough-return 2005 %t0 = call {i32, i32, i32} @op_0_to_3() 2006 %t1 = extractvalue {i32, i32, i32} %t0, 0 2007 %t2 = extractvalue {i32, i32, i32} %t0, 2 2008 call void @op_2_to_0(i32 %t1, i32 %t2) 2009 %t3 = extractvalue {i32, i32, i32} %t0, 2 2010 %t4 = extractvalue {i32, i32, i32} %t0, 0 2011 call void @op_2_to_0(i32 %t3, i32 %t4) 2012 ret void 2013} 2014 2015define void @f360() { 2016; CHECK-LABEL: f360: 2017; CHECK: .functype f360 () -> () 2018; CHECK-NEXT: .local i32, i32 2019; CHECK-NEXT: # %bb.0: 2020; CHECK-NEXT: call op_0_to_3 2021; CHECK-NEXT: local.set 1 2022; CHECK-NEXT: local.set 0 2023; CHECK-NEXT: local.get 1 2024; CHECK-NEXT: call op_2_to_0 2025; CHECK-NEXT: local.get 1 2026; CHECK-NEXT: local.get 0 2027; CHECK-NEXT: call op_2_to_0 2028; CHECK-NEXT: # fallthrough-return 2029 %t0 = call {i32, i32, i32} @op_0_to_3() 2030 %t1 = extractvalue {i32, i32, i32} %t0, 0 2031 %t2 = extractvalue {i32, i32, i32} %t0, 2 2032 call void @op_2_to_0(i32 %t1, i32 %t2) 2033 %t3 = extractvalue {i32, i32, i32} %t0, 2 2034 %t4 = extractvalue {i32, i32, i32} %t0, 1 2035 call void @op_2_to_0(i32 %t3, i32 %t4) 2036 ret void 2037} 2038 2039define void @f362() { 2040; CHECK-LABEL: f362: 2041; CHECK: .functype f362 () -> () 2042; CHECK-NEXT: .local i32, i32 2043; CHECK-NEXT: # %bb.0: 2044; CHECK-NEXT: call op_0_to_3 2045; CHECK-NEXT: drop 2046; CHECK-NEXT: local.set 1 2047; CHECK-NEXT: local.set 0 2048; CHECK-NEXT: local.get 1 2049; CHECK-NEXT: local.get 0 2050; CHECK-NEXT: call op_2_to_0 2051; CHECK-NEXT: local.get 0 2052; CHECK-NEXT: call op_1_to_0 2053; CHECK-NEXT: # fallthrough-return 2054 %t0 = call {i32, i32, i32} @op_0_to_3() 2055 %t1 = extractvalue {i32, i32, i32} %t0, 1 2056 %t2 = extractvalue {i32, i32, i32} %t0, 0 2057 call void @op_2_to_0(i32 %t1, i32 %t2) 2058 %t3 = extractvalue {i32, i32, i32} %t0, 0 2059 call void @op_1_to_0(i32 %t3) 2060 ret void 2061} 2062 2063define void @f363() { 2064; CHECK-LABEL: f363: 2065; CHECK: .functype f363 () -> () 2066; CHECK-NEXT: .local i32, i32 2067; CHECK-NEXT: # %bb.0: 2068; CHECK-NEXT: call op_0_to_3 2069; CHECK-NEXT: drop 2070; CHECK-NEXT: local.set 1 2071; CHECK-NEXT: local.set 0 2072; CHECK-NEXT: local.get 1 2073; CHECK-NEXT: local.get 0 2074; CHECK-NEXT: call op_2_to_0 2075; CHECK-NEXT: local.get 1 2076; CHECK-NEXT: call op_1_to_0 2077; CHECK-NEXT: # fallthrough-return 2078 %t0 = call {i32, i32, i32} @op_0_to_3() 2079 %t1 = extractvalue {i32, i32, i32} %t0, 1 2080 %t2 = extractvalue {i32, i32, i32} %t0, 0 2081 call void @op_2_to_0(i32 %t1, i32 %t2) 2082 %t3 = extractvalue {i32, i32, i32} %t0, 1 2083 call void @op_1_to_0(i32 %t3) 2084 ret void 2085} 2086 2087define void @f364() { 2088; CHECK-LABEL: f364: 2089; CHECK: .functype f364 () -> () 2090; CHECK-NEXT: .local i32, i32, i32 2091; CHECK-NEXT: # %bb.0: 2092; CHECK-NEXT: call op_0_to_3 2093; CHECK-NEXT: local.set 2 2094; CHECK-NEXT: local.set 1 2095; CHECK-NEXT: local.set 0 2096; CHECK-NEXT: local.get 1 2097; CHECK-NEXT: local.get 0 2098; CHECK-NEXT: call op_2_to_0 2099; CHECK-NEXT: local.get 2 2100; CHECK-NEXT: call op_1_to_0 2101; CHECK-NEXT: # fallthrough-return 2102 %t0 = call {i32, i32, i32} @op_0_to_3() 2103 %t1 = extractvalue {i32, i32, i32} %t0, 1 2104 %t2 = extractvalue {i32, i32, i32} %t0, 0 2105 call void @op_2_to_0(i32 %t1, i32 %t2) 2106 %t3 = extractvalue {i32, i32, i32} %t0, 2 2107 call void @op_1_to_0(i32 %t3) 2108 ret void 2109} 2110 2111define void @f366() { 2112; CHECK-LABEL: f366: 2113; CHECK: .functype f366 () -> () 2114; CHECK-NEXT: .local i32, i32 2115; CHECK-NEXT: # %bb.0: 2116; CHECK-NEXT: call op_0_to_3 2117; CHECK-NEXT: drop 2118; CHECK-NEXT: local.set 1 2119; CHECK-NEXT: local.set 0 2120; CHECK-NEXT: local.get 1 2121; CHECK-NEXT: local.get 0 2122; CHECK-NEXT: call op_2_to_0 2123; CHECK-NEXT: local.get 0 2124; CHECK-NEXT: local.get 1 2125; CHECK-NEXT: call op_2_to_0 2126; CHECK-NEXT: # fallthrough-return 2127 %t0 = call {i32, i32, i32} @op_0_to_3() 2128 %t1 = extractvalue {i32, i32, i32} %t0, 1 2129 %t2 = extractvalue {i32, i32, i32} %t0, 0 2130 call void @op_2_to_0(i32 %t1, i32 %t2) 2131 %t3 = extractvalue {i32, i32, i32} %t0, 0 2132 %t4 = extractvalue {i32, i32, i32} %t0, 1 2133 call void @op_2_to_0(i32 %t3, i32 %t4) 2134 ret void 2135} 2136 2137define void @f367() { 2138; CHECK-LABEL: f367: 2139; CHECK: .functype f367 () -> () 2140; CHECK-NEXT: .local i32, i32, i32 2141; CHECK-NEXT: # %bb.0: 2142; CHECK-NEXT: call op_0_to_3 2143; CHECK-NEXT: local.set 2 2144; CHECK-NEXT: local.set 1 2145; CHECK-NEXT: local.set 0 2146; CHECK-NEXT: local.get 1 2147; CHECK-NEXT: local.get 0 2148; CHECK-NEXT: call op_2_to_0 2149; CHECK-NEXT: local.get 0 2150; CHECK-NEXT: local.get 2 2151; CHECK-NEXT: call op_2_to_0 2152; CHECK-NEXT: # fallthrough-return 2153 %t0 = call {i32, i32, i32} @op_0_to_3() 2154 %t1 = extractvalue {i32, i32, i32} %t0, 1 2155 %t2 = extractvalue {i32, i32, i32} %t0, 0 2156 call void @op_2_to_0(i32 %t1, i32 %t2) 2157 %t3 = extractvalue {i32, i32, i32} %t0, 0 2158 %t4 = extractvalue {i32, i32, i32} %t0, 2 2159 call void @op_2_to_0(i32 %t3, i32 %t4) 2160 ret void 2161} 2162 2163define void @f370() { 2164; CHECK-LABEL: f370: 2165; CHECK: .functype f370 () -> () 2166; CHECK-NEXT: .local i32, i32, i32 2167; CHECK-NEXT: # %bb.0: 2168; CHECK-NEXT: call op_0_to_3 2169; CHECK-NEXT: local.set 2 2170; CHECK-NEXT: local.set 1 2171; CHECK-NEXT: local.set 0 2172; CHECK-NEXT: local.get 1 2173; CHECK-NEXT: local.get 0 2174; CHECK-NEXT: call op_2_to_0 2175; CHECK-NEXT: local.get 1 2176; CHECK-NEXT: local.get 2 2177; CHECK-NEXT: call op_2_to_0 2178; CHECK-NEXT: # fallthrough-return 2179 %t0 = call {i32, i32, i32} @op_0_to_3() 2180 %t1 = extractvalue {i32, i32, i32} %t0, 1 2181 %t2 = extractvalue {i32, i32, i32} %t0, 0 2182 call void @op_2_to_0(i32 %t1, i32 %t2) 2183 %t3 = extractvalue {i32, i32, i32} %t0, 1 2184 %t4 = extractvalue {i32, i32, i32} %t0, 2 2185 call void @op_2_to_0(i32 %t3, i32 %t4) 2186 ret void 2187} 2188 2189define void @f371() { 2190; CHECK-LABEL: f371: 2191; CHECK: .functype f371 () -> () 2192; CHECK-NEXT: .local i32, i32, i32 2193; CHECK-NEXT: # %bb.0: 2194; CHECK-NEXT: call op_0_to_3 2195; CHECK-NEXT: local.set 2 2196; CHECK-NEXT: local.set 1 2197; CHECK-NEXT: local.set 0 2198; CHECK-NEXT: local.get 1 2199; CHECK-NEXT: local.get 0 2200; CHECK-NEXT: call op_2_to_0 2201; CHECK-NEXT: local.get 2 2202; CHECK-NEXT: local.get 0 2203; CHECK-NEXT: call op_2_to_0 2204; CHECK-NEXT: # fallthrough-return 2205 %t0 = call {i32, i32, i32} @op_0_to_3() 2206 %t1 = extractvalue {i32, i32, i32} %t0, 1 2207 %t2 = extractvalue {i32, i32, i32} %t0, 0 2208 call void @op_2_to_0(i32 %t1, i32 %t2) 2209 %t3 = extractvalue {i32, i32, i32} %t0, 2 2210 %t4 = extractvalue {i32, i32, i32} %t0, 0 2211 call void @op_2_to_0(i32 %t3, i32 %t4) 2212 ret void 2213} 2214 2215define void @f372() { 2216; CHECK-LABEL: f372: 2217; CHECK: .functype f372 () -> () 2218; CHECK-NEXT: .local i32, i32, i32 2219; CHECK-NEXT: # %bb.0: 2220; CHECK-NEXT: call op_0_to_3 2221; CHECK-NEXT: local.set 2 2222; CHECK-NEXT: local.set 1 2223; CHECK-NEXT: local.set 0 2224; CHECK-NEXT: local.get 1 2225; CHECK-NEXT: local.get 0 2226; CHECK-NEXT: call op_2_to_0 2227; CHECK-NEXT: local.get 2 2228; CHECK-NEXT: local.get 1 2229; CHECK-NEXT: call op_2_to_0 2230; CHECK-NEXT: # fallthrough-return 2231 %t0 = call {i32, i32, i32} @op_0_to_3() 2232 %t1 = extractvalue {i32, i32, i32} %t0, 1 2233 %t2 = extractvalue {i32, i32, i32} %t0, 0 2234 call void @op_2_to_0(i32 %t1, i32 %t2) 2235 %t3 = extractvalue {i32, i32, i32} %t0, 2 2236 %t4 = extractvalue {i32, i32, i32} %t0, 1 2237 call void @op_2_to_0(i32 %t3, i32 %t4) 2238 ret void 2239} 2240 2241define void @f373() { 2242; CHECK-LABEL: f373: 2243; CHECK: .functype f373 () -> () 2244; CHECK-NEXT: .local i32, i32, i32 2245; CHECK-NEXT: # %bb.0: 2246; CHECK-NEXT: call op_0_to_3 2247; CHECK-NEXT: local.set 2 2248; CHECK-NEXT: local.set 1 2249; CHECK-NEXT: local.set 0 2250; CHECK-NEXT: local.get 1 2251; CHECK-NEXT: local.get 0 2252; CHECK-NEXT: call op_2_to_0 2253; CHECK-NEXT: local.get 2 2254; CHECK-NEXT: local.get 2 2255; CHECK-NEXT: call op_2_to_0 2256; CHECK-NEXT: # fallthrough-return 2257 %t0 = call {i32, i32, i32} @op_0_to_3() 2258 %t1 = extractvalue {i32, i32, i32} %t0, 1 2259 %t2 = extractvalue {i32, i32, i32} %t0, 0 2260 call void @op_2_to_0(i32 %t1, i32 %t2) 2261 %t3 = extractvalue {i32, i32, i32} %t0, 2 2262 %t4 = extractvalue {i32, i32, i32} %t0, 2 2263 call void @op_2_to_0(i32 %t3, i32 %t4) 2264 ret void 2265} 2266 2267define void @f374() { 2268; CHECK-LABEL: f374: 2269; CHECK: .functype f374 () -> () 2270; CHECK-NEXT: .local i32, i32 2271; CHECK-NEXT: # %bb.0: 2272; CHECK-NEXT: call op_0_to_3 2273; CHECK-NEXT: drop 2274; CHECK-NEXT: local.set 1 2275; CHECK-NEXT: local.set 0 2276; CHECK-NEXT: local.get 1 2277; CHECK-NEXT: local.get 1 2278; CHECK-NEXT: call op_2_to_0 2279; CHECK-NEXT: local.get 0 2280; CHECK-NEXT: call op_1_to_0 2281; CHECK-NEXT: # fallthrough-return 2282 %t0 = call {i32, i32, i32} @op_0_to_3() 2283 %t1 = extractvalue {i32, i32, i32} %t0, 1 2284 %t2 = extractvalue {i32, i32, i32} %t0, 1 2285 call void @op_2_to_0(i32 %t1, i32 %t2) 2286 %t3 = extractvalue {i32, i32, i32} %t0, 0 2287 call void @op_1_to_0(i32 %t3) 2288 ret void 2289} 2290 2291define void @f376() { 2292; CHECK-LABEL: f376: 2293; CHECK: .functype f376 () -> () 2294; CHECK-NEXT: .local i32, i32 2295; CHECK-NEXT: # %bb.0: 2296; CHECK-NEXT: call op_0_to_3 2297; CHECK-NEXT: local.set 1 2298; CHECK-NEXT: local.set 0 2299; CHECK-NEXT: drop 2300; CHECK-NEXT: local.get 0 2301; CHECK-NEXT: local.get 0 2302; CHECK-NEXT: call op_2_to_0 2303; CHECK-NEXT: local.get 1 2304; CHECK-NEXT: call op_1_to_0 2305; CHECK-NEXT: # fallthrough-return 2306 %t0 = call {i32, i32, i32} @op_0_to_3() 2307 %t1 = extractvalue {i32, i32, i32} %t0, 1 2308 %t2 = extractvalue {i32, i32, i32} %t0, 1 2309 call void @op_2_to_0(i32 %t1, i32 %t2) 2310 %t3 = extractvalue {i32, i32, i32} %t0, 2 2311 call void @op_1_to_0(i32 %t3) 2312 ret void 2313} 2314 2315define void @f377() { 2316; CHECK-LABEL: f377: 2317; CHECK: .functype f377 () -> () 2318; CHECK-NEXT: .local i32, i32 2319; CHECK-NEXT: # %bb.0: 2320; CHECK-NEXT: call op_0_to_3 2321; CHECK-NEXT: drop 2322; CHECK-NEXT: local.set 1 2323; CHECK-NEXT: local.set 0 2324; CHECK-NEXT: local.get 1 2325; CHECK-NEXT: local.get 1 2326; CHECK-NEXT: call op_2_to_0 2327; CHECK-NEXT: local.get 0 2328; CHECK-NEXT: local.get 0 2329; CHECK-NEXT: call op_2_to_0 2330; CHECK-NEXT: # fallthrough-return 2331 %t0 = call {i32, i32, i32} @op_0_to_3() 2332 %t1 = extractvalue {i32, i32, i32} %t0, 1 2333 %t2 = extractvalue {i32, i32, i32} %t0, 1 2334 call void @op_2_to_0(i32 %t1, i32 %t2) 2335 %t3 = extractvalue {i32, i32, i32} %t0, 0 2336 %t4 = extractvalue {i32, i32, i32} %t0, 0 2337 call void @op_2_to_0(i32 %t3, i32 %t4) 2338 ret void 2339} 2340 2341define void @f379() { 2342; CHECK-LABEL: f379: 2343; CHECK: .functype f379 () -> () 2344; CHECK-NEXT: .local i32, i32, i32 2345; CHECK-NEXT: # %bb.0: 2346; CHECK-NEXT: call op_0_to_3 2347; CHECK-NEXT: local.set 2 2348; CHECK-NEXT: local.set 1 2349; CHECK-NEXT: local.set 0 2350; CHECK-NEXT: local.get 1 2351; CHECK-NEXT: local.get 1 2352; CHECK-NEXT: call op_2_to_0 2353; CHECK-NEXT: local.get 0 2354; CHECK-NEXT: local.get 2 2355; CHECK-NEXT: call op_2_to_0 2356; CHECK-NEXT: # fallthrough-return 2357 %t0 = call {i32, i32, i32} @op_0_to_3() 2358 %t1 = extractvalue {i32, i32, i32} %t0, 1 2359 %t2 = extractvalue {i32, i32, i32} %t0, 1 2360 call void @op_2_to_0(i32 %t1, i32 %t2) 2361 %t3 = extractvalue {i32, i32, i32} %t0, 0 2362 %t4 = extractvalue {i32, i32, i32} %t0, 2 2363 call void @op_2_to_0(i32 %t3, i32 %t4) 2364 ret void 2365} 2366 2367define void @f383() { 2368; CHECK-LABEL: f383: 2369; CHECK: .functype f383 () -> () 2370; CHECK-NEXT: .local i32, i32, i32 2371; CHECK-NEXT: # %bb.0: 2372; CHECK-NEXT: call op_0_to_3 2373; CHECK-NEXT: local.set 2 2374; CHECK-NEXT: local.set 1 2375; CHECK-NEXT: local.set 0 2376; CHECK-NEXT: local.get 1 2377; CHECK-NEXT: local.get 1 2378; CHECK-NEXT: call op_2_to_0 2379; CHECK-NEXT: local.get 2 2380; CHECK-NEXT: local.get 0 2381; CHECK-NEXT: call op_2_to_0 2382; CHECK-NEXT: # fallthrough-return 2383 %t0 = call {i32, i32, i32} @op_0_to_3() 2384 %t1 = extractvalue {i32, i32, i32} %t0, 1 2385 %t2 = extractvalue {i32, i32, i32} %t0, 1 2386 call void @op_2_to_0(i32 %t1, i32 %t2) 2387 %t3 = extractvalue {i32, i32, i32} %t0, 2 2388 %t4 = extractvalue {i32, i32, i32} %t0, 0 2389 call void @op_2_to_0(i32 %t3, i32 %t4) 2390 ret void 2391} 2392 2393define void @f385() { 2394; CHECK-LABEL: f385: 2395; CHECK: .functype f385 () -> () 2396; CHECK-NEXT: .local i32, i32 2397; CHECK-NEXT: # %bb.0: 2398; CHECK-NEXT: call op_0_to_3 2399; CHECK-NEXT: local.set 1 2400; CHECK-NEXT: local.set 0 2401; CHECK-NEXT: drop 2402; CHECK-NEXT: local.get 0 2403; CHECK-NEXT: local.get 0 2404; CHECK-NEXT: call op_2_to_0 2405; CHECK-NEXT: local.get 1 2406; CHECK-NEXT: local.get 1 2407; CHECK-NEXT: call op_2_to_0 2408; CHECK-NEXT: # fallthrough-return 2409 %t0 = call {i32, i32, i32} @op_0_to_3() 2410 %t1 = extractvalue {i32, i32, i32} %t0, 1 2411 %t2 = extractvalue {i32, i32, i32} %t0, 1 2412 call void @op_2_to_0(i32 %t1, i32 %t2) 2413 %t3 = extractvalue {i32, i32, i32} %t0, 2 2414 %t4 = extractvalue {i32, i32, i32} %t0, 2 2415 call void @op_2_to_0(i32 %t3, i32 %t4) 2416 ret void 2417} 2418 2419define void @f386() { 2420; CHECK-LABEL: f386: 2421; CHECK: .functype f386 () -> () 2422; CHECK-NEXT: .local i32, i32, i32 2423; CHECK-NEXT: # %bb.0: 2424; CHECK-NEXT: call op_0_to_3 2425; CHECK-NEXT: local.set 2 2426; CHECK-NEXT: local.set 1 2427; CHECK-NEXT: local.set 0 2428; CHECK-NEXT: local.get 1 2429; CHECK-NEXT: local.get 2 2430; CHECK-NEXT: call op_2_to_0 2431; CHECK-NEXT: local.get 0 2432; CHECK-NEXT: call op_1_to_0 2433; CHECK-NEXT: # fallthrough-return 2434 %t0 = call {i32, i32, i32} @op_0_to_3() 2435 %t1 = extractvalue {i32, i32, i32} %t0, 1 2436 %t2 = extractvalue {i32, i32, i32} %t0, 2 2437 call void @op_2_to_0(i32 %t1, i32 %t2) 2438 %t3 = extractvalue {i32, i32, i32} %t0, 0 2439 call void @op_1_to_0(i32 %t3) 2440 ret void 2441} 2442 2443define void @f387() { 2444; CHECK-LABEL: f387: 2445; CHECK: .functype f387 () -> () 2446; CHECK-NEXT: .local i32, i32 2447; CHECK-NEXT: # %bb.0: 2448; CHECK-NEXT: call op_0_to_3 2449; CHECK-NEXT: local.set 1 2450; CHECK-NEXT: local.set 0 2451; CHECK-NEXT: drop 2452; CHECK-NEXT: local.get 0 2453; CHECK-NEXT: local.get 1 2454; CHECK-NEXT: call op_2_to_0 2455; CHECK-NEXT: local.get 0 2456; CHECK-NEXT: call op_1_to_0 2457; CHECK-NEXT: # fallthrough-return 2458 %t0 = call {i32, i32, i32} @op_0_to_3() 2459 %t1 = extractvalue {i32, i32, i32} %t0, 1 2460 %t2 = extractvalue {i32, i32, i32} %t0, 2 2461 call void @op_2_to_0(i32 %t1, i32 %t2) 2462 %t3 = extractvalue {i32, i32, i32} %t0, 1 2463 call void @op_1_to_0(i32 %t3) 2464 ret void 2465} 2466 2467define void @f388() { 2468; CHECK-LABEL: f388: 2469; CHECK: .functype f388 () -> () 2470; CHECK-NEXT: .local i32, i32 2471; CHECK-NEXT: # %bb.0: 2472; CHECK-NEXT: call op_0_to_3 2473; CHECK-NEXT: local.set 1 2474; CHECK-NEXT: local.set 0 2475; CHECK-NEXT: drop 2476; CHECK-NEXT: local.get 0 2477; CHECK-NEXT: local.get 1 2478; CHECK-NEXT: call op_2_to_0 2479; CHECK-NEXT: local.get 1 2480; CHECK-NEXT: call op_1_to_0 2481; CHECK-NEXT: # fallthrough-return 2482 %t0 = call {i32, i32, i32} @op_0_to_3() 2483 %t1 = extractvalue {i32, i32, i32} %t0, 1 2484 %t2 = extractvalue {i32, i32, i32} %t0, 2 2485 call void @op_2_to_0(i32 %t1, i32 %t2) 2486 %t3 = extractvalue {i32, i32, i32} %t0, 2 2487 call void @op_1_to_0(i32 %t3) 2488 ret void 2489} 2490 2491define void @f389() { 2492; CHECK-LABEL: f389: 2493; CHECK: .functype f389 () -> () 2494; CHECK-NEXT: .local i32, i32, i32 2495; CHECK-NEXT: # %bb.0: 2496; CHECK-NEXT: call op_0_to_3 2497; CHECK-NEXT: local.set 2 2498; CHECK-NEXT: local.set 1 2499; CHECK-NEXT: local.set 0 2500; CHECK-NEXT: local.get 1 2501; CHECK-NEXT: local.get 2 2502; CHECK-NEXT: call op_2_to_0 2503; CHECK-NEXT: local.get 0 2504; CHECK-NEXT: local.get 0 2505; CHECK-NEXT: call op_2_to_0 2506; CHECK-NEXT: # fallthrough-return 2507 %t0 = call {i32, i32, i32} @op_0_to_3() 2508 %t1 = extractvalue {i32, i32, i32} %t0, 1 2509 %t2 = extractvalue {i32, i32, i32} %t0, 2 2510 call void @op_2_to_0(i32 %t1, i32 %t2) 2511 %t3 = extractvalue {i32, i32, i32} %t0, 0 2512 %t4 = extractvalue {i32, i32, i32} %t0, 0 2513 call void @op_2_to_0(i32 %t3, i32 %t4) 2514 ret void 2515} 2516 2517define void @f390() { 2518; CHECK-LABEL: f390: 2519; CHECK: .functype f390 () -> () 2520; CHECK-NEXT: .local i32, i32, i32 2521; CHECK-NEXT: # %bb.0: 2522; CHECK-NEXT: call op_0_to_3 2523; CHECK-NEXT: local.set 2 2524; CHECK-NEXT: local.set 1 2525; CHECK-NEXT: local.set 0 2526; CHECK-NEXT: local.get 1 2527; CHECK-NEXT: local.get 2 2528; CHECK-NEXT: call op_2_to_0 2529; CHECK-NEXT: local.get 0 2530; CHECK-NEXT: local.get 1 2531; CHECK-NEXT: call op_2_to_0 2532; CHECK-NEXT: # fallthrough-return 2533 %t0 = call {i32, i32, i32} @op_0_to_3() 2534 %t1 = extractvalue {i32, i32, i32} %t0, 1 2535 %t2 = extractvalue {i32, i32, i32} %t0, 2 2536 call void @op_2_to_0(i32 %t1, i32 %t2) 2537 %t3 = extractvalue {i32, i32, i32} %t0, 0 2538 %t4 = extractvalue {i32, i32, i32} %t0, 1 2539 call void @op_2_to_0(i32 %t3, i32 %t4) 2540 ret void 2541} 2542 2543define void @f391() { 2544; CHECK-LABEL: f391: 2545; CHECK: .functype f391 () -> () 2546; CHECK-NEXT: .local i32, i32, i32 2547; CHECK-NEXT: # %bb.0: 2548; CHECK-NEXT: call op_0_to_3 2549; CHECK-NEXT: local.set 2 2550; CHECK-NEXT: local.set 1 2551; CHECK-NEXT: local.set 0 2552; CHECK-NEXT: local.get 1 2553; CHECK-NEXT: local.get 2 2554; CHECK-NEXT: call op_2_to_0 2555; CHECK-NEXT: local.get 0 2556; CHECK-NEXT: local.get 2 2557; CHECK-NEXT: call op_2_to_0 2558; CHECK-NEXT: # fallthrough-return 2559 %t0 = call {i32, i32, i32} @op_0_to_3() 2560 %t1 = extractvalue {i32, i32, i32} %t0, 1 2561 %t2 = extractvalue {i32, i32, i32} %t0, 2 2562 call void @op_2_to_0(i32 %t1, i32 %t2) 2563 %t3 = extractvalue {i32, i32, i32} %t0, 0 2564 %t4 = extractvalue {i32, i32, i32} %t0, 2 2565 call void @op_2_to_0(i32 %t3, i32 %t4) 2566 ret void 2567} 2568 2569define void @f392() { 2570; CHECK-LABEL: f392: 2571; CHECK: .functype f392 () -> () 2572; CHECK-NEXT: .local i32, i32, i32 2573; CHECK-NEXT: # %bb.0: 2574; CHECK-NEXT: call op_0_to_3 2575; CHECK-NEXT: local.set 2 2576; CHECK-NEXT: local.set 1 2577; CHECK-NEXT: local.set 0 2578; CHECK-NEXT: local.get 1 2579; CHECK-NEXT: local.get 2 2580; CHECK-NEXT: call op_2_to_0 2581; CHECK-NEXT: local.get 1 2582; CHECK-NEXT: local.get 0 2583; CHECK-NEXT: call op_2_to_0 2584; CHECK-NEXT: # fallthrough-return 2585 %t0 = call {i32, i32, i32} @op_0_to_3() 2586 %t1 = extractvalue {i32, i32, i32} %t0, 1 2587 %t2 = extractvalue {i32, i32, i32} %t0, 2 2588 call void @op_2_to_0(i32 %t1, i32 %t2) 2589 %t3 = extractvalue {i32, i32, i32} %t0, 1 2590 %t4 = extractvalue {i32, i32, i32} %t0, 0 2591 call void @op_2_to_0(i32 %t3, i32 %t4) 2592 ret void 2593} 2594 2595define void @f395() { 2596; CHECK-LABEL: f395: 2597; CHECK: .functype f395 () -> () 2598; CHECK-NEXT: .local i32, i32, i32 2599; CHECK-NEXT: # %bb.0: 2600; CHECK-NEXT: call op_0_to_3 2601; CHECK-NEXT: local.set 2 2602; CHECK-NEXT: local.set 1 2603; CHECK-NEXT: local.set 0 2604; CHECK-NEXT: local.get 1 2605; CHECK-NEXT: local.get 2 2606; CHECK-NEXT: call op_2_to_0 2607; CHECK-NEXT: local.get 2 2608; CHECK-NEXT: local.get 0 2609; CHECK-NEXT: call op_2_to_0 2610; CHECK-NEXT: # fallthrough-return 2611 %t0 = call {i32, i32, i32} @op_0_to_3() 2612 %t1 = extractvalue {i32, i32, i32} %t0, 1 2613 %t2 = extractvalue {i32, i32, i32} %t0, 2 2614 call void @op_2_to_0(i32 %t1, i32 %t2) 2615 %t3 = extractvalue {i32, i32, i32} %t0, 2 2616 %t4 = extractvalue {i32, i32, i32} %t0, 0 2617 call void @op_2_to_0(i32 %t3, i32 %t4) 2618 ret void 2619} 2620 2621define void @f396() { 2622; CHECK-LABEL: f396: 2623; CHECK: .functype f396 () -> () 2624; CHECK-NEXT: .local i32, i32 2625; CHECK-NEXT: # %bb.0: 2626; CHECK-NEXT: call op_0_to_3 2627; CHECK-NEXT: local.set 1 2628; CHECK-NEXT: local.set 0 2629; CHECK-NEXT: drop 2630; CHECK-NEXT: local.get 0 2631; CHECK-NEXT: local.get 1 2632; CHECK-NEXT: call op_2_to_0 2633; CHECK-NEXT: local.get 1 2634; CHECK-NEXT: local.get 0 2635; CHECK-NEXT: call op_2_to_0 2636; CHECK-NEXT: # fallthrough-return 2637 %t0 = call {i32, i32, i32} @op_0_to_3() 2638 %t1 = extractvalue {i32, i32, i32} %t0, 1 2639 %t2 = extractvalue {i32, i32, i32} %t0, 2 2640 call void @op_2_to_0(i32 %t1, i32 %t2) 2641 %t3 = extractvalue {i32, i32, i32} %t0, 2 2642 %t4 = extractvalue {i32, i32, i32} %t0, 1 2643 call void @op_2_to_0(i32 %t3, i32 %t4) 2644 ret void 2645} 2646 2647define void @f398() { 2648; CHECK-LABEL: f398: 2649; CHECK: .functype f398 () -> () 2650; CHECK-NEXT: .local i32, i32 2651; CHECK-NEXT: # %bb.0: 2652; CHECK-NEXT: call op_0_to_3 2653; CHECK-NEXT: local.set 1 2654; CHECK-NEXT: drop 2655; CHECK-NEXT: local.set 0 2656; CHECK-NEXT: local.get 1 2657; CHECK-NEXT: local.get 0 2658; CHECK-NEXT: call op_2_to_0 2659; CHECK-NEXT: local.get 0 2660; CHECK-NEXT: call op_1_to_0 2661; CHECK-NEXT: # fallthrough-return 2662 %t0 = call {i32, i32, i32} @op_0_to_3() 2663 %t1 = extractvalue {i32, i32, i32} %t0, 2 2664 %t2 = extractvalue {i32, i32, i32} %t0, 0 2665 call void @op_2_to_0(i32 %t1, i32 %t2) 2666 %t3 = extractvalue {i32, i32, i32} %t0, 0 2667 call void @op_1_to_0(i32 %t3) 2668 ret void 2669} 2670 2671define void @f399() { 2672; CHECK-LABEL: f399: 2673; CHECK: .functype f399 () -> () 2674; CHECK-NEXT: .local i32, i32, i32 2675; CHECK-NEXT: # %bb.0: 2676; CHECK-NEXT: call op_0_to_3 2677; CHECK-NEXT: local.set 2 2678; CHECK-NEXT: local.set 1 2679; CHECK-NEXT: local.set 0 2680; CHECK-NEXT: local.get 2 2681; CHECK-NEXT: local.get 0 2682; CHECK-NEXT: call op_2_to_0 2683; CHECK-NEXT: local.get 1 2684; CHECK-NEXT: call op_1_to_0 2685; CHECK-NEXT: # fallthrough-return 2686 %t0 = call {i32, i32, i32} @op_0_to_3() 2687 %t1 = extractvalue {i32, i32, i32} %t0, 2 2688 %t2 = extractvalue {i32, i32, i32} %t0, 0 2689 call void @op_2_to_0(i32 %t1, i32 %t2) 2690 %t3 = extractvalue {i32, i32, i32} %t0, 1 2691 call void @op_1_to_0(i32 %t3) 2692 ret void 2693} 2694 2695define void @f400() { 2696; CHECK-LABEL: f400: 2697; CHECK: .functype f400 () -> () 2698; CHECK-NEXT: .local i32, i32 2699; CHECK-NEXT: # %bb.0: 2700; CHECK-NEXT: call op_0_to_3 2701; CHECK-NEXT: local.set 1 2702; CHECK-NEXT: drop 2703; CHECK-NEXT: local.set 0 2704; CHECK-NEXT: local.get 1 2705; CHECK-NEXT: local.get 0 2706; CHECK-NEXT: call op_2_to_0 2707; CHECK-NEXT: local.get 1 2708; CHECK-NEXT: call op_1_to_0 2709; CHECK-NEXT: # fallthrough-return 2710 %t0 = call {i32, i32, i32} @op_0_to_3() 2711 %t1 = extractvalue {i32, i32, i32} %t0, 2 2712 %t2 = extractvalue {i32, i32, i32} %t0, 0 2713 call void @op_2_to_0(i32 %t1, i32 %t2) 2714 %t3 = extractvalue {i32, i32, i32} %t0, 2 2715 call void @op_1_to_0(i32 %t3) 2716 ret void 2717} 2718 2719define void @f402() { 2720; CHECK-LABEL: f402: 2721; CHECK: .functype f402 () -> () 2722; CHECK-NEXT: .local i32, i32, i32 2723; CHECK-NEXT: # %bb.0: 2724; CHECK-NEXT: call op_0_to_3 2725; CHECK-NEXT: local.set 2 2726; CHECK-NEXT: local.set 1 2727; CHECK-NEXT: local.set 0 2728; CHECK-NEXT: local.get 2 2729; CHECK-NEXT: local.get 0 2730; CHECK-NEXT: call op_2_to_0 2731; CHECK-NEXT: local.get 0 2732; CHECK-NEXT: local.get 1 2733; CHECK-NEXT: call op_2_to_0 2734; CHECK-NEXT: # fallthrough-return 2735 %t0 = call {i32, i32, i32} @op_0_to_3() 2736 %t1 = extractvalue {i32, i32, i32} %t0, 2 2737 %t2 = extractvalue {i32, i32, i32} %t0, 0 2738 call void @op_2_to_0(i32 %t1, i32 %t2) 2739 %t3 = extractvalue {i32, i32, i32} %t0, 0 2740 %t4 = extractvalue {i32, i32, i32} %t0, 1 2741 call void @op_2_to_0(i32 %t3, i32 %t4) 2742 ret void 2743} 2744 2745define void @f403() { 2746; CHECK-LABEL: f403: 2747; CHECK: .functype f403 () -> () 2748; CHECK-NEXT: .local i32, i32 2749; CHECK-NEXT: # %bb.0: 2750; CHECK-NEXT: call op_0_to_3 2751; CHECK-NEXT: local.set 1 2752; CHECK-NEXT: drop 2753; CHECK-NEXT: local.set 0 2754; CHECK-NEXT: local.get 1 2755; CHECK-NEXT: local.get 0 2756; CHECK-NEXT: call op_2_to_0 2757; CHECK-NEXT: local.get 0 2758; CHECK-NEXT: local.get 1 2759; CHECK-NEXT: call op_2_to_0 2760; CHECK-NEXT: # fallthrough-return 2761 %t0 = call {i32, i32, i32} @op_0_to_3() 2762 %t1 = extractvalue {i32, i32, i32} %t0, 2 2763 %t2 = extractvalue {i32, i32, i32} %t0, 0 2764 call void @op_2_to_0(i32 %t1, i32 %t2) 2765 %t3 = extractvalue {i32, i32, i32} %t0, 0 2766 %t4 = extractvalue {i32, i32, i32} %t0, 2 2767 call void @op_2_to_0(i32 %t3, i32 %t4) 2768 ret void 2769} 2770 2771define void @f404() { 2772; CHECK-LABEL: f404: 2773; CHECK: .functype f404 () -> () 2774; CHECK-NEXT: .local i32, i32, i32 2775; CHECK-NEXT: # %bb.0: 2776; CHECK-NEXT: call op_0_to_3 2777; CHECK-NEXT: local.set 2 2778; CHECK-NEXT: local.set 1 2779; CHECK-NEXT: local.set 0 2780; CHECK-NEXT: local.get 2 2781; CHECK-NEXT: local.get 0 2782; CHECK-NEXT: call op_2_to_0 2783; CHECK-NEXT: local.get 1 2784; CHECK-NEXT: local.get 0 2785; CHECK-NEXT: call op_2_to_0 2786; CHECK-NEXT: # fallthrough-return 2787 %t0 = call {i32, i32, i32} @op_0_to_3() 2788 %t1 = extractvalue {i32, i32, i32} %t0, 2 2789 %t2 = extractvalue {i32, i32, i32} %t0, 0 2790 call void @op_2_to_0(i32 %t1, i32 %t2) 2791 %t3 = extractvalue {i32, i32, i32} %t0, 1 2792 %t4 = extractvalue {i32, i32, i32} %t0, 0 2793 call void @op_2_to_0(i32 %t3, i32 %t4) 2794 ret void 2795} 2796 2797define void @f405() { 2798; CHECK-LABEL: f405: 2799; CHECK: .functype f405 () -> () 2800; CHECK-NEXT: .local i32, i32, i32 2801; CHECK-NEXT: # %bb.0: 2802; CHECK-NEXT: call op_0_to_3 2803; CHECK-NEXT: local.set 2 2804; CHECK-NEXT: local.set 1 2805; CHECK-NEXT: local.set 0 2806; CHECK-NEXT: local.get 2 2807; CHECK-NEXT: local.get 0 2808; CHECK-NEXT: call op_2_to_0 2809; CHECK-NEXT: local.get 1 2810; CHECK-NEXT: local.get 1 2811; CHECK-NEXT: call op_2_to_0 2812; CHECK-NEXT: # fallthrough-return 2813 %t0 = call {i32, i32, i32} @op_0_to_3() 2814 %t1 = extractvalue {i32, i32, i32} %t0, 2 2815 %t2 = extractvalue {i32, i32, i32} %t0, 0 2816 call void @op_2_to_0(i32 %t1, i32 %t2) 2817 %t3 = extractvalue {i32, i32, i32} %t0, 1 2818 %t4 = extractvalue {i32, i32, i32} %t0, 1 2819 call void @op_2_to_0(i32 %t3, i32 %t4) 2820 ret void 2821} 2822 2823define void @f406() { 2824; CHECK-LABEL: f406: 2825; CHECK: .functype f406 () -> () 2826; CHECK-NEXT: .local i32, i32, i32 2827; CHECK-NEXT: # %bb.0: 2828; CHECK-NEXT: call op_0_to_3 2829; CHECK-NEXT: local.set 2 2830; CHECK-NEXT: local.set 1 2831; CHECK-NEXT: local.set 0 2832; CHECK-NEXT: local.get 2 2833; CHECK-NEXT: local.get 0 2834; CHECK-NEXT: call op_2_to_0 2835; CHECK-NEXT: local.get 1 2836; CHECK-NEXT: local.get 2 2837; CHECK-NEXT: call op_2_to_0 2838; CHECK-NEXT: # fallthrough-return 2839 %t0 = call {i32, i32, i32} @op_0_to_3() 2840 %t1 = extractvalue {i32, i32, i32} %t0, 2 2841 %t2 = extractvalue {i32, i32, i32} %t0, 0 2842 call void @op_2_to_0(i32 %t1, i32 %t2) 2843 %t3 = extractvalue {i32, i32, i32} %t0, 1 2844 %t4 = extractvalue {i32, i32, i32} %t0, 2 2845 call void @op_2_to_0(i32 %t3, i32 %t4) 2846 ret void 2847} 2848 2849define void @f408() { 2850; CHECK-LABEL: f408: 2851; CHECK: .functype f408 () -> () 2852; CHECK-NEXT: .local i32, i32, i32 2853; CHECK-NEXT: # %bb.0: 2854; CHECK-NEXT: call op_0_to_3 2855; CHECK-NEXT: local.set 2 2856; CHECK-NEXT: local.set 1 2857; CHECK-NEXT: local.set 0 2858; CHECK-NEXT: local.get 2 2859; CHECK-NEXT: local.get 0 2860; CHECK-NEXT: call op_2_to_0 2861; CHECK-NEXT: local.get 2 2862; CHECK-NEXT: local.get 1 2863; CHECK-NEXT: call op_2_to_0 2864; CHECK-NEXT: # fallthrough-return 2865 %t0 = call {i32, i32, i32} @op_0_to_3() 2866 %t1 = extractvalue {i32, i32, i32} %t0, 2 2867 %t2 = extractvalue {i32, i32, i32} %t0, 0 2868 call void @op_2_to_0(i32 %t1, i32 %t2) 2869 %t3 = extractvalue {i32, i32, i32} %t0, 2 2870 %t4 = extractvalue {i32, i32, i32} %t0, 1 2871 call void @op_2_to_0(i32 %t3, i32 %t4) 2872 ret void 2873} 2874 2875define void @f410() { 2876; CHECK-LABEL: f410: 2877; CHECK: .functype f410 () -> () 2878; CHECK-NEXT: .local i32, i32, i32 2879; CHECK-NEXT: # %bb.0: 2880; CHECK-NEXT: call op_0_to_3 2881; CHECK-NEXT: local.set 2 2882; CHECK-NEXT: local.set 1 2883; CHECK-NEXT: local.set 0 2884; CHECK-NEXT: local.get 2 2885; CHECK-NEXT: local.get 1 2886; CHECK-NEXT: call op_2_to_0 2887; CHECK-NEXT: local.get 0 2888; CHECK-NEXT: call op_1_to_0 2889; CHECK-NEXT: # fallthrough-return 2890 %t0 = call {i32, i32, i32} @op_0_to_3() 2891 %t1 = extractvalue {i32, i32, i32} %t0, 2 2892 %t2 = extractvalue {i32, i32, i32} %t0, 1 2893 call void @op_2_to_0(i32 %t1, i32 %t2) 2894 %t3 = extractvalue {i32, i32, i32} %t0, 0 2895 call void @op_1_to_0(i32 %t3) 2896 ret void 2897} 2898 2899define void @f411() { 2900; CHECK-LABEL: f411: 2901; CHECK: .functype f411 () -> () 2902; CHECK-NEXT: .local i32, i32 2903; CHECK-NEXT: # %bb.0: 2904; CHECK-NEXT: call op_0_to_3 2905; CHECK-NEXT: local.set 1 2906; CHECK-NEXT: local.set 0 2907; CHECK-NEXT: drop 2908; CHECK-NEXT: local.get 1 2909; CHECK-NEXT: local.get 0 2910; CHECK-NEXT: call op_2_to_0 2911; CHECK-NEXT: local.get 0 2912; CHECK-NEXT: call op_1_to_0 2913; CHECK-NEXT: # fallthrough-return 2914 %t0 = call {i32, i32, i32} @op_0_to_3() 2915 %t1 = extractvalue {i32, i32, i32} %t0, 2 2916 %t2 = extractvalue {i32, i32, i32} %t0, 1 2917 call void @op_2_to_0(i32 %t1, i32 %t2) 2918 %t3 = extractvalue {i32, i32, i32} %t0, 1 2919 call void @op_1_to_0(i32 %t3) 2920 ret void 2921} 2922 2923define void @f412() { 2924; CHECK-LABEL: f412: 2925; CHECK: .functype f412 () -> () 2926; CHECK-NEXT: .local i32, i32 2927; CHECK-NEXT: # %bb.0: 2928; CHECK-NEXT: call op_0_to_3 2929; CHECK-NEXT: local.set 1 2930; CHECK-NEXT: local.set 0 2931; CHECK-NEXT: drop 2932; CHECK-NEXT: local.get 1 2933; CHECK-NEXT: local.get 0 2934; CHECK-NEXT: call op_2_to_0 2935; CHECK-NEXT: local.get 1 2936; CHECK-NEXT: call op_1_to_0 2937; CHECK-NEXT: # fallthrough-return 2938 %t0 = call {i32, i32, i32} @op_0_to_3() 2939 %t1 = extractvalue {i32, i32, i32} %t0, 2 2940 %t2 = extractvalue {i32, i32, i32} %t0, 1 2941 call void @op_2_to_0(i32 %t1, i32 %t2) 2942 %t3 = extractvalue {i32, i32, i32} %t0, 2 2943 call void @op_1_to_0(i32 %t3) 2944 ret void 2945} 2946 2947define void @f413() { 2948; CHECK-LABEL: f413: 2949; CHECK: .functype f413 () -> () 2950; CHECK-NEXT: .local i32, i32, i32 2951; CHECK-NEXT: # %bb.0: 2952; CHECK-NEXT: call op_0_to_3 2953; CHECK-NEXT: local.set 2 2954; CHECK-NEXT: local.set 1 2955; CHECK-NEXT: local.set 0 2956; CHECK-NEXT: local.get 2 2957; CHECK-NEXT: local.get 1 2958; CHECK-NEXT: call op_2_to_0 2959; CHECK-NEXT: local.get 0 2960; CHECK-NEXT: local.get 0 2961; CHECK-NEXT: call op_2_to_0 2962; CHECK-NEXT: # fallthrough-return 2963 %t0 = call {i32, i32, i32} @op_0_to_3() 2964 %t1 = extractvalue {i32, i32, i32} %t0, 2 2965 %t2 = extractvalue {i32, i32, i32} %t0, 1 2966 call void @op_2_to_0(i32 %t1, i32 %t2) 2967 %t3 = extractvalue {i32, i32, i32} %t0, 0 2968 %t4 = extractvalue {i32, i32, i32} %t0, 0 2969 call void @op_2_to_0(i32 %t3, i32 %t4) 2970 ret void 2971} 2972 2973define void @f414() { 2974; CHECK-LABEL: f414: 2975; CHECK: .functype f414 () -> () 2976; CHECK-NEXT: .local i32, i32, i32 2977; CHECK-NEXT: # %bb.0: 2978; CHECK-NEXT: call op_0_to_3 2979; CHECK-NEXT: local.set 2 2980; CHECK-NEXT: local.set 1 2981; CHECK-NEXT: local.set 0 2982; CHECK-NEXT: local.get 2 2983; CHECK-NEXT: local.get 1 2984; CHECK-NEXT: call op_2_to_0 2985; CHECK-NEXT: local.get 0 2986; CHECK-NEXT: local.get 1 2987; CHECK-NEXT: call op_2_to_0 2988; CHECK-NEXT: # fallthrough-return 2989 %t0 = call {i32, i32, i32} @op_0_to_3() 2990 %t1 = extractvalue {i32, i32, i32} %t0, 2 2991 %t2 = extractvalue {i32, i32, i32} %t0, 1 2992 call void @op_2_to_0(i32 %t1, i32 %t2) 2993 %t3 = extractvalue {i32, i32, i32} %t0, 0 2994 %t4 = extractvalue {i32, i32, i32} %t0, 1 2995 call void @op_2_to_0(i32 %t3, i32 %t4) 2996 ret void 2997} 2998 2999define void @f415() { 3000; CHECK-LABEL: f415: 3001; CHECK: .functype f415 () -> () 3002; CHECK-NEXT: .local i32, i32, i32 3003; CHECK-NEXT: # %bb.0: 3004; CHECK-NEXT: call op_0_to_3 3005; CHECK-NEXT: local.set 2 3006; CHECK-NEXT: local.set 1 3007; CHECK-NEXT: local.set 0 3008; CHECK-NEXT: local.get 2 3009; CHECK-NEXT: local.get 1 3010; CHECK-NEXT: call op_2_to_0 3011; CHECK-NEXT: local.get 0 3012; CHECK-NEXT: local.get 2 3013; CHECK-NEXT: call op_2_to_0 3014; CHECK-NEXT: # fallthrough-return 3015 %t0 = call {i32, i32, i32} @op_0_to_3() 3016 %t1 = extractvalue {i32, i32, i32} %t0, 2 3017 %t2 = extractvalue {i32, i32, i32} %t0, 1 3018 call void @op_2_to_0(i32 %t1, i32 %t2) 3019 %t3 = extractvalue {i32, i32, i32} %t0, 0 3020 %t4 = extractvalue {i32, i32, i32} %t0, 2 3021 call void @op_2_to_0(i32 %t3, i32 %t4) 3022 ret void 3023} 3024 3025define void @f416() { 3026; CHECK-LABEL: f416: 3027; CHECK: .functype f416 () -> () 3028; CHECK-NEXT: .local i32, i32, i32 3029; CHECK-NEXT: # %bb.0: 3030; CHECK-NEXT: call op_0_to_3 3031; CHECK-NEXT: local.set 2 3032; CHECK-NEXT: local.set 1 3033; CHECK-NEXT: local.set 0 3034; CHECK-NEXT: local.get 2 3035; CHECK-NEXT: local.get 1 3036; CHECK-NEXT: call op_2_to_0 3037; CHECK-NEXT: local.get 1 3038; CHECK-NEXT: local.get 0 3039; CHECK-NEXT: call op_2_to_0 3040; CHECK-NEXT: # fallthrough-return 3041 %t0 = call {i32, i32, i32} @op_0_to_3() 3042 %t1 = extractvalue {i32, i32, i32} %t0, 2 3043 %t2 = extractvalue {i32, i32, i32} %t0, 1 3044 call void @op_2_to_0(i32 %t1, i32 %t2) 3045 %t3 = extractvalue {i32, i32, i32} %t0, 1 3046 %t4 = extractvalue {i32, i32, i32} %t0, 0 3047 call void @op_2_to_0(i32 %t3, i32 %t4) 3048 ret void 3049} 3050 3051define void @f418() { 3052; CHECK-LABEL: f418: 3053; CHECK: .functype f418 () -> () 3054; CHECK-NEXT: .local i32, i32 3055; CHECK-NEXT: # %bb.0: 3056; CHECK-NEXT: call op_0_to_3 3057; CHECK-NEXT: local.set 1 3058; CHECK-NEXT: local.set 0 3059; CHECK-NEXT: drop 3060; CHECK-NEXT: local.get 1 3061; CHECK-NEXT: local.get 0 3062; CHECK-NEXT: call op_2_to_0 3063; CHECK-NEXT: local.get 0 3064; CHECK-NEXT: local.get 1 3065; CHECK-NEXT: call op_2_to_0 3066; CHECK-NEXT: # fallthrough-return 3067 %t0 = call {i32, i32, i32} @op_0_to_3() 3068 %t1 = extractvalue {i32, i32, i32} %t0, 2 3069 %t2 = extractvalue {i32, i32, i32} %t0, 1 3070 call void @op_2_to_0(i32 %t1, i32 %t2) 3071 %t3 = extractvalue {i32, i32, i32} %t0, 1 3072 %t4 = extractvalue {i32, i32, i32} %t0, 2 3073 call void @op_2_to_0(i32 %t3, i32 %t4) 3074 ret void 3075} 3076 3077define void @f419() { 3078; CHECK-LABEL: f419: 3079; CHECK: .functype f419 () -> () 3080; CHECK-NEXT: .local i32, i32, i32 3081; CHECK-NEXT: # %bb.0: 3082; CHECK-NEXT: call op_0_to_3 3083; CHECK-NEXT: local.set 2 3084; CHECK-NEXT: local.set 1 3085; CHECK-NEXT: local.set 0 3086; CHECK-NEXT: local.get 2 3087; CHECK-NEXT: local.get 1 3088; CHECK-NEXT: call op_2_to_0 3089; CHECK-NEXT: local.get 2 3090; CHECK-NEXT: local.get 0 3091; CHECK-NEXT: call op_2_to_0 3092; CHECK-NEXT: # fallthrough-return 3093 %t0 = call {i32, i32, i32} @op_0_to_3() 3094 %t1 = extractvalue {i32, i32, i32} %t0, 2 3095 %t2 = extractvalue {i32, i32, i32} %t0, 1 3096 call void @op_2_to_0(i32 %t1, i32 %t2) 3097 %t3 = extractvalue {i32, i32, i32} %t0, 2 3098 %t4 = extractvalue {i32, i32, i32} %t0, 0 3099 call void @op_2_to_0(i32 %t3, i32 %t4) 3100 ret void 3101} 3102 3103define void @f422() { 3104; CHECK-LABEL: f422: 3105; CHECK: .functype f422 () -> () 3106; CHECK-NEXT: .local i32, i32 3107; CHECK-NEXT: # %bb.0: 3108; CHECK-NEXT: call op_0_to_3 3109; CHECK-NEXT: local.set 1 3110; CHECK-NEXT: drop 3111; CHECK-NEXT: local.set 0 3112; CHECK-NEXT: local.get 1 3113; CHECK-NEXT: local.get 1 3114; CHECK-NEXT: call op_2_to_0 3115; CHECK-NEXT: local.get 0 3116; CHECK-NEXT: call op_1_to_0 3117; CHECK-NEXT: # fallthrough-return 3118 %t0 = call {i32, i32, i32} @op_0_to_3() 3119 %t1 = extractvalue {i32, i32, i32} %t0, 2 3120 %t2 = extractvalue {i32, i32, i32} %t0, 2 3121 call void @op_2_to_0(i32 %t1, i32 %t2) 3122 %t3 = extractvalue {i32, i32, i32} %t0, 0 3123 call void @op_1_to_0(i32 %t3) 3124 ret void 3125} 3126 3127define void @f423() { 3128; CHECK-LABEL: f423: 3129; CHECK: .functype f423 () -> () 3130; CHECK-NEXT: .local i32, i32 3131; CHECK-NEXT: # %bb.0: 3132; CHECK-NEXT: call op_0_to_3 3133; CHECK-NEXT: local.set 1 3134; CHECK-NEXT: local.set 0 3135; CHECK-NEXT: drop 3136; CHECK-NEXT: local.get 1 3137; CHECK-NEXT: local.get 1 3138; CHECK-NEXT: call op_2_to_0 3139; CHECK-NEXT: local.get 0 3140; CHECK-NEXT: call op_1_to_0 3141; CHECK-NEXT: # fallthrough-return 3142 %t0 = call {i32, i32, i32} @op_0_to_3() 3143 %t1 = extractvalue {i32, i32, i32} %t0, 2 3144 %t2 = extractvalue {i32, i32, i32} %t0, 2 3145 call void @op_2_to_0(i32 %t1, i32 %t2) 3146 %t3 = extractvalue {i32, i32, i32} %t0, 1 3147 call void @op_1_to_0(i32 %t3) 3148 ret void 3149} 3150 3151define void @f425() { 3152; CHECK-LABEL: f425: 3153; CHECK: .functype f425 () -> () 3154; CHECK-NEXT: .local i32, i32 3155; CHECK-NEXT: # %bb.0: 3156; CHECK-NEXT: call op_0_to_3 3157; CHECK-NEXT: local.set 1 3158; CHECK-NEXT: drop 3159; CHECK-NEXT: local.set 0 3160; CHECK-NEXT: local.get 1 3161; CHECK-NEXT: local.get 1 3162; CHECK-NEXT: call op_2_to_0 3163; CHECK-NEXT: local.get 0 3164; CHECK-NEXT: local.get 0 3165; CHECK-NEXT: call op_2_to_0 3166; CHECK-NEXT: # fallthrough-return 3167 %t0 = call {i32, i32, i32} @op_0_to_3() 3168 %t1 = extractvalue {i32, i32, i32} %t0, 2 3169 %t2 = extractvalue {i32, i32, i32} %t0, 2 3170 call void @op_2_to_0(i32 %t1, i32 %t2) 3171 %t3 = extractvalue {i32, i32, i32} %t0, 0 3172 %t4 = extractvalue {i32, i32, i32} %t0, 0 3173 call void @op_2_to_0(i32 %t3, i32 %t4) 3174 ret void 3175} 3176 3177define void @f426() { 3178; CHECK-LABEL: f426: 3179; CHECK: .functype f426 () -> () 3180; CHECK-NEXT: .local i32, i32, i32 3181; CHECK-NEXT: # %bb.0: 3182; CHECK-NEXT: call op_0_to_3 3183; CHECK-NEXT: local.set 2 3184; CHECK-NEXT: local.set 1 3185; CHECK-NEXT: local.set 0 3186; CHECK-NEXT: local.get 2 3187; CHECK-NEXT: local.get 2 3188; CHECK-NEXT: call op_2_to_0 3189; CHECK-NEXT: local.get 0 3190; CHECK-NEXT: local.get 1 3191; CHECK-NEXT: call op_2_to_0 3192; CHECK-NEXT: # fallthrough-return 3193 %t0 = call {i32, i32, i32} @op_0_to_3() 3194 %t1 = extractvalue {i32, i32, i32} %t0, 2 3195 %t2 = extractvalue {i32, i32, i32} %t0, 2 3196 call void @op_2_to_0(i32 %t1, i32 %t2) 3197 %t3 = extractvalue {i32, i32, i32} %t0, 0 3198 %t4 = extractvalue {i32, i32, i32} %t0, 1 3199 call void @op_2_to_0(i32 %t3, i32 %t4) 3200 ret void 3201} 3202 3203define void @f428() { 3204; CHECK-LABEL: f428: 3205; CHECK: .functype f428 () -> () 3206; CHECK-NEXT: .local i32, i32, i32 3207; CHECK-NEXT: # %bb.0: 3208; CHECK-NEXT: call op_0_to_3 3209; CHECK-NEXT: local.set 2 3210; CHECK-NEXT: local.set 1 3211; CHECK-NEXT: local.set 0 3212; CHECK-NEXT: local.get 2 3213; CHECK-NEXT: local.get 2 3214; CHECK-NEXT: call op_2_to_0 3215; CHECK-NEXT: local.get 1 3216; CHECK-NEXT: local.get 0 3217; CHECK-NEXT: call op_2_to_0 3218; CHECK-NEXT: # fallthrough-return 3219 %t0 = call {i32, i32, i32} @op_0_to_3() 3220 %t1 = extractvalue {i32, i32, i32} %t0, 2 3221 %t2 = extractvalue {i32, i32, i32} %t0, 2 3222 call void @op_2_to_0(i32 %t1, i32 %t2) 3223 %t3 = extractvalue {i32, i32, i32} %t0, 1 3224 %t4 = extractvalue {i32, i32, i32} %t0, 0 3225 call void @op_2_to_0(i32 %t3, i32 %t4) 3226 ret void 3227} 3228 3229define void @f429() { 3230; CHECK-LABEL: f429: 3231; CHECK: .functype f429 () -> () 3232; CHECK-NEXT: .local i32, i32 3233; CHECK-NEXT: # %bb.0: 3234; CHECK-NEXT: call op_0_to_3 3235; CHECK-NEXT: local.set 1 3236; CHECK-NEXT: local.set 0 3237; CHECK-NEXT: drop 3238; CHECK-NEXT: local.get 1 3239; CHECK-NEXT: local.get 1 3240; CHECK-NEXT: call op_2_to_0 3241; CHECK-NEXT: local.get 0 3242; CHECK-NEXT: local.get 0 3243; CHECK-NEXT: call op_2_to_0 3244; CHECK-NEXT: # fallthrough-return 3245 %t0 = call {i32, i32, i32} @op_0_to_3() 3246 %t1 = extractvalue {i32, i32, i32} %t0, 2 3247 %t2 = extractvalue {i32, i32, i32} %t0, 2 3248 call void @op_2_to_0(i32 %t1, i32 %t2) 3249 %t3 = extractvalue {i32, i32, i32} %t0, 1 3250 %t4 = extractvalue {i32, i32, i32} %t0, 1 3251 call void @op_2_to_0(i32 %t3, i32 %t4) 3252 ret void 3253} 3254