21 lines
736 B
Ruby
21 lines
736 B
Ruby
# frozen_string_literal: true
|
|
|
|
module WAG
|
|
class F64Instructions
|
|
def initialize(instructions)
|
|
@instructions = instructions
|
|
end
|
|
|
|
%i[load store const eq ne lt gt le ge abs neg ceil floor trunc nearest sqrt
|
|
add sub mul div min max copysign convert_i32_s convert_i32_u
|
|
convert_i64_s convert_i64_u promote_f32 reinterpret_i64].each do |instruction_name|
|
|
camelised_name = "F64::#{WAG::Inflector.inflector.camelize(instruction_name)}"
|
|
define_method(instruction_name) do |*args, &block|
|
|
instruction = WAG::Instruction.const_get(camelised_name).new(*args)
|
|
@instructions << instruction
|
|
instruction.instance_exec(&block) if block
|
|
instruction
|
|
end
|
|
end
|
|
end
|
|
end
|