Add CMake files and lit configurations, enough for `ninja check-mlir-hlo` to pass on all the tests
PiperOrigin-RevId: 325172984
This commit is contained in:
		
							parent
							
								
									c340367702
								
							
						
					
					
						commit
						701312720c
					
				| 
						 | 
				
			
			@ -0,0 +1,94 @@
 | 
			
		|||
#
 | 
			
		||||
# Copyright 2020 The TensorFlow Authors. All Rights Reserved.
 | 
			
		||||
#
 | 
			
		||||
# Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
# you may not use this file except in compliance with the License.
 | 
			
		||||
# You may obtain a copy of the License at
 | 
			
		||||
#
 | 
			
		||||
#      https://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
#
 | 
			
		||||
# Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
# distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
# See the License for the specific language governing permissions and
 | 
			
		||||
# limitations under the License.
 | 
			
		||||
#
 | 
			
		||||
cmake_minimum_required(VERSION 3.13.4)
 | 
			
		||||
 | 
			
		||||
if(POLICY CMP0068)
 | 
			
		||||
  cmake_policy(SET CMP0068 NEW)
 | 
			
		||||
  set(CMAKE_BUILD_WITH_INSTALL_NAME_DIR ON)
 | 
			
		||||
endif()
 | 
			
		||||
 | 
			
		||||
if(POLICY CMP0075)
 | 
			
		||||
  cmake_policy(SET CMP0075 NEW)
 | 
			
		||||
endif()
 | 
			
		||||
 | 
			
		||||
if(POLICY CMP0077)
 | 
			
		||||
  cmake_policy(SET CMP0077 NEW)
 | 
			
		||||
endif()
 | 
			
		||||
 | 
			
		||||
#-------------------------------------------------------------------------------
 | 
			
		||||
# Project setup and globals
 | 
			
		||||
#-------------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
project(mlir-hlo LANGUAGES CXX C)
 | 
			
		||||
set(CMAKE_C_STANDARD 11)
 | 
			
		||||
set(CMAKE_CXX_STANDARD 14)
 | 
			
		||||
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules")
 | 
			
		||||
 | 
			
		||||
#-------------------------------------------------------------------------------
 | 
			
		||||
# Options and settings
 | 
			
		||||
#-------------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
#-------------------------------------------------------------------------------
 | 
			
		||||
# MSVC defaults
 | 
			
		||||
#-------------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
if(MSVC)
 | 
			
		||||
    add_compile_options(
 | 
			
		||||
        $<$<CONFIG:>:/MD>
 | 
			
		||||
        $<$<CONFIG:Debug>:/MD>
 | 
			
		||||
        $<$<CONFIG:Release>:/MD>
 | 
			
		||||
    )
 | 
			
		||||
endif()
 | 
			
		||||
 | 
			
		||||
#-------------------------------------------------------------------------------
 | 
			
		||||
# MLIR/LLVM Configuration
 | 
			
		||||
#-------------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
find_package(MLIR REQUIRED CONFIG)
 | 
			
		||||
message(STATUS "Using MLIRConfig.cmake in: ${MLIR_DIR}")
 | 
			
		||||
message(STATUS "Using LLVMConfig.cmake in: ${LLVM_DIR}")
 | 
			
		||||
list(APPEND CMAKE_MODULE_PATH "${MLIR_CMAKE_DIR}")
 | 
			
		||||
list(APPEND CMAKE_MODULE_PATH "${LLVM_CMAKE_DIR}")
 | 
			
		||||
 | 
			
		||||
if(LLVM_ENABLE_ZLIB)
 | 
			
		||||
  find_package(ZLIB)
 | 
			
		||||
endif()
 | 
			
		||||
 | 
			
		||||
include(TableGen)
 | 
			
		||||
include(AddLLVM)
 | 
			
		||||
include(AddMLIR)
 | 
			
		||||
include(HandleLLVMOptions)
 | 
			
		||||
include_directories(${LLVM_INCLUDE_DIRS})
 | 
			
		||||
include_directories(${MLIR_INCLUDE_DIRS})
 | 
			
		||||
include_directories(${PROJECT_SOURCE_DIR}/include)
 | 
			
		||||
include_directories(${PROJECT_BINARY_DIR}/include)
 | 
			
		||||
include_directories(${PROJECT_BINARY_DIR}/)
 | 
			
		||||
link_directories(${LLVM_BUILD_LIBRARY_DIR})
 | 
			
		||||
add_definitions(${LLVM_DEFINITIONS})
 | 
			
		||||
 | 
			
		||||
#-------------------------------------------------------------------------------
 | 
			
		||||
# Directory setup
 | 
			
		||||
#-------------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
set(MLIR_HLO_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
 | 
			
		||||
set(MLIR_HLO_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR})
 | 
			
		||||
 | 
			
		||||
add_custom_target(check-mlir-hlo)
 | 
			
		||||
 | 
			
		||||
add_subdirectory(include/mlir-hlo)
 | 
			
		||||
add_subdirectory(lib)
 | 
			
		||||
add_subdirectory(tools)
 | 
			
		||||
add_subdirectory(tests)
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,16 @@
 | 
			
		|||
#
 | 
			
		||||
# Copyright 2020 The TensorFlow Authors. All Rights Reserved.
 | 
			
		||||
#
 | 
			
		||||
# Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
# you may not use this file except in compliance with the License.
 | 
			
		||||
# You may obtain a copy of the License at
 | 
			
		||||
#
 | 
			
		||||
#      https://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
#
 | 
			
		||||
# Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
# distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
# See the License for the specific language governing permissions and
 | 
			
		||||
# limitations under the License.
 | 
			
		||||
#
 | 
			
		||||
add_subdirectory(Dialect)
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,16 @@
 | 
			
		|||
#
 | 
			
		||||
# Copyright 2020 The TensorFlow Authors. All Rights Reserved.
 | 
			
		||||
#
 | 
			
		||||
# Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
# you may not use this file except in compliance with the License.
 | 
			
		||||
# You may obtain a copy of the License at
 | 
			
		||||
#
 | 
			
		||||
#      https://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
#
 | 
			
		||||
# Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
# distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
# See the License for the specific language governing permissions and
 | 
			
		||||
# limitations under the License.
 | 
			
		||||
#
 | 
			
		||||
add_subdirectory(mhlo)
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,17 @@
 | 
			
		|||
#
 | 
			
		||||
# Copyright 2020 The TensorFlow Authors. All Rights Reserved.
 | 
			
		||||
#
 | 
			
		||||
# Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
# you may not use this file except in compliance with the License.
 | 
			
		||||
# You may obtain a copy of the License at
 | 
			
		||||
#
 | 
			
		||||
#      https://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
#
 | 
			
		||||
# Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
# distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
# See the License for the specific language governing permissions and
 | 
			
		||||
# limitations under the License.
 | 
			
		||||
#
 | 
			
		||||
add_subdirectory(IR)
 | 
			
		||||
add_subdirectory(transforms)
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,31 @@
 | 
			
		|||
#
 | 
			
		||||
# Copyright 2020 The TensorFlow Authors. All Rights Reserved.
 | 
			
		||||
#
 | 
			
		||||
# Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
# you may not use this file except in compliance with the License.
 | 
			
		||||
# You may obtain a copy of the License at
 | 
			
		||||
#
 | 
			
		||||
#      https://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
#
 | 
			
		||||
# Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
# distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
# See the License for the specific language governing permissions and
 | 
			
		||||
# limitations under the License.
 | 
			
		||||
#
 | 
			
		||||
# Need a separate function because of the .cc vs .cpp used in the one provided by MLIR
 | 
			
		||||
function(add_mlir_hlo_dialect dialect dialect_namespace)
 | 
			
		||||
  set(LLVM_TARGET_DEFINITIONS ${dialect}.td)
 | 
			
		||||
  mlir_tablegen(${dialect}.h.inc -gen-op-decls)
 | 
			
		||||
  mlir_tablegen(${dialect}.cc.inc -gen-op-defs)
 | 
			
		||||
  mlir_tablegen(${dialect}_structs.h.inc -gen-struct-attr-decls)
 | 
			
		||||
  mlir_tablegen(${dialect}_structs.cc.inc -gen-struct-attr-defs)
 | 
			
		||||
  add_public_tablegen_target(MLIR${dialect}IncGen)
 | 
			
		||||
  add_dependencies(mlir-headers MLIR${dialect}IncGen)
 | 
			
		||||
endfunction()
 | 
			
		||||
 | 
			
		||||
add_mlir_hlo_dialect(chlo_ops chlo)
 | 
			
		||||
add_mlir_hlo_dialect(hlo_ops mhlo)
 | 
			
		||||
add_mlir_hlo_dialect(lhlo_ops lmhlo)
 | 
			
		||||
 | 
			
		||||
add_mlir_interface(infer_fusibility_op_interface)
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,23 @@
 | 
			
		|||
#
 | 
			
		||||
# Copyright 2020 The TensorFlow Authors. All Rights Reserved.
 | 
			
		||||
#
 | 
			
		||||
# Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
# you may not use this file except in compliance with the License.
 | 
			
		||||
# You may obtain a copy of the License at
 | 
			
		||||
#
 | 
			
		||||
#      https://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
#
 | 
			
		||||
# Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
# distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
# See the License for the specific language governing permissions and
 | 
			
		||||
# limitations under the License.
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
set(LLVM_TARGET_DEFINITIONS mhlo_passes.td)
 | 
			
		||||
mlir_tablegen(mhlo_passes.h.inc -gen-pass-decls)
 | 
			
		||||
add_public_tablegen_target(MLIRMhloPassIncGen)
 | 
			
		||||
 | 
			
		||||
set(LLVM_TARGET_DEFINITIONS lmhlo_passes.td)
 | 
			
		||||
mlir_tablegen(lmhlo_passes.h.inc -gen-pass-decls)
 | 
			
		||||
add_public_tablegen_target(MLIRLmhloPassIncGen)
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,17 @@
 | 
			
		|||
#
 | 
			
		||||
# Copyright 2020 The TensorFlow Authors. All Rights Reserved.
 | 
			
		||||
#
 | 
			
		||||
# Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
# you may not use this file except in compliance with the License.
 | 
			
		||||
# You may obtain a copy of the License at
 | 
			
		||||
#
 | 
			
		||||
#      https://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
#
 | 
			
		||||
# Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
# distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
# See the License for the specific language governing permissions and
 | 
			
		||||
# limitations under the License.
 | 
			
		||||
#
 | 
			
		||||
add_subdirectory(Dialect)
 | 
			
		||||
add_subdirectory(utils)
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,16 @@
 | 
			
		|||
#
 | 
			
		||||
# Copyright 2020 The TensorFlow Authors. All Rights Reserved.
 | 
			
		||||
#
 | 
			
		||||
# Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
# you may not use this file except in compliance with the License.
 | 
			
		||||
# You may obtain a copy of the License at
 | 
			
		||||
#
 | 
			
		||||
#      https://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
#
 | 
			
		||||
# Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
# distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
# See the License for the specific language governing permissions and
 | 
			
		||||
# limitations under the License.
 | 
			
		||||
#
 | 
			
		||||
add_subdirectory(mhlo)
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,17 @@
 | 
			
		|||
#
 | 
			
		||||
# Copyright 2020 The TensorFlow Authors. All Rights Reserved.
 | 
			
		||||
#
 | 
			
		||||
# Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
# you may not use this file except in compliance with the License.
 | 
			
		||||
# You may obtain a copy of the License at
 | 
			
		||||
#
 | 
			
		||||
#      https://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
#
 | 
			
		||||
# Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
# distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
# See the License for the specific language governing permissions and
 | 
			
		||||
# limitations under the License.
 | 
			
		||||
#
 | 
			
		||||
add_subdirectory(IR)
 | 
			
		||||
add_subdirectory(transforms)
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,82 @@
 | 
			
		|||
#
 | 
			
		||||
# Copyright 2020 The TensorFlow Authors. All Rights Reserved.
 | 
			
		||||
#
 | 
			
		||||
# Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
# you may not use this file except in compliance with the License.
 | 
			
		||||
# You may obtain a copy of the License at
 | 
			
		||||
#
 | 
			
		||||
#      https://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
#
 | 
			
		||||
# Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
# distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
# See the License for the specific language governing permissions and
 | 
			
		||||
# limitations under the License.
 | 
			
		||||
#
 | 
			
		||||
include_directories(BEFORE
 | 
			
		||||
    ${CMAKE_CURRENT_BINARY_DIR}
 | 
			
		||||
    ${CMAKE_CURRENT_SOURCE_DIR})
 | 
			
		||||
 | 
			
		||||
set(LLVM_TARGET_DEFINITIONS hlo_patterns.td)
 | 
			
		||||
mlir_tablegen(hlo_patterns.cc.inc -gen-rewriters)
 | 
			
		||||
add_public_tablegen_target(MLIRMhloRewriterIncGen)
 | 
			
		||||
 | 
			
		||||
set(LLVM_TARGET_DEFINITIONS mhlo_canonicalize.td)
 | 
			
		||||
mlir_tablegen(mhlo_canonicalize.inc -gen-rewriters)
 | 
			
		||||
add_public_tablegen_target(MLIRMhloCanonicalizeIncGen)
 | 
			
		||||
 | 
			
		||||
add_mlir_dialect_library(ChloDialect
 | 
			
		||||
  chlo_ops.cc
 | 
			
		||||
 | 
			
		||||
  DEPENDS
 | 
			
		||||
  MLIRchlo_opsIncGen
 | 
			
		||||
)
 | 
			
		||||
target_link_libraries(ChloDialect PUBLIC MLIRIR)
 | 
			
		||||
 | 
			
		||||
add_mlir_library(MhloInferFusibilityOpInterface
 | 
			
		||||
  infer_fusibility_op_interface.cc
 | 
			
		||||
 | 
			
		||||
  DEPENDS
 | 
			
		||||
  MLIRinfer_fusibility_op_interfaceIncGen
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
add_mlir_dialect_library(MhloDialect
 | 
			
		||||
  hlo_ops.cc
 | 
			
		||||
 | 
			
		||||
  DEPENDS
 | 
			
		||||
  MLIRhlo_opsIncGen
 | 
			
		||||
  MLIRMhloCanonicalizeIncGen
 | 
			
		||||
  MLIRMhloRewriterIncGen
 | 
			
		||||
  MLIRinfer_fusibility_op_interfaceIncGen
 | 
			
		||||
)
 | 
			
		||||
target_link_libraries(MhloDialect
 | 
			
		||||
  PUBLIC
 | 
			
		||||
  MLIRIR
 | 
			
		||||
  MhloInferFusibilityOpInterface
 | 
			
		||||
  MLIRMhloUtils
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
add_mlir_dialect_library(LmhloDialect
 | 
			
		||||
  lhlo_ops.cc
 | 
			
		||||
 | 
			
		||||
  DEPENDS
 | 
			
		||||
  MLIRlhlo_opsIncGen
 | 
			
		||||
)
 | 
			
		||||
target_link_libraries(LmhloDialect PUBLIC MLIRIR)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
add_mlir_dialect_library(MhloRegisterDialects
 | 
			
		||||
  init.cc
 | 
			
		||||
DEPENDS
 | 
			
		||||
  MLIRchlo_opsIncGen
 | 
			
		||||
  MLIRhlo_opsIncGen
 | 
			
		||||
  MLIRlhlo_opsIncGen
 | 
			
		||||
)
 | 
			
		||||
target_link_libraries(MhloRegisterDialects
 | 
			
		||||
  PUBLIC
 | 
			
		||||
  ChloDialect
 | 
			
		||||
  MhloDialect
 | 
			
		||||
  LmhloDialect
 | 
			
		||||
)
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,155 @@
 | 
			
		|||
#
 | 
			
		||||
# Copyright 2020 The TensorFlow Authors. All Rights Reserved.
 | 
			
		||||
#
 | 
			
		||||
# Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
# you may not use this file except in compliance with the License.
 | 
			
		||||
# You may obtain a copy of the License at
 | 
			
		||||
#
 | 
			
		||||
#      https://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
#
 | 
			
		||||
# Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
# distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
# See the License for the specific language governing permissions and
 | 
			
		||||
# limitations under the License.
 | 
			
		||||
#
 | 
			
		||||
include_directories(BEFORE
 | 
			
		||||
    ${CMAKE_CURRENT_BINARY_DIR}
 | 
			
		||||
    ${CMAKE_CURRENT_SOURCE_DIR})
 | 
			
		||||
 | 
			
		||||
set(LLVM_TARGET_DEFINITIONS lower_complex_patterns.td)
 | 
			
		||||
mlir_tablegen(generated_lower_complex.inc -gen-rewriters)
 | 
			
		||||
add_public_tablegen_target(MLIRMhloLowerComplexIncGen)
 | 
			
		||||
 | 
			
		||||
set(LLVM_TARGET_DEFINITIONS legalize_to_standard_patterns.td)
 | 
			
		||||
mlir_tablegen(generated_legalize_to_standard.inc -gen-rewriters)
 | 
			
		||||
add_public_tablegen_target(MLIRMhloLegalizeToStandardIncGen)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
add_mlir_library(ChloPasses
 | 
			
		||||
  chlo_legalize_to_hlo.cc
 | 
			
		||||
  chlo_legalize_to_hlo_pass.cc
 | 
			
		||||
 | 
			
		||||
  DEPENDS
 | 
			
		||||
  MLIRhlo_opsIncGen
 | 
			
		||||
 | 
			
		||||
  LINK_COMPONENTS
 | 
			
		||||
  Core
 | 
			
		||||
 | 
			
		||||
  LINK_LIBS PUBLIC
 | 
			
		||||
  ChloDialect
 | 
			
		||||
  MLIRIR
 | 
			
		||||
  MLIRPass
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
add_mlir_library(MhloPasses
 | 
			
		||||
  legalize_gather_to_torch_index_select.cc
 | 
			
		||||
  legalize_tanh_to_approximation.cc
 | 
			
		||||
  lower_complex.cc
 | 
			
		||||
  lower_complex_patterns.td
 | 
			
		||||
  lower_general_dot.cc
 | 
			
		||||
  materialize_broadcasts.cc
 | 
			
		||||
  materialize_broadcasts_pass.cc
 | 
			
		||||
  mhlo_fusion.cc
 | 
			
		||||
  optimize_mhlo.cc
 | 
			
		||||
  optimize_mhlo_pass.cc
 | 
			
		||||
  sink_constants_to_control_flow.cc
 | 
			
		||||
  test_infer_shaped_type_pass.cc
 | 
			
		||||
  transform_unranked_hlo.cc
 | 
			
		||||
  unfuse_batch_norm.cc
 | 
			
		||||
  unfuse_batch_norm_pass.cc
 | 
			
		||||
 | 
			
		||||
  DEPENDS
 | 
			
		||||
  MLIRhlo_opsIncGen
 | 
			
		||||
  MLIRMhloLowerComplexIncGen
 | 
			
		||||
 | 
			
		||||
  LINK_COMPONENTS
 | 
			
		||||
  Core
 | 
			
		||||
 | 
			
		||||
  LINK_LIBS PUBLIC
 | 
			
		||||
  MLIRIR
 | 
			
		||||
  MLIRMhloUtils
 | 
			
		||||
  MLIRPass
 | 
			
		||||
  MLIRTransformUtils
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
add_mlir_library(MhloToLhloConversion
 | 
			
		||||
  hlo_legalize_to_lhlo.cc
 | 
			
		||||
 | 
			
		||||
  DEPENDS
 | 
			
		||||
  MLIRhlo_opsIncGen
 | 
			
		||||
  MLIRlhlo_opsIncGen
 | 
			
		||||
 | 
			
		||||
  LINK_COMPONENTS
 | 
			
		||||
  Core
 | 
			
		||||
 | 
			
		||||
  LINK_LIBS PUBLIC
 | 
			
		||||
  MhloDialect
 | 
			
		||||
  LmhloDialect
 | 
			
		||||
  MLIRIR
 | 
			
		||||
  MLIRPass
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
add_mlir_library(MhloToStandard
 | 
			
		||||
  legalize_control_flow.cc
 | 
			
		||||
  legalize_to_standard.cc
 | 
			
		||||
 | 
			
		||||
  DEPENDS
 | 
			
		||||
  MLIRhlo_opsIncGen
 | 
			
		||||
  MLIRlhlo_opsIncGen
 | 
			
		||||
  MLIRMhloLegalizeToStandardIncGen
 | 
			
		||||
 | 
			
		||||
  LINK_COMPONENTS
 | 
			
		||||
  Core
 | 
			
		||||
 | 
			
		||||
  LINK_LIBS PUBLIC
 | 
			
		||||
  MLIRIR
 | 
			
		||||
  MLIRPass
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
add_mlir_library(MhloLhloToLinalg
 | 
			
		||||
  legalize_to_linalg.cc
 | 
			
		||||
 | 
			
		||||
  DEPENDS
 | 
			
		||||
  MLIRhlo_opsIncGen
 | 
			
		||||
  MLIRlhlo_opsIncGen
 | 
			
		||||
 | 
			
		||||
  LINK_COMPONENTS
 | 
			
		||||
  Core
 | 
			
		||||
 | 
			
		||||
  LINK_LIBS PUBLIC
 | 
			
		||||
  MhloDialect
 | 
			
		||||
  MLIRIR
 | 
			
		||||
  MLIRPass
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
add_mlir_library(LmhloPasses
 | 
			
		||||
  lhlo_copy_removal.cc
 | 
			
		||||
  lhlo_fuse_linalg.cc
 | 
			
		||||
  lhlo_legalize_to_affine.cc
 | 
			
		||||
  lhlo_legalize_to_gpu.cc
 | 
			
		||||
  lhlo_legalize_to_llvm.cc
 | 
			
		||||
  lhlo_legalize_to_llvm_pass.cc
 | 
			
		||||
  lhlo_legalize_to_parallel_loops.cc
 | 
			
		||||
 | 
			
		||||
  DEPENDS
 | 
			
		||||
  MLIRlhlo_opsIncGen
 | 
			
		||||
 | 
			
		||||
  LINK_COMPONENTS
 | 
			
		||||
  Core
 | 
			
		||||
 | 
			
		||||
  LINK_LIBS PUBLIC
 | 
			
		||||
  LmhloDialect
 | 
			
		||||
  MLIRIR
 | 
			
		||||
  MLIRPass
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
add_library(AllMhloPasses INTERFACE)
 | 
			
		||||
target_link_libraries(AllMhloPasses INTERFACE
 | 
			
		||||
  ChloPasses
 | 
			
		||||
  MhloPasses
 | 
			
		||||
  MhloToLhloConversion
 | 
			
		||||
  MhloToStandard
 | 
			
		||||
  MhloLhloToLinalg
 | 
			
		||||
  LmhloPasses
 | 
			
		||||
)
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,25 @@
 | 
			
		|||
#
 | 
			
		||||
# Copyright 2020 The TensorFlow Authors. All Rights Reserved.
 | 
			
		||||
#
 | 
			
		||||
# Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
# you may not use this file except in compliance with the License.
 | 
			
		||||
# You may obtain a copy of the License at
 | 
			
		||||
#
 | 
			
		||||
#      https://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
#
 | 
			
		||||
# Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
# distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
# See the License for the specific language governing permissions and
 | 
			
		||||
# limitations under the License.
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
add_mlir_library(MLIRMhloUtils
 | 
			
		||||
  broadcast_utils.cc
 | 
			
		||||
  convert_op_folder.cc
 | 
			
		||||
  cycle_detector.cc
 | 
			
		||||
  hlo_utils.cc
 | 
			
		||||
 | 
			
		||||
  LINK_LIBS PUBLIC
 | 
			
		||||
  MLIRSupport
 | 
			
		||||
  )
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,36 @@
 | 
			
		|||
#
 | 
			
		||||
# Copyright 2020 The TensorFlow Authors. All Rights Reserved.
 | 
			
		||||
#
 | 
			
		||||
# Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
# you may not use this file except in compliance with the License.
 | 
			
		||||
# You may obtain a copy of the License at
 | 
			
		||||
#
 | 
			
		||||
#      https://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
#
 | 
			
		||||
# Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
# distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
# See the License for the specific language governing permissions and
 | 
			
		||||
# limitations under the License.
 | 
			
		||||
#
 | 
			
		||||
configure_lit_site_cfg(
 | 
			
		||||
        ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.py.in
 | 
			
		||||
        ${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg.py
 | 
			
		||||
        MAIN_CONFIG
 | 
			
		||||
        ${CMAKE_CURRENT_SOURCE_DIR}/lit.cfg.py
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
set(MLIR_HLO_TEST_DEPENDS
 | 
			
		||||
        FileCheck count not
 | 
			
		||||
        mlir-hlo-opt
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
add_lit_testsuite(check-mlir-hlo-lit "Running the mlir-hlo regression tests"
 | 
			
		||||
        ${CMAKE_CURRENT_BINARY_DIR}
 | 
			
		||||
        DEPENDS ${MLIR_HLO_TEST_DEPENDS}
 | 
			
		||||
        )
 | 
			
		||||
set_target_properties(check-mlir-hlo-lit PROPERTIES FOLDER "Tests")
 | 
			
		||||
 | 
			
		||||
add_lit_testsuites(MLIR_HLO_OPT ${CMAKE_CURRENT_SOURCE_DIR} DEPENDS ${MLIR_HLO_TEST_DEPENDS})
 | 
			
		||||
 | 
			
		||||
add_dependencies(check-mlir-hlo check-mlir-hlo-lit)
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,82 @@
 | 
			
		|||
"""Lit configuration to drive test in this repo."""
 | 
			
		||||
# Copyright 2020 The TensorFlow Authors. All Rights Reserved.
 | 
			
		||||
# Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
# you may not use this file except in compliance with the License.
 | 
			
		||||
# You may obtain a copy of the License at
 | 
			
		||||
#
 | 
			
		||||
#     http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
#
 | 
			
		||||
# Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
# distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
# See the License for the specific language governing permissions and
 | 
			
		||||
# limitations under the License.
 | 
			
		||||
 | 
			
		||||
# -*- Python -*-
 | 
			
		||||
# pylint: disable=undefined-variable
 | 
			
		||||
 | 
			
		||||
from __future__ import absolute_import
 | 
			
		||||
from __future__ import division
 | 
			
		||||
from __future__ import print_function
 | 
			
		||||
 | 
			
		||||
import os
 | 
			
		||||
 | 
			
		||||
import lit.formats
 | 
			
		||||
from lit.llvm import llvm_config
 | 
			
		||||
from lit.llvm.subst import ToolSubst
 | 
			
		||||
import lit.util
 | 
			
		||||
 | 
			
		||||
# Configuration file for the 'lit' test runner.
 | 
			
		||||
 | 
			
		||||
# name: The name of this test suite.
 | 
			
		||||
config.name = 'MLIR_HLO_OPT'
 | 
			
		||||
 | 
			
		||||
config.test_format = lit.formats.ShTest(not llvm_config.use_lit_shell)
 | 
			
		||||
 | 
			
		||||
# suffixes: A list of file extensions to treat as test files.
 | 
			
		||||
config.suffixes = ['.mlir', '.mlir.py']
 | 
			
		||||
 | 
			
		||||
# test_source_root: The root path where tests are located.
 | 
			
		||||
config.test_source_root = os.path.dirname(__file__)
 | 
			
		||||
 | 
			
		||||
# test_exec_root: The root path where tests should be run.
 | 
			
		||||
config.test_exec_root = os.path.join(config.mlir_hlo_obj_root, 'test')
 | 
			
		||||
 | 
			
		||||
config.substitutions.append(('%PATH%', config.environment['PATH']))
 | 
			
		||||
config.substitutions.append(('%shlibext', config.llvm_shlib_ext))
 | 
			
		||||
 | 
			
		||||
llvm_config.with_system_environment(['HOME', 'INCLUDE', 'LIB', 'TMP', 'TEMP'])
 | 
			
		||||
 | 
			
		||||
llvm_config.use_default_substitutions()
 | 
			
		||||
 | 
			
		||||
# excludes: A list of directories to exclude from the testsuite. The 'Inputs'
 | 
			
		||||
# subdirectories contain auxiliary inputs for various tests in their parent
 | 
			
		||||
# directories.
 | 
			
		||||
config.excludes = [
 | 
			
		||||
    'Inputs', 'Examples', 'CMakeLists.txt', 'README.txt', 'LICENSE.txt'
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
# test_source_root: The root path where tests are located.
 | 
			
		||||
config.test_source_root = os.path.dirname(__file__)
 | 
			
		||||
 | 
			
		||||
# test_exec_root: The root path where tests should be run.
 | 
			
		||||
config.test_exec_root = os.path.join(config.mlir_hlo_obj_root, 'test')
 | 
			
		||||
config.mlir_hlo_tools_dir = os.path.join(config.mlir_hlo_obj_root, 'tools')
 | 
			
		||||
 | 
			
		||||
# Tweak the PATH to include the tools dir.
 | 
			
		||||
llvm_config.with_environment('PATH', config.llvm_tools_dir, append_path=True)
 | 
			
		||||
 | 
			
		||||
tool_dirs = [
 | 
			
		||||
    os.path.join(config.mlir_hlo_tools_dir, 'mlir-hlo-opt'),
 | 
			
		||||
    config.llvm_tools_dir,
 | 
			
		||||
]
 | 
			
		||||
tools = [
 | 
			
		||||
    'mlir-hlo-opt',
 | 
			
		||||
    'mlir-cpu-runner',
 | 
			
		||||
    ToolSubst(
 | 
			
		||||
        '%mlir_runner_utils_dir',
 | 
			
		||||
        config.mlir_runner_utils_dir,
 | 
			
		||||
        unresolved='ignore'),
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
llvm_config.add_tool_substitutions(tools, tool_dirs)
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,50 @@
 | 
			
		|||
@LIT_SITE_CFG_IN_HEADER@
 | 
			
		||||
 | 
			
		||||
import sys
 | 
			
		||||
 | 
			
		||||
config.host_triple = "@LLVM_HOST_TRIPLE@"
 | 
			
		||||
config.target_triple = "@TARGET_TRIPLE@"
 | 
			
		||||
config.llvm_src_root = "@LLVM_SOURCE_DIR@"
 | 
			
		||||
config.llvm_obj_root = "@LLVM_BINARY_DIR@"
 | 
			
		||||
config.llvm_tools_dir = "@LLVM_TOOLS_DIR@"
 | 
			
		||||
config.llvm_lib_dir = "@LLVM_LIBRARY_DIR@"
 | 
			
		||||
config.llvm_shlib_dir = "@SHLIBDIR@"
 | 
			
		||||
config.llvm_shlib_ext = "@SHLIBEXT@"
 | 
			
		||||
config.llvm_exe_ext = "@EXEEXT@"
 | 
			
		||||
config.lit_tools_dir = "@LLVM_LIT_TOOLS_DIR@"
 | 
			
		||||
config.python_executable = "@PYTHON_EXECUTABLE@"
 | 
			
		||||
config.gold_executable = "@GOLD_EXECUTABLE@"
 | 
			
		||||
config.ld64_executable = "@LD64_EXECUTABLE@"
 | 
			
		||||
config.enable_shared = @ENABLE_SHARED@
 | 
			
		||||
config.enable_assertions = @ENABLE_ASSERTIONS@
 | 
			
		||||
config.targets_to_build = "@TARGETS_TO_BUILD@"
 | 
			
		||||
config.native_target = "@LLVM_NATIVE_ARCH@"
 | 
			
		||||
config.llvm_bindings = "@LLVM_BINDINGS@".split(' ')
 | 
			
		||||
config.host_os = "@HOST_OS@"
 | 
			
		||||
config.host_cc = "@HOST_CC@"
 | 
			
		||||
config.host_cxx = "@HOST_CXX@"
 | 
			
		||||
# Note: ldflags can contain double-quoted paths, so must use single quotes here.
 | 
			
		||||
config.host_ldflags = '@HOST_LDFLAGS@'
 | 
			
		||||
config.llvm_use_sanitizer = "@LLVM_USE_SANITIZER@"
 | 
			
		||||
config.llvm_host_triple = '@LLVM_HOST_TRIPLE@'
 | 
			
		||||
config.host_arch = "@HOST_ARCH@"
 | 
			
		||||
config.mlir_hlo_src_root = "@CMAKE_SOURCE_DIR@"
 | 
			
		||||
config.mlir_hlo_obj_root = "@CMAKE_BINARY_DIR@"
 | 
			
		||||
config.mlir_runner_utils_dir = os.path.join(config.llvm_obj_root, "lib")
 | 
			
		||||
 | 
			
		||||
# Support substitution of the tools_dir with user parameters. This is
 | 
			
		||||
# used when we can't determine the tool dir at configuration time.
 | 
			
		||||
try:
 | 
			
		||||
    config.llvm_tools_dir = config.llvm_tools_dir % lit_config.params
 | 
			
		||||
    config.llvm_shlib_dir = config.llvm_shlib_dir % lit_config.params
 | 
			
		||||
except KeyError:
 | 
			
		||||
    e = sys.exc_info()[1]
 | 
			
		||||
    key, = e.args
 | 
			
		||||
    lit_config.fatal("unable to find %r parameter, use '--param=%s=VALUE'" % (key,key))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
import lit.llvm
 | 
			
		||||
lit.llvm.initialize(lit_config, config)
 | 
			
		||||
 | 
			
		||||
# Let the main config do the real work.
 | 
			
		||||
lit_config.load_config(config, "@CMAKE_SOURCE_DIR@/tests/lit.cfg.py")
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,16 @@
 | 
			
		|||
#
 | 
			
		||||
# Copyright 2020 The TensorFlow Authors. All Rights Reserved.
 | 
			
		||||
#
 | 
			
		||||
# Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
# you may not use this file except in compliance with the License.
 | 
			
		||||
# You may obtain a copy of the License at
 | 
			
		||||
#
 | 
			
		||||
#      https://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
#
 | 
			
		||||
# Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
# distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
# See the License for the specific language governing permissions and
 | 
			
		||||
# limitations under the License.
 | 
			
		||||
#
 | 
			
		||||
add_subdirectory(mlir-hlo-opt)
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,32 @@
 | 
			
		|||
#
 | 
			
		||||
# Copyright 2020 The TensorFlow Authors. All Rights Reserved.
 | 
			
		||||
#
 | 
			
		||||
# Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
# you may not use this file except in compliance with the License.
 | 
			
		||||
# You may obtain a copy of the License at
 | 
			
		||||
#
 | 
			
		||||
#      https://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
#
 | 
			
		||||
# Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
# distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
# See the License for the specific language governing permissions and
 | 
			
		||||
# limitations under the License.
 | 
			
		||||
#
 | 
			
		||||
get_property(dialect_libs GLOBAL PROPERTY MLIR_DIALECT_LIBS)
 | 
			
		||||
get_property(conversion_libs GLOBAL PROPERTY MLIR_CONVERSION_LIBS)
 | 
			
		||||
set(LIBS
 | 
			
		||||
        ${dialect_libs}
 | 
			
		||||
        ${conversion_libs}
 | 
			
		||||
        MLIROptLib
 | 
			
		||||
 | 
			
		||||
        MhloRegisterDialects
 | 
			
		||||
        AllMhloPasses
 | 
			
		||||
        )
 | 
			
		||||
add_llvm_executable(mlir-hlo-opt mlir-hlo-opt.cpp
 | 
			
		||||
  DEPENDS
 | 
			
		||||
        MLIRLmhloPassIncGen
 | 
			
		||||
        MLIRMhloPassIncGen
 | 
			
		||||
)
 | 
			
		||||
llvm_update_compile_flags(mlir-hlo-opt)
 | 
			
		||||
target_link_libraries(mlir-hlo-opt PRIVATE ${LIBS})
 | 
			
		||||
		Loading…
	
		Reference in New Issue