Skip to content

Commit

Permalink
[Revert] Revert to LLVM 3.4 in order to support CentOS 6.5 compilation
Browse files Browse the repository at this point in the history
  • Loading branch information
Thomas B. Jablin committed Sep 18, 2014
1 parent 85dd187 commit 913d93f
Show file tree
Hide file tree
Showing 21 changed files with 184 additions and 183 deletions.
17 changes: 5 additions & 12 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,7 @@ include_directories(include)
include_directories(${CMAKE_BINARY_DIR})
add_definitions(-DGTEST_HAS_PTHREAD=0)

SET(CMAKE_MODULE_PATH
"${PROJECT_SOURCE_DIR}/src/brig2llvm/scripts/cmake"
"${PROJECT_BINARY_DIR}/src/brig2llvm/compiler/share/llvm/cmake/")
SET(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/src/brig2llvm/scripts/cmake")
MESSAGE("Module path: ${CMAKE_MODULE_PATH}")
include (FindTargetArch)

Expand All @@ -27,7 +25,6 @@ set(CMAKE_CXX_FLAGS "-DTEST_PATH=${PROJECT_SOURCE_DIR}/test ${CMAKE_CXX_FLAGS}")
set(CMAKE_CXX_FLAGS "-DBIN_PATH=${PROJECT_BINARY_DIR}/HSAIL-Tools ${CMAKE_CXX_FLAGS}")
set(CMAKE_CXX_FLAGS "-DOBJ_PATH=${PROJECT_BINARY_DIR}/test ${CMAKE_CXX_FLAGS}")
set(CMAKE_CXX_FLAGS "-I/usr/include/libdwarf ${CMAKE_CXX_FLAGS}")
set(CMAKE_CXX_FLAGS "-fno-rtti -fno-exceptions ${CMAKE_CXX_FLAGS}")

set(CMAKE_CXX_FLAGS_RELEASE "-O3 -UNDEBUG")

Expand Down Expand Up @@ -56,11 +53,8 @@ set(LLVM_INCLUDE_TESTS off CACHE STRING "")
set(LLVM_INCLUDE_RUNTIME off CACHE STRING "")
set(LLVM_ENABLE_TERMINFO off CACHE STRING "")
set(LLVM_BINARY_DIR "${PROJECT_BINARY_DIR}/src/brig2llvm/compiler")
set(LLVM_RUNTIME_OUTPUT_INTDIR ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/bin)
set(LLVM_LIBRARY_OUTPUT_INTDIR ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/lib)

SET(LLVM_REQUIRES_EH "false")
SET(LLVM_REQUIRES_RTTI "false")
SET(LLVM_REQUIRES_EH "true")

# obtain specific information about llvm setup
SET(LOCAL_LLVM_INCLUDE src/brig2llvm/compiler/include)
Expand All @@ -77,15 +71,14 @@ SET(PROJ_SEARCH_PATH
"${PROJECT_SOURCE_DIR}/include"
"${PROJECT_SOURCE_DIR}/${LOCAL_LLVM_INCLUDE}"
"${PROJECT_BINARY_DIR}/${LOCAL_LLVM_INCLUDE}"
"${PROJECT_BINARY_DIR}/src"
"${PROJECT_BINARY_DIR}/src/brig2llvm/compiler/share/llvm/cmake/")
"${PROJECT_BINARY_DIR}/src")
include_directories( ${PROJ_SEARCH_PATH} )

LINK_DIRECTORIES( ${LLVM_LIB_DIR} )

add_subdirectory(src/brig2llvm/compiler)

include(LLVMConfig)
include("${PROJECT_BINARY_DIR}/src/brig2llvm/compiler/share/llvm/cmake/LLVMConfig.cmake")
include(HandleLLVMOptions)

include(CheckCXXCompilerFlag)
Expand Down Expand Up @@ -136,7 +129,7 @@ SET( MAKE_OPTIONS
" CXX=${CMAKE_CXX_COMPILER}"
" AR=${CMAKE_AR}"
" CC=${CMAKE_C_COMPILER}"
" CXXFLAGS=${CMAKE_CXX_FLAGS} -fexceptions -frtti -Dfalse=0"
" CXXFLAGS=${CMAKE_CXX_FLAGS}"
" LDFLAGS=${CMAKE_EXE_LINKER_FLAGS}")

add_custom_target( build_libhsail ALL
Expand Down
18 changes: 11 additions & 7 deletions README
Original file line number Diff line number Diff line change
Expand Up @@ -34,10 +34,12 @@ Running the simulator requires SSE3 support, libelf, and libdwarf.
----Validated Platforms----

The primary environment for the HSA Simulator project is a modern POSIX-based
operating system. The HSA Simulator has been tested on CentOS 7 and Ubuntu
14.04. For each operating system, the simulator has been validated on the x86-64
architecture in both release and debug builds. The HSA simulator has been
compiled and tested with gcc 4.7 and later and clang 3.1 and later.
operating system. The HSA Simulator has been tested on CentOS 5 and 6 and Ubuntu
12.04 and 12.10. For each operating system, the simulator has been validated on
i386 and x86-64 architectures in both release and debug builds. The HSA
simulator has been compiled and tested with gcc 4.1, gcc 4.4, gcc 4.5, gcc 4.6,
gcc 4.7, gcc 4.8, and clang 3.2. All supported operating systems pass our tests
using their default compiler.

----Testing the simulator----

Expand Down Expand Up @@ -97,11 +99,13 @@ information. The output file will have the same name as the input file with

* Some invalid HSA code will pass through the finalizer and fail at run-time

* Known working compilers on Linux: gcc 4.7 and later, and clang 3.1
* Known working compilers on Linux: gcc 4.1, gcc 4.4, gcc 4.5, gcc 4.6, gcc 4.7,
gcc 4.8, and clang 3.2

* Known working operating systems CentOS 7 and Ubuntu 14.04.
* Known working operating systems CentOS 5.8, CentOS 6.3, Ubuntu 12.04, and
Ubuntu 12.10.

* Known working architectures x86-64.
* Known working architectures x86-32 and x86-64.

* Programs that crash on the simulated HSA device may crash the simulator

Expand Down
22 changes: 12 additions & 10 deletions demo/atomicexch.cc
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
#include "hsa.h"

// Use LLVM for portable IO
#include "llvm/ADT/OwningPtr.h"
#include "llvm/Support/FileSystem.h"
#include "llvm/Support/MemoryBuffer.h"
#include "llvm/Support/raw_ostream.h"
Expand Down Expand Up @@ -43,13 +44,14 @@ int main(int argc, char **argv) {

hsa::vector<hsa::Device *> devices = hsaRT->getDevices();

llvm::ErrorOr<std::unique_ptr<llvm::MemoryBuffer>> file =
llvm::MemoryBuffer::getFile(XSTR(OBJ_PATH) "/atomicexch.o");
if (file.getError()) return -1;
llvm::OwningPtr<llvm::MemoryBuffer> file;
llvm::error_code ec =
llvm::MemoryBuffer::getFile(XSTR(OBJ_PATH) "/atomicexch.o", file);
if (ec) return -1;

hsa::Program *program =
hsaRT->createProgram(const_cast<char *>((*file)->getBufferStart()),
(*file)->getBufferSize(),
hsaRT->createProgram(const_cast<char *>(file->getBufferStart()),
file->getBufferSize(),
&devices);
if (!program) return -1;

Expand Down Expand Up @@ -89,7 +91,7 @@ int main(int argc, char **argv) {
}
// initialize atomic
*atomic = 0;

hsacommon::vector<hsa::Event *> deps;
queue->dispatch(kernel, la, deps, 3, argAtomic, argOut, numElems);

Expand All @@ -104,7 +106,7 @@ int main(int argc, char **argv) {
llvm::outs() << "\n";
}
llvm::outs() << "\n";

// check for 1 entry per row
for (int r=0; r<NUMELEMENTS; r++) {
int count = 0;
Expand All @@ -118,7 +120,7 @@ int main(int argc, char **argv) {
passed = false;
}
}

// check for 1 entry per col
for (int c=0; c<NUMELEMENTS; c++) {
int count = 0;
Expand All @@ -132,8 +134,8 @@ int main(int argc, char **argv) {
passed = false;
}
}


llvm::outs() << "\n" << (passed ? "PASSED" : "FAILED") << "\n";

hsaRT->freeGlobalMemory(out);
Expand Down
12 changes: 7 additions & 5 deletions demo/barrierTest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
#include <cmath>

// Use LLVM for portable IO
#include "llvm/ADT/OwningPtr.h"
#include "llvm/Support/FileSystem.h"
#include "llvm/Support/MemoryBuffer.h"
#include "llvm/Support/raw_ostream.h"
Expand All @@ -42,13 +43,14 @@ int main(int argc, char **argv) {

hsa::vector<hsa::Device *> devices = hsaRT->getDevices();

llvm::ErrorOr<std::unique_ptr<llvm::MemoryBuffer>> file =
llvm::MemoryBuffer::getFile(XSTR(OBJ_PATH) "/barrierTest.o");
if (file.getError()) return -1;
llvm::OwningPtr<llvm::MemoryBuffer> file;
llvm::error_code ec =
llvm::MemoryBuffer::getFile(XSTR(OBJ_PATH) "/barrierTest.o", file);
if (ec) return -1;

hsa::Program *program =
hsaRT->createProgram(const_cast<char *>((*file)->getBufferStart()),
(*file)->getBufferSize(),
hsaRT->createProgram(const_cast<char *>(file->getBufferStart()),
file->getBufferSize(),
&devices);
if (!program) return -1;

Expand Down
4 changes: 2 additions & 2 deletions demo/dumpDebugInfo.cc
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@
#include "brig_runtime.h"
#include "brig_inst_helper.h"

#include "llvm/IR/DIBuilder.h"
#include "llvm/IR/DebugInfo.h"
#include "llvm/IR/Module.h"
#include "llvm/DIBuilder.h"
#include "llvm/DebugInfo.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/Support/MemoryBuffer.h"
#include "llvm/Support/FileSystem.h"
Expand Down
12 changes: 7 additions & 5 deletions demo/fcos.cc
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
#include <cmath>

// Use LLVM for portable IO
#include "llvm/ADT/OwningPtr.h"
#include "llvm/Support/FileSystem.h"
#include "llvm/Support/MemoryBuffer.h"
#include "llvm/Support/raw_ostream.h"
Expand All @@ -35,13 +36,14 @@ int main(int argc, char **argv) {

hsa::vector<hsa::Device *> devices = hsaRT->getDevices();

llvm::ErrorOr<std::unique_ptr<llvm::MemoryBuffer>> file =
llvm::MemoryBuffer::getFile(XSTR(OBJ_PATH) "/fcos.o");
if (file.getError()) return -1;
llvm::OwningPtr<llvm::MemoryBuffer> file;
llvm::error_code ec =
llvm::MemoryBuffer::getFile(XSTR(OBJ_PATH) "/fcos.o", file);
if (ec) return -1;

hsa::Program *program =
hsaRT->createProgram(const_cast<char *>((*file)->getBufferStart()),
(*file)->getBufferSize(),
hsaRT->createProgram(const_cast<char *>(file->getBufferStart()),
file->getBufferSize(),
&devices);
if (!program) return -1;

Expand Down
12 changes: 7 additions & 5 deletions demo/fib.cc
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
#include <cmath>

// Use LLVM for portable IO
#include "llvm/ADT/OwningPtr.h"
#include "llvm/Support/FileSystem.h"
#include "llvm/Support/MemoryBuffer.h"
#include "llvm/Support/raw_ostream.h"
Expand All @@ -35,13 +36,14 @@ int main(int argc, char **argv) {

hsa::vector<hsa::Device *> devices = hsaRT->getDevices();

llvm::ErrorOr<std::unique_ptr<llvm::MemoryBuffer>> file =
llvm::MemoryBuffer::getFile(XSTR(OBJ_PATH) "/fib.o");
if (file.getError()) return -1;
llvm::OwningPtr<llvm::MemoryBuffer> file;
llvm::error_code ec =
llvm::MemoryBuffer::getFile(XSTR(OBJ_PATH) "/fib.o", file);
if (ec) return -1;

hsa::Program *program =
hsaRT->createProgram(const_cast<char *>((*file)->getBufferStart()),
(*file)->getBufferSize(),
hsaRT->createProgram(const_cast<char *>(file->getBufferStart()),
file->getBufferSize(),
&devices);
if (!program) return -1;

Expand Down
27 changes: 13 additions & 14 deletions demo/fibDebug.cc
Original file line number Diff line number Diff line change
Expand Up @@ -23,32 +23,31 @@
template<class T>
static void printSourceLine(T &out, llvm::DILineInfo &info) {

std::string filename = info.FileName;
uint32_t line = info.Line;
uint32_t column = info.Column;
const char *filename = info.getFileName();
uint32_t line = info.getLine();
uint32_t column = info.getColumn();

llvm::ErrorOr<std::unique_ptr<llvm::MemoryBuffer>> file =
llvm::MemoryBuffer::getFile(filename);
if (file.getError()) {
llvm::OwningPtr<llvm::MemoryBuffer> file;
if (llvm::MemoryBuffer::getFile(filename, file)) {
out << "<Missing file: " << filename << ">\n";
return;
}

const char *start = (*file)->getBufferStart();
for (unsigned i = 1; start < (*file)->getBufferEnd() && i < line; ++i) {
while (start < (*file)->getBufferEnd() && *start != '\n' && *start != '\r')
const char *start = file->getBufferStart();
for (unsigned i = 1; start < file->getBufferEnd() && i < line; ++i) {
while (start < file->getBufferEnd() && *start != '\n' && *start != '\r')
++start;
++start;
if (start < (*file)->getBufferEnd() && start[-1] != *start &&
if (start < file->getBufferEnd() && start[-1] != *start &&
( *start == '\n' || *start == '\r'))
++start;
}

start += (column - 1);

const char *end = start;
while (end < (*file)->getBufferEnd() && *end != ';') ++end;
while (end < (*file)->getBufferEnd() && *end != '\n' && *end != '\r') ++end;
while (end < file->getBufferEnd() && *end != ';') ++end;
while (end < file->getBufferEnd() && *end != '\n' && *end != '\r') ++end;

std::string text(start, end - start);
out << text;
Expand All @@ -63,8 +62,8 @@ class DemoDebugger : public hsa::brig::HSADebugger {
virtual void updatePC(size_t pc) {
stack.back().showRegChanges();
llvm::DILineInfo info = BP->getLineInfoForAddress(pc);
std::cout << info.FunctionName << " at "
<< info.FileName << ":" << info.Line << "\t";
std::cout << info.getFunctionName() << " at "
<< info.getFileName() << ":" << info.getLine() << "\t";
printSourceLine(std::cout, info);
std::cout << "\n";
}
Expand Down
12 changes: 7 additions & 5 deletions demo/vectorCopy.cc
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
#include <cmath>

// Use LLVM for portable IO
#include "llvm/ADT/OwningPtr.h"
#include "llvm/Support/FileSystem.h"
#include "llvm/Support/MemoryBuffer.h"
#include "llvm/Support/raw_ostream.h"
Expand All @@ -38,13 +39,14 @@ int main(int argc, char **argv) {

hsa::vector<hsa::Device *> devices = hsaRT->getDevices();

llvm::ErrorOr<std::unique_ptr<llvm::MemoryBuffer>> file =
llvm::MemoryBuffer::getFile(XSTR(OBJ_PATH) "/VectorCopy.o");
if (file.getError()) return -1;
llvm::OwningPtr<llvm::MemoryBuffer> file;
llvm::error_code ec =
llvm::MemoryBuffer::getFile(XSTR(OBJ_PATH) "/VectorCopy.o", file);
if (ec) return -1;

hsa::Program *program =
hsaRT->createProgram(const_cast<char *>((*file)->getBufferStart()),
(*file)->getBufferSize(),
hsaRT->createProgram(const_cast<char *>(file->getBufferStart()),
file->getBufferSize(),
&devices);
if (!program) return -1;

Expand Down
2 changes: 1 addition & 1 deletion gtest/gtest.h
Original file line number Diff line number Diff line change
Expand Up @@ -476,7 +476,7 @@
# endif

// Starting with version 4.3.2, gcc defines __GXX_RTTI iff RTTI is enabled.
# elif (defined(__GNUC__) && (GTEST_GCC_VER_ >= 40302)) || defined(__clang__)
# elif defined(__GNUC__) && (GTEST_GCC_VER_ >= 40302)

# ifdef __GXX_RTTI
# define GTEST_HAS_RTTI 1
Expand Down
5 changes: 3 additions & 2 deletions include/brig_llvm.h
Original file line number Diff line number Diff line change
Expand Up @@ -102,8 +102,9 @@ struct BrigProgram {

llvm::DILineInfo getLineInfoForAddress(uint64_t pc) const {
llvm::DILineInfoSpecifier spec(
llvm::DILineInfoSpecifier::FileLineInfoKind::AbsoluteFilePath,
llvm::DILineInfoSpecifier::FunctionNameKind::LinkageName);
llvm::DILineInfoSpecifier::FunctionName |
llvm::DILineInfoSpecifier::FileLineInfo |
llvm::DILineInfoSpecifier::AbsoluteFilePath);
return debugInfo->getLineInfoForAddress(pc, spec);
}

Expand Down
Loading

0 comments on commit 913d93f

Please sign in to comment.