Skip to content

Commit 35a3700

Browse files
authored
Merge pull request #5 from primoly/i64-cmp-result-i32
Make const eval `I64` comparison instructions return `I32`
2 parents 9aa7e6a + 275723e commit 35a3700

File tree

1 file changed

+11
-11
lines changed

1 file changed

+11
-11
lines changed

src/eval.rs

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1742,7 +1742,7 @@ impl<'a> Evaluator<'a> {
17421742
})))
17431743
}
17441744
(Operator::I64Eqz, AbstractValue::Concrete(WasmVal::I64(k))) => {
1745-
Ok(AbstractValue::Concrete(WasmVal::I64(if *k == 0 {
1745+
Ok(AbstractValue::Concrete(WasmVal::I32(if *k == 0 {
17461746
1
17471747
} else {
17481748
0
@@ -1951,50 +1951,50 @@ impl<'a> Evaluator<'a> {
19511951

19521952
// 64-bit comparisons.
19531953
(Operator::I64Eq, WasmVal::I64(k1), WasmVal::I64(k2)) => {
1954-
AbstractValue::Concrete(WasmVal::I64(if k1 == k2 { 1 } else { 0 }))
1954+
AbstractValue::Concrete(WasmVal::I32(if k1 == k2 { 1 } else { 0 }))
19551955
}
19561956
(Operator::I64Ne, WasmVal::I64(k1), WasmVal::I64(k2)) => {
1957-
AbstractValue::Concrete(WasmVal::I64(if k1 != k2 { 1 } else { 0 }))
1957+
AbstractValue::Concrete(WasmVal::I32(if k1 != k2 { 1 } else { 0 }))
19581958
}
19591959
(Operator::I64LtS, WasmVal::I64(k1), WasmVal::I64(k2)) => {
1960-
AbstractValue::Concrete(WasmVal::I64(if (*k1 as i64) < (*k2 as i64) {
1960+
AbstractValue::Concrete(WasmVal::I32(if (*k1 as i64) < (*k2 as i64) {
19611961
1
19621962
} else {
19631963
0
19641964
}))
19651965
}
19661966
(Operator::I64LtU, WasmVal::I64(k1), WasmVal::I64(k2)) => {
1967-
AbstractValue::Concrete(WasmVal::I64(if k1 < k2 { 1 } else { 0 }))
1967+
AbstractValue::Concrete(WasmVal::I32(if k1 < k2 { 1 } else { 0 }))
19681968
}
19691969
(Operator::I64GtS, WasmVal::I64(k1), WasmVal::I64(k2)) => {
1970-
AbstractValue::Concrete(WasmVal::I64(if (*k1 as i64) > (*k2 as i64) {
1970+
AbstractValue::Concrete(WasmVal::I32(if (*k1 as i64) > (*k2 as i64) {
19711971
1
19721972
} else {
19731973
0
19741974
}))
19751975
}
19761976
(Operator::I64GtU, WasmVal::I64(k1), WasmVal::I64(k2)) => {
1977-
AbstractValue::Concrete(WasmVal::I64(if k1 > k2 { 1 } else { 0 }))
1977+
AbstractValue::Concrete(WasmVal::I32(if k1 > k2 { 1 } else { 0 }))
19781978
}
19791979
(Operator::I64LeS, WasmVal::I64(k1), WasmVal::I64(k2)) => {
1980-
AbstractValue::Concrete(WasmVal::I64(if (*k1 as i64) <= (*k2 as i64) {
1980+
AbstractValue::Concrete(WasmVal::I32(if (*k1 as i64) <= (*k2 as i64) {
19811981
1
19821982
} else {
19831983
0
19841984
}))
19851985
}
19861986
(Operator::I64LeU, WasmVal::I64(k1), WasmVal::I64(k2)) => {
1987-
AbstractValue::Concrete(WasmVal::I64(if k1 <= k2 { 1 } else { 0 }))
1987+
AbstractValue::Concrete(WasmVal::I32(if k1 <= k2 { 1 } else { 0 }))
19881988
}
19891989
(Operator::I64GeS, WasmVal::I64(k1), WasmVal::I64(k2)) => {
1990-
AbstractValue::Concrete(WasmVal::I64(if (*k1 as i64) >= (*k2 as i64) {
1990+
AbstractValue::Concrete(WasmVal::I32(if (*k1 as i64) >= (*k2 as i64) {
19911991
1
19921992
} else {
19931993
0
19941994
}))
19951995
}
19961996
(Operator::I64GeU, WasmVal::I64(k1), WasmVal::I64(k2)) => {
1997-
AbstractValue::Concrete(WasmVal::I64(if k1 >= k2 { 1 } else { 0 }))
1997+
AbstractValue::Concrete(WasmVal::I32(if k1 >= k2 { 1 } else { 0 }))
19981998
}
19991999

20002000
// 32-bit integer arithmetic.

0 commit comments

Comments
 (0)