llvm-project/mlir/test/Examples/Toy/Ch7/struct-opt.mlir
River Riddle 6b4e30b7c8 Add Ch-7 of the toy tutorial detailing how to define new types.
This chapter adds a new composite type to Toy, and shows the process of adding a new type to the IR, adding and updating operations to use it, and constant folding operations producing it.

PiperOrigin-RevId: 279107885
2019-11-07 09:54:04 -08:00

17 lines
706 B
MLIR

// RUN: toyc-ch7 %s -emit=mlir -opt 2>&1 | FileCheck %s
func @main() {
%0 = "toy.struct_constant"() {
value = [[dense<4.000000e+00> : tensor<2x2xf64>], dense<4.000000e+00> : tensor<2x2xf64>]
} : () -> !toy.struct<!toy.struct<tensor<*xf64>>, tensor<*xf64>>
%1 = "toy.struct_access"(%0) {index = 0 : i64} : (!toy.struct<!toy.struct<tensor<*xf64>>, tensor<*xf64>>) -> !toy.struct<tensor<*xf64>>
%2 = "toy.struct_access"(%1) {index = 0 : i64} : (!toy.struct<tensor<*xf64>>) -> tensor<*xf64>
"toy.print"(%2) : (tensor<*xf64>) -> ()
"toy.return"() : () -> ()
}
// CHECK-LABEL: func @main
// CHECK-NEXT: %[[CST:.*]] = "toy.constant"
// CHECK-SAME: dense<4.0
// CHECK-NEXT: "toy.print"(%[[CST]])