diff --git a/src/main/dig/generic/barrelShifter/barrelShifter.dig b/src/main/dig/generic/barrelShifter/barrelShifter.dig
index 848693c9f..5f7d26772 100644
--- a/src/main/dig/generic/barrelShifter/barrelShifter.dig
+++ b/src/main/dig/generic/barrelShifter/barrelShifter.dig
@@ -28,6 +28,12 @@
intFormat
bin
+
+ generic
+ if (isPresent(args)) {
+ this.Bits=int(args.dataBits);
+}
+
@@ -46,6 +52,12 @@
intFormat
bin
+
+ generic
+ if (isPresent(args)) {
+ this.Bits=int(args.dataBits);
+}
+
@@ -60,6 +72,12 @@
Bits
4
+
+ generic
+ if (isPresent(args)) {
+ this.Bits=bitsNeededFor(args.dataBits-1);
+}
+
diff --git a/src/main/dig/generic/barrelShifter/shift-fixed-arith-right-inc.dig b/src/main/dig/generic/barrelShifter/shift-fixed-arith-right-inc.dig
index ef3571940..73e80f1b8 100644
--- a/src/main/dig/generic/barrelShifter/shift-fixed-arith-right-inc.dig
+++ b/src/main/dig/generic/barrelShifter/shift-fixed-arith-right-inc.dig
@@ -33,6 +33,12 @@
Bits
8
+
+ generic
+ if (isPresent(args)) {
+ this.Bits=int(args.dataBits);
+}
+
@@ -47,6 +53,12 @@
Bits
8
+
+ generic
+ if (isPresent(args)) {
+ this.Bits=int(args.dataBits);
+}
+
diff --git a/src/main/dig/generic/barrelShifter/shift-fixed-left-inc.dig b/src/main/dig/generic/barrelShifter/shift-fixed-left-inc.dig
index 081ae70fd..4539fdd39 100644
--- a/src/main/dig/generic/barrelShifter/shift-fixed-left-inc.dig
+++ b/src/main/dig/generic/barrelShifter/shift-fixed-left-inc.dig
@@ -33,6 +33,12 @@
Bits
8
+
+ generic
+ if (isPresent(args)) {
+ this.Bits=int(args.dataBits);
+}
+
@@ -47,6 +53,12 @@
Bits
8
+
+ generic
+ if (isPresent(args)) {
+ this.Bits=int(args.dataBits);
+}
+
diff --git a/src/main/dig/generic/barrelShifter/shift-fixed-right-inc.dig b/src/main/dig/generic/barrelShifter/shift-fixed-right-inc.dig
index 63fa8bed9..7d7a63232 100644
--- a/src/main/dig/generic/barrelShifter/shift-fixed-right-inc.dig
+++ b/src/main/dig/generic/barrelShifter/shift-fixed-right-inc.dig
@@ -33,6 +33,12 @@
Bits
8
+
+ generic
+ if (isPresent(args)) {
+ this.Bits=int(args.dataBits);
+}
+
@@ -47,6 +53,12 @@
Bits
8
+
+ generic
+ if (isPresent(args)) {
+ this.Bits=int(args.dataBits);
+}
+
diff --git a/src/main/dig/generic/barrelShifter/shift-inc.dig b/src/main/dig/generic/barrelShifter/shift-inc.dig
index 5f6947b2c..6b5d45a4f 100644
--- a/src/main/dig/generic/barrelShifter/shift-inc.dig
+++ b/src/main/dig/generic/barrelShifter/shift-inc.dig
@@ -49,6 +49,12 @@ if (isPresent(args)) {
intFormat
bin
+
+ generic
+ if (isPresent(args)) {
+ this.Bits=int(args.dataBits);
+}
+
@@ -67,6 +73,12 @@ if (isPresent(args)) {
intFormat
bin
+
+ generic
+ if (isPresent(args)) {
+ this.Bits=int(args.dataBits);
+}
+
@@ -81,6 +93,12 @@ if (isPresent(args)) {
Bits
4
+
+ generic
+ if (isPresent(args)) {
+ this.Bits=int(args.shiftBits);
+}
+
@@ -96,8 +114,23 @@ if (isPresent(args)) {
dataBits = args.dataBits;
shiftBits = args.shiftBits-1;
dir=args.dir;
- if (args.shiftBits=1) {
- setCircuit("shift-nop-inc.dig");
+ if (args.shiftBits=2) {
+
+ export shift := 1;
+ if (args.dir="right") {
+ setCircuit("shift-fixed-right-inc.dig");
+ } else {
+ if (args.dir="arith") {
+ setCircuit("shift-fixed-arith-right-inc.dig");
+ } else {
+ if (args.dir!="left") {
+ panic("only \"left\", \"right\" or \"arith\" is allowed as direction, not \""+args.dir+"\"!");
+ }
+ setCircuit("shift-fixed-left-inc.dig");
+ }
+ }
+
+
}
}
diff --git a/src/main/dig/generic/barrelShifter/shift-nop-inc.dig b/src/main/dig/generic/barrelShifter/shift-nop-inc.dig
deleted file mode 100644
index cbaee7268..000000000
--- a/src/main/dig/generic/barrelShifter/shift-nop-inc.dig
+++ /dev/null
@@ -1,69 +0,0 @@
-
-
- 1
-
-
- isGeneric
- true
-
-
-
-
- Out
-
-
- Label
- D
-
-
- Bits
- 16
-
-
- intFormat
- bin
-
-
-
-
-
- In
-
-
- Label
- D_in
-
-
- Bits
- 16
-
-
- intFormat
- bin
-
-
-
-
-
- In
-
-
- Label
- sh
-
-
- Bits
- 5
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file