@@ -23,17 +23,18 @@ pub enum MIRInstruction {
2323 UpcastFloat { val : MIRFloatValue , size : usize } ,
2424
2525 // Arithmetrics
26- IntegerAdd { signed : bool , left : MIRIntValue , right : MIRIntValue } ,
27- IntegerSub { signed : bool , left : MIRIntValue , right : MIRIntValue } ,
28- IntegerMul { signed : bool , left : MIRIntValue , right : MIRIntValue } ,
29- IntegerDiv { signed : bool , left : MIRIntValue , right : MIRIntValue } ,
30- IntegerMod { signed : bool , left : MIRIntValue , right : MIRIntValue } ,
26+ IntegerAdd { signed : bool , fast : bool , left : MIRIntValue , right : MIRIntValue } ,
27+ IntegerSub { signed : bool , fast : bool , left : MIRIntValue , right : MIRIntValue } ,
28+ IntegerMul { signed : bool , fast : bool , left : MIRIntValue , right : MIRIntValue } ,
29+ IntegerDiv { signed : bool , fast : bool , left : MIRIntValue , right : MIRIntValue } ,
30+ IntegerMod { signed : bool , fast : bool , left : MIRIntValue , right : MIRIntValue } ,
3131 IntegerNeg { val : MIRIntValue } ,
3232
33- FloatAdd { signed : bool , left : MIRFloatValue , right : MIRFloatValue } ,
34- FloatSub { signed : bool , left : MIRFloatValue , right : MIRFloatValue } ,
35- FloatMul { signed : bool , left : MIRFloatValue , right : MIRFloatValue } ,
36- FloatDiv { signed : bool , left : MIRFloatValue , right : MIRFloatValue } ,
33+ FloatAdd { signed : bool , fast : bool , left : MIRFloatValue , right : MIRFloatValue } ,
34+ FloatSub { signed : bool , fast : bool , left : MIRFloatValue , right : MIRFloatValue } ,
35+ FloatMul { signed : bool , fast : bool , left : MIRFloatValue , right : MIRFloatValue } ,
36+ FloatDiv { signed : bool , fast : bool , left : MIRFloatValue , right : MIRFloatValue } ,
37+ FloatMod { signed : bool , fast : bool , left : MIRFloatValue , right : MIRFloatValue } ,
3738 FloatNeg { val : MIRFloatValue } ,
3839
3940 // Bitwise (int typed)
@@ -138,17 +139,17 @@ impl MIRInstruction {
138139 Self :: DowncastFloat { val, size } => return Type :: GenericLowered ( RawType :: Floating ( * size, val. signed ) ) ,
139140 Self :: UpcastFloat { val, size } => return Type :: GenericLowered ( RawType :: Floating ( * size, val. signed ) ) ,
140141
141- Self :: IntegerAdd { signed, left, right : _ } => return Type :: GenericLowered ( RawType :: Integer ( left. size , * signed) ) ,
142- Self :: IntegerSub { signed, left, right : _ } => return Type :: GenericLowered ( RawType :: Integer ( left. size , * signed) ) ,
143- Self :: IntegerMul { signed, left, right : _ } => return Type :: GenericLowered ( RawType :: Integer ( left. size , * signed) ) ,
144- Self :: IntegerDiv { signed, left, right : _ } => return Type :: GenericLowered ( RawType :: Integer ( left. size , * signed) ) ,
145- Self :: IntegerMod { signed, left, right : _ } => return Type :: GenericLowered ( RawType :: Integer ( left. size , * signed) ) ,
142+ Self :: IntegerAdd { signed, fast : _ , left, right : _ } => return Type :: GenericLowered ( RawType :: Integer ( left. size , * signed) ) ,
143+ Self :: IntegerSub { signed, fast : _ , left, right : _ } => return Type :: GenericLowered ( RawType :: Integer ( left. size , * signed) ) ,
144+ Self :: IntegerMul { signed, fast : _ , left, right : _ } => return Type :: GenericLowered ( RawType :: Integer ( left. size , * signed) ) ,
145+ Self :: IntegerDiv { signed, fast : _ , left, right : _ } => return Type :: GenericLowered ( RawType :: Integer ( left. size , * signed) ) ,
146+ Self :: IntegerMod { signed, fast : _ , left, right : _ } => return Type :: GenericLowered ( RawType :: Integer ( left. size , * signed) ) ,
146147 Self :: IntegerNeg { val } => return Type :: GenericLowered ( RawType :: Integer ( val. size , true ) ) ,
147148
148- Self :: FloatAdd { signed, left, right : _ } => return Type :: GenericLowered ( RawType :: Floating ( left. size , * signed) ) ,
149- Self :: FloatSub { signed, left, right : _ } => return Type :: GenericLowered ( RawType :: Floating ( left. size , * signed) ) ,
150- Self :: FloatMul { signed, left, right : _ } => return Type :: GenericLowered ( RawType :: Floating ( left. size , * signed) ) ,
151- Self :: FloatDiv { signed, left, right : _ } => return Type :: GenericLowered ( RawType :: Floating ( left. size , * signed) ) ,
149+ Self :: FloatAdd { signed, fast : _ , left, right : _ } => return Type :: GenericLowered ( RawType :: Floating ( left. size , * signed) ) ,
150+ Self :: FloatSub { signed, fast : _ , left, right : _ } => return Type :: GenericLowered ( RawType :: Floating ( left. size , * signed) ) ,
151+ Self :: FloatMul { signed, fast : _ , left, right : _ } => return Type :: GenericLowered ( RawType :: Floating ( left. size , * signed) ) ,
152+ Self :: FloatDiv { signed, fast : _ , left, right : _ } => return Type :: GenericLowered ( RawType :: Floating ( left. size , * signed) ) ,
152153 Self :: FloatNeg { val } => return Type :: GenericLowered ( RawType :: Floating ( val. size , true ) ) ,
153154
154155 Self :: BitwiseAnd { a, b : _ } => return Type :: GenericLowered ( RawType :: Integer ( a. size , a. signed ) ) ,
@@ -219,17 +220,18 @@ impl Display for MIRInstruction {
219220 Self :: UpcastInteger { val, size } => writeln ! ( f, "uintcast {} {}" , val, size) ?,
220221 Self :: UpcastFloat { val, size } => writeln ! ( f, "ufcast {} {}" , val, size) ?,
221222
222- Self :: IntegerAdd { signed, left, right } => writeln ! ( f, "iadd s{} {} {}" , signed, left, right) ?,
223- Self :: IntegerSub { signed, left, right } => writeln ! ( f, "isub s{} {} {}" , signed, left, right) ?,
224- Self :: IntegerMul { signed, left, right } => writeln ! ( f, "imul s{} {} {}" , signed, left, right) ?,
225- Self :: IntegerDiv { signed, left, right } => writeln ! ( f, "idiv s{} {} {}" , signed, left, right) ?,
226- Self :: IntegerMod { signed, left, right } => writeln ! ( f, "imod s{} {} {}" , signed, left, right) ?,
223+ Self :: IntegerAdd { signed, fast , left, right } => writeln ! ( f, "iadd s{} f {} {} {} " , signed, fast , left, right) ?,
224+ Self :: IntegerSub { signed, fast , left, right } => writeln ! ( f, "isub s{} f {} {} {} " , signed, fast , left, right) ?,
225+ Self :: IntegerMul { signed, fast , left, right } => writeln ! ( f, "imul s{} f {} {} {} " , signed, fast , left, right) ?,
226+ Self :: IntegerDiv { signed, fast , left, right } => writeln ! ( f, "idiv s{} f {} {} {} " , signed, fast , left, right) ?,
227+ Self :: IntegerMod { signed, fast , left, right } => writeln ! ( f, "imod s{} f {} {} {} " , signed, fast , left, right) ?,
227228 Self :: IntegerNeg { val } => writeln ! ( f, "ineg {}" , val) ?,
228229
229- Self :: FloatAdd { signed, left, right } => writeln ! ( f, "fadd s{} {} {}" , signed, left, right) ?,
230- Self :: FloatSub { signed, left, right } => writeln ! ( f, "fsub s{} {} {}" , signed, left, right) ?,
231- Self :: FloatMul { signed, left, right } => writeln ! ( f, "fmul s{} {} {}" , signed, left, right) ?,
232- Self :: FloatDiv { signed, left, right } => writeln ! ( f, "fdiv s{} {} {}" , signed, left, right) ?,
230+ Self :: FloatAdd { signed, fast, left, right } => writeln ! ( f, "fadd s{} f{} {} {}" , signed, fast, left, right) ?,
231+ Self :: FloatSub { signed, fast, left, right } => writeln ! ( f, "fsub s{} f{} {} {}" , signed, fast, left, right) ?,
232+ Self :: FloatMul { signed, fast, left, right } => writeln ! ( f, "fmul s{} f{} {} {}" , signed, fast, left, right) ?,
233+ Self :: FloatDiv { signed, fast, left, right } => writeln ! ( f, "fdiv s{} f{} {} {}" , signed, fast, left, right) ?,
234+ Self :: FloatMod { signed, fast, left, right } => writeln ! ( f, "fmod s{} f{} {} {}" , signed, fast, left, right) ?,
233235 Self :: FloatNeg { val } => writeln ! ( f, "fneg {}" , val) ?,
234236
235237 Self :: BitwiseAnd { a, b } => writeln ! ( f, "and {} {}" , a, b) ?,
0 commit comments