This directory should contain a series of examples as a starting point for how to use StableHLO.
Note: If you have a great example to highlight, we welcome contributions!
// Assume 'module' is an MLIR module with function "main" containing StableHLO // operations. llvm::outs() << "Program:\n " << module << "\n"; // Create concrete inputs to be used for interpreting "main". auto inputValue1 = mlir::DenseElementsAttr::get( tensorType, block_builder.getFloatAttr(tensorType.getElementType(), static_cast<double>(10))); auto inputValue2 = mlir::DenseElementsAttr::get( tensorType, block_builder.getFloatAttr(tensorType.getElementType(), static_cast<double>(20))); llvm::outs() << "Inputs: " << inputValue1 << ", " << inputValue2 << "\n"; mlir::stablehlo::InterpreterConfiguration config; auto results = evalModule(module, {inputValue1, inputValue2}, config); llvm::outs() << "Output: " << (*results)[0];
Output:
Program: module @test_module { func.func @main(%arg0: tensor<3x4xf32>, %arg1: tensor<3x4xf32>) -> tensor<3x4xf32> { %0 = stablehlo.add %arg0, %arg1 : tensor<3x4xf32> %1 = stablehlo.add %arg0, %arg1 : tensor<3x4xf32> return %1 : tensor<3x4xf32> } } Inputs: dense<1.000000e+01> : tensor<3x4xf32>, dense<2.000000e+01> : tensor<3x4xf32> Output: dense<3.000000e+01> : tensor<3x4xf32>