executor/src/src-blitters.tmpl

212 lines
7.7 KiB
Cheetah

# $Id: src-blitters.tmpl,v 1.2 1995/10/29 23:50:17 mat Exp $
begin_src_func
end_func
begin_mode copy_noshift max_unwrap
repeat @dst@ = @src@;
mask @dst@ = (@dst@ & ~arg) | (@src@ & arg);
end_mode
begin_mode or_noshift max_unwrap
repeat @dst@ |= @src@;
mask @dst@ |= (@src@ & arg);
end_mode
begin_mode xor_noshift max_unwrap
repeat @dst@ ^= @src@;
mask @dst@ ^= (@src@ & arg);
end_mode
begin_mode xor_noshift_fgbk max_unwrap
repeat @dst@ ^= @src@;
mask @dst@ ^= (@src@ & arg);
end_mode
begin_mode and_noshift max_unwrap
repeat @dst@ &= @src@;
mask @dst@ &= (@src@ | ~arg);
end_mode
begin_mode notcopy_noshift max_unwrap
repeat @dst@ = ~@src@;
mask @dst@ = (@dst@ & ~arg) | (~@src@ & arg);
end_mode
begin_mode notor_noshift max_unwrap
repeat @dst@ |= ~@src@;
mask @dst@ |= (~@src@ & arg);
end_mode
begin_mode notxor_noshift max_unwrap
repeat @dst@ ^= ~@src@;
mask @dst@ ^= (~@src@ & arg);
end_mode
begin_mode notxor_noshift_fgbk max_unwrap
repeat @dst@ ^= ~@src@;
mask @dst@ ^= (~@src@ & arg);
end_mode
begin_mode notand_noshift max_unwrap
repeat @dst@ &= ~@src@;
mask @dst@ &= ~(@src@ & arg);
end_mode
begin_src_func
init const long left_shift = srcblt_shift_offset;
init const long right_shift = 32 - left_shift;
end_func
begin_mode copy_shift max_unwrap
repeat @dst@ = CL ((CL (@src@) << left_shift) | (CL (@src_plus_1@) >> right_shift));
mask @dst@ = (@dst@ & ~arg) | (CL ((CL (@src@) << left_shift) | (CL (@src_plus_1@) >> right_shift)) & arg);
end_mode
begin_mode or_shift max_unwrap
repeat @dst@ |= CL ((CL (@src@) << left_shift) | (CL (@src_plus_1@) >> right_shift));
mask @dst@ |= CL ((CL (@src@) << left_shift) | (CL (@src_plus_1@) >> right_shift)) & arg;
end_mode
begin_mode xor_shift max_unwrap
repeat @dst@ ^= CL ((CL (@src@) << left_shift) | (CL (@src_plus_1@) >> right_shift));
mask @dst@ ^= CL ((CL (@src@) << left_shift) | (CL (@src_plus_1@) >> right_shift)) & arg;
end_mode
begin_mode xor_shift_fgbk max_unwrap
repeat @dst@ ^= CL ((CL (@src@) << left_shift) | (CL (@src_plus_1@) >> right_shift));
mask @dst@ ^= CL ((CL (@src@) << left_shift) | (CL (@src_plus_1@) >> right_shift)) & arg;
end_mode
begin_mode and_shift max_unwrap
repeat @dst@ &= CL ((CL (@src@) << left_shift) | (CL (@src_plus_1@) >> right_shift));
mask @dst@ &= CL ((CL (@src@) << left_shift) | (CL (@src_plus_1@) >> right_shift)) | ~arg;
end_mode
begin_mode notcopy_shift max_unwrap
repeat @dst@ = ~(CL ((CL (@src@) << left_shift) | (CL (@src_plus_1@) >> right_shift)));
mask @dst@ = (@dst@ & ~arg) | (~(CL ((CL (@src@) << left_shift) | (CL (@src_plus_1@) >> right_shift))) & arg);
end_mode
begin_mode notor_shift max_unwrap
repeat @dst@ |= ~(CL ((CL (@src@) << left_shift) | (CL (@src_plus_1@) >> right_shift)));
mask @dst@ |= (~(CL ((CL (@src@) << left_shift) | (CL (@src_plus_1@) >> right_shift)))) & arg;
end_mode
begin_mode notxor_shift max_unwrap
repeat @dst@ ^= ~(CL ((CL (@src@) << left_shift) | (CL (@src_plus_1@) >> right_shift)));
mask @dst@ ^= (~(CL ((CL (@src@) << left_shift) | (CL (@src_plus_1@) >> right_shift)))) & arg;
end_mode
begin_mode notxor_shift_fgbk max_unwrap
repeat @dst@ ^= ~(CL ((CL (@src@) << left_shift) | (CL (@src_plus_1@) >> right_shift)));
mask @dst@ ^= (~(CL ((CL (@src@) << left_shift) | (CL (@src_plus_1@) >> right_shift)))) & arg;
end_mode
begin_mode notand_shift max_unwrap
repeat @dst@ &= ~(CL ((CL (@src@) << left_shift) | (CL (@src_plus_1@) >> right_shift)));
mask @dst@ &= ~((CL ((CL (@src@) << left_shift) | (CL (@src_plus_1@) >> right_shift))) & arg);
end_mode
begin_src_func
init const uint32 fg_bits = srcblt_fg_color;
init const uint32 bk_bits = srcblt_bk_color;
end_func
begin_mode copy_noshift_fgbk max_unwrap
repeat { const uint32 s = @src@; @dst@ = (s & fg_bits) | (~s & bk_bits); }
mask { const uint32 s = @src@; @dst@ = (@dst@ & ~arg) | (((s & fg_bits) | (~s & bk_bits)) & arg); }
end_mode
begin_mode notcopy_noshift_fgbk max_unwrap
repeat { const uint32 s = @src@; @dst@ = (~s & fg_bits) | (s & bk_bits); }
mask { const uint32 s = @src@; @dst@ = (@dst@ & ~arg) | (((~s & fg_bits) | (s & bk_bits)) & arg); }
end_mode
begin_src_func
init const uint32 fg_bits = srcblt_fg_color;
end_func
begin_mode or_noshift_fgbk max_unwrap
repeat { uint32 s = @src@, d; d = @dst@ & ~s; d |= (s & fg_bits); @dst@ = d; }
mask { uint32 s = @src@ & arg, d; d = @dst@ & ~s; d |= (s & fg_bits); @dst@ = d; }
end_mode
begin_mode notor_noshift_fgbk max_unwrap
repeat { uint32 s = @src@, d; d = @dst@ & s; d |= (~s & fg_bits); @dst@ = d; }
mask { uint32 s = ~@src@ & arg, d; d = @dst@ & ~s; d |= (s & fg_bits); @dst@ = d; }
end_mode
begin_src_func
init const uint32 bk_bits = srcblt_bk_color;
end_func
begin_mode and_noshift_fgbk max_unwrap
repeat { uint32 s = @src@, d; d = @dst@ & s; d |= (~s & bk_bits); @dst@ = d; }
mask { uint32 s = @src@ | ~arg, d; d = @dst@ & s; d |= (~s & bk_bits); @dst@ = d; }
end_mode
begin_mode notand_noshift_fgbk max_unwrap
repeat { uint32 s = @src@, d; d = @dst@ & ~s; d |= (s & bk_bits); @dst@ = d; }
mask { uint32 s = @src@ & arg, d; d = @dst@ & ~s; d |= (s & bk_bits); @dst@ = d; }
end_mode
begin_src_func
init const long left_shift = srcblt_shift_offset;
init const long right_shift = 32 - left_shift;
init const uint32 fg_bits = srcblt_fg_color;
init const uint32 bk_bits = srcblt_bk_color;
end_func
begin_mode copy_shift_fgbk max_unwrap
repeat { const uint32 s = CL ((CL (@src@) << left_shift) | (CL (@src_plus_1@) >> right_shift)); @dst@ = (s & fg_bits) | (~s & bk_bits); }
mask { const uint32 s = (CL ((CL (@src@) << left_shift) | (CL (@src_plus_1@) >> right_shift)) & arg); uint32 d = @dst@ & ~arg; d |= ((s & fg_bits) | (~s & bk_bits)) & arg; @dst@ = d; }
end_mode
begin_mode notcopy_shift_fgbk max_unwrap
repeat { const uint32 s = (CL ((CL (@src@) << left_shift) | (CL (@src_plus_1@) >> right_shift))); @dst@ = (~s & fg_bits) | (s & bk_bits); }
mask { const uint32 s = (CL ((CL (@src@) << left_shift) | (CL (@src_plus_1@) >> right_shift)) & arg); uint32 d = @dst@ & ~arg; d |= ((~s & fg_bits) | (s & bk_bits)) & arg; @dst@ = d; }
end_mode
begin_src_func
init const long left_shift = srcblt_shift_offset;
init const long right_shift = 32 - left_shift;
init const uint32 fg_bits = srcblt_fg_color;
end_func
begin_mode or_shift_fgbk max_unwrap
repeat { const uint32 s = CL ((CL (@src@) << left_shift) | (CL (@src_plus_1@) >> right_shift)); uint32 d = @dst@ & ~s; d |= (s & fg_bits); @dst@ = d; }
mask { const uint32 s = CL ((CL (@src@) << left_shift) | (CL (@src_plus_1@) >> right_shift)) & arg; uint32 d = @dst@ & ~s; d |= (s & fg_bits); @dst@ = d; }
end_mode
begin_mode notor_shift_fgbk max_unwrap
repeat { const uint32 s = CL ((CL (@src@) << left_shift) | (CL (@src_plus_1@) >> right_shift)); uint32 d = @dst@ & s; d |= (~s & fg_bits); @dst@ = d; }
mask { const uint32 s = ~(CL ((CL (@src@) << left_shift) | (CL (@src_plus_1@) >> right_shift))) & arg; uint32 d = @dst@ & ~s; d |= (s & fg_bits); @dst@ = d; }
end_mode
begin_src_func
init const long left_shift = srcblt_shift_offset;
init const long right_shift = 32 - left_shift;
init const uint32 bk_bits = srcblt_bk_color;
end_func
begin_mode and_shift_fgbk max_unwrap
repeat { const uint32 s = CL ((CL (@src@) << left_shift) | (CL (@src_plus_1@) >> right_shift)); uint32 d = @dst@ & s; d |= (~s & bk_bits); @dst@ = d; }
mask { const uint32 s = CL ((CL (@src@) << left_shift) | (CL (@src_plus_1@) >> right_shift)) | ~arg; uint32 d = @dst@ & s; d |= (~s & bk_bits); @dst@ = d; }
end_mode
begin_mode notand_shift_fgbk max_unwrap
repeat { const uint32 s = CL ((CL (@src@) << left_shift) | (CL (@src_plus_1@) >> right_shift)); uint32 d = @dst@ & ~s; d |= (s & bk_bits); @dst@ = d; }
mask { const uint32 s = CL ((CL (@src@) << left_shift) | (CL (@src_plus_1@) >> right_shift)) & arg; uint32 d = @dst@ & ~s; d |= (s & bk_bits); @dst@ = d; }
end_mode