diff --git a/llvm/test/BrainF/HelloWorld.II b/llvm/test/BrainF/HelloWorld.II new file mode 100644 --- /dev/null +++ b/llvm/test/BrainF/HelloWorld.II @@ -0,0 +1,23 @@ +; RUN: BrainF %s -o - | llvm-dis | FileCheck --check-prefix=CHECK %s +; RUN: BrainF %s -o - | lli 2>&1 | FileCheck --check-prefix=EXEC %s + +CHECK-LABEL: define void @brainf() { +CHECK-NEXT: brainf: +CHECK-NEXT: %malloccall = tail call i8* @malloc(i32 mul (i32 ptrtoint (i8* getelementptr (i8, i8* null, i32 1) to i32), i32 65536)) +CHECK-NEXT: call void @llvm.memset.p0i8.i32(i8* %malloccall, i8 0, i32 65536, i1 false) +CHECK-NEXT: %head = getelementptr i8, i8* %malloccall, i32 32768 +CHECK-NEXT: %tape = load i8, i8* %head, align 1 +CHECK: store i8 %tape2, i8* %head, align 1 +CHECK: [[tape2:%.*]] = add i8 [[tape]], 8 +CHECK: br label %brainf3 +CHECK: brainf1: ; preds = %brainf55 +CHECK-NEXT: tail call void @free(i8* %malloccall) +CHECK-NEXT: ret void +CHECK: } +CHECK-LABEL: define i32 @main(i32 %argc, i8** %argv) { +CHECK-NEXT: main.0: +CHECK-NEXT: call void @brainf() +CHECK-NEXT: ret i32 0 +CHECK: } + +EXEC: Hello World! \ No newline at end of file diff --git a/llvm/test/BrainF/Inputs/HelloWorld.bf b/llvm/test/BrainF/Inputs/HelloWorld.bf new file mode 100644 --- /dev/null +++ b/llvm/test/BrainF/Inputs/HelloWorld.bf @@ -0,0 +1,23 @@ +; RUN: BrainF %s -o - | lli 2>&1 | FileCheck %s ++++++ +++++ (initialize counter (cell #0) to 10) +[ (use loop to set the next four cells to 70/100/30/10) + > +++++ ++ (add 7 to cell #1) + > +++++ +++++ (add 10 to cell #2 ) + > +++ (add 3 to cell #3) + > + (add 1 to cell #4) + <<<< - (decrement counter (cell #0)) +] +> ++ . (print 'H') +> + . (print 'e') ++++++ ++ . (print 'l') +. (print 'l') ++++ . (print 'o') +> ++ . (print ' ') +<< +++++ +++++ +++++ . (print 'W') +> . (print 'o') ++++ . (print 'r') +----- - . (print 'l') +----- --- . (print 'd') +> + . (print '!') +> . (print '\n') +# CHECK: Hello World \ No newline at end of file