Add clmul.singeli

This commit is contained in:
Marshall Lochbaum 2023-07-19 09:36:50 -04:00
parent 301a23fb1f
commit 77188b8e73
4 changed files with 8 additions and 16 deletions

View File

@ -209,6 +209,7 @@ def extract{...x} = assert{'extract not supported', show{...x}}
def abs{...x} = assert{'abs not supported', show{...x}}
def homBlend{...x} = assert{'homBlend not supported', show{...x}}
def zip{...x} = assert{'zip not supported', show{...x}}
def clmul{...x} = assert{'clmul not supported', show{...x}}
def andnot{a, b & anyNum{a} & anyNum{b}} = a & ~b
oper &~ andnot infix none 35

View File

@ -0,0 +1,2 @@
def clmul{a:T, b:T, imm & w128i{T}} = emit{T, '_mm_clmulepi64_si128', a, b, imm}
def clmul{a, b} = clmul{a, b, 0}

View File

@ -1,7 +1,7 @@
include './base'
include './sse'
include './clmul'
def clmul{a:T, b:T, imm & w128i{T}} = emit{T, '_mm_clmulepi64_si128', a, b, imm}
def unpacklo{a:T,b:T & T==[2]u64} = emit{T, '_mm_unpacklo_epi64', a, b}
fn clmul_scan_ne_any(x:*void, r:*void, init:u64, words:u64, mark:u64) : void = {

View File

@ -1,19 +1,8 @@
include './base'
if (hasarch{'BMI2'}) {
include './bmi2'
}
if (hasarch{'X86_64'}) {
include './sse'
}
if (hasarch{'PCLMUL'}) {
def clmul{a:T, b:T, imm & w128i{T}} = emit{T, '_mm_clmulepi64_si128', a, b, imm}
} else {
def clmul{...x} = assert{'clmul not supported', show{...x}}
}
if (hasarch{'AVX2'}) {
include './avx'
include './avx2'
}
if (hasarch{'X86_64'}) include './sse'
if (hasarch{'PCLMUL'}) include './clmul'
if (hasarch{'AVX2'}) { include './avx'; include './avx2' }
if (hasarch{'BMI2'}) include './bmi2'
if (hasarch{'AVX512F'}) {
local def mti{s,T} = merge{'_mm512_',s,'_epi',fmtnat{elwidth{T}}}
def load{a:T, n & 512==width{eltype{T}}} = emit{eltype{T}, '_mm512_loadu_si512', a+n}