[llvm] 5dfd523 - [InstCombine] Adding testcase for Z / (1.0 / Y) => (Y * Z); NFC

Sanjay Patel via llvm-commits llvm-commits at lists.llvm.org
Wed Jan 8 07:36:14 PST 2020


Author: Sanjay Patel
Date: 2020-01-08T10:33:44-05:00
New Revision: 5dfd52398f5c1b67024106febdc68e6b12f8ad37

URL: https://github.com/llvm/llvm-project/commit/5dfd52398f5c1b67024106febdc68e6b12f8ad37
DIFF: https://github.com/llvm/llvm-project/commit/5dfd52398f5c1b67024106febdc68e6b12f8ad37.diff

LOG: [InstCombine] Adding testcase for Z / (1.0 / Y) => (Y * Z); NFC

The added testcase shows the current transformation for the operation
Z / (1.0 / Y), which remains unchanged. This will be updated to align
with the transformed code (Y * Z) with D72319.

The existing transformation Z / (X / Y) => (Y * Z) / X is not handling
this case as there are multiple uses for (1.0 / Y) in this testcase.

Patch by: @raghesh (Raghesh Aloor)

Differential Revision: https://reviews.llvm.org/D72388

Added: 
    

Modified: 
    llvm/test/Transforms/InstCombine/fdiv.ll

Removed: 
    


################################################################################
diff  --git a/llvm/test/Transforms/InstCombine/fdiv.ll b/llvm/test/Transforms/InstCombine/fdiv.ll
index 777bdca87e6b..8bfeb67f6e06 100644
--- a/llvm/test/Transforms/InstCombine/fdiv.ll
+++ b/llvm/test/Transforms/InstCombine/fdiv.ll
@@ -187,6 +187,21 @@ define float @div_with_div_denominator_extra_use(float %x, float %y, float %z) {
   ret float %div2
 }
 
+; Z / (1.0 / Y)
+
+define float @div_with_div_denominator_with_one_as_numerator_extra_use(float %x, float %y, float %z) {
+; CHECK-LABEL: @div_with_div_denominator_with_one_as_numerator_extra_use(
+; CHECK-NEXT:    [[DIV1:%.*]] = fdiv float 1.000000e+00, [[Y:%.*]]
+; CHECK-NEXT:    [[DIV2:%.*]] = fdiv fast float [[Z:%.*]], [[DIV1]]
+; CHECK-NEXT:    call void @use_f32(float [[DIV1]])
+; CHECK-NEXT:    ret float [[DIV2]]
+;
+  %div1 = fdiv float 1.0, %y
+  %div2 = fdiv fast float %z, %div1
+  call void @use_f32(float %div1)
+  ret float %div2
+}
+
 define float @fneg_fneg(float %x, float %y) {
 ; CHECK-LABEL: @fneg_fneg(
 ; CHECK-NEXT:    [[DIV:%.*]] = fdiv float [[X:%.*]], [[Y:%.*]]


        


More information about the llvm-commits mailing list