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