[test-suite] Adding LCALS (Livermore Compiler Analysis Loop Suite) loop kernels to test suite.
These changes are dependent on the changes purposed in
https://reviews.llvm.org/D43314 and https://reviews.llvm.org/D43316.
This adds parts of LCALS as google benchmarks to the test suite. The loop suite
is partitioned into 3 subsets based on their origins.
From README-LCALS_instructions.txt: LCALS ("Livermore Compiler Analysis Loop
Suite") is a collection of loop kernels based, in part, on historical
"Livermore Loops" benchmarks (See the 1986 technical report: "The Livermore
Fortran Kernels: A Computer Test of the Numerical Performance Range", by Frank
H. McMahon, UCRL-53745.).
Subset A: Loops representative of those found in application codes. They are
implemented in source files named runA<variant>Loops.cxx.
Subset B: Basic loops that help to illustrate compiler optimization issues.
They are implemented in source files named runB<variant>Loops.cxx
Subset C: Loops extracted from "Livermore Loops coded in C" developed by Steve
Langer, which were derived from the Fortran version by Frank McMahon. They are
implemented in source files runC<variant>Loops.cxx
Being added are google benchmark versions of the Raw and ForeachLambda variants
in the 3 sizes.
SubsetALambdaLoops: 18 tests (6 loops x 3 sizes)
SubsetARawLoops: 18 tests (6 loops x 3 sizes)
SubsetBLambdaLoops: 12 tests (4 loops x 3 sizes)
SubsetBRawLoops: 12 tests (4 loops x 3 sizes)
SubsetCLambdaLoops: 60 tests (20 loops x 3 sizes)
SubsetCRawLoops: 60 tests (20 loops x 3 sizes)
When run onIntel(R) Xeon(R) CPU E5-2699 v4 @ 2.20GHz (Haswell):
SubsetA takes around 22 seconds (18 tests reported).
SubsetB takes around 16 seconds (12 tests reported).
SubsetC takes around 61 seconds (60 tests reported).
The machine being used should not affect the runtime of the tests by much as
the benchmark library will adjust the number of iterations up or down.
Reviewers: MatzeB, hfinkel, rengolin
Differential Revision: https://reviews.llvm.org/D43319