Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(219)

Unified Diff: test/cctest/test-assembler-mips64.cc

Issue 2069933003: Implement byte swapping instructions on MIPS32 and MIPS64. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: test/cctest/test-assembler-mips64.cc
diff --git a/test/cctest/test-assembler-mips64.cc b/test/cctest/test-assembler-mips64.cc
index 9529dab2422b69f094aa5e7ae2940d9a901ab963..f8f6b79f2209e057a44d942f077ebbf86f3d4991 100644
--- a/test/cctest/test-assembler-mips64.cc
+++ b/test/cctest/test-assembler-mips64.cc
@@ -3563,6 +3563,69 @@ TEST(BITSWAP) {
}
}
+TEST(SIGNEXTEND) {
+ if (kArchVariant == kMips64r6 || kArchVariant == kMips64r2) {
+ CcTest::InitializeVM();
+ Isolate* isolate = CcTest::i_isolate();
+ HandleScope scope(isolate);
+
+ typedef struct {
+ int64_t r1;
+ int64_t r2;
+ int64_t r3;
+ int64_t r4;
+ } T;
+ T t;
+
+ Assembler assm(isolate, NULL, 0);
+
+ __ ld(a4, MemOperand(a0, offsetof(T, r1)));
+ __ nop();
+ __ seh(a6, a4);
+ __ sll(a6, a6, 0);
+ __ sd(a6, MemOperand(a0, offsetof(T, r1)));
+
+ __ ld(a4, MemOperand(a0, offsetof(T, r2)));
+ __ nop();
+ __ seh(a6, a4);
+ __ sll(a6, a6, 0);
+ __ sd(a6, MemOperand(a0, offsetof(T, r2)));
+
+ __ ld(a4, MemOperand(a0, offsetof(T, r3)));
+ __ nop();
+ __ seb(a6, a4);
+ __ sll(a6, a6, 0);
+ __ sd(a6, MemOperand(a0, offsetof(T, r3)));
+
+ __ ld(a4, MemOperand(a0, offsetof(T, r4)));
+ __ nop();
+ __ seb(a6, a4);
+ __ sll(a6, a6, 0);
+ __ sd(a6, MemOperand(a0, offsetof(T, r4)));
+
+ __ jr(ra);
+ __ nop();
+
+ CodeDesc desc;
+
+ assm.GetCode(&desc);
+ Handle<Code> code = isolate->factory()->NewCode(
+ desc, Code::ComputeFlags(Code::STUB), Handle<Code>());
+
+ F3 f = FUNCTION_CAST<F3>(code->entry());
+ t.r1 = 0x15C3;
+ t.r2 = 0xFCDE;
+ t.r3 = 0xC3;
+ t.r4 = 0x5E;
+ Object* dummy = CALL_GENERATED_CODE(isolate, f, &t, 0, 0, 0, 0);
+ USE(dummy);
+
+ CHECK_EQ(static_cast<int64_t>(0x00000000000015C3), t.r1);
+ CHECK_EQ(static_cast<int64_t>(0xFFFFFFFFFFFFFCDE), t.r2);
+ CHECK_EQ(static_cast<int64_t>(0xFFFFFFFFFFFFFFC3), t.r3);
+ CHECK_EQ(static_cast<int64_t>(0x000000000000005E), t.r4);
+ }
+}
TEST(class_fmt) {
if (kArchVariant == kMips64r6) {

Powered by Google App Engine
This is Rietveld 408576698