@@ -23,18 +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 } ,
37- FloatMod { 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 } ,
3838 FloatNeg { val : MIRFloatValue } ,
3939
4040 // Bitwise (int typed)
@@ -139,17 +139,17 @@ impl MIRInstruction {
139139 Self :: DowncastFloat { val, size } => return Type :: GenericLowered ( RawType :: Floating ( * size, val. signed ) ) ,
140140 Self :: UpcastFloat { val, size } => return Type :: GenericLowered ( RawType :: Floating ( * size, val. signed ) ) ,
141141
142- Self :: IntegerAdd { signed, left, right : _ } => return Type :: GenericLowered ( RawType :: Integer ( left. size , * signed) ) ,
143- Self :: IntegerSub { signed, left, right : _ } => return Type :: GenericLowered ( RawType :: Integer ( left. size , * signed) ) ,
144- Self :: IntegerMul { signed, left, right : _ } => return Type :: GenericLowered ( RawType :: Integer ( left. size , * signed) ) ,
145- Self :: IntegerDiv { signed, left, right : _ } => return Type :: GenericLowered ( RawType :: Integer ( left. size , * signed) ) ,
146- 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) ) ,
147147 Self :: IntegerNeg { val } => return Type :: GenericLowered ( RawType :: Integer ( val. size , true ) ) ,
148148
149- Self :: FloatAdd { signed, left, right : _ } => return Type :: GenericLowered ( RawType :: Floating ( left. size , * signed) ) ,
150- Self :: FloatSub { signed, left, right : _ } => return Type :: GenericLowered ( RawType :: Floating ( left. size , * signed) ) ,
151- Self :: FloatMul { signed, left, right : _ } => return Type :: GenericLowered ( RawType :: Floating ( left. size , * signed) ) ,
152- 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) ) ,
153153 Self :: FloatNeg { val } => return Type :: GenericLowered ( RawType :: Floating ( val. size , true ) ) ,
154154
155155 Self :: BitwiseAnd { a, b : _ } => return Type :: GenericLowered ( RawType :: Integer ( a. size , a. signed ) ) ,
@@ -220,18 +220,18 @@ impl Display for MIRInstruction {
220220 Self :: UpcastInteger { val, size } => writeln ! ( f, "uintcast {} {}" , val, size) ?,
221221 Self :: UpcastFloat { val, size } => writeln ! ( f, "ufcast {} {}" , val, size) ?,
222222
223- Self :: IntegerAdd { signed, left, right } => writeln ! ( f, "iadd s{} {} {}" , signed, left, right) ?,
224- Self :: IntegerSub { signed, left, right } => writeln ! ( f, "isub s{} {} {}" , signed, left, right) ?,
225- Self :: IntegerMul { signed, left, right } => writeln ! ( f, "imul s{} {} {}" , signed, left, right) ?,
226- Self :: IntegerDiv { signed, left, right } => writeln ! ( f, "idiv s{} {} {}" , signed, left, right) ?,
227- 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) ?,
228228 Self :: IntegerNeg { val } => writeln ! ( f, "ineg {}" , val) ?,
229229
230- Self :: FloatAdd { signed, left, right } => writeln ! ( f, "fadd s{} {} {}" , signed, left, right) ?,
231- Self :: FloatSub { signed, left, right } => writeln ! ( f, "fsub s{} {} {}" , signed, left, right) ?,
232- Self :: FloatMul { signed, left, right } => writeln ! ( f, "fmul s{} {} {}" , signed, left, right) ?,
233- Self :: FloatDiv { signed, left, right } => writeln ! ( f, "fdiv s{} {} {}" , signed, left, right) ?,
234- Self :: FloatMod { signed, left, right } => writeln ! ( f, "fmod 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) ?,
235235 Self :: FloatNeg { val } => writeln ! ( f, "fneg {}" , val) ?,
236236
237237 Self :: BitwiseAnd { a, b } => writeln ! ( f, "and {} {}" , a, b) ?,
0 commit comments