Commit fcb0775a authored by Clemens Backes's avatar Clemens Backes Committed by Commit Bot

[wasm] Remove unneeded WASM_64 macro

The macro is not needed, the same condition can also be expressed
programmatically. Its name is misleading anyway, since it has nothing to
do with the wasm64 proposal.

Drive-by: Use GraphAssembler to implement {BuildF64CopySign}.

R=jkummerow@chromium.org, tebbi@chromium.org

Bug: v8:10123, v8:10155
Change-Id: I85238172037f08bd2e4d2d4564950759524f991a
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2105637Reviewed-by: 's avatarJakob Kummerow <jkummerow@chromium.org>
Reviewed-by: 's avatarTobias Tebbi <tebbi@chromium.org>
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#66743}
parent 416b0c38
......@@ -87,6 +87,7 @@ class BasicBlock;
V(Word32Xor) \
V(Word64And) \
V(Word64Equal) \
V(Word64Or) \
V(WordAnd) \
V(WordEqual) \
V(WordSar) \
......
......@@ -62,13 +62,6 @@ namespace compiler {
namespace {
// TODO(titzer): pull WASM_64 up to a common header.
#if !V8_TARGET_ARCH_32_BIT || V8_TARGET_ARCH_X64
#define WASM_64 1
#else
#define WASM_64 0
#endif
#define FATAL_UNSUPPORTED_OPCODE(opcode) \
FATAL("Unsupported opcode 0x%x:%s", (opcode), \
wasm::WasmOpcodes::OpcodeName(opcode));
......@@ -1417,31 +1410,24 @@ Node* WasmGraphBuilder::BuildF32CopySign(Node* left, Node* right) {
}
Node* WasmGraphBuilder::BuildF64CopySign(Node* left, Node* right) {
#if WASM_64
Node* result = Unop(
wasm::kExprF64ReinterpretI64,
Binop(wasm::kExprI64Ior,
Binop(wasm::kExprI64And, Unop(wasm::kExprI64ReinterpretF64, left),
mcgraph()->Int64Constant(0x7FFFFFFFFFFFFFFF)),
Binop(wasm::kExprI64And, Unop(wasm::kExprI64ReinterpretF64, right),
mcgraph()->Int64Constant(0x8000000000000000))));
if (mcgraph()->machine()->Is64()) {
return gasm_->BitcastInt64ToFloat64(gasm_->Word64Or(
gasm_->Word64And(gasm_->BitcastFloat64ToInt64(left),
gasm_->Int64Constant(0x7FFFFFFFFFFFFFFF)),
gasm_->Word64And(gasm_->BitcastFloat64ToInt64(right),
gasm_->Int64Constant(0x8000000000000000))));
}
return result;
#else
MachineOperatorBuilder* m = mcgraph()->machine();
DCHECK(mcgraph()->machine()->Is32());
Node* high_word_left = graph()->NewNode(m->Float64ExtractHighWord32(), left);
Node* high_word_right =
graph()->NewNode(m->Float64ExtractHighWord32(), right);
Node* high_word_left = gasm_->Float64ExtractHighWord32(left);
Node* high_word_right = gasm_->Float64ExtractHighWord32(right);
Node* new_high_word = Binop(wasm::kExprI32Ior,
Binop(wasm::kExprI32And, high_word_left,
mcgraph()->Int32Constant(0x7FFFFFFF)),
Binop(wasm::kExprI32And, high_word_right,
mcgraph()->Int32Constant(0x80000000)));
Node* new_high_word = gasm_->Word32Or(
gasm_->Word32And(high_word_left, gasm_->Int32Constant(0x7FFFFFFF)),
gasm_->Word32And(high_word_right, gasm_->Int32Constant(0x80000000)));
return graph()->NewNode(m->Float64InsertHighWord32(), left, new_high_word);
#endif
return gasm_->Float64InsertHighWord32(left, new_high_word);
}
namespace {
......@@ -7156,7 +7142,6 @@ AssemblerOptions WasmStubAssemblerOptions() {
return options;
}
#undef WASM_64
#undef FATAL_UNSUPPORTED_OPCODE
#undef WASM_INSTANCE_OBJECT_SIZE
#undef WASM_INSTANCE_OBJECT_OFFSET
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment