// RUN: %swift -target x86_64-apple-macosx10.9 %s -gnone -emit-ir -o - | %FileCheck %s -check-prefix=INTEL
// RUN: %swift -target armv7-apple-ios7 %s -gnone -emit-ir -o - | %FileCheck %s -check-prefix=ARM32

// REQUIRES: CODEGENERATOR=X86
// REQUIRES: CODEGENERATOR=ARM

sil_stage canonical
import Builtin

// INTEL: define{{( protected)?}} swiftcc i64 @word_literal() {{.*}} {
// INTEL: entry:
// INTEL:   ret i64 12345
// INTEL: }
// ARM32: define{{( protected)?}} swiftcc i32 @word_literal() {{.*}} {
// ARM32: entry:
// ARM32:   ret i32 12345
// ARM32: }
sil @word_literal : $() -> Builtin.Word {
entry:
  %w = integer_literal $Builtin.Word, 12345
  return %w : $Builtin.Word
}

// INTEL: define{{( protected)?}} swiftcc { i64, i64 } @word_zextOrBitCast(i32, i64) {{.*}} {
// INTEL: entry:
// INTEL:   %2 = zext i32 %0 to i64
// INTEL:   %3 = insertvalue { i64, i64 } undef, i64 %2, 0
// INTEL:   %4 = insertvalue { i64, i64 } %3, i64 %1, 1
// INTEL:   ret { i64, i64 } %4
// INTEL: }
// ARM32: define{{( protected)?}} swiftcc { i32, i64 } @word_zextOrBitCast(i32, i32) {{.*}} {
// ARM32: entry:
// ARM32:   %2 = zext i32 %1 to i64
// ARM32:   %3 = insertvalue { i32, i64 } undef, i32 %0, 0
// ARM32:   %4 = insertvalue { i32, i64 } %3, i64 %2, 1
// ARM32:   ret { i32, i64 } %4
// ARM32: }
sil [ossa] @word_zextOrBitCast : $(Builtin.Int32, Builtin.Word) -> (Builtin.Word, Builtin.Int64) {
entry(%i : $Builtin.Int32, %w : $Builtin.Word):
  %j = builtin "zextOrBitCast_Int32_Word"(%i : $Builtin.Int32) : $Builtin.Word
  %v = builtin "zextOrBitCast_Word_Int64"(%w : $Builtin.Word) : $Builtin.Int64
  %t = tuple (%j : $Builtin.Word, %v : $Builtin.Int64)
  return %t : $(Builtin.Word, Builtin.Int64)
}

// INTEL: define{{( protected)?}} swiftcc { i32, i64 } @word_truncOrBitCast(i64, i64) {{.*}} {
// INTEL: entry:
// INTEL:   %2 = trunc i64 %0 to i32
// INTEL:   %3 = insertvalue { i32, i64 } undef, i32 %2, 0
// INTEL:   %4 = insertvalue { i32, i64 } %3, i64 %1, 1
// INTEL:   ret { i32, i64 } %4
// INTEL: }
// ARM32: define{{( protected)?}} swiftcc { i32, i32 } @word_truncOrBitCast(i32, i64) {{.*}} {
// ARM32: entry:
// ARM32:   %2 = trunc i64 %1 to i32
// ARM32:   %3 = insertvalue { i32, i32 } undef, i32 %0, 0
// ARM32:   %4 = insertvalue { i32, i32 } %3, i32 %2, 1
// ARM32:   ret { i32, i32 } %4
// ARM32: }
sil [ossa] @word_truncOrBitCast : $(Builtin.Word, Builtin.Int64) -> (Builtin.Int32, Builtin.Word) {
entry(%w : $Builtin.Word, %i : $Builtin.Int64):
  %v = builtin "truncOrBitCast_Word_Int32"(%w : $Builtin.Word) : $Builtin.Int32
  %j = builtin "truncOrBitCast_Int64_Word"(%i : $Builtin.Int64) : $Builtin.Word
  %t = tuple (%v : $Builtin.Int32, %j : $Builtin.Word)
  return %t : $(Builtin.Int32, Builtin.Word)
}

