diff --git a/LICENSE.txt b/LICENSE.txt index 39155115f..2dd05e102 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -2,7 +2,7 @@ ILGPU License ******************************************************************************** University of Illinois/NCSA Open Source License -Copyright (c) 2016-2023 ILGPU Project +Copyright (c) 2016-2024 ILGPU Project All rights reserved. Developed by: Marcel Koester (m4rs@m4rs.net) diff --git a/README.md b/README.md index f9da8e467..035388286 100644 --- a/README.md +++ b/README.md @@ -106,7 +106,7 @@ ILGPU also provides Source Link support for a better debugging experience. Make ILGPU is licensed under the University of Illinois/NCSA Open Source License. Detailed license information can be found in LICENSE.txt. -Copyright (c) 2016-2023 ILGPU Project. All rights reserved. +Copyright (c) 2016-2024 ILGPU Project. All rights reserved. Originally developed by Marcel Koester. diff --git a/Src/ILGPU.Algorithms/Properties/ILGPU.Algorithms.nuspec.targets b/Src/ILGPU.Algorithms/Properties/ILGPU.Algorithms.nuspec.targets index 7f4bd581b..fb8186090 100644 --- a/Src/ILGPU.Algorithms/Properties/ILGPU.Algorithms.nuspec.targets +++ b/Src/ILGPU.Algorithms/Properties/ILGPU.Algorithms.nuspec.targets @@ -4,7 +4,7 @@ $(Version) ILGPU Algorithms Library - Copyright (c) 2016-2023 ILGPU Project. All rights reserved. + Copyright (c) 2016-2024 ILGPU Project. All rights reserved. ILGPU Algorithms Project ILGPU Algorithms library for high-level GPU programming. diff --git a/Src/ILGPU/Backends/OpenCL/CLCodeGenerator.cs b/Src/ILGPU/Backends/OpenCL/CLCodeGenerator.cs index 3d758ec6a..03d686fc5 100644 --- a/Src/ILGPU/Backends/OpenCL/CLCodeGenerator.cs +++ b/Src/ILGPU/Backends/OpenCL/CLCodeGenerator.cs @@ -1,6 +1,6 @@ // --------------------------------------------------------------------------------------- // ILGPU -// Copyright (c) 2019-2023 ILGPU Project +// Copyright (c) 2019-2024 ILGPU Project // www.ilgpu.net // // File: CLCodeGenerator.cs @@ -199,7 +199,7 @@ protected static string GetParameterName(Parameter parameter) => private int labelCounter; private readonly Dictionary blockLookup = - new Dictionary(); + new Dictionary(new BasicBlock.Comparer()); private readonly string labelPrefix; private StringBuilder prefixBuilder = new StringBuilder(); @@ -439,7 +439,8 @@ protected void GenerateCodeInternal() blockLookup.Add(block, DeclareLabel()); // Find all phi nodes, allocate target registers and setup internal mapping - var phiMapping = new Dictionary>(); + var phiMapping = new Dictionary>( + new BasicBlock.Comparer()); var dominators = Method.Blocks.CreateDominators(); var phiBindings = PhiBindings.Create( blocks, diff --git a/Src/ILGPU/Backends/PTX/PTXCodeGenerator.cs b/Src/ILGPU/Backends/PTX/PTXCodeGenerator.cs index 1c304b348..74f8b8ea7 100644 --- a/Src/ILGPU/Backends/PTX/PTXCodeGenerator.cs +++ b/Src/ILGPU/Backends/PTX/PTXCodeGenerator.cs @@ -1,6 +1,6 @@ // --------------------------------------------------------------------------------------- // ILGPU -// Copyright (c) 2018-2023 ILGPU Project +// Copyright (c) 2018-2024 ILGPU Project // www.ilgpu.net // // File: PTXCodeGenerator.cs @@ -286,7 +286,8 @@ protected static string GetParameterName(Parameter parameter) => #region Instance private int labelCounter; - private readonly Dictionary blockLookup = new(); + private readonly Dictionary blockLookup = new( + new BasicBlock.Comparer()); private readonly Dictionary<(Encoding, string), string> stringConstants = new(); private readonly PhiBindings phiBindings; diff --git a/Src/ILGPU/Backends/Velocity/VelocityCodeGenerator.cs b/Src/ILGPU/Backends/Velocity/VelocityCodeGenerator.cs index 382d419ba..36ba0c68f 100644 --- a/Src/ILGPU/Backends/Velocity/VelocityCodeGenerator.cs +++ b/Src/ILGPU/Backends/Velocity/VelocityCodeGenerator.cs @@ -1,6 +1,6 @@ // --------------------------------------------------------------------------------------- // ILGPU -// Copyright (c) 2022-2023 ILGPU Project +// Copyright (c) 2022-2024 ILGPU Project // www.ilgpu.net // // File: VelocityCodeGenerator.cs @@ -96,7 +96,8 @@ public readonly record struct GeneratorArgs( /// /// Maps blocks to labels. /// - private readonly Dictionary blockLookup = new(); + private readonly Dictionary blockLookup = + new(new BasicBlock.Comparer()); /// /// The masks analysis holding information about the masks being required. diff --git a/Src/ILGPU/Frontend/Block.CFGBuilder.cs b/Src/ILGPU/Frontend/Block.CFGBuilder.cs index a293f40c4..c743e9837 100644 --- a/Src/ILGPU/Frontend/Block.CFGBuilder.cs +++ b/Src/ILGPU/Frontend/Block.CFGBuilder.cs @@ -1,6 +1,6 @@ // --------------------------------------------------------------------------------------- // ILGPU -// Copyright (c) 2018-2023 ILGPU Project +// Copyright (c) 2018-2024 ILGPU Project // www.ilgpu.net // // File: Block.CFGBuilder.cs @@ -71,7 +71,7 @@ public readonly void Apply(ILInstruction instruction, int offset) => private readonly Dictionary blockMapping = new Dictionary(); private readonly Dictionary basicBlockMapping = - new Dictionary(); + new Dictionary(new BasicBlock.Comparer()); private readonly Dictionary> successorMapping = new Dictionary>(); diff --git a/Src/ILGPU/IR/Analyses/Loops.cs b/Src/ILGPU/IR/Analyses/Loops.cs index 6aca12db0..53d19c4f4 100644 --- a/Src/ILGPU/IR/Analyses/Loops.cs +++ b/Src/ILGPU/IR/Analyses/Loops.cs @@ -1,6 +1,6 @@ // --------------------------------------------------------------------------------------- // ILGPU -// Copyright (c) 2020-2023 ILGPU Project +// Copyright (c) 2020-2024 ILGPU Project // www.ilgpu.net // // File: Loops.cs @@ -757,8 +757,8 @@ private void RegisterLoop( // Initialize all lists and sets var headers = InlineList.Create(2); var breakers = InlineList.Create(2); - var entryBlocks = new HashSet(); - var exitBlocks = new HashSet(); + var entryBlocks = new HashSet(new BasicBlock.Comparer()); + var exitBlocks = new HashSet(new BasicBlock.Comparer()); // Gather all loop entries and exists foreach (var member in members) diff --git a/Src/ILGPU/IR/BasicBlockCollection.cs b/Src/ILGPU/IR/BasicBlockCollection.cs index b0737f0a4..0bc0ad847 100644 --- a/Src/ILGPU/IR/BasicBlockCollection.cs +++ b/Src/ILGPU/IR/BasicBlockCollection.cs @@ -1,6 +1,6 @@ // --------------------------------------------------------------------------------------- // ILGPU -// Copyright (c) 2020-2023 ILGPU Project +// Copyright (c) 2020-2024 ILGPU Project // www.ilgpu.net // // File: BasicBlockCollection.cs @@ -339,7 +339,7 @@ public readonly HashSet ToSet() => public readonly HashSet ToSet(TPredicate predicate) where TPredicate : InlineList.IPredicate { - var result = new HashSet(); + var result = new HashSet(new BasicBlock.Comparer()); foreach (var block in this) { if (predicate.Apply(block)) diff --git a/Src/ILGPU/IR/BasicBlockMapping.cs b/Src/ILGPU/IR/BasicBlockMapping.cs index d34e5ce0f..46e809926 100644 --- a/Src/ILGPU/IR/BasicBlockMapping.cs +++ b/Src/ILGPU/IR/BasicBlockMapping.cs @@ -1,6 +1,6 @@ // --------------------------------------------------------------------------------------- // ILGPU -// Copyright (c) 2020-2023 ILGPU Project +// Copyright (c) 2020-2024 ILGPU Project // www.ilgpu.net // // File: BasicBlockMapping.cs @@ -746,7 +746,7 @@ partial struct BasicBlockSet /// [MemberNotNull(nameof(blockSet))] - partial void InitBlockSet() => blockSet = new HashSet(); + partial void InitBlockSet() => blockSet = new(new BasicBlock.Comparer()); #endregion @@ -785,7 +785,8 @@ partial struct BasicBlockMap /// [MemberNotNull(nameof(blockMap))] - partial void InitBlockMap() => blockMap = new Dictionary(); + partial void InitBlockMap() => blockMap = + new Dictionary(new BasicBlock.Comparer()); #endregion diff --git a/Src/ILGPU/IR/Verifier.cs b/Src/ILGPU/IR/Verifier.cs index 9c18e0a47..7f59b4e9b 100644 --- a/Src/ILGPU/IR/Verifier.cs +++ b/Src/ILGPU/IR/Verifier.cs @@ -1,6 +1,6 @@ // --------------------------------------------------------------------------------------- // ILGPU -// Copyright (c) 2020-2023 ILGPU Project +// Copyright (c) 2020-2024 ILGPU Project // www.ilgpu.net // // File: Verifier.cs @@ -184,11 +184,11 @@ private sealed class ControlFlowVerifier : VerifierBase private readonly List blocksInRpo = new List(); private readonly HashSet containedBlocks = - new HashSet(); + new(new BasicBlock.Comparer()); private readonly Dictionary> predecessors = - new Dictionary>(); + new(new BasicBlock.Comparer()); private readonly Dictionary> successors = - new Dictionary>(); + new(new BasicBlock.Comparer()); /// /// Constructs a new control-flow verifier. @@ -204,15 +204,15 @@ public ControlFlowVerifier(Method method, VerificationResult result) #region Methods /// - /// Creates new predecessor and successor ink sets. + /// Creates new predecessor and successor link sets. /// /// The current block. private void CreateLinkSets(BasicBlock block) { if (!predecessors.ContainsKey(block)) - predecessors.Add(block, new HashSet()); + predecessors.Add(block, new(new BasicBlock.Comparer())); if (!successors.ContainsKey(block)) - successors.Add(block, new HashSet()); + successors.Add(block, new(new BasicBlock.Comparer())); } /// @@ -325,7 +325,7 @@ private sealed class ValueVerifier : VerifierBase private readonly HashSet values = new HashSet(); private readonly Dictionary> mapping = - new Dictionary>(); + new Dictionary>(new BasicBlock.Comparer()); /// /// Constructs a new value verifier. @@ -465,7 +465,7 @@ private void VerifyPhis() => phiValue.BasicBlock.Predecessors.Length); // Verify nodes and sources - var visited = new HashSet(); + var visited = new HashSet(new BasicBlock.Comparer()); for (int i = 0, e = phiValue.Nodes.Length; i < e; ++i) { Value value = phiValue.Nodes[i]; diff --git a/Src/ILGPU/Properties/ILGPU.nuspec.targets b/Src/ILGPU/Properties/ILGPU.nuspec.targets index 42c7d9fe1..a57a3c386 100644 --- a/Src/ILGPU/Properties/ILGPU.nuspec.targets +++ b/Src/ILGPU/Properties/ILGPU.nuspec.targets @@ -4,7 +4,7 @@ $(Version) ILGPU - Copyright (c) 2016-2023 ILGPU Project. All rights reserved. + Copyright (c) 2016-2024 ILGPU Project. All rights reserved. Marcel Koester ILGPU Just-In-Time Compiler