mirror of
https://github.com/ctm/executor.git
synced 2024-06-30 21:29:36 +00:00
212 lines
7.7 KiB
Cheetah
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
|