diff options
Diffstat (limited to 'llvm')
4 files changed, 60 insertions, 47 deletions
diff --git a/llvm/test/Transforms/Reassociate/factorize-again.ll b/llvm/test/Transforms/Reassociate/factorize-again.ll index 87e77945dfb..e50860b1867 100644 --- a/llvm/test/Transforms/Reassociate/factorize-again.ll +++ b/llvm/test/Transforms/Reassociate/factorize-again.ll @@ -1,10 +1,20 @@  ; RUN: opt -S -reassociate < %s | FileCheck %s -; CHECK-LABEL: main -; CHECK: %2 = fsub -; CHECK: %3 = fsub -; CHECK: fadd fast float %3, %2  define void @main(float, float) { +; CHECK-LABEL: @main( +; CHECK-NEXT:  wrapper_entry: +; CHECK-NEXT:    [[TMP2:%.*]] = fsub float undef, %0 +; CHECK-NEXT:    [[TMP3:%.*]] = fsub float undef, %1 +; CHECK-NEXT:    [[TMP4:%.*]] = call float @llvm.rsqrt.f32(float undef) +; CHECK-NEXT:    [[REASS_ADD2:%.*]] = fadd fast float [[TMP3]], [[TMP2]] +; CHECK-NEXT:    [[REASS_MUL3:%.*]] = fmul fast float [[REASS_ADD2]], undef +; CHECK-NEXT:    [[REASS_ADD1:%.*]] = fadd fast float [[REASS_MUL3]], fmul (float undef, float undef) +; CHECK-NEXT:    [[REASS_MUL:%.*]] = fmul fast float [[REASS_ADD1]], [[TMP4]] +; CHECK-NEXT:    [[TMP5:%.*]] = call float @foo2(float [[REASS_MUL]], float 0.000000e+00) +; CHECK-NEXT:    [[MUL36:%.*]] = fmul fast float [[TMP5]], 1.500000e+00 +; CHECK-NEXT:    call void @foo1(i32 4, float [[MUL36]]) +; CHECK-NEXT:    ret void +;  wrapper_entry:    %2 = fsub float undef, %0    %3 = fsub float undef, %1 diff --git a/llvm/test/Transforms/Reassociate/fast-AgressiveSubMove.ll b/llvm/test/Transforms/Reassociate/fast-AgressiveSubMove.ll index 0c28ed16491..6d9df1fd99d 100644 --- a/llvm/test/Transforms/Reassociate/fast-AgressiveSubMove.ll +++ b/llvm/test/Transforms/Reassociate/fast-AgressiveSubMove.ll @@ -1,12 +1,12 @@  ; RUN: opt < %s -reassociate -S | FileCheck %s  define float @test1(float %A) { -; CHECK-LABEL: test1 -; CHECK-NEXT: %X = fadd float %A, 1.000000e+00 -; CHECK-NEXT: %Y = fadd float %A, 1.000000e+00 -; CHECK-NEXT: %r = fsub float %X, %Y -; CHECK-NEXT: ret float %r - +; CHECK-LABEL: @test1( +; CHECK-NEXT:    [[X:%.*]] = fadd float %A, 1.000000e+00 +; CHECK-NEXT:    [[Y:%.*]] = fadd float %A, 1.000000e+00 +; CHECK-NEXT:    [[R:%.*]] = fsub float [[X]], [[Y]] +; CHECK-NEXT:    ret float [[R]] +;    %X = fadd float %A, 1.000000e+00    %Y = fadd float %A, 1.000000e+00    %r = fsub float %X, %Y @@ -14,11 +14,12 @@ define float @test1(float %A) {  }  define float @test2(float %A) { -; CHECK-LABEL: test2 -; CHECK-NEXT: ret float 0.000000e+00 - +; CHECK-LABEL: @test2( +; CHECK-NEXT:    ret float 0.000000e+00 +;    %X = fadd fast float 1.000000e+00, %A    %Y = fadd fast float 1.000000e+00, %A    %r = fsub fast float %X, %Y    ret float %r  } + diff --git a/llvm/test/Transforms/Reassociate/fast-MissedTree.ll b/llvm/test/Transforms/Reassociate/fast-MissedTree.ll index 689fd6cad74..8b113a04d81 100644 --- a/llvm/test/Transforms/Reassociate/fast-MissedTree.ll +++ b/llvm/test/Transforms/Reassociate/fast-MissedTree.ll @@ -1,11 +1,13 @@  ; RUN: opt < %s -reassociate -instcombine -S | FileCheck %s  define float @test1(float %A, float %B) { -; CHECK-LABEL: test1 -; CHECK: %Z = fadd fast float %A, %B -; CHECK: ret float %Z -	%W = fadd fast float %B, -5.0 -	%Y = fadd fast float %A, 5.0 -	%Z = fadd fast float %W, %Y -	ret float %Z +; CHECK-LABEL: @test1( +; CHECK-NEXT:    [[Z:%.*]] = fadd fast float %A, %B +; CHECK-NEXT:    ret float [[Z]] +; +  %W = fadd fast float %B, -5.0 +  %Y = fadd fast float %A, 5.0 +  %Z = fadd fast float %W, %Y +  ret float %Z  } + diff --git a/llvm/test/Transforms/Reassociate/fast-SubReassociate.ll b/llvm/test/Transforms/Reassociate/fast-SubReassociate.ll index db4191a4fa1..bcedcf0aaaa 100644 --- a/llvm/test/Transforms/Reassociate/fast-SubReassociate.ll +++ b/llvm/test/Transforms/Reassociate/fast-SubReassociate.ll @@ -1,13 +1,13 @@  ; RUN: opt < %s -reassociate -constprop -instcombine -S | FileCheck %s  define float @test1(float %A, float %B) { -; CHECK-LABEL: test1 -; CHECK-NEXT: %W = fadd float %B, 5.000000e+00 -; CHECK-NEXT: %X = fadd float %A, -7.000000e+00 -; CHECK-NEXT: %Y = fsub float %X, %W -; CHECK-NEXT: %Z = fadd float %Y, 1.200000e+01 -; CHECK-NEXT: ret float %Z - +; CHECK-LABEL: @test1( +; CHECK-NEXT:    [[W:%.*]] = fadd float %B, 5.000000e+00 +; CHECK-NEXT:    [[X:%.*]] = fadd float %A, -7.000000e+00 +; CHECK-NEXT:    [[Y:%.*]] = fsub float [[X]], [[W]] +; CHECK-NEXT:    [[Z:%.*]] = fadd float [[Y]], 1.200000e+01 +; CHECK-NEXT:    ret float [[Z]] +;    %W = fadd float 5.0, %B    %X = fadd float -7.0, %A    %Y = fsub float %X, %W @@ -17,10 +17,10 @@ define float @test1(float %A, float %B) {  ; With sub reassociation, constant folding can eliminate all of the constants.  define float @test2(float %A, float %B) { -; CHECK-LABEL: test2 -; CHECK-NEXT: %Z = fsub fast float %A, %B -; CHECK-NEXT: ret float %Z - +; CHECK-LABEL: @test2( +; CHECK-NEXT:    [[Z:%.*]] = fsub fast float %A, %B +; CHECK-NEXT:    ret float [[Z]] +;    %W = fadd fast float %B, 5.000000e+00    %X = fadd fast float %A, -7.000000e+00    %Y = fsub fast float %X, %W @@ -30,14 +30,14 @@ define float @test2(float %A, float %B) {  }  define float @test3(float %A, float %B, float %C, float %D) { -; CHECK-LABEL: test3 -; CHECK-NEXT: %M = fadd float %A, 1.200000e+01 -; CHECK-NEXT: %N = fadd float %M, %B -; CHECK-NEXT: %O = fadd float %N, %C -; CHECK-NEXT: %P = fsub float %D, %O -; CHECK-NEXT: %Q = fadd float %P, 1.200000e+01 -; CHECK-NEXT: ret float %Q - +; CHECK-LABEL: @test3( +; CHECK-NEXT:    [[M:%.*]] = fadd float %A, 1.200000e+01 +; CHECK-NEXT:    [[N:%.*]] = fadd float [[M]], %B +; CHECK-NEXT:    [[O:%.*]] = fadd float [[N]], %C +; CHECK-NEXT:    [[P:%.*]] = fsub float %D, [[O]] +; CHECK-NEXT:    [[Q:%.*]] = fadd float [[P]], 1.200000e+01 +; CHECK-NEXT:    ret float [[Q]] +;    %M = fadd float %A, 1.200000e+01    %N = fadd float %M, %B    %O = fadd float %N, %C @@ -48,19 +48,18 @@ define float @test3(float %A, float %B, float %C, float %D) {  ; With sub reassociation, constant folding can eliminate the two 12 constants.  define float @test4(float %A, float %B, float %C, float %D) { -; CHECK-LABEL: test4 -; CHECK-NEXT: %B.neg = fsub fast float -0.000000e+00, %B -; CHECK-NEXT: %O.neg = fsub fast float %B.neg, %A -; CHECK-NEXT: %P = fsub fast float %O.neg, %C -; CHECK-NEXT: %Q = fadd fast float %P, %D -; CHECK-NEXT: ret float %Q -  ; FIXME: InstCombine should be able to get us to the following:  ; %sum = fadd fast float %B, %A  ; %sum1 = fadd fast float %sum, %C  ; %Q = fsub fast float %D, %sum1  ; ret i32 %Q - +; CHECK-LABEL: @test4( +; CHECK-NEXT:    [[B_NEG:%.*]] = fsub fast float -0.000000e+00, %B +; CHECK-NEXT:    [[O_NEG:%.*]] = fsub fast float [[B_NEG]], %A +; CHECK-NEXT:    [[P:%.*]] = fsub fast float [[O_NEG]], %C +; CHECK-NEXT:    [[Q:%.*]] = fadd fast float [[P]], %D +; CHECK-NEXT:    ret float [[Q]] +;    %M = fadd fast float 1.200000e+01, %A    %N = fadd fast float %M, %B    %O = fadd fast float %N, %C @@ -68,3 +67,4 @@ define float @test4(float %A, float %B, float %C, float %D) {    %Q = fadd fast float 1.200000e+01, %P    ret float %Q  } +  | 

