POW2/LOG2 for vexptefp/vlogefp.
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -142,6 +142,8 @@ enum Opcode {
|
||||
OPCODE_ABS,
|
||||
OPCODE_SQRT,
|
||||
OPCODE_RSQRT,
|
||||
OPCODE_POW2,
|
||||
OPCODE_LOG2,
|
||||
OPCODE_DOT_PRODUCT_3,
|
||||
OPCODE_DOT_PRODUCT_4,
|
||||
|
||||
|
||||
@@ -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",
|
||||
|
||||
Reference in New Issue
Block a user