• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

daisytuner / docc / 23087278095

14 Mar 2026 11:44AM UTC coverage: 63.927% (+0.3%) from 63.617%
23087278095

push

github

web-flow
Merge pull request #568 from daisytuner/dead-data-elimination

Working on memory ownership & escape analysis

475 of 637 new or added lines in 28 files covered. (74.57%)

6 existing lines in 3 files now uncovered.

26010 of 40687 relevant lines covered (63.93%)

402.05 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/sdfg/src/data_flow/library_nodes/math/tensor/elementwise_ops/minimum_node.cpp
1
#include "sdfg/data_flow/library_nodes/math/tensor/elementwise_ops/minimum_node.h"
2

3
#include "sdfg/analysis/analysis.h"
4
#include "sdfg/builder/structured_sdfg_builder.h"
5
#include "sdfg/data_flow/library_nodes/math/cmath/cmath_node.h"
6
#include "sdfg/data_flow/library_nodes/math/tensor/tensor_node.h"
7
#include "sdfg/types/type.h"
8

9
namespace sdfg {
10
namespace math {
11
namespace tensor {
12

13
MinimumNode::MinimumNode(
14
    size_t element_id,
15
    const DebugInfo& debug_info,
16
    const graph::Vertex vertex,
17
    data_flow::DataFlowGraph& parent,
18
    const std::vector<symbolic::Expression>& shape
19
)
20
    : ElementWiseBinaryNode(element_id, debug_info, vertex, parent, LibraryNodeType_Minimum, shape) {}
×
21

22
bool MinimumNode::expand_operation(
23
    builder::StructuredSDFGBuilder& builder,
24
    analysis::AnalysisManager& analysis_manager,
25
    structured_control_flow::Sequence& body,
26
    const std::string& input_name_a,
27
    const std::string& input_name_b,
28
    const std::string& output_name,
29
    const types::Tensor& input_type_a,
30
    const types::Tensor& input_type_b,
31
    const types::Tensor& output_type,
32
    const data_flow::Subset& subset
33
) {
×
34
    auto& code_block = builder.add_block(body);
×
35
    auto& output_node = builder.add_access(code_block, output_name);
×
36

37
    bool is_int = types::is_integer(input_type_a.primitive_type());
×
38

NEW
39
    data_flow::CodeNode* code_node;
×
UNCOV
40
    if (is_int) {
×
41
        // Use tasklets for integer types - distinguish between signed and unsigned
42
        auto tasklet_code = TensorNode::get_integer_minmax_tasklet(input_type_a.primitive_type(), false);
×
NEW
43
        code_node = &builder.add_tasklet(code_block, tasklet_code, "_out", {"_in1", "_in2"});
×
UNCOV
44
    } else {
×
45
        // Use intrinsics for floating-point types with correct suffix
NEW
46
        code_node = &builder.add_library_node<
×
47
            cmath::CMathNode>(code_block, this->debug_info(), cmath::CMathFunction::fmin, input_type_a.primitive_type());
×
UNCOV
48
    }
×
49

NEW
50
    create_input_memlet(builder, "_in1", input_name_a, input_type_a, subset, code_block, *code_node);
×
NEW
51
    create_input_memlet(builder, "_in2", input_name_b, input_type_b, subset, code_block, *code_node);
×
NEW
52
    builder.add_computational_memlet(code_block, *code_node, "_out", output_node, subset, output_type);
×
53

54
    return true;
×
55
}
×
56

57
std::unique_ptr<data_flow::DataFlowNode> MinimumNode::
58
    clone(size_t element_id, const graph::Vertex vertex, data_flow::DataFlowGraph& parent) const {
×
59
    return std::unique_ptr<
×
60
        data_flow::DataFlowNode>(new MinimumNode(element_id, this->debug_info(), vertex, parent, this->shape_));
×
61
}
×
62

63
} // namespace tensor
64
} // namespace math
65
} // namespace sdfg
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc