def pipeline05(): s = 0 for i in pipelined(pipelined(range(10))): if s > 10: break s += i return s
def pipe04(a, b, c): for i in range(8): s = 0 for k in pipelined(range(8)): s += a[k] * b[i] c[i] = s print(c[0], c[1], c[2], c[3])
def nested04(x): s = x for i in pipelined(range(4)): for j in range(4): for k in range(4): s += 1 return s
def pipeline02(): s = 0 for i in pipelined(range(10)): if s > 10: continue s += i return s
def pipe01(xs, ys, a, b, c): for i in pipelined(range(len(xs))): x = xs[i] x += a x -= b x *= c ys[i] = x
def pipe05(x): z = 0 for i in pipelined(range(x)): if i > 5: z += 1 else: z += 2 return z
def pipeline04(): s = 0 for i in pipelined(range(10)): for j in range(10): s += i + j for j in range(12): s += i + j return s
def pipe12(xs0, xs1, ys0): for i in pipelined(range(len(xs0))): if i % 2 == 0: v = xs0[i] else: v = xs1[i] #print(i, v, xs0[i], xs1[i]) ys0[i] = v
def pipe07(xs, ys): for i in pipelined(range(len(xs))): v = xs[i] if v < 0: z = (v - 8) >> 4 else: z = (v + 8) >> 4 ys[i] = z for i in pipelined(range(len(ys))): v = ys[i] #print(i, v) if v < 0: z = (v - 8) << 4 else: z = (v + 8) << 4 xs[i] = z
def pipe06(xs, ys): for i in pipelined(range(len(xs))): v = xs[i] if v < 0: z = (v - 8) >> 4 else: z = (v + 8) >> 4 ys[i] = z
def pipe18(xs0, ys0, ys1): for i in pipelined(range(len(xs0))): #for i in range(len(xs0)): x = xs0[i] if x: ys0[i] = ys1[i] else: ys1[i] = ys0[i]
def pipe14(xs0, ys0, ys1): for i in pipelined(range(len(xs0))): v = xs0[i] if i % 2 == 0: ys0[i] = v ys1[i] = -v else: ys0[i] = -v ys1[i] = v
def pipe08(xs, ys): s = 0 for i in pipelined(range(len(xs))): idx = i + s if idx > 4: idx = 0 v = xs[idx] ys[i] = v s = s + v
def worker(self, width, height, blank_size): buf0: List[int12] = [255] * (width + blank_size) buf1: List[int12] = [255] * (width + blank_size) buf2: List[int12] = [255] * (width + blank_size) line0 = buf0 line1 = buf1 line2 = buf2 phase = 0 y = blank_size r0: int12 = 255 r1: int12 = 255 r2: int12 = 255 r3: int12 = 255 r4: int12 = 255 r5: int12 = 255 r6: int12 = 255 r7: int12 = 255 r8: int12 = 255 while is_worker_running(): for x in pipelined(range(blank_size, width + blank_size)): #for x in range(blank_size, width + blank_size): d2 = self.inq.rd() line2[x] = d2 d1 = line1[x] d0 = line0[x] r0, r1, r2 = r1, r2, d0 r3, r4, r5 = r4, r5, d1 r6, r7, r8 = r7, r8, d2 out_h = filter3x3(r0, r1, r2, r3, r4, r5, r6, r7, r8, K_H) out_v = filter3x3(r0, r1, r2, r3, r4, r5, r6, r7, r8, K_V) #out_h_c = clip(128 + out_h) #out_v_c = clip(128 + out_v) out_c = clip(abs(out_h) + abs(out_v) >> 1) #self.outhq.wr(out_h_c) #self.outvq.wr(out_v_c) self.outq.wr(out_c) phase = (phase + 1) % 3 if phase == 0: line0 = buf0 line1 = buf1 line2 = buf2 elif phase == 1: line0 = buf1 line1 = buf2 line2 = buf0 else: line0 = buf2 line1 = buf0 line2 = buf1 r0 = r1 = r2 = 255 r3 = r4 = r5 = 255 r6 = r7 = r8 = 255 y += 1 if y == height + blank_size: # TODO: break
def nested05(x): s = x for i in pipelined(range(4)): t = i for j in range(4): s += 1 for k in range(4): t += 1 s += t return s
def pipe15(xs0, xs1, ys0, ys1): for i in pipelined(range(len(ys0))): if i == 0: ys0[i] = xs0[0] else: ys0[i] = 1 if i == 0: ys1[i] = 1 else: ys1[i] = ys0[i] + xs1[i]
def nested03(x): s = x for i in pipelined(range(4)): t = i s += i for j in range(4): s += 1 t += 1 t += 2 s += t return s
def pipelined_unroll01(xs, ys): s = 0 for i in pipelined(unroll(range(8), 2)): x = xs[i] + 1 if x < 0: s = s + x else: s = s - x ys[i] = x #print(x) return s
def pipe16(xs0, xs1, ys0, ys1): for i in pipelined(range(len(ys0))): if i % 3 == 0: ys0[i] = xs0[0] * xs1[1] ys1[i] = xs1[0] * xs0[1] elif i % 3 == 1: ys0[i] = xs0[1] * xs1[2] ys1[i] = xs1[1] * xs0[2] else: ys0[i] = xs0[2] * xs1[3] ys1[i] = xs1[2] * xs0[3]
def fir_filter_streaming(input: int, coeff: list, previous: list) -> int: N = TAPS - 1 for j in unroll(range(N)): jj = N - j previous[jj] = previous[jj - 1] #print(jj) previous[0] = input if previous[N] == 0: return 0 else: temp = 0 for j in pipelined(range(TAPS)): temp += previous[N - j] * coeff[j] return temp
def minivm(program): MOV = 0 ADD = 1 SUB = 2 MUL = 3 LDM = 4 STM = 5 NOP = 14 HALT = 15 reg = [0] * 8 mem = [0] * 32 def get_op(inst): return (inst & 0xF000) >> 12 def get_ri(inst): return (inst & 0x0F00) >> 8 def get_val(inst): return (inst & 0x00FF) #pc = 0 for inst in pipelined(program): #inst = program[pc] op = get_op(inst) ri = get_ri(inst) val = get_val(inst) if op == MOV: reg[ri] = val elif op == ADD: reg[ri] = reg[ri] + reg[val] elif op == SUB: reg[ri] = reg[ri] - reg[val] elif op == MUL: reg[ri] = reg[ri] * reg[val] elif op == LDM: reg[ri] = mem[val] elif op == STM: mem[val] = reg[ri] elif op == NOP: pass elif op == HALT: pass #pc += 1 return reg[0]
def pipe13(xs0, xs1, xs2, xs3, ys0, ys1): for i in pipelined(range(len(xs0))): if i % 2 == 0: if i % 4 == 0: v = xs0[i] else: v = 100 else: v = xs1[i] ys0[i] = v if i % 3 == 0: if i % 6 == 0: w = xs2[i] else: w = 200 else: w = xs3[i] ys1[i] = w
def pipe11(xs, ys): for i in pipelined(range(len(xs) - 1), ii=2): v = xs[i] + xs[i + 1] v >>= 1 ys[i] = v
def pipeline_hazard01(xs0, xs1, xs2): for i in pipelined(range(len(xs0) - 1)): xs1[i] = xs0[i] xs0[i + 1] = xs2[i]
def nested01(xs, ys, w, h): for y in pipelined(range(h)): for x in range(w): idx = y * w + x v = xs[idx] ys[idx] = v + 1
def pipe10(xs): for i in pipelined(range(len(xs) - 1), ii=-1): v = xs[i] + xs[i + 1] v >>= 1 xs[i] = v
def pipe09(xs, w): for i in pipelined(range(len(xs))): v = xs[i] v *= w xs[i] = v
def pipe03(xs): s = 0 for x in pipelined(xs): x = x + s s += x return s