[llvm] [RISCV] Take SEW/LMUL into account for value tracking of vsetvli[max] (PR #82163)

Craig Topper via llvm-commits llvm-commits at lists.llvm.org
Mon Feb 26 21:27:36 PST 2024


================
@@ -1576,12 +1577,31 @@ static void computeKnownBitsFromOperator(const Operator *I,
         Known.Zero.setBitsFrom(32);
         break;
       case Intrinsic::riscv_vsetvli:
-      case Intrinsic::riscv_vsetvlimax:
-        // Assume that VL output is <= 65536.
-        // TODO: Take SEW and LMUL into account.
-        if (BitWidth > 17)
-          Known.Zero.setBitsFrom(17);
+      case Intrinsic::riscv_vsetvlimax: {
+        bool HasAVL = II->getIntrinsicID() == Intrinsic::riscv_vsetvli;
+        const ConstantRange &Range =
----------------
topperc wrote:

getVScaleRange doesn't return a reference does it? This works because it does lifetime extension of the temporary, but I don't think there's any reason to use the reference.

https://github.com/llvm/llvm-project/pull/82163


More information about the llvm-commits mailing list