From 25f229c573cdefa2708c5f165b2c3c720f21605c Mon Sep 17 00:00:00 2001 From: Hugh Perkins Date: Mon, 23 May 2016 14:01:20 +0100 Subject: [PATCH 1/2] print control code meanings --- lib/MaxAs/MaxAsGrammar.pm | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/lib/MaxAs/MaxAsGrammar.pm b/lib/MaxAs/MaxAsGrammar.pm index 3475bed..e0c39d2 100644 --- a/lib/MaxAs/MaxAsGrammar.pm +++ b/lib/MaxAs/MaxAsGrammar.pm @@ -1353,7 +1353,32 @@ sub printCtrl $readb = $readb == 7 ? '-' : $readb + 1; $watdb = $watdb ? sprintf('%02x', $watdb) : '--'; - return sprintf '%s:%s:%s:%s:%x', $watdb, $readb, $wrtdb, $yield, $stall; + my @codes; + if($watdb ne '--') { +# $res += "waitdep=" + push @codes, "waitbarrier=$watdb"; + } + if($wrtdb ne '-') { +# $res += "waitdep=" + push @codes, "writebarrier=$wrtdb"; + } + if($readb ne '-') { +# $res += "waitdep=" + push @codes, "readbarrier=$readb"; + } + if($yield ne '-') { +# $res += "waitdep=" + push @codes, "yield"; + } + if($stall > 0) { +# $res += "waitdep=" + push @codes, "stall=$stall"; + } + my $res = join(",", @codes); + if($res ne "") { + $res = join("", "# ", $res, "\n"); + } + return sprintf "%s%s:%s:%s:%s:%x", $res, $watdb, $readb, $wrtdb, $yield, $stall; } sub readCtrl { From d1bf13b30ff68f6f2e75c39b9260a97e0d290f17 Mon Sep 17 00:00:00 2001 From: Hugh Perkins Date: Mon, 23 May 2016 14:26:47 +0100 Subject: [PATCH 2/2] modify syntax for writing codes to more like functional calls, and convert wait bitfield to integer list --- lib/MaxAs/MaxAsGrammar.pm | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/lib/MaxAs/MaxAsGrammar.pm b/lib/MaxAs/MaxAsGrammar.pm index e0c39d2..fb6cfb4 100644 --- a/lib/MaxAs/MaxAsGrammar.pm +++ b/lib/MaxAs/MaxAsGrammar.pm @@ -1354,27 +1354,30 @@ sub printCtrl $watdb = $watdb ? sprintf('%02x', $watdb) : '--'; my @codes; - if($watdb ne '--') { -# $res += "waitdep=" - push @codes, "waitbarrier=$watdb"; + if($readb ne '-') { + push @codes, "setReadBarrier($readb)"; } if($wrtdb ne '-') { -# $res += "waitdep=" - push @codes, "writebarrier=$wrtdb"; + push @codes, "setWriteBarrier($wrtdb)"; } - if($readb ne '-') { -# $res += "waitdep=" - push @codes, "readbarrier=$readb"; + if($watdb ne '--') { + my @barriers; + for(my $barrier=1; $barrier <= 6; $barrier++) { + my $bitvalue = 1 << ($barrier - 1); + if($watdb & $bitvalue) { + push @barriers, $barrier; + } + } + my $barrierstring = sprintf "waitBarriers([%s])", join(",", @barriers); + push @codes, $barrierstring; } if($yield ne '-') { -# $res += "waitdep=" - push @codes, "yield"; + push @codes, "yield()"; } if($stall > 0) { -# $res += "waitdep=" - push @codes, "stall=$stall"; + push @codes, "stall($stall)"; } - my $res = join(",", @codes); + my $res = join(";", @codes); if($res ne "") { $res = join("", "# ", $res, "\n"); }