Goose  Diff

Differences From Artifact [48fa65ff3d]:

  • File bs/cir/instruction.cpp — part of check-in [5b069c9677] at 2023-11-30 18:29:55 on branch trunk — Handful of fixes and improvements from an abandoned refactor of inline funcs, will go for a different solution (user: zlodo size: 2763)

To Artifact [2ad5bb2095]:

  • File bs/cir/instruction.cpp — part of check-in [1793989d05] at 2024-02-09 18:05:28 on branch trunk — Lowering: completely reworked all lowering to happen in the same two unified extension points upstream of all three CIR consumers (user: zlodo size: 2787)

51
52
53
54
55
56
57
58

59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78

79
80
81
82
83
84
85
86
87
88
89
90
91
92
93

94
95
96
97
98

99
100
101
102
103
104
105
106
107
108
109
110
51
52
53
54
55
56
57

58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77

78
79
80
81
82
83
84
85
86
87
88
89
90
91
92

93
94
95
96
97

98
99
100
101
102
103
104
105
106
107
108
109
110







-
+



















-
+














-
+




-
+












        out << "SELECT(" << ins.m_memberIndex;
        return out << ')';
    }

    ostream& operator<<( ostream& out, const Load& ins )
    {
        out << "LOAD(";
        return out << ins.m_type << ')';
        return out << ins.m_type.get() << ')';
    }

    ostream& operator<<( ostream& out, const Store& ins )
    {
        return out << "STORE";
    }

    ostream& operator<<( ostream& out, const PHOverrideSet& ins )
    {
        return out << "PHOVERRIDESET(" << ins.m_name << ')';
    }

    ostream& operator<<( ostream& out, const PHOverrideClear& ins )
    {
        return out << "PHOVERRIDECLEAR(" << ins.m_name << ')';
    }

    ostream& operator<<( ostream& out, const Phi& ins )
    {
        out << "PHI(" << ins.m_destIndex << ", " << ins.m_type;
        out << "PHI(" << ins.m_destIndex << ", " << ins.m_type.get();

        for( const auto& [bb,val] : ins.m_incomings )
            out << ", " << bb.lock()->index() << ':' << val;

        return out << " )";
    }

    bool Select::operator<( const Select& rhs ) const
    {
        return m_memberIndex < rhs.m_memberIndex;
    }

    bool Load::operator<( const Load& rhs ) const
    {
        return m_type < rhs.m_type;
        return m_type < rhs.m_type.get();
    }

    bool Store::operator<( const Store& rhs ) const
    {
        return m_type < rhs.m_type;
        return m_type < rhs.m_type.get();
    }

    bool PHOverrideSet::operator<( const PHOverrideSet& rhs ) const
    {
        return m_name < rhs.m_name;
    }

    bool PHOverrideClear::operator<( const PHOverrideClear& rhs ) const
    {
        return m_name < rhs.m_name;
    }
}