blob: 5993bd07321edd41aee58f4e834601609c3a9441 [file] [log] [blame]
Jim Stichnoth7da431b2014-08-05 11:22:37 -07001//===- subzero/crosstest/test_global_main.cpp - Driver for tests ----------===//
2//
3// The Subzero Code Generator
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9//
10// Driver for crosstesting global variable access operations.
11//
12//===----------------------------------------------------------------------===//
13
Jim Stichnothde4ca712014-06-29 08:13:48 -070014/* crosstest.py --test=test_global.cpp \
15 --driver=test_global_main.cpp --prefix=Subzero_ --output=test_global */
16
Jim Stichnothde4ca712014-06-29 08:13:48 -070017#include <cstdlib>
18#include <iostream>
Antonio Maioranoca8a16e2020-11-10 16:56:20 -050019#include <stdint.h>
Jim Stichnothde4ca712014-06-29 08:13:48 -070020
21#include "test_global.h"
22namespace Subzero_ {
23#include "test_global.h"
24}
25
Karl Schimpf9d98d792014-10-13 15:01:08 -070026int ExternName1 = 36363;
27float ExternName2 = 357.05e-10;
28char ExternName3[] = {'a', 'b', 'c'};
Karl Schimpf562e41c2014-10-20 14:26:24 -070029struct Data {
Karl Schimpf9d98d792014-10-13 15:01:08 -070030 int a;
31 float b;
32 double d;
Karl Schimpf562e41c2014-10-20 14:26:24 -070033};
34
35struct Data SimpleData = {-111, 2.69, 55.19};
36
37struct Data *ExternName4 = &SimpleData;
38
Karl Schimpf9d98d792014-10-13 15:01:08 -070039double ExternName5 = 3.44e26;
40
Jim Stichnothde4ca712014-06-29 08:13:48 -070041int main(int argc, char **argv) {
Jim Stichnoth8ff4b282016-01-04 15:39:06 -080042 // Prevent pnacl-opt from deleting "unused" globals.
43 if (argc < 0) {
44 std::cout << &ExternName1 << &ExternName2 << &ExternName3 << &SimpleData
45 << &ExternName4 << ExternName5;
46 }
Jim Stichnothde4ca712014-06-29 08:13:48 -070047 size_t TotalTests = 0;
48 size_t Passes = 0;
49 size_t Failures = 0;
50
51 const uint8_t *SzArray, *LlcArray;
52 size_t SzArrayLen, LlcArrayLen;
53
54 size_t NumArrays = getNumArrays();
55 for (size_t i = 0; i < NumArrays; ++i) {
56 LlcArrayLen = -1;
57 SzArrayLen = -2;
58 LlcArray = getArray(i, LlcArrayLen);
59 SzArray = Subzero_::getArray(i, SzArrayLen);
Matt Wala656d1762014-07-24 09:43:36 -070060 ++TotalTests;
Jim Stichnothde4ca712014-06-29 08:13:48 -070061 if (LlcArrayLen == SzArrayLen) {
62 ++Passes;
63 } else {
64 std::cout << i << ":LlcArrayLen=" << LlcArrayLen
Jim Stichnoth7da431b2014-08-05 11:22:37 -070065 << ", SzArrayLen=" << SzArrayLen << "\n";
Jim Stichnothde4ca712014-06-29 08:13:48 -070066 ++Failures;
67 }
68
69 for (size_t i = 0; i < LlcArrayLen; ++i) {
Matt Wala656d1762014-07-24 09:43:36 -070070 ++TotalTests;
Jim Stichnothde4ca712014-06-29 08:13:48 -070071 if (LlcArray[i] == SzArray[i]) {
72 ++Passes;
73 } else {
74 ++Failures;
75 std::cout << i << ":LlcArray[" << i << "] = " << (int)LlcArray[i]
Jim Stichnothdd842db2015-01-27 12:53:53 -080076 << ", SzArray[" << i << "] = " << (int)SzArray[i] << "\n";
Jim Stichnothde4ca712014-06-29 08:13:48 -070077 }
78 }
79 }
80
81 std::cout << "TotalTests=" << TotalTests << " Passes=" << Passes
82 << " Failures=" << Failures << "\n";
83 return Failures;
84}