From 785dedccccbcf482970f1c7455008810d6318164 Mon Sep 17 00:00:00 2001 From: azidar Date: Tue, 3 Mar 2015 13:31:28 -0800 Subject: In-progress, working on inferring types pass --- test/passes/infer-types/primops.fir | 114 ++++++++++++++++++++++++++++++++++-- 1 file changed, 110 insertions(+), 4 deletions(-) (limited to 'test') diff --git a/test/passes/infer-types/primops.fir b/test/passes/infer-types/primops.fir index 244853cf..2a29efbf 100644 --- a/test/passes/infer-types/primops.fir +++ b/test/passes/infer-types/primops.fir @@ -3,8 +3,114 @@ ;CHECK: Infer Types circuit top : module top : - wire io : {input x : UInt, output y : UInt} - node a = io.x -;CHECK: wire io : {input x : UInt@, output y : UInt@}@, output y : UInt@}> -;CHECK: node a = io@, output y : UInt@}>.x@ + wire a : UInt(16) + wire b : UInt(8) + wire c : SInt(16) + wire d : SInt(8) + + ;add + module add : + node w = adduu(a,b) ;CHECK: node w = adduu(a@,b@)@ + node x = addus(a,d) ;CHECK: node x = addus(a@,d@)@ + node y = addsu(c,b) ;CHECK: node y = addsu(c@,b@)@ + node z = addss(c,d) ;CHECK: node z = addss(c@,d@)@ + ;sub + module sub : + node w = subuu(a,b) ;CHECK: node w = subuu(a@,b@)@ + node x = subus(a,d) ;CHECK: node x = subus(a@,d@)@ + node y = subsu(c,b) ;CHECK: node y = subsu(c@,b@)@ + node z = subss(c,d) ;CHECK: node z = subss(c@,d@)@ + ;mul + module mul : + node w = muluu(a,b) ;CHECK: node w = muluu(a@,b@)@ + node x = mulus(a,d) ;CHECK: node x = mulus(a@,d@)@ + node y = mulsu(c,b) ;CHECK: node y = mulsu(c@,b@)@ + node z = mulss(c,d) ;CHECK: node z = mulss(c@,d@)@ + ;div + module div : + node w = divuu(a,b) ;CHECK: node w = divuu(a@,b@)@ + node x = divus(a,d) ;CHECK: node x = divus(a@,d@)@ + node y = divsu(c,b) ;CHECK: node y = divsu(c@,b@)@ + node z = divss(c,d) ;CHECK: node z = divss(c@,d@)@ + ;mod + module mod : + node w = moduu(a,b) ;CHECK: node w = moduu(a@,b@)@ + node x = modus(a,d) ;CHECK: node x = modus(a@,d@)@ + node y = modsu(c,b) ;CHECK: node y = modsu(c@,b@)@ + node z = modss(c,d) ;CHECK: node z = modss(c@,d@)@ + ;rem + module rem : + node w = remuu(a,b) ;CHECK: node w = remuu(a@,b@)@ + node x = remus(a,d) ;CHECK: node x = remus(a@,d@)@ + node y = remsu(c,b) ;CHECK: node y = remsu(c@,b@)@ + node z = remss(c,d) ;CHECK: node z = remss(c@,d@)@ + ;add-mod + module add-mod : + node w = add-moduu(a,b) ;CHECK: node w = add-moduu(a@,b@)@ + node x = add-modus(a,d) ;CHECK: node x = add-modus(a@,d@)@ + node y = add-modsu(c,b) ;CHECK: node y = add-modsu(c@,b@)@ + node z = add-modss(c,d) ;CHECK: node z = add-modss(c@,d@)@ + ;sub-mod + module sub-mod : + node w = sub-moduu(a,b) ;CHECK: node w = sub-moduu(a@,b@)@ + node x = sub-modus(a,d) ;CHECK: node x = sub-modus(a@,d@)@ + node y = sub-modsu(c,b) ;CHECK: node y = sub-modsu(c@,b@)@ + node z = sub-modss(c,d) ;CHECK: node z = sub-modss(c@,d@)@ + ;lt + module lt : + node w = ltuu(a,b) ;CHECK: node w = ltuu(a@,b@)@ + node x = ltus(a,d) ;CHECK: node x = ltus(a@,d@)@ + node y = ltsu(c,b) ;CHECK: node y = ltsu(c@,b@)@ + node z = ltss(c,d) ;CHECK: node z = ltss(c@,d@)@ + ;leq + module leq : + node w = lequu(a,b) ;CHECK: node w = lequu(a@,b@)@ + node x = lequs(a,d) ;CHECK: node x = lequs(a@,d@)@ + node y = leqsu(c,b) ;CHECK: node y = leqsu(c@,b@)@ + node z = leqss(c,d) ;CHECK: node z = leqss(c@,d@)@ + ;gt + module gt : + node w = gtuu(a,b) ;CHECK: node w = gtuu(a@,b@)@ + node x = gtus(a,d) ;CHECK: node x = gtus(a@,d@)@ + node y = gtsu(c,b) ;CHECK: node y = gtsu(c@,b@)@ + node z = gtss(c,d) ;CHECK: node z = gtss(c@,d@)@ + ;geq + module geq : + node w = gequu(a,b) ;CHECK: node w = gequu(a@,b@)@ + node x = gequs(a,d) ;CHECK: node x = gequs(a@,d@)@ + node y = geqsu(c,b) ;CHECK: node y = geqsu(c@,b@)@ + node z = geqss(c,d) ;CHECK: node z = geqss(c@,d@)@ + ;pad + module pad : + node w = paduu(a,b) ;CHECK: node w = paduu(a@,b@)@ + node x = padus(a,d) ;CHECK: node x = padus(a@,d@)@ + node y = padsu(c,b) ;CHECK: node y = padsu(c@,b@)@ + node z = padss(c,d) ;CHECK: node z = padss(c@,d@)@ + ;and + module and : + node w = and(a,b) ;CHECK: node w = and(a@,b@)@ + module or : + node w = or(a,b) ;CHECK: node w = or(a@,b@)@ + module xor : + node w = xor(a,b) ;CHECK: node w = xor(a@,b@)@ + ;concat + node w = concat(a,b) ;CHECK: node w = concat(a@,b@)@ + ;equal + node w = equaluu(a,b) ;CHECK: node w = equaluu(a@,b@)@ + node x = equalus(a,d) ;CHECK: node x = equalus(a@,d@)@ + node y = equalsu(c,b) ;CHECK: node y = equalsu(c@,b@)@ + node z = equalss(c,d) ;CHECK: node z = equalss(c@,d@)@ + ;mux + node w = muxuu(e,a,b) ;CHECK: node w = muxuu(e@,a@,b@)@ + node x = muxus(e,a,d) ;CHECK: node x = muxus(e@,a@,d@)@ + node y = muxsu(e,c,b) ;CHECK: node y = muxsu(e@,c@,b@)@ + node z = muxss(e,c,d) ;CHECK: node z = muxss(e@,c@,d@)@ + ;shl + ;shr + ;bit + ;bits + + + + ;CHECK: Finished Infer Types -- cgit v1.2.3