llvm/mlir/test/Examples/mlir-opt/ctlz_pipeline.mlir

// RUN: mlir-opt --pass-pipeline='builtin.module(builtin.module(func.func(cse,canonicalize),convert-to-llvm))' %s | FileCheck %s

// CHECK-LABEL: llvm.func @func1
// CHECK-NEXT: llvm.add
// CHECK-NEXT: llvm.add
// CHECK-NEXT: llvm.return
module {
  module {
    func.func @func1(%arg0: i32) -> i32 {
      %0 = arith.addi %arg0, %arg0 : i32
      %1 = arith.addi %arg0, %arg0 : i32
      %2 = arith.addi %0, %1 : i32
      func.return %2 : i32
    }
  }

  // CHECK-LABEL: @gpu_module
  // CHECK-LABEL: gpu.func @func2
  // CHECK-COUNT-3: arith.addi
  // CHECK-NEXT: gpu.return
  gpu.module @gpu_module {
    gpu.func @func2(%arg0: i32) -> i32 {
      %0 = arith.addi %arg0, %arg0 : i32
      %1 = arith.addi %arg0, %arg0 : i32
      %2 = arith.addi %0, %1 : i32
      gpu.return %2 : i32
    }
  }
}