let (Just ret) = lookup str conds
return $ ret
+hlcondition :: Parser (Word32,Word32)
+hlcondition = try(do {
+ c1 <- condition;
+ return $ (0,c1)
+ }) <|> do {
+ hl <- highlow; c <- condition;
+ return $ (hl,c)
+ } <?> "DO NOT USE ldil (you can skip 'l' [low], since it is default)"
+
carry :: Parser Word32
carry = do { char 'c'; return 1} <|> do {string ""; return 0}
csv2i_cd dict f = f<$>carry<*>updateDisable<*>condition<%>reg<.>reg<.>(iLit5 dict)
csv2i_d dict f = f<$>updateDisable<*>condition<%>reg<.>reg<.>(iLit5 dict)
csv2i_scd dict f = f<$>sign<*>carry<*>updateDisable<*>condition<%>reg<.>reg<.>(iLit12 dict)
-csv2i_sl dict f = f<$>sign<*>highlow<*>condition<%>reg<.>(iLit16 dict)
+csv2i_sl dict f = f<$>sign<*>hlcondition<%>reg<.>(iLit16 dict)
csv2i_lfd dict f = f<$>highlow<*>fill<*>updateDisable<*>condition<%>reg<.>(iLit16 dict)
csv3_cd f = f<$>carry<*>updateDisable<*>condition<%>reg<.>reg<.>reg
csv3_d f = f<$>updateDisable<*>condition<%>reg<.>reg<.>reg
aformi' opcd s c d cond rd ra = aformi opcd s c d cond rd ra 0
lformi opcd hl f d cond rd imm = pack [(cond,28),(opcd,23),(rd,19),(imm,3),(hl,2),(f,1),(d,0)]
-lformi' opcd s hl cond rd imm = lformi opcd s hl 0 cond rd imm
+lformi' opcd s (hl,cond) rd imm = lformi opcd s hl 0 cond rd imm
lformi'not opcd cond rd = lformi opcd 0 1 0 cond rd 0xefffffff
mformi opcd cond rd disp ra = pack [(cond,28),(opcd,23),(rd,19),(ra,15),(disp,0)]