Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8281453

New optimization: convert ~x into -1-x when ~x is used in an arithmetic expression

    XMLWordPrintable

Details

    • b19
    • generic
    • generic

    Description

      Similar to (~x)+c -> (c-1)-x and ~(x+c) -> (-c-1)-x in JDK-8279607, we can also introduce similar optimizations for subtraction, c-(~x) -> x+(c+1) and ~(c-x) -> x+(-c-1).

      To generalize, I convert ~x into -1-x when ~x is used in an arithmetic expression. For example, c-(~x) will be converted into c-(-1-x) which will match other pattern and will be transformed again in next iteration and finally become x+(c+1).

      The results of the microbenchmark are as follows:

      Baseline:
      Benchmark Mode Cnt Score Error Units
      NotOpTransformation.baselineInt avgt 60 0.439 ± 0.001 ns/op
      NotOpTransformation.baselineLong avgt 60 0.439 ± 0.001 ns/op
      NotOpTransformation.testInt1 avgt 60 0.603 ± 0.001 ns/op
      NotOpTransformation.testInt2 avgt 60 0.603 ± 0.001 ns/op
      NotOpTransformation.testLong1 avgt 60 0.658 ± 0.001 ns/op
      NotOpTransformation.testLong2 avgt 60 0.658 ± 0.001 ns/op

      Patch:
      Benchmark Mode Cnt Score Error Units
      NotOpTransformation.baselineInt avgt 60 0.439 ± 0.001 ns/op
      NotOpTransformation.baselineLong avgt 60 0.439 ± 0.001 ns/op
      NotOpTransformation.testInt1 avgt 60 0.329 ± 0.001 ns/op
      NotOpTransformation.testInt2 avgt 60 0.329 ± 0.001 ns/op
      NotOpTransformation.testLong1 avgt 60 0.329 ± 0.001 ns/op
      NotOpTransformation.testLong2 avgt 60 0.329 ± 0.001 ns/op

      Attachments

        Issue Links

          Activity

            People

              kvn Vladimir Kozlov
              webbuggrp Webbug Group
              Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: