CHECK(compileAndRun<int32_t>(proc, value) == static_cast<uint16_t>(value));
}
-void testSShrShl32(int32_t value, int32_t sshrAmount, int32_t shlAmount)
+static void testSShrShl32(int32_t value, int32_t sshrAmount, int32_t shlAmount)
{
Procedure proc;
BasicBlock* root = proc.addBlock();
== ((value << (shlAmount & 31)) >> (sshrAmount & 31)));
}
-void testSShrShl64(int64_t value, int32_t sshrAmount, int32_t shlAmount)
+static void testSShrShl64(int64_t value, int32_t sshrAmount, int32_t shlAmount)
{
Procedure proc;
BasicBlock* root = proc.addBlock();
compileProc(proc);
}
+void addSShrShTests(const char* filter, Deque<RefPtr<SharedTask<void()>>>& tasks)
+{
+ RUN(testSShrShl32(42, 24, 24));
+ RUN(testSShrShl32(-42, 24, 24));
+ RUN(testSShrShl32(4200, 24, 24));
+ RUN(testSShrShl32(-4200, 24, 24));
+ RUN(testSShrShl32(4200000, 24, 24));
+ RUN(testSShrShl32(-4200000, 24, 24));
+
+ RUN(testSShrShl32(42, 16, 16));
+ RUN(testSShrShl32(-42, 16, 16));
+ RUN(testSShrShl32(4200, 16, 16));
+ RUN(testSShrShl32(-4200, 16, 16));
+ RUN(testSShrShl32(4200000, 16, 16));
+ RUN(testSShrShl32(-4200000, 16, 16));
+
+ RUN(testSShrShl32(42, 8, 8));
+ RUN(testSShrShl32(-42, 8, 8));
+ RUN(testSShrShl32(4200, 8, 8));
+ RUN(testSShrShl32(-4200, 8, 8));
+ RUN(testSShrShl32(4200000, 8, 8));
+ RUN(testSShrShl32(-4200000, 8, 8));
+ RUN(testSShrShl32(420000000, 8, 8));
+ RUN(testSShrShl32(-420000000, 8, 8));
+
+ RUN(testSShrShl64(42, 56, 56));
+ RUN(testSShrShl64(-42, 56, 56));
+ RUN(testSShrShl64(4200, 56, 56));
+ RUN(testSShrShl64(-4200, 56, 56));
+ RUN(testSShrShl64(4200000, 56, 56));
+ RUN(testSShrShl64(-4200000, 56, 56));
+ RUN(testSShrShl64(420000000, 56, 56));
+ RUN(testSShrShl64(-420000000, 56, 56));
+ RUN(testSShrShl64(42000000000, 56, 56));
+ RUN(testSShrShl64(-42000000000, 56, 56));
+
+ RUN(testSShrShl64(42, 48, 48));
+ RUN(testSShrShl64(-42, 48, 48));
+ RUN(testSShrShl64(4200, 48, 48));
+ RUN(testSShrShl64(-4200, 48, 48));
+ RUN(testSShrShl64(4200000, 48, 48));
+ RUN(testSShrShl64(-4200000, 48, 48));
+ RUN(testSShrShl64(420000000, 48, 48));
+ RUN(testSShrShl64(-420000000, 48, 48));
+ RUN(testSShrShl64(42000000000, 48, 48));
+ RUN(testSShrShl64(-42000000000, 48, 48));
+
+ RUN(testSShrShl64(42, 32, 32));
+ RUN(testSShrShl64(-42, 32, 32));
+ RUN(testSShrShl64(4200, 32, 32));
+ RUN(testSShrShl64(-4200, 32, 32));
+ RUN(testSShrShl64(4200000, 32, 32));
+ RUN(testSShrShl64(-4200000, 32, 32));
+ RUN(testSShrShl64(420000000, 32, 32));
+ RUN(testSShrShl64(-420000000, 32, 32));
+ RUN(testSShrShl64(42000000000, 32, 32));
+ RUN(testSShrShl64(-42000000000, 32, 32));
+
+ RUN(testSShrShl64(42, 24, 24));
+ RUN(testSShrShl64(-42, 24, 24));
+ RUN(testSShrShl64(4200, 24, 24));
+ RUN(testSShrShl64(-4200, 24, 24));
+ RUN(testSShrShl64(4200000, 24, 24));
+ RUN(testSShrShl64(-4200000, 24, 24));
+ RUN(testSShrShl64(420000000, 24, 24));
+ RUN(testSShrShl64(-420000000, 24, 24));
+ RUN(testSShrShl64(42000000000, 24, 24));
+ RUN(testSShrShl64(-42000000000, 24, 24));
+
+ RUN(testSShrShl64(42, 16, 16));
+ RUN(testSShrShl64(-42, 16, 16));
+ RUN(testSShrShl64(4200, 16, 16));
+ RUN(testSShrShl64(-4200, 16, 16));
+ RUN(testSShrShl64(4200000, 16, 16));
+ RUN(testSShrShl64(-4200000, 16, 16));
+ RUN(testSShrShl64(420000000, 16, 16));
+ RUN(testSShrShl64(-420000000, 16, 16));
+ RUN(testSShrShl64(42000000000, 16, 16));
+ RUN(testSShrShl64(-42000000000, 16, 16));
+
+ RUN(testSShrShl64(42, 8, 8));
+ RUN(testSShrShl64(-42, 8, 8));
+ RUN(testSShrShl64(4200, 8, 8));
+ RUN(testSShrShl64(-4200, 8, 8));
+ RUN(testSShrShl64(4200000, 8, 8));
+ RUN(testSShrShl64(-4200000, 8, 8));
+ RUN(testSShrShl64(420000000, 8, 8));
+ RUN(testSShrShl64(-420000000, 8, 8));
+ RUN(testSShrShl64(42000000000, 8, 8));
+ RUN(testSShrShl64(-42000000000, 8, 8));
+}
+
#endif // ENABLE(B3_JIT)