From bfc44fdaf7a44ac17020f48576b987ae1cf16852 Mon Sep 17 00:00:00 2001 From: azidar Date: Wed, 27 Jan 2016 13:17:33 -0800 Subject: Fixed matching on types for and, or, and xor --- src/main/stanza/primop.stanza | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) (limited to 'src') diff --git a/src/main/stanza/primop.stanza b/src/main/stanza/primop.stanza index 7aba40c7..3d0b06a4 100644 --- a/src/main/stanza/primop.stanza +++ b/src/main/stanza/primop.stanza @@ -142,20 +142,17 @@ public defn set-primop-type (e:DoPrim) -> DoPrim : (t1:UIntType|SIntType) : UIntType(w1()) (t1) : UnknownType() AND-OP : DoPrim{o,a,c,_} $ - match(t1()) : - (t1:UIntType) : UIntType(MAX(w1(),w2())) - (t1:SIntType) : UIntType(MAX(w1(),w2())) - (t1) : UnknownType() + match(t1(),t2()) : + (t1:UIntType|SIntType, t2:UIntType|SIntType) : UIntType(MAX(w1(),w2())) + (t1,t2) : UnknownType() OR-OP : DoPrim{o,a,c,_} $ - match(t1()) : - (t1:UIntType) : UIntType(MAX(w1(),w2())) - (t1:SIntType) : UIntType(MAX(w1(),w2())) - (t1) : UnknownType() + match(t1(),t2()) : + (t1:UIntType|SIntType, t2:UIntType|SIntType) : UIntType(MAX(w1(),w2())) + (t1,t2) : UnknownType() XOR-OP : DoPrim{o,a,c,_} $ - match(t1()) : - (t1:UIntType) : UIntType(MAX(w1(),w2())) - (t1:SIntType) : UIntType(MAX(w1(),w2())) - (t1) : UnknownType() + match(t1(),t2()) : + (t1:UIntType|SIntType, t2:UIntType|SIntType) : UIntType(MAX(w1(),w2())) + (t1,t2) : UnknownType() AND-REDUCE-OP : DoPrim{o,a,c,_} $ match(t1()) : (t1:UIntType|SIntType) : BoolType() -- cgit v1.2.3