diff options
| author | Sanjay Patel <spatel@rotateright.com> | 2018-03-08 15:46:38 +0000 |
|---|---|---|
| committer | Sanjay Patel <spatel@rotateright.com> | 2018-03-08 15:46:38 +0000 |
| commit | faf9b0f32295decb3d1f4c02252bae72ce6a9a7a (patch) | |
| tree | 333459832bb6b55ae912061fe8dc5f6707738225 /llvm/test/Transforms | |
| parent | b9923f049e3641ab57cd29ce90a31916740c1534 (diff) | |
| download | bcm5719-llvm-faf9b0f32295decb3d1f4c02252bae72ce6a9a7a.tar.gz bcm5719-llvm-faf9b0f32295decb3d1f4c02252bae72ce6a9a7a.zip | |
[InstCombine] regenerate checks; NFC
We may not need any of these tests after rL327012, but leaving
them here for now until that's confirmed.
llvm-svn: 327014
Diffstat (limited to 'llvm/test/Transforms')
| -rw-r--r-- | llvm/test/Transforms/InstCombine/fsub.ll | 56 |
1 files changed, 33 insertions, 23 deletions
diff --git a/llvm/test/Transforms/InstCombine/fsub.ll b/llvm/test/Transforms/InstCombine/fsub.ll index 6b62f5dd7e3..7c44d2f2b04 100644 --- a/llvm/test/Transforms/InstCombine/fsub.ll +++ b/llvm/test/Transforms/InstCombine/fsub.ll @@ -1,67 +1,77 @@ +; NOTE: Assertions have been autogenerated by utils/update_test_checks.py ; RUN: opt < %s -instcombine -S | FileCheck %s ; PR4374 + define float @test1(float %a, float %b) nounwind { +; CHECK-LABEL: @test1( +; CHECK-NEXT: [[T1:%.*]] = fsub float [[A:%.*]], [[B:%.*]] +; CHECK-NEXT: [[T2:%.*]] = fsub float -0.000000e+00, [[T1]] +; CHECK-NEXT: ret float [[T2]] +; %t1 = fsub float %a, %b %t2 = fsub float -0.000000e+00, %t1 - -; CHECK: %t1 = fsub float %a, %b -; CHECK-NEXT: %t2 = fsub float -0.000000e+00, %t1 - ret float %t2 } ; <rdar://problem/7530098> + define double @test2(double %x, double %y) nounwind { +; CHECK-LABEL: @test2( +; CHECK-NEXT: [[T1:%.*]] = fadd double [[X:%.*]], [[Y:%.*]] +; CHECK-NEXT: [[T2:%.*]] = fsub double [[X]], [[T1]] +; CHECK-NEXT: ret double [[T2]] +; %t1 = fadd double %x, %y %t2 = fsub double %x, %t1 - -; CHECK: %t1 = fadd double %x, %y -; CHECK-NEXT: %t2 = fsub double %x, %t1 - ret double %t2 } -; CHECK-LABEL: @fsub_undef( -; CHECK: %sub = fsub float %val, undef define float @fsub_undef(float %val) { -bb: +; CHECK-LABEL: @fsub_undef( +; CHECK-NEXT: [[SUB:%.*]] = fsub float [[VAL:%.*]], undef +; CHECK-NEXT: ret float [[SUB]] +; %sub = fsub float %val, undef ret float %sub } ; XXX - Why doesn't this fold to undef? -; CHECK-LABEL: @fsub_fast_undef( -; CHCK: %sub = fsub fast float %val, undef + define float @fsub_fast_undef(float %val) { -bb: +; CHECK-LABEL: @fsub_fast_undef( +; CHECK-NEXT: [[SUB:%.*]] = fsub fast float [[VAL:%.*]], undef +; CHECK-NEXT: ret float [[SUB]] +; %sub = fsub fast float %val, undef ret float %sub } -; CHECK-LABEL: @fneg_undef( -; CHECK: ret float fsub (float -0.000000e+00, float undef) define float @fneg_undef(float %val) { -bb: +; CHECK-LABEL: @fneg_undef( +; CHECK-NEXT: ret float fsub (float -0.000000e+00, float undef) +; %sub = fsub float -0.0, undef ret float %sub } -; CHECK-LABEL: @fneg_fast_undef( -; CHECK: ret float fsub (float -0.000000e+00, float undef) define float @fneg_fast_undef(float %val) { -bb: +; CHECK-LABEL: @fneg_fast_undef( +; CHECK-NEXT: ret float fsub (float -0.000000e+00, float undef) +; %sub = fsub fast float -0.0, undef ret float %sub } ; This folds to a constant expression, which produced 0 instructions ; contrary to the expected one for negation. -; CHECK-LABEL: @inconsistent_numbers_fsub_undef( -; CHECK: ret float fsub (float -0.000000e+00, float undef) + define float @inconsistent_numbers_fsub_undef(float %val) { -bb: +; CHECK-LABEL: @inconsistent_numbers_fsub_undef( +; CHECK-NEXT: ret float fsub (float -0.000000e+00, float undef) +; %sub0 = fsub fast float %val, undef %sub1 = fsub fast float %sub0, %val ret float %sub1 } + |

