aboutsummaryrefslogtreecommitdiff
path: root/src/main/stanza/ir-utils.stanza
diff options
context:
space:
mode:
authorazidar2015-04-29 11:42:37 -0700
committerazidar2015-04-29 11:42:37 -0700
commitddc0dfe7a5f942ad1066b86b4f3ba9494493c6ed (patch)
treec440e3569707a0451da1330a2fd036718c36a9d7 /src/main/stanza/ir-utils.stanza
parentc46608d92bd493fa33c3c5122341c716ca75ecb0 (diff)
Added dshl and dshr
Diffstat (limited to 'src/main/stanza/ir-utils.stanza')
-rw-r--r--src/main/stanza/ir-utils.stanza16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/main/stanza/ir-utils.stanza b/src/main/stanza/ir-utils.stanza
index 1131c1b3..6754a8bd 100644
--- a/src/main/stanza/ir-utils.stanza
+++ b/src/main/stanza/ir-utils.stanza
@@ -113,6 +113,12 @@ defmethod print (o:OutputStream, op:PrimOp) :
AS-SINT-OP : "as-SInt"
AS-SINT-U-OP : "as-SInt-u"
AS-SINT-S-OP : "as-SInt-s"
+ DYN-SHIFT-LEFT-OP : "dshl"
+ DYN-SHIFT-LEFT-U-OP : "dshl-u"
+ DYN-SHIFT-LEFT-S-OP : "dshl-s"
+ DYN-SHIFT-RIGHT-OP : "dshr"
+ DYN-SHIFT-RIGHT-U-OP : "dshr-u"
+ DYN-SHIFT-RIGHT-S-OP : "dshr-s"
SHIFT-LEFT-OP : "shl"
SHIFT-LEFT-U-OP : "shl-u"
SHIFT-LEFT-S-OP : "shl-s"
@@ -416,3 +422,13 @@ public defn contains (l:List<Char>, c:Char) :
public defn merge!<?K,?V> (a:HashTable<?K,?V>, b:HashTable<K,V>) :
for e in b do :
a[key(e)] = value(e)
+
+public defn pow (x:Int,y:Int) -> Int :
+ var x* = 1
+ var y* = y
+ while y* != 0 :
+ x* = x* * x
+ y* = y* - 1
+ x*
+
+