wag/lib/wag/f64_instructions.rb
2020-04-05 08:53:38 +12:00

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