{"record":{"id":"1352a71a21a05d1a","repo":"tracel-ai/burn","slug":"int-select-assign-with-other-update-is-not-imp","errorCode":null,"errorMessage":"int_select_assign with {other:?} update is not implemented","messagePattern":"int_select_assign with (.+?) update is not implemented","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/burn-cubecl/src/ops/int_tensor.rs","lineNumber":183,"sourceCode":"    fn int_select_assign(\n        tensor: IntTensor<Self>,\n        dim: usize,\n        indices: IntTensor<Self>,\n        value: IntTensor<Self>,\n        update: burn_backend::tensor::IndexingUpdateOp,\n    ) -> IntTensor<Self> {\n        match update {\n            burn_backend::tensor::IndexingUpdateOp::Assign => {\n                kernel::select_assign_replace(tensor, dim, indices, value)\n            }\n            burn_backend::tensor::IndexingUpdateOp::Add => {\n                kernel::select_assign(tensor, dim, indices, value, false)\n            }\n            burn_backend::tensor::IndexingUpdateOp::Mul => {\n                kernel::select_assign_mul(tensor, dim, indices, value)\n            }\n            other => {\n                unimplemented!(\"int_select_assign with {other:?} update is not implemented\")\n            }\n        }\n    }\n\n    fn int_equal(\n        lhs: IntTensor<Self>,\n        rhs: IntTensor<Self>,\n        out_dtype: BoolDType,\n    ) -> BoolTensor<Self> {\n        kernel::equal(lhs, rhs, out_dtype.into())\n    }\n\n    fn int_not_equal(\n        lhs: IntTensor<Self>,\n        rhs: IntTensor<Self>,\n        out_dtype: BoolDType,\n    ) -> BoolTensor<Self> {\n        kernel::not_equal(lhs, rhs, out_dtype.into())","sourceCodeStart":165,"sourceCodeEnd":201,"githubUrl":"https://github.com/tracel-ai/burn/blob/d16f7ba2ed0d41408189384044cc886fb4c8f957/crates/burn-cubecl/src/ops/int_tensor.rs#L165-L201","documentation":"int_select_assign on the CubeCl backend only supports IndexingUpdateOp::Add (kernel::select_assign) and IndexingUpdateOp::Mul (kernel::select_assign_mul). Any other update op variant falls into the catch-all arm and panics with this unimplemented! message. It is a backend feature gap, not a user data error.","triggerScenarios":"Calling int_select_assign (or Tensor::select_assign with an update op) on an IntTensor with the CubeCl backend while passing an IndexingUpdateOp other than Add or Mul (e.g. Sub).","commonSituations":"Using conditional assignment with subtraction updates on integer tensors; code that worked on a float backend or another backend being reused for int tensors; new op variants added upstream without int kernel support.","solutions":["Use a supported op: Add or Mul; emulate Sub by assigning the negated value with Add.","Replace with gather/compute/scatter: gather at indices, apply the update, then select_assign with Add/Mul or slice_assign.","Patch crates/burn-cubecl/src/ops/int_tensor.rs to dispatch the missing variant to a new int select_assign kernel.","Check backend compatibility before using advanced indexing-update ops on IntTensors."],"exampleFix":"// before\nlet out = tensor.select_assign(dim, indices, updates, IndexingUpdateOp::Sub);\n// after\nlet out = tensor.select_assign(dim, indices, -updates, IndexingUpdateOp::Add);","handlingStrategy":"validation","validationCode":"if !matches!(op, IndexingUpdateOp::Add | IndexingUpdateOp::Mul) {\n    panic!(\"int_select_assign on CubeCl supports only Add/Mul, got {op:?}\");\n}","typeGuard":"fn is_supported_select_op(op: &IndexingUpdateOp) -> bool {\n    matches!(op, IndexingUpdateOp::Add | IndexingUpdateOp::Mul)\n}","tryCatchPattern":null,"preventionTips":["Restrict select_assign update ops to Add/Mul for IntTensors on CubeCl","Convert subtraction updates to Add-of-negated before assigning","Keep a compatibility table of ops vs backends in CI tests","Prefer slice_assign for exotic update semantics"],"tags":["rust","burn","cubecl","select-assign","unimplemented"],"backgroundTag":"unsupported-op-backend","analyzedSha":"d16f7ba2ed0d41408189384044cc886fb4c8f957","analyzedAt":"2026-09-05T13:19:14.260Z","contentChangedAt":"2026-09-05T13:19:14.260Z","schemaVersion":2},"datasetVersion":"2026-09-12T17:17:11.597Z"}