Skip to content

Commit

Permalink
irgen: Split unary and binary expression test cases into dedicated te…
Browse files Browse the repository at this point in the history
…st cases.
  • Loading branch information
mewmew committed Jun 15, 2016
1 parent 2a20291 commit 40117c7
Show file tree
Hide file tree
Showing 31 changed files with 2,177 additions and 29 deletions.
56 changes: 52 additions & 4 deletions irgen/irgen_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -64,13 +64,61 @@ func TestGen(t *testing.T) {
},
// Unary expressions.
{
path: "../testdata/extra/irgen/unary_expr.c",
want: "../testdata/extra/irgen/unary_expr.ll",
path: "../testdata/extra/irgen/unary_expr_sub.c",
want: "../testdata/extra/irgen/unary_expr_sub.ll",
},
{
path: "../testdata/extra/irgen/unary_expr_not.c",
want: "../testdata/extra/irgen/unary_expr_not.ll",
},
// Binary expressions.
{
path: "../testdata/extra/irgen/binary_expr.c",
want: "../testdata/extra/irgen/binary_expr.ll",
path: "../testdata/extra/irgen/binary_expr_add.c",
want: "../testdata/extra/irgen/binary_expr_add.ll",
},
{
path: "../testdata/extra/irgen/binary_expr_sub.c",
want: "../testdata/extra/irgen/binary_expr_sub.ll",
},
{
path: "../testdata/extra/irgen/binary_expr_mul.c",
want: "../testdata/extra/irgen/binary_expr_mul.ll",
},
{
path: "../testdata/extra/irgen/binary_expr_div.c",
want: "../testdata/extra/irgen/binary_expr_div.ll",
},
{
path: "../testdata/extra/irgen/binary_expr_lt.c",
want: "../testdata/extra/irgen/binary_expr_lt.ll",
},
{
path: "../testdata/extra/irgen/binary_expr_gt.c",
want: "../testdata/extra/irgen/binary_expr_gt.ll",
},
{
path: "../testdata/extra/irgen/binary_expr_le.c",
want: "../testdata/extra/irgen/binary_expr_le.ll",
},
{
path: "../testdata/extra/irgen/binary_expr_ge.c",
want: "../testdata/extra/irgen/binary_expr_ge.ll",
},
{
path: "../testdata/extra/irgen/binary_expr_ne.c",
want: "../testdata/extra/irgen/binary_expr_ne.ll",
},
{
path: "../testdata/extra/irgen/binary_expr_eq.c",
want: "../testdata/extra/irgen/binary_expr_eq.ll",
},
{
path: "../testdata/extra/irgen/binary_expr_land.c",
want: "../testdata/extra/irgen/binary_expr_land.ll",
},
{
path: "../testdata/extra/irgen/binary_expr_assign.c",
want: "../testdata/extra/irgen/binary_expr_assign.ll",
},
}

Expand Down
File renamed without changes.
File renamed without changes.
71 changes: 71 additions & 0 deletions testdata/extra/irgen/binary_expr_assign.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
int f() {
int a;
int b;
return a + b;
}

int g() {
int a;
int b;
return a - b;
}

int h() {
int a;
int b;
return a * b;
}

int i() {
int a;
int b;
return a / b;
}

int j() {
int a;
int b;
return a < b;
}

int k() {
int a;
int b;
return a > b;
}

int l() {
int a;
int b;
return a <= b;
}

int m() {
int a;
int b;
return a >= b;
}

int n() {
int a;
int b;
return a != b;
}

int o() {
int a;
int b;
return a == b;
}

int p() {
int a;
int b;
return a && b;
}

int q() {
int a;
int b;
return a = b;
}
120 changes: 120 additions & 0 deletions testdata/extra/irgen/binary_expr_assign.ll
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
define i32 @f() {
0:
%a = alloca i32
%b = alloca i32
%1 = load i32, i32* %a
%2 = load i32, i32* %b
%3 = add i32 %1, %2
ret i32 %3
}
define i32 @g() {
0:
%a = alloca i32
%b = alloca i32
%1 = load i32, i32* %a
%2 = load i32, i32* %b
%3 = sub i32 %1, %2
ret i32 %3
}
define i32 @h() {
0:
%a = alloca i32
%b = alloca i32
%1 = load i32, i32* %a
%2 = load i32, i32* %b
%3 = mul i32 %1, %2
ret i32 %3
}
define i32 @i() {
0:
%a = alloca i32
%b = alloca i32
%1 = load i32, i32* %a
%2 = load i32, i32* %b
%3 = sdiv i32 %1, %2
ret i32 %3
}
define i32 @j() {
0:
%a = alloca i32
%b = alloca i32
%1 = load i32, i32* %a
%2 = load i32, i32* %b
%3 = icmp slt i32 %1, %2
%4 = zext i1 %3 to i32
ret i32 %4
}
define i32 @k() {
0:
%a = alloca i32
%b = alloca i32
%1 = load i32, i32* %a
%2 = load i32, i32* %b
%3 = icmp sgt i32 %1, %2
%4 = zext i1 %3 to i32
ret i32 %4
}
define i32 @l() {
0:
%a = alloca i32
%b = alloca i32
%1 = load i32, i32* %a
%2 = load i32, i32* %b
%3 = icmp sle i32 %1, %2
%4 = zext i1 %3 to i32
ret i32 %4
}
define i32 @m() {
0:
%a = alloca i32
%b = alloca i32
%1 = load i32, i32* %a
%2 = load i32, i32* %b
%3 = icmp sge i32 %1, %2
%4 = zext i1 %3 to i32
ret i32 %4
}
define i32 @n() {
0:
%a = alloca i32
%b = alloca i32
%1 = load i32, i32* %a
%2 = load i32, i32* %b
%3 = icmp ne i32 %1, %2
%4 = zext i1 %3 to i32
ret i32 %4
}
define i32 @o() {
0:
%a = alloca i32
%b = alloca i32
%1 = load i32, i32* %a
%2 = load i32, i32* %b
%3 = icmp eq i32 %1, %2
%4 = zext i1 %3 to i32
ret i32 %4
}
define i32 @p() {
0:
%a = alloca i32
%b = alloca i32
%1 = load i32, i32* %a
%2 = icmp ne i32 %1, 0
br i1 %2, label %3, label %6
3:
%4 = load i32, i32* %b
%5 = icmp ne i32 %4, 0
br label %6
6:
%7 = phi i1 [ false, %0 ], [ %5, %3 ]
%8 = zext i1 %7 to i32
ret i32 %8
}
define i32 @q() {
0:
%a = alloca i32
%b = alloca i32
%1 = load i32, i32* %b
store i32 %1, i32* %a
ret i32 %1
}
71 changes: 71 additions & 0 deletions testdata/extra/irgen/binary_expr_div.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
int f() {
int a;
int b;
return a + b;
}

int g() {
int a;
int b;
return a - b;
}

int h() {
int a;
int b;
return a * b;
}

int i() {
int a;
int b;
return a / b;
}

int j() {
int a;
int b;
return a < b;
}

int k() {
int a;
int b;
return a > b;
}

int l() {
int a;
int b;
return a <= b;
}

int m() {
int a;
int b;
return a >= b;
}

int n() {
int a;
int b;
return a != b;
}

int o() {
int a;
int b;
return a == b;
}

int p() {
int a;
int b;
return a && b;
}

int q() {
int a;
int b;
return a = b;
}
Loading

0 comments on commit 40117c7

Please sign in to comment.