summaryrefslogtreecommitdiff
path: root/src/rops.h.old
diff options
context:
space:
mode:
Diffstat (limited to 'src/rops.h.old')
-rw-r--r--src/rops.h.old118
1 files changed, 118 insertions, 0 deletions
diff --git a/src/rops.h.old b/src/rops.h.old
new file mode 100644
index 0000000..899b007
--- /dev/null
+++ b/src/rops.h.old
@@ -0,0 +1,118 @@
+/*
+ Raster Operations macros
+*/
+
+// -------------
+// RGB_565
+// a.red = a.red - b.red
+// a.blue = a.blue - b.blue
+// a.green = a.green - b.green
+/*
+#define ROP_SUB(a, b) \
+ " bics " #b ", " #b ", #0b00000100000100000 \n"\
+ " orr " #a ", " #a ", #0b00000100000100000 \n"\
+ " orr " #a ", " #a ", #0b10000000000000000 \n"\
+ " sub " #a ", " #a ", " #b " \n"\
+ " tst " #a ", #0b00000000000100000 \n"\
+ " biceq " #a ", " #a ", #0b00000000000011111 \n"\
+ " tst " #a ", #0b00000100000000000 \n"\
+ " biceq " #a ", " #a ", #0b00000011111100000 \n"\
+ " tst " #a ", #0b10000000000000000 \n"\
+ " biceq " #a ", " #a ", #0b01111100000000000 \n"
+*/
+#define ROP_SUB(a, b) \
+ " bics " #b ", " #b ", #0b00000100000100000 \n"\
+ " beq 999f \n"\
+ " orr " #a ", " #a ", #0b00000100000100000 \n"\
+ " orr " #a ", " #a ", #(1 << 31) \n"\
+ " subs " #a ", " #a ", " #b " \n"\
+ " bicpl " #a ", " #a ", #0b01111100000000000 \n"\
+ " tst " #a ", #0b00000000000100000 \n"\
+ " biceq " #a ", " #a ", #0b00000000000011111 \n"\
+ " tst " #a ", #0b00000100000000000 \n"\
+ " biceq " #a ", " #a ", #0b00000011111100000 \n"\
+ "999:\n"
+
+
+// -------------
+// RGB_565
+// if ZF set do ROP_SUB, else:
+// a.red = (a.red - b.red) / 2
+// a.blue = (a.blue - b.blue) / 2
+// a.green = (a.green - b.green) / 2
+/*
+#define ROP_SUB1_2(a, b) \
+ " movne " #a ", " #a ", lsr #1 \n"\
+ " bicne " #a ", " #a ", #0b00000010000010000 \n"\
+ " movne " #b ", " #b ", lsr #1 \n"\
+ " bicne " #b ", " #b ", #0b00000010000010000 \n"\
+ \
+ " bic " #b ", " #b ", #0b00000100000100000 \n"\
+ " orr " #a ", " #a ", #0b00000100000100000 \n"\
+ " orr " #a ", " #a ", #0b10000000000000000 \n"\
+ " sub " #a ", " #a ", " #b " \n"\
+ " tst " #a ", #0b00000000000100000 \n"\
+ " biceq " #a ", " #a ", #0b00000000000011111 \n"\
+ " tst " #a ", #0b00000100000000000 \n"\
+ " biceq " #a ", " #a ", #0b00000011111100000 \n"\
+ " tst " #a ", #0b10000000000000000 \n"\
+ " biceq " #a ", " #a ", #0b01111100000000000 \n"
+*/
+
+#define ROP_SUB1_2(a, b) \
+ " movne " #a ", " #a ", lsr #1 \n"\
+ " bicne " #a ", " #a ", #0b00000010000010000 \n"\
+ " movne " #b ", " #b ", lsr #1 \n"\
+ " bicne " #b ", " #b ", #0b00000010000010000 \n"\
+ \
+ " bics " #b ", " #b ", #0b00000100000100000 \n"\
+ " beq 999f \n"\
+ " orr " #a ", " #a ", #0b00000100000100000 \n"\
+ " orr " #a ", " #a ", #(1 << 31) \n"\
+ " subs " #a ", " #a ", " #b " \n"\
+ " bicpl " #a ", " #a ", #0b01111100000000000 \n"\
+ " tst " #a ", #0b00000000000100000 \n"\
+ " biceq " #a ", " #a ", #0b00000000000011111 \n"\
+ " tst " #a ", #0b00000100000000000 \n"\
+ " biceq " #a ", " #a ", #0b00000011111100000 \n"\
+ "999:\n"
+
+
+// -------------
+// RGB_565
+// a.red = a.red + b.red
+// a.blue = a.blue + b.blue
+// a.green = a.green + b.green
+#define ROP_ADD(a, b) \
+ " bics " #b ", " #b ", #0b00000100000100000 \n"\
+ " beq 999f \n"\
+ " bic " #a ", " #a ", #0b00000100000100000 \n"\
+ " add " #a ", " #a ", " #b " \n"\
+ " tst " #a ", #0b00000000000100000 \n"\
+ " orrne " #a ", " #a ", #0b00000000000011111 \n"\
+ " tst " #a ", #0b00000100000000000 \n"\
+ " orrne " #a ", " #a ", #0b00000011111100000 \n"\
+ " tst " #a ", #0b10000000000000000 \n"\
+ " orrne " #a ", " #a ", #0b01111100000000000 \n"\
+ "999:\n"
+
+// -------------
+// RGB_565
+// if ZF set do ROP_ADD, else:
+// a.red = (a.red + b.red) / 2
+// a.blue = (a.blue + b.blue) / 2
+// a.green = (a.green + b.green) / 2
+#define ROP_ADD1_2(a, b) \
+ " bic " #a ", " #a ", #0b00000100000100000 \n"\
+ " bicne " #a ", " #a ", #0b00001000001000000 \n"\
+ " bic " #b ", " #b ", #0b00000100000100000 \n"\
+ " bicne " #b ", " #b ", #0b00001000001000000 \n"\
+ " add " #a ", " #a ", " #b " \n"\
+ " movne " #a ", " #a ", lsr #1 \n"\
+ " tst " #a ", #0b00000000000100000 \n"\
+ " orrne " #a ", " #a ", #0b00000000000011111 \n"\
+ " tst " #a ", #0b00000100000000000 \n"\
+ " orrne " #a ", " #a ", #0b00000011111100000 \n"\
+ " tst " #a ", #0b10000000000000000 \n"\
+ " orrne " #a ", " #a ", #0b01111100000000000 \n"
+