mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-26 12:43:36 +01:00
Add Kaleidoscope regression tests.
These will be run if LLVM_BUILD_EXAMPLES is enabled. llvm-svn: 246175
This commit is contained in:
parent
1fb24b1ab8
commit
6a2c50847c
@ -566,7 +566,7 @@ if we add:
|
||||
|
||||
/// putchard - putchar that takes a double and returns 0.
|
||||
extern "C" double putchard(double X) {
|
||||
putchar((char)X);
|
||||
fputc((char)X, stderr);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -13,3 +13,5 @@ set(LLVM_LINK_COMPONENTS
|
||||
add_kaleidoscope_chapter(Kaleidoscope-Ch4
|
||||
toy.cpp
|
||||
)
|
||||
|
||||
export_executable_symbols(Kaleidoscope-Ch4)
|
||||
|
@ -632,13 +632,13 @@ static void MainLoop() {
|
||||
|
||||
/// putchard - putchar that takes a double and returns 0.
|
||||
extern "C" double putchard(double X) {
|
||||
putchar((char)X);
|
||||
fputc((char)X, stderr);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/// printd - printf that takes a double prints it as "%f\n", returning 0.
|
||||
extern "C" double printd(double X) {
|
||||
printf("%f\n", X);
|
||||
fprintf(stderr, "%f\n", X);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -13,3 +13,5 @@ set(LLVM_LINK_COMPONENTS
|
||||
add_kaleidoscope_chapter(Kaleidoscope-Ch5
|
||||
toy.cpp
|
||||
)
|
||||
|
||||
export_executable_symbols(Kaleidoscope-Ch5)
|
||||
|
@ -906,13 +906,13 @@ static void MainLoop() {
|
||||
|
||||
/// putchard - putchar that takes a double and returns 0.
|
||||
extern "C" double putchard(double X) {
|
||||
putchar((char)X);
|
||||
fputc((char)X, stderr);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/// printd - printf that takes a double prints it as "%f\n", returning 0.
|
||||
extern "C" double printd(double X) {
|
||||
printf("%f\n", X);
|
||||
fprintf(stderr, "%f\n", X);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -13,3 +13,5 @@ set(LLVM_LINK_COMPONENTS
|
||||
add_kaleidoscope_chapter(Kaleidoscope-Ch6
|
||||
toy.cpp
|
||||
)
|
||||
|
||||
export_executable_symbols(Kaleidoscope-Ch6)
|
||||
|
@ -1024,13 +1024,13 @@ static void MainLoop() {
|
||||
|
||||
/// putchard - putchar that takes a double and returns 0.
|
||||
extern "C" double putchard(double X) {
|
||||
putchar((char)X);
|
||||
fputc((char)X, stderr);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/// printd - printf that takes a double prints it as "%f\n", returning 0.
|
||||
extern "C" double printd(double X) {
|
||||
printf("%f\n", X);
|
||||
fprintf(stderr, "%f\n", X);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -13,3 +13,5 @@ set(LLVM_LINK_COMPONENTS
|
||||
add_kaleidoscope_chapter(Kaleidoscope-Ch7
|
||||
toy.cpp
|
||||
)
|
||||
|
||||
export_executable_symbols(Kaleidoscope-Ch7)
|
||||
|
@ -1190,13 +1190,13 @@ static void MainLoop() {
|
||||
|
||||
/// putchard - putchar that takes a double and returns 0.
|
||||
extern "C" double putchard(double X) {
|
||||
putchar((char)X);
|
||||
fputc((char)X, stderr);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/// printd - printf that takes a double prints it as "%f\n", returning 0.
|
||||
extern "C" double printd(double X) {
|
||||
printf("%f\n", X);
|
||||
fprintf(stderr, "%f\n", X);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -9,3 +9,5 @@ set(LLVM_LINK_COMPONENTS
|
||||
add_kaleidoscope_chapter(Kaleidoscope-Ch8
|
||||
toy.cpp
|
||||
)
|
||||
|
||||
export_executable_symbols(Kaleidoscope-Ch8)
|
||||
|
@ -1384,13 +1384,13 @@ static void MainLoop() {
|
||||
|
||||
/// putchard - putchar that takes a double and returns 0.
|
||||
extern "C" double putchard(double X) {
|
||||
putchar((char)X);
|
||||
fputc((char)X, stderr);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/// printd - printf that takes a double prints it as "%f\n", returning 0.
|
||||
extern "C" double printd(double X) {
|
||||
printf("%f\n", X);
|
||||
fprintf(stderr, "%f\n", X);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -1,3 +1,7 @@
|
||||
if(LLVM_BUILD_EXAMPLES)
|
||||
set(ENABLE_EXAMPLES 1)
|
||||
endif()
|
||||
|
||||
configure_lit_site_cfg(
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in
|
||||
${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg
|
||||
@ -96,6 +100,16 @@ if(TARGET ocaml_llvm)
|
||||
)
|
||||
endif()
|
||||
|
||||
if(LLVM_BUILD_EXAMPLES)
|
||||
list(APPEND LLVM_TEST_DEPENDS
|
||||
Kaleidoscope-Ch3
|
||||
Kaleidoscope-Ch4
|
||||
Kaleidoscope-Ch5
|
||||
Kaleidoscope-Ch6
|
||||
Kaleidoscope-Ch7
|
||||
)
|
||||
endif()
|
||||
|
||||
add_lit_testsuite(check-llvm "Running the LLVM regression tests"
|
||||
${CMAKE_CURRENT_BINARY_DIR}
|
||||
PARAMS llvm_site_config=${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg
|
||||
|
17
test/Examples/Kaleidoscope/Chapter3.test
Normal file
17
test/Examples/Kaleidoscope/Chapter3.test
Normal file
@ -0,0 +1,17 @@
|
||||
# RUN: Kaleidoscope-Ch3 < %s 2>&1 | FileCheck %s
|
||||
|
||||
# Test basic parsing and IR generation.
|
||||
def foo(x) x + 1;
|
||||
foo(1);
|
||||
|
||||
# CHECK: define double @foo(double %x) {
|
||||
# CHECK-NEXT: entry:
|
||||
# CHECK-NEXT: %addtmp = fadd double %x, 1.000000e+00
|
||||
# CHECK-NEXT: ret double %addtmp
|
||||
# CHECK-NEXT: }
|
||||
|
||||
# CHECK: define double @__anon_expr() {
|
||||
# CHECK-NEXT: entry:
|
||||
# CHECK-NEXT: %calltmp = call double @foo(double 1.000000e+00)
|
||||
# CHECK-NEXT: ret double %calltmp
|
||||
# CHECK-NEXT: }
|
17
test/Examples/Kaleidoscope/Chapter4.test
Normal file
17
test/Examples/Kaleidoscope/Chapter4.test
Normal file
@ -0,0 +1,17 @@
|
||||
# RUN: Kaleidoscope-Ch4 < %s 2>&1 | FileCheck %s
|
||||
|
||||
# Test basic definition, binding, and execution.
|
||||
def foo(x) x + 1;
|
||||
def bar(x) foo(2 * x);
|
||||
bar(2);
|
||||
# CHECK: Evaluated to 5.000000
|
||||
|
||||
# Test redefinition.
|
||||
def foo(x) x + 2;
|
||||
foo(2);
|
||||
# CHECK: Evaluated to 4.000000
|
||||
|
||||
# Verify that 'bar' still calls the original 'foo'.
|
||||
bar(2);
|
||||
# CHECK: Evaluated to 5.000000
|
||||
|
19
test/Examples/Kaleidoscope/Chapter5.test
Normal file
19
test/Examples/Kaleidoscope/Chapter5.test
Normal file
@ -0,0 +1,19 @@
|
||||
# RUN: Kaleidoscope-Ch5 < %s 2>&1 | FileCheck %s
|
||||
|
||||
# Test 'if' expression.
|
||||
def foo(x) if x < 10 then 0 else 1;
|
||||
foo(9);
|
||||
foo(11);
|
||||
# CHECK: Evaluated to 0.000000
|
||||
# CHECK: Evaluated to 1.000000
|
||||
|
||||
# Test 'for' expression.
|
||||
extern printd(x);
|
||||
for i = 1, i < 5, 1.0 in
|
||||
printd(i);
|
||||
# CHECK: 1.0
|
||||
# CHECK: 2.0
|
||||
# CHECK: 3.0
|
||||
# CHECK: 4.0
|
||||
# CHECK: 5.0
|
||||
# CHECK: Evaluated to 0.000000
|
15
test/Examples/Kaleidoscope/Chapter6.test
Normal file
15
test/Examples/Kaleidoscope/Chapter6.test
Normal file
@ -0,0 +1,15 @@
|
||||
# RUN: Kaleidoscope-Ch6 < %s 2>&1 | FileCheck %s
|
||||
|
||||
# Test unary operator definition.
|
||||
def unary-(x) 0 - x;
|
||||
1 + (-1);
|
||||
# CHECK: Evaluated to 0.000000
|
||||
|
||||
# Test binary operator definition.
|
||||
def binary> 10 (lhs rhs) rhs < lhs;
|
||||
def foo(x) if x > 10 then 0 else 1;
|
||||
foo(9);
|
||||
foo(11);
|
||||
# CHECK: Evaluated to 1.000000
|
||||
# CHECK: Evaluated to 0.000000
|
||||
|
15
test/Examples/Kaleidoscope/Chapter7.test
Normal file
15
test/Examples/Kaleidoscope/Chapter7.test
Normal file
@ -0,0 +1,15 @@
|
||||
# RUN: Kaleidoscope-Ch7 < %s 2>&1 | FileCheck %s
|
||||
|
||||
# Sequence operator and iterative fibonacci function to test user defined vars.
|
||||
def binary : 1 (x y) y;
|
||||
|
||||
def fibi(x)
|
||||
var a = 1, b = 1, c in
|
||||
(for i = 3, i < x in
|
||||
c = a + b :
|
||||
a = b :
|
||||
b = c) :
|
||||
b;
|
||||
|
||||
fibi(10);
|
||||
# CHECK: Evaluated to 55.000000
|
2
test/Examples/lit.local.cfg
Normal file
2
test/Examples/lit.local.cfg
Normal file
@ -0,0 +1,2 @@
|
||||
if not config.test_examples:
|
||||
config.unsupported = True
|
@ -146,6 +146,7 @@ lit.site.cfg: FORCE
|
||||
@$(ECHOPATH) s=@HOST_ARCH@=$(HOST_ARCH)=g >> lit.tmp
|
||||
@$(ECHOPATH) s=@HAVE_LIBZ@=$(HAVE_LIBZ)=g >> lit.tmp
|
||||
@$(ECHOPATH) s=@HAVE_DIA_SDK@=0=g >> lit.tmp
|
||||
@$(ECHOPATH) s=@ENABLE_EXAMPLES@=$(BUILD_EXAMPLES)=g >> lit.tmp
|
||||
@sed -f lit.tmp $(PROJ_SRC_DIR)/lit.site.cfg.in > $@
|
||||
@-rm -f lit.tmp
|
||||
|
||||
|
@ -258,6 +258,12 @@ for pattern in [r"\bbugpoint\b(?!-)",
|
||||
r"\byaml2obj\b",
|
||||
r"\byaml-bench\b",
|
||||
r"\bverify-uselistorder\b",
|
||||
r"\bKaleidoscope-Ch3\b",
|
||||
r"\bKaleidoscope-Ch4\b",
|
||||
r"\bKaleidoscope-Ch5\b",
|
||||
r"\bKaleidoscope-Ch6\b",
|
||||
r"\bKaleidoscope-Ch7\b",
|
||||
r"\bKaleidoscope-Ch8\b",
|
||||
# Handle these specially as they are strings searched
|
||||
# for during testing.
|
||||
r"\| \bcount\b",
|
||||
|
@ -35,6 +35,7 @@ config.llvm_use_sanitizer = "@LLVM_USE_SANITIZER@"
|
||||
config.have_zlib = "@HAVE_LIBZ@"
|
||||
config.have_dia_sdk = @HAVE_DIA_SDK@
|
||||
config.enable_ffi = "@LLVM_ENABLE_FFI@"
|
||||
config.test_examples = "@ENABLE_EXAMPLES@"
|
||||
|
||||
# Support substitution of the tools_dir with user parameters. This is
|
||||
# used when we can't determine the tool dir at configuration time.
|
||||
|
Loading…
Reference in New Issue
Block a user