Changeset: 1d40e6b64c71 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=1d40e6b64c71 Added Files: monetdb5/modules/mal/mal_weld.c monetdb5/modules/mal/mal_weld.mal monetdb5/modules/mal/mal_weld.mal.sh monetdb5/optimizer/Tests/weld01.malC monetdb5/optimizer/Tests/weld01.stable.err monetdb5/optimizer/Tests/weld01.stable.out monetdb5/optimizer/Tests/weld02.malC monetdb5/optimizer/Tests/weld02.stable.err monetdb5/optimizer/Tests/weld02.stable.out monetdb5/optimizer/opt_weld.c monetdb5/optimizer/opt_weld.h Modified Files: monetdb5/modules/mal/Makefile.ag monetdb5/optimizer/Makefile.ag monetdb5/optimizer/Tests/All monetdb5/optimizer/opt_pipes.c monetdb5/optimizer/opt_prelude.c monetdb5/optimizer/opt_prelude.h monetdb5/optimizer/opt_support.c monetdb5/optimizer/opt_wrapper.c monetdb5/optimizer/optimizer.mal Branch: mal-weld Log Message:
mal-weld optimizer that identifies weld portable instructions diffs (truncated from 1443 to 300 lines): diff --git a/monetdb5/modules/mal/Makefile.ag b/monetdb5/modules/mal/Makefile.ag --- a/monetdb5/modules/mal/Makefile.ag +++ b/monetdb5/modules/mal/Makefile.ag @@ -30,6 +30,7 @@ lib_mal = { language.c language.h \ mal_io.c mal_io.h \ mal_mapi.c mal_mapi.h \ + mal_weld.c \ manual.c manual.h \ mat.c mat.h \ mdb.c mdb.h \ @@ -62,7 +63,7 @@ headers_mal = { factories.mal groupby.mal mdb.mal pcre.mal mat.mal \ transaction.mal oltp.mal wlc.mal \ mal_mapi.mal sabaoth.mal remote.mal \ - txtsim.mal \ + txtsim.mal mal_weld.mal \ tokenizer.mal sample.mal json_util.mal \ batmtime.mal querylog.mal sysmon.mal } @@ -70,7 +71,7 @@ headers_mal = { headers_auto = { HEADERS = mal DIR = libdir/monetdb5/autoload - SOURCES = 01_calc.mal 01_batcalc.mal + SOURCES = 01_calc.mal 01_batcalc.mal mal_weld.mal } headers_hge = { diff --git a/monetdb5/modules/mal/mal_weld.c b/monetdb5/modules/mal/mal_weld.c new file mode 100644 --- /dev/null +++ b/monetdb5/modules/mal/mal_weld.c @@ -0,0 +1,131 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright 1997 - July 2008 CWI, August 2008 - 2018 MonetDB B.V. + */ + +#include "monetdb_config.h" +#include "gdk.h" +#include "mal_exception.h" +#include "mal_interpreter.h" + +mal_export str WeldInitState(ptr *retval); +str +WeldInitState(ptr *retval) +{ + (void) retval; + return MAL_SUCCEED; +} + +mal_export str WeldRun(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); +str +WeldRun(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci) +{ + (void) cntxt; + (void) mb; + (void) stk; + (void) pci; + return MAL_SUCCEED; +} + +mal_export str WeldGetResult(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); +str +WeldGetResult(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci) +{ + (void) cntxt; + (void) mb; + (void) stk; + (void) pci; + return MAL_SUCCEED; +} + +mal_export str WeldAggrSum(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); +str +WeldAggrSum(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci) +{ + (void) cntxt; + (void) mb; + (void) stk; + (void) pci; + return MAL_SUCCEED; +} + +mal_export str WeldAlgebraProjection(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); +str +WeldAlgebraProjection(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci) +{ + (void) cntxt; + (void) mb; + (void) stk; + (void) pci; + return MAL_SUCCEED; +} + +mal_export str WeldAlgebraSelect1(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); +str +WeldAlgebraSelect1(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci) +{ + (void) cntxt; + (void) mb; + (void) stk; + (void) pci; + return MAL_SUCCEED; +} + +mal_export str WeldAlgebraSelect2(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); +str +WeldAlgebraSelect2(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci) +{ + (void) cntxt; + (void) mb; + (void) stk; + (void) pci; + return MAL_SUCCEED; +} + +mal_export str WeldAlgebraThetaselect1(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); +str +WeldAlgebraThetaselect1(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci) +{ + (void) cntxt; + (void) mb; + (void) stk; + (void) pci; + return MAL_SUCCEED; +} + +mal_export str WeldAlgebraThetaselect2(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); +str +WeldAlgebraThetaselect2(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci) +{ + (void) cntxt; + (void) mb; + (void) stk; + (void) pci; + return MAL_SUCCEED; +} + +mal_export str WeldBatcalcMULsignal(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); +str +WeldBatcalcMULsignal(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci) +{ + (void) cntxt; + (void) mb; + (void) stk; + (void) pci; + return MAL_SUCCEED; +} + +mal_export str WeldLanguagePass(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); + +str +WeldLanguagePass(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci) +{ + (void) cntxt; + (void) mb; + (void) stk; + (void) pci; + return MAL_SUCCEED; +} diff --git a/monetdb5/modules/mal/mal_weld.mal b/monetdb5/modules/mal/mal_weld.mal new file mode 100644 --- /dev/null +++ b/monetdb5/modules/mal/mal_weld.mal @@ -0,0 +1,313 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# +# Copyright 1997 - July 2008 CWI, August 2008 - 2018 MonetDB B.V. + +# This file was generated by using the script mal_weld.mal.sh. + +module weld; + + +command initstate():ptr +address WeldInitState +comment "Initialize the state structure that is used to build a weld program"; + +pattern run(wstate:ptr, arg:any...):any... +address WeldRun +comment "Compile and run the Weld program"; + +pattern algebraprojection(left:bat[:oid], right:bat[:any_1], wstate:ptr):bat[any_1] +address WeldAlgebraProjection +comment "algebra.projection"; + +pattern algebraselect(b:bat[:any_1], low:any_1, high:any_1, li:bit, hi:bit, anti:bit, wstate:ptr):bat[:oid] +address WeldAlgebraSelect1 +comment "algebra.select"; + +pattern algebraselect(b:bat[:any_1], s:bat[:oid], low:any_1, high:any_1, li:bit, hi:bit, anti:bit, wstate:ptr):bat[:oid] +address WeldAlgebraSelect2 +comment "algebra.select"; + +pattern algebrathetaselect(b:bat[:any_1], val:any_1, op:str, wstate:ptr):bat[:oid] +address WeldAlgebraThetaselect1 +comment "algebra.thetaselect"; + +pattern algebrathetaselect(b:bat[:any_1], s:bat[:oid], val:any_1, op:str, wstate:ptr):bat[:oid] +address WeldAlgebraThetaselect2 +comment "algebra.thetaselect"; + +pattern aggrsum(b:bat[:bte], wstate:ptr):bte +address WeldAggrSum +comment "aggr.sum"; + +pattern aggrsum(b:bat[:int], wstate:ptr):int +address WeldAggrSum +comment "aggr.sum"; + +pattern aggrsum(b:bat[:lng], wstate:ptr):lng +address WeldAggrSum +comment "aggr.sum"; + +pattern aggrsum(b:bat[:flt], wstate:ptr):flt +address WeldAggrSum +comment "aggr.sum"; + +pattern aggrsum(b:bat[:dbl], wstate:ptr):dbl +address WeldAggrSum +comment "aggr.sum"; + +pattern batcalcmul(b1:bat[:bte], b2:bat[:bte], wstate:ptr):bat[:bte] +address WeldBatcalcMULsignal +comment "batcalcmul"; +pattern batcalcmul(b:bat[:bte], v:bte, wstate:ptr):bat[:bte] +address WeldBatcalcMULsignal +comment "batcalcmul"; +pattern batcalcmul(v:bte, b:bat[:bte], wstate:ptr):bat[:bte] +address WeldBatcalcMULsignal +comment "batcalcmul"; + +pattern batcalcmul(b1:bat[:bte], b2:bat[:int], wstate:ptr):bat[:int] +address WeldBatcalcMULsignal +comment "batcalcmul"; +pattern batcalcmul(b:bat[:bte], v:int, wstate:ptr):bat[:int] +address WeldBatcalcMULsignal +comment "batcalcmul"; +pattern batcalcmul(v:bte, b:bat[:int], wstate:ptr):bat[:int] +address WeldBatcalcMULsignal +comment "batcalcmul"; + +pattern batcalcmul(b1:bat[:bte], b2:bat[:lng], wstate:ptr):bat[:lng] +address WeldBatcalcMULsignal +comment "batcalcmul"; +pattern batcalcmul(b:bat[:bte], v:lng, wstate:ptr):bat[:lng] +address WeldBatcalcMULsignal +comment "batcalcmul"; +pattern batcalcmul(v:bte, b:bat[:lng], wstate:ptr):bat[:lng] +address WeldBatcalcMULsignal +comment "batcalcmul"; + +pattern batcalcmul(b1:bat[:bte], b2:bat[:flt], wstate:ptr):bat[:flt] +address WeldBatcalcMULsignal +comment "batcalcmul"; +pattern batcalcmul(b:bat[:bte], v:flt, wstate:ptr):bat[:flt] +address WeldBatcalcMULsignal +comment "batcalcmul"; +pattern batcalcmul(v:bte, b:bat[:flt], wstate:ptr):bat[:flt] +address WeldBatcalcMULsignal +comment "batcalcmul"; + +pattern batcalcmul(b1:bat[:bte], b2:bat[:dbl], wstate:ptr):bat[:dbl] +address WeldBatcalcMULsignal +comment "batcalcmul"; +pattern batcalcmul(b:bat[:bte], v:dbl, wstate:ptr):bat[:dbl] +address WeldBatcalcMULsignal +comment "batcalcmul"; +pattern batcalcmul(v:bte, b:bat[:dbl], wstate:ptr):bat[:dbl] +address WeldBatcalcMULsignal +comment "batcalcmul"; + +pattern batcalcmul(b1:bat[:int], b2:bat[:bte], wstate:ptr):bat[:int] +address WeldBatcalcMULsignal +comment "batcalcmul"; +pattern batcalcmul(b:bat[:int], v:bte, wstate:ptr):bat[:int] +address WeldBatcalcMULsignal +comment "batcalcmul"; +pattern batcalcmul(v:int, b:bat[:bte], wstate:ptr):bat[:int] +address WeldBatcalcMULsignal +comment "batcalcmul"; + +pattern batcalcmul(b1:bat[:int], b2:bat[:int], wstate:ptr):bat[:int] +address WeldBatcalcMULsignal +comment "batcalcmul"; +pattern batcalcmul(b:bat[:int], v:int, wstate:ptr):bat[:int] +address WeldBatcalcMULsignal +comment "batcalcmul"; +pattern batcalcmul(v:int, b:bat[:int], wstate:ptr):bat[:int] +address WeldBatcalcMULsignal +comment "batcalcmul"; + +pattern batcalcmul(b1:bat[:int], b2:bat[:lng], wstate:ptr):bat[:lng] _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list