Skip to content
This repository was archived by the owner on Nov 1, 2021. It is now read-only.

Commit 633db80

Browse files
authored
wasm-only i32_cttz, i32_ctpop, i64_ctpop, f32_copysign, f64_copysign (#154)
1 parent 68c1070 commit 633db80

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed

lib/Target/JSBackend/CallHandlers.h

+27
Original file line numberDiff line numberDiff line change
@@ -636,6 +636,9 @@ DEF_CALL_HANDLER(llvm_ctlz_i32, {
636636
})
637637

638638
DEF_CALL_HANDLER(llvm_cttz_i32, {
639+
if (OnlyWebAssembly) {
640+
return CH___default__(CI, "i32_cttz", 1);
641+
}
639642
Declares.insert("llvm_cttz_i32");
640643
return CH___default__(CI, "_llvm_cttz_i32", 1);
641644
})
@@ -656,6 +659,22 @@ DEF_CALL_HANDLER(llvm_cttz_i64, {
656659
return CH___default__(CI, "_llvm_cttz_i64");
657660
})
658661

662+
DEF_CALL_HANDLER(llvm_ctpop_i32, {
663+
if (OnlyWebAssembly) {
664+
return CH___default__(CI, "i32_ctpop", 1);
665+
}
666+
Declares.insert("llvm_ctpop_i32");
667+
return CH___default__(CI, "_llvm_ctpop_i32");
668+
})
669+
670+
DEF_CALL_HANDLER(llvm_ctpop_i64, {
671+
if (OnlyWebAssembly) {
672+
return CH___default__(CI, "i64_ctpop", 1);
673+
}
674+
Declares.insert("llvm_ctpop_i64");
675+
return CH___default__(CI, "_llvm_ctpop_i64");
676+
})
677+
659678
DEF_CALL_HANDLER(llvm_maxnum_f32, {
660679
return CH___default__(CI, "Math_max", 2);
661680
})
@@ -665,11 +684,17 @@ DEF_CALL_HANDLER(llvm_maxnum_f64, {
665684
})
666685

667686
DEF_CALL_HANDLER(llvm_copysign_f32, {
687+
if (OnlyWebAssembly) {
688+
return CH___default__(CI, "f32_copysign", 2);
689+
}
668690
Declares.insert("llvm_copysign_f32");
669691
return CH___default__(CI, "_llvm_copysign_f32", 2);
670692
})
671693

672694
DEF_CALL_HANDLER(llvm_copysign_f64, {
695+
if (OnlyWebAssembly) {
696+
return CH___default__(CI, "(f64_copysign)", 2); // XXX add parens as this will be +f64_copysign(...), which triggers +f64 => f64.0. TODO fix regex in emscripten.py
697+
}
673698
Declares.insert("llvm_copysign_f64");
674699
return CH___default__(CI, "_llvm_copysign_f64", 2);
675700
})
@@ -1603,6 +1628,8 @@ void setupCallHandlers() {
16031628
SETUP_CALL_HANDLER(llvm_cttz_i32);
16041629
SETUP_CALL_HANDLER(llvm_ctlz_i64);
16051630
SETUP_CALL_HANDLER(llvm_cttz_i64);
1631+
SETUP_CALL_HANDLER(llvm_ctpop_i32);
1632+
SETUP_CALL_HANDLER(llvm_ctpop_i64);
16061633
SETUP_CALL_HANDLER(llvm_maxnum_f32);
16071634
SETUP_CALL_HANDLER(llvm_maxnum_f64);
16081635
SETUP_CALL_HANDLER(llvm_copysign_f32);

0 commit comments

Comments
 (0)