POW2/LOG2 for vexptefp/vlogefp.

This commit is contained in:
Ben Vanik
2014-01-06 18:13:16 -08:00
parent de113a4a05
commit 3dcbcce38d
7 changed files with 128 additions and 10 deletions

View File

@@ -1267,6 +1267,28 @@ Value* HIRBuilder::RSqrt(Value* value) {
return i->dest;
}
Value* HIRBuilder::Pow2(Value* value) {
ASSERT_FLOAT_TYPE(value);
Instr* i = AppendInstr(
OPCODE_POW2_info, 0,
AllocValue(value->type));
i->set_src1(value);
i->src2.value = i->src3.value = NULL;
return i->dest;
}
Value* HIRBuilder::Log2(Value* value) {
ASSERT_FLOAT_TYPE(value);
Instr* i = AppendInstr(
OPCODE_LOG2_info, 0,
AllocValue(value->type));
i->set_src1(value);
i->src2.value = i->src3.value = NULL;
return i->dest;
}
Value* HIRBuilder::DotProduct3(Value* value1, Value* value2) {
ASSERT_VECTOR_TYPE(value1);
ASSERT_VECTOR_TYPE(value2);

View File

@@ -161,6 +161,8 @@ public:
Value* Abs(Value* value);
Value* Sqrt(Value* value);
Value* RSqrt(Value* value);
Value* Pow2(Value* value);
Value* Log2(Value* value);
Value* DotProduct3(Value* value1, Value* value2);
Value* DotProduct4(Value* value1, Value* value2);

View File

@@ -142,6 +142,8 @@ enum Opcode {
OPCODE_ABS,
OPCODE_SQRT,
OPCODE_RSQRT,
OPCODE_POW2,
OPCODE_LOG2,
OPCODE_DOT_PRODUCT_3,
OPCODE_DOT_PRODUCT_4,

View File

@@ -391,6 +391,18 @@ DEFINE_OPCODE(
OPCODE_SIG_V_V,
0);
DEFINE_OPCODE(
OPCODE_POW2,
"pow2",
OPCODE_SIG_V_V,
0);
DEFINE_OPCODE(
OPCODE_LOG2,
"log2",
OPCODE_SIG_V_V,
0);
DEFINE_OPCODE(
OPCODE_DOT_PRODUCT_3,
"dot_product_3",