Mesa (master): swr/rast: Add VPOPCNT

George Kyriazis gkyriazis at kemper.freedesktop.org
Fri Mar 9 15:46:37 UTC 2018


Module: Mesa
Branch: master
Commit: e0a4a258297b12cb5c6ee4bb57d4372ecf85367e
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=e0a4a258297b12cb5c6ee4bb57d4372ecf85367e

Author: George Kyriazis <george.kyriazis at intel.com>
Date:   Fri Mar  2 00:54:38 2018 -0600

swr/rast: Add VPOPCNT

Supports popcnt on vector masks (e.g. <8 x i1>)

Reviewed-by: Bruce Cherniak <bruce.cherniak at intel.com>

---

 src/gallium/drivers/swr/rasterizer/jitter/builder_misc.cpp | 8 ++++++++
 src/gallium/drivers/swr/rasterizer/jitter/builder_misc.h   | 1 +
 2 files changed, 9 insertions(+)

diff --git a/src/gallium/drivers/swr/rasterizer/jitter/builder_misc.cpp b/src/gallium/drivers/swr/rasterizer/jitter/builder_misc.cpp
index 0738d02332..0148d8eb8a 100644
--- a/src/gallium/drivers/swr/rasterizer/jitter/builder_misc.cpp
+++ b/src/gallium/drivers/swr/rasterizer/jitter/builder_misc.cpp
@@ -836,6 +836,14 @@ namespace SwrJit
     }
 
     //////////////////////////////////////////////////////////////////////////
+    /// @brief pop count on vector mask (e.g. <8 x i1>)
+    Value* Builder::VPOPCNT(Value* a)
+    {
+        Value* b = BITCAST(VMASK(a), mSimdFP32Ty);
+        return POPCNT(VMOVMSKPS(b));
+    }
+
+    //////////////////////////////////////////////////////////////////////////
     /// @brief C functions called by LLVM IR
     //////////////////////////////////////////////////////////////////////////
 
diff --git a/src/gallium/drivers/swr/rasterizer/jitter/builder_misc.h b/src/gallium/drivers/swr/rasterizer/jitter/builder_misc.h
index 50d7a1e71f..5195678b4c 100644
--- a/src/gallium/drivers/swr/rasterizer/jitter/builder_misc.h
+++ b/src/gallium/drivers/swr/rasterizer/jitter/builder_misc.h
@@ -148,6 +148,7 @@ CallInst *PRINT(const std::string &printStr);
 CallInst *PRINT(const std::string &printStr,const std::initializer_list<Value*> &printArgs);
 
 Value* POPCNT(Value* a);
+Value* VPOPCNT(Value* a);
 
 Value* DEBUGTRAP();
 Value* INT3() { return DEBUGTRAP(); }




More information about the mesa-commit mailing list