Mercurial > hg > CbC > CbC_llvm
diff test/Transforms/SROA/phi-and-select.ll @ 95:afa8332a0e37 LLVM3.8
LLVM 3.8
author | Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 13 Oct 2015 17:48:58 +0900 |
parents | 54457678186b |
children | c2174574ed3a |
line wrap: on
line diff
--- a/test/Transforms/SROA/phi-and-select.ll Wed Feb 18 14:56:07 2015 +0900 +++ b/test/Transforms/SROA/phi-and-select.ll Tue Oct 13 17:48:58 2015 +0900 @@ -7,12 +7,12 @@ %a = alloca [2 x i32] ; CHECK-NOT: alloca - %a0 = getelementptr [2 x i32]* %a, i64 0, i32 0 - %a1 = getelementptr [2 x i32]* %a, i64 0, i32 1 + %a0 = getelementptr [2 x i32], [2 x i32]* %a, i64 0, i32 0 + %a1 = getelementptr [2 x i32], [2 x i32]* %a, i64 0, i32 1 store i32 0, i32* %a0 store i32 1, i32* %a1 - %v0 = load i32* %a0 - %v1 = load i32* %a1 + %v0 = load i32, i32* %a0 + %v1 = load i32, i32* %a1 ; CHECK-NOT: store ; CHECK-NOT: load @@ -26,7 +26,7 @@ %phi = phi i32* [ %a1, %then ], [ %a0, %entry ] ; CHECK: phi i32 [ 1, %{{.*}} ], [ 0, %{{.*}} ] - %result = load i32* %phi + %result = load i32, i32* %phi ret i32 %result } @@ -36,12 +36,12 @@ %a = alloca [2 x i32] ; CHECK-NOT: alloca - %a0 = getelementptr [2 x i32]* %a, i64 0, i32 0 - %a1 = getelementptr [2 x i32]* %a, i64 0, i32 1 + %a0 = getelementptr [2 x i32], [2 x i32]* %a, i64 0, i32 0 + %a1 = getelementptr [2 x i32], [2 x i32]* %a, i64 0, i32 1 store i32 0, i32* %a0 store i32 1, i32* %a1 - %v0 = load i32* %a0 - %v1 = load i32* %a1 + %v0 = load i32, i32* %a0 + %v1 = load i32, i32* %a1 ; CHECK-NOT: store ; CHECK-NOT: load @@ -49,7 +49,7 @@ %select = select i1 %cond, i32* %a1, i32* %a0 ; CHECK: select i1 %{{.*}}, i32 1, i32 0 - %result = load i32* %select + %result = load i32, i32* %select ret i32 %result } @@ -62,10 +62,10 @@ ; Note that we build redundant GEPs here to ensure that having different GEPs ; into the same alloca partation continues to work with PHI speculation. This ; was the underlying cause of PR13926. - %a0 = getelementptr [2 x i32]* %a, i64 0, i32 0 - %a0b = getelementptr [2 x i32]* %a, i64 0, i32 0 - %a1 = getelementptr [2 x i32]* %a, i64 0, i32 1 - %a1b = getelementptr [2 x i32]* %a, i64 0, i32 1 + %a0 = getelementptr [2 x i32], [2 x i32]* %a, i64 0, i32 0 + %a0b = getelementptr [2 x i32], [2 x i32]* %a, i64 0, i32 0 + %a1 = getelementptr [2 x i32], [2 x i32]* %a, i64 0, i32 1 + %a1b = getelementptr [2 x i32], [2 x i32]* %a, i64 0, i32 1 store i32 0, i32* %a0 store i32 1, i32* %a1 ; CHECK-NOT: store @@ -100,7 +100,7 @@ [ %a1b, %bb4 ], [ %a0b, %bb5 ], [ %a0b, %bb6 ], [ %a1b, %bb7 ] ; CHECK: phi i32 [ 1, %{{.*}} ], [ 0, %{{.*}} ], [ 0, %{{.*}} ], [ 1, %{{.*}} ], [ 1, %{{.*}} ], [ 0, %{{.*}} ], [ 0, %{{.*}} ], [ 1, %{{.*}} ] - %result = load i32* %phi + %result = load i32, i32* %phi ret i32 %result } @@ -110,12 +110,12 @@ %a = alloca [2 x i32] ; CHECK-NOT: alloca - %a0 = getelementptr [2 x i32]* %a, i64 0, i32 0 - %a1 = getelementptr [2 x i32]* %a, i64 0, i32 1 + %a0 = getelementptr [2 x i32], [2 x i32]* %a, i64 0, i32 0 + %a1 = getelementptr [2 x i32], [2 x i32]* %a, i64 0, i32 1 store i32 0, i32* %a0 store i32 1, i32* %a1 - %v0 = load i32* %a0 - %v1 = load i32* %a1 + %v0 = load i32, i32* %a0 + %v1 = load i32, i32* %a1 ; CHECK-NOT: store ; CHECK-NOT: load @@ -123,7 +123,7 @@ %select = select i1 %cond, i32* %a0, i32* %a0 ; CHECK-NOT: select - %result = load i32* %select + %result = load i32, i32* %select ret i32 %result ; CHECK: ret i32 0 } @@ -134,14 +134,14 @@ %a = alloca [2 x i32] ; CHECK-NOT: alloca - %a1 = getelementptr [2 x i32]* %a, i64 0, i32 1 + %a1 = getelementptr [2 x i32], [2 x i32]* %a, i64 0, i32 1 store i32 1, i32* %a1 ; CHECK-NOT: store %select = select i1 true, i32* %a1, i32* %b ; CHECK-NOT: select - %result = load i32* %select + %result = load i32, i32* %select ; CHECK-NOT: load ret i32 %result @@ -157,7 +157,7 @@ %c = alloca i32 ; CHECK-NOT: alloca - %a1 = getelementptr [2 x i32]* %a, i64 0, i32 1 + %a1 = getelementptr [2 x i32], [2 x i32]* %a, i64 0, i32 1 store i32 1, i32* %a1 %select = select i1 true, i32* %a1, i32* %b @@ -172,10 +172,10 @@ ; CHECK: call void @f(i32* %[[select2]], i32* %[[select3]]) - %result = load i32* %select + %result = load i32, i32* %select ; CHECK-NOT: load - %dead = load i32* %c + %dead = load i32, i32* %c ret i32 %result ; CHECK: ret i32 1 @@ -190,19 +190,19 @@ br i1 undef, label %good, label %bad good: - %Y1 = getelementptr i32* %X, i64 0 + %Y1 = getelementptr i32, i32* %X, i64 0 store i32 0, i32* %Y1 br label %exit bad: - %Y2 = getelementptr i32* %X, i64 1 + %Y2 = getelementptr i32, i32* %X, i64 1 store i32 0, i32* %Y2 br label %exit exit: %P = phi i32* [ %Y1, %good ], [ %Y2, %bad ] ; CHECK: %[[phi:.*]] = phi i32 [ 0, %good ], - %Z2 = load i32* %P + %Z2 = load i32, i32* %P ret i32 %Z2 ; CHECK: ret i32 %[[phi]] } @@ -213,7 +213,7 @@ ; CHECK-LABEL: @test8( ; CHECK-NOT: alloca ; CHECK-NOT: load -; CHECK: %[[value:.*]] = load i32* %ptr +; CHECK: %[[value:.*]] = load i32, i32* %ptr ; CHECK-NOT: load ; CHECK: %[[result:.*]] = phi i32 [ undef, %else ], [ %[[value]], %then ] ; CHECK-NEXT: ret i32 %[[result]] @@ -232,7 +232,7 @@ exit: %phi = phi i32* [ %bitcast, %else ], [ %ptr, %then ] - %loaded = load i32* %phi, align 4 + %loaded = load i32, i32* %phi, align 4 ret i32 %loaded } @@ -241,7 +241,7 @@ ; CHECK-LABEL: @test9( ; CHECK-NOT: alloca ; CHECK-NOT: load -; CHECK: %[[value:.*]] = load i32* %ptr +; CHECK: %[[value:.*]] = load i32, i32* %ptr ; CHECK-NOT: load ; CHECK: %[[result:.*]] = select i1 %{{.*}}, i32 undef, i32 %[[value]] ; CHECK-NEXT: ret i32 %[[result]] @@ -252,7 +252,7 @@ %test = icmp ne i32 %b, 0 %bitcast = bitcast float* %f to i32* %select = select i1 %test, i32* %bitcast, i32* %ptr - %loaded = load i32* %select, align 4 + %loaded = load i32, i32* %select, align 4 ret i32 %loaded } @@ -262,9 +262,9 @@ ; node. ; CHECK-LABEL: @test10( ; CHECK: %[[alloca:.*]] = alloca -; CHECK: %[[argvalue:.*]] = load float* %ptr +; CHECK: %[[argvalue:.*]] = load float, float* %ptr ; CHECK: %[[cast:.*]] = bitcast double* %[[alloca]] to float* -; CHECK: %[[allocavalue:.*]] = load float* %[[cast]] +; CHECK: %[[allocavalue:.*]] = load float, float* %[[cast]] ; CHECK: %[[result:.*]] = phi float [ %[[allocavalue]], %else ], [ %[[argvalue]], %then ] ; CHECK-NEXT: ret float %[[result]] @@ -283,7 +283,7 @@ exit: %phi = phi float* [ %bitcast, %else ], [ %ptr, %then ] - %loaded = load float* %phi, align 4 + %loaded = load float, float* %phi, align 4 ret float %loaded } @@ -292,8 +292,8 @@ ; CHECK-LABEL: @test11( ; CHECK: %[[alloca:.*]] = alloca ; CHECK: %[[cast:.*]] = bitcast double* %[[alloca]] to float* -; CHECK: %[[allocavalue:.*]] = load float* %[[cast]] -; CHECK: %[[argvalue:.*]] = load float* %ptr +; CHECK: %[[allocavalue:.*]] = load float, float* %[[cast]] +; CHECK: %[[argvalue:.*]] = load float, float* %ptr ; CHECK: %[[result:.*]] = select i1 %{{.*}}, float %[[allocavalue]], float %[[argvalue]] ; CHECK-NEXT: ret float %[[result]] @@ -304,7 +304,7 @@ %test = icmp ne i32 %b, 0 %bitcast = bitcast double* %f to float* %select = select i1 %test, float* %bitcast, float* %ptr - %loaded = load float* %select, align 4 + %loaded = load float, float* %select, align 4 ret float %loaded } @@ -320,7 +320,7 @@ %a = alloca i32 store i32 %x, i32* %a %dead = select i1 undef, i32* %a, i32* %p - %load = load i32* %a + %load = load i32, i32* %a ret i32 %load } @@ -342,7 +342,7 @@ br i1 undef, label %loop, label %exit exit: - %load = load i32* %a + %load = load i32, i32* %a ret i32 %load } @@ -376,9 +376,9 @@ exit: %f.phi = phi i32* [ %f, %then ], [ %f.select, %else ] %g.phi = phi i32* [ %g, %then ], [ %ptr, %else ] - %f.loaded = load i32* %f.phi + %f.loaded = load i32, i32* %f.phi %g.select = select i1 %b1, i32* %g, i32* %g.phi - %g.loaded = load i32* %g.select + %g.loaded = load i32, i32* %g.select %result = add i32 %f.loaded, %g.loaded ret i32 %result } @@ -438,26 +438,26 @@ ; steps to only use the not-undef bits, and so we need to at least loosely ; support this.. entry: - %a = alloca i64 - %b = alloca i8 - %ptr = alloca i64* + %a = alloca i64, align 8 + %b = alloca i8, align 8 + %ptr = alloca i64*, align 8 ; CHECK-NOT: alloca %ptr.cast = bitcast i64** %ptr to i8** - store i64 0, i64* %a - store i8 1, i8* %b - store i64* %a, i64** %ptr + store i64 0, i64* %a, align 8 + store i8 1, i8* %b, align 8 + store i64* %a, i64** %ptr, align 8 br i1 %flag, label %if.then, label %if.end if.then: - store i8* %b, i8** %ptr.cast + store i8* %b, i8** %ptr.cast, align 8 br label %if.end ; CHECK-NOT: store ; CHECK: %[[ext:.*]] = zext i8 1 to i64 if.end: - %tmp = load i64** %ptr - %result = load i64* %tmp + %tmp = load i64*, i64** %ptr, align 8 + %result = load i64, i64* %tmp, align 8 ; CHECK-NOT: load ; CHECK: %[[result:.*]] = phi i64 [ %[[ext]], %if.then ], [ 0, %entry ] @@ -488,14 +488,14 @@ else: %a.raw = bitcast i64* %a to i8* - %a.raw.4 = getelementptr i8* %a.raw, i64 4 + %a.raw.4 = getelementptr i8, i8* %a.raw, i64 4 %a.raw.4.f = bitcast i8* %a.raw.4 to float* br label %end ; CHECK: %[[hi_cast:.*]] = bitcast i32 %[[hi]] to float end: %a.phi.f = phi float* [ %a.f, %then ], [ %a.raw.4.f, %else ] - %f = load float* %a.phi.f + %f = load float, float* %a.phi.f ret float %f ; CHECK: %[[phi:.*]] = phi float [ %[[lo_cast]], %then ], [ %[[hi_cast]], %else ] ; CHECK-NOT: load @@ -516,19 +516,19 @@ br i1 %cond, label %then, label %else then: - %0 = getelementptr inbounds [4 x float]* %arr, i64 0, i64 3 + %0 = getelementptr inbounds [4 x float], [4 x float]* %arr, i64 0, i64 3 store float 1.000000e+00, float* %0, align 4 br label %merge else: - %1 = getelementptr inbounds [4 x float]* %arr, i64 0, i64 3 + %1 = getelementptr inbounds [4 x float], [4 x float]* %arr, i64 0, i64 3 store float 2.000000e+00, float* %1, align 4 br label %merge merge: %2 = phi float* [ %0, %then ], [ %1, %else ] store float 0.000000e+00, float* %temp, align 4 - %3 = load float* %2, align 4 + %3 = load float, float* %2, align 4 ret float %3 } @@ -546,7 +546,7 @@ br i1 %cond, label %then, label %else then: - %0 = getelementptr inbounds [4 x float]* %arr, i64 0, i64 3 + %0 = getelementptr inbounds [4 x float], [4 x float]* %arr, i64 0, i64 3 store float 1.000000e+00, float* %0, align 4 br label %then2 @@ -556,14 +556,14 @@ br label %merge else: - %2 = getelementptr inbounds [4 x float]* %arr, i64 0, i64 3 + %2 = getelementptr inbounds [4 x float], [4 x float]* %arr, i64 0, i64 3 store float 3.000000e+00, float* %2, align 4 br label %merge merge: %3 = phi float* [ %1, %then2 ], [ %2, %else ] store float 0.000000e+00, float* %temp, align 4 - %4 = load float* %3, align 4 + %4 = load float, float* %3, align 4 ret float %4 }