; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
; NOTE: Test functions have been generated by multivalue-stackify.py.

; RUN: llc < %s -verify-machineinstrs -mattr=+multivalue | FileCheck %s

; Test that the multivalue stackification works

target datalayout = "e-m:e-p:32:32-i64:64-n32:64-S128"
target triple = "wasm32-unknown-unknown"

declare {i32} @op_0_to_1()
declare {i32, i32} @op_0_to_2()
declare {i32, i32, i32} @op_0_to_3()
declare void @op_1_to_0(i32 %t0)
declare {i32} @op_1_to_1(i32 %t0)
declare {i32, i32} @op_1_to_2(i32 %t0)
declare {i32, i32, i32} @op_1_to_3(i32 %t0)
declare void @op_2_to_0(i32 %t0, i32 %t1)
declare {i32} @op_2_to_1(i32 %t0, i32 %t1)
declare {i32, i32} @op_2_to_2(i32 %t0, i32 %t1)
declare {i32, i32, i32} @op_2_to_3(i32 %t0, i32 %t1)

define void @f2() {
; CHECK-LABEL: f2:
; CHECK:         .functype f2 () -> ()
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_2
; CHECK-NEXT:    drop
; CHECK-NEXT:    drop
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32} @op_0_to_2()
  ret void
}

define void @f3() {
; CHECK-LABEL: f3:
; CHECK:         .functype f3 () -> ()
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    drop
; CHECK-NEXT:    drop
; CHECK-NEXT:    drop
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  ret void
}

define void @f12() {
; CHECK-LABEL: f12:
; CHECK:         .functype f12 () -> ()
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_2
; CHECK-NEXT:    drop
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32} @op_0_to_2()
  %t1 = extractvalue {i32, i32} %t0, 0
  call void @op_1_to_0(i32 %t1)
  ret void
}

define void @f13() {
; CHECK-LABEL: f13:
; CHECK:         .functype f13 () -> ()
; CHECK-NEXT:    .local i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_2
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    drop
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32} @op_0_to_2()
  %t1 = extractvalue {i32, i32} %t0, 1
  call void @op_1_to_0(i32 %t1)
  ret void
}

define void @f14() {
; CHECK-LABEL: f14:
; CHECK:         .functype f14 () -> ()
; CHECK-NEXT:    .local i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_2
; CHECK-NEXT:    drop
; CHECK-NEXT:    local.tee 0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32} @op_0_to_2()
  %t1 = extractvalue {i32, i32} %t0, 0
  %t2 = extractvalue {i32, i32} %t0, 0
  call void @op_2_to_0(i32 %t1, i32 %t2)
  ret void
}

define void @f15() {
; CHECK-LABEL: f15:
; CHECK:         .functype f15 () -> ()
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_2
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32} @op_0_to_2()
  %t1 = extractvalue {i32, i32} %t0, 0
  %t2 = extractvalue {i32, i32} %t0, 1
  call void @op_2_to_0(i32 %t1, i32 %t2)
  ret void
}

define void @f16() {
; CHECK-LABEL: f16:
; CHECK:         .functype f16 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_2
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32} @op_0_to_2()
  %t1 = extractvalue {i32, i32} %t0, 1
  %t2 = extractvalue {i32, i32} %t0, 0
  call void @op_2_to_0(i32 %t1, i32 %t2)
  ret void
}

define void @f17() {
; CHECK-LABEL: f17:
; CHECK:         .functype f17 () -> ()
; CHECK-NEXT:    .local i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_2
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    drop
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32} @op_0_to_2()
  %t1 = extractvalue {i32, i32} %t0, 1
  %t2 = extractvalue {i32, i32} %t0, 1
  call void @op_2_to_0(i32 %t1, i32 %t2)
  ret void
}

define void @f25() {
; CHECK-LABEL: f25:
; CHECK:         .functype f25 () -> ()
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    drop
; CHECK-NEXT:    drop
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 0
  call void @op_1_to_0(i32 %t1)
  ret void
}

define void @f26() {
; CHECK-LABEL: f26:
; CHECK:         .functype f26 () -> ()
; CHECK-NEXT:    .local i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    drop
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    drop
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 1
  call void @op_1_to_0(i32 %t1)
  ret void
}

define void @f27() {
; CHECK-LABEL: f27:
; CHECK:         .functype f27 () -> ()
; CHECK-NEXT:    .local i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    drop
; CHECK-NEXT:    drop
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 2
  call void @op_1_to_0(i32 %t1)
  ret void
}

define void @f28() {
; CHECK-LABEL: f28:
; CHECK:         .functype f28 () -> ()
; CHECK-NEXT:    .local i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    drop
; CHECK-NEXT:    drop
; CHECK-NEXT:    local.tee 0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 0
  %t2 = extractvalue {i32, i32, i32} %t0, 0
  call void @op_2_to_0(i32 %t1, i32 %t2)
  ret void
}

define void @f29() {
; CHECK-LABEL: f29:
; CHECK:         .functype f29 () -> ()
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    drop
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 0
  %t2 = extractvalue {i32, i32, i32} %t0, 1
  call void @op_2_to_0(i32 %t1, i32 %t2)
  ret void
}

define void @f30() {
; CHECK-LABEL: f30:
; CHECK:         .functype f30 () -> ()
; CHECK-NEXT:    .local i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    drop
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 0
  %t2 = extractvalue {i32, i32, i32} %t0, 2
  call void @op_2_to_0(i32 %t1, i32 %t2)
  ret void
}

define void @f31() {
; CHECK-LABEL: f31:
; CHECK:         .functype f31 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    drop
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 1
  %t2 = extractvalue {i32, i32, i32} %t0, 0
  call void @op_2_to_0(i32 %t1, i32 %t2)
  ret void
}

define void @f32() {
; CHECK-LABEL: f32:
; CHECK:         .functype f32 () -> ()
; CHECK-NEXT:    .local i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    drop
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    drop
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 1
  %t2 = extractvalue {i32, i32, i32} %t0, 1
  call void @op_2_to_0(i32 %t1, i32 %t2)
  ret void
}

define void @f33() {
; CHECK-LABEL: f33:
; CHECK:         .functype f33 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    drop
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 1
  %t2 = extractvalue {i32, i32, i32} %t0, 2
  call void @op_2_to_0(i32 %t1, i32 %t2)
  ret void
}

define void @f34() {
; CHECK-LABEL: f34:
; CHECK:         .functype f34 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    drop
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 2
  %t2 = extractvalue {i32, i32, i32} %t0, 0
  call void @op_2_to_0(i32 %t1, i32 %t2)
  ret void
}

define void @f35() {
; CHECK-LABEL: f35:
; CHECK:         .functype f35 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    drop
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 2
  %t2 = extractvalue {i32, i32, i32} %t0, 1
  call void @op_2_to_0(i32 %t1, i32 %t2)
  ret void
}

define void @f36() {
; CHECK-LABEL: f36:
; CHECK:         .functype f36 () -> ()
; CHECK-NEXT:    .local i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    drop
; CHECK-NEXT:    drop
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 2
  %t2 = extractvalue {i32, i32, i32} %t0, 2
  call void @op_2_to_0(i32 %t1, i32 %t2)
  ret void
}

define void @f129() {
; CHECK-LABEL: f129:
; CHECK:         .functype f129 () -> ()
; CHECK-NEXT:    .local i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_2
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32} @op_0_to_2()
  %t1 = extractvalue {i32, i32} %t0, 0
  call void @op_1_to_0(i32 %t1)
  %t2 = extractvalue {i32, i32} %t0, 1
  call void @op_1_to_0(i32 %t2)
  ret void
}

define void @f131() {
; CHECK-LABEL: f131:
; CHECK:         .functype f131 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_2
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.tee 1
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32} @op_0_to_2()
  %t1 = extractvalue {i32, i32} %t0, 0
  call void @op_1_to_0(i32 %t1)
  %t2 = extractvalue {i32, i32} %t0, 0
  %t3 = extractvalue {i32, i32} %t0, 1
  call void @op_2_to_0(i32 %t2, i32 %t3)
  ret void
}

define void @f132() {
; CHECK-LABEL: f132:
; CHECK:         .functype f132 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_2
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.tee 1
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32} @op_0_to_2()
  %t1 = extractvalue {i32, i32} %t0, 0
  call void @op_1_to_0(i32 %t1)
  %t2 = extractvalue {i32, i32} %t0, 1
  %t3 = extractvalue {i32, i32} %t0, 0
  call void @op_2_to_0(i32 %t2, i32 %t3)
  ret void
}

define void @f133() {
; CHECK-LABEL: f133:
; CHECK:         .functype f133 () -> ()
; CHECK-NEXT:    .local i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_2
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32} @op_0_to_2()
  %t1 = extractvalue {i32, i32} %t0, 0
  call void @op_1_to_0(i32 %t1)
  %t2 = extractvalue {i32, i32} %t0, 1
  %t3 = extractvalue {i32, i32} %t0, 1
  call void @op_2_to_0(i32 %t2, i32 %t3)
  ret void
}

define void @f141() {
; CHECK-LABEL: f141:
; CHECK:         .functype f141 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_2
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32} @op_0_to_2()
  %t1 = extractvalue {i32, i32} %t0, 1
  call void @op_1_to_0(i32 %t1)
  %t2 = extractvalue {i32, i32} %t0, 0
  call void @op_1_to_0(i32 %t2)
  ret void
}

define void @f143() {
; CHECK-LABEL: f143:
; CHECK:         .functype f143 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_2
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32} @op_0_to_2()
  %t1 = extractvalue {i32, i32} %t0, 1
  call void @op_1_to_0(i32 %t1)
  %t2 = extractvalue {i32, i32} %t0, 0
  %t3 = extractvalue {i32, i32} %t0, 0
  call void @op_2_to_0(i32 %t2, i32 %t3)
  ret void
}

define void @f144() {
; CHECK-LABEL: f144:
; CHECK:         .functype f144 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_2
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32} @op_0_to_2()
  %t1 = extractvalue {i32, i32} %t0, 1
  call void @op_1_to_0(i32 %t1)
  %t2 = extractvalue {i32, i32} %t0, 0
  %t3 = extractvalue {i32, i32} %t0, 1
  call void @op_2_to_0(i32 %t2, i32 %t3)
  ret void
}

define void @f145() {
; CHECK-LABEL: f145:
; CHECK:         .functype f145 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_2
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32} @op_0_to_2()
  %t1 = extractvalue {i32, i32} %t0, 1
  call void @op_1_to_0(i32 %t1)
  %t2 = extractvalue {i32, i32} %t0, 1
  %t3 = extractvalue {i32, i32} %t0, 0
  call void @op_2_to_0(i32 %t2, i32 %t3)
  ret void
}

define void @f155() {
; CHECK-LABEL: f155:
; CHECK:         .functype f155 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_2
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.tee 1
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32} @op_0_to_2()
  %t1 = extractvalue {i32, i32} %t0, 0
  %t2 = extractvalue {i32, i32} %t0, 0
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32} %t0, 1
  call void @op_1_to_0(i32 %t3)
  ret void
}

define void @f159() {
; CHECK-LABEL: f159:
; CHECK:         .functype f159 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_2
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.tee 1
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32} @op_0_to_2()
  %t1 = extractvalue {i32, i32} %t0, 0
  %t2 = extractvalue {i32, i32} %t0, 0
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32} %t0, 1
  %t4 = extractvalue {i32, i32} %t0, 1
  call void @op_2_to_0(i32 %t3, i32 %t4)
  ret void
}

define void @f167() {
; CHECK-LABEL: f167:
; CHECK:         .functype f167 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_2
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.tee 1
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32} @op_0_to_2()
  %t1 = extractvalue {i32, i32} %t0, 0
  %t2 = extractvalue {i32, i32} %t0, 1
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32} %t0, 0
  call void @op_1_to_0(i32 %t3)
  ret void
}

define void @f168() {
; CHECK-LABEL: f168:
; CHECK:         .functype f168 () -> ()
; CHECK-NEXT:    .local i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_2
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32} @op_0_to_2()
  %t1 = extractvalue {i32, i32} %t0, 0
  %t2 = extractvalue {i32, i32} %t0, 1
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32} %t0, 1
  call void @op_1_to_0(i32 %t3)
  ret void
}

define void @f171() {
; CHECK-LABEL: f171:
; CHECK:         .functype f171 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_2
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.tee 1
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32} @op_0_to_2()
  %t1 = extractvalue {i32, i32} %t0, 0
  %t2 = extractvalue {i32, i32} %t0, 1
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32} %t0, 1
  %t4 = extractvalue {i32, i32} %t0, 0
  call void @op_2_to_0(i32 %t3, i32 %t4)
  ret void
}

define void @f180() {
; CHECK-LABEL: f180:
; CHECK:         .functype f180 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_2
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32} @op_0_to_2()
  %t1 = extractvalue {i32, i32} %t0, 1
  %t2 = extractvalue {i32, i32} %t0, 0
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32} %t0, 0
  call void @op_1_to_0(i32 %t3)
  ret void
}

define void @f181() {
; CHECK-LABEL: f181:
; CHECK:         .functype f181 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_2
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32} @op_0_to_2()
  %t1 = extractvalue {i32, i32} %t0, 1
  %t2 = extractvalue {i32, i32} %t0, 0
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32} %t0, 1
  call void @op_1_to_0(i32 %t3)
  ret void
}

define void @f183() {
; CHECK-LABEL: f183:
; CHECK:         .functype f183 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_2
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32} @op_0_to_2()
  %t1 = extractvalue {i32, i32} %t0, 1
  %t2 = extractvalue {i32, i32} %t0, 0
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32} %t0, 0
  %t4 = extractvalue {i32, i32} %t0, 1
  call void @op_2_to_0(i32 %t3, i32 %t4)
  ret void
}

define void @f193() {
; CHECK-LABEL: f193:
; CHECK:         .functype f193 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_2
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32} @op_0_to_2()
  %t1 = extractvalue {i32, i32} %t0, 1
  %t2 = extractvalue {i32, i32} %t0, 1
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32} %t0, 0
  call void @op_1_to_0(i32 %t3)
  ret void
}

define void @f195() {
; CHECK-LABEL: f195:
; CHECK:         .functype f195 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_2
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32} @op_0_to_2()
  %t1 = extractvalue {i32, i32} %t0, 1
  %t2 = extractvalue {i32, i32} %t0, 1
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32} %t0, 0
  %t4 = extractvalue {i32, i32} %t0, 0
  call void @op_2_to_0(i32 %t3, i32 %t4)
  ret void
}

define void @f291() {
; CHECK-LABEL: f291:
; CHECK:         .functype f291 () -> ()
; CHECK-NEXT:    .local i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    drop
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 0
  call void @op_1_to_0(i32 %t1)
  %t2 = extractvalue {i32, i32, i32} %t0, 1
  call void @op_1_to_0(i32 %t2)
  ret void
}

define void @f292() {
; CHECK-LABEL: f292:
; CHECK:         .functype f292 () -> ()
; CHECK-NEXT:    .local i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    drop
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 0
  call void @op_1_to_0(i32 %t1)
  %t2 = extractvalue {i32, i32, i32} %t0, 2
  call void @op_1_to_0(i32 %t2)
  ret void
}

define void @f294() {
; CHECK-LABEL: f294:
; CHECK:         .functype f294 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    drop
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.tee 1
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 0
  call void @op_1_to_0(i32 %t1)
  %t2 = extractvalue {i32, i32, i32} %t0, 0
  %t3 = extractvalue {i32, i32, i32} %t0, 1
  call void @op_2_to_0(i32 %t2, i32 %t3)
  ret void
}

define void @f295() {
; CHECK-LABEL: f295:
; CHECK:         .functype f295 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    drop
; CHECK-NEXT:    local.tee 1
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 0
  call void @op_1_to_0(i32 %t1)
  %t2 = extractvalue {i32, i32, i32} %t0, 0
  %t3 = extractvalue {i32, i32, i32} %t0, 2
  call void @op_2_to_0(i32 %t2, i32 %t3)
  ret void
}

define void @f296() {
; CHECK-LABEL: f296:
; CHECK:         .functype f296 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    drop
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.tee 1
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 0
  call void @op_1_to_0(i32 %t1)
  %t2 = extractvalue {i32, i32, i32} %t0, 1
  %t3 = extractvalue {i32, i32, i32} %t0, 0
  call void @op_2_to_0(i32 %t2, i32 %t3)
  ret void
}

define void @f297() {
; CHECK-LABEL: f297:
; CHECK:         .functype f297 () -> ()
; CHECK-NEXT:    .local i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    drop
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 0
  call void @op_1_to_0(i32 %t1)
  %t2 = extractvalue {i32, i32, i32} %t0, 1
  %t3 = extractvalue {i32, i32, i32} %t0, 1
  call void @op_2_to_0(i32 %t2, i32 %t3)
  ret void
}

define void @f298() {
; CHECK-LABEL: f298:
; CHECK:         .functype f298 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 0
  call void @op_1_to_0(i32 %t1)
  %t2 = extractvalue {i32, i32, i32} %t0, 1
  %t3 = extractvalue {i32, i32, i32} %t0, 2
  call void @op_2_to_0(i32 %t2, i32 %t3)
  ret void
}

define void @f299() {
; CHECK-LABEL: f299:
; CHECK:         .functype f299 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    drop
; CHECK-NEXT:    local.tee 1
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 0
  call void @op_1_to_0(i32 %t1)
  %t2 = extractvalue {i32, i32, i32} %t0, 2
  %t3 = extractvalue {i32, i32, i32} %t0, 0
  call void @op_2_to_0(i32 %t2, i32 %t3)
  ret void
}

define void @f300() {
; CHECK-LABEL: f300:
; CHECK:         .functype f300 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 0
  call void @op_1_to_0(i32 %t1)
  %t2 = extractvalue {i32, i32, i32} %t0, 2
  %t3 = extractvalue {i32, i32, i32} %t0, 1
  call void @op_2_to_0(i32 %t2, i32 %t3)
  ret void
}

define void @f301() {
; CHECK-LABEL: f301:
; CHECK:         .functype f301 () -> ()
; CHECK-NEXT:    .local i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    drop
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 0
  call void @op_1_to_0(i32 %t1)
  %t2 = extractvalue {i32, i32, i32} %t0, 2
  %t3 = extractvalue {i32, i32, i32} %t0, 2
  call void @op_2_to_0(i32 %t2, i32 %t3)
  ret void
}

define void @f302() {
; CHECK-LABEL: f302:
; CHECK:         .functype f302 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    drop
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 1
  call void @op_1_to_0(i32 %t1)
  %t2 = extractvalue {i32, i32, i32} %t0, 0
  call void @op_1_to_0(i32 %t2)
  ret void
}

define void @f304() {
; CHECK-LABEL: f304:
; CHECK:         .functype f304 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    drop
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 1
  call void @op_1_to_0(i32 %t1)
  %t2 = extractvalue {i32, i32, i32} %t0, 2
  call void @op_1_to_0(i32 %t2)
  ret void
}

define void @f305() {
; CHECK-LABEL: f305:
; CHECK:         .functype f305 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    drop
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 1
  call void @op_1_to_0(i32 %t1)
  %t2 = extractvalue {i32, i32, i32} %t0, 0
  %t3 = extractvalue {i32, i32, i32} %t0, 0
  call void @op_2_to_0(i32 %t2, i32 %t3)
  ret void
}

define void @f306() {
; CHECK-LABEL: f306:
; CHECK:         .functype f306 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    drop
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 1
  call void @op_1_to_0(i32 %t1)
  %t2 = extractvalue {i32, i32, i32} %t0, 0
  %t3 = extractvalue {i32, i32, i32} %t0, 1
  call void @op_2_to_0(i32 %t2, i32 %t3)
  ret void
}

define void @f307() {
; CHECK-LABEL: f307:
; CHECK:         .functype f307 () -> ()
; CHECK-NEXT:    .local i32, i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 2
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    local.get 2
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 1
  call void @op_1_to_0(i32 %t1)
  %t2 = extractvalue {i32, i32, i32} %t0, 0
  %t3 = extractvalue {i32, i32, i32} %t0, 2
  call void @op_2_to_0(i32 %t2, i32 %t3)
  ret void
}

define void @f308() {
; CHECK-LABEL: f308:
; CHECK:         .functype f308 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    drop
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 1
  call void @op_1_to_0(i32 %t1)
  %t2 = extractvalue {i32, i32, i32} %t0, 1
  %t3 = extractvalue {i32, i32, i32} %t0, 0
  call void @op_2_to_0(i32 %t2, i32 %t3)
  ret void
}

define void @f310() {
; CHECK-LABEL: f310:
; CHECK:         .functype f310 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    drop
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 1
  call void @op_1_to_0(i32 %t1)
  %t2 = extractvalue {i32, i32, i32} %t0, 1
  %t3 = extractvalue {i32, i32, i32} %t0, 2
  call void @op_2_to_0(i32 %t2, i32 %t3)
  ret void
}

define void @f311() {
; CHECK-LABEL: f311:
; CHECK:         .functype f311 () -> ()
; CHECK-NEXT:    .local i32, i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 2
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    local.get 2
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 1
  call void @op_1_to_0(i32 %t1)
  %t2 = extractvalue {i32, i32, i32} %t0, 2
  %t3 = extractvalue {i32, i32, i32} %t0, 0
  call void @op_2_to_0(i32 %t2, i32 %t3)
  ret void
}

define void @f312() {
; CHECK-LABEL: f312:
; CHECK:         .functype f312 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    drop
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 1
  call void @op_1_to_0(i32 %t1)
  %t2 = extractvalue {i32, i32, i32} %t0, 2
  %t3 = extractvalue {i32, i32, i32} %t0, 1
  call void @op_2_to_0(i32 %t2, i32 %t3)
  ret void
}

define void @f313() {
; CHECK-LABEL: f313:
; CHECK:         .functype f313 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    drop
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 1
  call void @op_1_to_0(i32 %t1)
  %t2 = extractvalue {i32, i32, i32} %t0, 2
  %t3 = extractvalue {i32, i32, i32} %t0, 2
  call void @op_2_to_0(i32 %t2, i32 %t3)
  ret void
}

define void @f314() {
; CHECK-LABEL: f314:
; CHECK:         .functype f314 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    drop
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 2
  call void @op_1_to_0(i32 %t1)
  %t2 = extractvalue {i32, i32, i32} %t0, 0
  call void @op_1_to_0(i32 %t2)
  ret void
}

define void @f315() {
; CHECK-LABEL: f315:
; CHECK:         .functype f315 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    drop
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 2
  call void @op_1_to_0(i32 %t1)
  %t2 = extractvalue {i32, i32, i32} %t0, 1
  call void @op_1_to_0(i32 %t2)
  ret void
}

define void @f317() {
; CHECK-LABEL: f317:
; CHECK:         .functype f317 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    drop
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 2
  call void @op_1_to_0(i32 %t1)
  %t2 = extractvalue {i32, i32, i32} %t0, 0
  %t3 = extractvalue {i32, i32, i32} %t0, 0
  call void @op_2_to_0(i32 %t2, i32 %t3)
  ret void
}

define void @f318() {
; CHECK-LABEL: f318:
; CHECK:         .functype f318 () -> ()
; CHECK-NEXT:    .local i32, i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 2
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.get 2
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 2
  call void @op_1_to_0(i32 %t1)
  %t2 = extractvalue {i32, i32, i32} %t0, 0
  %t3 = extractvalue {i32, i32, i32} %t0, 1
  call void @op_2_to_0(i32 %t2, i32 %t3)
  ret void
}

define void @f319() {
; CHECK-LABEL: f319:
; CHECK:         .functype f319 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    drop
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 2
  call void @op_1_to_0(i32 %t1)
  %t2 = extractvalue {i32, i32, i32} %t0, 0
  %t3 = extractvalue {i32, i32, i32} %t0, 2
  call void @op_2_to_0(i32 %t2, i32 %t3)
  ret void
}

define void @f320() {
; CHECK-LABEL: f320:
; CHECK:         .functype f320 () -> ()
; CHECK-NEXT:    .local i32, i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 2
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.get 2
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 2
  call void @op_1_to_0(i32 %t1)
  %t2 = extractvalue {i32, i32, i32} %t0, 1
  %t3 = extractvalue {i32, i32, i32} %t0, 0
  call void @op_2_to_0(i32 %t2, i32 %t3)
  ret void
}

define void @f321() {
; CHECK-LABEL: f321:
; CHECK:         .functype f321 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    drop
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 2
  call void @op_1_to_0(i32 %t1)
  %t2 = extractvalue {i32, i32, i32} %t0, 1
  %t3 = extractvalue {i32, i32, i32} %t0, 1
  call void @op_2_to_0(i32 %t2, i32 %t3)
  ret void
}

define void @f322() {
; CHECK-LABEL: f322:
; CHECK:         .functype f322 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    drop
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 2
  call void @op_1_to_0(i32 %t1)
  %t2 = extractvalue {i32, i32, i32} %t0, 1
  %t3 = extractvalue {i32, i32, i32} %t0, 2
  call void @op_2_to_0(i32 %t2, i32 %t3)
  ret void
}

define void @f323() {
; CHECK-LABEL: f323:
; CHECK:         .functype f323 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    drop
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 2
  call void @op_1_to_0(i32 %t1)
  %t2 = extractvalue {i32, i32, i32} %t0, 2
  %t3 = extractvalue {i32, i32, i32} %t0, 0
  call void @op_2_to_0(i32 %t2, i32 %t3)
  ret void
}

define void @f324() {
; CHECK-LABEL: f324:
; CHECK:         .functype f324 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    drop
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 2
  call void @op_1_to_0(i32 %t1)
  %t2 = extractvalue {i32, i32, i32} %t0, 2
  %t3 = extractvalue {i32, i32, i32} %t0, 1
  call void @op_2_to_0(i32 %t2, i32 %t3)
  ret void
}

define void @f327() {
; CHECK-LABEL: f327:
; CHECK:         .functype f327 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    drop
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.tee 1
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 0
  %t2 = extractvalue {i32, i32, i32} %t0, 0
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32, i32} %t0, 1
  call void @op_1_to_0(i32 %t3)
  ret void
}

define void @f328() {
; CHECK-LABEL: f328:
; CHECK:         .functype f328 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    drop
; CHECK-NEXT:    local.tee 1
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 0
  %t2 = extractvalue {i32, i32, i32} %t0, 0
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32, i32} %t0, 2
  call void @op_1_to_0(i32 %t3)
  ret void
}

define void @f333() {
; CHECK-LABEL: f333:
; CHECK:         .functype f333 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    drop
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.tee 1
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 0
  %t2 = extractvalue {i32, i32, i32} %t0, 0
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32, i32} %t0, 1
  %t4 = extractvalue {i32, i32, i32} %t0, 1
  call void @op_2_to_0(i32 %t3, i32 %t4)
  ret void
}

define void @f334() {
; CHECK-LABEL: f334:
; CHECK:         .functype f334 () -> ()
; CHECK-NEXT:    .local i32, i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.tee 2
; CHECK-NEXT:    local.get 2
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 0
  %t2 = extractvalue {i32, i32, i32} %t0, 0
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32, i32} %t0, 1
  %t4 = extractvalue {i32, i32, i32} %t0, 2
  call void @op_2_to_0(i32 %t3, i32 %t4)
  ret void
}

define void @f336() {
; CHECK-LABEL: f336:
; CHECK:         .functype f336 () -> ()
; CHECK-NEXT:    .local i32, i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.tee 2
; CHECK-NEXT:    local.get 2
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 0
  %t2 = extractvalue {i32, i32, i32} %t0, 0
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32, i32} %t0, 2
  %t4 = extractvalue {i32, i32, i32} %t0, 1
  call void @op_2_to_0(i32 %t3, i32 %t4)
  ret void
}

define void @f337() {
; CHECK-LABEL: f337:
; CHECK:         .functype f337 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    drop
; CHECK-NEXT:    local.tee 1
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 0
  %t2 = extractvalue {i32, i32, i32} %t0, 0
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32, i32} %t0, 2
  %t4 = extractvalue {i32, i32, i32} %t0, 2
  call void @op_2_to_0(i32 %t3, i32 %t4)
  ret void
}

define void @f338() {
; CHECK-LABEL: f338:
; CHECK:         .functype f338 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    drop
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.tee 1
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 0
  %t2 = extractvalue {i32, i32, i32} %t0, 1
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32, i32} %t0, 0
  call void @op_1_to_0(i32 %t3)
  ret void
}

define void @f339() {
; CHECK-LABEL: f339:
; CHECK:         .functype f339 () -> ()
; CHECK-NEXT:    .local i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    drop
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 0
  %t2 = extractvalue {i32, i32, i32} %t0, 1
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32, i32} %t0, 1
  call void @op_1_to_0(i32 %t3)
  ret void
}

define void @f340() {
; CHECK-LABEL: f340:
; CHECK:         .functype f340 () -> ()
; CHECK-NEXT:    .local i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 0
  %t2 = extractvalue {i32, i32, i32} %t0, 1
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32, i32} %t0, 2
  call void @op_1_to_0(i32 %t3)
  ret void
}

define void @f343() {
; CHECK-LABEL: f343:
; CHECK:         .functype f343 () -> ()
; CHECK-NEXT:    .local i32, i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.tee 2
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 2
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 0
  %t2 = extractvalue {i32, i32, i32} %t0, 1
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32, i32} %t0, 0
  %t4 = extractvalue {i32, i32, i32} %t0, 2
  call void @op_2_to_0(i32 %t3, i32 %t4)
  ret void
}

define void @f344() {
; CHECK-LABEL: f344:
; CHECK:         .functype f344 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    drop
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.tee 1
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 0
  %t2 = extractvalue {i32, i32, i32} %t0, 1
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32, i32} %t0, 1
  %t4 = extractvalue {i32, i32, i32} %t0, 0
  call void @op_2_to_0(i32 %t3, i32 %t4)
  ret void
}

define void @f346() {
; CHECK-LABEL: f346:
; CHECK:         .functype f346 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 0
  %t2 = extractvalue {i32, i32, i32} %t0, 1
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32, i32} %t0, 1
  %t4 = extractvalue {i32, i32, i32} %t0, 2
  call void @op_2_to_0(i32 %t3, i32 %t4)
  ret void
}

define void @f347() {
; CHECK-LABEL: f347:
; CHECK:         .functype f347 () -> ()
; CHECK-NEXT:    .local i32, i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.tee 2
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    local.get 2
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 0
  %t2 = extractvalue {i32, i32, i32} %t0, 1
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32, i32} %t0, 2
  %t4 = extractvalue {i32, i32, i32} %t0, 0
  call void @op_2_to_0(i32 %t3, i32 %t4)
  ret void
}

define void @f348() {
; CHECK-LABEL: f348:
; CHECK:         .functype f348 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 0
  %t2 = extractvalue {i32, i32, i32} %t0, 1
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32, i32} %t0, 2
  %t4 = extractvalue {i32, i32, i32} %t0, 1
  call void @op_2_to_0(i32 %t3, i32 %t4)
  ret void
}

define void @f349() {
; CHECK-LABEL: f349:
; CHECK:         .functype f349 () -> ()
; CHECK-NEXT:    .local i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 0
  %t2 = extractvalue {i32, i32, i32} %t0, 1
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32, i32} %t0, 2
  %t4 = extractvalue {i32, i32, i32} %t0, 2
  call void @op_2_to_0(i32 %t3, i32 %t4)
  ret void
}

define void @f350() {
; CHECK-LABEL: f350:
; CHECK:         .functype f350 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    drop
; CHECK-NEXT:    local.tee 1
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 0
  %t2 = extractvalue {i32, i32, i32} %t0, 2
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32, i32} %t0, 0
  call void @op_1_to_0(i32 %t3)
  ret void
}

define void @f351() {
; CHECK-LABEL: f351:
; CHECK:         .functype f351 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 0
  %t2 = extractvalue {i32, i32, i32} %t0, 2
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32, i32} %t0, 1
  call void @op_1_to_0(i32 %t3)
  ret void
}

define void @f352() {
; CHECK-LABEL: f352:
; CHECK:         .functype f352 () -> ()
; CHECK-NEXT:    .local i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    drop
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 0
  %t2 = extractvalue {i32, i32, i32} %t0, 2
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32, i32} %t0, 2
  call void @op_1_to_0(i32 %t3)
  ret void
}

define void @f354() {
; CHECK-LABEL: f354:
; CHECK:         .functype f354 () -> ()
; CHECK-NEXT:    .local i32, i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.tee 2
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 2
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 0
  %t2 = extractvalue {i32, i32, i32} %t0, 2
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32, i32} %t0, 0
  %t4 = extractvalue {i32, i32, i32} %t0, 1
  call void @op_2_to_0(i32 %t3, i32 %t4)
  ret void
}

define void @f356() {
; CHECK-LABEL: f356:
; CHECK:         .functype f356 () -> ()
; CHECK-NEXT:    .local i32, i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.tee 2
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    local.get 2
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 0
  %t2 = extractvalue {i32, i32, i32} %t0, 2
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32, i32} %t0, 1
  %t4 = extractvalue {i32, i32, i32} %t0, 0
  call void @op_2_to_0(i32 %t3, i32 %t4)
  ret void
}

define void @f357() {
; CHECK-LABEL: f357:
; CHECK:         .functype f357 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 0
  %t2 = extractvalue {i32, i32, i32} %t0, 2
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32, i32} %t0, 1
  %t4 = extractvalue {i32, i32, i32} %t0, 1
  call void @op_2_to_0(i32 %t3, i32 %t4)
  ret void
}

define void @f358() {
; CHECK-LABEL: f358:
; CHECK:         .functype f358 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 0
  %t2 = extractvalue {i32, i32, i32} %t0, 2
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32, i32} %t0, 1
  %t4 = extractvalue {i32, i32, i32} %t0, 2
  call void @op_2_to_0(i32 %t3, i32 %t4)
  ret void
}

define void @f359() {
; CHECK-LABEL: f359:
; CHECK:         .functype f359 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    drop
; CHECK-NEXT:    local.tee 1
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 0
  %t2 = extractvalue {i32, i32, i32} %t0, 2
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32, i32} %t0, 2
  %t4 = extractvalue {i32, i32, i32} %t0, 0
  call void @op_2_to_0(i32 %t3, i32 %t4)
  ret void
}

define void @f360() {
; CHECK-LABEL: f360:
; CHECK:         .functype f360 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 0
  %t2 = extractvalue {i32, i32, i32} %t0, 2
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32, i32} %t0, 2
  %t4 = extractvalue {i32, i32, i32} %t0, 1
  call void @op_2_to_0(i32 %t3, i32 %t4)
  ret void
}

define void @f362() {
; CHECK-LABEL: f362:
; CHECK:         .functype f362 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    drop
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 1
  %t2 = extractvalue {i32, i32, i32} %t0, 0
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32, i32} %t0, 0
  call void @op_1_to_0(i32 %t3)
  ret void
}

define void @f363() {
; CHECK-LABEL: f363:
; CHECK:         .functype f363 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    drop
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 1
  %t2 = extractvalue {i32, i32, i32} %t0, 0
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32, i32} %t0, 1
  call void @op_1_to_0(i32 %t3)
  ret void
}

define void @f364() {
; CHECK-LABEL: f364:
; CHECK:         .functype f364 () -> ()
; CHECK-NEXT:    .local i32, i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 2
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 2
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 1
  %t2 = extractvalue {i32, i32, i32} %t0, 0
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32, i32} %t0, 2
  call void @op_1_to_0(i32 %t3)
  ret void
}

define void @f366() {
; CHECK-LABEL: f366:
; CHECK:         .functype f366 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    drop
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 1
  %t2 = extractvalue {i32, i32, i32} %t0, 0
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32, i32} %t0, 0
  %t4 = extractvalue {i32, i32, i32} %t0, 1
  call void @op_2_to_0(i32 %t3, i32 %t4)
  ret void
}

define void @f367() {
; CHECK-LABEL: f367:
; CHECK:         .functype f367 () -> ()
; CHECK-NEXT:    .local i32, i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 2
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    local.get 2
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 1
  %t2 = extractvalue {i32, i32, i32} %t0, 0
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32, i32} %t0, 0
  %t4 = extractvalue {i32, i32, i32} %t0, 2
  call void @op_2_to_0(i32 %t3, i32 %t4)
  ret void
}

define void @f370() {
; CHECK-LABEL: f370:
; CHECK:         .functype f370 () -> ()
; CHECK-NEXT:    .local i32, i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 2
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    local.get 2
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 1
  %t2 = extractvalue {i32, i32, i32} %t0, 0
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32, i32} %t0, 1
  %t4 = extractvalue {i32, i32, i32} %t0, 2
  call void @op_2_to_0(i32 %t3, i32 %t4)
  ret void
}

define void @f371() {
; CHECK-LABEL: f371:
; CHECK:         .functype f371 () -> ()
; CHECK-NEXT:    .local i32, i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 2
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 2
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 1
  %t2 = extractvalue {i32, i32, i32} %t0, 0
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32, i32} %t0, 2
  %t4 = extractvalue {i32, i32, i32} %t0, 0
  call void @op_2_to_0(i32 %t3, i32 %t4)
  ret void
}

define void @f372() {
; CHECK-LABEL: f372:
; CHECK:         .functype f372 () -> ()
; CHECK-NEXT:    .local i32, i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 2
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 2
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 1
  %t2 = extractvalue {i32, i32, i32} %t0, 0
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32, i32} %t0, 2
  %t4 = extractvalue {i32, i32, i32} %t0, 1
  call void @op_2_to_0(i32 %t3, i32 %t4)
  ret void
}

define void @f373() {
; CHECK-LABEL: f373:
; CHECK:         .functype f373 () -> ()
; CHECK-NEXT:    .local i32, i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 2
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 2
; CHECK-NEXT:    local.get 2
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 1
  %t2 = extractvalue {i32, i32, i32} %t0, 0
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32, i32} %t0, 2
  %t4 = extractvalue {i32, i32, i32} %t0, 2
  call void @op_2_to_0(i32 %t3, i32 %t4)
  ret void
}

define void @f374() {
; CHECK-LABEL: f374:
; CHECK:         .functype f374 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    drop
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 1
  %t2 = extractvalue {i32, i32, i32} %t0, 1
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32, i32} %t0, 0
  call void @op_1_to_0(i32 %t3)
  ret void
}

define void @f376() {
; CHECK-LABEL: f376:
; CHECK:         .functype f376 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    drop
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 1
  %t2 = extractvalue {i32, i32, i32} %t0, 1
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32, i32} %t0, 2
  call void @op_1_to_0(i32 %t3)
  ret void
}

define void @f377() {
; CHECK-LABEL: f377:
; CHECK:         .functype f377 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    drop
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 1
  %t2 = extractvalue {i32, i32, i32} %t0, 1
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32, i32} %t0, 0
  %t4 = extractvalue {i32, i32, i32} %t0, 0
  call void @op_2_to_0(i32 %t3, i32 %t4)
  ret void
}

define void @f379() {
; CHECK-LABEL: f379:
; CHECK:         .functype f379 () -> ()
; CHECK-NEXT:    .local i32, i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 2
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    local.get 2
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 1
  %t2 = extractvalue {i32, i32, i32} %t0, 1
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32, i32} %t0, 0
  %t4 = extractvalue {i32, i32, i32} %t0, 2
  call void @op_2_to_0(i32 %t3, i32 %t4)
  ret void
}

define void @f383() {
; CHECK-LABEL: f383:
; CHECK:         .functype f383 () -> ()
; CHECK-NEXT:    .local i32, i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 2
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 2
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 1
  %t2 = extractvalue {i32, i32, i32} %t0, 1
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32, i32} %t0, 2
  %t4 = extractvalue {i32, i32, i32} %t0, 0
  call void @op_2_to_0(i32 %t3, i32 %t4)
  ret void
}

define void @f385() {
; CHECK-LABEL: f385:
; CHECK:         .functype f385 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    drop
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 1
  %t2 = extractvalue {i32, i32, i32} %t0, 1
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32, i32} %t0, 2
  %t4 = extractvalue {i32, i32, i32} %t0, 2
  call void @op_2_to_0(i32 %t3, i32 %t4)
  ret void
}

define void @f386() {
; CHECK-LABEL: f386:
; CHECK:         .functype f386 () -> ()
; CHECK-NEXT:    .local i32, i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 2
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    local.get 2
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 1
  %t2 = extractvalue {i32, i32, i32} %t0, 2
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32, i32} %t0, 0
  call void @op_1_to_0(i32 %t3)
  ret void
}

define void @f387() {
; CHECK-LABEL: f387:
; CHECK:         .functype f387 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    drop
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 1
  %t2 = extractvalue {i32, i32, i32} %t0, 2
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32, i32} %t0, 1
  call void @op_1_to_0(i32 %t3)
  ret void
}

define void @f388() {
; CHECK-LABEL: f388:
; CHECK:         .functype f388 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    drop
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 1
  %t2 = extractvalue {i32, i32, i32} %t0, 2
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32, i32} %t0, 2
  call void @op_1_to_0(i32 %t3)
  ret void
}

define void @f389() {
; CHECK-LABEL: f389:
; CHECK:         .functype f389 () -> ()
; CHECK-NEXT:    .local i32, i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 2
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    local.get 2
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 1
  %t2 = extractvalue {i32, i32, i32} %t0, 2
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32, i32} %t0, 0
  %t4 = extractvalue {i32, i32, i32} %t0, 0
  call void @op_2_to_0(i32 %t3, i32 %t4)
  ret void
}

define void @f390() {
; CHECK-LABEL: f390:
; CHECK:         .functype f390 () -> ()
; CHECK-NEXT:    .local i32, i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 2
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    local.get 2
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 1
  %t2 = extractvalue {i32, i32, i32} %t0, 2
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32, i32} %t0, 0
  %t4 = extractvalue {i32, i32, i32} %t0, 1
  call void @op_2_to_0(i32 %t3, i32 %t4)
  ret void
}

define void @f391() {
; CHECK-LABEL: f391:
; CHECK:         .functype f391 () -> ()
; CHECK-NEXT:    .local i32, i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 2
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    local.get 2
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    local.get 2
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 1
  %t2 = extractvalue {i32, i32, i32} %t0, 2
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32, i32} %t0, 0
  %t4 = extractvalue {i32, i32, i32} %t0, 2
  call void @op_2_to_0(i32 %t3, i32 %t4)
  ret void
}

define void @f392() {
; CHECK-LABEL: f392:
; CHECK:         .functype f392 () -> ()
; CHECK-NEXT:    .local i32, i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 2
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    local.get 2
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 1
  %t2 = extractvalue {i32, i32, i32} %t0, 2
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32, i32} %t0, 1
  %t4 = extractvalue {i32, i32, i32} %t0, 0
  call void @op_2_to_0(i32 %t3, i32 %t4)
  ret void
}

define void @f395() {
; CHECK-LABEL: f395:
; CHECK:         .functype f395 () -> ()
; CHECK-NEXT:    .local i32, i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 2
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    local.get 2
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 2
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 1
  %t2 = extractvalue {i32, i32, i32} %t0, 2
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32, i32} %t0, 2
  %t4 = extractvalue {i32, i32, i32} %t0, 0
  call void @op_2_to_0(i32 %t3, i32 %t4)
  ret void
}

define void @f396() {
; CHECK-LABEL: f396:
; CHECK:         .functype f396 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    drop
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 1
  %t2 = extractvalue {i32, i32, i32} %t0, 2
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32, i32} %t0, 2
  %t4 = extractvalue {i32, i32, i32} %t0, 1
  call void @op_2_to_0(i32 %t3, i32 %t4)
  ret void
}

define void @f398() {
; CHECK-LABEL: f398:
; CHECK:         .functype f398 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    drop
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 2
  %t2 = extractvalue {i32, i32, i32} %t0, 0
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32, i32} %t0, 0
  call void @op_1_to_0(i32 %t3)
  ret void
}

define void @f399() {
; CHECK-LABEL: f399:
; CHECK:         .functype f399 () -> ()
; CHECK-NEXT:    .local i32, i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 2
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.get 2
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 2
  %t2 = extractvalue {i32, i32, i32} %t0, 0
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32, i32} %t0, 1
  call void @op_1_to_0(i32 %t3)
  ret void
}

define void @f400() {
; CHECK-LABEL: f400:
; CHECK:         .functype f400 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    drop
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 2
  %t2 = extractvalue {i32, i32, i32} %t0, 0
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32, i32} %t0, 2
  call void @op_1_to_0(i32 %t3)
  ret void
}

define void @f402() {
; CHECK-LABEL: f402:
; CHECK:         .functype f402 () -> ()
; CHECK-NEXT:    .local i32, i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 2
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.get 2
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 2
  %t2 = extractvalue {i32, i32, i32} %t0, 0
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32, i32} %t0, 0
  %t4 = extractvalue {i32, i32, i32} %t0, 1
  call void @op_2_to_0(i32 %t3, i32 %t4)
  ret void
}

define void @f403() {
; CHECK-LABEL: f403:
; CHECK:         .functype f403 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    drop
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 2
  %t2 = extractvalue {i32, i32, i32} %t0, 0
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32, i32} %t0, 0
  %t4 = extractvalue {i32, i32, i32} %t0, 2
  call void @op_2_to_0(i32 %t3, i32 %t4)
  ret void
}

define void @f404() {
; CHECK-LABEL: f404:
; CHECK:         .functype f404 () -> ()
; CHECK-NEXT:    .local i32, i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 2
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.get 2
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 2
  %t2 = extractvalue {i32, i32, i32} %t0, 0
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32, i32} %t0, 1
  %t4 = extractvalue {i32, i32, i32} %t0, 0
  call void @op_2_to_0(i32 %t3, i32 %t4)
  ret void
}

define void @f405() {
; CHECK-LABEL: f405:
; CHECK:         .functype f405 () -> ()
; CHECK-NEXT:    .local i32, i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 2
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.get 2
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 2
  %t2 = extractvalue {i32, i32, i32} %t0, 0
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32, i32} %t0, 1
  %t4 = extractvalue {i32, i32, i32} %t0, 1
  call void @op_2_to_0(i32 %t3, i32 %t4)
  ret void
}

define void @f406() {
; CHECK-LABEL: f406:
; CHECK:         .functype f406 () -> ()
; CHECK-NEXT:    .local i32, i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 2
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.get 2
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    local.get 2
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 2
  %t2 = extractvalue {i32, i32, i32} %t0, 0
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32, i32} %t0, 1
  %t4 = extractvalue {i32, i32, i32} %t0, 2
  call void @op_2_to_0(i32 %t3, i32 %t4)
  ret void
}

define void @f408() {
; CHECK-LABEL: f408:
; CHECK:         .functype f408 () -> ()
; CHECK-NEXT:    .local i32, i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 2
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.get 2
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 2
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 2
  %t2 = extractvalue {i32, i32, i32} %t0, 0
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32, i32} %t0, 2
  %t4 = extractvalue {i32, i32, i32} %t0, 1
  call void @op_2_to_0(i32 %t3, i32 %t4)
  ret void
}

define void @f410() {
; CHECK-LABEL: f410:
; CHECK:         .functype f410 () -> ()
; CHECK-NEXT:    .local i32, i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 2
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.get 2
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 2
  %t2 = extractvalue {i32, i32, i32} %t0, 1
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32, i32} %t0, 0
  call void @op_1_to_0(i32 %t3)
  ret void
}

define void @f411() {
; CHECK-LABEL: f411:
; CHECK:         .functype f411 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    drop
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 2
  %t2 = extractvalue {i32, i32, i32} %t0, 1
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32, i32} %t0, 1
  call void @op_1_to_0(i32 %t3)
  ret void
}

define void @f412() {
; CHECK-LABEL: f412:
; CHECK:         .functype f412 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    drop
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 2
  %t2 = extractvalue {i32, i32, i32} %t0, 1
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32, i32} %t0, 2
  call void @op_1_to_0(i32 %t3)
  ret void
}

define void @f413() {
; CHECK-LABEL: f413:
; CHECK:         .functype f413 () -> ()
; CHECK-NEXT:    .local i32, i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 2
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.get 2
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 2
  %t2 = extractvalue {i32, i32, i32} %t0, 1
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32, i32} %t0, 0
  %t4 = extractvalue {i32, i32, i32} %t0, 0
  call void @op_2_to_0(i32 %t3, i32 %t4)
  ret void
}

define void @f414() {
; CHECK-LABEL: f414:
; CHECK:         .functype f414 () -> ()
; CHECK-NEXT:    .local i32, i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 2
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.get 2
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 2
  %t2 = extractvalue {i32, i32, i32} %t0, 1
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32, i32} %t0, 0
  %t4 = extractvalue {i32, i32, i32} %t0, 1
  call void @op_2_to_0(i32 %t3, i32 %t4)
  ret void
}

define void @f415() {
; CHECK-LABEL: f415:
; CHECK:         .functype f415 () -> ()
; CHECK-NEXT:    .local i32, i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 2
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.get 2
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    local.get 2
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 2
  %t2 = extractvalue {i32, i32, i32} %t0, 1
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32, i32} %t0, 0
  %t4 = extractvalue {i32, i32, i32} %t0, 2
  call void @op_2_to_0(i32 %t3, i32 %t4)
  ret void
}

define void @f416() {
; CHECK-LABEL: f416:
; CHECK:         .functype f416 () -> ()
; CHECK-NEXT:    .local i32, i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 2
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.get 2
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 2
  %t2 = extractvalue {i32, i32, i32} %t0, 1
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32, i32} %t0, 1
  %t4 = extractvalue {i32, i32, i32} %t0, 0
  call void @op_2_to_0(i32 %t3, i32 %t4)
  ret void
}

define void @f418() {
; CHECK-LABEL: f418:
; CHECK:         .functype f418 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    drop
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 2
  %t2 = extractvalue {i32, i32, i32} %t0, 1
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32, i32} %t0, 1
  %t4 = extractvalue {i32, i32, i32} %t0, 2
  call void @op_2_to_0(i32 %t3, i32 %t4)
  ret void
}

define void @f419() {
; CHECK-LABEL: f419:
; CHECK:         .functype f419 () -> ()
; CHECK-NEXT:    .local i32, i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 2
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.get 2
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 2
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 2
  %t2 = extractvalue {i32, i32, i32} %t0, 1
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32, i32} %t0, 2
  %t4 = extractvalue {i32, i32, i32} %t0, 0
  call void @op_2_to_0(i32 %t3, i32 %t4)
  ret void
}

define void @f422() {
; CHECK-LABEL: f422:
; CHECK:         .functype f422 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    drop
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 2
  %t2 = extractvalue {i32, i32, i32} %t0, 2
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32, i32} %t0, 0
  call void @op_1_to_0(i32 %t3)
  ret void
}

define void @f423() {
; CHECK-LABEL: f423:
; CHECK:         .functype f423 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    drop
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_1_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 2
  %t2 = extractvalue {i32, i32, i32} %t0, 2
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32, i32} %t0, 1
  call void @op_1_to_0(i32 %t3)
  ret void
}

define void @f425() {
; CHECK-LABEL: f425:
; CHECK:         .functype f425 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    drop
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 2
  %t2 = extractvalue {i32, i32, i32} %t0, 2
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32, i32} %t0, 0
  %t4 = extractvalue {i32, i32, i32} %t0, 0
  call void @op_2_to_0(i32 %t3, i32 %t4)
  ret void
}

define void @f426() {
; CHECK-LABEL: f426:
; CHECK:         .functype f426 () -> ()
; CHECK-NEXT:    .local i32, i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 2
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.get 2
; CHECK-NEXT:    local.get 2
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 2
  %t2 = extractvalue {i32, i32, i32} %t0, 2
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32, i32} %t0, 0
  %t4 = extractvalue {i32, i32, i32} %t0, 1
  call void @op_2_to_0(i32 %t3, i32 %t4)
  ret void
}

define void @f428() {
; CHECK-LABEL: f428:
; CHECK:         .functype f428 () -> ()
; CHECK-NEXT:    .local i32, i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 2
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    local.get 2
; CHECK-NEXT:    local.get 2
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 2
  %t2 = extractvalue {i32, i32, i32} %t0, 2
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32, i32} %t0, 1
  %t4 = extractvalue {i32, i32, i32} %t0, 0
  call void @op_2_to_0(i32 %t3, i32 %t4)
  ret void
}

define void @f429() {
; CHECK-LABEL: f429:
; CHECK:         .functype f429 () -> ()
; CHECK-NEXT:    .local i32, i32
; CHECK-NEXT:  # %bb.0:
; CHECK-NEXT:    call op_0_to_3
; CHECK-NEXT:    local.set 1
; CHECK-NEXT:    local.set 0
; CHECK-NEXT:    drop
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    local.get 1
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    local.get 0
; CHECK-NEXT:    call op_2_to_0
; CHECK-NEXT:    # fallthrough-return
  %t0 = call {i32, i32, i32} @op_0_to_3()
  %t1 = extractvalue {i32, i32, i32} %t0, 2
  %t2 = extractvalue {i32, i32, i32} %t0, 2
  call void @op_2_to_0(i32 %t1, i32 %t2)
  %t3 = extractvalue {i32, i32, i32} %t0, 1
  %t4 = extractvalue {i32, i32, i32} %t0, 1
  call void @op_2_to_0(i32 %t3, i32 %t4)
  ret void
}

