Move towards json files for tests

dev/git-series/gccdum
Matt Godbolt 7 years ago
parent 2516f3e871
commit 352d2b605e

@ -0,0 +1,22 @@
[
{"text":"maxArray(double*, double*): # @maxArray(double*, double*)","source":null},
{"text":" xor eax, eax","source":1},
{"text":".LBB0_1: # =>This Inner Loop Header: Depth=1","source":null},
{"text":" movsd xmm0, qword ptr [rsi + 8*rax]","source":3},
{"text":" ucomisd xmm0, qword ptr [rdi + 8*rax]","source":3},
{"text":" jbe .LBB0_3","source":3},
{"text":" movsd qword ptr [rdi + 8*rax], xmm0","source":3},
{"text":".LBB0_3: # in Loop: Header=BB0_1 Depth=1","source":null},
{"text":" lea rcx, qword ptr [rax + 1]","source":2},
{"text":" movsd xmm0, qword ptr [rsi + 8*rax + 8]","source":3},
{"text":" ucomisd xmm0, qword ptr [rdi + 8*rax + 8]","source":3},
{"text":" jbe .LBB0_5","source":3},
{"text":" movsd qword ptr [rdi + 8*rax + 8], xmm0","source":3},
{"text":".LBB0_5: # in Loop: Header=BB0_1 Depth=1","source":null},
{"text":" inc rcx","source":2},
{"text":" cmp rcx, 65536","source":2},
{"text":" mov rax, rcx","source":2},
{"text":" jne .LBB0_1","source":2},
{"text":" ret","source":5},
{"text":"","source":null}
]

@ -1,19 +0,0 @@
maxArray(double*, double*): # @maxArray(double*, double*)
xor eax, eax @ 1
.LBB0_1: # =>This Inner Loop Header: Depth=1
movsd xmm0, qword ptr [rsi + 8*rax] @ 3
ucomisd xmm0, qword ptr [rdi + 8*rax] @ 3
jbe .LBB0_3 @ 3
movsd qword ptr [rdi + 8*rax], xmm0 @ 3
.LBB0_3: # in Loop: Header=BB0_1 Depth=1
lea rcx, qword ptr [rax + 1] @ 2
movsd xmm0, qword ptr [rsi + 8*rax + 8] @ 3
ucomisd xmm0, qword ptr [rdi + 8*rax + 8] @ 3
jbe .LBB0_5 @ 3
movsd qword ptr [rdi + 8*rax + 8], xmm0 @ 3
.LBB0_5: # in Loop: Header=BB0_1 Depth=1
inc rcx @ 2
cmp rcx, 65536 @ 2
mov rax, rcx @ 2
jne .LBB0_1 @ 2
ret @ 5

@ -24,7 +24,7 @@
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// POSSIBILITY OF SUCH DAMAGE.
var fs = require('fs');
var fs = require('fs'), assert = require('assert');
var asm = require('../lib/asm.js');
function processAsm(filename, filters) {
@ -49,26 +49,55 @@ function assertEq(a, b, context) {
}
}
function testFilter(filename, suffix, filters, withSource) {
function bless(filename, output, filters) {
var result = processAsm(filename, filters);
var f = fs.openSync(output, 'w');
for (var i = 0; i < result.length; ++i) {
fs.writeSync(f, JSON.stringify(result[i]) + "\n");
}
fs.closeSync(f);
}
function testFilter(filename, suffix, filters) {
var result = processAsm(filename, filters);
var expected = filename + suffix;
var json = false;
var file;
try {
var file = fs.readFileSync(expected, 'utf-8').split('\n');
} catch (e) {
console.log("Skipping non-existent test case " + expected);
return;
file = fs.readFileSync(expected + '.json', 'utf-8');
json = true;
} catch (e) { }
if (!file) {
try {
file = fs.readFileSync(expected, 'utf-8');
} catch (e) {
console.log("Skipping non-existent test case " + expected);
return;
}
}
if (json) {
file = JSON.parse(file);
} else {
file = file.split(/\r?\n/);
}
assertEq(file.length, result.length, expected);
if (file.length != result.length) return;
for (var i = 0; i < file.length; ++i) {
var lineExpected = result[i].text;
if (withSource && result[i].source) {
lineExpected += " @ " + result[i].source;
var count = Math.min(file.length, result.length);
for (var i = 0; i < count; ++i) {
if (json) {
try {
assert.deepEqual(file[i], result[i]);
} catch (e) {
throw new Error(e + " at " + expected + ":" + (i + 1));
}
} else {
var lineExpected = result[i].text;
assertEq(file[i], lineExpected, expected + ":" + (i + 1));
}
assertEq(file[i], lineExpected, expected + ":" + (i + 1));
}
}
// bless("cases/clang-maxArray.asm", "/tmp/out", {directives: true, labels: true, commentOnly: true});
cases.forEach(function (x) {
testFilter(x, "", {})
});
@ -84,11 +113,6 @@ cases.forEach(function (x) {
{directives: true, labels: true, commentOnly: true})
});
cases.forEach(function (x) {
testFilter(x, ".dlc.source",
{directives: true, labels: true, commentOnly: true}, true)
});
if (failures) {
console.log(failures + " failures");
}

Loading…
Cancel
Save