| func.func @slice_whole_buffer() { |
| %input = util.unfoldable_constant dense<[ |
| [01, 02, 03, 04], |
| [05, 06, 07, 08], |
| [09, 10, 11, 12]]> : tensor<3x4xi32> |
| %result = "stablehlo.slice"(%input) { |
| start_indices = array<i64: 0, 0>, |
| limit_indices = array<i64: 3, 4>, |
| strides = array<i64: 1, 1> |
| } : (tensor<3x4xi32>) -> tensor<3x4xi32> |
| check.expect_eq_const(%result, dense<[ |
| [1, 2, 3, 4], |
| [5, 6, 7, 8], |
| [9, 10, 11, 12]]> : tensor<3x4xi32>) : tensor<3x4xi32> |
| return |
| } |
| |
| func.func @slice_whole_stride() { |
| %input = util.unfoldable_constant dense<[ |
| [01, 02, 03, 04], |
| [05, 06, 07, 08], |
| [09, 10, 11, 12]]> : tensor<3x4xi32> |
| %result = "stablehlo.slice"(%input) { |
| start_indices = array<i64: 1, 0>, |
| limit_indices = array<i64: 2, 4>, |
| strides = array<i64: 1, 1> |
| } : (tensor<3x4xi32>) -> tensor<1x4xi32> |
| check.expect_eq_const(%result, dense<[[5, 6, 7, 8]]> : tensor<1x4xi32>) : tensor<1x4xi32> |
| return |
| } |
| |
| func.func @slice_stride_part() { |
| %input = util.unfoldable_constant dense<[ |
| [01, 02, 03, 04], |
| [05, 06, 07, 08], |
| [09, 10, 11, 12]]> : tensor<3x4xi32> |
| %result = "stablehlo.slice"(%input) { |
| start_indices = array<i64: 1, 1>, |
| limit_indices = array<i64: 2, 3>, |
| strides = array<i64: 1, 1> |
| } : (tensor<3x4xi32>) -> tensor<1x2xi32> |
| check.expect_eq_const(%result, dense<[[6, 7]]> : tensor<1x2xi32>) : tensor<1x2xi32> |
| return |
| } |
| |
| func.func @slice_multi_stride() { |
| %input = util.unfoldable_constant dense<[ |
| [01, 02, 03, 04], |
| [05, 06, 07, 08], |
| [09, 10, 11, 12]]> : tensor<3x4xi32> |
| %result = "stablehlo.slice"(%input) { |
| start_indices = array<i64: 1, 0>, |
| limit_indices = array<i64: 3, 4>, |
| strides = array<i64: 1, 1> |
| } : (tensor<3x4xi32>) -> tensor<2x4xi32> |
| check.expect_eq_const(%result, dense<[ |
| [5, 6, 7, 8], |
| [9, 10, 11, 12]]> : tensor<2x4xi32>) : tensor<2x4xi32> |
| return |
| } |