| func.func @dynamic_slice() { | |
| %input = util.unfoldable_constant dense<[ | |
| [01, 02, 03, 04], | |
| [05, 06, 07, 08], | |
| [09, 10, 11, 12]]> : tensor<3x4xi32> | |
| %start1 = util.unfoldable_constant dense<1> : tensor<i64> | |
| %start2 = util.unfoldable_constant dense<2> : tensor<i64> | |
| %result = "mhlo.dynamic_slice"(%input, %start1, %start2) { | |
| slice_sizes = dense<[2, 2]> : tensor<2xi64> | |
| } : (tensor<3x4xi32>, tensor<i64>, tensor<i64>) -> tensor<2x2xi32> | |
| check.expect_eq_const(%result, dense<[ | |
| [7, 8], | |
| [11, 12]]> : tensor<2x2xi32>) : tensor<2x2xi32> | |
| return | |
| } | |
| func.func @dynamic_unit_slice() { | |
| %input = util.unfoldable_constant dense<[ | |
| [01, 02, 03, 04], | |
| [05, 06, 07, 08], | |
| [09, 10, 11, 12]]> : tensor<3x4xi32> | |
| %start1 = util.unfoldable_constant dense<1> : tensor<i64> | |
| %start2 = util.unfoldable_constant dense<2> : tensor<i64> | |
| %result = "mhlo.dynamic_slice"(%input, %start1, %start2) { | |
| slice_sizes = dense<[1, 2]> : tensor<2xi64> | |
| } : (tensor<3x4xi32>, tensor<i64>, tensor<i64>) -> tensor<1x2xi32> | |
| check.expect_eq_const(%result, dense<[ | |
| [7, 8]]> : tensor<1x2xi32>) : tensor<1x2xi32> | |
| return | |
| } | |
| func.func @dynamic_1d_slice() { | |
| %input = util.unfoldable_constant dense<[1, 2, 3, 4]> : tensor<4xi32> | |
| %start1 = util.unfoldable_constant dense<1> : tensor<i64> | |
| %result = "mhlo.dynamic_slice"(%input, %start1) { | |
| slice_sizes = dense<[2]> : tensor<1xi64> | |
| } : (tensor<4xi32>, tensor<i64>) -> tensor<2xi32> | |
| check.expect_eq_const(%result, dense<[2, 3]> : tensor<2xi32>) : tensor<2xi32> | |
| return | |
| } |