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

C2: Make the type of count leading/trailing zero nodes more precise

XMLWordPrintable

      The result of count leading/trailing zeros is always non-negative, and the maximum value is integer type's size in bits. In previous versions, when C2 can not know the operand value of a CLZ/CTZ node at compile time, it will generate a full-width integer type for its result. This can significantly affect the efficiency of code in some cases.

      This patch makes the type of CLZ/CTZ nodes more precise, to make C2 generate better code. For example, the following implementation runs ~115% faster on x86-64 with this patch:

      ```java
      public static int numberOfNibbles(int i) {
        int mag = Integer.SIZE - Integer.numberOfLeadingZeros(i);
        return Math.max((mag + 3) / 4, 1);
      }
      ```

            Unassigned Unassigned
            qxing Qizheng Xing
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated: