// RUN: cir-opt %s --verify-roundtrip | FileCheck %s
!s32i = !cir.int<s, 32>
!u32i = !cir.int<u, 32>

module {
  cir.func @c0(%arg0: !s32i, %arg1: !s32i) {
    %0 = cir.alloca "a" align(4) init : !cir.ptr<!s32i>
    %1 = cir.alloca "b" align(4) init : !cir.ptr<!s32i>
    %2 = cir.alloca "x" align(1) init : !cir.ptr<!cir.bool>
    cir.store %arg0, %0 : !s32i, !cir.ptr<!s32i>
    cir.store %arg1, %1 : !s32i, !cir.ptr<!s32i>
    %3 = cir.load %0 : !cir.ptr<!s32i>, !s32i
    %4 = cir.load %1 : !cir.ptr<!s32i>, !s32i
    %5 = cir.cmp gt %3, %4 : !s32i
    cir.store %5, %2 : !cir.bool, !cir.ptr<!cir.bool>
    %6 = cir.load %0 : !cir.ptr<!s32i>, !s32i
    %7 = cir.load %1 : !cir.ptr<!s32i>, !s32i
    %8 = cir.cmp lt %6, %7 : !s32i
    cir.store %8, %2 : !cir.bool, !cir.ptr<!cir.bool>
    %9 = cir.load %0 : !cir.ptr<!s32i>, !s32i
    %10 = cir.load %1 : !cir.ptr<!s32i>, !s32i
    %11 = cir.cmp le %9, %10 : !s32i
    cir.store %11, %2 : !cir.bool, !cir.ptr<!cir.bool>
    %12 = cir.load %0 : !cir.ptr<!s32i>, !s32i
    %13 = cir.load %1 : !cir.ptr<!s32i>, !s32i
    %14 = cir.cmp ge %12, %13 : !s32i
    cir.store %14, %2 : !cir.bool, !cir.ptr<!cir.bool>
    %15 = cir.load %0 : !cir.ptr<!s32i>, !s32i
    %16 = cir.load %1 : !cir.ptr<!s32i>, !s32i
    %17 = cir.cmp ne %15, %16 : !s32i
    cir.store %17, %2 : !cir.bool, !cir.ptr<!cir.bool>
    %18 = cir.load %0 : !cir.ptr<!s32i>, !s32i
    %19 = cir.load %1 : !cir.ptr<!s32i>, !s32i
    %20 = cir.cmp eq %18, %19 : !s32i
    cir.store %20, %2 : !cir.bool, !cir.ptr<!cir.bool>
    cir.return
  }

  // CHECK: cir.func{{.*}} @c0(%arg0: !s32i, %arg1: !s32i) {
  // CHECK-NEXT:   %0 = cir.alloca "a" align(4) init : !cir.ptr<!s32i>
  // CHECK-NEXT:   %1 = cir.alloca "b" align(4) init : !cir.ptr<!s32i>
  // CHECK-NEXT:   %2 = cir.alloca "x" align(1) init : !cir.ptr<!cir.bool>
  // CHECK-NEXT:   cir.store %arg0, %0 : !s32i, !cir.ptr<!s32i>
  // CHECK-NEXT:   cir.store %arg1, %1 : !s32i, !cir.ptr<!s32i>
  // CHECK-NEXT:   %3 = cir.load %0 : !cir.ptr<!s32i>, !s32i
  // CHECK-NEXT:   %4 = cir.load %1 : !cir.ptr<!s32i>, !s32i
  // CHECK-NEXT:   %5 = cir.cmp gt %3, %4 : !s32i
  // CHECK-NEXT:   cir.store %5, %2 : !cir.bool, !cir.ptr<!cir.bool>
  // CHECK-NEXT:   %6 = cir.load %0 : !cir.ptr<!s32i>, !s32i
  // CHECK-NEXT:   %7 = cir.load %1 : !cir.ptr<!s32i>, !s32i
  // CHECK-NEXT:   %8 = cir.cmp lt %6, %7 : !s32i
  // CHECK-NEXT:   cir.store %8, %2 : !cir.bool, !cir.ptr<!cir.bool>
  // CHECK-NEXT:   %9 = cir.load %0 : !cir.ptr<!s32i>, !s32i
  // CHECK-NEXT:   %10 = cir.load %1 : !cir.ptr<!s32i>, !s32i
  // CHECK-NEXT:   %11 = cir.cmp le %9, %10 : !s32i
  // CHECK-NEXT:   cir.store %11, %2 : !cir.bool, !cir.ptr<!cir.bool>
  // CHECK-NEXT:   %12 = cir.load %0 : !cir.ptr<!s32i>, !s32i
  // CHECK-NEXT:   %13 = cir.load %1 : !cir.ptr<!s32i>, !s32i
  // CHECK-NEXT:   %14 = cir.cmp ge %12, %13 : !s32i
  // CHECK-NEXT:   cir.store %14, %2 : !cir.bool, !cir.ptr<!cir.bool>
  // CHECK-NEXT:   %15 = cir.load %0 : !cir.ptr<!s32i>, !s32i
  // CHECK-NEXT:   %16 = cir.load %1 : !cir.ptr<!s32i>, !s32i
  // CHECK-NEXT:   %17 = cir.cmp ne %15, %16 : !s32i
  // CHECK-NEXT:   cir.store %17, %2 : !cir.bool, !cir.ptr<!cir.bool>
  // CHECK-NEXT:   %18 = cir.load %0 : !cir.ptr<!s32i>, !s32i
  // CHECK-NEXT:   %19 = cir.load %1 : !cir.ptr<!s32i>, !s32i
  // CHECK-NEXT:   %20 = cir.cmp eq %18, %19 : !s32i
  // CHECK-NEXT:   cir.store %20, %2 : !cir.bool, !cir.ptr<!cir.bool>
  // CHECK-NEXT:   cir.return
  // CHECK-NEXT: }

  cir.func @c0_unsigned(%arg0: !u32i, %arg1: !u32i) {
    %0 = cir.alloca "a" align(4) init : !cir.ptr<!u32i>
    %1 = cir.alloca "b" align(4) init : !cir.ptr<!u32i>
    %2 = cir.alloca "x" align(1) init : !cir.ptr<!cir.bool>
    cir.store %arg0, %0 : !u32i, !cir.ptr<!u32i>
    cir.store %arg1, %1 : !u32i, !cir.ptr<!u32i>
    %3 = cir.load %0 : !cir.ptr<!u32i>, !u32i
    %4 = cir.load %1 : !cir.ptr<!u32i>, !u32i
    %5 = cir.cmp gt %3, %4 : !u32i
    cir.store %5, %2 : !cir.bool, !cir.ptr<!cir.bool>
    %6 = cir.load %0 : !cir.ptr<!u32i>, !u32i
    %7 = cir.load %1 : !cir.ptr<!u32i>, !u32i
    %8 = cir.cmp lt %6, %7 : !u32i
    cir.store %8, %2 : !cir.bool, !cir.ptr<!cir.bool>
    %9 = cir.load %0 : !cir.ptr<!u32i>, !u32i
    %10 = cir.load %1 : !cir.ptr<!u32i>, !u32i
    %11 = cir.cmp le %9, %10 : !u32i
    cir.store %11, %2 : !cir.bool, !cir.ptr<!cir.bool>
    %12 = cir.load %0 : !cir.ptr<!u32i>, !u32i
    %13 = cir.load %1 : !cir.ptr<!u32i>, !u32i
    %14 = cir.cmp ge %12, %13 : !u32i
    cir.store %14, %2 : !cir.bool, !cir.ptr<!cir.bool>
    %15 = cir.load %0 : !cir.ptr<!u32i>, !u32i
    %16 = cir.load %1 : !cir.ptr<!u32i>, !u32i
    %17 = cir.cmp ne %15, %16 : !u32i
    cir.store %17, %2 : !cir.bool, !cir.ptr<!cir.bool>
    %18 = cir.load %0 : !cir.ptr<!u32i>, !u32i
    %19 = cir.load %1 : !cir.ptr<!u32i>, !u32i
    %20 = cir.cmp eq %18, %19 : !u32i
    cir.store %20, %2 : !cir.bool, !cir.ptr<!cir.bool>
    cir.return
  }

  // CHECK: cir.func{{.*}} @c0_unsigned(%arg0: !u32i, %arg1: !u32i) {
  // CHECK-NEXT:   %0 = cir.alloca "a" align(4) init : !cir.ptr<!u32i>
  // CHECK-NEXT:   %1 = cir.alloca "b" align(4) init : !cir.ptr<!u32i>
  // CHECK-NEXT:   %2 = cir.alloca "x" align(1) init : !cir.ptr<!cir.bool>
  // CHECK-NEXT:   cir.store %arg0, %0 : !u32i, !cir.ptr<!u32i>
  // CHECK-NEXT:   cir.store %arg1, %1 : !u32i, !cir.ptr<!u32i>
  // CHECK-NEXT:   %3 = cir.load %0 : !cir.ptr<!u32i>, !u32i
  // CHECK-NEXT:   %4 = cir.load %1 : !cir.ptr<!u32i>, !u32i
  // CHECK-NEXT:   %5 = cir.cmp gt %3, %4 : !u32i
  // CHECK-NEXT:   cir.store %5, %2 : !cir.bool, !cir.ptr<!cir.bool>
  // CHECK-NEXT:   %6 = cir.load %0 : !cir.ptr<!u32i>, !u32i
  // CHECK-NEXT:   %7 = cir.load %1 : !cir.ptr<!u32i>, !u32i
  // CHECK-NEXT:   %8 = cir.cmp lt %6, %7 : !u32i
  // CHECK-NEXT:   cir.store %8, %2 : !cir.bool, !cir.ptr<!cir.bool>
  // CHECK-NEXT:   %9 = cir.load %0 : !cir.ptr<!u32i>, !u32i
  // CHECK-NEXT:   %10 = cir.load %1 : !cir.ptr<!u32i>, !u32i
  // CHECK-NEXT:   %11 = cir.cmp le %9, %10 : !u32i
  // CHECK-NEXT:   cir.store %11, %2 : !cir.bool, !cir.ptr<!cir.bool>
  // CHECK-NEXT:   %12 = cir.load %0 : !cir.ptr<!u32i>, !u32i
  // CHECK-NEXT:   %13 = cir.load %1 : !cir.ptr<!u32i>, !u32i
  // CHECK-NEXT:   %14 = cir.cmp ge %12, %13 : !u32i
  // CHECK-NEXT:   cir.store %14, %2 : !cir.bool, !cir.ptr<!cir.bool>
  // CHECK-NEXT:   %15 = cir.load %0 : !cir.ptr<!u32i>, !u32i
  // CHECK-NEXT:   %16 = cir.load %1 : !cir.ptr<!u32i>, !u32i
  // CHECK-NEXT:   %17 = cir.cmp ne %15, %16 : !u32i
  // CHECK-NEXT:   cir.store %17, %2 : !cir.bool, !cir.ptr<!cir.bool>
  // CHECK-NEXT:   %18 = cir.load %0 : !cir.ptr<!u32i>, !u32i
  // CHECK-NEXT:   %19 = cir.load %1 : !cir.ptr<!u32i>, !u32i
  // CHECK-NEXT:   %20 = cir.cmp eq %18, %19 : !u32i
  // CHECK-NEXT:   cir.store %20, %2 : !cir.bool, !cir.ptr<!cir.bool>
  // CHECK-NEXT:   cir.return
  // CHECK-NEXT: }

  cir.func @c0_float(%arg0: !cir.float, %arg1: !cir.float) {
    %0 = cir.alloca "a" align(4) init : !cir.ptr<!cir.float>
    %1 = cir.alloca "b" align(4) init : !cir.ptr<!cir.float>
    %2 = cir.alloca "x" align(1) init : !cir.ptr<!cir.bool>
    cir.store %arg0, %0 : !cir.float, !cir.ptr<!cir.float>
    cir.store %arg1, %1 : !cir.float, !cir.ptr<!cir.float>
    %3 = cir.load %0 : !cir.ptr<!cir.float>, !cir.float
    %4 = cir.load %1 : !cir.ptr<!cir.float>, !cir.float
    %5 = cir.cmp gt %3, %4 : !cir.float
    cir.store %5, %2 : !cir.bool, !cir.ptr<!cir.bool>
    %6 = cir.load %0 : !cir.ptr<!cir.float>, !cir.float
    %7 = cir.load %1 : !cir.ptr<!cir.float>, !cir.float
    %8 = cir.cmp lt %6, %7 : !cir.float
    cir.store %8, %2 : !cir.bool, !cir.ptr<!cir.bool>
    %9 = cir.load %0 : !cir.ptr<!cir.float>, !cir.float
    %10 = cir.load %1 : !cir.ptr<!cir.float>, !cir.float
    %11 = cir.cmp le %9, %10 : !cir.float
    cir.store %11, %2 : !cir.bool, !cir.ptr<!cir.bool>
    %12 = cir.load %0 : !cir.ptr<!cir.float>, !cir.float
    %13 = cir.load %1 : !cir.ptr<!cir.float>, !cir.float
    %14 = cir.cmp ge %12, %13 : !cir.float
    cir.store %14, %2 : !cir.bool, !cir.ptr<!cir.bool>
    %15 = cir.load %0 : !cir.ptr<!cir.float>, !cir.float
    %16 = cir.load %1 : !cir.ptr<!cir.float>, !cir.float
    %17 = cir.cmp ne %15, %16 : !cir.float
    cir.store %17, %2 : !cir.bool, !cir.ptr<!cir.bool>
    %18 = cir.load %0 : !cir.ptr<!cir.float>, !cir.float
    %19 = cir.load %1 : !cir.ptr<!cir.float>, !cir.float
    %20 = cir.cmp eq %18, %19 : !cir.float
    cir.store %20, %2 : !cir.bool, !cir.ptr<!cir.bool>
    cir.return
  }

  // CHECK: cir.func{{.*}} @c0_float(%arg0: !cir.float, %arg1: !cir.float) {
  // CHECK-NEXT:   %0 = cir.alloca "a" align(4) init : !cir.ptr<!cir.float>
  // CHECK-NEXT:   %1 = cir.alloca "b" align(4) init : !cir.ptr<!cir.float>
  // CHECK-NEXT:   %2 = cir.alloca "x" align(1) init : !cir.ptr<!cir.bool>
  // CHECK-NEXT:   cir.store %arg0, %0 : !cir.float, !cir.ptr<!cir.float>
  // CHECK-NEXT:   cir.store %arg1, %1 : !cir.float, !cir.ptr<!cir.float>
  // CHECK-NEXT:   %3 = cir.load %0 : !cir.ptr<!cir.float>, !cir.float
  // CHECK-NEXT:   %4 = cir.load %1 : !cir.ptr<!cir.float>, !cir.float
  // CHECK-NEXT:   %5 = cir.cmp gt %3, %4 : !cir.float
  // CHECK-NEXT:   cir.store %5, %2 : !cir.bool, !cir.ptr<!cir.bool>
  // CHECK-NEXT:   %6 = cir.load %0 : !cir.ptr<!cir.float>, !cir.float
  // CHECK-NEXT:   %7 = cir.load %1 : !cir.ptr<!cir.float>, !cir.float
  // CHECK-NEXT:   %8 = cir.cmp lt %6, %7 : !cir.float
  // CHECK-NEXT:   cir.store %8, %2 : !cir.bool, !cir.ptr<!cir.bool>
  // CHECK-NEXT:   %9 = cir.load %0 : !cir.ptr<!cir.float>, !cir.float
  // CHECK-NEXT:   %10 = cir.load %1 : !cir.ptr<!cir.float>, !cir.float
  // CHECK-NEXT:   %11 = cir.cmp le %9, %10 : !cir.float
  // CHECK-NEXT:   cir.store %11, %2 : !cir.bool, !cir.ptr<!cir.bool>
  // CHECK-NEXT:   %12 = cir.load %0 : !cir.ptr<!cir.float>, !cir.float
  // CHECK-NEXT:   %13 = cir.load %1 : !cir.ptr<!cir.float>, !cir.float
  // CHECK-NEXT:   %14 = cir.cmp ge %12, %13 : !cir.float
  // CHECK-NEXT:   cir.store %14, %2 : !cir.bool, !cir.ptr<!cir.bool>
  // CHECK-NEXT:   %15 = cir.load %0 : !cir.ptr<!cir.float>, !cir.float
  // CHECK-NEXT:   %16 = cir.load %1 : !cir.ptr<!cir.float>, !cir.float
  // CHECK-NEXT:   %17 = cir.cmp ne %15, %16 : !cir.float
  // CHECK-NEXT:   cir.store %17, %2 : !cir.bool, !cir.ptr<!cir.bool>
  // CHECK-NEXT:   %18 = cir.load %0 : !cir.ptr<!cir.float>, !cir.float
  // CHECK-NEXT:   %19 = cir.load %1 : !cir.ptr<!cir.float>, !cir.float
  // CHECK-NEXT:   %20 = cir.cmp eq %18, %19 : !cir.float
  // CHECK-NEXT:   cir.store %20, %2 : !cir.bool, !cir.ptr<!cir.bool>
  // CHECK-NEXT:   cir.return
  // CHECK-NEXT: }

  cir.func @pointer_cmp(%arg0: !cir.ptr<!s32i>, %arg1: !cir.ptr<!s32i>) {
    %0 = cir.alloca "a" align(8) init : !cir.ptr<!cir.ptr<!s32i>>
    %1 = cir.alloca "b" align(8) init : !cir.ptr<!cir.ptr<!s32i>>
    %2 = cir.alloca "x" align(1) init : !cir.ptr<!cir.bool>
    cir.store %arg0, %0 : !cir.ptr<!s32i>, !cir.ptr<!cir.ptr<!s32i>>
    cir.store %arg1, %1 : !cir.ptr<!s32i>, !cir.ptr<!cir.ptr<!s32i>>
    %3 = cir.load %0 : !cir.ptr<!cir.ptr<!s32i>>, !cir.ptr<!s32i>
    %4 = cir.load %1 : !cir.ptr<!cir.ptr<!s32i>>, !cir.ptr<!s32i>
    %5 = cir.cmp gt %3, %4 : !cir.ptr<!s32i>
    cir.store %5, %2 : !cir.bool, !cir.ptr<!cir.bool>
    %6 = cir.load %0 : !cir.ptr<!cir.ptr<!s32i>>, !cir.ptr<!s32i>
    %7 = cir.load %1 : !cir.ptr<!cir.ptr<!s32i>>, !cir.ptr<!s32i>
    %8 = cir.cmp lt %6, %7 : !cir.ptr<!s32i>
    cir.store %8, %2 : !cir.bool, !cir.ptr<!cir.bool>
    %9 = cir.load %0 : !cir.ptr<!cir.ptr<!s32i>>, !cir.ptr<!s32i>
    %10 = cir.load %1 : !cir.ptr<!cir.ptr<!s32i>>, !cir.ptr<!s32i>
    %11 = cir.cmp ge %9, %10 : !cir.ptr<!s32i>
    cir.store %11, %2 : !cir.bool, !cir.ptr<!cir.bool>
    %12 = cir.load %0 : !cir.ptr<!cir.ptr<!s32i>>, !cir.ptr<!s32i>
    %13 = cir.load %1 : !cir.ptr<!cir.ptr<!s32i>>, !cir.ptr<!s32i>
    %14 = cir.cmp le %12, %13 : !cir.ptr<!s32i>
    cir.store %14, %2 : !cir.bool, !cir.ptr<!cir.bool>
    %15 = cir.load %0 : !cir.ptr<!cir.ptr<!s32i>>, !cir.ptr<!s32i>
    %16 = cir.load %1 : !cir.ptr<!cir.ptr<!s32i>>, !cir.ptr<!s32i>
    %17 = cir.cmp eq %15, %16 : !cir.ptr<!s32i>
    cir.store %17, %2 : !cir.bool, !cir.ptr<!cir.bool>
    %18 = cir.load %0 : !cir.ptr<!cir.ptr<!s32i>>, !cir.ptr<!s32i>
    %19 = cir.load %1 : !cir.ptr<!cir.ptr<!s32i>>, !cir.ptr<!s32i>
    %20 = cir.cmp ne %18, %19 : !cir.ptr<!s32i>
    cir.store %20, %2 : !cir.bool, !cir.ptr<!cir.bool>
    cir.return
  }

  // CHECK: cir.func{{.*}} @pointer_cmp(%arg0: !cir.ptr<!s32i>, %arg1: !cir.ptr<!s32i>) {
  // CHECK-NEXT:   %0 = cir.alloca "a" align(8) init : !cir.ptr<!cir.ptr<!s32i>>
  // CHECK-NEXT:   %1 = cir.alloca "b" align(8) init : !cir.ptr<!cir.ptr<!s32i>>
  // CHECK-NEXT:   %2 = cir.alloca "x" align(1) init : !cir.ptr<!cir.bool>
  // CHECK-NEXT:   cir.store %arg0, %0 : !cir.ptr<!s32i>, !cir.ptr<!cir.ptr<!s32i>>
  // CHECK-NEXT:   cir.store %arg1, %1 : !cir.ptr<!s32i>, !cir.ptr<!cir.ptr<!s32i>>
  // CHECK-NEXT:   %3 = cir.load %0 : !cir.ptr<!cir.ptr<!s32i>>, !cir.ptr<!s32i>
  // CHECK-NEXT:   %4 = cir.load %1 : !cir.ptr<!cir.ptr<!s32i>>, !cir.ptr<!s32i>
  // CHECK-NEXT:   %5 = cir.cmp gt %3, %4 : !cir.ptr<!s32i>
  // CHECK-NEXT:   cir.store %5, %2 : !cir.bool, !cir.ptr<!cir.bool>
  // CHECK-NEXT:   %6 = cir.load %0 : !cir.ptr<!cir.ptr<!s32i>>, !cir.ptr<!s32i>
  // CHECK-NEXT:   %7 = cir.load %1 : !cir.ptr<!cir.ptr<!s32i>>, !cir.ptr<!s32i>
  // CHECK-NEXT:   %8 = cir.cmp lt %6, %7 : !cir.ptr<!s32i>
  // CHECK-NEXT:   cir.store %8, %2 : !cir.bool, !cir.ptr<!cir.bool>
  // CHECK-NEXT:   %9 = cir.load %0 : !cir.ptr<!cir.ptr<!s32i>>, !cir.ptr<!s32i>
  // CHECK-NEXT:   %10 = cir.load %1 : !cir.ptr<!cir.ptr<!s32i>>, !cir.ptr<!s32i>
  // CHECK-NEXT:   %11 = cir.cmp ge %9, %10 : !cir.ptr<!s32i>
  // CHECK-NEXT:   cir.store %11, %2 : !cir.bool, !cir.ptr<!cir.bool>
  // CHECK-NEXT:   %12 = cir.load %0 : !cir.ptr<!cir.ptr<!s32i>>, !cir.ptr<!s32i>
  // CHECK-NEXT:   %13 = cir.load %1 : !cir.ptr<!cir.ptr<!s32i>>, !cir.ptr<!s32i>
  // CHECK-NEXT:   %14 = cir.cmp le %12, %13 : !cir.ptr<!s32i>
  // CHECK-NEXT:   cir.store %14, %2 : !cir.bool, !cir.ptr<!cir.bool>
  // CHECK-NEXT:   %15 = cir.load %0 : !cir.ptr<!cir.ptr<!s32i>>, !cir.ptr<!s32i>
  // CHECK-NEXT:   %16 = cir.load %1 : !cir.ptr<!cir.ptr<!s32i>>, !cir.ptr<!s32i>
  // CHECK-NEXT:   %17 = cir.cmp eq %15, %16 : !cir.ptr<!s32i>
  // CHECK-NEXT:   cir.store %17, %2 : !cir.bool, !cir.ptr<!cir.bool>
  // CHECK-NEXT:   %18 = cir.load %0 : !cir.ptr<!cir.ptr<!s32i>>, !cir.ptr<!s32i>
  // CHECK-NEXT:   %19 = cir.load %1 : !cir.ptr<!cir.ptr<!s32i>>, !cir.ptr<!s32i>
  // CHECK-NEXT:   %20 = cir.cmp ne %18, %19 : !cir.ptr<!s32i>
  // CHECK-NEXT:   cir.store %20, %2 : !cir.bool, !cir.ptr<!cir.bool>
  // CHECK-NEXT:   cir.return
  // CHECK-NEXT: }

  cir.func @bool_cmp(%arg0: !cir.bool, %arg1: !cir.bool) {
    %0 = cir.alloca "a" align(1) init : !cir.ptr<!cir.bool>
    %1 = cir.alloca "b" align(1) init : !cir.ptr<!cir.bool>
    %2 = cir.alloca "x" align(1) init : !cir.ptr<!cir.bool>
    cir.store %arg0, %0 : !cir.bool, !cir.ptr<!cir.bool>
    cir.store %arg1, %1 : !cir.bool, !cir.ptr<!cir.bool>
    %3 = cir.load %0 : !cir.ptr<!cir.bool>, !cir.bool
    %4 = cir.cast bool_to_int %3 : !cir.bool -> !s32i
    %5 = cir.load %1 : !cir.ptr<!cir.bool>, !cir.bool
    %6 = cir.cast bool_to_int %5 : !cir.bool -> !s32i
    %7 = cir.cmp gt %4, %6 : !s32i
    cir.store %7, %2 : !cir.bool, !cir.ptr<!cir.bool>
    %8 = cir.load %0 : !cir.ptr<!cir.bool>, !cir.bool
    %9 = cir.cast bool_to_int %8 : !cir.bool -> !s32i
    %10 = cir.load %1 : !cir.ptr<!cir.bool>, !cir.bool
    %11 = cir.cast bool_to_int %10 : !cir.bool -> !s32i
    %12 = cir.cmp lt %9, %11 : !s32i
    cir.store %12, %2 : !cir.bool, !cir.ptr<!cir.bool>
    %13 = cir.load %0 : !cir.ptr<!cir.bool>, !cir.bool
    %14 = cir.cast bool_to_int %13 : !cir.bool -> !s32i
    %15 = cir.load %1 : !cir.ptr<!cir.bool>, !cir.bool
    %16 = cir.cast bool_to_int %15 : !cir.bool -> !s32i
    %17 = cir.cmp ge %14, %16 : !s32i
    cir.store %17, %2 : !cir.bool, !cir.ptr<!cir.bool>
    %18 = cir.load %0 : !cir.ptr<!cir.bool>, !cir.bool
    %19 = cir.cast bool_to_int %18 : !cir.bool -> !s32i
    %20 = cir.load %1 : !cir.ptr<!cir.bool>, !cir.bool
    %21 = cir.cast bool_to_int %20 : !cir.bool -> !s32i
    %22 = cir.cmp le %19, %21 : !s32i
    cir.store %22, %2 : !cir.bool, !cir.ptr<!cir.bool>
    %23 = cir.load %0 : !cir.ptr<!cir.bool>, !cir.bool
    %24 = cir.cast bool_to_int %23 : !cir.bool -> !s32i
    %25 = cir.load %1 : !cir.ptr<!cir.bool>, !cir.bool
    %26 = cir.cast bool_to_int %25 : !cir.bool -> !s32i
    %27 = cir.cmp eq %24, %26 : !s32i
    cir.store %27, %2 : !cir.bool, !cir.ptr<!cir.bool>
    %28 = cir.load %0 : !cir.ptr<!cir.bool>, !cir.bool
    %29 = cir.cast bool_to_int %28 : !cir.bool -> !s32i
    %30 = cir.load %1 : !cir.ptr<!cir.bool>, !cir.bool
    %31 = cir.cast bool_to_int %30 : !cir.bool -> !s32i
    %32 = cir.cmp ne %29, %31 : !s32i
    cir.store %32, %2 : !cir.bool, !cir.ptr<!cir.bool>
    cir.return
  }

  // CHECK: cir.func{{.*}} @bool_cmp(%arg0: !cir.bool, %arg1: !cir.bool) {
  // CHECK-NEXT:   %0 = cir.alloca "a" align(1) init : !cir.ptr<!cir.bool>
  // CHECK-NEXT:   %1 = cir.alloca "b" align(1) init : !cir.ptr<!cir.bool>
  // CHECK-NEXT:   %2 = cir.alloca "x" align(1) init : !cir.ptr<!cir.bool>
  // CHECK-NEXT:   cir.store %arg0, %0 : !cir.bool, !cir.ptr<!cir.bool>
  // CHECK-NEXT:   cir.store %arg1, %1 : !cir.bool, !cir.ptr<!cir.bool>
  // CHECK-NEXT:   %3 = cir.load %0 : !cir.ptr<!cir.bool>, !cir.bool
  // CHECK-NEXT:   %4 = cir.cast bool_to_int %3 : !cir.bool -> !s32i
  // CHECK-NEXT:   %5 = cir.load %1 : !cir.ptr<!cir.bool>, !cir.bool
  // CHECK-NEXT:   %6 = cir.cast bool_to_int %5 : !cir.bool -> !s32i
  // CHECK-NEXT:   %7 = cir.cmp gt %4, %6 : !s32i
  // CHECK-NEXT:   cir.store %7, %2 : !cir.bool, !cir.ptr<!cir.bool>
  // CHECK-NEXT:   %8 = cir.load %0 : !cir.ptr<!cir.bool>, !cir.bool
  // CHECK-NEXT:   %9 = cir.cast bool_to_int %8 : !cir.bool -> !s32i
  // CHECK-NEXT:   %10 = cir.load %1 : !cir.ptr<!cir.bool>, !cir.bool
  // CHECK-NEXT:   %11 = cir.cast bool_to_int %10 : !cir.bool -> !s32i
  // CHECK-NEXT:   %12 = cir.cmp lt %9, %11 : !s32i
  // CHECK-NEXT:   cir.store %12, %2 : !cir.bool, !cir.ptr<!cir.bool>
  // CHECK-NEXT:   %13 = cir.load %0 : !cir.ptr<!cir.bool>, !cir.bool
  // CHECK-NEXT:   %14 = cir.cast bool_to_int %13 : !cir.bool -> !s32i
  // CHECK-NEXT:   %15 = cir.load %1 : !cir.ptr<!cir.bool>, !cir.bool
  // CHECK-NEXT:   %16 = cir.cast bool_to_int %15 : !cir.bool -> !s32i
  // CHECK-NEXT:   %17 = cir.cmp ge %14, %16 : !s32i
  // CHECK-NEXT:   cir.store %17, %2 : !cir.bool, !cir.ptr<!cir.bool>
  // CHECK-NEXT:   %18 = cir.load %0 : !cir.ptr<!cir.bool>, !cir.bool
  // CHECK-NEXT:   %19 = cir.cast bool_to_int %18 : !cir.bool -> !s32i
  // CHECK-NEXT:   %20 = cir.load %1 : !cir.ptr<!cir.bool>, !cir.bool
  // CHECK-NEXT:   %21 = cir.cast bool_to_int %20 : !cir.bool -> !s32i
  // CHECK-NEXT:   %22 = cir.cmp le %19, %21 : !s32i
  // CHECK-NEXT:   cir.store %22, %2 : !cir.bool, !cir.ptr<!cir.bool>
  // CHECK-NEXT:   %23 = cir.load %0 : !cir.ptr<!cir.bool>, !cir.bool
  // CHECK-NEXT:   %24 = cir.cast bool_to_int %23 : !cir.bool -> !s32i
  // CHECK-NEXT:   %25 = cir.load %1 : !cir.ptr<!cir.bool>, !cir.bool
  // CHECK-NEXT:   %26 = cir.cast bool_to_int %25 : !cir.bool -> !s32i
  // CHECK-NEXT:   %27 = cir.cmp eq %24, %26 : !s32i
  // CHECK-NEXT:   cir.store %27, %2 : !cir.bool, !cir.ptr<!cir.bool>
  // CHECK-NEXT:   %28 = cir.load %0 : !cir.ptr<!cir.bool>, !cir.bool
  // CHECK-NEXT:   %29 = cir.cast bool_to_int %28 : !cir.bool -> !s32i
  // CHECK-NEXT:   %30 = cir.load %1 : !cir.ptr<!cir.bool>, !cir.bool
  // CHECK-NEXT:   %31 = cir.cast bool_to_int %30 : !cir.bool -> !s32i
  // CHECK-NEXT:   %32 = cir.cmp ne %29, %31 : !s32i
  // CHECK-NEXT:   cir.store %32, %2 : !cir.bool, !cir.ptr<!cir.bool>
  // CHECK-NEXT:   cir.return
  // CHECK-NEXT: }

  // A bool that was not integer-promoted, as with a scoped enum whose
  // underlying type is bool.
  cir.func @unpromoted_bool_cmp(%arg0: !cir.bool, %arg1: !cir.bool) {
    %0 = cir.alloca "a" align(1) init : !cir.ptr<!cir.bool>
    %1 = cir.alloca "b" align(1) init : !cir.ptr<!cir.bool>
    %2 = cir.alloca "x" align(1) init : !cir.ptr<!cir.bool>
    cir.store %arg0, %0 : !cir.bool, !cir.ptr<!cir.bool>
    cir.store %arg1, %1 : !cir.bool, !cir.ptr<!cir.bool>
    %3 = cir.load %0 : !cir.ptr<!cir.bool>, !cir.bool
    %4 = cir.load %1 : !cir.ptr<!cir.bool>, !cir.bool
    %5 = cir.cmp gt %3, %4 : !cir.bool
    cir.store %5, %2 : !cir.bool, !cir.ptr<!cir.bool>
    %6 = cir.load %0 : !cir.ptr<!cir.bool>, !cir.bool
    %7 = cir.load %1 : !cir.ptr<!cir.bool>, !cir.bool
    %8 = cir.cmp lt %6, %7 : !cir.bool
    cir.store %8, %2 : !cir.bool, !cir.ptr<!cir.bool>
    %9 = cir.load %0 : !cir.ptr<!cir.bool>, !cir.bool
    %10 = cir.load %1 : !cir.ptr<!cir.bool>, !cir.bool
    %11 = cir.cmp ge %9, %10 : !cir.bool
    cir.store %11, %2 : !cir.bool, !cir.ptr<!cir.bool>
    %12 = cir.load %0 : !cir.ptr<!cir.bool>, !cir.bool
    %13 = cir.load %1 : !cir.ptr<!cir.bool>, !cir.bool
    %14 = cir.cmp le %12, %13 : !cir.bool
    cir.store %14, %2 : !cir.bool, !cir.ptr<!cir.bool>
    %15 = cir.load %0 : !cir.ptr<!cir.bool>, !cir.bool
    %16 = cir.load %1 : !cir.ptr<!cir.bool>, !cir.bool
    %17 = cir.cmp eq %15, %16 : !cir.bool
    cir.store %17, %2 : !cir.bool, !cir.ptr<!cir.bool>
    %18 = cir.load %0 : !cir.ptr<!cir.bool>, !cir.bool
    %19 = cir.load %1 : !cir.ptr<!cir.bool>, !cir.bool
    %20 = cir.cmp ne %18, %19 : !cir.bool
    cir.store %20, %2 : !cir.bool, !cir.ptr<!cir.bool>
    cir.return
  }

  // CHECK: cir.func{{.*}} @unpromoted_bool_cmp(%arg0: !cir.bool, %arg1: !cir.bool) {
  // CHECK-NEXT:   %0 = cir.alloca "a" align(1) init : !cir.ptr<!cir.bool>
  // CHECK-NEXT:   %1 = cir.alloca "b" align(1) init : !cir.ptr<!cir.bool>
  // CHECK-NEXT:   %2 = cir.alloca "x" align(1) init : !cir.ptr<!cir.bool>
  // CHECK-NEXT:   cir.store %arg0, %0 : !cir.bool, !cir.ptr<!cir.bool>
  // CHECK-NEXT:   cir.store %arg1, %1 : !cir.bool, !cir.ptr<!cir.bool>
  // CHECK-NEXT:   %3 = cir.load %0 : !cir.ptr<!cir.bool>, !cir.bool
  // CHECK-NEXT:   %4 = cir.load %1 : !cir.ptr<!cir.bool>, !cir.bool
  // CHECK-NEXT:   %5 = cir.cmp gt %3, %4 : !cir.bool
  // CHECK-NEXT:   cir.store %5, %2 : !cir.bool, !cir.ptr<!cir.bool>
  // CHECK-NEXT:   %6 = cir.load %0 : !cir.ptr<!cir.bool>, !cir.bool
  // CHECK-NEXT:   %7 = cir.load %1 : !cir.ptr<!cir.bool>, !cir.bool
  // CHECK-NEXT:   %8 = cir.cmp lt %6, %7 : !cir.bool
  // CHECK-NEXT:   cir.store %8, %2 : !cir.bool, !cir.ptr<!cir.bool>
  // CHECK-NEXT:   %9 = cir.load %0 : !cir.ptr<!cir.bool>, !cir.bool
  // CHECK-NEXT:   %10 = cir.load %1 : !cir.ptr<!cir.bool>, !cir.bool
  // CHECK-NEXT:   %11 = cir.cmp ge %9, %10 : !cir.bool
  // CHECK-NEXT:   cir.store %11, %2 : !cir.bool, !cir.ptr<!cir.bool>
  // CHECK-NEXT:   %12 = cir.load %0 : !cir.ptr<!cir.bool>, !cir.bool
  // CHECK-NEXT:   %13 = cir.load %1 : !cir.ptr<!cir.bool>, !cir.bool
  // CHECK-NEXT:   %14 = cir.cmp le %12, %13 : !cir.bool
  // CHECK-NEXT:   cir.store %14, %2 : !cir.bool, !cir.ptr<!cir.bool>
  // CHECK-NEXT:   %15 = cir.load %0 : !cir.ptr<!cir.bool>, !cir.bool
  // CHECK-NEXT:   %16 = cir.load %1 : !cir.ptr<!cir.bool>, !cir.bool
  // CHECK-NEXT:   %17 = cir.cmp eq %15, %16 : !cir.bool
  // CHECK-NEXT:   cir.store %17, %2 : !cir.bool, !cir.ptr<!cir.bool>
  // CHECK-NEXT:   %18 = cir.load %0 : !cir.ptr<!cir.bool>, !cir.bool
  // CHECK-NEXT:   %19 = cir.load %1 : !cir.ptr<!cir.bool>, !cir.bool
  // CHECK-NEXT:   %20 = cir.cmp ne %18, %19 : !cir.bool
  // CHECK-NEXT:   cir.store %20, %2 : !cir.bool, !cir.ptr<!cir.bool>
  // CHECK-NEXT:   cir.return
  // CHECK-NEXT: }
}
