summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/swr/rasterizer
diff options
context:
space:
mode:
authorGeorge Kyriazis <[email protected]>2018-03-07 12:00:52 -0600
committerGeorge Kyriazis <[email protected]>2018-04-18 10:51:38 -0500
commitd34edffe48da2a7774303ddf697c42107357a816 (patch)
treed347fdb6b5766e4481d82a04d012a9157c8ee751 /src/gallium/drivers/swr/rasterizer
parent4aa03581b5c3e1c2ca26052c3f599daf485f1dfa (diff)
swr/rast: Add some instructions to jitter
VPHADDD, PMAXUD, PMINUD Reviewed-by: Bruce Cherniak <[email protected]>
Diffstat (limited to 'src/gallium/drivers/swr/rasterizer')
-rw-r--r--src/gallium/drivers/swr/rasterizer/codegen/gen_llvm_ir_macros.py1
-rw-r--r--src/gallium/drivers/swr/rasterizer/jitter/builder_misc.cpp12
-rw-r--r--src/gallium/drivers/swr/rasterizer/jitter/builder_misc.h2
3 files changed, 15 insertions, 0 deletions
diff --git a/src/gallium/drivers/swr/rasterizer/codegen/gen_llvm_ir_macros.py b/src/gallium/drivers/swr/rasterizer/codegen/gen_llvm_ir_macros.py
index aab499b54ad..113c616f6ae 100644
--- a/src/gallium/drivers/swr/rasterizer/codegen/gen_llvm_ir_macros.py
+++ b/src/gallium/drivers/swr/rasterizer/codegen/gen_llvm_ir_macros.py
@@ -71,6 +71,7 @@ intrinsics = [
['VFMADDPS', 'x86_fma_vfmadd_ps_256', ['a', 'b', 'c']],
['VMOVMSKPS', 'x86_avx_movmsk_ps_256', ['a']],
['INTERRUPT', 'x86_int', ['a']],
+ ['VPHADDD', 'x86_avx2_phadd_d', ['a', 'b']],
]
this_dir = os.path.dirname(os.path.abspath(__file__))
diff --git a/src/gallium/drivers/swr/rasterizer/jitter/builder_misc.cpp b/src/gallium/drivers/swr/rasterizer/jitter/builder_misc.cpp
index 0148d8eb8ac..704b0f259c9 100644
--- a/src/gallium/drivers/swr/rasterizer/jitter/builder_misc.cpp
+++ b/src/gallium/drivers/swr/rasterizer/jitter/builder_misc.cpp
@@ -756,6 +756,18 @@ namespace SwrJit
return SELECT(cmp, a, b);
}
+ Value *Builder::PMAXUD(Value* a, Value* b)
+ {
+ Value* cmp = ICMP_UGT(a, b);
+ return SELECT(cmp, a, b);
+ }
+
+ Value *Builder::PMINUD(Value* a, Value* b)
+ {
+ Value* cmp = ICMP_ULT(a, b);
+ return SELECT(cmp, a, b);
+ }
+
// Helper function to create alloca in entry block of function
Value* Builder::CreateEntryAlloca(Function* pFunc, Type* pType)
{
diff --git a/src/gallium/drivers/swr/rasterizer/jitter/builder_misc.h b/src/gallium/drivers/swr/rasterizer/jitter/builder_misc.h
index 5195678b4c4..9660bc65f02 100644
--- a/src/gallium/drivers/swr/rasterizer/jitter/builder_misc.h
+++ b/src/gallium/drivers/swr/rasterizer/jitter/builder_misc.h
@@ -128,6 +128,8 @@ Value *CVTPH2PS(Value* a, const llvm::Twine& name = "");
Value *CVTPS2PH(Value* a, Value* rounding);
Value *PMAXSD(Value* a, Value* b);
Value *PMINSD(Value* a, Value* b);
+Value *PMAXUD(Value* a, Value* b);
+Value *PMINUD(Value* a, Value* b);
Value *VABSPS(Value* a);
Value *FMADDPS(Value* a, Value* b, Value* c);