示例#1
0
 /// <summary>
 /// Creates a new broadcast operation.
 /// </summary>
 /// <param name="location">The current location.</param>
 /// <param name="variable">The variable.</param>
 /// <param name="origin">
 /// The broadcast origin (thread index within a group or a warp).
 /// </param>
 /// <param name="kind">The operation kind.</param>
 /// <returns>A node that represents the broadcast operation.</returns>
 public ValueReference CreateBroadcast(
     Location location,
     Value variable,
     Value origin,
     BroadcastKind kind) =>
 Append(new Broadcast(
            GetInitializer(location),
            variable,
            origin,
            kind));
示例#2
0
 /// <summary>
 /// Constructs a new broadcast operation.
 /// </summary>
 /// <param name="basicBlock">The parent basic block.</param>
 /// <param name="value">The value to broadcast.</param>
 /// <param name="origin">The source thread index within the group or warp..</param>
 /// <param name="broadcastKind">The operation kind.</param>
 internal Broadcast(
     BasicBlock basicBlock,
     ValueReference value,
     ValueReference origin,
     BroadcastKind broadcastKind)
     : base(
         ValueKind.Broadcast,
         basicBlock,
         ImmutableArray.Create(value, origin),
         ComputeType(value.Type))
 {
     Kind = broadcastKind;
 }
示例#3
0
文件: Threads.cs 项目: linhdh/ILGPU
        /// <summary>
        /// Creates a new broadcast operation.
        /// </summary>
        /// <param name="variable">The variable.</param>
        /// <param name="origin">The broadcast origin (thread index within a group or a warp).</param>
        /// <param name="kind">The operation kind.</param>
        /// <returns>A node that represents the broadcast operation.</returns>
        public ValueReference CreateBroadcast(
            Value variable,
            Value origin,
            BroadcastKind kind)
        {
            Debug.Assert(variable != null, "Invalid variable value");
            Debug.Assert(origin != null, "Invalid origin value");

            return(Append(new Broadcast(
                              BasicBlock,
                              variable,
                              origin,
                              kind)));
        }