summary refs log tree commit diff stats
path: root/tests/arithm/tashr.nim
diff options
context:
space:
mode:
authorandri lim <jangko128@gmail.com>2018-08-07 23:41:30 +0700
committerAndreas Rumpf <rumpf_a@web.de>2018-08-07 18:41:30 +0200
commit4d5cce9882d554ada9cf737d63e40880d88ba170 (patch)
tree7c71118c55f00ff6542e047a751b2ad7af6cb71d /tests/arithm/tashr.nim
parent9b9cfa7306d696961cc6fd590ca72c08f66bdcb3 (diff)
downloadNim-4d5cce9882d554ada9cf737d63e40880d88ba170.tar.gz
fixes #6255, add `system.ashr` arithmetic right shift (#8547)
Diffstat (limited to 'tests/arithm/tashr.nim')
-rw-r--r--tests/arithm/tashr.nim46
1 files changed, 46 insertions, 0 deletions
diff --git a/tests/arithm/tashr.nim b/tests/arithm/tashr.nim
new file mode 100644
index 000000000..aeb3b6843
--- /dev/null
+++ b/tests/arithm/tashr.nim
@@ -0,0 +1,46 @@
+discard """
+  output: ''''''
+  targets: '''c js'''
+"""
+
+# issue #6255, feature request
+# arithmetic right shift
+
+var x1 = -123'i8
+var x2 = -123'i16
+var x3 = -123'i32
+var x4 = -123'i64
+var x5 = -123
+
+block codegen_test:
+  doAssert ashr(x1, 1) == -62
+  doAssert ashr(x2, 1) == -62
+  doAssert ashr(x3, 1) == -62
+  doAssert ashr(x4, 1) == -62
+  doAssert ashr(x5, 1) == -62
+
+block semfold_test:
+  doAssert ashr(-123'i8 , 1) == -62
+  doAssert ashr(-123'i16, 1) == -62
+  doAssert ashr(-123'i32, 1) == -62
+  doAssert ashr(-123'i64, 1) == -62
+  doAssert ashr(-123    , 1) == -62
+
+static: # VM test
+  doAssert ashr(-123'i8 , 1) == -62
+  doAssert ashr(-123'i16, 1) == -62
+  doAssert ashr(-123'i32, 1) == -62
+  doAssert ashr(-123'i64, 1) == -62
+  doAssert ashr(-123    , 1) == -62
+
+  var y1 = -123'i8
+  var y2 = -123'i16
+  var y3 = -123'i32
+  var y4 = -123'i64
+  var y5 = -123
+
+  doAssert ashr(y1, 1) == -62
+  doAssert ashr(y2, 1) == -62
+  doAssert ashr(y3, 1) == -62
+  doAssert ashr(y4, 1) == -62
+  doAssert ashr(y5, 1) == -62