3254 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; NOTE: Test functions have been generated by multivalue-stackify.py.3 4; RUN: llc < %s -verify-machineinstrs -mattr=+multivalue -target-abi=experimental-mv | FileCheck %s5 6; Test that the multivalue stackification works7 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_227; CHECK-NEXT: drop28; CHECK-NEXT: drop29; CHECK-NEXT: # fallthrough-return30 %t0 = call {i32, i32} @op_0_to_2()31 ret void32}33 34define void @f3() {35; CHECK-LABEL: f3:36; CHECK: .functype f3 () -> ()37; CHECK-NEXT: # %bb.0:38; CHECK-NEXT: call op_0_to_339; CHECK-NEXT: drop40; CHECK-NEXT: drop41; CHECK-NEXT: drop42; CHECK-NEXT: # fallthrough-return43 %t0 = call {i32, i32, i32} @op_0_to_3()44 ret void45}46 47define void @f12() {48; CHECK-LABEL: f12:49; CHECK: .functype f12 () -> ()50; CHECK-NEXT: # %bb.0:51; CHECK-NEXT: call op_0_to_252; CHECK-NEXT: drop53; CHECK-NEXT: call op_1_to_054; CHECK-NEXT: # fallthrough-return55 %t0 = call {i32, i32} @op_0_to_2()56 %t1 = extractvalue {i32, i32} %t0, 057 call void @op_1_to_0(i32 %t1)58 ret void59}60 61define void @f13() {62; CHECK-LABEL: f13:63; CHECK: .functype f13 () -> ()64; CHECK-NEXT: .local i3265; CHECK-NEXT: # %bb.0:66; CHECK-NEXT: call op_0_to_267; CHECK-NEXT: local.set 068; CHECK-NEXT: drop69; CHECK-NEXT: local.get 070; CHECK-NEXT: call op_1_to_071; CHECK-NEXT: # fallthrough-return72 %t0 = call {i32, i32} @op_0_to_2()73 %t1 = extractvalue {i32, i32} %t0, 174 call void @op_1_to_0(i32 %t1)75 ret void76}77 78define void @f14() {79; CHECK-LABEL: f14:80; CHECK: .functype f14 () -> ()81; CHECK-NEXT: .local i3282; CHECK-NEXT: # %bb.0:83; CHECK-NEXT: call op_0_to_284; CHECK-NEXT: drop85; CHECK-NEXT: local.tee 086; CHECK-NEXT: local.get 087; CHECK-NEXT: call op_2_to_088; CHECK-NEXT: # fallthrough-return89 %t0 = call {i32, i32} @op_0_to_2()90 %t1 = extractvalue {i32, i32} %t0, 091 %t2 = extractvalue {i32, i32} %t0, 092 call void @op_2_to_0(i32 %t1, i32 %t2)93 ret void94}95 96define void @f15() {97; CHECK-LABEL: f15:98; CHECK: .functype f15 () -> ()99; CHECK-NEXT: # %bb.0:100; CHECK-NEXT: call op_0_to_2101; CHECK-NEXT: call op_2_to_0102; CHECK-NEXT: # fallthrough-return103 %t0 = call {i32, i32} @op_0_to_2()104 %t1 = extractvalue {i32, i32} %t0, 0105 %t2 = extractvalue {i32, i32} %t0, 1106 call void @op_2_to_0(i32 %t1, i32 %t2)107 ret void108}109 110define void @f16() {111; CHECK-LABEL: f16:112; CHECK: .functype f16 () -> ()113; CHECK-NEXT: .local i32, i32114; CHECK-NEXT: # %bb.0:115; CHECK-NEXT: call op_0_to_2116; CHECK-NEXT: local.set 1117; CHECK-NEXT: local.set 0118; CHECK-NEXT: local.get 1119; CHECK-NEXT: local.get 0120; CHECK-NEXT: call op_2_to_0121; CHECK-NEXT: # fallthrough-return122 %t0 = call {i32, i32} @op_0_to_2()123 %t1 = extractvalue {i32, i32} %t0, 1124 %t2 = extractvalue {i32, i32} %t0, 0125 call void @op_2_to_0(i32 %t1, i32 %t2)126 ret void127}128 129define void @f17() {130; CHECK-LABEL: f17:131; CHECK: .functype f17 () -> ()132; CHECK-NEXT: .local i32133; CHECK-NEXT: # %bb.0:134; CHECK-NEXT: call op_0_to_2135; CHECK-NEXT: local.set 0136; CHECK-NEXT: drop137; CHECK-NEXT: local.get 0138; CHECK-NEXT: local.get 0139; CHECK-NEXT: call op_2_to_0140; CHECK-NEXT: # fallthrough-return141 %t0 = call {i32, i32} @op_0_to_2()142 %t1 = extractvalue {i32, i32} %t0, 1143 %t2 = extractvalue {i32, i32} %t0, 1144 call void @op_2_to_0(i32 %t1, i32 %t2)145 ret void146}147 148define void @f25() {149; CHECK-LABEL: f25:150; CHECK: .functype f25 () -> ()151; CHECK-NEXT: # %bb.0:152; CHECK-NEXT: call op_0_to_3153; CHECK-NEXT: drop154; CHECK-NEXT: drop155; CHECK-NEXT: call op_1_to_0156; CHECK-NEXT: # fallthrough-return157 %t0 = call {i32, i32, i32} @op_0_to_3()158 %t1 = extractvalue {i32, i32, i32} %t0, 0159 call void @op_1_to_0(i32 %t1)160 ret void161}162 163define void @f26() {164; CHECK-LABEL: f26:165; CHECK: .functype f26 () -> ()166; CHECK-NEXT: .local i32167; CHECK-NEXT: # %bb.0:168; CHECK-NEXT: call op_0_to_3169; CHECK-NEXT: drop170; CHECK-NEXT: local.set 0171; CHECK-NEXT: drop172; CHECK-NEXT: local.get 0173; CHECK-NEXT: call op_1_to_0174; CHECK-NEXT: # fallthrough-return175 %t0 = call {i32, i32, i32} @op_0_to_3()176 %t1 = extractvalue {i32, i32, i32} %t0, 1177 call void @op_1_to_0(i32 %t1)178 ret void179}180 181define void @f27() {182; CHECK-LABEL: f27:183; CHECK: .functype f27 () -> ()184; CHECK-NEXT: .local i32185; CHECK-NEXT: # %bb.0:186; CHECK-NEXT: call op_0_to_3187; CHECK-NEXT: local.set 0188; CHECK-NEXT: drop189; CHECK-NEXT: drop190; CHECK-NEXT: local.get 0191; CHECK-NEXT: call op_1_to_0192; CHECK-NEXT: # fallthrough-return193 %t0 = call {i32, i32, i32} @op_0_to_3()194 %t1 = extractvalue {i32, i32, i32} %t0, 2195 call void @op_1_to_0(i32 %t1)196 ret void197}198 199define void @f28() {200; CHECK-LABEL: f28:201; CHECK: .functype f28 () -> ()202; CHECK-NEXT: .local i32203; CHECK-NEXT: # %bb.0:204; CHECK-NEXT: call op_0_to_3205; CHECK-NEXT: drop206; CHECK-NEXT: drop207; CHECK-NEXT: local.tee 0208; CHECK-NEXT: local.get 0209; CHECK-NEXT: call op_2_to_0210; CHECK-NEXT: # fallthrough-return211 %t0 = call {i32, i32, i32} @op_0_to_3()212 %t1 = extractvalue {i32, i32, i32} %t0, 0213 %t2 = extractvalue {i32, i32, i32} %t0, 0214 call void @op_2_to_0(i32 %t1, i32 %t2)215 ret void216}217 218define void @f29() {219; CHECK-LABEL: f29:220; CHECK: .functype f29 () -> ()221; CHECK-NEXT: # %bb.0:222; CHECK-NEXT: call op_0_to_3223; CHECK-NEXT: drop224; CHECK-NEXT: call op_2_to_0225; CHECK-NEXT: # fallthrough-return226 %t0 = call {i32, i32, i32} @op_0_to_3()227 %t1 = extractvalue {i32, i32, i32} %t0, 0228 %t2 = extractvalue {i32, i32, i32} %t0, 1229 call void @op_2_to_0(i32 %t1, i32 %t2)230 ret void231}232 233define void @f30() {234; CHECK-LABEL: f30:235; CHECK: .functype f30 () -> ()236; CHECK-NEXT: .local i32237; CHECK-NEXT: # %bb.0:238; CHECK-NEXT: call op_0_to_3239; CHECK-NEXT: local.set 0240; CHECK-NEXT: drop241; CHECK-NEXT: local.get 0242; CHECK-NEXT: call op_2_to_0243; CHECK-NEXT: # fallthrough-return244 %t0 = call {i32, i32, i32} @op_0_to_3()245 %t1 = extractvalue {i32, i32, i32} %t0, 0246 %t2 = extractvalue {i32, i32, i32} %t0, 2247 call void @op_2_to_0(i32 %t1, i32 %t2)248 ret void249}250 251define void @f31() {252; CHECK-LABEL: f31:253; CHECK: .functype f31 () -> ()254; CHECK-NEXT: .local i32, i32255; CHECK-NEXT: # %bb.0:256; CHECK-NEXT: call op_0_to_3257; CHECK-NEXT: drop258; CHECK-NEXT: local.set 1259; CHECK-NEXT: local.set 0260; CHECK-NEXT: local.get 1261; CHECK-NEXT: local.get 0262; CHECK-NEXT: call op_2_to_0263; CHECK-NEXT: # fallthrough-return264 %t0 = call {i32, i32, i32} @op_0_to_3()265 %t1 = extractvalue {i32, i32, i32} %t0, 1266 %t2 = extractvalue {i32, i32, i32} %t0, 0267 call void @op_2_to_0(i32 %t1, i32 %t2)268 ret void269}270 271define void @f32() {272; CHECK-LABEL: f32:273; CHECK: .functype f32 () -> ()274; CHECK-NEXT: .local i32275; CHECK-NEXT: # %bb.0:276; CHECK-NEXT: call op_0_to_3277; CHECK-NEXT: drop278; CHECK-NEXT: local.set 0279; CHECK-NEXT: drop280; CHECK-NEXT: local.get 0281; CHECK-NEXT: local.get 0282; CHECK-NEXT: call op_2_to_0283; CHECK-NEXT: # fallthrough-return284 %t0 = call {i32, i32, i32} @op_0_to_3()285 %t1 = extractvalue {i32, i32, i32} %t0, 1286 %t2 = extractvalue {i32, i32, i32} %t0, 1287 call void @op_2_to_0(i32 %t1, i32 %t2)288 ret void289}290 291define void @f33() {292; CHECK-LABEL: f33:293; CHECK: .functype f33 () -> ()294; CHECK-NEXT: .local i32, i32295; CHECK-NEXT: # %bb.0:296; CHECK-NEXT: call op_0_to_3297; CHECK-NEXT: local.set 1298; CHECK-NEXT: local.set 0299; CHECK-NEXT: drop300; CHECK-NEXT: local.get 0301; CHECK-NEXT: local.get 1302; CHECK-NEXT: call op_2_to_0303; CHECK-NEXT: # fallthrough-return304 %t0 = call {i32, i32, i32} @op_0_to_3()305 %t1 = extractvalue {i32, i32, i32} %t0, 1306 %t2 = extractvalue {i32, i32, i32} %t0, 2307 call void @op_2_to_0(i32 %t1, i32 %t2)308 ret void309}310 311define void @f34() {312; CHECK-LABEL: f34:313; CHECK: .functype f34 () -> ()314; CHECK-NEXT: .local i32, i32315; CHECK-NEXT: # %bb.0:316; CHECK-NEXT: call op_0_to_3317; CHECK-NEXT: local.set 1318; CHECK-NEXT: drop319; CHECK-NEXT: local.set 0320; CHECK-NEXT: local.get 1321; CHECK-NEXT: local.get 0322; CHECK-NEXT: call op_2_to_0323; CHECK-NEXT: # fallthrough-return324 %t0 = call {i32, i32, i32} @op_0_to_3()325 %t1 = extractvalue {i32, i32, i32} %t0, 2326 %t2 = extractvalue {i32, i32, i32} %t0, 0327 call void @op_2_to_0(i32 %t1, i32 %t2)328 ret void329}330 331define void @f35() {332; CHECK-LABEL: f35:333; CHECK: .functype f35 () -> ()334; CHECK-NEXT: .local i32, i32335; CHECK-NEXT: # %bb.0:336; CHECK-NEXT: call op_0_to_3337; CHECK-NEXT: local.set 1338; CHECK-NEXT: local.set 0339; CHECK-NEXT: drop340; CHECK-NEXT: local.get 1341; CHECK-NEXT: local.get 0342; CHECK-NEXT: call op_2_to_0343; CHECK-NEXT: # fallthrough-return344 %t0 = call {i32, i32, i32} @op_0_to_3()345 %t1 = extractvalue {i32, i32, i32} %t0, 2346 %t2 = extractvalue {i32, i32, i32} %t0, 1347 call void @op_2_to_0(i32 %t1, i32 %t2)348 ret void349}350 351define void @f36() {352; CHECK-LABEL: f36:353; CHECK: .functype f36 () -> ()354; CHECK-NEXT: .local i32355; CHECK-NEXT: # %bb.0:356; CHECK-NEXT: call op_0_to_3357; CHECK-NEXT: local.set 0358; CHECK-NEXT: drop359; CHECK-NEXT: drop360; CHECK-NEXT: local.get 0361; CHECK-NEXT: local.get 0362; CHECK-NEXT: call op_2_to_0363; CHECK-NEXT: # fallthrough-return364 %t0 = call {i32, i32, i32} @op_0_to_3()365 %t1 = extractvalue {i32, i32, i32} %t0, 2366 %t2 = extractvalue {i32, i32, i32} %t0, 2367 call void @op_2_to_0(i32 %t1, i32 %t2)368 ret void369}370 371define void @f129() {372; CHECK-LABEL: f129:373; CHECK: .functype f129 () -> ()374; CHECK-NEXT: .local i32375; CHECK-NEXT: # %bb.0:376; CHECK-NEXT: call op_0_to_2377; CHECK-NEXT: local.set 0378; CHECK-NEXT: call op_1_to_0379; CHECK-NEXT: local.get 0380; CHECK-NEXT: call op_1_to_0381; CHECK-NEXT: # fallthrough-return382 %t0 = call {i32, i32} @op_0_to_2()383 %t1 = extractvalue {i32, i32} %t0, 0384 call void @op_1_to_0(i32 %t1)385 %t2 = extractvalue {i32, i32} %t0, 1386 call void @op_1_to_0(i32 %t2)387 ret void388}389 390define void @f131() {391; CHECK-LABEL: f131:392; CHECK: .functype f131 () -> ()393; CHECK-NEXT: .local i32, i32394; CHECK-NEXT: # %bb.0:395; CHECK-NEXT: call op_0_to_2396; CHECK-NEXT: local.set 0397; CHECK-NEXT: local.tee 1398; CHECK-NEXT: call op_1_to_0399; CHECK-NEXT: local.get 1400; CHECK-NEXT: local.get 0401; CHECK-NEXT: call op_2_to_0402; CHECK-NEXT: # fallthrough-return403 %t0 = call {i32, i32} @op_0_to_2()404 %t1 = extractvalue {i32, i32} %t0, 0405 call void @op_1_to_0(i32 %t1)406 %t2 = extractvalue {i32, i32} %t0, 0407 %t3 = extractvalue {i32, i32} %t0, 1408 call void @op_2_to_0(i32 %t2, i32 %t3)409 ret void410}411 412define void @f132() {413; CHECK-LABEL: f132:414; CHECK: .functype f132 () -> ()415; CHECK-NEXT: .local i32, i32416; CHECK-NEXT: # %bb.0:417; CHECK-NEXT: call op_0_to_2418; CHECK-NEXT: local.set 0419; CHECK-NEXT: local.tee 1420; CHECK-NEXT: call op_1_to_0421; CHECK-NEXT: local.get 0422; CHECK-NEXT: local.get 1423; CHECK-NEXT: call op_2_to_0424; CHECK-NEXT: # fallthrough-return425 %t0 = call {i32, i32} @op_0_to_2()426 %t1 = extractvalue {i32, i32} %t0, 0427 call void @op_1_to_0(i32 %t1)428 %t2 = extractvalue {i32, i32} %t0, 1429 %t3 = extractvalue {i32, i32} %t0, 0430 call void @op_2_to_0(i32 %t2, i32 %t3)431 ret void432}433 434define void @f133() {435; CHECK-LABEL: f133:436; CHECK: .functype f133 () -> ()437; CHECK-NEXT: .local i32438; CHECK-NEXT: # %bb.0:439; CHECK-NEXT: call op_0_to_2440; CHECK-NEXT: local.set 0441; CHECK-NEXT: call op_1_to_0442; CHECK-NEXT: local.get 0443; CHECK-NEXT: local.get 0444; CHECK-NEXT: call op_2_to_0445; CHECK-NEXT: # fallthrough-return446 %t0 = call {i32, i32} @op_0_to_2()447 %t1 = extractvalue {i32, i32} %t0, 0448 call void @op_1_to_0(i32 %t1)449 %t2 = extractvalue {i32, i32} %t0, 1450 %t3 = extractvalue {i32, i32} %t0, 1451 call void @op_2_to_0(i32 %t2, i32 %t3)452 ret void453}454 455define void @f141() {456; CHECK-LABEL: f141:457; CHECK: .functype f141 () -> ()458; CHECK-NEXT: .local i32, i32459; CHECK-NEXT: # %bb.0:460; CHECK-NEXT: call op_0_to_2461; CHECK-NEXT: local.set 1462; CHECK-NEXT: local.set 0463; CHECK-NEXT: local.get 1464; CHECK-NEXT: call op_1_to_0465; CHECK-NEXT: local.get 0466; CHECK-NEXT: call op_1_to_0467; CHECK-NEXT: # fallthrough-return468 %t0 = call {i32, i32} @op_0_to_2()469 %t1 = extractvalue {i32, i32} %t0, 1470 call void @op_1_to_0(i32 %t1)471 %t2 = extractvalue {i32, i32} %t0, 0472 call void @op_1_to_0(i32 %t2)473 ret void474}475 476define void @f143() {477; CHECK-LABEL: f143:478; CHECK: .functype f143 () -> ()479; CHECK-NEXT: .local i32, i32480; CHECK-NEXT: # %bb.0:481; CHECK-NEXT: call op_0_to_2482; CHECK-NEXT: local.set 1483; CHECK-NEXT: local.set 0484; CHECK-NEXT: local.get 1485; CHECK-NEXT: call op_1_to_0486; CHECK-NEXT: local.get 0487; CHECK-NEXT: local.get 0488; CHECK-NEXT: call op_2_to_0489; CHECK-NEXT: # fallthrough-return490 %t0 = call {i32, i32} @op_0_to_2()491 %t1 = extractvalue {i32, i32} %t0, 1492 call void @op_1_to_0(i32 %t1)493 %t2 = extractvalue {i32, i32} %t0, 0494 %t3 = extractvalue {i32, i32} %t0, 0495 call void @op_2_to_0(i32 %t2, i32 %t3)496 ret void497}498 499define void @f144() {500; CHECK-LABEL: f144:501; CHECK: .functype f144 () -> ()502; CHECK-NEXT: .local i32, i32503; CHECK-NEXT: # %bb.0:504; CHECK-NEXT: call op_0_to_2505; CHECK-NEXT: local.set 1506; CHECK-NEXT: local.set 0507; CHECK-NEXT: local.get 1508; CHECK-NEXT: call op_1_to_0509; CHECK-NEXT: local.get 0510; CHECK-NEXT: local.get 1511; CHECK-NEXT: call op_2_to_0512; CHECK-NEXT: # fallthrough-return513 %t0 = call {i32, i32} @op_0_to_2()514 %t1 = extractvalue {i32, i32} %t0, 1515 call void @op_1_to_0(i32 %t1)516 %t2 = extractvalue {i32, i32} %t0, 0517 %t3 = extractvalue {i32, i32} %t0, 1518 call void @op_2_to_0(i32 %t2, i32 %t3)519 ret void520}521 522define void @f145() {523; CHECK-LABEL: f145:524; CHECK: .functype f145 () -> ()525; CHECK-NEXT: .local i32, i32526; CHECK-NEXT: # %bb.0:527; CHECK-NEXT: call op_0_to_2528; CHECK-NEXT: local.set 1529; CHECK-NEXT: local.set 0530; CHECK-NEXT: local.get 1531; CHECK-NEXT: call op_1_to_0532; CHECK-NEXT: local.get 1533; CHECK-NEXT: local.get 0534; CHECK-NEXT: call op_2_to_0535; CHECK-NEXT: # fallthrough-return536 %t0 = call {i32, i32} @op_0_to_2()537 %t1 = extractvalue {i32, i32} %t0, 1538 call void @op_1_to_0(i32 %t1)539 %t2 = extractvalue {i32, i32} %t0, 1540 %t3 = extractvalue {i32, i32} %t0, 0541 call void @op_2_to_0(i32 %t2, i32 %t3)542 ret void543}544 545define void @f155() {546; CHECK-LABEL: f155:547; CHECK: .functype f155 () -> ()548; CHECK-NEXT: .local i32, i32549; CHECK-NEXT: # %bb.0:550; CHECK-NEXT: call op_0_to_2551; CHECK-NEXT: local.set 0552; CHECK-NEXT: local.tee 1553; CHECK-NEXT: local.get 1554; CHECK-NEXT: call op_2_to_0555; CHECK-NEXT: local.get 0556; CHECK-NEXT: call op_1_to_0557; CHECK-NEXT: # fallthrough-return558 %t0 = call {i32, i32} @op_0_to_2()559 %t1 = extractvalue {i32, i32} %t0, 0560 %t2 = extractvalue {i32, i32} %t0, 0561 call void @op_2_to_0(i32 %t1, i32 %t2)562 %t3 = extractvalue {i32, i32} %t0, 1563 call void @op_1_to_0(i32 %t3)564 ret void565}566 567define void @f159() {568; CHECK-LABEL: f159:569; CHECK: .functype f159 () -> ()570; CHECK-NEXT: .local i32, i32571; CHECK-NEXT: # %bb.0:572; CHECK-NEXT: call op_0_to_2573; CHECK-NEXT: local.set 0574; CHECK-NEXT: local.tee 1575; CHECK-NEXT: local.get 1576; CHECK-NEXT: call op_2_to_0577; CHECK-NEXT: local.get 0578; CHECK-NEXT: local.get 0579; CHECK-NEXT: call op_2_to_0580; CHECK-NEXT: # fallthrough-return581 %t0 = call {i32, i32} @op_0_to_2()582 %t1 = extractvalue {i32, i32} %t0, 0583 %t2 = extractvalue {i32, i32} %t0, 0584 call void @op_2_to_0(i32 %t1, i32 %t2)585 %t3 = extractvalue {i32, i32} %t0, 1586 %t4 = extractvalue {i32, i32} %t0, 1587 call void @op_2_to_0(i32 %t3, i32 %t4)588 ret void589}590 591define void @f167() {592; CHECK-LABEL: f167:593; CHECK: .functype f167 () -> ()594; CHECK-NEXT: .local i32, i32595; CHECK-NEXT: # %bb.0:596; CHECK-NEXT: call op_0_to_2597; CHECK-NEXT: local.set 0598; CHECK-NEXT: local.tee 1599; CHECK-NEXT: local.get 0600; CHECK-NEXT: call op_2_to_0601; CHECK-NEXT: local.get 1602; CHECK-NEXT: call op_1_to_0603; CHECK-NEXT: # fallthrough-return604 %t0 = call {i32, i32} @op_0_to_2()605 %t1 = extractvalue {i32, i32} %t0, 0606 %t2 = extractvalue {i32, i32} %t0, 1607 call void @op_2_to_0(i32 %t1, i32 %t2)608 %t3 = extractvalue {i32, i32} %t0, 0609 call void @op_1_to_0(i32 %t3)610 ret void611}612 613define void @f168() {614; CHECK-LABEL: f168:615; CHECK: .functype f168 () -> ()616; CHECK-NEXT: .local i32617; CHECK-NEXT: # %bb.0:618; CHECK-NEXT: call op_0_to_2619; CHECK-NEXT: local.set 0620; CHECK-NEXT: local.get 0621; CHECK-NEXT: call op_2_to_0622; CHECK-NEXT: local.get 0623; CHECK-NEXT: call op_1_to_0624; CHECK-NEXT: # fallthrough-return625 %t0 = call {i32, i32} @op_0_to_2()626 %t1 = extractvalue {i32, i32} %t0, 0627 %t2 = extractvalue {i32, i32} %t0, 1628 call void @op_2_to_0(i32 %t1, i32 %t2)629 %t3 = extractvalue {i32, i32} %t0, 1630 call void @op_1_to_0(i32 %t3)631 ret void632}633 634define void @f171() {635; CHECK-LABEL: f171:636; CHECK: .functype f171 () -> ()637; CHECK-NEXT: .local i32, i32638; CHECK-NEXT: # %bb.0:639; CHECK-NEXT: call op_0_to_2640; CHECK-NEXT: local.set 0641; CHECK-NEXT: local.tee 1642; CHECK-NEXT: local.get 0643; CHECK-NEXT: call op_2_to_0644; CHECK-NEXT: local.get 0645; CHECK-NEXT: local.get 1646; CHECK-NEXT: call op_2_to_0647; CHECK-NEXT: # fallthrough-return648 %t0 = call {i32, i32} @op_0_to_2()649 %t1 = extractvalue {i32, i32} %t0, 0650 %t2 = extractvalue {i32, i32} %t0, 1651 call void @op_2_to_0(i32 %t1, i32 %t2)652 %t3 = extractvalue {i32, i32} %t0, 1653 %t4 = extractvalue {i32, i32} %t0, 0654 call void @op_2_to_0(i32 %t3, i32 %t4)655 ret void656}657 658define void @f180() {659; CHECK-LABEL: f180:660; CHECK: .functype f180 () -> ()661; CHECK-NEXT: .local i32, i32662; CHECK-NEXT: # %bb.0:663; CHECK-NEXT: call op_0_to_2664; CHECK-NEXT: local.set 1665; CHECK-NEXT: local.set 0666; CHECK-NEXT: local.get 1667; CHECK-NEXT: local.get 0668; CHECK-NEXT: call op_2_to_0669; CHECK-NEXT: local.get 0670; CHECK-NEXT: call op_1_to_0671; CHECK-NEXT: # fallthrough-return672 %t0 = call {i32, i32} @op_0_to_2()673 %t1 = extractvalue {i32, i32} %t0, 1674 %t2 = extractvalue {i32, i32} %t0, 0675 call void @op_2_to_0(i32 %t1, i32 %t2)676 %t3 = extractvalue {i32, i32} %t0, 0677 call void @op_1_to_0(i32 %t3)678 ret void679}680 681define void @f181() {682; CHECK-LABEL: f181:683; CHECK: .functype f181 () -> ()684; CHECK-NEXT: .local i32, i32685; CHECK-NEXT: # %bb.0:686; CHECK-NEXT: call op_0_to_2687; CHECK-NEXT: local.set 1688; CHECK-NEXT: local.set 0689; CHECK-NEXT: local.get 1690; CHECK-NEXT: local.get 0691; CHECK-NEXT: call op_2_to_0692; CHECK-NEXT: local.get 1693; CHECK-NEXT: call op_1_to_0694; CHECK-NEXT: # fallthrough-return695 %t0 = call {i32, i32} @op_0_to_2()696 %t1 = extractvalue {i32, i32} %t0, 1697 %t2 = extractvalue {i32, i32} %t0, 0698 call void @op_2_to_0(i32 %t1, i32 %t2)699 %t3 = extractvalue {i32, i32} %t0, 1700 call void @op_1_to_0(i32 %t3)701 ret void702}703 704define void @f183() {705; CHECK-LABEL: f183:706; CHECK: .functype f183 () -> ()707; CHECK-NEXT: .local i32, i32708; CHECK-NEXT: # %bb.0:709; CHECK-NEXT: call op_0_to_2710; CHECK-NEXT: local.set 1711; CHECK-NEXT: local.set 0712; CHECK-NEXT: local.get 1713; CHECK-NEXT: local.get 0714; CHECK-NEXT: call op_2_to_0715; CHECK-NEXT: local.get 0716; CHECK-NEXT: local.get 1717; CHECK-NEXT: call op_2_to_0718; CHECK-NEXT: # fallthrough-return719 %t0 = call {i32, i32} @op_0_to_2()720 %t1 = extractvalue {i32, i32} %t0, 1721 %t2 = extractvalue {i32, i32} %t0, 0722 call void @op_2_to_0(i32 %t1, i32 %t2)723 %t3 = extractvalue {i32, i32} %t0, 0724 %t4 = extractvalue {i32, i32} %t0, 1725 call void @op_2_to_0(i32 %t3, i32 %t4)726 ret void727}728 729define void @f193() {730; CHECK-LABEL: f193:731; CHECK: .functype f193 () -> ()732; CHECK-NEXT: .local i32, i32733; CHECK-NEXT: # %bb.0:734; CHECK-NEXT: call op_0_to_2735; CHECK-NEXT: local.set 1736; CHECK-NEXT: local.set 0737; CHECK-NEXT: local.get 1738; CHECK-NEXT: local.get 1739; CHECK-NEXT: call op_2_to_0740; CHECK-NEXT: local.get 0741; CHECK-NEXT: call op_1_to_0742; CHECK-NEXT: # fallthrough-return743 %t0 = call {i32, i32} @op_0_to_2()744 %t1 = extractvalue {i32, i32} %t0, 1745 %t2 = extractvalue {i32, i32} %t0, 1746 call void @op_2_to_0(i32 %t1, i32 %t2)747 %t3 = extractvalue {i32, i32} %t0, 0748 call void @op_1_to_0(i32 %t3)749 ret void750}751 752define void @f195() {753; CHECK-LABEL: f195:754; CHECK: .functype f195 () -> ()755; CHECK-NEXT: .local i32, i32756; CHECK-NEXT: # %bb.0:757; CHECK-NEXT: call op_0_to_2758; CHECK-NEXT: local.set 1759; CHECK-NEXT: local.set 0760; CHECK-NEXT: local.get 1761; CHECK-NEXT: local.get 1762; CHECK-NEXT: call op_2_to_0763; CHECK-NEXT: local.get 0764; CHECK-NEXT: local.get 0765; CHECK-NEXT: call op_2_to_0766; CHECK-NEXT: # fallthrough-return767 %t0 = call {i32, i32} @op_0_to_2()768 %t1 = extractvalue {i32, i32} %t0, 1769 %t2 = extractvalue {i32, i32} %t0, 1770 call void @op_2_to_0(i32 %t1, i32 %t2)771 %t3 = extractvalue {i32, i32} %t0, 0772 %t4 = extractvalue {i32, i32} %t0, 0773 call void @op_2_to_0(i32 %t3, i32 %t4)774 ret void775}776 777define void @f291() {778; CHECK-LABEL: f291:779; CHECK: .functype f291 () -> ()780; CHECK-NEXT: .local i32781; CHECK-NEXT: # %bb.0:782; CHECK-NEXT: call op_0_to_3783; CHECK-NEXT: drop784; CHECK-NEXT: local.set 0785; CHECK-NEXT: call op_1_to_0786; CHECK-NEXT: local.get 0787; CHECK-NEXT: call op_1_to_0788; CHECK-NEXT: # fallthrough-return789 %t0 = call {i32, i32, i32} @op_0_to_3()790 %t1 = extractvalue {i32, i32, i32} %t0, 0791 call void @op_1_to_0(i32 %t1)792 %t2 = extractvalue {i32, i32, i32} %t0, 1793 call void @op_1_to_0(i32 %t2)794 ret void795}796 797define void @f292() {798; CHECK-LABEL: f292:799; CHECK: .functype f292 () -> ()800; CHECK-NEXT: .local i32801; CHECK-NEXT: # %bb.0:802; CHECK-NEXT: call op_0_to_3803; CHECK-NEXT: local.set 0804; CHECK-NEXT: drop805; CHECK-NEXT: call op_1_to_0806; CHECK-NEXT: local.get 0807; CHECK-NEXT: call op_1_to_0808; CHECK-NEXT: # fallthrough-return809 %t0 = call {i32, i32, i32} @op_0_to_3()810 %t1 = extractvalue {i32, i32, i32} %t0, 0811 call void @op_1_to_0(i32 %t1)812 %t2 = extractvalue {i32, i32, i32} %t0, 2813 call void @op_1_to_0(i32 %t2)814 ret void815}816 817define void @f294() {818; CHECK-LABEL: f294:819; CHECK: .functype f294 () -> ()820; CHECK-NEXT: .local i32, i32821; CHECK-NEXT: # %bb.0:822; CHECK-NEXT: call op_0_to_3823; CHECK-NEXT: drop824; CHECK-NEXT: local.set 0825; CHECK-NEXT: local.tee 1826; CHECK-NEXT: call op_1_to_0827; CHECK-NEXT: local.get 1828; CHECK-NEXT: local.get 0829; CHECK-NEXT: call op_2_to_0830; CHECK-NEXT: # fallthrough-return831 %t0 = call {i32, i32, i32} @op_0_to_3()832 %t1 = extractvalue {i32, i32, i32} %t0, 0833 call void @op_1_to_0(i32 %t1)834 %t2 = extractvalue {i32, i32, i32} %t0, 0835 %t3 = extractvalue {i32, i32, i32} %t0, 1836 call void @op_2_to_0(i32 %t2, i32 %t3)837 ret void838}839 840define void @f295() {841; CHECK-LABEL: f295:842; CHECK: .functype f295 () -> ()843; CHECK-NEXT: .local i32, i32844; CHECK-NEXT: # %bb.0:845; CHECK-NEXT: call op_0_to_3846; CHECK-NEXT: local.set 0847; CHECK-NEXT: drop848; CHECK-NEXT: local.tee 1849; CHECK-NEXT: call op_1_to_0850; CHECK-NEXT: local.get 1851; CHECK-NEXT: local.get 0852; CHECK-NEXT: call op_2_to_0853; CHECK-NEXT: # fallthrough-return854 %t0 = call {i32, i32, i32} @op_0_to_3()855 %t1 = extractvalue {i32, i32, i32} %t0, 0856 call void @op_1_to_0(i32 %t1)857 %t2 = extractvalue {i32, i32, i32} %t0, 0858 %t3 = extractvalue {i32, i32, i32} %t0, 2859 call void @op_2_to_0(i32 %t2, i32 %t3)860 ret void861}862 863define void @f296() {864; CHECK-LABEL: f296:865; CHECK: .functype f296 () -> ()866; CHECK-NEXT: .local i32, i32867; CHECK-NEXT: # %bb.0:868; CHECK-NEXT: call op_0_to_3869; CHECK-NEXT: drop870; CHECK-NEXT: local.set 0871; CHECK-NEXT: local.tee 1872; CHECK-NEXT: call op_1_to_0873; CHECK-NEXT: local.get 0874; CHECK-NEXT: local.get 1875; CHECK-NEXT: call op_2_to_0876; CHECK-NEXT: # fallthrough-return877 %t0 = call {i32, i32, i32} @op_0_to_3()878 %t1 = extractvalue {i32, i32, i32} %t0, 0879 call void @op_1_to_0(i32 %t1)880 %t2 = extractvalue {i32, i32, i32} %t0, 1881 %t3 = extractvalue {i32, i32, i32} %t0, 0882 call void @op_2_to_0(i32 %t2, i32 %t3)883 ret void884}885 886define void @f297() {887; CHECK-LABEL: f297:888; CHECK: .functype f297 () -> ()889; CHECK-NEXT: .local i32890; CHECK-NEXT: # %bb.0:891; CHECK-NEXT: call op_0_to_3892; CHECK-NEXT: drop893; CHECK-NEXT: local.set 0894; CHECK-NEXT: call op_1_to_0895; CHECK-NEXT: local.get 0896; CHECK-NEXT: local.get 0897; CHECK-NEXT: call op_2_to_0898; CHECK-NEXT: # fallthrough-return899 %t0 = call {i32, i32, i32} @op_0_to_3()900 %t1 = extractvalue {i32, i32, i32} %t0, 0901 call void @op_1_to_0(i32 %t1)902 %t2 = extractvalue {i32, i32, i32} %t0, 1903 %t3 = extractvalue {i32, i32, i32} %t0, 1904 call void @op_2_to_0(i32 %t2, i32 %t3)905 ret void906}907 908define void @f298() {909; CHECK-LABEL: f298:910; CHECK: .functype f298 () -> ()911; CHECK-NEXT: .local i32, i32912; CHECK-NEXT: # %bb.0:913; CHECK-NEXT: call op_0_to_3914; CHECK-NEXT: local.set 1915; CHECK-NEXT: local.set 0916; CHECK-NEXT: call op_1_to_0917; CHECK-NEXT: local.get 0918; CHECK-NEXT: local.get 1919; CHECK-NEXT: call op_2_to_0920; CHECK-NEXT: # fallthrough-return921 %t0 = call {i32, i32, i32} @op_0_to_3()922 %t1 = extractvalue {i32, i32, i32} %t0, 0923 call void @op_1_to_0(i32 %t1)924 %t2 = extractvalue {i32, i32, i32} %t0, 1925 %t3 = extractvalue {i32, i32, i32} %t0, 2926 call void @op_2_to_0(i32 %t2, i32 %t3)927 ret void928}929 930define void @f299() {931; CHECK-LABEL: f299:932; CHECK: .functype f299 () -> ()933; CHECK-NEXT: .local i32, i32934; CHECK-NEXT: # %bb.0:935; CHECK-NEXT: call op_0_to_3936; CHECK-NEXT: local.set 0937; CHECK-NEXT: drop938; CHECK-NEXT: local.tee 1939; CHECK-NEXT: call op_1_to_0940; CHECK-NEXT: local.get 0941; CHECK-NEXT: local.get 1942; CHECK-NEXT: call op_2_to_0943; CHECK-NEXT: # fallthrough-return944 %t0 = call {i32, i32, i32} @op_0_to_3()945 %t1 = extractvalue {i32, i32, i32} %t0, 0946 call void @op_1_to_0(i32 %t1)947 %t2 = extractvalue {i32, i32, i32} %t0, 2948 %t3 = extractvalue {i32, i32, i32} %t0, 0949 call void @op_2_to_0(i32 %t2, i32 %t3)950 ret void951}952 953define void @f300() {954; CHECK-LABEL: f300:955; CHECK: .functype f300 () -> ()956; CHECK-NEXT: .local i32, i32957; CHECK-NEXT: # %bb.0:958; CHECK-NEXT: call op_0_to_3959; CHECK-NEXT: local.set 1960; CHECK-NEXT: local.set 0961; CHECK-NEXT: call op_1_to_0962; CHECK-NEXT: local.get 1963; CHECK-NEXT: local.get 0964; CHECK-NEXT: call op_2_to_0965; CHECK-NEXT: # fallthrough-return966 %t0 = call {i32, i32, i32} @op_0_to_3()967 %t1 = extractvalue {i32, i32, i32} %t0, 0968 call void @op_1_to_0(i32 %t1)969 %t2 = extractvalue {i32, i32, i32} %t0, 2970 %t3 = extractvalue {i32, i32, i32} %t0, 1971 call void @op_2_to_0(i32 %t2, i32 %t3)972 ret void973}974 975define void @f301() {976; CHECK-LABEL: f301:977; CHECK: .functype f301 () -> ()978; CHECK-NEXT: .local i32979; CHECK-NEXT: # %bb.0:980; CHECK-NEXT: call op_0_to_3981; CHECK-NEXT: local.set 0982; CHECK-NEXT: drop983; CHECK-NEXT: call op_1_to_0984; CHECK-NEXT: local.get 0985; CHECK-NEXT: local.get 0986; CHECK-NEXT: call op_2_to_0987; CHECK-NEXT: # fallthrough-return988 %t0 = call {i32, i32, i32} @op_0_to_3()989 %t1 = extractvalue {i32, i32, i32} %t0, 0990 call void @op_1_to_0(i32 %t1)991 %t2 = extractvalue {i32, i32, i32} %t0, 2992 %t3 = extractvalue {i32, i32, i32} %t0, 2993 call void @op_2_to_0(i32 %t2, i32 %t3)994 ret void995}996 997define void @f302() {998; CHECK-LABEL: f302:999; CHECK: .functype f302 () -> ()1000; CHECK-NEXT: .local i32, i321001; CHECK-NEXT: # %bb.0:1002; CHECK-NEXT: call op_0_to_31003; CHECK-NEXT: drop1004; CHECK-NEXT: local.set 11005; CHECK-NEXT: local.set 01006; CHECK-NEXT: local.get 11007; CHECK-NEXT: call op_1_to_01008; CHECK-NEXT: local.get 01009; CHECK-NEXT: call op_1_to_01010; CHECK-NEXT: # fallthrough-return1011 %t0 = call {i32, i32, i32} @op_0_to_3()1012 %t1 = extractvalue {i32, i32, i32} %t0, 11013 call void @op_1_to_0(i32 %t1)1014 %t2 = extractvalue {i32, i32, i32} %t0, 01015 call void @op_1_to_0(i32 %t2)1016 ret void1017}1018 1019define void @f304() {1020; CHECK-LABEL: f304:1021; CHECK: .functype f304 () -> ()1022; CHECK-NEXT: .local i32, i321023; CHECK-NEXT: # %bb.0:1024; CHECK-NEXT: call op_0_to_31025; CHECK-NEXT: local.set 11026; CHECK-NEXT: local.set 01027; CHECK-NEXT: drop1028; CHECK-NEXT: local.get 01029; CHECK-NEXT: call op_1_to_01030; CHECK-NEXT: local.get 11031; CHECK-NEXT: call op_1_to_01032; CHECK-NEXT: # fallthrough-return1033 %t0 = call {i32, i32, i32} @op_0_to_3()1034 %t1 = extractvalue {i32, i32, i32} %t0, 11035 call void @op_1_to_0(i32 %t1)1036 %t2 = extractvalue {i32, i32, i32} %t0, 21037 call void @op_1_to_0(i32 %t2)1038 ret void1039}1040 1041define void @f305() {1042; CHECK-LABEL: f305:1043; CHECK: .functype f305 () -> ()1044; CHECK-NEXT: .local i32, i321045; CHECK-NEXT: # %bb.0:1046; CHECK-NEXT: call op_0_to_31047; CHECK-NEXT: drop1048; CHECK-NEXT: local.set 11049; CHECK-NEXT: local.set 01050; CHECK-NEXT: local.get 11051; CHECK-NEXT: call op_1_to_01052; CHECK-NEXT: local.get 01053; CHECK-NEXT: local.get 01054; CHECK-NEXT: call op_2_to_01055; CHECK-NEXT: # fallthrough-return1056 %t0 = call {i32, i32, i32} @op_0_to_3()1057 %t1 = extractvalue {i32, i32, i32} %t0, 11058 call void @op_1_to_0(i32 %t1)1059 %t2 = extractvalue {i32, i32, i32} %t0, 01060 %t3 = extractvalue {i32, i32, i32} %t0, 01061 call void @op_2_to_0(i32 %t2, i32 %t3)1062 ret void1063}1064 1065define void @f306() {1066; CHECK-LABEL: f306:1067; CHECK: .functype f306 () -> ()1068; CHECK-NEXT: .local i32, i321069; CHECK-NEXT: # %bb.0:1070; CHECK-NEXT: call op_0_to_31071; CHECK-NEXT: drop1072; CHECK-NEXT: local.set 11073; CHECK-NEXT: local.set 01074; CHECK-NEXT: local.get 11075; CHECK-NEXT: call op_1_to_01076; CHECK-NEXT: local.get 01077; CHECK-NEXT: local.get 11078; CHECK-NEXT: call op_2_to_01079; CHECK-NEXT: # fallthrough-return1080 %t0 = call {i32, i32, i32} @op_0_to_3()1081 %t1 = extractvalue {i32, i32, i32} %t0, 11082 call void @op_1_to_0(i32 %t1)1083 %t2 = extractvalue {i32, i32, i32} %t0, 01084 %t3 = extractvalue {i32, i32, i32} %t0, 11085 call void @op_2_to_0(i32 %t2, i32 %t3)1086 ret void1087}1088 1089define void @f307() {1090; CHECK-LABEL: f307:1091; CHECK: .functype f307 () -> ()1092; CHECK-NEXT: .local i32, i32, i321093; CHECK-NEXT: # %bb.0:1094; CHECK-NEXT: call op_0_to_31095; CHECK-NEXT: local.set 21096; CHECK-NEXT: local.set 11097; CHECK-NEXT: local.set 01098; CHECK-NEXT: local.get 11099; CHECK-NEXT: call op_1_to_01100; CHECK-NEXT: local.get 01101; CHECK-NEXT: local.get 21102; CHECK-NEXT: call op_2_to_01103; CHECK-NEXT: # fallthrough-return1104 %t0 = call {i32, i32, i32} @op_0_to_3()1105 %t1 = extractvalue {i32, i32, i32} %t0, 11106 call void @op_1_to_0(i32 %t1)1107 %t2 = extractvalue {i32, i32, i32} %t0, 01108 %t3 = extractvalue {i32, i32, i32} %t0, 21109 call void @op_2_to_0(i32 %t2, i32 %t3)1110 ret void1111}1112 1113define void @f308() {1114; CHECK-LABEL: f308:1115; CHECK: .functype f308 () -> ()1116; CHECK-NEXT: .local i32, i321117; CHECK-NEXT: # %bb.0:1118; CHECK-NEXT: call op_0_to_31119; CHECK-NEXT: drop1120; CHECK-NEXT: local.set 11121; CHECK-NEXT: local.set 01122; CHECK-NEXT: local.get 11123; CHECK-NEXT: call op_1_to_01124; CHECK-NEXT: local.get 11125; CHECK-NEXT: local.get 01126; CHECK-NEXT: call op_2_to_01127; CHECK-NEXT: # fallthrough-return1128 %t0 = call {i32, i32, i32} @op_0_to_3()1129 %t1 = extractvalue {i32, i32, i32} %t0, 11130 call void @op_1_to_0(i32 %t1)1131 %t2 = extractvalue {i32, i32, i32} %t0, 11132 %t3 = extractvalue {i32, i32, i32} %t0, 01133 call void @op_2_to_0(i32 %t2, i32 %t3)1134 ret void1135}1136 1137define void @f310() {1138; CHECK-LABEL: f310:1139; CHECK: .functype f310 () -> ()1140; CHECK-NEXT: .local i32, i321141; CHECK-NEXT: # %bb.0:1142; CHECK-NEXT: call op_0_to_31143; CHECK-NEXT: local.set 11144; CHECK-NEXT: local.set 01145; CHECK-NEXT: drop1146; CHECK-NEXT: local.get 01147; CHECK-NEXT: call op_1_to_01148; CHECK-NEXT: local.get 01149; CHECK-NEXT: local.get 11150; CHECK-NEXT: call op_2_to_01151; CHECK-NEXT: # fallthrough-return1152 %t0 = call {i32, i32, i32} @op_0_to_3()1153 %t1 = extractvalue {i32, i32, i32} %t0, 11154 call void @op_1_to_0(i32 %t1)1155 %t2 = extractvalue {i32, i32, i32} %t0, 11156 %t3 = extractvalue {i32, i32, i32} %t0, 21157 call void @op_2_to_0(i32 %t2, i32 %t3)1158 ret void1159}1160 1161define void @f311() {1162; CHECK-LABEL: f311:1163; CHECK: .functype f311 () -> ()1164; CHECK-NEXT: .local i32, i32, i321165; CHECK-NEXT: # %bb.0:1166; CHECK-NEXT: call op_0_to_31167; CHECK-NEXT: local.set 21168; CHECK-NEXT: local.set 11169; CHECK-NEXT: local.set 01170; CHECK-NEXT: local.get 11171; CHECK-NEXT: call op_1_to_01172; CHECK-NEXT: local.get 21173; CHECK-NEXT: local.get 01174; CHECK-NEXT: call op_2_to_01175; CHECK-NEXT: # fallthrough-return1176 %t0 = call {i32, i32, i32} @op_0_to_3()1177 %t1 = extractvalue {i32, i32, i32} %t0, 11178 call void @op_1_to_0(i32 %t1)1179 %t2 = extractvalue {i32, i32, i32} %t0, 21180 %t3 = extractvalue {i32, i32, i32} %t0, 01181 call void @op_2_to_0(i32 %t2, i32 %t3)1182 ret void1183}1184 1185define void @f312() {1186; CHECK-LABEL: f312:1187; CHECK: .functype f312 () -> ()1188; CHECK-NEXT: .local i32, i321189; CHECK-NEXT: # %bb.0:1190; CHECK-NEXT: call op_0_to_31191; CHECK-NEXT: local.set 11192; CHECK-NEXT: local.set 01193; CHECK-NEXT: drop1194; CHECK-NEXT: local.get 01195; CHECK-NEXT: call op_1_to_01196; CHECK-NEXT: local.get 11197; CHECK-NEXT: local.get 01198; CHECK-NEXT: call op_2_to_01199; CHECK-NEXT: # fallthrough-return1200 %t0 = call {i32, i32, i32} @op_0_to_3()1201 %t1 = extractvalue {i32, i32, i32} %t0, 11202 call void @op_1_to_0(i32 %t1)1203 %t2 = extractvalue {i32, i32, i32} %t0, 21204 %t3 = extractvalue {i32, i32, i32} %t0, 11205 call void @op_2_to_0(i32 %t2, i32 %t3)1206 ret void1207}1208 1209define void @f313() {1210; CHECK-LABEL: f313:1211; CHECK: .functype f313 () -> ()1212; CHECK-NEXT: .local i32, i321213; CHECK-NEXT: # %bb.0:1214; CHECK-NEXT: call op_0_to_31215; CHECK-NEXT: local.set 11216; CHECK-NEXT: local.set 01217; CHECK-NEXT: drop1218; CHECK-NEXT: local.get 01219; CHECK-NEXT: call op_1_to_01220; CHECK-NEXT: local.get 11221; CHECK-NEXT: local.get 11222; CHECK-NEXT: call op_2_to_01223; CHECK-NEXT: # fallthrough-return1224 %t0 = call {i32, i32, i32} @op_0_to_3()1225 %t1 = extractvalue {i32, i32, i32} %t0, 11226 call void @op_1_to_0(i32 %t1)1227 %t2 = extractvalue {i32, i32, i32} %t0, 21228 %t3 = extractvalue {i32, i32, i32} %t0, 21229 call void @op_2_to_0(i32 %t2, i32 %t3)1230 ret void1231}1232 1233define void @f314() {1234; CHECK-LABEL: f314:1235; CHECK: .functype f314 () -> ()1236; CHECK-NEXT: .local i32, i321237; CHECK-NEXT: # %bb.0:1238; CHECK-NEXT: call op_0_to_31239; CHECK-NEXT: local.set 11240; CHECK-NEXT: drop1241; CHECK-NEXT: local.set 01242; CHECK-NEXT: local.get 11243; CHECK-NEXT: call op_1_to_01244; CHECK-NEXT: local.get 01245; CHECK-NEXT: call op_1_to_01246; CHECK-NEXT: # fallthrough-return1247 %t0 = call {i32, i32, i32} @op_0_to_3()1248 %t1 = extractvalue {i32, i32, i32} %t0, 21249 call void @op_1_to_0(i32 %t1)1250 %t2 = extractvalue {i32, i32, i32} %t0, 01251 call void @op_1_to_0(i32 %t2)1252 ret void1253}1254 1255define void @f315() {1256; CHECK-LABEL: f315:1257; CHECK: .functype f315 () -> ()1258; CHECK-NEXT: .local i32, i321259; CHECK-NEXT: # %bb.0:1260; CHECK-NEXT: call op_0_to_31261; CHECK-NEXT: local.set 11262; CHECK-NEXT: local.set 01263; CHECK-NEXT: drop1264; CHECK-NEXT: local.get 11265; CHECK-NEXT: call op_1_to_01266; CHECK-NEXT: local.get 01267; CHECK-NEXT: call op_1_to_01268; CHECK-NEXT: # fallthrough-return1269 %t0 = call {i32, i32, i32} @op_0_to_3()1270 %t1 = extractvalue {i32, i32, i32} %t0, 21271 call void @op_1_to_0(i32 %t1)1272 %t2 = extractvalue {i32, i32, i32} %t0, 11273 call void @op_1_to_0(i32 %t2)1274 ret void1275}1276 1277define void @f317() {1278; CHECK-LABEL: f317:1279; CHECK: .functype f317 () -> ()1280; CHECK-NEXT: .local i32, i321281; CHECK-NEXT: # %bb.0:1282; CHECK-NEXT: call op_0_to_31283; CHECK-NEXT: local.set 11284; CHECK-NEXT: drop1285; CHECK-NEXT: local.set 01286; CHECK-NEXT: local.get 11287; CHECK-NEXT: call op_1_to_01288; CHECK-NEXT: local.get 01289; CHECK-NEXT: local.get 01290; CHECK-NEXT: call op_2_to_01291; CHECK-NEXT: # fallthrough-return1292 %t0 = call {i32, i32, i32} @op_0_to_3()1293 %t1 = extractvalue {i32, i32, i32} %t0, 21294 call void @op_1_to_0(i32 %t1)1295 %t2 = extractvalue {i32, i32, i32} %t0, 01296 %t3 = extractvalue {i32, i32, i32} %t0, 01297 call void @op_2_to_0(i32 %t2, i32 %t3)1298 ret void1299}1300 1301define void @f318() {1302; CHECK-LABEL: f318:1303; CHECK: .functype f318 () -> ()1304; CHECK-NEXT: .local i32, i32, i321305; CHECK-NEXT: # %bb.0:1306; CHECK-NEXT: call op_0_to_31307; CHECK-NEXT: local.set 21308; CHECK-NEXT: local.set 11309; CHECK-NEXT: local.set 01310; CHECK-NEXT: local.get 21311; CHECK-NEXT: call op_1_to_01312; CHECK-NEXT: local.get 01313; CHECK-NEXT: local.get 11314; CHECK-NEXT: call op_2_to_01315; CHECK-NEXT: # fallthrough-return1316 %t0 = call {i32, i32, i32} @op_0_to_3()1317 %t1 = extractvalue {i32, i32, i32} %t0, 21318 call void @op_1_to_0(i32 %t1)1319 %t2 = extractvalue {i32, i32, i32} %t0, 01320 %t3 = extractvalue {i32, i32, i32} %t0, 11321 call void @op_2_to_0(i32 %t2, i32 %t3)1322 ret void1323}1324 1325define void @f319() {1326; CHECK-LABEL: f319:1327; CHECK: .functype f319 () -> ()1328; CHECK-NEXT: .local i32, i321329; CHECK-NEXT: # %bb.0:1330; CHECK-NEXT: call op_0_to_31331; CHECK-NEXT: local.set 11332; CHECK-NEXT: drop1333; CHECK-NEXT: local.set 01334; CHECK-NEXT: local.get 11335; CHECK-NEXT: call op_1_to_01336; CHECK-NEXT: local.get 01337; CHECK-NEXT: local.get 11338; CHECK-NEXT: call op_2_to_01339; CHECK-NEXT: # fallthrough-return1340 %t0 = call {i32, i32, i32} @op_0_to_3()1341 %t1 = extractvalue {i32, i32, i32} %t0, 21342 call void @op_1_to_0(i32 %t1)1343 %t2 = extractvalue {i32, i32, i32} %t0, 01344 %t3 = extractvalue {i32, i32, i32} %t0, 21345 call void @op_2_to_0(i32 %t2, i32 %t3)1346 ret void1347}1348 1349define void @f320() {1350; CHECK-LABEL: f320:1351; CHECK: .functype f320 () -> ()1352; CHECK-NEXT: .local i32, i32, i321353; CHECK-NEXT: # %bb.0:1354; CHECK-NEXT: call op_0_to_31355; CHECK-NEXT: local.set 21356; CHECK-NEXT: local.set 11357; CHECK-NEXT: local.set 01358; CHECK-NEXT: local.get 21359; CHECK-NEXT: call op_1_to_01360; CHECK-NEXT: local.get 11361; CHECK-NEXT: local.get 01362; CHECK-NEXT: call op_2_to_01363; CHECK-NEXT: # fallthrough-return1364 %t0 = call {i32, i32, i32} @op_0_to_3()1365 %t1 = extractvalue {i32, i32, i32} %t0, 21366 call void @op_1_to_0(i32 %t1)1367 %t2 = extractvalue {i32, i32, i32} %t0, 11368 %t3 = extractvalue {i32, i32, i32} %t0, 01369 call void @op_2_to_0(i32 %t2, i32 %t3)1370 ret void1371}1372 1373define void @f321() {1374; CHECK-LABEL: f321:1375; CHECK: .functype f321 () -> ()1376; CHECK-NEXT: .local i32, i321377; CHECK-NEXT: # %bb.0:1378; CHECK-NEXT: call op_0_to_31379; CHECK-NEXT: local.set 11380; CHECK-NEXT: local.set 01381; CHECK-NEXT: drop1382; CHECK-NEXT: local.get 11383; CHECK-NEXT: call op_1_to_01384; CHECK-NEXT: local.get 01385; CHECK-NEXT: local.get 01386; CHECK-NEXT: call op_2_to_01387; CHECK-NEXT: # fallthrough-return1388 %t0 = call {i32, i32, i32} @op_0_to_3()1389 %t1 = extractvalue {i32, i32, i32} %t0, 21390 call void @op_1_to_0(i32 %t1)1391 %t2 = extractvalue {i32, i32, i32} %t0, 11392 %t3 = extractvalue {i32, i32, i32} %t0, 11393 call void @op_2_to_0(i32 %t2, i32 %t3)1394 ret void1395}1396 1397define void @f322() {1398; CHECK-LABEL: f322:1399; CHECK: .functype f322 () -> ()1400; CHECK-NEXT: .local i32, i321401; CHECK-NEXT: # %bb.0:1402; CHECK-NEXT: call op_0_to_31403; CHECK-NEXT: local.set 11404; CHECK-NEXT: local.set 01405; CHECK-NEXT: drop1406; CHECK-NEXT: local.get 11407; CHECK-NEXT: call op_1_to_01408; CHECK-NEXT: local.get 01409; CHECK-NEXT: local.get 11410; CHECK-NEXT: call op_2_to_01411; CHECK-NEXT: # fallthrough-return1412 %t0 = call {i32, i32, i32} @op_0_to_3()1413 %t1 = extractvalue {i32, i32, i32} %t0, 21414 call void @op_1_to_0(i32 %t1)1415 %t2 = extractvalue {i32, i32, i32} %t0, 11416 %t3 = extractvalue {i32, i32, i32} %t0, 21417 call void @op_2_to_0(i32 %t2, i32 %t3)1418 ret void1419}1420 1421define void @f323() {1422; CHECK-LABEL: f323:1423; CHECK: .functype f323 () -> ()1424; CHECK-NEXT: .local i32, i321425; CHECK-NEXT: # %bb.0:1426; CHECK-NEXT: call op_0_to_31427; CHECK-NEXT: local.set 11428; CHECK-NEXT: drop1429; CHECK-NEXT: local.set 01430; CHECK-NEXT: local.get 11431; CHECK-NEXT: call op_1_to_01432; CHECK-NEXT: local.get 11433; CHECK-NEXT: local.get 01434; CHECK-NEXT: call op_2_to_01435; CHECK-NEXT: # fallthrough-return1436 %t0 = call {i32, i32, i32} @op_0_to_3()1437 %t1 = extractvalue {i32, i32, i32} %t0, 21438 call void @op_1_to_0(i32 %t1)1439 %t2 = extractvalue {i32, i32, i32} %t0, 21440 %t3 = extractvalue {i32, i32, i32} %t0, 01441 call void @op_2_to_0(i32 %t2, i32 %t3)1442 ret void1443}1444 1445define void @f324() {1446; CHECK-LABEL: f324:1447; CHECK: .functype f324 () -> ()1448; CHECK-NEXT: .local i32, i321449; CHECK-NEXT: # %bb.0:1450; CHECK-NEXT: call op_0_to_31451; CHECK-NEXT: local.set 11452; CHECK-NEXT: local.set 01453; CHECK-NEXT: drop1454; CHECK-NEXT: local.get 11455; CHECK-NEXT: call op_1_to_01456; CHECK-NEXT: local.get 11457; CHECK-NEXT: local.get 01458; CHECK-NEXT: call op_2_to_01459; CHECK-NEXT: # fallthrough-return1460 %t0 = call {i32, i32, i32} @op_0_to_3()1461 %t1 = extractvalue {i32, i32, i32} %t0, 21462 call void @op_1_to_0(i32 %t1)1463 %t2 = extractvalue {i32, i32, i32} %t0, 21464 %t3 = extractvalue {i32, i32, i32} %t0, 11465 call void @op_2_to_0(i32 %t2, i32 %t3)1466 ret void1467}1468 1469define void @f327() {1470; CHECK-LABEL: f327:1471; CHECK: .functype f327 () -> ()1472; CHECK-NEXT: .local i32, i321473; CHECK-NEXT: # %bb.0:1474; CHECK-NEXT: call op_0_to_31475; CHECK-NEXT: drop1476; CHECK-NEXT: local.set 01477; CHECK-NEXT: local.tee 11478; CHECK-NEXT: local.get 11479; CHECK-NEXT: call op_2_to_01480; CHECK-NEXT: local.get 01481; CHECK-NEXT: call op_1_to_01482; CHECK-NEXT: # fallthrough-return1483 %t0 = call {i32, i32, i32} @op_0_to_3()1484 %t1 = extractvalue {i32, i32, i32} %t0, 01485 %t2 = extractvalue {i32, i32, i32} %t0, 01486 call void @op_2_to_0(i32 %t1, i32 %t2)1487 %t3 = extractvalue {i32, i32, i32} %t0, 11488 call void @op_1_to_0(i32 %t3)1489 ret void1490}1491 1492define void @f328() {1493; CHECK-LABEL: f328:1494; CHECK: .functype f328 () -> ()1495; CHECK-NEXT: .local i32, i321496; CHECK-NEXT: # %bb.0:1497; CHECK-NEXT: call op_0_to_31498; CHECK-NEXT: local.set 01499; CHECK-NEXT: drop1500; CHECK-NEXT: local.tee 11501; CHECK-NEXT: local.get 11502; CHECK-NEXT: call op_2_to_01503; CHECK-NEXT: local.get 01504; CHECK-NEXT: call op_1_to_01505; CHECK-NEXT: # fallthrough-return1506 %t0 = call {i32, i32, i32} @op_0_to_3()1507 %t1 = extractvalue {i32, i32, i32} %t0, 01508 %t2 = extractvalue {i32, i32, i32} %t0, 01509 call void @op_2_to_0(i32 %t1, i32 %t2)1510 %t3 = extractvalue {i32, i32, i32} %t0, 21511 call void @op_1_to_0(i32 %t3)1512 ret void1513}1514 1515define void @f333() {1516; CHECK-LABEL: f333:1517; CHECK: .functype f333 () -> ()1518; CHECK-NEXT: .local i32, i321519; CHECK-NEXT: # %bb.0:1520; CHECK-NEXT: call op_0_to_31521; CHECK-NEXT: drop1522; CHECK-NEXT: local.set 01523; CHECK-NEXT: local.tee 11524; CHECK-NEXT: local.get 11525; CHECK-NEXT: call op_2_to_01526; CHECK-NEXT: local.get 01527; CHECK-NEXT: local.get 01528; CHECK-NEXT: call op_2_to_01529; CHECK-NEXT: # fallthrough-return1530 %t0 = call {i32, i32, i32} @op_0_to_3()1531 %t1 = extractvalue {i32, i32, i32} %t0, 01532 %t2 = extractvalue {i32, i32, i32} %t0, 01533 call void @op_2_to_0(i32 %t1, i32 %t2)1534 %t3 = extractvalue {i32, i32, i32} %t0, 11535 %t4 = extractvalue {i32, i32, i32} %t0, 11536 call void @op_2_to_0(i32 %t3, i32 %t4)1537 ret void1538}1539 1540define void @f334() {1541; CHECK-LABEL: f334:1542; CHECK: .functype f334 () -> ()1543; CHECK-NEXT: .local i32, i32, i321544; CHECK-NEXT: # %bb.0:1545; CHECK-NEXT: call op_0_to_31546; CHECK-NEXT: local.set 11547; CHECK-NEXT: local.set 01548; CHECK-NEXT: local.tee 21549; CHECK-NEXT: local.get 21550; CHECK-NEXT: call op_2_to_01551; CHECK-NEXT: local.get 01552; CHECK-NEXT: local.get 11553; CHECK-NEXT: call op_2_to_01554; CHECK-NEXT: # fallthrough-return1555 %t0 = call {i32, i32, i32} @op_0_to_3()1556 %t1 = extractvalue {i32, i32, i32} %t0, 01557 %t2 = extractvalue {i32, i32, i32} %t0, 01558 call void @op_2_to_0(i32 %t1, i32 %t2)1559 %t3 = extractvalue {i32, i32, i32} %t0, 11560 %t4 = extractvalue {i32, i32, i32} %t0, 21561 call void @op_2_to_0(i32 %t3, i32 %t4)1562 ret void1563}1564 1565define void @f336() {1566; CHECK-LABEL: f336:1567; CHECK: .functype f336 () -> ()1568; CHECK-NEXT: .local i32, i32, i321569; CHECK-NEXT: # %bb.0:1570; CHECK-NEXT: call op_0_to_31571; CHECK-NEXT: local.set 11572; CHECK-NEXT: local.set 01573; CHECK-NEXT: local.tee 21574; CHECK-NEXT: local.get 21575; CHECK-NEXT: call op_2_to_01576; CHECK-NEXT: local.get 11577; CHECK-NEXT: local.get 01578; CHECK-NEXT: call op_2_to_01579; CHECK-NEXT: # fallthrough-return1580 %t0 = call {i32, i32, i32} @op_0_to_3()1581 %t1 = extractvalue {i32, i32, i32} %t0, 01582 %t2 = extractvalue {i32, i32, i32} %t0, 01583 call void @op_2_to_0(i32 %t1, i32 %t2)1584 %t3 = extractvalue {i32, i32, i32} %t0, 21585 %t4 = extractvalue {i32, i32, i32} %t0, 11586 call void @op_2_to_0(i32 %t3, i32 %t4)1587 ret void1588}1589 1590define void @f337() {1591; CHECK-LABEL: f337:1592; CHECK: .functype f337 () -> ()1593; CHECK-NEXT: .local i32, i321594; CHECK-NEXT: # %bb.0:1595; CHECK-NEXT: call op_0_to_31596; CHECK-NEXT: local.set 01597; CHECK-NEXT: drop1598; CHECK-NEXT: local.tee 11599; CHECK-NEXT: local.get 11600; CHECK-NEXT: call op_2_to_01601; CHECK-NEXT: local.get 01602; CHECK-NEXT: local.get 01603; CHECK-NEXT: call op_2_to_01604; CHECK-NEXT: # fallthrough-return1605 %t0 = call {i32, i32, i32} @op_0_to_3()1606 %t1 = extractvalue {i32, i32, i32} %t0, 01607 %t2 = extractvalue {i32, i32, i32} %t0, 01608 call void @op_2_to_0(i32 %t1, i32 %t2)1609 %t3 = extractvalue {i32, i32, i32} %t0, 21610 %t4 = extractvalue {i32, i32, i32} %t0, 21611 call void @op_2_to_0(i32 %t3, i32 %t4)1612 ret void1613}1614 1615define void @f338() {1616; CHECK-LABEL: f338:1617; CHECK: .functype f338 () -> ()1618; CHECK-NEXT: .local i32, i321619; CHECK-NEXT: # %bb.0:1620; CHECK-NEXT: call op_0_to_31621; CHECK-NEXT: drop1622; CHECK-NEXT: local.set 01623; CHECK-NEXT: local.tee 11624; CHECK-NEXT: local.get 01625; CHECK-NEXT: call op_2_to_01626; CHECK-NEXT: local.get 11627; CHECK-NEXT: call op_1_to_01628; CHECK-NEXT: # fallthrough-return1629 %t0 = call {i32, i32, i32} @op_0_to_3()1630 %t1 = extractvalue {i32, i32, i32} %t0, 01631 %t2 = extractvalue {i32, i32, i32} %t0, 11632 call void @op_2_to_0(i32 %t1, i32 %t2)1633 %t3 = extractvalue {i32, i32, i32} %t0, 01634 call void @op_1_to_0(i32 %t3)1635 ret void1636}1637 1638define void @f339() {1639; CHECK-LABEL: f339:1640; CHECK: .functype f339 () -> ()1641; CHECK-NEXT: .local i321642; CHECK-NEXT: # %bb.0:1643; CHECK-NEXT: call op_0_to_31644; CHECK-NEXT: drop1645; CHECK-NEXT: local.set 01646; CHECK-NEXT: local.get 01647; CHECK-NEXT: call op_2_to_01648; CHECK-NEXT: local.get 01649; CHECK-NEXT: call op_1_to_01650; CHECK-NEXT: # fallthrough-return1651 %t0 = call {i32, i32, i32} @op_0_to_3()1652 %t1 = extractvalue {i32, i32, i32} %t0, 01653 %t2 = extractvalue {i32, i32, i32} %t0, 11654 call void @op_2_to_0(i32 %t1, i32 %t2)1655 %t3 = extractvalue {i32, i32, i32} %t0, 11656 call void @op_1_to_0(i32 %t3)1657 ret void1658}1659 1660define void @f340() {1661; CHECK-LABEL: f340:1662; CHECK: .functype f340 () -> ()1663; CHECK-NEXT: .local i321664; CHECK-NEXT: # %bb.0:1665; CHECK-NEXT: call op_0_to_31666; CHECK-NEXT: local.set 01667; CHECK-NEXT: call op_2_to_01668; CHECK-NEXT: local.get 01669; CHECK-NEXT: call op_1_to_01670; CHECK-NEXT: # fallthrough-return1671 %t0 = call {i32, i32, i32} @op_0_to_3()1672 %t1 = extractvalue {i32, i32, i32} %t0, 01673 %t2 = extractvalue {i32, i32, i32} %t0, 11674 call void @op_2_to_0(i32 %t1, i32 %t2)1675 %t3 = extractvalue {i32, i32, i32} %t0, 21676 call void @op_1_to_0(i32 %t3)1677 ret void1678}1679 1680define void @f343() {1681; CHECK-LABEL: f343:1682; CHECK: .functype f343 () -> ()1683; CHECK-NEXT: .local i32, i32, i321684; CHECK-NEXT: # %bb.0:1685; CHECK-NEXT: call op_0_to_31686; CHECK-NEXT: local.set 11687; CHECK-NEXT: local.set 01688; CHECK-NEXT: local.tee 21689; CHECK-NEXT: local.get 01690; CHECK-NEXT: call op_2_to_01691; CHECK-NEXT: local.get 21692; CHECK-NEXT: local.get 11693; CHECK-NEXT: call op_2_to_01694; CHECK-NEXT: # fallthrough-return1695 %t0 = call {i32, i32, i32} @op_0_to_3()1696 %t1 = extractvalue {i32, i32, i32} %t0, 01697 %t2 = extractvalue {i32, i32, i32} %t0, 11698 call void @op_2_to_0(i32 %t1, i32 %t2)1699 %t3 = extractvalue {i32, i32, i32} %t0, 01700 %t4 = extractvalue {i32, i32, i32} %t0, 21701 call void @op_2_to_0(i32 %t3, i32 %t4)1702 ret void1703}1704 1705define void @f344() {1706; CHECK-LABEL: f344:1707; CHECK: .functype f344 () -> ()1708; CHECK-NEXT: .local i32, i321709; CHECK-NEXT: # %bb.0:1710; CHECK-NEXT: call op_0_to_31711; CHECK-NEXT: drop1712; CHECK-NEXT: local.set 01713; CHECK-NEXT: local.tee 11714; CHECK-NEXT: local.get 01715; CHECK-NEXT: call op_2_to_01716; CHECK-NEXT: local.get 01717; CHECK-NEXT: local.get 11718; CHECK-NEXT: call op_2_to_01719; CHECK-NEXT: # fallthrough-return1720 %t0 = call {i32, i32, i32} @op_0_to_3()1721 %t1 = extractvalue {i32, i32, i32} %t0, 01722 %t2 = extractvalue {i32, i32, i32} %t0, 11723 call void @op_2_to_0(i32 %t1, i32 %t2)1724 %t3 = extractvalue {i32, i32, i32} %t0, 11725 %t4 = extractvalue {i32, i32, i32} %t0, 01726 call void @op_2_to_0(i32 %t3, i32 %t4)1727 ret void1728}1729 1730define void @f346() {1731; CHECK-LABEL: f346:1732; CHECK: .functype f346 () -> ()1733; CHECK-NEXT: .local i32, i321734; CHECK-NEXT: # %bb.0:1735; CHECK-NEXT: call op_0_to_31736; CHECK-NEXT: local.set 11737; CHECK-NEXT: local.set 01738; CHECK-NEXT: local.get 01739; CHECK-NEXT: call op_2_to_01740; CHECK-NEXT: local.get 01741; CHECK-NEXT: local.get 11742; CHECK-NEXT: call op_2_to_01743; CHECK-NEXT: # fallthrough-return1744 %t0 = call {i32, i32, i32} @op_0_to_3()1745 %t1 = extractvalue {i32, i32, i32} %t0, 01746 %t2 = extractvalue {i32, i32, i32} %t0, 11747 call void @op_2_to_0(i32 %t1, i32 %t2)1748 %t3 = extractvalue {i32, i32, i32} %t0, 11749 %t4 = extractvalue {i32, i32, i32} %t0, 21750 call void @op_2_to_0(i32 %t3, i32 %t4)1751 ret void1752}1753 1754define void @f347() {1755; CHECK-LABEL: f347:1756; CHECK: .functype f347 () -> ()1757; CHECK-NEXT: .local i32, i32, i321758; CHECK-NEXT: # %bb.0:1759; CHECK-NEXT: call op_0_to_31760; CHECK-NEXT: local.set 11761; CHECK-NEXT: local.set 01762; CHECK-NEXT: local.tee 21763; CHECK-NEXT: local.get 01764; CHECK-NEXT: call op_2_to_01765; CHECK-NEXT: local.get 11766; CHECK-NEXT: local.get 21767; CHECK-NEXT: call op_2_to_01768; CHECK-NEXT: # fallthrough-return1769 %t0 = call {i32, i32, i32} @op_0_to_3()1770 %t1 = extractvalue {i32, i32, i32} %t0, 01771 %t2 = extractvalue {i32, i32, i32} %t0, 11772 call void @op_2_to_0(i32 %t1, i32 %t2)1773 %t3 = extractvalue {i32, i32, i32} %t0, 21774 %t4 = extractvalue {i32, i32, i32} %t0, 01775 call void @op_2_to_0(i32 %t3, i32 %t4)1776 ret void1777}1778 1779define void @f348() {1780; CHECK-LABEL: f348:1781; CHECK: .functype f348 () -> ()1782; CHECK-NEXT: .local i32, i321783; CHECK-NEXT: # %bb.0:1784; CHECK-NEXT: call op_0_to_31785; CHECK-NEXT: local.set 11786; CHECK-NEXT: local.set 01787; CHECK-NEXT: local.get 01788; CHECK-NEXT: call op_2_to_01789; CHECK-NEXT: local.get 11790; CHECK-NEXT: local.get 01791; CHECK-NEXT: call op_2_to_01792; CHECK-NEXT: # fallthrough-return1793 %t0 = call {i32, i32, i32} @op_0_to_3()1794 %t1 = extractvalue {i32, i32, i32} %t0, 01795 %t2 = extractvalue {i32, i32, i32} %t0, 11796 call void @op_2_to_0(i32 %t1, i32 %t2)1797 %t3 = extractvalue {i32, i32, i32} %t0, 21798 %t4 = extractvalue {i32, i32, i32} %t0, 11799 call void @op_2_to_0(i32 %t3, i32 %t4)1800 ret void1801}1802 1803define void @f349() {1804; CHECK-LABEL: f349:1805; CHECK: .functype f349 () -> ()1806; CHECK-NEXT: .local i321807; CHECK-NEXT: # %bb.0:1808; CHECK-NEXT: call op_0_to_31809; CHECK-NEXT: local.set 01810; CHECK-NEXT: call op_2_to_01811; CHECK-NEXT: local.get 01812; CHECK-NEXT: local.get 01813; CHECK-NEXT: call op_2_to_01814; CHECK-NEXT: # fallthrough-return1815 %t0 = call {i32, i32, i32} @op_0_to_3()1816 %t1 = extractvalue {i32, i32, i32} %t0, 01817 %t2 = extractvalue {i32, i32, i32} %t0, 11818 call void @op_2_to_0(i32 %t1, i32 %t2)1819 %t3 = extractvalue {i32, i32, i32} %t0, 21820 %t4 = extractvalue {i32, i32, i32} %t0, 21821 call void @op_2_to_0(i32 %t3, i32 %t4)1822 ret void1823}1824 1825define void @f350() {1826; CHECK-LABEL: f350:1827; CHECK: .functype f350 () -> ()1828; CHECK-NEXT: .local i32, i321829; CHECK-NEXT: # %bb.0:1830; CHECK-NEXT: call op_0_to_31831; CHECK-NEXT: local.set 01832; CHECK-NEXT: drop1833; CHECK-NEXT: local.tee 11834; CHECK-NEXT: local.get 01835; CHECK-NEXT: call op_2_to_01836; CHECK-NEXT: local.get 11837; CHECK-NEXT: call op_1_to_01838; CHECK-NEXT: # fallthrough-return1839 %t0 = call {i32, i32, i32} @op_0_to_3()1840 %t1 = extractvalue {i32, i32, i32} %t0, 01841 %t2 = extractvalue {i32, i32, i32} %t0, 21842 call void @op_2_to_0(i32 %t1, i32 %t2)1843 %t3 = extractvalue {i32, i32, i32} %t0, 01844 call void @op_1_to_0(i32 %t3)1845 ret void1846}1847 1848define void @f351() {1849; CHECK-LABEL: f351:1850; CHECK: .functype f351 () -> ()1851; CHECK-NEXT: .local i32, i321852; CHECK-NEXT: # %bb.0:1853; CHECK-NEXT: call op_0_to_31854; CHECK-NEXT: local.set 11855; CHECK-NEXT: local.set 01856; CHECK-NEXT: local.get 11857; CHECK-NEXT: call op_2_to_01858; CHECK-NEXT: local.get 01859; CHECK-NEXT: call op_1_to_01860; CHECK-NEXT: # fallthrough-return1861 %t0 = call {i32, i32, i32} @op_0_to_3()1862 %t1 = extractvalue {i32, i32, i32} %t0, 01863 %t2 = extractvalue {i32, i32, i32} %t0, 21864 call void @op_2_to_0(i32 %t1, i32 %t2)1865 %t3 = extractvalue {i32, i32, i32} %t0, 11866 call void @op_1_to_0(i32 %t3)1867 ret void1868}1869 1870define void @f352() {1871; CHECK-LABEL: f352:1872; CHECK: .functype f352 () -> ()1873; CHECK-NEXT: .local i321874; CHECK-NEXT: # %bb.0:1875; CHECK-NEXT: call op_0_to_31876; CHECK-NEXT: local.set 01877; CHECK-NEXT: drop1878; CHECK-NEXT: local.get 01879; CHECK-NEXT: call op_2_to_01880; CHECK-NEXT: local.get 01881; CHECK-NEXT: call op_1_to_01882; CHECK-NEXT: # fallthrough-return1883 %t0 = call {i32, i32, i32} @op_0_to_3()1884 %t1 = extractvalue {i32, i32, i32} %t0, 01885 %t2 = extractvalue {i32, i32, i32} %t0, 21886 call void @op_2_to_0(i32 %t1, i32 %t2)1887 %t3 = extractvalue {i32, i32, i32} %t0, 21888 call void @op_1_to_0(i32 %t3)1889 ret void1890}1891 1892define void @f354() {1893; CHECK-LABEL: f354:1894; CHECK: .functype f354 () -> ()1895; CHECK-NEXT: .local i32, i32, i321896; CHECK-NEXT: # %bb.0:1897; CHECK-NEXT: call op_0_to_31898; CHECK-NEXT: local.set 11899; CHECK-NEXT: local.set 01900; CHECK-NEXT: local.tee 21901; CHECK-NEXT: local.get 11902; CHECK-NEXT: call op_2_to_01903; CHECK-NEXT: local.get 21904; CHECK-NEXT: local.get 01905; CHECK-NEXT: call op_2_to_01906; CHECK-NEXT: # fallthrough-return1907 %t0 = call {i32, i32, i32} @op_0_to_3()1908 %t1 = extractvalue {i32, i32, i32} %t0, 01909 %t2 = extractvalue {i32, i32, i32} %t0, 21910 call void @op_2_to_0(i32 %t1, i32 %t2)1911 %t3 = extractvalue {i32, i32, i32} %t0, 01912 %t4 = extractvalue {i32, i32, i32} %t0, 11913 call void @op_2_to_0(i32 %t3, i32 %t4)1914 ret void1915}1916 1917define void @f356() {1918; CHECK-LABEL: f356:1919; CHECK: .functype f356 () -> ()1920; CHECK-NEXT: .local i32, i32, i321921; CHECK-NEXT: # %bb.0:1922; CHECK-NEXT: call op_0_to_31923; CHECK-NEXT: local.set 11924; CHECK-NEXT: local.set 01925; CHECK-NEXT: local.tee 21926; CHECK-NEXT: local.get 11927; CHECK-NEXT: call op_2_to_01928; CHECK-NEXT: local.get 01929; CHECK-NEXT: local.get 21930; CHECK-NEXT: call op_2_to_01931; CHECK-NEXT: # fallthrough-return1932 %t0 = call {i32, i32, i32} @op_0_to_3()1933 %t1 = extractvalue {i32, i32, i32} %t0, 01934 %t2 = extractvalue {i32, i32, i32} %t0, 21935 call void @op_2_to_0(i32 %t1, i32 %t2)1936 %t3 = extractvalue {i32, i32, i32} %t0, 11937 %t4 = extractvalue {i32, i32, i32} %t0, 01938 call void @op_2_to_0(i32 %t3, i32 %t4)1939 ret void1940}1941 1942define void @f357() {1943; CHECK-LABEL: f357:1944; CHECK: .functype f357 () -> ()1945; CHECK-NEXT: .local i32, i321946; CHECK-NEXT: # %bb.0:1947; CHECK-NEXT: call op_0_to_31948; CHECK-NEXT: local.set 11949; CHECK-NEXT: local.set 01950; CHECK-NEXT: local.get 11951; CHECK-NEXT: call op_2_to_01952; CHECK-NEXT: local.get 01953; CHECK-NEXT: local.get 01954; CHECK-NEXT: call op_2_to_01955; CHECK-NEXT: # fallthrough-return1956 %t0 = call {i32, i32, i32} @op_0_to_3()1957 %t1 = extractvalue {i32, i32, i32} %t0, 01958 %t2 = extractvalue {i32, i32, i32} %t0, 21959 call void @op_2_to_0(i32 %t1, i32 %t2)1960 %t3 = extractvalue {i32, i32, i32} %t0, 11961 %t4 = extractvalue {i32, i32, i32} %t0, 11962 call void @op_2_to_0(i32 %t3, i32 %t4)1963 ret void1964}1965 1966define void @f358() {1967; CHECK-LABEL: f358:1968; CHECK: .functype f358 () -> ()1969; CHECK-NEXT: .local i32, i321970; CHECK-NEXT: # %bb.0:1971; CHECK-NEXT: call op_0_to_31972; CHECK-NEXT: local.set 11973; CHECK-NEXT: local.set 01974; CHECK-NEXT: local.get 11975; CHECK-NEXT: call op_2_to_01976; CHECK-NEXT: local.get 01977; CHECK-NEXT: local.get 11978; CHECK-NEXT: call op_2_to_01979; CHECK-NEXT: # fallthrough-return1980 %t0 = call {i32, i32, i32} @op_0_to_3()1981 %t1 = extractvalue {i32, i32, i32} %t0, 01982 %t2 = extractvalue {i32, i32, i32} %t0, 21983 call void @op_2_to_0(i32 %t1, i32 %t2)1984 %t3 = extractvalue {i32, i32, i32} %t0, 11985 %t4 = extractvalue {i32, i32, i32} %t0, 21986 call void @op_2_to_0(i32 %t3, i32 %t4)1987 ret void1988}1989 1990define void @f359() {1991; CHECK-LABEL: f359:1992; CHECK: .functype f359 () -> ()1993; CHECK-NEXT: .local i32, i321994; CHECK-NEXT: # %bb.0:1995; CHECK-NEXT: call op_0_to_31996; CHECK-NEXT: local.set 01997; CHECK-NEXT: drop1998; CHECK-NEXT: local.tee 11999; CHECK-NEXT: local.get 02000; CHECK-NEXT: call op_2_to_02001; CHECK-NEXT: local.get 02002; CHECK-NEXT: local.get 12003; CHECK-NEXT: call op_2_to_02004; CHECK-NEXT: # fallthrough-return2005 %t0 = call {i32, i32, i32} @op_0_to_3()2006 %t1 = extractvalue {i32, i32, i32} %t0, 02007 %t2 = extractvalue {i32, i32, i32} %t0, 22008 call void @op_2_to_0(i32 %t1, i32 %t2)2009 %t3 = extractvalue {i32, i32, i32} %t0, 22010 %t4 = extractvalue {i32, i32, i32} %t0, 02011 call void @op_2_to_0(i32 %t3, i32 %t4)2012 ret void2013}2014 2015define void @f360() {2016; CHECK-LABEL: f360:2017; CHECK: .functype f360 () -> ()2018; CHECK-NEXT: .local i32, i322019; CHECK-NEXT: # %bb.0:2020; CHECK-NEXT: call op_0_to_32021; CHECK-NEXT: local.set 12022; CHECK-NEXT: local.set 02023; CHECK-NEXT: local.get 12024; CHECK-NEXT: call op_2_to_02025; CHECK-NEXT: local.get 12026; CHECK-NEXT: local.get 02027; CHECK-NEXT: call op_2_to_02028; CHECK-NEXT: # fallthrough-return2029 %t0 = call {i32, i32, i32} @op_0_to_3()2030 %t1 = extractvalue {i32, i32, i32} %t0, 02031 %t2 = extractvalue {i32, i32, i32} %t0, 22032 call void @op_2_to_0(i32 %t1, i32 %t2)2033 %t3 = extractvalue {i32, i32, i32} %t0, 22034 %t4 = extractvalue {i32, i32, i32} %t0, 12035 call void @op_2_to_0(i32 %t3, i32 %t4)2036 ret void2037}2038 2039define void @f362() {2040; CHECK-LABEL: f362:2041; CHECK: .functype f362 () -> ()2042; CHECK-NEXT: .local i32, i322043; CHECK-NEXT: # %bb.0:2044; CHECK-NEXT: call op_0_to_32045; CHECK-NEXT: drop2046; CHECK-NEXT: local.set 12047; CHECK-NEXT: local.set 02048; CHECK-NEXT: local.get 12049; CHECK-NEXT: local.get 02050; CHECK-NEXT: call op_2_to_02051; CHECK-NEXT: local.get 02052; CHECK-NEXT: call op_1_to_02053; CHECK-NEXT: # fallthrough-return2054 %t0 = call {i32, i32, i32} @op_0_to_3()2055 %t1 = extractvalue {i32, i32, i32} %t0, 12056 %t2 = extractvalue {i32, i32, i32} %t0, 02057 call void @op_2_to_0(i32 %t1, i32 %t2)2058 %t3 = extractvalue {i32, i32, i32} %t0, 02059 call void @op_1_to_0(i32 %t3)2060 ret void2061}2062 2063define void @f363() {2064; CHECK-LABEL: f363:2065; CHECK: .functype f363 () -> ()2066; CHECK-NEXT: .local i32, i322067; CHECK-NEXT: # %bb.0:2068; CHECK-NEXT: call op_0_to_32069; CHECK-NEXT: drop2070; CHECK-NEXT: local.set 12071; CHECK-NEXT: local.set 02072; CHECK-NEXT: local.get 12073; CHECK-NEXT: local.get 02074; CHECK-NEXT: call op_2_to_02075; CHECK-NEXT: local.get 12076; CHECK-NEXT: call op_1_to_02077; CHECK-NEXT: # fallthrough-return2078 %t0 = call {i32, i32, i32} @op_0_to_3()2079 %t1 = extractvalue {i32, i32, i32} %t0, 12080 %t2 = extractvalue {i32, i32, i32} %t0, 02081 call void @op_2_to_0(i32 %t1, i32 %t2)2082 %t3 = extractvalue {i32, i32, i32} %t0, 12083 call void @op_1_to_0(i32 %t3)2084 ret void2085}2086 2087define void @f364() {2088; CHECK-LABEL: f364:2089; CHECK: .functype f364 () -> ()2090; CHECK-NEXT: .local i32, i32, i322091; CHECK-NEXT: # %bb.0:2092; CHECK-NEXT: call op_0_to_32093; CHECK-NEXT: local.set 22094; CHECK-NEXT: local.set 12095; CHECK-NEXT: local.set 02096; CHECK-NEXT: local.get 12097; CHECK-NEXT: local.get 02098; CHECK-NEXT: call op_2_to_02099; CHECK-NEXT: local.get 22100; CHECK-NEXT: call op_1_to_02101; CHECK-NEXT: # fallthrough-return2102 %t0 = call {i32, i32, i32} @op_0_to_3()2103 %t1 = extractvalue {i32, i32, i32} %t0, 12104 %t2 = extractvalue {i32, i32, i32} %t0, 02105 call void @op_2_to_0(i32 %t1, i32 %t2)2106 %t3 = extractvalue {i32, i32, i32} %t0, 22107 call void @op_1_to_0(i32 %t3)2108 ret void2109}2110 2111define void @f366() {2112; CHECK-LABEL: f366:2113; CHECK: .functype f366 () -> ()2114; CHECK-NEXT: .local i32, i322115; CHECK-NEXT: # %bb.0:2116; CHECK-NEXT: call op_0_to_32117; CHECK-NEXT: drop2118; CHECK-NEXT: local.set 12119; CHECK-NEXT: local.set 02120; CHECK-NEXT: local.get 12121; CHECK-NEXT: local.get 02122; CHECK-NEXT: call op_2_to_02123; CHECK-NEXT: local.get 02124; CHECK-NEXT: local.get 12125; CHECK-NEXT: call op_2_to_02126; CHECK-NEXT: # fallthrough-return2127 %t0 = call {i32, i32, i32} @op_0_to_3()2128 %t1 = extractvalue {i32, i32, i32} %t0, 12129 %t2 = extractvalue {i32, i32, i32} %t0, 02130 call void @op_2_to_0(i32 %t1, i32 %t2)2131 %t3 = extractvalue {i32, i32, i32} %t0, 02132 %t4 = extractvalue {i32, i32, i32} %t0, 12133 call void @op_2_to_0(i32 %t3, i32 %t4)2134 ret void2135}2136 2137define void @f367() {2138; CHECK-LABEL: f367:2139; CHECK: .functype f367 () -> ()2140; CHECK-NEXT: .local i32, i32, i322141; CHECK-NEXT: # %bb.0:2142; CHECK-NEXT: call op_0_to_32143; CHECK-NEXT: local.set 22144; CHECK-NEXT: local.set 12145; CHECK-NEXT: local.set 02146; CHECK-NEXT: local.get 12147; CHECK-NEXT: local.get 02148; CHECK-NEXT: call op_2_to_02149; CHECK-NEXT: local.get 02150; CHECK-NEXT: local.get 22151; CHECK-NEXT: call op_2_to_02152; CHECK-NEXT: # fallthrough-return2153 %t0 = call {i32, i32, i32} @op_0_to_3()2154 %t1 = extractvalue {i32, i32, i32} %t0, 12155 %t2 = extractvalue {i32, i32, i32} %t0, 02156 call void @op_2_to_0(i32 %t1, i32 %t2)2157 %t3 = extractvalue {i32, i32, i32} %t0, 02158 %t4 = extractvalue {i32, i32, i32} %t0, 22159 call void @op_2_to_0(i32 %t3, i32 %t4)2160 ret void2161}2162 2163define void @f370() {2164; CHECK-LABEL: f370:2165; CHECK: .functype f370 () -> ()2166; CHECK-NEXT: .local i32, i32, i322167; CHECK-NEXT: # %bb.0:2168; CHECK-NEXT: call op_0_to_32169; CHECK-NEXT: local.set 22170; CHECK-NEXT: local.set 12171; CHECK-NEXT: local.set 02172; CHECK-NEXT: local.get 12173; CHECK-NEXT: local.get 02174; CHECK-NEXT: call op_2_to_02175; CHECK-NEXT: local.get 12176; CHECK-NEXT: local.get 22177; CHECK-NEXT: call op_2_to_02178; CHECK-NEXT: # fallthrough-return2179 %t0 = call {i32, i32, i32} @op_0_to_3()2180 %t1 = extractvalue {i32, i32, i32} %t0, 12181 %t2 = extractvalue {i32, i32, i32} %t0, 02182 call void @op_2_to_0(i32 %t1, i32 %t2)2183 %t3 = extractvalue {i32, i32, i32} %t0, 12184 %t4 = extractvalue {i32, i32, i32} %t0, 22185 call void @op_2_to_0(i32 %t3, i32 %t4)2186 ret void2187}2188 2189define void @f371() {2190; CHECK-LABEL: f371:2191; CHECK: .functype f371 () -> ()2192; CHECK-NEXT: .local i32, i32, i322193; CHECK-NEXT: # %bb.0:2194; CHECK-NEXT: call op_0_to_32195; CHECK-NEXT: local.set 22196; CHECK-NEXT: local.set 12197; CHECK-NEXT: local.set 02198; CHECK-NEXT: local.get 12199; CHECK-NEXT: local.get 02200; CHECK-NEXT: call op_2_to_02201; CHECK-NEXT: local.get 22202; CHECK-NEXT: local.get 02203; CHECK-NEXT: call op_2_to_02204; CHECK-NEXT: # fallthrough-return2205 %t0 = call {i32, i32, i32} @op_0_to_3()2206 %t1 = extractvalue {i32, i32, i32} %t0, 12207 %t2 = extractvalue {i32, i32, i32} %t0, 02208 call void @op_2_to_0(i32 %t1, i32 %t2)2209 %t3 = extractvalue {i32, i32, i32} %t0, 22210 %t4 = extractvalue {i32, i32, i32} %t0, 02211 call void @op_2_to_0(i32 %t3, i32 %t4)2212 ret void2213}2214 2215define void @f372() {2216; CHECK-LABEL: f372:2217; CHECK: .functype f372 () -> ()2218; CHECK-NEXT: .local i32, i32, i322219; CHECK-NEXT: # %bb.0:2220; CHECK-NEXT: call op_0_to_32221; CHECK-NEXT: local.set 22222; CHECK-NEXT: local.set 12223; CHECK-NEXT: local.set 02224; CHECK-NEXT: local.get 12225; CHECK-NEXT: local.get 02226; CHECK-NEXT: call op_2_to_02227; CHECK-NEXT: local.get 22228; CHECK-NEXT: local.get 12229; CHECK-NEXT: call op_2_to_02230; CHECK-NEXT: # fallthrough-return2231 %t0 = call {i32, i32, i32} @op_0_to_3()2232 %t1 = extractvalue {i32, i32, i32} %t0, 12233 %t2 = extractvalue {i32, i32, i32} %t0, 02234 call void @op_2_to_0(i32 %t1, i32 %t2)2235 %t3 = extractvalue {i32, i32, i32} %t0, 22236 %t4 = extractvalue {i32, i32, i32} %t0, 12237 call void @op_2_to_0(i32 %t3, i32 %t4)2238 ret void2239}2240 2241define void @f373() {2242; CHECK-LABEL: f373:2243; CHECK: .functype f373 () -> ()2244; CHECK-NEXT: .local i32, i32, i322245; CHECK-NEXT: # %bb.0:2246; CHECK-NEXT: call op_0_to_32247; CHECK-NEXT: local.set 22248; CHECK-NEXT: local.set 12249; CHECK-NEXT: local.set 02250; CHECK-NEXT: local.get 12251; CHECK-NEXT: local.get 02252; CHECK-NEXT: call op_2_to_02253; CHECK-NEXT: local.get 22254; CHECK-NEXT: local.get 22255; CHECK-NEXT: call op_2_to_02256; CHECK-NEXT: # fallthrough-return2257 %t0 = call {i32, i32, i32} @op_0_to_3()2258 %t1 = extractvalue {i32, i32, i32} %t0, 12259 %t2 = extractvalue {i32, i32, i32} %t0, 02260 call void @op_2_to_0(i32 %t1, i32 %t2)2261 %t3 = extractvalue {i32, i32, i32} %t0, 22262 %t4 = extractvalue {i32, i32, i32} %t0, 22263 call void @op_2_to_0(i32 %t3, i32 %t4)2264 ret void2265}2266 2267define void @f374() {2268; CHECK-LABEL: f374:2269; CHECK: .functype f374 () -> ()2270; CHECK-NEXT: .local i32, i322271; CHECK-NEXT: # %bb.0:2272; CHECK-NEXT: call op_0_to_32273; CHECK-NEXT: drop2274; CHECK-NEXT: local.set 12275; CHECK-NEXT: local.set 02276; CHECK-NEXT: local.get 12277; CHECK-NEXT: local.get 12278; CHECK-NEXT: call op_2_to_02279; CHECK-NEXT: local.get 02280; CHECK-NEXT: call op_1_to_02281; CHECK-NEXT: # fallthrough-return2282 %t0 = call {i32, i32, i32} @op_0_to_3()2283 %t1 = extractvalue {i32, i32, i32} %t0, 12284 %t2 = extractvalue {i32, i32, i32} %t0, 12285 call void @op_2_to_0(i32 %t1, i32 %t2)2286 %t3 = extractvalue {i32, i32, i32} %t0, 02287 call void @op_1_to_0(i32 %t3)2288 ret void2289}2290 2291define void @f376() {2292; CHECK-LABEL: f376:2293; CHECK: .functype f376 () -> ()2294; CHECK-NEXT: .local i32, i322295; CHECK-NEXT: # %bb.0:2296; CHECK-NEXT: call op_0_to_32297; CHECK-NEXT: local.set 12298; CHECK-NEXT: local.set 02299; CHECK-NEXT: drop2300; CHECK-NEXT: local.get 02301; CHECK-NEXT: local.get 02302; CHECK-NEXT: call op_2_to_02303; CHECK-NEXT: local.get 12304; CHECK-NEXT: call op_1_to_02305; CHECK-NEXT: # fallthrough-return2306 %t0 = call {i32, i32, i32} @op_0_to_3()2307 %t1 = extractvalue {i32, i32, i32} %t0, 12308 %t2 = extractvalue {i32, i32, i32} %t0, 12309 call void @op_2_to_0(i32 %t1, i32 %t2)2310 %t3 = extractvalue {i32, i32, i32} %t0, 22311 call void @op_1_to_0(i32 %t3)2312 ret void2313}2314 2315define void @f377() {2316; CHECK-LABEL: f377:2317; CHECK: .functype f377 () -> ()2318; CHECK-NEXT: .local i32, i322319; CHECK-NEXT: # %bb.0:2320; CHECK-NEXT: call op_0_to_32321; CHECK-NEXT: drop2322; CHECK-NEXT: local.set 12323; CHECK-NEXT: local.set 02324; CHECK-NEXT: local.get 12325; CHECK-NEXT: local.get 12326; CHECK-NEXT: call op_2_to_02327; CHECK-NEXT: local.get 02328; CHECK-NEXT: local.get 02329; CHECK-NEXT: call op_2_to_02330; CHECK-NEXT: # fallthrough-return2331 %t0 = call {i32, i32, i32} @op_0_to_3()2332 %t1 = extractvalue {i32, i32, i32} %t0, 12333 %t2 = extractvalue {i32, i32, i32} %t0, 12334 call void @op_2_to_0(i32 %t1, i32 %t2)2335 %t3 = extractvalue {i32, i32, i32} %t0, 02336 %t4 = extractvalue {i32, i32, i32} %t0, 02337 call void @op_2_to_0(i32 %t3, i32 %t4)2338 ret void2339}2340 2341define void @f379() {2342; CHECK-LABEL: f379:2343; CHECK: .functype f379 () -> ()2344; CHECK-NEXT: .local i32, i32, i322345; CHECK-NEXT: # %bb.0:2346; CHECK-NEXT: call op_0_to_32347; CHECK-NEXT: local.set 22348; CHECK-NEXT: local.set 12349; CHECK-NEXT: local.set 02350; CHECK-NEXT: local.get 12351; CHECK-NEXT: local.get 12352; CHECK-NEXT: call op_2_to_02353; CHECK-NEXT: local.get 02354; CHECK-NEXT: local.get 22355; CHECK-NEXT: call op_2_to_02356; CHECK-NEXT: # fallthrough-return2357 %t0 = call {i32, i32, i32} @op_0_to_3()2358 %t1 = extractvalue {i32, i32, i32} %t0, 12359 %t2 = extractvalue {i32, i32, i32} %t0, 12360 call void @op_2_to_0(i32 %t1, i32 %t2)2361 %t3 = extractvalue {i32, i32, i32} %t0, 02362 %t4 = extractvalue {i32, i32, i32} %t0, 22363 call void @op_2_to_0(i32 %t3, i32 %t4)2364 ret void2365}2366 2367define void @f383() {2368; CHECK-LABEL: f383:2369; CHECK: .functype f383 () -> ()2370; CHECK-NEXT: .local i32, i32, i322371; CHECK-NEXT: # %bb.0:2372; CHECK-NEXT: call op_0_to_32373; CHECK-NEXT: local.set 22374; CHECK-NEXT: local.set 12375; CHECK-NEXT: local.set 02376; CHECK-NEXT: local.get 12377; CHECK-NEXT: local.get 12378; CHECK-NEXT: call op_2_to_02379; CHECK-NEXT: local.get 22380; CHECK-NEXT: local.get 02381; CHECK-NEXT: call op_2_to_02382; CHECK-NEXT: # fallthrough-return2383 %t0 = call {i32, i32, i32} @op_0_to_3()2384 %t1 = extractvalue {i32, i32, i32} %t0, 12385 %t2 = extractvalue {i32, i32, i32} %t0, 12386 call void @op_2_to_0(i32 %t1, i32 %t2)2387 %t3 = extractvalue {i32, i32, i32} %t0, 22388 %t4 = extractvalue {i32, i32, i32} %t0, 02389 call void @op_2_to_0(i32 %t3, i32 %t4)2390 ret void2391}2392 2393define void @f385() {2394; CHECK-LABEL: f385:2395; CHECK: .functype f385 () -> ()2396; CHECK-NEXT: .local i32, i322397; CHECK-NEXT: # %bb.0:2398; CHECK-NEXT: call op_0_to_32399; CHECK-NEXT: local.set 12400; CHECK-NEXT: local.set 02401; CHECK-NEXT: drop2402; CHECK-NEXT: local.get 02403; CHECK-NEXT: local.get 02404; CHECK-NEXT: call op_2_to_02405; CHECK-NEXT: local.get 12406; CHECK-NEXT: local.get 12407; CHECK-NEXT: call op_2_to_02408; CHECK-NEXT: # fallthrough-return2409 %t0 = call {i32, i32, i32} @op_0_to_3()2410 %t1 = extractvalue {i32, i32, i32} %t0, 12411 %t2 = extractvalue {i32, i32, i32} %t0, 12412 call void @op_2_to_0(i32 %t1, i32 %t2)2413 %t3 = extractvalue {i32, i32, i32} %t0, 22414 %t4 = extractvalue {i32, i32, i32} %t0, 22415 call void @op_2_to_0(i32 %t3, i32 %t4)2416 ret void2417}2418 2419define void @f386() {2420; CHECK-LABEL: f386:2421; CHECK: .functype f386 () -> ()2422; CHECK-NEXT: .local i32, i32, i322423; CHECK-NEXT: # %bb.0:2424; CHECK-NEXT: call op_0_to_32425; CHECK-NEXT: local.set 22426; CHECK-NEXT: local.set 12427; CHECK-NEXT: local.set 02428; CHECK-NEXT: local.get 12429; CHECK-NEXT: local.get 22430; CHECK-NEXT: call op_2_to_02431; CHECK-NEXT: local.get 02432; CHECK-NEXT: call op_1_to_02433; CHECK-NEXT: # fallthrough-return2434 %t0 = call {i32, i32, i32} @op_0_to_3()2435 %t1 = extractvalue {i32, i32, i32} %t0, 12436 %t2 = extractvalue {i32, i32, i32} %t0, 22437 call void @op_2_to_0(i32 %t1, i32 %t2)2438 %t3 = extractvalue {i32, i32, i32} %t0, 02439 call void @op_1_to_0(i32 %t3)2440 ret void2441}2442 2443define void @f387() {2444; CHECK-LABEL: f387:2445; CHECK: .functype f387 () -> ()2446; CHECK-NEXT: .local i32, i322447; CHECK-NEXT: # %bb.0:2448; CHECK-NEXT: call op_0_to_32449; CHECK-NEXT: local.set 12450; CHECK-NEXT: local.set 02451; CHECK-NEXT: drop2452; CHECK-NEXT: local.get 02453; CHECK-NEXT: local.get 12454; CHECK-NEXT: call op_2_to_02455; CHECK-NEXT: local.get 02456; CHECK-NEXT: call op_1_to_02457; CHECK-NEXT: # fallthrough-return2458 %t0 = call {i32, i32, i32} @op_0_to_3()2459 %t1 = extractvalue {i32, i32, i32} %t0, 12460 %t2 = extractvalue {i32, i32, i32} %t0, 22461 call void @op_2_to_0(i32 %t1, i32 %t2)2462 %t3 = extractvalue {i32, i32, i32} %t0, 12463 call void @op_1_to_0(i32 %t3)2464 ret void2465}2466 2467define void @f388() {2468; CHECK-LABEL: f388:2469; CHECK: .functype f388 () -> ()2470; CHECK-NEXT: .local i32, i322471; CHECK-NEXT: # %bb.0:2472; CHECK-NEXT: call op_0_to_32473; CHECK-NEXT: local.set 12474; CHECK-NEXT: local.set 02475; CHECK-NEXT: drop2476; CHECK-NEXT: local.get 02477; CHECK-NEXT: local.get 12478; CHECK-NEXT: call op_2_to_02479; CHECK-NEXT: local.get 12480; CHECK-NEXT: call op_1_to_02481; CHECK-NEXT: # fallthrough-return2482 %t0 = call {i32, i32, i32} @op_0_to_3()2483 %t1 = extractvalue {i32, i32, i32} %t0, 12484 %t2 = extractvalue {i32, i32, i32} %t0, 22485 call void @op_2_to_0(i32 %t1, i32 %t2)2486 %t3 = extractvalue {i32, i32, i32} %t0, 22487 call void @op_1_to_0(i32 %t3)2488 ret void2489}2490 2491define void @f389() {2492; CHECK-LABEL: f389:2493; CHECK: .functype f389 () -> ()2494; CHECK-NEXT: .local i32, i32, i322495; CHECK-NEXT: # %bb.0:2496; CHECK-NEXT: call op_0_to_32497; CHECK-NEXT: local.set 22498; CHECK-NEXT: local.set 12499; CHECK-NEXT: local.set 02500; CHECK-NEXT: local.get 12501; CHECK-NEXT: local.get 22502; CHECK-NEXT: call op_2_to_02503; CHECK-NEXT: local.get 02504; CHECK-NEXT: local.get 02505; CHECK-NEXT: call op_2_to_02506; CHECK-NEXT: # fallthrough-return2507 %t0 = call {i32, i32, i32} @op_0_to_3()2508 %t1 = extractvalue {i32, i32, i32} %t0, 12509 %t2 = extractvalue {i32, i32, i32} %t0, 22510 call void @op_2_to_0(i32 %t1, i32 %t2)2511 %t3 = extractvalue {i32, i32, i32} %t0, 02512 %t4 = extractvalue {i32, i32, i32} %t0, 02513 call void @op_2_to_0(i32 %t3, i32 %t4)2514 ret void2515}2516 2517define void @f390() {2518; CHECK-LABEL: f390:2519; CHECK: .functype f390 () -> ()2520; CHECK-NEXT: .local i32, i32, i322521; CHECK-NEXT: # %bb.0:2522; CHECK-NEXT: call op_0_to_32523; CHECK-NEXT: local.set 22524; CHECK-NEXT: local.set 12525; CHECK-NEXT: local.set 02526; CHECK-NEXT: local.get 12527; CHECK-NEXT: local.get 22528; CHECK-NEXT: call op_2_to_02529; CHECK-NEXT: local.get 02530; CHECK-NEXT: local.get 12531; CHECK-NEXT: call op_2_to_02532; CHECK-NEXT: # fallthrough-return2533 %t0 = call {i32, i32, i32} @op_0_to_3()2534 %t1 = extractvalue {i32, i32, i32} %t0, 12535 %t2 = extractvalue {i32, i32, i32} %t0, 22536 call void @op_2_to_0(i32 %t1, i32 %t2)2537 %t3 = extractvalue {i32, i32, i32} %t0, 02538 %t4 = extractvalue {i32, i32, i32} %t0, 12539 call void @op_2_to_0(i32 %t3, i32 %t4)2540 ret void2541}2542 2543define void @f391() {2544; CHECK-LABEL: f391:2545; CHECK: .functype f391 () -> ()2546; CHECK-NEXT: .local i32, i32, i322547; CHECK-NEXT: # %bb.0:2548; CHECK-NEXT: call op_0_to_32549; CHECK-NEXT: local.set 22550; CHECK-NEXT: local.set 12551; CHECK-NEXT: local.set 02552; CHECK-NEXT: local.get 12553; CHECK-NEXT: local.get 22554; CHECK-NEXT: call op_2_to_02555; CHECK-NEXT: local.get 02556; CHECK-NEXT: local.get 22557; CHECK-NEXT: call op_2_to_02558; CHECK-NEXT: # fallthrough-return2559 %t0 = call {i32, i32, i32} @op_0_to_3()2560 %t1 = extractvalue {i32, i32, i32} %t0, 12561 %t2 = extractvalue {i32, i32, i32} %t0, 22562 call void @op_2_to_0(i32 %t1, i32 %t2)2563 %t3 = extractvalue {i32, i32, i32} %t0, 02564 %t4 = extractvalue {i32, i32, i32} %t0, 22565 call void @op_2_to_0(i32 %t3, i32 %t4)2566 ret void2567}2568 2569define void @f392() {2570; CHECK-LABEL: f392:2571; CHECK: .functype f392 () -> ()2572; CHECK-NEXT: .local i32, i32, i322573; CHECK-NEXT: # %bb.0:2574; CHECK-NEXT: call op_0_to_32575; CHECK-NEXT: local.set 22576; CHECK-NEXT: local.set 12577; CHECK-NEXT: local.set 02578; CHECK-NEXT: local.get 12579; CHECK-NEXT: local.get 22580; CHECK-NEXT: call op_2_to_02581; CHECK-NEXT: local.get 12582; CHECK-NEXT: local.get 02583; CHECK-NEXT: call op_2_to_02584; CHECK-NEXT: # fallthrough-return2585 %t0 = call {i32, i32, i32} @op_0_to_3()2586 %t1 = extractvalue {i32, i32, i32} %t0, 12587 %t2 = extractvalue {i32, i32, i32} %t0, 22588 call void @op_2_to_0(i32 %t1, i32 %t2)2589 %t3 = extractvalue {i32, i32, i32} %t0, 12590 %t4 = extractvalue {i32, i32, i32} %t0, 02591 call void @op_2_to_0(i32 %t3, i32 %t4)2592 ret void2593}2594 2595define void @f395() {2596; CHECK-LABEL: f395:2597; CHECK: .functype f395 () -> ()2598; CHECK-NEXT: .local i32, i32, i322599; CHECK-NEXT: # %bb.0:2600; CHECK-NEXT: call op_0_to_32601; CHECK-NEXT: local.set 22602; CHECK-NEXT: local.set 12603; CHECK-NEXT: local.set 02604; CHECK-NEXT: local.get 12605; CHECK-NEXT: local.get 22606; CHECK-NEXT: call op_2_to_02607; CHECK-NEXT: local.get 22608; CHECK-NEXT: local.get 02609; CHECK-NEXT: call op_2_to_02610; CHECK-NEXT: # fallthrough-return2611 %t0 = call {i32, i32, i32} @op_0_to_3()2612 %t1 = extractvalue {i32, i32, i32} %t0, 12613 %t2 = extractvalue {i32, i32, i32} %t0, 22614 call void @op_2_to_0(i32 %t1, i32 %t2)2615 %t3 = extractvalue {i32, i32, i32} %t0, 22616 %t4 = extractvalue {i32, i32, i32} %t0, 02617 call void @op_2_to_0(i32 %t3, i32 %t4)2618 ret void2619}2620 2621define void @f396() {2622; CHECK-LABEL: f396:2623; CHECK: .functype f396 () -> ()2624; CHECK-NEXT: .local i32, i322625; CHECK-NEXT: # %bb.0:2626; CHECK-NEXT: call op_0_to_32627; CHECK-NEXT: local.set 12628; CHECK-NEXT: local.set 02629; CHECK-NEXT: drop2630; CHECK-NEXT: local.get 02631; CHECK-NEXT: local.get 12632; CHECK-NEXT: call op_2_to_02633; CHECK-NEXT: local.get 12634; CHECK-NEXT: local.get 02635; CHECK-NEXT: call op_2_to_02636; CHECK-NEXT: # fallthrough-return2637 %t0 = call {i32, i32, i32} @op_0_to_3()2638 %t1 = extractvalue {i32, i32, i32} %t0, 12639 %t2 = extractvalue {i32, i32, i32} %t0, 22640 call void @op_2_to_0(i32 %t1, i32 %t2)2641 %t3 = extractvalue {i32, i32, i32} %t0, 22642 %t4 = extractvalue {i32, i32, i32} %t0, 12643 call void @op_2_to_0(i32 %t3, i32 %t4)2644 ret void2645}2646 2647define void @f398() {2648; CHECK-LABEL: f398:2649; CHECK: .functype f398 () -> ()2650; CHECK-NEXT: .local i32, i322651; CHECK-NEXT: # %bb.0:2652; CHECK-NEXT: call op_0_to_32653; CHECK-NEXT: local.set 12654; CHECK-NEXT: drop2655; CHECK-NEXT: local.set 02656; CHECK-NEXT: local.get 12657; CHECK-NEXT: local.get 02658; CHECK-NEXT: call op_2_to_02659; CHECK-NEXT: local.get 02660; CHECK-NEXT: call op_1_to_02661; CHECK-NEXT: # fallthrough-return2662 %t0 = call {i32, i32, i32} @op_0_to_3()2663 %t1 = extractvalue {i32, i32, i32} %t0, 22664 %t2 = extractvalue {i32, i32, i32} %t0, 02665 call void @op_2_to_0(i32 %t1, i32 %t2)2666 %t3 = extractvalue {i32, i32, i32} %t0, 02667 call void @op_1_to_0(i32 %t3)2668 ret void2669}2670 2671define void @f399() {2672; CHECK-LABEL: f399:2673; CHECK: .functype f399 () -> ()2674; CHECK-NEXT: .local i32, i32, i322675; CHECK-NEXT: # %bb.0:2676; CHECK-NEXT: call op_0_to_32677; CHECK-NEXT: local.set 22678; CHECK-NEXT: local.set 12679; CHECK-NEXT: local.set 02680; CHECK-NEXT: local.get 22681; CHECK-NEXT: local.get 02682; CHECK-NEXT: call op_2_to_02683; CHECK-NEXT: local.get 12684; CHECK-NEXT: call op_1_to_02685; CHECK-NEXT: # fallthrough-return2686 %t0 = call {i32, i32, i32} @op_0_to_3()2687 %t1 = extractvalue {i32, i32, i32} %t0, 22688 %t2 = extractvalue {i32, i32, i32} %t0, 02689 call void @op_2_to_0(i32 %t1, i32 %t2)2690 %t3 = extractvalue {i32, i32, i32} %t0, 12691 call void @op_1_to_0(i32 %t3)2692 ret void2693}2694 2695define void @f400() {2696; CHECK-LABEL: f400:2697; CHECK: .functype f400 () -> ()2698; CHECK-NEXT: .local i32, i322699; CHECK-NEXT: # %bb.0:2700; CHECK-NEXT: call op_0_to_32701; CHECK-NEXT: local.set 12702; CHECK-NEXT: drop2703; CHECK-NEXT: local.set 02704; CHECK-NEXT: local.get 12705; CHECK-NEXT: local.get 02706; CHECK-NEXT: call op_2_to_02707; CHECK-NEXT: local.get 12708; CHECK-NEXT: call op_1_to_02709; CHECK-NEXT: # fallthrough-return2710 %t0 = call {i32, i32, i32} @op_0_to_3()2711 %t1 = extractvalue {i32, i32, i32} %t0, 22712 %t2 = extractvalue {i32, i32, i32} %t0, 02713 call void @op_2_to_0(i32 %t1, i32 %t2)2714 %t3 = extractvalue {i32, i32, i32} %t0, 22715 call void @op_1_to_0(i32 %t3)2716 ret void2717}2718 2719define void @f402() {2720; CHECK-LABEL: f402:2721; CHECK: .functype f402 () -> ()2722; CHECK-NEXT: .local i32, i32, i322723; CHECK-NEXT: # %bb.0:2724; CHECK-NEXT: call op_0_to_32725; CHECK-NEXT: local.set 22726; CHECK-NEXT: local.set 12727; CHECK-NEXT: local.set 02728; CHECK-NEXT: local.get 22729; CHECK-NEXT: local.get 02730; CHECK-NEXT: call op_2_to_02731; CHECK-NEXT: local.get 02732; CHECK-NEXT: local.get 12733; CHECK-NEXT: call op_2_to_02734; CHECK-NEXT: # fallthrough-return2735 %t0 = call {i32, i32, i32} @op_0_to_3()2736 %t1 = extractvalue {i32, i32, i32} %t0, 22737 %t2 = extractvalue {i32, i32, i32} %t0, 02738 call void @op_2_to_0(i32 %t1, i32 %t2)2739 %t3 = extractvalue {i32, i32, i32} %t0, 02740 %t4 = extractvalue {i32, i32, i32} %t0, 12741 call void @op_2_to_0(i32 %t3, i32 %t4)2742 ret void2743}2744 2745define void @f403() {2746; CHECK-LABEL: f403:2747; CHECK: .functype f403 () -> ()2748; CHECK-NEXT: .local i32, i322749; CHECK-NEXT: # %bb.0:2750; CHECK-NEXT: call op_0_to_32751; CHECK-NEXT: local.set 12752; CHECK-NEXT: drop2753; CHECK-NEXT: local.set 02754; CHECK-NEXT: local.get 12755; CHECK-NEXT: local.get 02756; CHECK-NEXT: call op_2_to_02757; CHECK-NEXT: local.get 02758; CHECK-NEXT: local.get 12759; CHECK-NEXT: call op_2_to_02760; CHECK-NEXT: # fallthrough-return2761 %t0 = call {i32, i32, i32} @op_0_to_3()2762 %t1 = extractvalue {i32, i32, i32} %t0, 22763 %t2 = extractvalue {i32, i32, i32} %t0, 02764 call void @op_2_to_0(i32 %t1, i32 %t2)2765 %t3 = extractvalue {i32, i32, i32} %t0, 02766 %t4 = extractvalue {i32, i32, i32} %t0, 22767 call void @op_2_to_0(i32 %t3, i32 %t4)2768 ret void2769}2770 2771define void @f404() {2772; CHECK-LABEL: f404:2773; CHECK: .functype f404 () -> ()2774; CHECK-NEXT: .local i32, i32, i322775; CHECK-NEXT: # %bb.0:2776; CHECK-NEXT: call op_0_to_32777; CHECK-NEXT: local.set 22778; CHECK-NEXT: local.set 12779; CHECK-NEXT: local.set 02780; CHECK-NEXT: local.get 22781; CHECK-NEXT: local.get 02782; CHECK-NEXT: call op_2_to_02783; CHECK-NEXT: local.get 12784; CHECK-NEXT: local.get 02785; CHECK-NEXT: call op_2_to_02786; CHECK-NEXT: # fallthrough-return2787 %t0 = call {i32, i32, i32} @op_0_to_3()2788 %t1 = extractvalue {i32, i32, i32} %t0, 22789 %t2 = extractvalue {i32, i32, i32} %t0, 02790 call void @op_2_to_0(i32 %t1, i32 %t2)2791 %t3 = extractvalue {i32, i32, i32} %t0, 12792 %t4 = extractvalue {i32, i32, i32} %t0, 02793 call void @op_2_to_0(i32 %t3, i32 %t4)2794 ret void2795}2796 2797define void @f405() {2798; CHECK-LABEL: f405:2799; CHECK: .functype f405 () -> ()2800; CHECK-NEXT: .local i32, i32, i322801; CHECK-NEXT: # %bb.0:2802; CHECK-NEXT: call op_0_to_32803; CHECK-NEXT: local.set 22804; CHECK-NEXT: local.set 12805; CHECK-NEXT: local.set 02806; CHECK-NEXT: local.get 22807; CHECK-NEXT: local.get 02808; CHECK-NEXT: call op_2_to_02809; CHECK-NEXT: local.get 12810; CHECK-NEXT: local.get 12811; CHECK-NEXT: call op_2_to_02812; CHECK-NEXT: # fallthrough-return2813 %t0 = call {i32, i32, i32} @op_0_to_3()2814 %t1 = extractvalue {i32, i32, i32} %t0, 22815 %t2 = extractvalue {i32, i32, i32} %t0, 02816 call void @op_2_to_0(i32 %t1, i32 %t2)2817 %t3 = extractvalue {i32, i32, i32} %t0, 12818 %t4 = extractvalue {i32, i32, i32} %t0, 12819 call void @op_2_to_0(i32 %t3, i32 %t4)2820 ret void2821}2822 2823define void @f406() {2824; CHECK-LABEL: f406:2825; CHECK: .functype f406 () -> ()2826; CHECK-NEXT: .local i32, i32, i322827; CHECK-NEXT: # %bb.0:2828; CHECK-NEXT: call op_0_to_32829; CHECK-NEXT: local.set 22830; CHECK-NEXT: local.set 12831; CHECK-NEXT: local.set 02832; CHECK-NEXT: local.get 22833; CHECK-NEXT: local.get 02834; CHECK-NEXT: call op_2_to_02835; CHECK-NEXT: local.get 12836; CHECK-NEXT: local.get 22837; CHECK-NEXT: call op_2_to_02838; CHECK-NEXT: # fallthrough-return2839 %t0 = call {i32, i32, i32} @op_0_to_3()2840 %t1 = extractvalue {i32, i32, i32} %t0, 22841 %t2 = extractvalue {i32, i32, i32} %t0, 02842 call void @op_2_to_0(i32 %t1, i32 %t2)2843 %t3 = extractvalue {i32, i32, i32} %t0, 12844 %t4 = extractvalue {i32, i32, i32} %t0, 22845 call void @op_2_to_0(i32 %t3, i32 %t4)2846 ret void2847}2848 2849define void @f408() {2850; CHECK-LABEL: f408:2851; CHECK: .functype f408 () -> ()2852; CHECK-NEXT: .local i32, i32, i322853; CHECK-NEXT: # %bb.0:2854; CHECK-NEXT: call op_0_to_32855; CHECK-NEXT: local.set 22856; CHECK-NEXT: local.set 12857; CHECK-NEXT: local.set 02858; CHECK-NEXT: local.get 22859; CHECK-NEXT: local.get 02860; CHECK-NEXT: call op_2_to_02861; CHECK-NEXT: local.get 22862; CHECK-NEXT: local.get 12863; CHECK-NEXT: call op_2_to_02864; CHECK-NEXT: # fallthrough-return2865 %t0 = call {i32, i32, i32} @op_0_to_3()2866 %t1 = extractvalue {i32, i32, i32} %t0, 22867 %t2 = extractvalue {i32, i32, i32} %t0, 02868 call void @op_2_to_0(i32 %t1, i32 %t2)2869 %t3 = extractvalue {i32, i32, i32} %t0, 22870 %t4 = extractvalue {i32, i32, i32} %t0, 12871 call void @op_2_to_0(i32 %t3, i32 %t4)2872 ret void2873}2874 2875define void @f410() {2876; CHECK-LABEL: f410:2877; CHECK: .functype f410 () -> ()2878; CHECK-NEXT: .local i32, i32, i322879; CHECK-NEXT: # %bb.0:2880; CHECK-NEXT: call op_0_to_32881; CHECK-NEXT: local.set 22882; CHECK-NEXT: local.set 12883; CHECK-NEXT: local.set 02884; CHECK-NEXT: local.get 22885; CHECK-NEXT: local.get 12886; CHECK-NEXT: call op_2_to_02887; CHECK-NEXT: local.get 02888; CHECK-NEXT: call op_1_to_02889; CHECK-NEXT: # fallthrough-return2890 %t0 = call {i32, i32, i32} @op_0_to_3()2891 %t1 = extractvalue {i32, i32, i32} %t0, 22892 %t2 = extractvalue {i32, i32, i32} %t0, 12893 call void @op_2_to_0(i32 %t1, i32 %t2)2894 %t3 = extractvalue {i32, i32, i32} %t0, 02895 call void @op_1_to_0(i32 %t3)2896 ret void2897}2898 2899define void @f411() {2900; CHECK-LABEL: f411:2901; CHECK: .functype f411 () -> ()2902; CHECK-NEXT: .local i32, i322903; CHECK-NEXT: # %bb.0:2904; CHECK-NEXT: call op_0_to_32905; CHECK-NEXT: local.set 12906; CHECK-NEXT: local.set 02907; CHECK-NEXT: drop2908; CHECK-NEXT: local.get 12909; CHECK-NEXT: local.get 02910; CHECK-NEXT: call op_2_to_02911; CHECK-NEXT: local.get 02912; CHECK-NEXT: call op_1_to_02913; CHECK-NEXT: # fallthrough-return2914 %t0 = call {i32, i32, i32} @op_0_to_3()2915 %t1 = extractvalue {i32, i32, i32} %t0, 22916 %t2 = extractvalue {i32, i32, i32} %t0, 12917 call void @op_2_to_0(i32 %t1, i32 %t2)2918 %t3 = extractvalue {i32, i32, i32} %t0, 12919 call void @op_1_to_0(i32 %t3)2920 ret void2921}2922 2923define void @f412() {2924; CHECK-LABEL: f412:2925; CHECK: .functype f412 () -> ()2926; CHECK-NEXT: .local i32, i322927; CHECK-NEXT: # %bb.0:2928; CHECK-NEXT: call op_0_to_32929; CHECK-NEXT: local.set 12930; CHECK-NEXT: local.set 02931; CHECK-NEXT: drop2932; CHECK-NEXT: local.get 12933; CHECK-NEXT: local.get 02934; CHECK-NEXT: call op_2_to_02935; CHECK-NEXT: local.get 12936; CHECK-NEXT: call op_1_to_02937; CHECK-NEXT: # fallthrough-return2938 %t0 = call {i32, i32, i32} @op_0_to_3()2939 %t1 = extractvalue {i32, i32, i32} %t0, 22940 %t2 = extractvalue {i32, i32, i32} %t0, 12941 call void @op_2_to_0(i32 %t1, i32 %t2)2942 %t3 = extractvalue {i32, i32, i32} %t0, 22943 call void @op_1_to_0(i32 %t3)2944 ret void2945}2946 2947define void @f413() {2948; CHECK-LABEL: f413:2949; CHECK: .functype f413 () -> ()2950; CHECK-NEXT: .local i32, i32, i322951; CHECK-NEXT: # %bb.0:2952; CHECK-NEXT: call op_0_to_32953; CHECK-NEXT: local.set 22954; CHECK-NEXT: local.set 12955; CHECK-NEXT: local.set 02956; CHECK-NEXT: local.get 22957; CHECK-NEXT: local.get 12958; CHECK-NEXT: call op_2_to_02959; CHECK-NEXT: local.get 02960; CHECK-NEXT: local.get 02961; CHECK-NEXT: call op_2_to_02962; CHECK-NEXT: # fallthrough-return2963 %t0 = call {i32, i32, i32} @op_0_to_3()2964 %t1 = extractvalue {i32, i32, i32} %t0, 22965 %t2 = extractvalue {i32, i32, i32} %t0, 12966 call void @op_2_to_0(i32 %t1, i32 %t2)2967 %t3 = extractvalue {i32, i32, i32} %t0, 02968 %t4 = extractvalue {i32, i32, i32} %t0, 02969 call void @op_2_to_0(i32 %t3, i32 %t4)2970 ret void2971}2972 2973define void @f414() {2974; CHECK-LABEL: f414:2975; CHECK: .functype f414 () -> ()2976; CHECK-NEXT: .local i32, i32, i322977; CHECK-NEXT: # %bb.0:2978; CHECK-NEXT: call op_0_to_32979; CHECK-NEXT: local.set 22980; CHECK-NEXT: local.set 12981; CHECK-NEXT: local.set 02982; CHECK-NEXT: local.get 22983; CHECK-NEXT: local.get 12984; CHECK-NEXT: call op_2_to_02985; CHECK-NEXT: local.get 02986; CHECK-NEXT: local.get 12987; CHECK-NEXT: call op_2_to_02988; CHECK-NEXT: # fallthrough-return2989 %t0 = call {i32, i32, i32} @op_0_to_3()2990 %t1 = extractvalue {i32, i32, i32} %t0, 22991 %t2 = extractvalue {i32, i32, i32} %t0, 12992 call void @op_2_to_0(i32 %t1, i32 %t2)2993 %t3 = extractvalue {i32, i32, i32} %t0, 02994 %t4 = extractvalue {i32, i32, i32} %t0, 12995 call void @op_2_to_0(i32 %t3, i32 %t4)2996 ret void2997}2998 2999define void @f415() {3000; CHECK-LABEL: f415:3001; CHECK: .functype f415 () -> ()3002; CHECK-NEXT: .local i32, i32, i323003; CHECK-NEXT: # %bb.0:3004; CHECK-NEXT: call op_0_to_33005; CHECK-NEXT: local.set 23006; CHECK-NEXT: local.set 13007; CHECK-NEXT: local.set 03008; CHECK-NEXT: local.get 23009; CHECK-NEXT: local.get 13010; CHECK-NEXT: call op_2_to_03011; CHECK-NEXT: local.get 03012; CHECK-NEXT: local.get 23013; CHECK-NEXT: call op_2_to_03014; CHECK-NEXT: # fallthrough-return3015 %t0 = call {i32, i32, i32} @op_0_to_3()3016 %t1 = extractvalue {i32, i32, i32} %t0, 23017 %t2 = extractvalue {i32, i32, i32} %t0, 13018 call void @op_2_to_0(i32 %t1, i32 %t2)3019 %t3 = extractvalue {i32, i32, i32} %t0, 03020 %t4 = extractvalue {i32, i32, i32} %t0, 23021 call void @op_2_to_0(i32 %t3, i32 %t4)3022 ret void3023}3024 3025define void @f416() {3026; CHECK-LABEL: f416:3027; CHECK: .functype f416 () -> ()3028; CHECK-NEXT: .local i32, i32, i323029; CHECK-NEXT: # %bb.0:3030; CHECK-NEXT: call op_0_to_33031; CHECK-NEXT: local.set 23032; CHECK-NEXT: local.set 13033; CHECK-NEXT: local.set 03034; CHECK-NEXT: local.get 23035; CHECK-NEXT: local.get 13036; CHECK-NEXT: call op_2_to_03037; CHECK-NEXT: local.get 13038; CHECK-NEXT: local.get 03039; CHECK-NEXT: call op_2_to_03040; CHECK-NEXT: # fallthrough-return3041 %t0 = call {i32, i32, i32} @op_0_to_3()3042 %t1 = extractvalue {i32, i32, i32} %t0, 23043 %t2 = extractvalue {i32, i32, i32} %t0, 13044 call void @op_2_to_0(i32 %t1, i32 %t2)3045 %t3 = extractvalue {i32, i32, i32} %t0, 13046 %t4 = extractvalue {i32, i32, i32} %t0, 03047 call void @op_2_to_0(i32 %t3, i32 %t4)3048 ret void3049}3050 3051define void @f418() {3052; CHECK-LABEL: f418:3053; CHECK: .functype f418 () -> ()3054; CHECK-NEXT: .local i32, i323055; CHECK-NEXT: # %bb.0:3056; CHECK-NEXT: call op_0_to_33057; CHECK-NEXT: local.set 13058; CHECK-NEXT: local.set 03059; CHECK-NEXT: drop3060; CHECK-NEXT: local.get 13061; CHECK-NEXT: local.get 03062; CHECK-NEXT: call op_2_to_03063; CHECK-NEXT: local.get 03064; CHECK-NEXT: local.get 13065; CHECK-NEXT: call op_2_to_03066; CHECK-NEXT: # fallthrough-return3067 %t0 = call {i32, i32, i32} @op_0_to_3()3068 %t1 = extractvalue {i32, i32, i32} %t0, 23069 %t2 = extractvalue {i32, i32, i32} %t0, 13070 call void @op_2_to_0(i32 %t1, i32 %t2)3071 %t3 = extractvalue {i32, i32, i32} %t0, 13072 %t4 = extractvalue {i32, i32, i32} %t0, 23073 call void @op_2_to_0(i32 %t3, i32 %t4)3074 ret void3075}3076 3077define void @f419() {3078; CHECK-LABEL: f419:3079; CHECK: .functype f419 () -> ()3080; CHECK-NEXT: .local i32, i32, i323081; CHECK-NEXT: # %bb.0:3082; CHECK-NEXT: call op_0_to_33083; CHECK-NEXT: local.set 23084; CHECK-NEXT: local.set 13085; CHECK-NEXT: local.set 03086; CHECK-NEXT: local.get 23087; CHECK-NEXT: local.get 13088; CHECK-NEXT: call op_2_to_03089; CHECK-NEXT: local.get 23090; CHECK-NEXT: local.get 03091; CHECK-NEXT: call op_2_to_03092; CHECK-NEXT: # fallthrough-return3093 %t0 = call {i32, i32, i32} @op_0_to_3()3094 %t1 = extractvalue {i32, i32, i32} %t0, 23095 %t2 = extractvalue {i32, i32, i32} %t0, 13096 call void @op_2_to_0(i32 %t1, i32 %t2)3097 %t3 = extractvalue {i32, i32, i32} %t0, 23098 %t4 = extractvalue {i32, i32, i32} %t0, 03099 call void @op_2_to_0(i32 %t3, i32 %t4)3100 ret void3101}3102 3103define void @f422() {3104; CHECK-LABEL: f422:3105; CHECK: .functype f422 () -> ()3106; CHECK-NEXT: .local i32, i323107; CHECK-NEXT: # %bb.0:3108; CHECK-NEXT: call op_0_to_33109; CHECK-NEXT: local.set 13110; CHECK-NEXT: drop3111; CHECK-NEXT: local.set 03112; CHECK-NEXT: local.get 13113; CHECK-NEXT: local.get 13114; CHECK-NEXT: call op_2_to_03115; CHECK-NEXT: local.get 03116; CHECK-NEXT: call op_1_to_03117; CHECK-NEXT: # fallthrough-return3118 %t0 = call {i32, i32, i32} @op_0_to_3()3119 %t1 = extractvalue {i32, i32, i32} %t0, 23120 %t2 = extractvalue {i32, i32, i32} %t0, 23121 call void @op_2_to_0(i32 %t1, i32 %t2)3122 %t3 = extractvalue {i32, i32, i32} %t0, 03123 call void @op_1_to_0(i32 %t3)3124 ret void3125}3126 3127define void @f423() {3128; CHECK-LABEL: f423:3129; CHECK: .functype f423 () -> ()3130; CHECK-NEXT: .local i32, i323131; CHECK-NEXT: # %bb.0:3132; CHECK-NEXT: call op_0_to_33133; CHECK-NEXT: local.set 13134; CHECK-NEXT: local.set 03135; CHECK-NEXT: drop3136; CHECK-NEXT: local.get 13137; CHECK-NEXT: local.get 13138; CHECK-NEXT: call op_2_to_03139; CHECK-NEXT: local.get 03140; CHECK-NEXT: call op_1_to_03141; CHECK-NEXT: # fallthrough-return3142 %t0 = call {i32, i32, i32} @op_0_to_3()3143 %t1 = extractvalue {i32, i32, i32} %t0, 23144 %t2 = extractvalue {i32, i32, i32} %t0, 23145 call void @op_2_to_0(i32 %t1, i32 %t2)3146 %t3 = extractvalue {i32, i32, i32} %t0, 13147 call void @op_1_to_0(i32 %t3)3148 ret void3149}3150 3151define void @f425() {3152; CHECK-LABEL: f425:3153; CHECK: .functype f425 () -> ()3154; CHECK-NEXT: .local i32, i323155; CHECK-NEXT: # %bb.0:3156; CHECK-NEXT: call op_0_to_33157; CHECK-NEXT: local.set 13158; CHECK-NEXT: drop3159; CHECK-NEXT: local.set 03160; CHECK-NEXT: local.get 13161; CHECK-NEXT: local.get 13162; CHECK-NEXT: call op_2_to_03163; CHECK-NEXT: local.get 03164; CHECK-NEXT: local.get 03165; CHECK-NEXT: call op_2_to_03166; CHECK-NEXT: # fallthrough-return3167 %t0 = call {i32, i32, i32} @op_0_to_3()3168 %t1 = extractvalue {i32, i32, i32} %t0, 23169 %t2 = extractvalue {i32, i32, i32} %t0, 23170 call void @op_2_to_0(i32 %t1, i32 %t2)3171 %t3 = extractvalue {i32, i32, i32} %t0, 03172 %t4 = extractvalue {i32, i32, i32} %t0, 03173 call void @op_2_to_0(i32 %t3, i32 %t4)3174 ret void3175}3176 3177define void @f426() {3178; CHECK-LABEL: f426:3179; CHECK: .functype f426 () -> ()3180; CHECK-NEXT: .local i32, i32, i323181; CHECK-NEXT: # %bb.0:3182; CHECK-NEXT: call op_0_to_33183; CHECK-NEXT: local.set 23184; CHECK-NEXT: local.set 13185; CHECK-NEXT: local.set 03186; CHECK-NEXT: local.get 23187; CHECK-NEXT: local.get 23188; CHECK-NEXT: call op_2_to_03189; CHECK-NEXT: local.get 03190; CHECK-NEXT: local.get 13191; CHECK-NEXT: call op_2_to_03192; CHECK-NEXT: # fallthrough-return3193 %t0 = call {i32, i32, i32} @op_0_to_3()3194 %t1 = extractvalue {i32, i32, i32} %t0, 23195 %t2 = extractvalue {i32, i32, i32} %t0, 23196 call void @op_2_to_0(i32 %t1, i32 %t2)3197 %t3 = extractvalue {i32, i32, i32} %t0, 03198 %t4 = extractvalue {i32, i32, i32} %t0, 13199 call void @op_2_to_0(i32 %t3, i32 %t4)3200 ret void3201}3202 3203define void @f428() {3204; CHECK-LABEL: f428:3205; CHECK: .functype f428 () -> ()3206; CHECK-NEXT: .local i32, i32, i323207; CHECK-NEXT: # %bb.0:3208; CHECK-NEXT: call op_0_to_33209; CHECK-NEXT: local.set 23210; CHECK-NEXT: local.set 13211; CHECK-NEXT: local.set 03212; CHECK-NEXT: local.get 23213; CHECK-NEXT: local.get 23214; CHECK-NEXT: call op_2_to_03215; CHECK-NEXT: local.get 13216; CHECK-NEXT: local.get 03217; CHECK-NEXT: call op_2_to_03218; CHECK-NEXT: # fallthrough-return3219 %t0 = call {i32, i32, i32} @op_0_to_3()3220 %t1 = extractvalue {i32, i32, i32} %t0, 23221 %t2 = extractvalue {i32, i32, i32} %t0, 23222 call void @op_2_to_0(i32 %t1, i32 %t2)3223 %t3 = extractvalue {i32, i32, i32} %t0, 13224 %t4 = extractvalue {i32, i32, i32} %t0, 03225 call void @op_2_to_0(i32 %t3, i32 %t4)3226 ret void3227}3228 3229define void @f429() {3230; CHECK-LABEL: f429:3231; CHECK: .functype f429 () -> ()3232; CHECK-NEXT: .local i32, i323233; CHECK-NEXT: # %bb.0:3234; CHECK-NEXT: call op_0_to_33235; CHECK-NEXT: local.set 13236; CHECK-NEXT: local.set 03237; CHECK-NEXT: drop3238; CHECK-NEXT: local.get 13239; CHECK-NEXT: local.get 13240; CHECK-NEXT: call op_2_to_03241; CHECK-NEXT: local.get 03242; CHECK-NEXT: local.get 03243; CHECK-NEXT: call op_2_to_03244; CHECK-NEXT: # fallthrough-return3245 %t0 = call {i32, i32, i32} @op_0_to_3()3246 %t1 = extractvalue {i32, i32, i32} %t0, 23247 %t2 = extractvalue {i32, i32, i32} %t0, 23248 call void @op_2_to_0(i32 %t1, i32 %t2)3249 %t3 = extractvalue {i32, i32, i32} %t0, 13250 %t4 = extractvalue {i32, i32, i32} %t0, 13251 call void @op_2_to_0(i32 %t3, i32 %t4)3252 ret void3253}3254