diff options
Diffstat (limited to 'llvm/test')
-rw-r--r-- | llvm/test/Transforms/EarlyCSE/AArch64/intrinsics.ll | 2 | ||||
-rw-r--r-- | llvm/test/Transforms/EarlyCSE/AArch64/ldstN.ll | 1 | ||||
-rw-r--r-- | llvm/test/Transforms/EarlyCSE/atomics.ll | 1 | ||||
-rw-r--r-- | llvm/test/Transforms/EarlyCSE/basic.ll | 1 | ||||
-rw-r--r-- | llvm/test/Transforms/EarlyCSE/commute.ll | 1 | ||||
-rw-r--r-- | llvm/test/Transforms/EarlyCSE/conditional.ll | 1 | ||||
-rw-r--r-- | llvm/test/Transforms/EarlyCSE/edge.ll | 1 | ||||
-rw-r--r-- | llvm/test/Transforms/EarlyCSE/fence.ll | 1 | ||||
-rw-r--r-- | llvm/test/Transforms/EarlyCSE/flags.ll | 1 | ||||
-rw-r--r-- | llvm/test/Transforms/EarlyCSE/floatingpoint.ll | 1 | ||||
-rw-r--r-- | llvm/test/Transforms/EarlyCSE/guards.ll | 1 | ||||
-rw-r--r-- | llvm/test/Transforms/EarlyCSE/instsimplify-dom.ll | 1 | ||||
-rw-r--r-- | llvm/test/Transforms/EarlyCSE/invariant-loads.ll | 1 | ||||
-rw-r--r-- | llvm/test/Transforms/EarlyCSE/memoryssa.ll | 34 | ||||
-rw-r--r-- | llvm/test/Transforms/EarlyCSE/read-reg.ll | 1 |
15 files changed, 49 insertions, 0 deletions
diff --git a/llvm/test/Transforms/EarlyCSE/AArch64/intrinsics.ll b/llvm/test/Transforms/EarlyCSE/AArch64/intrinsics.ll index a75a6dc2107..bec6a7539ae 100644 --- a/llvm/test/Transforms/EarlyCSE/AArch64/intrinsics.ll +++ b/llvm/test/Transforms/EarlyCSE/AArch64/intrinsics.ll @@ -1,5 +1,7 @@ ; RUN: opt < %s -S -mtriple=aarch64-none-linux-gnu -mattr=+neon -early-cse | FileCheck %s +; RUN: opt < %s -S -mtriple=aarch64-none-linux-gnu -mattr=+neon -basicaa -early-cse-memssa | FileCheck %s ; RUN: opt < %s -S -mtriple=aarch64-none-linux-gnu -mattr=+neon -passes=early-cse | FileCheck %s +; RUN: opt < %s -S -mtriple=aarch64-none-linux-gnu -mattr=+neon -aa-pipeline=basic-aa -passes=early-cse-memssa | FileCheck %s define <4 x i32> @test_cse(i32* %a, [2 x <4 x i32>] %s.coerce, i32 %n) { entry: diff --git a/llvm/test/Transforms/EarlyCSE/AArch64/ldstN.ll b/llvm/test/Transforms/EarlyCSE/AArch64/ldstN.ll index b457621a9b5..e3c6c8d9417 100644 --- a/llvm/test/Transforms/EarlyCSE/AArch64/ldstN.ll +++ b/llvm/test/Transforms/EarlyCSE/AArch64/ldstN.ll @@ -1,4 +1,5 @@ ; RUN: opt -S -early-cse < %s | FileCheck %s +; RUN: opt -S -basicaa -early-cse-memssa < %s | FileCheck %s target datalayout = "e-m:e-i64:64-i128:128-n32:64-S128" target triple = "aarch64--linux-gnu" diff --git a/llvm/test/Transforms/EarlyCSE/atomics.ll b/llvm/test/Transforms/EarlyCSE/atomics.ll index 21c19cd8e88..7881be7bd9e 100644 --- a/llvm/test/Transforms/EarlyCSE/atomics.ll +++ b/llvm/test/Transforms/EarlyCSE/atomics.ll @@ -1,4 +1,5 @@ ; RUN: opt < %s -S -early-cse | FileCheck %s +; RUN: opt < %s -S -basicaa -early-cse-memssa | FileCheck %s ; CHECK-LABEL: @test12( define i32 @test12(i1 %B, i32* %P1, i32* %P2) { diff --git a/llvm/test/Transforms/EarlyCSE/basic.ll b/llvm/test/Transforms/EarlyCSE/basic.ll index 3c427d899f6..5797475c809 100644 --- a/llvm/test/Transforms/EarlyCSE/basic.ll +++ b/llvm/test/Transforms/EarlyCSE/basic.ll @@ -1,4 +1,5 @@ ; RUN: opt < %s -S -early-cse | FileCheck %s +; RUN: opt < %s -S -basicaa -early-cse-memssa | FileCheck %s ; RUN: opt < %s -S -passes=early-cse | FileCheck %s declare void @llvm.assume(i1) nounwind diff --git a/llvm/test/Transforms/EarlyCSE/commute.ll b/llvm/test/Transforms/EarlyCSE/commute.ll index 985fe04ab3c..45906fed352 100644 --- a/llvm/test/Transforms/EarlyCSE/commute.ll +++ b/llvm/test/Transforms/EarlyCSE/commute.ll @@ -1,4 +1,5 @@ ; RUN: opt < %s -S -early-cse | FileCheck %s +; RUN: opt < %s -S -basicaa -early-cse-memssa | FileCheck %s ; CHECK-LABEL: @test1( define void @test1(float %A, float %B, float* %PA, float* %PB) { diff --git a/llvm/test/Transforms/EarlyCSE/conditional.ll b/llvm/test/Transforms/EarlyCSE/conditional.ll index 5b5a74f112b..d2bab4c9aca 100644 --- a/llvm/test/Transforms/EarlyCSE/conditional.ll +++ b/llvm/test/Transforms/EarlyCSE/conditional.ll @@ -1,4 +1,5 @@ ; RUN: opt -early-cse -S < %s | FileCheck %s +; RUN: opt -basicaa -early-cse-memssa -S < %s | FileCheck %s ; Can we CSE a known condition to a constant? define i1 @test(i8* %p) { diff --git a/llvm/test/Transforms/EarlyCSE/edge.ll b/llvm/test/Transforms/EarlyCSE/edge.ll index 267db679967..dd8c1b7671f 100644 --- a/llvm/test/Transforms/EarlyCSE/edge.ll +++ b/llvm/test/Transforms/EarlyCSE/edge.ll @@ -1,4 +1,5 @@ ; RUN: opt -early-cse -S < %s | FileCheck %s +; RUN: opt -basicaa -early-cse-memssa -S < %s | FileCheck %s ; Same as GVN/edge.ll, but updated to reflect EarlyCSE's less powerful ; implementation. EarlyCSE currently doesn't exploit equality comparisons ; against constants. diff --git a/llvm/test/Transforms/EarlyCSE/fence.ll b/llvm/test/Transforms/EarlyCSE/fence.ll index c6d47e9fb22..5eefe82cd49 100644 --- a/llvm/test/Transforms/EarlyCSE/fence.ll +++ b/llvm/test/Transforms/EarlyCSE/fence.ll @@ -1,4 +1,5 @@ ; RUN: opt -S -early-cse < %s | FileCheck %s +; RUN: opt < %s -S -basicaa -early-cse-memssa | FileCheck %s ; NOTE: This file is testing the current implementation. Some of ; the transforms used as negative tests below would be legal, but ; only if reached through a chain of logic which EarlyCSE is incapable diff --git a/llvm/test/Transforms/EarlyCSE/flags.ll b/llvm/test/Transforms/EarlyCSE/flags.ll index d189012e4be..41ad20cf57c 100644 --- a/llvm/test/Transforms/EarlyCSE/flags.ll +++ b/llvm/test/Transforms/EarlyCSE/flags.ll @@ -1,4 +1,5 @@ ; RUN: opt -early-cse -S < %s | FileCheck %s +; RUN: opt -basicaa -early-cse-memssa -S < %s | FileCheck %s declare void @use(i1) diff --git a/llvm/test/Transforms/EarlyCSE/floatingpoint.ll b/llvm/test/Transforms/EarlyCSE/floatingpoint.ll index 2abecd74b63..d6811a3d648 100644 --- a/llvm/test/Transforms/EarlyCSE/floatingpoint.ll +++ b/llvm/test/Transforms/EarlyCSE/floatingpoint.ll @@ -1,4 +1,5 @@ ; RUN: opt < %s -S -early-cse | FileCheck %s +; RUN: opt < %s -S -basicaa -early-cse-memssa | FileCheck %s ; Ensure we don't simplify away additions vectors of +0.0's (same as scalars). define <4 x float> @fV( <4 x float> %a) { diff --git a/llvm/test/Transforms/EarlyCSE/guards.ll b/llvm/test/Transforms/EarlyCSE/guards.ll index 2cc4753969b..55185f9fe56 100644 --- a/llvm/test/Transforms/EarlyCSE/guards.ll +++ b/llvm/test/Transforms/EarlyCSE/guards.ll @@ -1,4 +1,5 @@ ; RUN: opt -S -early-cse < %s | FileCheck %s +; RUN: opt < %s -S -basicaa -early-cse-memssa | FileCheck %s declare void @llvm.experimental.guard(i1,...) diff --git a/llvm/test/Transforms/EarlyCSE/instsimplify-dom.ll b/llvm/test/Transforms/EarlyCSE/instsimplify-dom.ll index ebdd7f9b419..f41ce27a87e 100644 --- a/llvm/test/Transforms/EarlyCSE/instsimplify-dom.ll +++ b/llvm/test/Transforms/EarlyCSE/instsimplify-dom.ll @@ -1,4 +1,5 @@ ; RUN: opt -early-cse -S < %s | FileCheck %s +; RUN: opt -basicaa -early-cse-memssa -S < %s | FileCheck %s ; PR12231 declare i32 @f() diff --git a/llvm/test/Transforms/EarlyCSE/invariant-loads.ll b/llvm/test/Transforms/EarlyCSE/invariant-loads.ll index 3261b926d88..faa4b539e65 100644 --- a/llvm/test/Transforms/EarlyCSE/invariant-loads.ll +++ b/llvm/test/Transforms/EarlyCSE/invariant-loads.ll @@ -1,4 +1,5 @@ ; RUN: opt -S -early-cse < %s | FileCheck %s +; RUN: opt -S -basicaa -early-cse-memssa < %s | FileCheck %s declare void @clobber_and_use(i32) diff --git a/llvm/test/Transforms/EarlyCSE/memoryssa.ll b/llvm/test/Transforms/EarlyCSE/memoryssa.ll new file mode 100644 index 00000000000..b6d1e4497f4 --- /dev/null +++ b/llvm/test/Transforms/EarlyCSE/memoryssa.ll @@ -0,0 +1,34 @@ +; RUN: opt < %s -S -early-cse | FileCheck %s --check-prefix=CHECK-NOMEMSSA +; RUN: opt < %s -S -basicaa -early-cse-memssa | FileCheck %s +; RUN: opt < %s -S -passes='early-cse' | FileCheck %s --check-prefix=CHECK-NOMEMSSA +; RUN: opt < %s -S -aa-pipeline=basic-aa -passes='early-cse-memssa' | FileCheck %s + +@G1 = global i32 zeroinitializer +@G2 = global i32 zeroinitializer + +;; Simple load value numbering across non-clobbering store. +; CHECK-LABEL: @test1( +; CHECK-NOMEMSSA-LABEL: @test1( +define i32 @test1() { + %V1 = load i32, i32* @G1 + store i32 0, i32* @G2 + %V2 = load i32, i32* @G1 + ; CHECK-NOMEMSSA: sub i32 %V1, %V2 + %Diff = sub i32 %V1, %V2 + ret i32 %Diff + ; CHECK: ret i32 0 +} + +;; Simple dead store elimination across non-clobbering store. +; CHECK-LABEL: @test2( +; CHECK-NOMEMSSA-LABEL: @test2( +define void @test2() { +entry: + %V1 = load i32, i32* @G1 + ; CHECK: store i32 0, i32* @G2 + store i32 0, i32* @G2 + ; CHECK-NOT: store + ; CHECK-NOMEMSSA: store i32 %V1, i32* @G1 + store i32 %V1, i32* @G1 + ret void +} diff --git a/llvm/test/Transforms/EarlyCSE/read-reg.ll b/llvm/test/Transforms/EarlyCSE/read-reg.ll index 83a299912c7..25f5f8019e1 100644 --- a/llvm/test/Transforms/EarlyCSE/read-reg.ll +++ b/llvm/test/Transforms/EarlyCSE/read-reg.ll @@ -1,4 +1,5 @@ ; RUN: opt -S -early-cse < %s | FileCheck %s +; RUN: opt -S -basicaa -early-cse-memssa < %s | FileCheck %s target datalayout = "E-m:e-i64:64-n32:64" target triple = "powerpc64-unknown-linux-gnu" |