diff --git a/src/singeli/src/base.singeli b/src/singeli/src/base.singeli index 020b8789..0f282ac7 100644 --- a/src/singeli/src/base.singeli +++ b/src/singeli/src/base.singeli @@ -106,10 +106,10 @@ def genchk{B, F} = { def r{T & ~isvec{T}} = 0 r } -def w256i = genchk{w256, {T} => isint{T}}; def w128i = genchk{w128, {T} => isint{T}}; def w64i = genchk{w64, {T} => isint{T}} -def w256s = genchk{w256, {T} => issigned{T}}; def w128s = genchk{w128, {T} => issigned{T}}; def w64s = genchk{w64, {T} => issigned{T}} -def w256u = genchk{w256, {T} => isunsigned{T}}; def w128u = genchk{w128, {T} => isunsigned{T}}; def w64u = genchk{w64, {T} => isunsigned{T}} -def w256f = genchk{w256, {T} => isfloat{T}}; def w128f = genchk{w128, {T} => isfloat{T}}; def w64f = genchk{w64, {T} => isfloat{T}} +def w256i = genchk{w256, isint}; def w128i = genchk{w128, isint}; def w64i = genchk{w64, isint} +def w256s = genchk{w256, issigned}; def w128s = genchk{w128, issigned}; def w64s = genchk{w64, issigned} +def w256u = genchk{w256, isunsigned}; def w128u = genchk{w128, isunsigned}; def w64u = genchk{w64, isunsigned} +def w256f = genchk{w256, isfloat}; def w128f = genchk{w128, isfloat}; def w64f = genchk{w64, isfloat} diff --git a/src/singeli/src/cbqnDefs.singeli b/src/singeli/src/cbqnDefs.singeli index b76ff5f7..8aaf8026 100644 --- a/src/singeli/src/cbqnDefs.singeli +++ b/src/singeli/src/cbqnDefs.singeli @@ -34,8 +34,5 @@ def cbqn_tyArrOffset{} = emit{u64, 'offsetof', 'TyArr', 'a'} def talloc{T, len} = emit{*T, 'TALLOCP', fmt_type{T}, len} def tfree{ptr} = emit{void, 'TFREE', ptr} -def fmt_type{T} = { - def w = match (width{T}) { {_==8}=>'8'; {_==16}=>'16'; {_==32}=>'32'; {_==64}=>'64' } - merge{quality{T}, w} -} +def fmt_type{T} = merge{quality{T}, fmtnat{width{T}}} def fmt_type{T & isptr{T}} = merge{'*',fmt_type{eltype{T}}} diff --git a/src/singeli/src/monarith.singeli b/src/singeli/src/monarith.singeli index 9e1f036b..2ef1b720 100644 --- a/src/singeli/src/monarith.singeli +++ b/src/singeli/src/monarith.singeli @@ -24,4 +24,4 @@ fn absFn{T}(r:*void, x:*void, len:u64) : u64 = { len } -exportT{'simd_abs', each{{T}=>absFn{T}, tup{i8, i16, i32, f64}}} \ No newline at end of file +exportT{'simd_abs', each{absFn, tup{i8, i16, i32, f64}}} \ No newline at end of file diff --git a/src/singeli/src/neon.singeli b/src/singeli/src/neon.singeli index 8aedf7d8..f473fe35 100644 --- a/src/singeli/src/neon.singeli +++ b/src/singeli/src/neon.singeli @@ -2,10 +2,10 @@ def nvec{T} = 0 def nvec{T & isvec{T}} = (width{T}==64) | (width{T}==128) def nvec{T,w} = 0 def nvec{T,w & nvec{T}} = elwidth{T}==w -def nveci = genchk{nvec, {T} => isint{T}} -def nvecs = genchk{nvec, {T} => issigned{T}} -def nvecu = genchk{nvec, {T} => isunsigned{T}} -def nvecf = genchk{nvec, {T} => isfloat{T}} +def nveci = genchk{nvec, isint} +def nvecs = genchk{nvec, issigned} +def nvecu = genchk{nvec, isunsigned} +def nvecf = genchk{nvec, isfloat} def reinterpret{T, v & same{'pointer',typekind{T}} & ktup{v}} = { tmp:T=v }