Displaying 2 results from an estimated 2 matches for "exec1".
Did you mean:
exec
2010 Nov 23
2
[LLVMdev] Unrolling an arithmetic expression inside a loop
...+Y[i]; // X+Y
t2[i] = t1[i]*Y[i]; // XY + Y2
t3[i] = X[i]*Y[i]; // XY
t4[i] = Y[i]*Y[i]; // Y2
t5[i] = t3[i]+t4[i]; // XY + Y2
t6[i] = t2[i]-t5[i]; // 0
res[i] = t6[i] + t3[i]; // XY
}
}
vs
void exec1(const int *X, const int *Y, int *res, const int N) {
for(int i = 0; i < N; i++) {
int t1,t2,t3,t4,t5,t6;
t1 = X[i]+Y[i]; // X+Y
t2 = t1*Y[i]; // XY + Y2
t3 = X[i]*Y[i]; // XY
t4 = Y[i]*Y[i]; // Y2
t5...
2011 Oct 22
0
[LLVMdev] Instruction Scheduling Itineraries
...press latency
here. (I'm only showing the pipeline stages here, not the operand latency list).
Let's say you want to treat each stage of a pipeline as a separate
type of unit:
stage0: Decode
stage1: Exec
stage2: Write
[InstrStage<1, [Decode0, Decode1], 0>,
InstrStage<1, [Exec0, Exec1], 0>,
InstrStage<1, [Write0, Write1, 0]>]
Now when the first instruction is scheduled, it fills in the current
row of the reservation table with Decode0, Exec0, Write0. This is
counterintuitive because the instruction does not execute on all units
in the same cycle, but it results in a m...