aboutsummaryrefslogtreecommitdiff
path: root/elymas/lib/sys
diff options
context:
space:
mode:
authorDrahflow <drahflow@gmx.de>2015-06-18 16:02:11 +0200
committerDrahflow <drahflow@gmx.de>2015-06-18 16:02:11 +0200
commit9d4b5bb1115bc0f51954a2d236acb00ce95c88d5 (patch)
treea3e2e43012da4ad96db2ea7885a0194ce65e814b /elymas/lib/sys
parentac3551e710803af317550beca23083143681d899 (diff)
Also inline not
Diffstat (limited to 'elymas/lib/sys')
-rw-r--r--elymas/lib/sys/opt.ey34
1 files changed, 33 insertions, 1 deletions
diff --git a/elymas/lib/sys/opt.ey b/elymas/lib/sys/opt.ey
index 16ceb74..e1ae466 100644
--- a/elymas/lib/sys/opt.ey
+++ b/elymas/lib/sys/opt.ey
@@ -249,7 +249,7 @@
/rdx :pushqReg
/rcx :pushqReg
- |and ::rawAddress /rax :movqImmReg
+ |or ::rawAddress /rax :movqImmReg
/rax :pushqReg
"*" | ::rawCodeAddress /rax :movqImmReg
/rax :callqReg
@@ -257,6 +257,37 @@
@done
]] ] ==:INLINEBLOCKOR
+ [ NATIVENOSCOPE [[
+ /rcx :popqReg
+ /rcx /rax :movqRegReg
+
+ 63 /rax :btrqImm8Reg
+ /nonInlineCase :jncLbl8
+
+ /rcx /rcx :xorqRegReg
+ /rax /rax :testqRegReg
+ /cl :seteReg
+ 63 /rcx :btsqImm8Reg
+ /rcx :pushqReg
+ /done :jmpLbl8
+
+ @positive
+ 1 /rax :movqImmReg
+ 63 /rax :btsqImm8Reg
+ /rax :pushqReg
+ /done :jmpLbl8
+
+ @nonInlineCase
+ /rcx :pushqReg
+
+ |not ::rawAddress /rax :movqImmReg
+ /rax :pushqReg
+ "*" | ::rawCodeAddress /rax :movqImmReg
+ /rax :callqReg
+
+ @done
+ ]] ] ==:INLINEBLOCKNOT
+
{ ==negatedOpcodeName ==functionName
[ NATIVENOSCOPE [[
/rcx :popqReg
@@ -754,6 +785,7 @@
[
{ 1 last * |and ::rawAddress eq }' { INLINEBLOCKAND i logic =[] [ NOP ] i 1 sub logic =[] }
{ 1 last * |or ::rawAddress eq }' { INLINEBLOCKOR i logic =[] [ NOP ] i 1 sub logic =[] }
+ { 1 last * |not ::rawAddress eq }' { INLINEBLOCKNOT i logic =[] [ NOP ] i 1 sub logic =[] }
{ 1 last * |eq ::rawAddress eq }' { INLINEBLOCKEQ i logic =[] [ NOP ] i 1 sub logic =[] }
{ 1 last * |neq ::rawAddress eq }' { INLINEBLOCKNEQ i logic =[] [ NOP ] i 1 sub logic =[] }