/// <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));
/// <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; }
/// <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))); }