VectorRotateLeft for vrl*.
This commit is contained in:
@@ -1661,6 +1661,17 @@ Value* HIRBuilder::RotateLeft(Value* value1, Value* value2) {
|
||||
return i->dest;
|
||||
}
|
||||
|
||||
Value* HIRBuilder::VectorRotateLeft(Value* value1, Value* value2, TypeName part_type) {
|
||||
ASSERT_VECTOR_TYPE(value1);
|
||||
ASSERT_VECTOR_TYPE(value2);
|
||||
|
||||
Instr* i = AppendInstr(OPCODE_VECTOR_ROTATE_LEFT_info, part_type, AllocValue(value1->type));
|
||||
i->set_src1(value1);
|
||||
i->set_src2(value2);
|
||||
i->src3.value = NULL;
|
||||
return i->dest;
|
||||
}
|
||||
|
||||
Value* HIRBuilder::ByteSwap(Value* value) {
|
||||
if (value->type == INT8_TYPE) {
|
||||
return value;
|
||||
|
||||
@@ -199,6 +199,7 @@ class HIRBuilder {
|
||||
Value* Sha(Value* value1, int8_t value2);
|
||||
Value* VectorSha(Value* value1, Value* value2, TypeName part_type);
|
||||
Value* RotateLeft(Value* value1, Value* value2);
|
||||
Value* VectorRotateLeft(Value* value1, Value* value2, TypeName part_type);
|
||||
Value* ByteSwap(Value* value);
|
||||
Value* CountLeadingZeros(Value* value);
|
||||
Value* Insert(Value* value, Value* index, Value* part);
|
||||
|
||||
@@ -165,6 +165,7 @@ enum Opcode {
|
||||
OPCODE_SHA,
|
||||
OPCODE_VECTOR_SHA,
|
||||
OPCODE_ROTATE_LEFT,
|
||||
OPCODE_VECTOR_ROTATE_LEFT,
|
||||
OPCODE_BYTE_SWAP,
|
||||
OPCODE_CNTLZ,
|
||||
OPCODE_INSERT,
|
||||
|
||||
@@ -539,6 +539,12 @@ DEFINE_OPCODE(
|
||||
OPCODE_SIG_V_V_V,
|
||||
0)
|
||||
|
||||
DEFINE_OPCODE(
|
||||
OPCODE_VECTOR_ROTATE_LEFT,
|
||||
"vector_rotate_left",
|
||||
OPCODE_SIG_V_V_V,
|
||||
0)
|
||||
|
||||
DEFINE_OPCODE(
|
||||
OPCODE_BYTE_SWAP,
|
||||
"byte_swap",
|
||||
|
||||
Reference in New Issue
Block a user