swr/rast: Add some instructions to jitter

VPHADDD, PMAXUD, PMINUD

Reviewed-by: Bruce Cherniak <bruce.cherniak@intel.com>
This commit is contained in:
George Kyriazis 2018-03-07 12:00:52 -06:00
parent 4aa03581b5
commit d34edffe48
3 changed files with 15 additions and 0 deletions

View file

@ -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__))

View file

@ -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)
{

View file

@ -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);