Beispiel #1
0
 def test_mismatch_type_mod(self) -> None:
     with self.assertRaises(pt.TypeCheckError):
         pt.Program("module").add_func(
             "foo",
             (),
             pt.Int32_t,
             pt.Block([pt.Return(pt.Mod(pt.Int8(2), pt.Int32(2)))]),
         )
     with self.assertRaises(pt.TypeCheckError):
         pt.Program("module").add_func(
             "foo",
             (),
             pt.Int32_t,
             pt.Block([pt.Return(pt.Mod(pt.Int32(2), pt.Int8(2)))]),
         )
     with self.assertRaises(pt.TypeCheckError):
         pt.Program("module").add_func(
             "foo",
             (),
             pt.Int64_t,
             pt.Block([pt.Return(pt.Mod(pt.Int16(2), pt.Int64(2)))]),
         )
     with self.assertRaises(pt.TypeCheckError):
         pt.Program("module").add_func(
             "foo",
             (),
             pt.Int64_t,
             pt.Block([pt.Return(pt.Mod(pt.Int64(2), pt.Int16(2)))]),
         )
Beispiel #2
0
 def test_mismatch_type_deref(self) -> None:
     with self.assertRaises(pt.TypeCheckError):
         pt.Program("module").add_func(
             "foo",
             (),
             pt.Int32_t,
             pt.Block([pt.Return(pt.Deref(pt.Int64(123)))]),
         )
     with self.assertRaises(pt.TypeCheckError):
         pt.Program("module").add_func(
             "foo", (ptr, ), (),
             pt.Block([
                 pt.DefineVar(v32, pt.Deref(pt.Var(ptr))),
             ]))
Beispiel #3
0
a64 = pt.Symbol(pt.Int64_t, "a64")
b64 = pt.Symbol(pt.Int64_t, "b64")
c64 = pt.Symbol(pt.Int64_t, "c64")
d64 = pt.Symbol(pt.Int64_t, "d64")
e64 = pt.Symbol(pt.Int64_t, "e64")
f64 = pt.Symbol(pt.Int64_t, "f64")
g64 = pt.Symbol(pt.Int64_t, "g64")
h64 = pt.Symbol(pt.Int64_t, "h64")
i64 = pt.Symbol(pt.Int64_t, "i64")

program.add_func(
    "add_i64",
    (),
    pt.Int64_t,
    pt.Block([
        pt.DefineVar(a64, pt.Add(pt.Int64(-11), pt.Int64(-4))),
        pt.DefineVar(b64, pt.Add(pt.Int64(-11), pt.Int64(0))),
        pt.DefineVar(c64, pt.Add(pt.Int64(-11), pt.Int64(7))),
        pt.DefineVar(d64, pt.Add(pt.Int64(0), pt.Int64(-5))),
        pt.DefineVar(e64, pt.Add(pt.Int64(0), pt.Int64(0))),
        pt.DefineVar(f64, pt.Add(pt.Int64(0), pt.Int64(3))),
        pt.DefineVar(g64, pt.Add(pt.Int64(7), pt.Int64(-8))),
        pt.DefineVar(h64, pt.Add(pt.Int64(7), pt.Int64(0))),
        pt.DefineVar(i64, pt.Add(pt.Int64(7), pt.Int64(8))),
        pt.Return(
            pt.Add(
                pt.Var(a64),
                pt.Add(
                    pt.Var(b64),
                    pt.Add(
                        pt.Var(c64),
Beispiel #4
0
 def test_above_bounds_i64(self) -> None:
     with self.assertRaises(pt.ValidateError):
         pt.Int64(2**63)
Beispiel #5
0
 def test_below_bounds_i64(self) -> None:
     with self.assertRaises(pt.ValidateError):
         pt.Int64(-(2**63) - 1)
Beispiel #6
0
# Int32_t functions.

program.add_func("return_m2_i32", (), pt.Int32_t,
                 pt.Block([pt.Return(pt.Int32(-2))]))

program.add_func("return_0_i32", (), pt.Int32_t,
                 pt.Block([pt.Return(pt.Int32(0))]))

program.add_func("return_2_i32", (), pt.Int32_t,
                 pt.Block([pt.Return(pt.Int32(2))]))

# Int64_t functions.

program.add_func("return_m2_i64", (), pt.Int64_t,
                 pt.Block([pt.Return(pt.Int64(-2))]))

program.add_func("return_0_i64", (), pt.Int64_t,
                 pt.Block([pt.Return(pt.Int64(0))]))

program.add_func("return_2_i64", (), pt.Int64_t,
                 pt.Block([pt.Return(pt.Int64(2))]))


class ConstantsTestCase(unittest.TestCase):
    def setUp(self) -> None:
        self.engine = program.compile()

        # Int8_t

        return_m2_i8 = self.engine.get_function_address("return_m2_i8")
Beispiel #7
0
     parent_ptr,
     point_ptr,
     domain_ptr,
 ),
 legion_logical_region_t,
 pt.Block([
     pt.DefineVar(
         point1d,
         pt.Call("legion_domain_point_get_point_1d",
                 [pt.Deref(pt.Var(point_ptr))])),
     pt.DefineVar(
         point1d_x,
         pt.GetElement(pt.Var(point1d), name="x"),
     ),
     pt.DefineVar(x, pt.GetElement(pt.Var(point1d_x), idx=0)),
     pt.DefineVar(x_plus_1, pt.Add(pt.Var(x), pt.Int64(1))),
     pt.DefineVar(point1d_x_plus_1_x),
     pt.Assign(
         pt.Var(point1d_x_plus_1_x),
         pt.SetElement(pt.Var(point1d_x_plus_1_x), pt.Var(x_plus_1), 0),
     ),
     pt.DefineVar(point1d_x_plus_1),
     pt.Assign(
         pt.Var(point1d_x_plus_1),
         pt.SetElement(pt.Var(point1d_x_plus_1),
                       pt.Var(point1d_x_plus_1_x),
                       name="x"),
     ),
     pt.DefineVar(
         domain_point_x_plus_1,
         pt.Call("legion_domain_point_from_point_1d",
Beispiel #8
0
# void free( void* ptr);
program.add_func_decl("free", (Pointer_Int64_t, ), ())
# void* memset ( void* ptr, int value, size_t num );
program.add_func_decl("memset", (Pointer_Int64_t, pt.Int32_t, pt.Int64_t),
                      Pointer_Int64_t)

ptr = pt.Symbol(Pointer_Int64_t, "ptr")
val = pt.Symbol(pt.Int64_t, "val")
v32 = pt.Symbol(pt.Int32_t, "val")

program.add_func(
    "malloc_free",
    (),
    pt.Int32_t,
    pt.Block([
        pt.DefineVar(ptr, pt.Call("malloc", [pt.Int64(8)])),
        pt.Call("free", [pt.Var(ptr)]),
        pt.Return(pt.Int32(1)),
    ]),
)

program.add_func(
    "malloc_memset",
    (),
    pt.Int64_t,
    pt.Block([
        pt.DefineVar(ptr, pt.Call("malloc", [pt.Int64(8)])),
        pt.Assign(
            pt.Var(ptr),
            pt.Call("memset",
                    [pt.Var(ptr), pt.Int32(0x3A),