// RUN: %target-swift-frontend %s -assume-parsing-unqualified-ownership-sil -emit-sil -O -o - -sil-verify-all | %FileCheck %s

sil_stage canonical

import Builtin
import Swift
import SwiftShims

// top_level_code
sil private @top_level_code : $@convention(thin) () -> () {
bb0:
  %0 = tuple ()                                   // user: %1
  return %0 : $()                                 // id: %1
}

struct BuiltinWord {
  var value: Builtin.Word
}

struct BuiltinUWord {
  var value: Builtin.Word
}

// peephole: Word(Int64(x >> 1)) -> (x >> 1)
// CHECK-LABEL: sil @_TF4test29test_trunc_u_to_s_zext_lshr_1FSuSi : $@convention(thin) (BuiltinUWord) -> BuiltinWord
// CHECK: builtin "lshr_Word"
// CHECK-NOT: builtin "zextOrBitCast_Word_Int64"
// CHECK-NOT: builtin "u_to_s_checked_conversion_Int64"
// CHECK-NOT: builtin "truncOrBitCast_Int64_Word"
// CHECK: return
// test.test_trunc_u_to_s_zext_lshr_1 (BuiltinUWord) -> Swift.BuiltinWord
sil @_TF4test29test_trunc_u_to_s_zext_lshr_1FSuSi : $@convention(thin) (BuiltinUWord) -> BuiltinWord {
bb0(%0 : $BuiltinUWord):
  debug_value %0 : $BuiltinUWord, let, name "x" // id: %1
  %2 = integer_literal $Builtin.Word, 1           // user: %7
  br bb1                                          // id: %3

bb1:                                              // Preds: bb0
  br bb2                                          // id: %4

bb2:                                              // Preds: bb1
  %6 = struct_extract %0 : $BuiltinUWord, #BuiltinUWord.value     // user: %7
  %7 = builtin "lshr_Word"(%6 : $Builtin.Word, %2 : $Builtin.Word) : $Builtin.Word // user: %8
  %8 = struct $BuiltinUWord (%7 : $Builtin.Word)  // user: %11
  br bb3                                          // id: %9

bb3:                                              // Preds: bb2
  %11 = struct_extract %8 : $BuiltinUWord, #BuiltinUWord.value    // user: %12
  %12 = builtin "zextOrBitCast_Word_Int64"(%11 : $Builtin.Word) : $Builtin.Int64 // user: %14
  %14 = builtin "u_to_s_checked_conversion_Int64"(%12 : $Builtin.Int64) : $(Builtin.Int64, Builtin.Int1) // users: %15, %16
  %15 = tuple_extract %14 : $(Builtin.Int64, Builtin.Int1), 0 // user: %18
  %16 = tuple_extract %14 : $(Builtin.Int64, Builtin.Int1), 1 // user: %17
  cond_fail %16 : $Builtin.Int1                   // id: %17
  %18 = struct $Int64 (%15 : $Builtin.Int64)      // user: %19
  %19 = struct_extract %18 : $Int64, #Int64._value // user: %21
  %21 = builtin "truncOrBitCast_Int64_Word"(%19 : $Builtin.Int64) : $Builtin.Word // user: %22
  %22 = struct $BuiltinWord (%21 : $Builtin.Word) // users: %23, %24
  debug_value %22 : $BuiltinWord, let, name "v1" // id: %23
  return %22 : $BuiltinWord                       // id: %24
}


// peephole: Word(Int64(x >> 10)) -> (x >> 1)
// CHECK-LABEL: sil @_TF4test30test_trunc_u_to_s_zext_lshr_10FSuSi : $@convention(thin) (BuiltinUWord) -> BuiltinWord
// CHECK: builtin "lshr_Word"
// CHECK-NOT: builtin "zextOrBitCast_Word_Int64"
// CHECK-NOT: builtin "u_to_s_checked_conversion_Int64"
// CHECK-NOT: builtin "truncOrBitCast_Int64_Word"
// CHECK: return
// test.test_trunc_u_to_s_zext_lshr_10 (Swift.BuiltinUWord) -> Swift.BuiltinWord
sil @_TF4test30test_trunc_u_to_s_zext_lshr_10FSuSi : $@convention(thin) (BuiltinUWord) -> BuiltinWord {
bb0(%0 : $BuiltinUWord):
  debug_value %0 : $BuiltinUWord, let, name "x" // id: %1
  %2 = integer_literal $Builtin.Word, 10          // user: %7
  br bb1                                          // id: %3

bb1:                                              // Preds: bb0
  br bb2                                          // id: %4

bb2:                                              // Preds: bb1
  %6 = struct_extract %0 : $BuiltinUWord, #BuiltinUWord.value     // user: %7
  %7 = builtin "lshr_Word"(%6 : $Builtin.Word, %2 : $Builtin.Word) : $Builtin.Word // user: %8
  %8 = struct $BuiltinUWord (%7 : $Builtin.Word)          // user: %11
  br bb3                                          // id: %9

bb3:                                              // Preds: bb2
  %11 = struct_extract %8 : $BuiltinUWord, #BuiltinUWord.value    // user: %12
  %12 = builtin "zextOrBitCast_Word_Int64"(%11 : $Builtin.Word) : $Builtin.Int64 // user: %14
  %14 = builtin "u_to_s_checked_conversion_Int64"(%12 : $Builtin.Int64) : $(Builtin.Int64, Builtin.Int1) // users: %15, %16
  %15 = tuple_extract %14 : $(Builtin.Int64, Builtin.Int1), 0 // user: %18
  %16 = tuple_extract %14 : $(Builtin.Int64, Builtin.Int1), 1 // user: %17
  cond_fail %16 : $Builtin.Int1                   // id: %17
  %18 = struct $Int64 (%15 : $Builtin.Int64)      // user: %19
  %19 = struct_extract %18 : $Int64, #Int64._value // user: %21
  %21 = builtin "truncOrBitCast_Int64_Word"(%19 : $Builtin.Int64) : $Builtin.Word // user: %22
  %22 = struct $BuiltinWord (%21 : $Builtin.Word)         // users: %23, %24
  debug_value %22 : $BuiltinWord, let, name "v1" // id: %23
  return %22 : $BuiltinWord                               // id: %24
}

// no peephole: Word(Int64(x >> c)), where c is a variable
// This should not trigger the optimization as it is not known if c > 0
// CHECK-LABEL: sil @_TF4test31test_trunc_u_to_s_zext_lshr_varFTSuSu_Si : $@convention(thin) (BuiltinUWord, BuiltinUWord) -> BuiltinWord
// CHECK: builtin "u_to_s_checked_conversion_Int64"
// CHECK: builtin "truncOrBitCast_Int64_Word"
// CHECK: return
// test.test_trunc_u_to_s_zext_lshr_var (Swift.BuiltinUWord, Swift.BuiltinUWord) -> Swift.BuiltinWord
sil @_TF4test31test_trunc_u_to_s_zext_lshr_varFTSuSu_Si : $@convention(thin) (BuiltinUWord, BuiltinUWord) -> BuiltinWord {
bb0(%0 : $BuiltinUWord, %1 : $BuiltinUWord):
  debug_value %0 : $BuiltinUWord, let, name "x" // id: %2
  debug_value %1 : $BuiltinUWord, let, name "c" // id: %3
  %4 = tuple ()
  %5 = tuple ()
  %6 = tuple ()
  %7 = tuple ()
  %8 = tuple ()
  %9 = tuple ()
  %10 = tuple ()
  %11 = tuple ()
  %12 = tuple ()
  br bb1                                          // id: %13

bb1:                                              // Preds: bb0
  %14 = integer_literal $Builtin.Word, 64         // user: %17
  %16 = struct_extract %1 : $BuiltinUWord, #BuiltinUWord.value    // user: %17
  %17 = builtin "cmp_ult_Word"(%16 : $Builtin.Word, %14 : $Builtin.Word) : $Builtin.Int1 // user: %20
  %18 = integer_literal $Builtin.Int1, -1         // user: %20
  %20 = builtin "int_expect_Int1"(%17 : $Builtin.Int1, %18 : $Builtin.Int1) : $Builtin.Int1 // user: %21
  cond_br %20, bb2, bb3                           // id: %21

bb2:                                              // Preds: bb1
  %23 = struct_extract %0 : $BuiltinUWord, #BuiltinUWord.value    // user: %25
  %24 = struct_extract %1 : $BuiltinUWord, #BuiltinUWord.value    // user: %25
  %25 = builtin "lshr_Word"(%23 : $Builtin.Word, %24 : $Builtin.Word) : $Builtin.Word // user: %26
  %26 = struct $BuiltinUWord (%25 : $Builtin.Word)        // user: %35
  br bb4                                          // id: %27

bb3:                                              // Preds: bb1
  %28 = function_ref @fatalError : $@convention(thin) () -> Never // user: %32
  %29 = tuple ()
  %30 = tuple ()
  %31 = tuple ()
  %32 = apply %28() : $@convention(thin) () -> Never
  unreachable                                     // id: %33

bb4:                                              // Preds: bb2
  %35 = struct_extract %26 : $BuiltinUWord, #BuiltinUWord.value   // user: %36
  %36 = builtin "zextOrBitCast_Word_Int64"(%35 : $Builtin.Word) : $Builtin.Int64 // user: %38
  %38 = builtin "u_to_s_checked_conversion_Int64"(%36 : $Builtin.Int64) : $(Builtin.Int64, Builtin.Int1) // users: %39, %40
  %39 = tuple_extract %38 : $(Builtin.Int64, Builtin.Int1), 0 // user: %42
  %40 = tuple_extract %38 : $(Builtin.Int64, Builtin.Int1), 1 // user: %41
  cond_fail %40 : $Builtin.Int1                   // id: %41
  %42 = struct $Int64 (%39 : $Builtin.Int64)      // user: %43
  %43 = struct_extract %42 : $Int64, #Int64._value // user: %45
  %45 = builtin "truncOrBitCast_Int64_Word"(%43 : $Builtin.Int64) : $Builtin.Word // user: %46
  %46 = struct $BuiltinWord (%45 : $Builtin.Word)         // users: %47, %48
  debug_value %46 : $BuiltinWord, let, name "v1" // id: %47
  return %46 : $BuiltinWord                               // id: %48
}

// peephole: UInt16(Int32(x >> 1)) -> (x >> 1)
// CHECK-LABEL: sil @_TF4test36test_uint16_trunc_u_to_s_zext_lshr_1FVs6UInt16S0_ : $@convention(thin) (UInt16) -> UInt16
// CHECK: builtin "lshr_Int16"
// CHECK-NOT: builtin "zext_Int16_Int32"
// CHECK-NOT: builtin "s_to_u_checked_trunc_Int32_Int16"
// CHECK-NOT: tuple_extract
// CHECK: return
// test.test_uint16_trunc_u_to_s_zext_lshr_1 (Swift.UInt16) -> Swift.UInt16
sil @_TF4test36test_uint16_trunc_u_to_s_zext_lshr_1FVs6UInt16S0_ : $@convention(thin) (UInt16) -> UInt16 {
bb0(%0 : $UInt16):
  debug_value %0 : $UInt16, let, name "x" // id: %1
  %2 = integer_literal $Builtin.Int16, 1          // user: %7
  br bb1                                          // id: %3

bb1:                                              // Preds: bb0
  br bb2                                          // id: %4

bb2:                                              // Preds: bb1
  %6 = struct_extract %0 : $UInt16, #UInt16._value // user: %7
  %7 = builtin "lshr_Int16"(%6 : $Builtin.Int16, %2 : $Builtin.Int16) : $Builtin.Int16 // user: %8
  %8 = struct $UInt16 (%7 : $Builtin.Int16)       // user: %10
  br bb3                                          // id: %9

bb3:                                              // Preds: bb2
  %10 = struct_extract %8 : $UInt16, #UInt16._value // user: %12
  %12 = builtin "zext_Int16_Int32"(%10 : $Builtin.Int16) : $Builtin.Int32 // user: %13
  %13 = struct $Int32 (%12 : $Builtin.Int32)      // user: %14
  %14 = struct_extract %13 : $Int32, #Int32._value // user: %16
  %16 = builtin "s_to_u_checked_trunc_Int32_Int16"(%14 : $Builtin.Int32) : $(Builtin.Int16, Builtin.Int1) // users: %17, %18
  %17 = tuple_extract %16 : $(Builtin.Int16, Builtin.Int1), 0 // user: %20
  %18 = tuple_extract %16 : $(Builtin.Int16, Builtin.Int1), 1 // user: %19
  cond_fail %18 : $Builtin.Int1                   // id: %19
  %20 = struct $UInt16 (%17 : $Builtin.Int16)     // users: %21, %22
  debug_value %20 : $UInt16, let, name "v1" // id: %21
  return %20 : $UInt16                            // id: %22
}


// peephole: Int16(Int32(x >> 1)) -> (x >> 1)
// CHECK-LABEL: sil @_TF4test35test_int16_trunc_u_to_s_zext_lshr_1FVs6UInt16Vs5Int16 : $@convention(thin) (UInt16) -> Int16
// CHECK: builtin "lshr_Int16"
// CHECK-NOT: builtin "zext_Int16_Int32"
// CHECK-NOT: builtin "s_to_u_checked_trunc_Int32_Int16"
// CHECK-NOT: tuple_extract
// CHECK: return
// test.test_int16_trunc_u_to_s_zext_lshr_1 (Swift.UInt16) -> Swift.Int16
sil @_TF4test35test_int16_trunc_u_to_s_zext_lshr_1FVs6UInt16Vs5Int16 : $@convention(thin) (UInt16) -> Int16 {
bb0(%0 : $UInt16):
  debug_value %0 : $UInt16, let, name "x" // id: %1
  %2 = integer_literal $Builtin.Int16, 1          // user: %7
  br bb1                                          // id: %3

bb1:                                              // Preds: bb0
  br bb2                                          // id: %4

bb2:                                              // Preds: bb1
  %6 = struct_extract %0 : $UInt16, #UInt16._value // user: %7
  %7 = builtin "lshr_Int16"(%6 : $Builtin.Int16, %2 : $Builtin.Int16) : $Builtin.Int16 // user: %8
  %8 = struct $UInt16 (%7 : $Builtin.Int16)       // user: %10
  br bb3                                          // id: %9

bb3:                                              // Preds: bb2
  %10 = struct_extract %8 : $UInt16, #UInt16._value // user: %12
  %12 = builtin "zext_Int16_Int32"(%10 : $Builtin.Int16) : $Builtin.Int32 // user: %13
  %13 = struct $Int32 (%12 : $Builtin.Int32)      // user: %14
  %14 = struct_extract %13 : $Int32, #Int32._value // user: %16
  %16 = builtin "s_to_s_checked_trunc_Int32_Int16"(%14 : $Builtin.Int32) : $(Builtin.Int16, Builtin.Int1) // users: %17, %18
  %17 = tuple_extract %16 : $(Builtin.Int16, Builtin.Int1), 0 // user: %20
  %18 = tuple_extract %16 : $(Builtin.Int16, Builtin.Int1), 1 // user: %19
  cond_fail %18 : $Builtin.Int1                   // id: %19
  %20 = struct $Int16 (%17 : $Builtin.Int16)      // users: %21, %22
  debug_value %20 : $Int16, let, name "v1" // id: %21
  return %20 : $Int16                             // id: %22
}

// No peephole for UWord(UInt64(x)), because it is not known if top bit of x is set
// CHECK-LABEL: sil @_TF4test26test_trunc_s_to_u_zext_varFSiSu : $@convention(thin) (BuiltinWord) -> BuiltinUWord
// This should not trigger the optimization as it is not known if top bit of x is set
// CHECK: builtin "zextOrBitCast_Word_Int64"
// CHECK: builtin "s_to_u_checked_conversion_Int64"
// CHECK: builtin "truncOrBitCast_Int64_Word"
// CHECK: return
// test.test_trunc_s_to_u_zext_var (Swift.BuiltinWord) -> Swift.BuiltinUWord
sil @_TF4test26test_trunc_s_to_u_zext_varFSiSu : $@convention(thin) (BuiltinWord) -> BuiltinUWord {
bb0(%0 : $BuiltinWord):
  debug_value %0 : $BuiltinWord, let, name "x" // id: %1
  %3 = struct_extract %0 : $BuiltinWord, #BuiltinWord.value // user: %4
  %4 = builtin "zextOrBitCast_Word_Int64"(%3 : $Builtin.Word) : $Builtin.Int64 // user: %6
  %6 = builtin "s_to_u_checked_conversion_Int64"(%4 : $Builtin.Int64) : $(Builtin.Int64, Builtin.Int1) // users: %7, %8
  %7 = tuple_extract %6 : $(Builtin.Int64, Builtin.Int1), 0 // user: %10
  %8 = tuple_extract %6 : $(Builtin.Int64, Builtin.Int1), 1 // user: %9
  cond_fail %8 : $Builtin.Int1                              // id: %9
  %10 = struct $UInt64 (%7 : $Builtin.Int64)                // user: %11
  %11 = struct_extract %10 : $UInt64, #UInt64._value         // user: %13
  %13 = builtin "truncOrBitCast_Int64_Word"(%11 : $Builtin.Int64) : $Builtin.Word // user: %14
  %14 = struct $BuiltinUWord (%13 : $Builtin.Word)          // user: %15
  return %14 : $BuiltinUWord                                // id: %15
}


// sizeof is known to return strictly positive values
// peephole: UWord(UInt64(sizeof(Int.self))) -> sizeof(Int.self)
// CHECK-LABEL: sil @_TF4test29test_trunc_s_to_u_zext_sizeofFT_Su : $@convention(thin) () -> BuiltinUWord
// CHECK: builtin "sizeof"
// CHECK-NOT: builtin "zextOrBitCast_Word_Int64"
// CHECK-NOT: builtin "s_to_u_checked_conversion_Int64"
// CHECK-NOT: builtin "truncOrBitCast_Int64_Word"
// CHECK: return
// test.test_trunc_s_to_u_zext_sizeof () -> Swift.BuiltinUWord
sil @_TF4test29test_trunc_s_to_u_zext_sizeofFT_Su : $@convention(thin) () -> BuiltinUWord {
bb0:
  %0 = metatype $@thin BuiltinWord.Type
  %2 = metatype $@thick BuiltinWord.Type                      // user: %3
  %3 = builtin "sizeof"<(BuiltinWord)>(%2 : $@thick (BuiltinWord).Type) : $Builtin.Word // user: %4
  %4 = struct $BuiltinWord (%3 : $Builtin.Word)              // user: %6
  %6 = struct_extract %4 : $BuiltinWord, #BuiltinWord.value  // user: %7
  %7 = builtin "zextOrBitCast_Word_Int64"(%6 : $Builtin.Word) : $Builtin.Int64 // user: %9
  %9 = builtin "s_to_u_checked_conversion_Int64"(%7 : $Builtin.Int64) : $(Builtin.Int64, Builtin.Int1) // users: %10, %11
  %10 = tuple_extract %9 : $(Builtin.Int64, Builtin.Int1), 0 // user: %13
  %11 = tuple_extract %9 : $(Builtin.Int64, Builtin.Int1), 1 // user: %12
  cond_fail %11 : $Builtin.Int1                              // id: %12
  %13 = struct $UInt64 (%10 : $Builtin.Int64)                // user: %14
  %14 = struct_extract %13 : $UInt64, #UInt64._value          // user: %16
  %16 = builtin "truncOrBitCast_Int64_Word"(%14 : $Builtin.Int64) : $Builtin.Word // user: %17
  %17 = struct $BuiltinUWord (%16 : $Builtin.Word)           // user: %18
  return %17 : $BuiltinUWord                                 // id: %18
}


// sizeof is known to return strictly positive values
// But Word ->Int64 is not a safe conversion
// No peephole for UInt16(UInt32(sizeof(Int.self)))
// CHECK-LABEL: sil @_TF4test35test_int16_trunc_s_to_u_zext_sizeofFT_Vs6UInt16 : $@convention(thin) () -> UInt16
// CHECK: builtin "zextOrBitCast_Word_Int64"
// CHECK: builtin "s_to_u_checked_trunc_Int64_Int32"
// CHECK: builtin "u_to_u_checked_trunc_Int32_Int16"
// CHECK: return
// test.test_int16_trunc_s_to_u_zext_sizeof () -> Swift.UInt16
sil @_TF4test35test_int16_trunc_s_to_u_zext_sizeofFT_Vs6UInt16 : $@convention(thin) () -> UInt16 {
bb0:
  %0 = metatype $@thin Int.Type
  %2 = metatype $@thick Int.Type                  // user: %3
  %3 = builtin "sizeof"<(Int)>(%2 : $@thick (Int).Type) : $Builtin.Word // user: %4
  %4 = tuple ()
  %6 = tuple ()
  %7 = builtin "zextOrBitCast_Word_Int64"(%3 : $Builtin.Word) : $Builtin.Int64 // user: %9
  %9 = builtin "s_to_u_checked_trunc_Int64_Int32"(%7 : $Builtin.Int64) : $(Builtin.Int32, Builtin.Int1) // users: %10, %11
  %10 = tuple_extract %9 : $(Builtin.Int32, Builtin.Int1), 0 // user: %13
  %11 = tuple_extract %9 : $(Builtin.Int32, Builtin.Int1), 1 // user: %12
  cond_fail %11 : $Builtin.Int1                   // id: %12
  %13 = struct $UInt32 (%10 : $Builtin.Int32)     // user: %14
  %14 = struct_extract %13 : $UInt32, #UInt32._value // user: %16
  %16 = builtin "u_to_u_checked_trunc_Int32_Int16"(%14 : $Builtin.Int32) : $(Builtin.Int16, Builtin.Int1) // users: %17, %18
  %17 = tuple_extract %16 : $(Builtin.Int16, Builtin.Int1), 0 // user: %20
  %18 = tuple_extract %16 : $(Builtin.Int16, Builtin.Int1), 1 // user: %19
  cond_fail %18 : $Builtin.Int1                   // id: %19
  %20 = struct $UInt16 (%17 : $Builtin.Int16)     // user: %21
  return %20 : $UInt16                            // id: %21
}


// peephole: UInt16(UInt32(Int16(x>>1))) -> x>>1
// CHECK-LABEL: sil @_TF4test34test_int16_trunc_s_to_u_zext_int16FVs6UInt16S0_ : $@convention(thin) (UInt16) -> UInt16
// CHECK: builtin "lshr_Int16"
// CHECK-NOT: builtin "u_to_s_checked_conversion_Int16"
// CHECK-NOT: builtin "s_to_u_checked_conversion_Int16"
// CHECK-NOT: builtin "sext_Int16_Int32"
// CHECK-NOT: builtin "u_to_u_checked_trunc_Int32_Int16"
// CHECK-NOT: tuple_extract
// CHECK: return
// test.test_int16_trunc_s_to_u_zext_int16 (Swift.UInt16) -> Swift.UInt16
sil @_TF4test34test_int16_trunc_s_to_u_zext_int16FVs6UInt16S0_ : $@convention(thin) (UInt16) -> UInt16 {
bb0(%0 : $UInt16):
  debug_value %0 : $UInt16, let, name "x" // id: %1
  %2 = integer_literal $Builtin.Int16, 1          // user: %7
  br bb1                                          // id: %3

bb1:                                              // Preds: bb0
  br bb2                                          // id: %4

bb2:                                              // Preds: bb1
  %6 = struct_extract %0 : $UInt16, #UInt16._value // user: %7
  %7 = builtin "lshr_Int16"(%6 : $Builtin.Int16, %2 : $Builtin.Int16) : $Builtin.Int16 // user: %8
  %8 = struct $UInt16 (%7 : $Builtin.Int16)       // user: %10
  br bb3                                          // id: %9

bb3:                                              // Preds: bb2
  %10 = struct_extract %8 : $UInt16, #UInt16._value // user: %12
  %12 = builtin "u_to_s_checked_conversion_Int16"(%10 : $Builtin.Int16) : $(Builtin.Int16, Builtin.Int1) // users: %13, %14
  %13 = tuple_extract %12 : $(Builtin.Int16, Builtin.Int1), 0 // user: %16
  %14 = tuple_extract %12 : $(Builtin.Int16, Builtin.Int1), 1 // user: %15
  cond_fail %14 : $Builtin.Int1                   // id: %15
  %16 = struct $Int16 (%13 : $Builtin.Int16)      // user: %17
  %17 = struct_extract %16 : $Int16, #Int16._value // user: %19
  %19 = builtin "s_to_u_checked_conversion_Int16"(%17 : $Builtin.Int16) : $(Builtin.Int16, Builtin.Int1) // users: %20, %21
  %20 = tuple_extract %19 : $(Builtin.Int16, Builtin.Int1), 0 // user: %24
  %21 = tuple_extract %19 : $(Builtin.Int16, Builtin.Int1), 1 // user: %22
  cond_fail %21 : $Builtin.Int1                   // id: %22
  %24 = builtin "sext_Int16_Int32"(%20 : $Builtin.Int16) : $Builtin.Int32 // user: %25
  %25 = struct $UInt32 (%24 : $Builtin.Int32)     // user: %26
  %26 = struct_extract %25 : $UInt32, #UInt32._value // user: %28
  %28 = builtin "u_to_u_checked_trunc_Int32_Int16"(%26 : $Builtin.Int32) : $(Builtin.Int16, Builtin.Int1) // users: %29, %30
  %29 = tuple_extract %28 : $(Builtin.Int16, Builtin.Int1), 0 // user: %32
  %30 = tuple_extract %28 : $(Builtin.Int16, Builtin.Int1), 1 // user: %31
  cond_fail %30 : $Builtin.Int1                   // id: %31
  %32 = struct $UInt16 (%29 : $Builtin.Int16)     // user: %33
  return %32 : $UInt16                            // id: %33
}

// peephole: Int8(x & 127) -> remove overflow check
// CHECK-LABEL: sil @_TF22peephole_trunc_and_ext32test_s_to_s_checked_trunc_of_andFVs5Int32Vs4Int8 : $@convention(thin) (Int32) -> Int8
// CHECK: builtin "and_Int32"
// CHECK: builtin "s_to_s_checked_trunc_Int32_Int8"
// CHECK-NOT: cond_fail
// CHECK: return
// peephole_trunc_and_ext.test_s_to_s_checked_trunc_of_and (Swift.Int32) -> Swift.Int8
sil @_TF22peephole_trunc_and_ext32test_s_to_s_checked_trunc_of_andFVs5Int32Vs4Int8 : $@convention(thin) (Int32) -> Int8 {
bb0(%0 : $Int32):
  debug_value %0 : $Int32, let, name "x" // id: %1
  %2 = integer_literal $Builtin.Int32, 127        // user: %5
  %4 = struct_extract %0 : $Int32, #Int32._value   // user: %5
  %5 = builtin "and_Int32"(%4 : $Builtin.Int32, %2 : $Builtin.Int32) : $Builtin.Int32 // user: %6
  %6 = struct $Int32 (%5 : $Builtin.Int32)        // user: %7
  %7 = struct_extract %6 : $Int32, #Int32._value   // user: %9
  %9 = builtin "s_to_s_checked_trunc_Int32_Int8"(%7 : $Builtin.Int32) : $(Builtin.Int8, Builtin.Int1) // users: %10, %11
  %10 = tuple_extract %9 : $(Builtin.Int8, Builtin.Int1), 0 // user: %13
  %11 = tuple_extract %9 : $(Builtin.Int8, Builtin.Int1), 1 // user: %12
  cond_fail %11 : $Builtin.Int1                   // id: %12
  %13 = struct $Int8 (%10 : $Builtin.Int8)        // user: %14
  return %13 : $Int8                              // id: %14
}

// peephole: UInt8(x & 255) -> remove overflow check
// CHECK-LABEL: sil @_TF22peephole_trunc_and_ext32test_s_to_u_checked_trunc_of_andFVs5Int32Vs5UInt8 : $@convention(thin) (Int32) -> UInt8
// CHECK: builtin "and_Int32"
// CHECK: builtin "s_to_u_checked_trunc_Int32_Int8"
// CHECK-NOT: cond_fail
// CHECK: return
// peephole_trunc_and_ext.test_s_to_u_checked_trunc_of_and (Swift.Int32) -> Swift.UInt8
sil @_TF22peephole_trunc_and_ext32test_s_to_u_checked_trunc_of_andFVs5Int32Vs5UInt8 : $@convention(thin) (Int32) -> UInt8 {
bb0(%0 : $Int32):
  debug_value %0 : $Int32, let, name "x" // id: %1
  %2 = integer_literal $Builtin.Int32, 255        // user: %5
  %4 = struct_extract %0 : $Int32, #Int32._value   // user: %5
  %5 = builtin "and_Int32"(%4 : $Builtin.Int32, %2 : $Builtin.Int32) : $Builtin.Int32 // user: %6
  %6 = struct $Int32 (%5 : $Builtin.Int32)        // user: %7
  %7 = struct_extract %6 : $Int32, #Int32._value   // user: %9
  %9 = builtin "s_to_u_checked_trunc_Int32_Int8"(%7 : $Builtin.Int32) : $(Builtin.Int8, Builtin.Int1) // users: %10, %11
  %10 = tuple_extract %9 : $(Builtin.Int8, Builtin.Int1), 0 // user: %13
  %11 = tuple_extract %9 : $(Builtin.Int8, Builtin.Int1), 1 // user: %12
  cond_fail %11 : $Builtin.Int1                   // id: %12
  %13 = struct $UInt8 (%10 : $Builtin.Int8)       // user: %14
  return %13 : $UInt8                             // id: %14
}

// peephole: UInt8(x & 255) -> remove overflow check
// CHECK-LABEL: sil @_TF22peephole_trunc_and_ext32test_u_to_u_checked_trunc_of_andFVs6UInt32Vs5UInt8 : $@convention(thin) (UInt32) -> UInt8
// CHECK: builtin "and_Int32"
// CHECK: builtin "u_to_u_checked_trunc_Int32_Int8"
// CHECK-NOT: cond_fail
// CHECK: return
// peephole_trunc_and_ext.test_u_to_u_checked_trunc_of_and (Swift.UInt32) -> Swift.UInt8
sil @_TF22peephole_trunc_and_ext32test_u_to_u_checked_trunc_of_andFVs6UInt32Vs5UInt8 : $@convention(thin) (UInt32) -> UInt8 {
bb0(%0 : $UInt32):
  debug_value %0 : $UInt32, let, name "x" // id: %1
  %2 = integer_literal $Builtin.Int32, 255        // user: %5
  %4 = struct_extract %0 : $UInt32, #UInt32._value // user: %5
  %5 = builtin "and_Int32"(%4 : $Builtin.Int32, %2 : $Builtin.Int32) : $Builtin.Int32 // user: %6
  %6 = struct $UInt32 (%5 : $Builtin.Int32)       // user: %7
  %7 = struct_extract %6 : $UInt32, #UInt32._value // user: %9
  %9 = builtin "u_to_u_checked_trunc_Int32_Int8"(%7 : $Builtin.Int32) : $(Builtin.Int8, Builtin.Int1) // users: %10, %11
  %10 = tuple_extract %9 : $(Builtin.Int8, Builtin.Int1), 0 // user: %13
  %11 = tuple_extract %9 : $(Builtin.Int8, Builtin.Int1), 1 // user: %12
  cond_fail %11 : $Builtin.Int1                   // id: %12
  %13 = struct $UInt8 (%10 : $Builtin.Int8)       // user: %14
  return %13 : $UInt8                             // id: %14
}

// peephole: Int8(x & 127) -> remove overflow check
// CHECK-LABEL: sil @_TF22peephole_trunc_and_ext32test_u_to_s_checked_trunc_of_andFVs6UInt32Vs4Int8 : $@convention(thin) (UInt32) -> Int8
// CHECK: builtin "and_Int32"
// CHECK: builtin "u_to_s_checked_trunc_Int32_Int8"
// CHECK-NOT: cond_fail
// CHECK: return
// peephole_trunc_and_ext.test_u_to_s_checked_trunc_of_and (Swift.UInt32) -> Swift.Int8
sil @_TF22peephole_trunc_and_ext32test_u_to_s_checked_trunc_of_andFVs6UInt32Vs4Int8 : $@convention(thin) (UInt32) -> Int8 {
bb0(%0 : $UInt32):
  debug_value %0 : $UInt32, let, name "x" // id: %1
  %2 = integer_literal $Builtin.Int32, 127        // user: %5
  %4 = struct_extract %0 : $UInt32, #UInt32._value // user: %5
  %5 = builtin "and_Int32"(%4 : $Builtin.Int32, %2 : $Builtin.Int32) : $Builtin.Int32 // user: %6
  %6 = struct $UInt32 (%5 : $Builtin.Int32)       // user: %7
  %7 = struct_extract %6 : $UInt32, #UInt32._value // user: %9
  %9 = builtin "u_to_s_checked_trunc_Int32_Int8"(%7 : $Builtin.Int32) : $(Builtin.Int8, Builtin.Int1) // users: %10, %11
  %10 = tuple_extract %9 : $(Builtin.Int8, Builtin.Int1), 0 // user: %13
  %11 = tuple_extract %9 : $(Builtin.Int8, Builtin.Int1), 1 // user: %12
  cond_fail %11 : $Builtin.Int1                   // id: %12
  %13 = struct $Int8 (%10 : $Builtin.Int8)       // user: %14
  return %13 : $Int8                             // id: %14
}

sil [noinline] @fatalError : $@convention(thin) () -> Never
