// RUN: %target-sil-opt -enable-sil-verify-all %s -sil-combine | %FileCheck %s

// Test optimizations for binary bit operations.

sil_stage canonical

import Builtin
import Swift

// CHECK-LABEL: sil @test_and1
// CHECK: %1 = integer_literal $Builtin.Int64, 0
// CHECK: return %1
sil @test_and1 : $@convention(thin) (Builtin.Int64) -> Builtin.Int64 {
bb0(%0 : $Builtin.Int64):
  %1 = integer_literal $Builtin.Int64, 0
  %2 = builtin "and_Int64"(%0 : $Builtin.Int64, %1 : $Builtin.Int64) : $Builtin.Int64
  return %2 : $Builtin.Int64
}

// CHECK-LABEL: sil @test_and2
// CHECK: bb0(%0 : $Builtin.Int64):
// CHECK: return %0
sil @test_and2 : $@convention(thin) (Builtin.Int64) -> Builtin.Int64 {
bb0(%0 : $Builtin.Int64):
  %1 = integer_literal $Builtin.Int64, -1
  %2 = builtin "and_Int64"(%0 : $Builtin.Int64, %1 : $Builtin.Int64) : $Builtin.Int64
  return %2 : $Builtin.Int64
}

// CHECK-LABEL: sil @test_and3
// CHECK: %1 = integer_literal $Builtin.Int64, 32
// CHECK: %2 = builtin "and_Int64"(%0 : $Builtin.Int64, %1 : $Builtin.Int64)
// CHECK: return %2
sil @test_and3 : $@convention(thin) (Builtin.Int64) -> Builtin.Int64 {
bb0(%0 : $Builtin.Int64):
  %1 = integer_literal $Builtin.Int64, 288
  %2 = builtin "and_Int64"(%0 : $Builtin.Int64, %1 : $Builtin.Int64) : $Builtin.Int64
  %3 = integer_literal $Builtin.Int64, 35
  %4 = builtin "and_Int64"(%2 : $Builtin.Int64, %3 : $Builtin.Int64) : $Builtin.Int64
  return %4 : $Builtin.Int64
}

// CHECK-LABEL: sil @test_and4
// CHECK: %1 = integer_literal $Builtin.Int64, 0
// CHECK: return %1
sil @test_and4 : $@convention(thin) (Builtin.Int64) -> Builtin.Int64 {
bb0(%0 : $Builtin.Int64):
  %1 = integer_literal $Builtin.Int64, 18
  %2 = builtin "and_Int64"(%1 : $Builtin.Int64, %0 : $Builtin.Int64) : $Builtin.Int64
  %3 = integer_literal $Builtin.Int64, 256
  %4 = builtin "and_Int64"(%2 : $Builtin.Int64, %3 : $Builtin.Int64) : $Builtin.Int64
  return %4 : $Builtin.Int64
}

// CHECK-LABEL: sil @test_or1
// CHECK: bb0(%0 : $Builtin.Int64):
// CHECK: return %0
sil @test_or1 : $@convention(thin) (Builtin.Int64) -> Builtin.Int64 {
bb0(%0 : $Builtin.Int64):
  %1 = integer_literal $Builtin.Int64, 0
  %2 = builtin "or_Int64"(%1 : $Builtin.Int64, %0 : $Builtin.Int64) : $Builtin.Int64
  return %2 : $Builtin.Int64
}

// CHECK-LABEL: sil @test_or2
// CHECK: %1 = integer_literal $Builtin.Int64, -1
// CHECK: return %1
sil @test_or2 : $@convention(thin) (Builtin.Int64) -> Builtin.Int64 {
bb0(%0 : $Builtin.Int64):
  %1 = integer_literal $Builtin.Int64, -1
  %2 = builtin "or_Int64"(%1 : $Builtin.Int64, %0 : $Builtin.Int64) : $Builtin.Int64
  return %2 : $Builtin.Int64
}

// CHECK-LABEL: sil @test_or3
// CHECK: %1 = integer_literal $Builtin.Int64, 291
// CHECK: %2 = builtin "or_Int64"(%0 : $Builtin.Int64, %1 : $Builtin.Int64)
// CHECK: return %2
sil @test_or3 : $@convention(thin) (Builtin.Int64) -> Builtin.Int64 {
bb0(%0 : $Builtin.Int64):
  %1 = integer_literal $Builtin.Int64, 288
  %2 = builtin "or_Int64"(%0 : $Builtin.Int64, %1 : $Builtin.Int64) : $Builtin.Int64
  %3 = integer_literal $Builtin.Int64, 35
  %4 = builtin "or_Int64"(%2 : $Builtin.Int64, %3 : $Builtin.Int64) : $Builtin.Int64
  return %4 : $Builtin.Int64
}

// CHECK-LABEL: sil @test_or4
// CHECK: %1 = integer_literal $Builtin.Int64, -1
// CHECK: return %1
sil @test_or4 : $@convention(thin) (Builtin.Int64) -> Builtin.Int64 {
bb0(%0 : $Builtin.Int64):
  %1 = integer_literal $Builtin.Int64, -4
  %2 = builtin "or_Int64"(%0 : $Builtin.Int64, %1 : $Builtin.Int64) : $Builtin.Int64
  %3 = integer_literal $Builtin.Int64, 3
  %4 = builtin "or_Int64"(%2 : $Builtin.Int64, %3 : $Builtin.Int64) : $Builtin.Int64
  return %4 : $Builtin.Int64
}

// CHECK-LABEL: sil @test_xor1
// CHECK: bb0(%0 : $Builtin.Int64):
// CHECK: return %0
sil @test_xor1 : $@convention(thin) (Builtin.Int64) -> Builtin.Int64 {
bb0(%0 : $Builtin.Int64):
  %1 = integer_literal $Builtin.Int64, 0
  %2 = builtin "xor_Int64"(%0 : $Builtin.Int64, %1 : $Builtin.Int64) : $Builtin.Int64
  return %2 : $Builtin.Int64
}

// CHECK-LABEL: sil @test_xor2
// CHECK: %1 = integer_literal $Builtin.Int64, -1
// CHECK: %2 = builtin "xor_Int64"(%0 : $Builtin.Int64, %1 : $Builtin.Int64)
// CHECK: return %2
sil @test_xor2 : $@convention(thin) (Builtin.Int64) -> Builtin.Int64 {
bb0(%0 : $Builtin.Int64):
  %1 = integer_literal $Builtin.Int64, -1
  %2 = builtin "xor_Int64"(%0 : $Builtin.Int64, %1 : $Builtin.Int64) : $Builtin.Int64
  return %2 : $Builtin.Int64
}

// CHECK-LABEL: sil @test_xor3
// CHECK: %1 = integer_literal $Builtin.Int64, 259
// CHECK: %2 = builtin "xor_Int64"(%0 : $Builtin.Int64, %1 : $Builtin.Int64)
// CHECK: return %2
sil @test_xor3 : $@convention(thin) (Builtin.Int64) -> Builtin.Int64 {
bb0(%0 : $Builtin.Int64):
  %1 = integer_literal $Builtin.Int64, 288
  %2 = builtin "xor_Int64"(%0 : $Builtin.Int64, %1 : $Builtin.Int64) : $Builtin.Int64
  %3 = integer_literal $Builtin.Int64, 35
  %4 = builtin "xor_Int64"(%2 : $Builtin.Int64, %3 : $Builtin.Int64) : $Builtin.Int64
  return %4 : $Builtin.Int64
}

// CHECK-LABEL: sil @test_xor4
// CHECK: bb0(%0 : $Builtin.Int64):
// CHECK: return %0
sil @test_xor4 : $@convention(thin) (Builtin.Int64) -> Builtin.Int64 {
bb0(%0 : $Builtin.Int64):
  %1 = integer_literal $Builtin.Int64, 18
  %2 = builtin "xor_Int64"(%0 : $Builtin.Int64, %1 : $Builtin.Int64) : $Builtin.Int64
  %3 = builtin "xor_Int64"(%1 : $Builtin.Int64, %2 : $Builtin.Int64) : $Builtin.Int64
  return %3 : $Builtin.Int64
}

