Menu

Tree [r1003] /
 History

HTTPS access


File Date Author Commit
 JLex 2024-05-04 paulcockshott [r908]
 MA 2010-02-16 paulcockshott [r184]
 VPTeX 2008-06-09 laurencehole [r5]
 VPunits 2024-08-12 paulcockshott [r923]
 ca 2008-06-09 laurencehole [r5]
 com 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 conf 2009-05-13 ygdura [r105]
 cpus 2025-10-01 paulcockshott [r1001]
 dav 2009-05-13 ygdura [r105]
 db 2009-05-13 ygdura [r105]
 fast 2012-09-21 paulcockshott [r414]
 hooks 2009-05-13 ygdura [r105]
 ilcg 6 days ago paulcockshott [r1003] Updated the apassing of static arrays to formal...
 ilcg2 2022-09-19 paulcockshott [r863] fix syntax of arm register offset addressing
 ilcgasm 2009-09-22 paulcockshott [r169] The changes here are to get Ilcgasm closer to w...
 java_cup 2009-06-25 tajaddinov [r125] Removed binaries
 locks 2009-05-13 ygdura [r105]
 matlab 2010-08-19 paulcockshott [r217]
 org 2024-09-06 paulcockshott [r928]
 papers 2012-05-03 paulcockshott [r352]
 psrc 2022-01-12 paulcockshott [r826]
 reports 2024-05-09 paulcockshott [r912]
 rtl 2024-10-19 paulcockshott [r945] only 3 fails on the ARM64
 tests 6 days ago paulcockshott [r1003] Updated the apassing of static arrays to formal...
 tinyb 2022-09-19 paulcockshott [r863] fix syntax of arm register offset addressing
 viper 2024-09-08 paulcockshott [r934] viper now compiles correctly using 32 bit c cod...
 vpclessons 2024-09-02 paulcockshott [r926]
 win 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 .nautilus-metafile.xml 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 3DNOW.PIC 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 AMD64CGtaskexecute.s 2019-04-13 paulcockshott [r751]
 AMD64macros.asm 2024-03-05 paulcockshott [r890] First stage of converting the XeonPHi code gene...
 AMD64macros.s 2018-06-29 paulcockshott [r720] This is the first commit of updated made necess...
 ARM64-code-gen.lyx 2022-09-15 paulcockshott [r844]
 ARM64CGtaskexecute.s 2024-10-27 paulcockshott [r954]
 AVX2CGtaskexecute.s 2016-10-06 paulcockshott [r681]
 AVX32CGtaskexecute.s 2020-11-16 paulcockshott [r788] Some changes to ensure that the 32 bit code run...
 AVX64CGtaskexecute.s 2013-04-24 paulcockshott [r466] AVX64 now works for at least one large application
 AVX64taskexecute.s 2013-04-24 paulcockshott [r466] AVX64 now works for at least one large application
 C64CGtaskexecute.s 2024-03-09 paulcockshott [r894] x86_64v4 now works
 CBFM.awk 2010-12-22 ygdura [r272]
 CCGtaskexecute.s 2015-01-22 paulcockshott [r613] multi tasking now works for C code gen
 Chinese01.eps 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 Chinese02.eps 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 Copy of makefile 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 Gcc 2015-04-28 paulcockshott [r632]
 Konv 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 MICmacros.s 2013-07-04 paulcockshott [r484] debug fixes for the MIC to pass more tests
 MICmacros.s~ 2013-06-25 paulcockshott [r479] first working version for MIC
 MMXFMT.PIC 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 OVERVIEW.PIC 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 OpteronCGtaskexecute.s 2009-04-24 paulcockshott [r97]
 Opterontaskexecute.s 2009-04-20 paulcockshott [r88]
 PPCmacros.s 2010-11-18 ygdura [r245]
 PPEcode.cpp 2010-11-18 ygdura [r245]
 Param.h 2010-11-18 ygdura [r245]
 README.txt 2009-05-13 ygdura [r105]
 Regs.pic 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 SMICCGtaskexecute.s 2013-08-30 paulcockshott [r498]
 SPEcode.cpp 2010-11-18 ygdura [r245]
 SystemReset.java 2015-05-05 paulcockshott [r636] now have alpha version of c compiler
 Testparam.m4 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 Testparams.m4 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 VPUnicode.doc 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 X86_64v3macros.s 2024-03-07 paulcockshott [r893]
 X86_64v4CGtaskexecute.s 2024-03-07 paulcockshott [r893]
 X86_64v4macros.s 2024-03-07 paulcockshott [r893]
 XMM.PIC 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 YYlex 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 accel.lyx.emergency 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 accel.tex 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 allclasses-frame.html 2015-12-17 paulcockshott [r653]
 allviperoptions.eps 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 apl.tex 2025-03-26 paulcockshott [r972]
 apl2002.pdf 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 apl2002.tex 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 arrayabs.tex 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 arrays.tex 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 basic1.bas 2022-09-15 paulcockshott [r844]
 bench.pas 2017-11-28 paulcockshott [r711]
 bmp 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 bmul 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 boo 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 build.bat 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 charsets.png 2011-06-24 paulcockshott [r311]
 cmapl10.mf 2025-03-30 paulcockshott [r974]
 complex.tex 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 dependencies.eps 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 deprecated-list.html 2015-12-17 paulcockshott [r653]
 dhry 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 dynamicoptions.eps 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 echoit 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 elfcoff.eps 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 emlines.sty 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 fast.sab 2012-09-21 paulcockshott [r414]
 fblurtime2.pas 2010-11-18 ygdura [r245]
 firstinvocationoftotal.eps 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 firstinvocationoftotal.pdf 2011-06-23 paulcockshott [r307] update the manual
 firstinvocationoftotal.png 2011-06-24 paulcockshott [r309]
 foo 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 format 2009-05-13 ygdura [r105]
 fullframe.eps 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 fullframe.pdf 2011-06-23 paulcockshott [r307] update the manual
 fullframe.png 2011-06-24 paulcockshott [r309]
 gatedcall.eps 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 gnuP4CGtaskexecute.s 2020-11-16 paulcockshott [r788] Some changes to ensure that the 32 bit code run...
 gnuPentiumCGtaskexecute.s 2020-11-16 paulcockshott [r788] Some changes to ensure that the 32 bit code run...
 gpupc 2024-05-08 paulcockshott [r909]
 gpupc.bat 2012-09-04 paulcockshott [r409]
 graphics.pas 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 heaptest.pas 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 ilcg.tex 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 ilcg2.sab 2011-06-23 paulcockshott [r307] update the manual
 ilcgasm.tex 2009-09-22 paulcockshott [r169] The changes here are to get Ilcgasm closer to w...
 ilcggram.tex 2025-02-02 paulcockshott [r962]
 ilcggram_infix 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 included.pas 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 includer 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 intro.tex 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 iotest.pas 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 lawn147.ps 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 list 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 macros.asm 2024-03-05 paulcockshott [r890] First stage of converting the XeonPHi code gene...
 macros.h 2024-09-02 paulcockshott [r926]
 macros.s 2017-11-22 paulcockshott [r702] fix min and max for the gnu version
 macros64.h 2022-02-21 paulcockshott [r834] Attempt to get the 64 bit C code generator work...
 makefile 2025-03-28 paulcockshott [r973] added the construction like b := array(array(1,...
 makefile.ins 2008-06-17 paulcockshott [r23]
 makewoviper 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 man.tex 2021-02-19 paulcockshott [r808]
 manual.html 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 manual.tex 2025-06-29 paulcockshott [r988] Add generalised outer product
 math.pas 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 math.pasgcj 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 mingvpc 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 mmpc.bat 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 mmpc.mf 2017-02-13 paulcockshott [r683] change to make file
 mmpcmmpc.bat 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 mmpcsystem.asm 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 mmxcomp.ps 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 mmxcomp.tex 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 msvpc.bat 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 n-body.cpp 2010-12-10 ygdura [r255]
 nVPV4.pas 2010-12-10 ygdura [r256]
 nVPV42.pas 2010-12-21 ygdura [r269]
 nbody.cpp 2010-12-10 ygdura [r256]
 ncurses.pas 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 nest.pas 2010-11-18 ygdura [r245]
 nestparstack1.pdf 2011-06-24 paulcockshott [r308] added pdf files for manual
 nestparstack1.png 2011-06-27 paulcockshott [r312]
 nestparstack3.pdf 2011-06-24 paulcockshott [r308] added pdf files for manual
 nestparstack3.png 2011-06-27 paulcockshott [r312]
 p.asm 2025-08-05 paulcockshott [r992]
 permuter 2025-05-17 paulcockshott [r985]
 projprop.eps 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 readme 2024-04-18 paulcockshott [r903]
 rightclick.eps 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 runops.eps 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 sablecc.bat 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 sablecc.jar 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 sableutil.jar 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 secondinvocationoftotal.eps 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 secondinvocationoftotal.pdf 2011-06-23 paulcockshott [r307] update the manual
 secondinvocationoftotal.png 2011-06-24 paulcockshott [r309]
 sets.tex 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 stackwithdisplay.eps 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 stackwithdisplay.pdf 2011-06-23 paulcockshott [r307] update the manual
 stackwithdisplay.png 2011-06-24 paulcockshott [r309]
 staclonentrytoi.eps 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 structpluastack.pdf 2011-06-23 paulcockshott [r307] update the manual
 structplusstack.eps 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 structplusstack.pdf 2011-06-23 paulcockshott [r307] update the manual
 structplusstack.png 2011-06-24 paulcockshott [r309]
 structplustack.pdf 2011-06-23 paulcockshott [r307] update the manual
 stylesheet.css 2010-05-27 paulcockshott [r203]
 sumsq.eps 2013-05-01 paulcockshott [r467] version ready for release with alias implemente...
 sumsq.fig 2013-05-01 paulcockshott [r467] version ready for release with alias implemente...
 sumsq.png 2013-05-28 paulcockshott [r472]
 system.eps 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 system.pas 2025-08-20 paulcockshott [r1000] Fixed a bug in the libray arcsin function
 system.pdf 2011-06-23 paulcockshott [r307] update the manual
 test.bat 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 tester 2025-05-17 paulcockshott [r985]
 threadlib.pas 2021-01-04 paulcockshott [r794]
 tinyb.m4 2022-09-09 paulcockshott [r842] Fix up the tiny basic version to work on amd64 ...
 tinyb.sab 2022-09-15 paulcockshott [r845]
 toolset.eps 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 toolset.pdf 2011-06-23 paulcockshott [r307] update the manual
 trig.pas 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 twostacks.eps 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 vcc 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 vecadd 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 vectest.tex 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 vectorstyle.zip 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 viper.bat 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 viper.mf 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 viper.tex 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 vipset.bat 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 vp 2024-09-08 paulcockshott [r932]
 vp-abs.doc 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 vp-abs.html 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 vp-abs.pdf 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 vp-abs.tex 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 vp-msp3.lyx 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 vp-msp3.pdf 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 vp-msp3.tex 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 vp-ver2.html 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 vp-ver2.lyx 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 vp-ver2.pdf 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 vp-ver2.ps 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 vp-ver2.tex 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 vp.bat 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 vpc 2024-02-29 paulcockshott [r887] the armcg now generates syntactically correct a...
 vpc-cygwin 2008-06-19 laurencehole [r26] Added vpc-cygwin's graceful handling of no $mmp...
 vpc-cygwin.bat 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 vpc.bat 2020-11-16 paulcockshott [r788] Some changes to ensure that the 32 bit code run...
 vpcee 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 vpp.bat 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 vptask.bat 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 vptexoptions.eps 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)
 yylex.lex 2008-06-06 laurencehole [r1] Initial copy from Ouen (Glasgow University)

Read Me

Latest features

Now supports AVX512 by using the -cpuX86_64v4 flag.
Additional APL style operations supported
PREF and SUFF generate prefix and suffix vectors after style of Iversons alpha and omega operators.
In fact the appropriate APL unicode are recognised by the compiler.
The APL style rotate operator on arrays has been added, written either as ROT or as the corresponding APL symbol.
The INDEX function has been introduced to do the same as the APL select construct.
For example
program select;
const n=40;m=10;
var nums:array[1..n] of integer;
    mask:array[1..n] of boolean;
    indices:pivector;
begin
	nums := random mod 1000 ;
	mask := (nums mod m)<2;
	indices:=index(mask[]);
	writeln(indices^);
	writeln(nums[indices^]);
end.

We initialise nums with numbers in 0..999, and form a mask of those numbers
whose last digits are 0 or 1.
We use  index} to form the indices of where the mask array was true\footnote{The index funtion
takes a dynamic array slice as its parameter, we form a slice comprising the whole array with
the construct {\tt mask[]}.}.
We then produce a table of the positions and numbers at these positions


Installation details

Unpack  a recent version of either the install.jar file or the install.zip file.

You can do this by using the
jar -xf install.jar
command, or by usings a windows unzip package.

This will create a directory mmpc containing the files needed by the compiler.

Dependencies
------------
Java, Nasm, Gcc, atyle, sablecc, M4 macro processor if you are doing source development work.
Nvidia GPU requires nvcc in addition to above, and a GPU with compute capability 3.0 and above.


You can install either from source or from the download files install.win32.zip or
install.linux.tar.gz

If installing from source, you should run the command
make install
to create the installation archives.


On Linux
--------
If you are just running the compiler to compile Pascal source you
need : (Sun's) Java, Nasm, Gcc and Nvcc if compiling to an Nvidia GPU.

GCC is used to build and link runtime libraries to the assembler
produced by Vector Pascal. On Linux the standard GCC compiler will work.

Extract the mmpc directory from install.tar.gz with the command:
tar -zxvf install.linux.tar.gz

You will now need to build a compatible RTL by doing the following:
Go into the directory mmpc and type
make rtl
and then type
make rtl.o

Optionally, place the directory mmpc on your path with the following command:
export PATH=$PATH:/path/to/mmpc
Note that this will have to be set to run every time your computer starts.

If you have altered the locations of the installed files from the default, you
will need to define the symbol mmpcdir to point at the directory containing
mmpc.jar by running the following command:
export mmpcdir=/path/to/mmpc


On Windows
----------
When working on Windows some incompatibilities exist between different releases
of GCC and of assemblers. The NASM assembler under Windows will only work
reliably with the djgpp release of GCC and not with Cygwin. Given Cygwin's easy
installation, when working with Windows, the prefered method is to use the
Cygwin compiler, not the DJGPP compiler. If using the cygwin compiler
specify that you are using the gnu versions of the code generator
as this is required to produce gnu compatible assembler code.
Examples of using the gnu versions of the compiler would be to specify
-cpugnuP4 or -cpugnuPentium

To install, first obtain a copy of Cygwin from http://cygwin.com/setup.exe
or http://www.cygwin.com/

When installing Cygwin, add the "make" package to the default programs to
install.

Once Cygwin is installed, extract the VPC archive using the following:
unzip install.win32.zip

You will now need to build a compatible RTL by doing the following:
Go into the directory mmpc and type
make rtl
Then type
make rtl.o

The environment variable "mmpcdir" will have to be set. This can be done by
right clicking on "My Computer" and selecting "Properties". Select the
"Advanced" tab and clicking on the "Environment Variables" button. mmpcdir
should then be set to the path to the files you extracted earlier.

Additionally, you may choose to add the same directory to your path.

To execute, you can use either Cygwin's shell or a standard Dos prompt.

=================================================================
If you want to use the pretty printer facility built into the compiler, then
you will need Latex.

If you want to use the garbage collector go into the directory
for the garbage collector mmpc/rtl/gc and follow the instructions
to build the Boehm garbage collection library gc.a

then go into mmpc and type

make rtlb.o

For the Intel MIC (Xeon Phi)
The compiler works as a cross compiler on the host machine. The compiler
flag you must use is -cpuMIC to generate code for it. 
You need to have the intel MPSS package installed and you need
to set up a pair of symbolic links on your path to the mic assembler and
and mic gcc compilers. The Pascal compiler expects a mic version of
the gnu assembler to be on its path with the name mic-as and a mic version
of the gcc compiler with the name mic-gcc.

At present it supports multi-core operations and basic SIMD operations
on single precision floats. Double precision maths is still scalar.
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.