Skip to content

Commit c9a764e

Browse files
authored
Add cranelift fcmp ult, ule, ugt, uge for aarch64 (#12196)
* Run cranelift fcmp ord and uno tests on aarch64 FloatCC::Ordered and FloatCC:Unordered are already implemented for aarch64, so these can be enabled as they already pass. * Run more cranelift fcmp tests on aarch64 These currently fail as they are not implemented yet. * Add cranelift fcmp ult, ule, ugt, uge for aarch64
1 parent 88bdf79 commit c9a764e

File tree

8 files changed

+14
-12
lines changed

8 files changed

+14
-12
lines changed

cranelift/codegen/src/isa/aarch64/lower.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -97,14 +97,14 @@ pub(crate) fn lower_fp_condcode(cc: FloatCC) -> Cond {
9797
FloatCC::GreaterThan => Cond::Gt,
9898
// GT | EQ. Ge => N = V.
9999
FloatCC::GreaterThanOrEqual => Cond::Ge,
100-
// UN | LT
101-
FloatCC::UnorderedOrLessThan => unimplemented!(),
102-
// UN | LT | EQ
103-
FloatCC::UnorderedOrLessThanOrEqual => unimplemented!(),
104-
// UN | GT
105-
FloatCC::UnorderedOrGreaterThan => unimplemented!(),
106-
// UN | GT | EQ
107-
FloatCC::UnorderedOrGreaterThanOrEqual => unimplemented!(),
100+
// UN | LT. Lt => N != V.
101+
FloatCC::UnorderedOrLessThan => Cond::Lt,
102+
// UN | LT | EQ. Le => not (Z clear, N = V).
103+
FloatCC::UnorderedOrLessThanOrEqual => Cond::Le,
104+
// UN | GT. Hi => C set, Z clear.
105+
FloatCC::UnorderedOrGreaterThan => Cond::Hi,
106+
// UN | GT | EQ. Pl => N clear.
107+
FloatCC::UnorderedOrGreaterThanOrEqual => Cond::Pl,
108108
}
109109
}
110110

cranelift/filetests/filetests/runtests/fcmp-ord.clif

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ test interpret
22
test run
33
target x86_64
44
target x86_64 has_avx
5+
target aarch64
56
target s390x
67
target riscv64
78
target riscv64 has_c has_zcb

cranelift/filetests/filetests/runtests/fcmp-uge.clif

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ test interpret
22
test run
33
target x86_64
44
target x86_64 has_avx
5+
target aarch64
56
target s390x
67
target riscv64
78
target riscv64 has_c has_zcb

cranelift/filetests/filetests/runtests/fcmp-ugt.clif

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ test interpret
22
test run
33
target x86_64
44
target x86_64 has_avx
5+
target aarch64
56
target s390x
67
target riscv64
78
target riscv64 has_c has_zcb

cranelift/filetests/filetests/runtests/fcmp-ule.clif

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ test interpret
22
test run
33
target x86_64
44
target x86_64 has_avx
5+
target aarch64
56
target s390x
67
target riscv64
78
target riscv64 has_c has_zcb

cranelift/filetests/filetests/runtests/fcmp-ult.clif

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ test interpret
22
test run
33
target x86_64
44
target x86_64 has_avx
5+
target aarch64
56
target s390x
67
target riscv64
78
target riscv64 has_c has_zcb

cranelift/filetests/filetests/runtests/fcmp-uno.clif

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ test interpret
22
test run
33
target x86_64
44
target x86_64 has_avx
5+
target aarch64
56
target s390x
67
target riscv64
78
target riscv64 has_c has_zcb

cranelift/fuzzgen/src/function_generator.rs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -199,10 +199,6 @@ fn insert_cmp(
199199
// https://github.com/bytecodealliance/wasmtime/issues/4850
200200
(Architecture::Aarch64(_), FloatCC::OrderedNotEqual) => true,
201201
(Architecture::Aarch64(_), FloatCC::UnorderedOrEqual) => true,
202-
(Architecture::Aarch64(_), FloatCC::UnorderedOrLessThan) => true,
203-
(Architecture::Aarch64(_), FloatCC::UnorderedOrLessThanOrEqual) => true,
204-
(Architecture::Aarch64(_), FloatCC::UnorderedOrGreaterThan) => true,
205-
(Architecture::Aarch64(_), FloatCC::UnorderedOrGreaterThanOrEqual) => true,
206202

207203
// These are not implemented on x86_64, for vectors.
208204
(Architecture::X86_64, FloatCC::UnorderedOrEqual | FloatCC::OrderedNotEqual) => {

0 commit comments

Comments
 (0)